From 8af573aa3cbc1acf7c1ffd0ebaa7485a6a93cd2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Tue, 10 Jun 2025 15:32:48 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E6=94=B9=E9=80=80?= =?UTF-8?q?=E6=96=99=E8=BF=87=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idm/service/impl/ToSAPServiceImpl.java | 114 ++++++++++++++---- .../idm/service/Impl/MESToWMSServiceImpl.java | 14 +++ 2 files changed, 102 insertions(+), 26 deletions(-) diff --git a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java index 30436f9..fac964f 100644 --- a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java +++ b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java @@ -5565,30 +5565,92 @@ public class ToSAPServiceImpl { // "GROUP BY T.RECEIVEREQUESTNAME, D.REQUESTNAME, T.ERPFACTORY,T.ERPLOCATION, " + SystemPropHelper.CR+ // " T.MATERIALSPECNAME,T.UNIT,T.PACKINGGRADE,D.MATERIALSPECTYPE,D.SHIPREQUESTNAME,D.SHIPREQUESTDETAILNAME "; - String sql="SELECT T.RECEIVEREQUESTNAME , \n" + - " D.REQUESTNAME PRODUCTORDER, \n" + - " T.ERPFACTORY, \n" + - " T.ERPLOCATION, \n" + - " T.MATERIALSPECNAME, \n" + - " T.UNIT, \n" + - " T.PACKINGGRADE, \n" + - " D.MATERIALSPECTYPE, \n" + - " D.SHIPREQUESTNAME, \n" + - " D.SHIPREQUESTDETAILNAME, \n" + - " B.RECEIVEREQUESTNAME PRERECEIVEREQUESTNAME,\n" + - " B.RECEIVEREQUESTDETAILNAME PRERECEIVEREQUESTDETAILNAME,\n" + - " SUM(T.MATERIALQUANTITY) AS MATERIALQUANTITY \n" + - " FROM BS_MES_SHIPPED D LEFT JOIN MATERIALPACKING T ON D.LOTNAME = T.MATERIALPACKINGNAME\n" + - " LEFT JOIN MATERIALPACKINGSUB B ON D.MATERIALPACKINGNAME = B.MATERIALPACKINGNAME\n" + - " LEFT JOIN MATERIALSHIPREQUESTDETAIL m ON m.SHIPREQUESTNAME = B.RECEIVEREQUESTNAME AND m.SHIPREQUESTDETAILNAME = B.RECEIVEREQUESTDETAILNAME\n" + - " AND (m.RECEIVEPRODUCTIONORDERNUMBER = D.REQUESTNAME OR m.RECEIVEPRODUCTIONORDERNUMBER = '0000' || D.REQUESTNAME)\n" + - "WHERE 1 = 1 \n" + - " AND T.receiveActNo = :SHIPREQUESTNAME \n" + - " AND T.SITENAME = :SITENAME \n" + - " AND T.STOCKSTATE = 'Created' \n" + - " GROUP BY T.RECEIVEREQUESTNAME, D.REQUESTNAME, T.ERPFACTORY,T.ERPLOCATION, \n" + - " T.MATERIALSPECNAME,T.UNIT,T.PACKINGGRADE,D.MATERIALSPECTYPE,D.SHIPREQUESTNAME,D.SHIPREQUESTDETAILNAME,\n" + - " B.RECEIVEREQUESTNAME,B.RECEIVEREQUESTDETAILNAME"; + //修改二 +// String sql="SELECT T.RECEIVEREQUESTNAME , \n" + +// " D.REQUESTNAME PRODUCTORDER, \n" + +// " T.ERPFACTORY, \n" + +// " T.ERPLOCATION, \n" + +// " T.MATERIALSPECNAME, \n" + +// " T.UNIT, \n" + +// " T.PACKINGGRADE, \n" + +// " D.MATERIALSPECTYPE, \n" + +// " D.SHIPREQUESTNAME, \n" + +// " D.SHIPREQUESTDETAILNAME, \n" + +// " B.RECEIVEREQUESTNAME PRERECEIVEREQUESTNAME,\n" + +// " B.RECEIVEREQUESTDETAILNAME PRERECEIVEREQUESTDETAILNAME,\n" + +// " SUM(T.MATERIALQUANTITY) AS MATERIALQUANTITY \n" + +// " FROM BS_MES_SHIPPED D LEFT JOIN MATERIALPACKING T ON D.LOTNAME = T.MATERIALPACKINGNAME\n" + +// " LEFT JOIN MATERIALPACKINGSUB B ON D.MATERIALPACKINGNAME = B.MATERIALPACKINGNAME\n" + +// " LEFT JOIN MATERIALSHIPREQUESTDETAIL m ON m.SHIPREQUESTNAME = B.RECEIVEREQUESTNAME AND m.SHIPREQUESTDETAILNAME = B.RECEIVEREQUESTDETAILNAME\n" + +// " AND (m.RECEIVEPRODUCTIONORDERNUMBER = D.REQUESTNAME OR m.RECEIVEPRODUCTIONORDERNUMBER = '0000' || D.REQUESTNAME)\n" + +// "WHERE 1 = 1 \n" + +// " AND T.receiveActNo = :SHIPREQUESTNAME \n" + +// " AND T.SITENAME = :SITENAME \n" + +// " AND T.STOCKSTATE = 'Created' \n" + +// " GROUP BY T.RECEIVEREQUESTNAME, D.REQUESTNAME, T.ERPFACTORY,T.ERPLOCATION, \n" + +// " T.MATERIALSPECNAME,T.UNIT,T.PACKINGGRADE,D.MATERIALSPECTYPE,D.SHIPREQUESTNAME,D.SHIPREQUESTDETAILNAME,\n" + +// " B.RECEIVEREQUESTNAME,B.RECEIVEREQUESTDETAILNAME"; + + String sql= "SELECT \n" + + " T.RECEIVEREQUESTNAME, \n" + + " D.REQUESTNAME PRODUCTORDER, \n" + + " T.ERPFACTORY, \n" + + " T.ERPLOCATION, \n" + + " T.MATERIALSPECNAME, \n" + + " T.UNIT, \n" + + " T.PACKINGGRADE, \n" + + " D.MATERIALSPECTYPE, \n" + + " D.SHIPREQUESTNAME, \n" + + " D.SHIPREQUESTDETAILNAME, \n" + + " B.RECEIVEREQUESTNAME PRERECEIVEREQUESTNAME,\n" + + " B.RECEIVEREQUESTDETAILNAME PRERECEIVEREQUESTDETAILNAME,\n" + + " SUM(T.MATERIALQUANTITY) AS MATERIALQUANTITY \n" + + "FROM \n" + + " BS_MES_SHIPPED D \n" + + " LEFT JOIN MATERIALPACKING T \n" + + " ON D.LOTNAME = T.MATERIALPACKINGNAME\n" + + " LEFT JOIN (\n" + + " -- 子查询:为每个MATERIALPACKINGNAME取EDITDATE最近的记录\n" + + " SELECT \n" + + " MATERIALPACKINGNAME,\n" + + " RECEIVEREQUESTNAME,\n" + + " RECEIVEREQUESTDETAILNAME,\n" + + " EDITDATE\n" + + " FROM (\n" + + " SELECT \n" + + " B.*,\n" + + " ROW_NUMBER() OVER (\n" + + " PARTITION BY MATERIALPACKINGNAME \n" + + " ORDER BY EDITDATE DESC\n" + + " ) AS rn\n" + + " FROM MATERIALPACKINGSUB B\n" + + " ) \n" + + " WHERE rn = 1 -- 仅保留每个分组的最新记录\n" + + " ) B \n" + + " ON D.MATERIALPACKINGNAME = B.MATERIALPACKINGNAME\n" + + " LEFT JOIN MATERIALSHIPREQUESTDETAIL m \n" + + " ON m.SHIPREQUESTNAME = B.RECEIVEREQUESTNAME \n" + + " AND m.SHIPREQUESTDETAILNAME = B.RECEIVEREQUESTDETAILNAME\n" + + " AND (m.RECEIVEPRODUCTIONORDERNUMBER = D.REQUESTNAME \n" + + " OR m.RECEIVEPRODUCTIONORDERNUMBER = '0000' || D.REQUESTNAME)\n" + + "WHERE \n" + + " 1 = 1 \n" + + " AND T.receiveActNo = :SHIPREQUESTNAME \n" + + " AND T.SITENAME = :SITENAME \n" + + " -- AND T.STOCKSTATE = 'Created' \n" + + "GROUP BY \n" + + " T.RECEIVEREQUESTNAME, \n" + + " D.REQUESTNAME, \n" + + " T.ERPFACTORY,\n" + + " T.ERPLOCATION, \n" + + " T.MATERIALSPECNAME,\n" + + " T.UNIT,\n" + + " T.PACKINGGRADE,\n" + + " D.MATERIALSPECTYPE,\n" + + " D.SHIPREQUESTNAME,\n" + + " D.SHIPREQUESTDETAILNAME,\n" + + " B.RECEIVEREQUESTNAME,\n" + + " B.RECEIVEREQUESTDETAILNAME"; Map hashMap = new HashMap(); hashMap.put("SITENAME", siteName); // hashMap.put("SHIPREQUESTNAME", shipRequestName); @@ -5687,8 +5749,8 @@ public class ToSAPServiceImpl { hashMap.put("SHIPREQUESTNAME", mm.get("SHIPREQUESTNAME")); List> cqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(qdsql, hashMap); item.put("KOSTL", cqueryForList.get(0).get("COSTCENTER") == null ? "" : cqueryForList.get(0).get("COSTCENTER")); //成本中心 - item.put("AUFNR", mm.get("SHIPREQUESTNAME")); // //从mes_ship表获取的单据号 - item.put("AUFPS", mm.get("SHIPREQUESTDETAILNAME")); // //从mes_ship表获取的单据号 + item.put("ZLLORDER", mm.get("SHIPREQUESTNAME")); // //从mes_ship表获取的单据号 + item.put("ZLLITEM", mm.get("SHIPREQUESTDETAILNAME")); // //从mes_ship表获取的单据号 } if(moveType.equals("262")) { item.put("AUFNR", mm.get("PRODUCTORDER"));; //生产工单 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java index 225d767..f9feba4 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MESToWMSServiceImpl.java @@ -604,6 +604,20 @@ public class MESToWMSServiceImpl implements MESToWMSService { String charge = jb.get("charge").toString(); // 批号 boxIdList.add(charge); barCodeList.add(jb.get("lotName").toString()); + + String stype = jb.get("stockInType") == null ? "" : jb.get("stockInType").toString(); + + if("MAT".equals(stype)) { + String sqld = "SELECT b.LOTNAME FROM BS_MES_SHIPPED b WHERE b.CHARGE = :CHARGE "; + Map hashMapdel = new HashMap<>(); + hashMapdel.put("CHARGE", charge); + List> delqueryForList = sqlTemplate.queryForList(sqld, hashMapdel); + if(delqueryForList != null && delqueryForList.size() > 0) { + String deleteSql="DELETE FROM BS_MES_SHIPPED WHERE CHARGE=?"; + Object[] obj=new Object[] {charge}; + IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, obj); + } + } } String sqld = "SELECT b.charge,b.RECEIVE_FLAG,b.LOTNAME FROM BS_MES_SHIPPED b WHERE b.CHARGE in(:BOXIDLIST) "; Map hashMap = new HashMap<>();