From 33abf07895aa8c5105e43962279df3b0d46163cc Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Wed, 15 Oct 2025 14:15:22 +0800 Subject: [PATCH] modifyQtyFlag --- .../ecss/data/EcssCoDelNotifyData.java | 2 + .../ecss/data/EcssCoDelNotifyDetailData.java | 1 + .../ecss/service/impl/CoDelServiceImpl.java | 29 +++++++- .../resources/mapper/ecss/CoDelMapper.xml | 63 +++++++++++++----- .../mapper/ecss/EcssCommonMapper.xml | 6 +- .../resources/templates/packing-template.xlsx | Bin 10731 -> 10769 bytes 6 files changed, 82 insertions(+), 19 deletions(-) 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 1e55f8b5629817d28bff70d1c67961692ba0b50d..3f2d03e192ad4e0be4e581f9cc7a38a07b2f8811 100644 GIT binary patch delta 2817 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 delta 2774 zcmY*bc{CIX7azuisb|kJ7>1FtWgBIXee6$`nk)~K$WF;JWf^P2$TA3#B_#VaC9;#X z#;(ESV`3}`sVrH)dgnXuJMaE+&pqdNmvintzk6@`l{MS?nNuK3aPu2G;@l|_JjI`; z&ef(k63T_U1|Q7!K5ZSdXFLTk<$mcEsLZ9rCwf~l(IF%0EDMT%1-diEir_!}V`8>- za}B;~QTBimbTJUY$4Svqrk3tQ||-Kz8N&ONQMx&gzw! z1h}lb#d7XKlmGl;oInMdjd4!URfCb4!cr56S>ZQ)LGUc9vvIBjIapqdewWx%ZT2{+ zh2_DWC$}SJqa@^>(T~wEIBHn@3*-Q!Ko{r`YgWP~UySxzzlwThgHXm#Is(>TmQp|U z)y8g_fj@7H_}-rghBtpIzi*CF!JVtZCZ5%bxxSk)s$^0%YQ{DYb}p}dajCdqU1oU7 zRL&_mlOdP!*v!3u@WI$ZoKLplij;g0p~knrQsjyju!_2?A&Am6M~Ru9o)~thUdXH( zZyHMB^>kGnx8OG<7bEaUlUvZS)WMogXgTv+zt)@Wn7>q3WYYNK*d>c$sB6ZC&oEMC zwv;Y*dWa0##`;q6BSvX$B>g>x>Rkda$Z5+1#8trEy-Vz!^;0`$c}Fw0Iev=0keYzM zjV8RTrX2*3fs5{qX-nzZ{2w<{If}Fb`p@#6hNr&|yDL^1t%>&lWx=$Yh3KQV6gPr= z=QdN;{pUeD9keytf7IDdwRVaN&eIiGBxBRSHmgCkK%i*xdACvlb zgC#`FsU5*C;k)JanPtB@lhD$8bqVB_bl-#t0 zE6n@)F4T;9;92TBBd>-E{?&yY}P z@@UH?zPQ_@+o+Lwr(!W8V`b&7**&{`OS_Pmrl8eT2R_tKUNId!@a4oGw{?QT@B`sX z2aBe|9tw_Ks#DY*Q`WM2#n0>l_18?1g=pzIeXKzvoCPwNA6`Blz`INrjRa5Sk?&%s zKM8ry^IP#qMXxQz+sG~NJuoNn&Wnnq->=e|JkO9qO>%ESosyix{i-wCA8H$qMMq0*pLt1Jh~%+cQ5vc>!on^w`z7@2=gr1+ zV>{5_*SAVqkxju`LjgGa@%O@A=av~YbWnxaGj5(89BDuT#H0Gh z0XuDW8uud;{gB12MAwRaO{Nbsp1|q4jQI9yo(G@JJMEFLnJXvxQNjUqT%J2t4%lZ#HPRHu@6 zKk>oJ%caLSdzbKiInO&{P_Jp(rx%$0Zfbk;TMzFWGEuqw@ljiviq&mUs?L2FIHe64 z$jf1E9?U24azq+#t<|@2l6Kd$RXo?|L@lHn?bgQ)x!TYGoV8=)Q)lBS%?}AEI{nDU z=V-CLL%!M(a%6!T6YsCf(zP9@j5-SN34d%KoD!FtTpe)xfx{gLJ&%u> z{$8h^(0yhQtpbB~BYVIQO!!zO!T3$q1I~=F$DULh1E1@{tq#RjeZ3p{-!R?Cba=sf zyUWCfCeEp{CwHJjcLxF^DhKC*ge->|Dr%Yz%X{7mD{32)<8DD)lR^EVH^85ho@?jQmyM??L|}XWlQ~a{ntziTGSb Ro9P{KMMm;e-MQb;e*qTNBvt?b