diff --git a/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java b/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java index 2d001cd0..23f156f8 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java +++ b/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyData.java @@ -25,4 +25,6 @@ public class EcssCoDelNotifyData extends EcssCoDelNotify { private String buDesc; private Boolean modifyFlag; + + private Boolean modifyQtyFlag; } diff --git a/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java b/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java index cfeaeff8..3e96dd7a 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java +++ b/src/main/java/com/xujie/sys/modules/ecss/data/EcssCoDelNotifyDetailData.java @@ -19,6 +19,7 @@ public class EcssCoDelNotifyDetailData extends EcssCoDelNotifyDetail { private String nocartons; private Integer addFlag; private Boolean modifyFlag; + private Boolean modifyQtyFlag; // 只有数量变化时才为true private String hsCodeDesc; private BigDecimal rolls; private BigDecimal useQty; diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java index 9bbbb438..0bd9c89b 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java @@ -622,9 +622,19 @@ public class CoDelServiceImpl implements CoDelService { if (ecssCoDelNotifyDetail.isEmpty()){ throw new RuntimeException("该发货通知单明细不存在"); } else { - if ((ecssCoDelNotifyDetail.get(0).getQty().compareTo(data.getQty())!=0) || - !ecssCoDelNotifyDetail.get(0).getPn().equals(data.getPn())) { + // 判断数量是否变化 + boolean qtyChanged = ecssCoDelNotifyDetail.get(0).getQty().compareTo(data.getQty()) != 0; + // 判断PN是否变化 + boolean pnChanged = !ecssCoDelNotifyDetail.get(0).getPn().equals(data.getPn()); + + if (qtyChanged || pnChanged) { data.setModifyFlag(true); + + // 只有数量变化时才设置 modifyQtyFlag=true + if (qtyChanged) { + data.setModifyQtyFlag(true); + } + // 取消订单 通知仓库和单证人员 //设置邮件内容 String text = "" + "
发货通知单" +data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单" + "
"+ @@ -647,6 +657,7 @@ public class CoDelServiceImpl implements CoDelService { int itemNo = coDelMapper.getEcssDelDetailItemNo(data); data.setItemNo(itemNo); data.setModifyFlag(true); + data.setModifyQtyFlag(true); // 新增发货也算数量变化 coDelMapper.insertEcssDelDetail(data); // 取消订单 通知仓库和单证人员 //设置邮件内容 @@ -677,6 +688,7 @@ public class CoDelServiceImpl implements CoDelService { } data.setQty(BigDecimal.ZERO); data.setModifyFlag(true); + data.setModifyQtyFlag(true); // 删除发货也算数量变化 data.setStatus("取消发货"); coDelMapper.updateEcssDelDetail(data); EcssCoDelNotifyHeaderData header = new EcssCoDelNotifyHeaderData(); @@ -769,10 +781,23 @@ public class CoDelServiceImpl implements CoDelService { // 先删除全部明细,再新建明细 coDelMapper.deleteAllEcssDelDetail(headerData); + + // 构建原数据Map,用于比较数量是否变化 + Map originalQtyMap = dbData.stream() + .collect(Collectors.toMap(EcssCoDelNotifyDetail::getPn, EcssCoDelNotifyDetail::getQty)); + for (int i = 0; i < excelList.size(); i++) { excelList.get(i).setDelNo(headerData.getDelNo()); excelList.get(i).setItemNo(i + 1); excelList.get(i).setModifyFlag(true); + + // 判断数量是否变化:新增物料或数量不同时设置 modifyQtyFlag=true + String pn = excelList.get(i).getPn(); + BigDecimal newQty = excelList.get(i).getQty(); + if (!originalQtyMap.containsKey(pn) || + !originalQtyMap.get(pn).equals(newQty)) { + excelList.get(i).setModifyQtyFlag(true); + } } coDelMapper.batchSaveEcssCoDelNotifyDetail(excelList); headerData.setModifyFlag(true); diff --git a/src/main/resources/mapper/ecss/CoDelMapper.xml b/src/main/resources/mapper/ecss/CoDelMapper.xml index 7cf541e0..367058d1 100644 --- a/src/main/resources/mapper/ecss/CoDelMapper.xml +++ b/src/main/resources/mapper/ecss/CoDelMapper.xml @@ -118,7 +118,7 @@ select a.site,a.bu_no,a.delNo,a.item_no,a.salesOrder,a.salesOrder_item_no,a.customerPO,a.line,a.version,a.status,a.family, a.part_no,a.part_description,a.qty,a.lt,a.cmc_comment,a.saleType,a.awb_bl,a.shipping_number,a.forwarder_info,isnull(a.surplus_qty,0) surplusQty, a.currency,a.tp,a.ttl_amount,a.sum_price,a.so,a.upc,a.remark,a.erp_delItemNo,a.pn,CONVERT(DECIMAL(20, 0),a.nocartons) as nocartons, - c.num_value as boxrolls,d.num_value as rollqty,w.num_value as boxweight,#{cmcInvoice} as cmcInvoice,a.modifyFlag, + c.num_value as boxrolls,d.num_value as rollqty,w.num_value as boxweight,#{cmcInvoice} as cmcInvoice,a.modifyFlag,a.modifyQtyFlag, b.hsCodeDesc,a.vat,a.roll,a.carton,b.packageNo from ecss_CoDelNotifydetail a left join part b on a.site=b.site and a.part_no=b.part_no @@ -139,7 +139,7 @@ select a.site,a.bu_no,a.delNo,a.item_no,a.salesOrder,a.salesOrder_item_no,a.customerPO,a.line,a.version,a.status,a.family, a.part_no,a.part_description,a.qty,a.lt,a.cmc_comment,a.saleType,a.awb_bl,a.shipping_number,a.forwarder_info, a.currency,a.tp,a.ttl_amount,a.sum_price,a.so,a.upc,a.remark,a.erp_delItemNo,a.pn,CONVERT(DECIMAL(20, 0),a.nocartons) as nocartons, - a.modifyFlag + a.modifyFlag,a.modifyQtyFlag from ecss_CoDelNotifydetail a And a.site = #{site} @@ -176,13 +176,13 @@ insert into ecss_CoDelNotifyDetail (site,bu_no,delNo,item_no,salesOrder,salesOrder_item_no,customerPO,line,version, status,family,part_no,part_description,qty,lt,cmc_comment,saleType, awb_bl,shipping_number,forwarder_info,currency,tp,ttl_amount,sum_price, - so,upc,remark,pn,surplus_qty,vat,roll,carton,saleslt,manufacturer_name,modifyFlag) + so,upc,remark,pn,surplus_qty,vat,roll,carton,saleslt,manufacturer_name,modifyFlag,modifyQtyFlag) values (#{item.site},#{item.buNo},#{item.delNo},#{item.itemNo,jdbcType=INTEGER},#{item.salesOrder,jdbcType=NVARCHAR},#{item.salesOrderItemNo},#{item.customerPO,jdbcType=NVARCHAR},#{item.line,jdbcType=NVARCHAR},#{item.version,jdbcType=NVARCHAR}, #{item.status,jdbcType=NVARCHAR},#{item.family,jdbcType=NVARCHAR},#{item.partNo},#{item.partDescription,jdbcType=NVARCHAR},#{item.qty,jdbcType=DECIMAL},#{item.lt,jdbcType=DECIMAL},#{item.cmcComment,jdbcType=NVARCHAR},#{item.saleType,jdbcType=NVARCHAR}, #{item.awbBl,jdbcType=NVARCHAR},#{item.shippingNumber,jdbcType=NVARCHAR},#{item.forwarderInfo,jdbcType=NVARCHAR},#{item.currency,jdbcType=NVARCHAR},#{item.tp,jdbcType=DECIMAL},#{item.ttlAmount,jdbcType=DECIMAL},#{item.sumPrice,jdbcType=DECIMAL}, - #{item.so,jdbcType=NVARCHAR},#{item.upc,jdbcType=NVARCHAR},#{item.remark,jdbcType=NVARCHAR},#{item.pn,jdbcType=NVARCHAR},#{item.qty},#{item.vat},#{item.roll},#{item.carton},#{item.saleslt,jdbcType=NVARCHAR},#{item.manufacturerName,jdbcType=NVARCHAR},#{item.modifyFlag}) + #{item.so,jdbcType=NVARCHAR},#{item.upc,jdbcType=NVARCHAR},#{item.remark,jdbcType=NVARCHAR},#{item.pn,jdbcType=NVARCHAR},#{item.qty},#{item.vat},#{item.roll},#{item.carton},#{item.saleslt,jdbcType=NVARCHAR},#{item.manufacturerName,jdbcType=NVARCHAR},#{item.modifyFlag},#{item.modifyQtyFlag}) @@ -220,7 +220,7 @@ - update ecss_CoDelNotifyDetail set modifyFlag=#{modifyFlag},surplus_qty=0 where site=#{site} and delNo=#{delNo} + update ecss_CoDelNotifyDetail set modifyFlag=#{modifyFlag},modifyQtyFlag=#{modifyFlag},surplus_qty=0 where site=#{site} and delNo=#{delNo} @@ -249,11 +249,11 @@ insert into ecss_CoDelNotifyDetail(site,bu_no,delNo,item_no,salesOrder,salesOrder_item_no,customerPO,line,version, status,family,part_no,part_description,qty,lt,cmc_comment,saleType, awb_bl,shipping_number,forwarder_info,currency,tp,ttl_amount,sum_price, - so,upc,remark,pn,modifyFlag,surplus_qty,vat,roll,carton) + so,upc,remark,pn,modifyFlag,modifyQtyFlag,surplus_qty,vat,roll,carton) values(#{site},#{buNo},#{delNo},#{itemNo,jdbcType=INTEGER},#{salesOrder},#{salesOrderItemNo},#{customerPO},#{line},#{version}, #{status},#{family},#{partNo},#{partDescription},#{qty,jdbcType=DECIMAL},#{lt,jdbcType=DECIMAL},#{cmcComment},#{saleType}, #{awbBl},#{shippingNumber},#{forwarderInfo},#{currency},#{tp,jdbcType=DECIMAL},#{ttlAmount,jdbcType=DECIMAL},#{sumPrice,jdbcType=DECIMAL}, - #{so},#{upc},#{remark},#{pn},#{modifyFlag},#{qty},#{vat},#{roll},#{carton}) + #{so},#{upc},#{remark},#{pn},#{modifyFlag},#{modifyQtyFlag},#{qty},#{vat},#{roll},#{carton}) @@ -263,7 +263,7 @@ lt=#{lt,jdbcType=DECIMAL},cmc_comment=#{cmcComment},saleType=#{saleType},pn=#{pn}, awb_bl=#{awbBl},shipping_number=#{shippingNumber},forwarder_info=#{forwarderInfo},currency=#{currency}, tp=#{tp,jdbcType=DECIMAL},ttl_amount=#{ttlAmount,jdbcType=DECIMAL},sum_price=#{sumPrice,jdbcType=DECIMAL}, - so=#{so},upc=#{upc},remark=#{remark},modifyFlag=#{modifyFlag},surplus_qty=#{qty},vat=#{vat},roll=#{roll},carton=#{carton} + so=#{so},upc=#{upc},remark=#{remark},modifyFlag=#{modifyFlag},modifyQtyFlag=#{modifyQtyFlag},surplus_qty=#{qty},vat=#{vat},roll=#{roll},carton=#{carton} where site=#{site} and delNo=#{delNo} and item_no=#{itemNo} @@ -547,12 +547,45 @@ create_by,create_date,update_by,update_date select a.customerPO,a.part_no,a.part_description,a.currency, CONVERT(DECIMAL(20, 0), a.qty) as qty,CONVERT(DECIMAL(20, 5), a.tp) as unitPrice,b.hsCode, - a.upc,a.so,a.ttl_amount,a.pn,h.hsCodeDesc,h.hsCodeDescEn + a.upc,a.so,a.ttl_amount,a.pn,h.hsCodeDesc,h.hsCodeDescEn,a.cmc_comment, + CASE WHEN a.modifyFlag = 1 THEN '是' ELSE '否' END AS modifyFlag from ecss_CoDelNotifydetail a left join part b on a.site=b.site and a.part_no=b.part_no left join ecss_hsCode h on b.hsCode=h.HsCode and a.site=h.site and b.hsCodeDesc=h.hsCodeDesc diff --git a/src/main/resources/templates/packing-template.xlsx b/src/main/resources/templates/packing-template.xlsx index 1e55f8b5..3f2d03e1 100644 Binary files a/src/main/resources/templates/packing-template.xlsx and b/src/main/resources/templates/packing-template.xlsx differ