From c1a212376a8d961045dbe5b7d13ee64b237a4572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Mon, 19 May 2025 17:58:03 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E4=B8=9A=E5=8A=A9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management/data/MaterialPacking.java | 27 +++-- .../idm/service/impl/ToSAPServiceImpl.java | 107 +++++++++++++++++- .../service/Impl/CostCenterServiceImpl.java | 42 +++++-- .../idm/service/Impl/MESToWMSServiceImpl.java | 10 +- .../service/Impl/ProductIntoServiceImpl.java | 4 +- 5 files changed, 167 insertions(+), 23 deletions(-) diff --git a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java index 765a641..f759cfb 100644 --- a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java +++ b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java @@ -134,15 +134,8 @@ public class MaterialPacking extends FieldAccessor implements DataInfo boxList) throws Exception{ + // 业助更新过账 + public String careerAssistance(List sapBoxList,String siteName, String user,String SALESHIPREQUESTNAME,String SALESHIPREQUESTDETAILNAME,String commitDate) { + String moveType= ""; + String rcode; + String undoId = ""; + String rmsg = null; + + //依据采购订单,查询待入库的物料(MATERIALPACKING) + StringBuffer sql = new StringBuffer(); + sql.append("SELECT m.MATERIALSPECNAME ,").append(SystemPropHelper.CR) + .append(" m.ERPFACTORY ,").append(SystemPropHelper.CR) + .append(" m.ERPLOCATION ,").append(SystemPropHelper.CR) + .append(" m.PACKINGGRADE, ").append(SystemPropHelper.CR) + .append(" m.UNIT ,").append(SystemPropHelper.CR) + .append(" m.POSTSTATUS ,").append(SystemPropHelper.CR) + .append(" m.MESSAGEID ,").append(SystemPropHelper.CR) + .append(" m.SALESHIPREQUESTNAME ,").append(SystemPropHelper.CR) + .append(" m.SALESHIPREQUESTDETAILNAME ,").append(SystemPropHelper.CR) + .append(" sum(m.MATERIALQUANTITY) MATERIALQUANTITY").append(SystemPropHelper.CR) + .append(" FROM MATERIALPACKING m ").append(SystemPropHelper.CR) +// .append(" WHERE m.RECEIVEACTNO = :RECEIVEACTNO AND m.SITENAME = :SITENAME ").append(SystemPropHelper.CR) + .append(" WHERE m.MATERIALPACKINGNAME IN (:BOXLIST) AND m.SITENAME = :SITENAME").append(SystemPropHelper.CR) + .append("GROUP BY m.MATERIALSPECNAME ,m.ERPFACTORY ,m.ERPLOCATION ,m.PACKINGGRADE,m.UNIT "); + + Map hashMap = new HashMap(); + hashMap.put("SITENAME", siteName); + hashMap.put("BOXLIST", sapBoxList); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); + try { + + Map bodyData = new HashMap<>(); + bodyData.put("BKTXT", user); + List> itemData = new ArrayList<>(); + + for (Map mm : queryForList) { + + moveType = mm.get("POSTSTATUS").toString(); + //UMWRK 收货工厂 + //LGORT 发货库存地点 + //UMLOG 收货库存地点 + //MATNR 发货物料号 + //UMMAT 收货物料 + Map item = new HashMap<>(); + item.put("MATNR", mm.get("MATERIALSPECNAME")); + item.put("LGORT", mm.get("ERPLOCATION")); + item.put("WERKS", mm.get("ERPFACTORY")); + item.put("BWART",moveType); + item.put("MENGE", mm.get("MATERIALQUANTITY")); + item.put("MEINS", mm.get("UNIT")); + String insmk = ""; +// if("NG".equals(pqcResult) ){ +// insmk = "3"; +// } +// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X"; + item.put("INSMK", insmk); + + if("411E".equals(moveType) || "413E".equals(moveType)) { + item.put("MAT_KDAUF", mm.get("SALESHIPREQUESTNAME")); // 发货销售订单编码 + item.put("MAT_KDPOS", mm.get("SALESHIPREQUESTDETAILNAME")); // 发货销售订单项目编码 + } else if("413".equals(moveType) || "413E".equals(moveType)) { + item.put("UMMAT_KDAUF", SALESHIPREQUESTNAME); // 发货销售订单编码 + item.put("UMMAT_KDPOS", SALESHIPREQUESTDETAILNAME); // 发货销售订单项目编码 + } + + itemData.add(item); + + } +// TimeStampUtil.getCurrentTime("yyyyMMdd") + String sendData = ToSAPMessageUtil.mm067(user, bodyData, itemData,commitDate); + + String sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl,"",sendData); + org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn); + + org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN"); + rcode = returnJsonObject.get("STATUS").toString(); + rmsg = returnJsonObject.get("MSGTXT").toString(); + + if ("S".equals(rcode)) { + undoId = returnJsonObject.get("MBLNR").toString()+"_"+returnJsonObject.get("MJAHR").toString();//将物料凭证号与凭证年度拼在一起 + } + //将log写到表里 + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToErp"); + erplog.setEventName("iqcResultFeekback"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendData); + erplog.setSendMsg2(sendData); + erplog.setSendMsg(sendData); + erplog.setReturnMsg2(sapreturn); + erplog.setResultCode(rcode); + MessageLogUtil.writeMessageLog(erplog); + } catch (Exception e) { + log.info(e.getMessage(), e); + throw new RuntimeException("SAP返回" + rmsg); + } + if (!"S".equals(rcode)) { + throw new RuntimeException("SAP返回" + rmsg); + } + return undoId; + + } + + public String qmsResultFeekback(String siteName,String user, List boxList) throws Exception{ String moveType= ""; String rcode; diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java index 7648a00..61ad64e 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java @@ -3,9 +3,11 @@ package com.cim.idm.service.Impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.cim.idm.dao.CostCenterDao; +import com.cim.idm.exception.GlobalException; import com.cim.idm.model.CostCenter; import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.service.CostCenterService; +import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -13,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -22,6 +25,9 @@ public class CostCenterServiceImpl implements CostCenterService { @Autowired private CostCenterDao costCenterDao; + @Autowired + private ToSAPServiceImpl toSAPService; + @Override public List getCostCenter() { return costCenterDao.getCostCenter(); @@ -39,14 +45,19 @@ public class CostCenterServiceImpl implements CostCenterService { List boxList = sl.getBoxList(); String SALESHIPREQUESTNAME = sl.getSALESHIPREQUESTNAME(); String SALESHIPREQUESTDETAILNAME = sl.getSALESHIPREQUESTDETAILNAME(); + String user = sl.getUser(); + String commitDate = sl.getCommitDate(); + String siteName = sl.getSiteName(); // 借用人 String career_ASSISTANCE = sl.getRemark(); + + List sapBoxList = new ArrayList<>(); for (MaterialPacking materialPacking : boxList) { // 条码 String materialPackingName = materialPacking.getMaterialPackingName(); // 原销售订单号 - String saleshiprequestname = materialPacking.getSALESHIPREQUESTNAME(); + String saleshiprequestname = materialPacking.getSaleShipRequestName(); // 物料编号 String materialSpecName = materialPacking.getMaterialSpecName(); // 批次号 @@ -55,25 +66,42 @@ public class CostCenterServiceImpl implements CostCenterService { String phase = materialPacking.getPHASE(); // 客户 String customno = materialPacking.getCUSTOMNO(); - // 过账状态 + + if(saleshiprequestname.equals(SALESHIPREQUESTNAME)) { + throw new GlobalException(SALESHIPREQUESTNAME + "销售订单号不能相等"); + } + + // 过账状态 移动类型 String POSTSTATUS = ""; if (StringUtils.isEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME)){ - POSTSTATUS = "0"; - } else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isEmpty(SALESHIPREQUESTNAME)){ - POSTSTATUS = "1"; - } else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME)){ - POSTSTATUS = "2"; + POSTSTATUS = "413";//从非限制转E库存 } + else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isEmpty(SALESHIPREQUESTNAME)){ + POSTSTATUS = "411E"; //从E库存转非限制 + } + else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME) && !saleshiprequestname.equals(SALESHIPREQUESTNAME)){ + POSTSTATUS = "413E"; //从E库存转E库存 + } + + + if (StringUtils.isEmpty(materialPacking.getCAREER_ASSISTANCE()) || materialPacking.getCAREER_ASSISTANCE().equals(career_ASSISTANCE)){ // 更新 costCenterDao.updatePacking(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME, POSTSTATUS, materialPackingName); + sapBoxList.add( materialPackingName); } else { // 新增 costCenterDao.insertPackingChenk(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME, materialPackingName, siteName, materialSpecName, charge,phase, customno, career_ASSISTANCE,POSTSTATUS); } + } + if(sapBoxList.size() > 0) { + String undoId = toSAPService.careerAssistance(sapBoxList,siteName,user,SALESHIPREQUESTNAME,SALESHIPREQUESTDETAILNAME,commitDate); + } + + } } 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 ec11eec..a6be248 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 @@ -453,12 +453,12 @@ public class MESToWMSServiceImpl implements MESToWMSService { + " AND bm.ERPFACTORY = :ERPFACTORY"; String insertSql = SystemPropHelper.CR + "INSERT INTO BS_MES_SHIPPED(LOTNAME,QTY, UNIT, REQUESTNAME, AREA, " + "PRODUCTSPECNAME, PRODUCTNAME, SDK_ID, PHASE, RECEIVE_FLAG, REMARK, SHIPTIME, " - + "SHIPUSER, SITENAME, MATERIALSPECTYPE," + + "SHIPUSER, SITENAME, MATERIALSPECTYPE,SALESHIPREQUESTNAME,SALESHIPREQUESTDETAILNAME," + "INVENTORYTYPE, SALENO, SALEDETAILNO, ERPLOCATION, CHARGE, LOCATIONNAME, " + "OPERATIONTYPE, MAKEDATE,ERPFACTORY,GXID)" + SystemPropHelper.CR + " VALUES(:LOTNAME,:QTY,:UNIT,:REQUESTNAME, :AREA, " + ":PRODUCTSPECNAME, :PRODUCTNAME, :SDK_ID, :PHASE, 'N', :REMARK, :SHIPTIME, " - + "'MES', 'SDK', :MATERIALSPECTYPE, " + + "'MES', 'SDK', :MATERIALSPECTYPE, :SALESHIPREQUESTNAME,:SALESHIPREQUESTDETAILNAME," + ":INVENTORYTYPE, :SALENO, :SALEDETAILNO, :ERPLOCATION, :CHARGE, :LOCATIONNAME, " + ":OPERATIONTYPE,TO_DATE(:MAKEDATE, 'YYYY-MM-DD'),:ERPFACTORY,:GXID)"; String receiveActNo = ""; @@ -490,8 +490,8 @@ public class MESToWMSServiceImpl implements MESToWMSService { String makeDate = jo.getString("makeDate"); erpFactory = jo.getString("erpFactory"); String materialPackingName = jo.getString("materialPackingName"); // 退料原条码二维码 - String saleShipRequestName = jo.getString("SALESHIPREQUESTNAME"); // 销售订单号 - String saleShipRequestDetailName = jo.getString("SALESHIPREQUESTDETAILNAME"); // 销售订单号行项 + String saleShipRequestName = jo.getString("saleShipRequestName") == null ? "" : jo.getString("saleShipRequestName"); // 销售订单号 e库存 + String saleShipRequestDetailName = jo.getString("saleShipRequestDetailName") == null ? "" : jo.getString("saleShipRequestDetailName"); // 销售订单号行项 e库存 if (i == 0) { stockInType = jo.getString("stockInType"); @@ -535,6 +535,8 @@ public class MESToWMSServiceImpl implements MESToWMSService { bindMap.put("GXID", gxId); bindMap.put("MATERIALPACKINGNAME", materialPackingName); bindMap.put("MAKEDATE", makeDate); + bindMap.put("SALESHIPREQUESTNAME", saleShipRequestName); // e库存 销售订单号 + bindMap.put("SALESHIPREQUESTDETAILNAME", saleShipRequestDetailName); // e库存 销售订单行项 if ("1".equals(operationType)) { // 自动入库 if ("FG".equals(stockInType) || "BFG".equals(stockInType)) { // 产成品入库 增加回收例子入库 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java index d7b4ccd..18bed43 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java @@ -615,7 +615,7 @@ public class ProductIntoServiceImpl implements FGStockInService { sql.append(" M.ERPLOCATION , "); sql.append(" T.AREA ,"); sql.append(" T.SHIPUSER , "); - sql.append(" T.PACKINGGRADE , "); + sql.append(" T.PACKINGGRADE ,T.SALESHIPREQUESTNAME,T.SALESHIPREQUESTDETAILNAME, "); sql.append(" T.SHIPTIME , "); sql.append(" M3.MATERIALTYPE , "); sql.append(" T.REMARK,T.PHASE,T.CAREER_ASSISTANCE,T.DURABLETYPE ,T.BUSINESS_UNIT,T.SALESPERSON,T.MJPC ,T.TRUEGG,T.CHARGE,T.MAKEDATE, T.CUSTOMERNO ," @@ -774,6 +774,8 @@ public class ProductIntoServiceImpl implements FGStockInService { if("Y".equals(is_oven)) { bindMap.put("MATURATIONINTIME", eventInfo.getEventTime());//熟化入库时间 } + bindMap.put("saleShipRequestName", queryForList.get(0).get("SALESHIPREQUESTNAME") == null ? "" : queryForList.get(0).get("SALESHIPREQUESTNAME").toString() ); + bindMap.put("saleShipRequestDetailName", queryForList.get(0).get("SALESHIPREQUESTDETAILNAME") == null ? "" : queryForList.get(0).get("SALESHIPREQUESTDETAILNAME").toString() ); //增加立库相关信息T.LK_DURABLENAME,T.LK_AREANAME,T.LK_PRODUCTLINE,T.LK_WIDTH ,T.LK_DEVIATION,T.LK_WEIGHT,T.LK_DIAMETER,T.LK_SHELFNAME bindMap.put("durableName", queryForList.get(0).get("LK_DURABLENAME"));