소스 검색

【贝腾】【获取销售订单接口】

wub 3 달 전
부모
커밋
afb4ffc357

+ 5 - 0
src/main/java/com/uas/eis/controller/STKController.java

@@ -45,6 +45,11 @@ public class STKController {
         return stkService.getCustomerList(productPageDTO);
     }
 
+    @PostMapping("/api/getSaleList")
+    public Result getSaleList(HttpServletRequest request, @RequestBody ProductPageDTO productPageDTO){
+        return stkService.getSaleList(productPageDTO);
+    }
+
     @PostMapping("/api/getProduct")
     public Result getProduct(HttpServletRequest request, @RequestBody ProductReq productReq){
         return stkService.getProduct(request, productReq);

+ 83 - 0
src/main/java/com/uas/eis/sdk/dto/SaleDTO.java

@@ -0,0 +1,83 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class SaleDTO {
+
+    /**
+     *主键ID
+     * */
+    private String sa_code;
+    private Date sa_date;
+    private String sa_transport;
+    private String sa_kind;
+    private String sa_status;
+    private String sa_custcode;
+    private String sa_custname;
+    private String sa_currency;
+    private BigDecimal sa_rate;
+    private String sa_salemethod;
+    private String sa_apcustcode;
+    private String sa_apcustname;
+    private String sa_need4;
+    private String sa_need10;
+    private String sa_paymentscode;
+    private String sa_payments;
+    private String sa_shcustcode;
+    private String sa_shcustname;
+    private String sa_toplace;
+    private String sa_contact;
+    private String sa_contacttel;
+    private String sa_pocode;
+    private String sa_cop;
+    private String sa_departmentcode;
+    private String sa_departmentname;
+    private String sa_need11;
+    private String sa_need5;
+    private String sa_quyu_user;
+    private String sa_sellercode;
+    private String sa_seller;
+    private String sa_need2;
+    private String sa_need3;
+    private String sa_need1;
+    private String sa_chfs;
+    private BigDecimal sa_prepayamount;
+    private String sa_sourcecode;
+    private String sa_sourcetype;
+    private String sa_turnstatus;
+    private String sa_sendstatus;
+    private String sa_printstatus;
+    private Integer sa_count;
+    private String sa_recorder;
+    private Date sa_recorddate;
+    private String sa_updateman;
+    private Date sa_updatedate;
+    private String sa_auditman;
+    private Date sa_auditdate;
+    private String sa_remark;
+    private Integer sa_getprice;
+    private BigDecimal sa_custid;
+    private String sa_statuscode;
+    private BigDecimal sa_id;
+    private BigDecimal sa_sourceid;
+    private BigDecimal sa_recorderid;
+    private BigDecimal sa_paymentsid;
+    private String sa_sync;
+    private BigDecimal sa_bcid;
+    private String sa_minus;
+    private String sa_b2cpucode;
+    private BigDecimal sa_total;
+    private BigDecimal sa_ts_user;
+    private String sa_1_user;
+}

+ 69 - 0
src/main/java/com/uas/eis/sdk/dto/SaleDetailDTO.java

@@ -0,0 +1,69 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class SaleDetailDTO {
+
+    /**
+     *主键ID
+     * */
+    private BigDecimal sd_id;
+    private BigDecimal sd_said;
+    private BigDecimal sd_detno;
+    private String sd_prodcode;
+    private String pr_detail;
+    private String pr_spec;
+    private String pr_unit;
+    private BigDecimal sd_qty;
+    private BigDecimal sd_purcprice;
+    private BigDecimal sd_price;
+    private BigDecimal sd_discount;
+    private BigDecimal sd_total;
+    private BigDecimal sd_taxrate;
+    private String sd_remark;
+    private BigDecimal sd_costprice;
+    private BigDecimal sd_taxtotal;
+    private BigDecimal sd_costingprice;
+    private BigDecimal sd_isspecial;
+    private BigDecimal sd_bonded;
+    private Date sd_delivery;
+    private Date sd_pmcdate;
+    private String sd_pmcremark;
+    private Date sd_atpdelivery;
+    private String sd_custprodcode;
+    private String sd_custproddetail;
+    private String sd_prodcustcode;
+    private String pr_vendprodcode;
+    private BigDecimal sd_noforecast;
+    private String sd_forecastcode;
+    private BigDecimal sd_forecastdetno;
+    private BigDecimal sd_yqty;
+    private BigDecimal sd_sendqty;
+    private BigDecimal sd_leadtime;
+    private BigDecimal sd_bgprice;
+    private String sd_description;
+    private String sd_remark2;
+    private BigDecimal sd_bomid;
+    private BigDecimal sd_originaldetno;
+    private BigDecimal sd_originalqty;
+    private String sd_status;
+    private String sd_barcode;
+    private BigDecimal sd_tomakeqty;
+    private Date sd_packagedate;
+    private BigDecimal sd_vendorrate;
+    private BigDecimal sd_bodycost;
+    private String sd_minus;
+    private BigDecimal sd_bomprice;
+    private String pr_location;
+}

+ 69 - 0
src/main/java/com/uas/eis/sdk/dto/SaleDetailResp.java

@@ -0,0 +1,69 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class SaleDetailResp {
+
+    /**
+     *主键ID
+     * */
+    private BigDecimal sdid;
+    private BigDecimal said;
+    private BigDecimal detno;
+    private String prodcode;
+    private String detail;
+    private String spec;
+    private String unit;
+    private BigDecimal qty;
+    private BigDecimal purcprice;
+    private BigDecimal price;
+    private BigDecimal discount;
+    private BigDecimal total;
+    private BigDecimal taxrate;
+    private String remark;
+    private BigDecimal costprice;
+    private BigDecimal taxtotal;
+    private BigDecimal costingprice;
+    private BigDecimal isspecial;
+    private BigDecimal bonded;
+    private Date delivery;
+    private Date pmcdate;
+    private String pmcremark;
+    private Date atpdelivery;
+    private String custprodcode;
+    private String custproddetail;
+    private String prodcustcode;
+    private String vendprodcode;
+    private BigDecimal noforecast;
+    private String forecastcode;
+    private BigDecimal forecastdetno;
+    private BigDecimal yqty;
+    private BigDecimal sendqty;
+    private BigDecimal leadtime;
+    private BigDecimal bgprice;
+    private String description;
+    private String remark2;
+    private BigDecimal bomid;
+    private BigDecimal originaldetno;
+    private BigDecimal originalqty;
+    private String status;
+    private String barcode;
+    private BigDecimal tomakeqty;
+    private Date packagedate;
+    private BigDecimal vendorrate;
+    private BigDecimal bodycost;
+    private String minus;
+    private BigDecimal bomprice;
+    private String location;
+}

+ 86 - 0
src/main/java/com/uas/eis/sdk/dto/SaleResp.java

@@ -0,0 +1,86 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class SaleResp {
+
+    /**
+     *主键ID
+     * */
+    private String code;
+    private Date date;
+    private String transport;
+    private String kind;
+    private String status;
+    private String custcode;
+    private String custname;
+    private String currency;
+    private BigDecimal rate;
+    private String salemethod;
+    private String apcustcode;
+    private String apcustname;
+    private String need4;
+    private String need10;
+    private String paymentscode;
+    private String payments;
+    private String shcustcode;
+    private String shcustname;
+    private String toplace;
+    private String contact;
+    private String contacttel;
+    private String pocode;
+    private String cop;
+    private String departmentcode;
+    private String departmentname;
+    private String need11;
+    private String need5;
+    private String quyu_user;
+    private String sellercode;
+    private String seller;
+    private String need2;
+    private String need3;
+    private String need1;
+    private String chfs;
+    private BigDecimal prepayamount;
+    private String sourcecode;
+    private String sourcetype;
+    private String turnstatus;
+    private String sendstatus;
+    private String printstatus;
+    private Integer count;
+    private String recorder;
+    private Date recorddate;
+    private String updateman;
+    private Date updatedate;
+    private String auditman;
+    private Date auditdate;
+    private String remark;
+    private Integer getprice;
+    private BigDecimal custid;
+    private String statuscode;
+    private BigDecimal id;
+    private BigDecimal sourceid;
+    private BigDecimal recorderid;
+    private BigDecimal paymentsid;
+    private String sync;
+    private BigDecimal bcid;
+    private String minus;
+    private String b2cpucode;
+    private BigDecimal total;
+    private BigDecimal ts_user;
+    private String sa1_user;
+
+    private List<SaleDetailResp> saleDetailResps;
+}

+ 82 - 0
src/main/java/com/uas/eis/service/Impl/STKServiceImpl.java

@@ -9,16 +9,20 @@ import com.uas.eis.sdk.resp.*;
 import com.uas.eis.service.RequestSTKService;
 import com.uas.eis.service.STKService;
 import com.uas.eis.utils.BaseUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author
@@ -149,6 +153,84 @@ public class STKServiceImpl implements STKService {
         return Result.success(map);
     }
 
+    @Override
+    public Result getSaleList(ProductPageDTO productPageDTO) {
+        int pageNum = 1;
+        int pageSize = 20;
+        if (productPageDTO !=null){
+            pageNum = Integer.valueOf(productPageDTO.getPageNum());
+            pageSize = Integer.valueOf(productPageDTO.getPageSize());
+        }else{
+            return Result.error("参数错误!");
+        }
+        int start = ((pageNum - 1) * pageSize + 1);
+        int end = pageNum * pageSize;
+
+        List<SaleDTO> saleDTOS = baseDao.query("select * from (select rownum rn,AA.* from (select sa_code,sa_date,sa_transport,sa_kind,sa_status,sa_custcode,sa_custname,sa_currency,sa_rate,sa_salemethod,sa_apcustcode,sa_apcustname,sa_need4,sa_need10,sa_paymentscode,sa_payments,sa_shcustcode,sa_shcustname,sa_toplace,sa_contact,sa_contacttel,sa_pocode,sa_cop,sa_departmentcode,sa_departmentname,sa_need11,sa_need5,sa_quyu_user,sa_sellercode,sa_seller,sa_need2,sa_need3,sa_need1,sa_chfs,sa_prepayamount,sa_sourcecode,sa_sourcetype,sa_turnstatus,sa_sendstatus,sa_printstatus,sa_count,sa_recorder,sa_recorddate,sa_updateman,sa_updatedate,sa_auditman,sa_auditdate,sa_remark,sa_getprice,sa_custid,sa_statuscode,sa_id,sa_sourceid,sa_recorderid,sa_paymentsid,sa_sync,sa_bcid,sa_minus,sa_b2cpucode,sa_total,sa_ts_user,sa_1_user from Sale where sa_statuscode in ('AUDITED','FINISH') order by sa_id desc)  AA ) where rn>="+start+" and rn<="+end , SaleDTO.class);
+
+        if (saleDTOS.size() == 0 ){
+            return Result.error("销售订单无数据!");
+        }
+        // 4. 批量查询订单明细
+        List<SaleDetailDTO> saleDetailDTOS = baseDao.query("select sd_id,sd_said,sd_detno,sd_prodcode,pr_detail,pr_spec,pr_unit,sd_qty,sd_purcprice,sd_price,sd_discount,sd_total,sd_taxrate,sd_remark,sd_costprice,sd_taxtotal,sd_costingprice,sd_isspecial,sd_bonded,sd_delivery,sd_pmcdate,sd_pmcremark,sd_atpdelivery,sd_custprodcode,sd_custproddetail,sd_prodcustcode,pr_vendprodcode,sd_noforecast,sd_forecastcode,sd_forecastdetno,sd_yqty,sd_sendqty,sd_qty-nvl(sd_sendqty,0) sd_leaveassign,sd_leadtime,sd_bgprice,sd_description,sd_remark2,sd_bomid,sd_originaldetno,sd_originalqty,sd_status,sd_barcode,sd_tomakeqty,sd_packagedate,sd_vendorrate,sd_bodycost,sd_minus,sd_bomprice,pr_location from SaleDetail left join Product on sd_prodcode=pr_code where sd_said in (select sa_id from (select rownum rn,AA.* from (select * from Sale where sa_statuscode in ('AUDITED','FINISH') order by sa_id desc) AA) where rn>="+start+" and rn<="+end+") order by sd_said desc" , SaleDetailDTO.class);
+        // 5. 按订单ID分组订单明细
+        Map<BigDecimal, List<SaleDetailDTO>> saleDetailMap = saleDetailDTOS.stream().collect(Collectors.groupingBy(SaleDetailDTO::getSd_said));
+        // 6. 组装数据
+        List<SaleResp> saleResps = assembleOrderData(saleDTOS, saleDetailMap);
+
+        int count = baseDao.getCount("select count(1) from Sale where sa_statuscode in ('AUDITED','FINISH')");
+
+        Map<String,Object> map = new HashMap<>();
+        map.put("pageNum", pageNum);
+        map.put("pageSize", pageSize);
+        map.put("size", count);
+        map.put("list", saleResps);
+        return Result.success(map);
+    }
+
+    /**
+     * 组装订单主从表数据
+     */
+    private List<SaleResp> assembleOrderData(List<SaleDTO> orders, Map<BigDecimal, List<SaleDetailDTO>> itemsMap) {
+        return orders.stream()
+                .map(order -> {
+                    SaleResp saleListResp = convertToVO(order);
+
+                    // 设置订单明细
+                    List<SaleDetailDTO> items = itemsMap.get(order.getSa_id());
+                    if (!CollectionUtils.isEmpty(items)) {
+                        List<SaleDetailResp> itemVOS = items.stream()
+                                .map(this::convertToItemVO)
+                                .collect(Collectors.toList());
+                        saleListResp.setSaleDetailResps(itemVOS);
+                    } else {
+                        saleListResp.setSaleDetailResps(new ArrayList<>());
+                    }
+
+                    return saleListResp;
+                })
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 转换订单主表为VO
+     */
+    private SaleResp convertToVO(SaleDTO order) {
+        SaleResp saleResp = new SaleResp();
+        BeanUtils.copyProperties(order, saleResp);
+
+        return saleResp;
+    }
+
+    /**
+     * 转换订单明细为VO
+     */
+    private SaleDetailResp convertToItemVO(SaleDetailDTO item) {
+        SaleDetailResp vo = new SaleDetailResp();
+        BeanUtils.copyProperties(item, vo);
+        return vo;
+    }
+
     @Override
     public Result getProduct(HttpServletRequest request, ProductReq req) {
         String code = req.getCode();

+ 2 - 0
src/main/java/com/uas/eis/service/STKService.java

@@ -23,6 +23,8 @@ public interface STKService {
 
     Result getCustomerList(ProductPageDTO productPageDTO);
 
+    Result getSaleList(ProductPageDTO productPageDTO);
+
     Result getProduct(HttpServletRequest request, ProductReq productReq);
 
     Result getBom(BomReq bomReq);