From a41f66bccf31b1f89126b8f6bfd72c22468b23e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Tue, 29 Apr 2025 11:52:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E4=BA=A7=E6=88=90?= =?UTF-8?q?=E5=93=81=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idm/service/impl/ToSAPServiceImpl.java | 68 ++++- .../idm/controller/SAPToWMSController.java | 42 +-- .../com/cim/idm/model/ToSAPFgStockInDto.java | 16 +- .../service/Impl/ProductIntoServiceImpl.java | 11 +- .../Impl/ReturnStockIntoServiceImpl.java | 252 ++++++++++++++++-- 5 files changed, 336 insertions(+), 53 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 1475605..6d7e46c 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 @@ -13,11 +13,13 @@ import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.fasterxml.jackson.core.type.TypeReference; import java.util.*; @Slf4j @@ -26,6 +28,8 @@ public class ToSAPServiceImpl { @Autowired private ToSAPMessageUtil toSAPMessageUtil; + + public String PurStockIn(String receiveRequestName, String siteName, String user, Map args) throws Exception { @@ -516,17 +520,25 @@ public class ToSAPServiceImpl { * @return 返回物料凭证相关的ID * @throws Exception 如果与SAP系统的通信或其他错误发生时抛出异常 */ - public String FGStockInByManulIn(String bodyJson, String user) throws Exception { + public String FGStockInByManulIn( String bodyJson, String user, String RECEIVEACTNO) throws Exception { // 初始化SAP返回信息、结果代码、消息文本和撤销ID String sapreturn = ""; String rcode = ""; String rmsg = ""; String undoId = ""; + ObjectMapper objectMapper = new ObjectMapper(); + List> objList = objectMapper.readValue( + bodyJson, + new TypeReference>>() {} + ); + + String makeFGStockIn = makeFGStockIn2(objList, user, RECEIVEACTNO); + try { // 发送物料信息到SAP系统 sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl, "", - bodyJson); + makeFGStockIn); // 解析SAP系统的返回信息 org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn); @@ -692,6 +704,58 @@ public class ToSAPServiceImpl { String sendData = ToSAPMessageUtil.mm067(eventUser, bodyData, itemsData); return sendData; } + public String makeFGStockIn2(List> list, String eventUser, String receiveRequestName) throws JsonMappingException, JsonProcessingException { + + if (list == null || list.size() < 1) { + return ""; + } + + Map bodyData = new HashMap<>(); + List> itemsData = new ArrayList<>(); + + for (Map mm : list) { + Map item = new HashMap<>(); + //UMWRK 收货工厂 + //LGORT 发货库存地点 + //UMLOG 收货库存地点 + //MATNR 发货物料号 + //UMMAT 收货物料 + + item.put("MATNR", mm.get("mATERIALSPECNAME")); + item.put("LGORT", mm.get("eRPLOCATION")); + item.put("WERKS", mm.get("eRPFACTORY")); + +// item.put("BWART", "531"); + if("FG".equals((String)mm.get("mATERIALSPECTYPE")) ) { + item.put("BWART", "101"); //产成品,移动类型 101 + }else if("BFG".equals((String)mm.get("mATERIALSPECTYPE")) ) { + item.put("BWART", "531"); //副产品, 移动类型 531 + }else if("FGDEV".equals((String)mm.get("mATERIALSPECTYPE")) ) { + item.put("BWART", "511"); //研发品, 移动类型 511 + }else { + item.put("BWART", "101"); //为了兼容之前的未提到的成品,统一暂用 101 + } + + item.put("MENGE", mm.get("mATERIALQUANTITY")); + item.put("MEINS", mm.get("uNIT")); + item.put("AUFNR", mm.get("pRODUCTORDER")); + item.put("BPMNG", ""); + item.put("BPRME", ""); + item.put("SGTXT", mm.get("rEMARK")); + String insmk = ""; + if (StringUtils.isEmpty((String)mm.get("pACKINGGRADE"))) { + insmk = "2"; + }else if ("NG".equals((String)mm.get("pACKINGGRADE"))) { + insmk = "3"; + } +// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X"; + item.put("INSMK", insmk); + itemsData.add(item); + + } + String sendData = ToSAPMessageUtil.mm067(eventUser, bodyData, itemsData); + return sendData; + } //取消成品入库接口字段。zd.2024.8.29 public String makeCancelFGStockIn(List> list, String eventUser) throws JsonMappingException, JsonProcessingException { diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java index db37909..cc12493 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java @@ -565,30 +565,33 @@ public class SAPToWMSController { String sqlCheck ="SELECT * FROM materialreceiverequest WHERE receiverequestname =:receiverequestname"; Map selectMap= new HashMap(); selectMap.put("receiverequestname", receiveRequestName); - List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); - + List> isResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); // 检验单据是否已存在,并且未被使用过账 String isSql = "SELECT\n" + - "\t*\n" + + "m.RECEIVEREQUESTNAME,\n" + + "SUM(md.RECEIVEDQUANTITY)\n" + "FROM\n" + - "\tMATERIALRECEIVEREQUEST m\n" + + "MATERIALRECEIVEREQUEST m\n" + "LEFT JOIN MATERIALRECEIVEREQUESTDETAIL md ON\n" + - "\tmd.RECEIVEREQUESTNAME = m.RECEIVEREQUESTNAME\n" + + "md.RECEIVEREQUESTNAME = m.RECEIVEREQUESTNAME\n" + "WHERE\n" + - "\tm.RECEIVEREQUESTNAME =:receiverequestname\n" + - "\tAND md.RECEIVEDQUANTITY > 0"; + "m.RECEIVEREQUESTNAME =:receiverequestname\n" + + "AND md.RECEIVEDQUANTITY > 0\n" + + "GROUP BY m.RECEIVEREQUESTNAME"; List> isList = IDMFrameServiceProxy.getSqlTemplate().queryForList(isSql, selectMap); if (isList != null && isList.size() > 0) { - throw new CustomException("ERROR","单据已存在,并且已存在过账!"); - }else { + throw new CustomException("ERROR","单据已存在,并且已存在过账,不能更新或删除!"); + }else if(isResultList != null && isResultList.size() > 0) { String shipquestSql="DELETE FROM MATERIALRECEIVEREQUEST WHERE receiveRequestName =?"; String shipDetailSql="DELETE FROM MATERIALRECEIVEREQUESTDETAIL WHERE receiveRequestName =?"; - Object[] obj=new Object[] {receiveRequestName, receiveRequestName}; + Object[] obj=new Object[] {receiveRequestName}; IDMFrameServiceProxy.getSqlTemplate().update(shipquestSql, obj); IDMFrameServiceProxy.getSqlTemplate().update(shipDetailSql, obj); } + List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); + if(checkResultList == null || checkResultList.size() == 0) { CreateReceiveRequestInfo createInfo = new CreateReceiveRequestInfo(); createInfo.setSiteName(sitename); @@ -1057,29 +1060,32 @@ public class SAPToWMSController { String sqlCheck =" SELECT * FROM materialshiprequest m WHERE shiprequestname =:SHIPREQUESTNAME "; Map selectMap= new HashMap(); selectMap.put("SHIPREQUESTNAME", shipRequestName); - List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); + List> isResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); String isSql = "SELECT\n" + - "\t*\n" + + "m.SHIPREQUESTNAME ,\n" + + "SUM(md.SALEOUTQUANTITY) \n" + "FROM\n" + - "\tMATERIALSHIPREQUEST m\n" + + "MATERIALSHIPREQUEST m\n" + "LEFT JOIN MATERIALSHIPREQUESTDETAIL md ON\n" + - "\tmd.SHIPREQUESTNAME = m.SHIPREQUESTNAME\n" + + "md.SHIPREQUESTNAME = m.SHIPREQUESTNAME\n" + "WHERE\n" + - "\tm.SHIPREQUESTNAME =:SHIPREQUESTNAME\n" + - "\tAND md.SALEOUTQUANTITY > 0"; + "m.SHIPREQUESTNAME =:SHIPREQUESTNAME\n" + + "AND md.SALEOUTQUANTITY > 0\n" + + "GROUP BY m.SHIPREQUESTNAME"; List> isList = IDMFrameServiceProxy.getSqlTemplate().queryForList(isSql, selectMap); if (isList != null && isList.size() > 0) { throw new CustomException("ERROR","单据已存在,并且已存在过账!"); - }else { + }else if (isResultList != null && isResultList.size() > 0) { String shipquestSql="DELETE FROM MATERIALSHIPREQUEST WHERE shiprequestname =?"; String shipDetailSql="DELETE FROM materialshiprequestdetail WHERE shiprequestname =?"; - Object[] obj=new Object[] {shipRequestName, shipRequestName}; + Object[] obj=new Object[] {shipRequestName}; IDMFrameServiceProxy.getSqlTemplate().update(shipquestSql, obj); IDMFrameServiceProxy.getSqlTemplate().update(shipDetailSql, obj); } + List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); if(checkResultList == null || checkResultList.size() == 0) { CreateMaterialShipRequestInfo createInfo = new CreateMaterialShipRequestInfo(); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/ToSAPFgStockInDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/ToSAPFgStockInDto.java index e71c309..a905658 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/ToSAPFgStockInDto.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/ToSAPFgStockInDto.java @@ -17,12 +17,12 @@ public class ToSAPFgStockInDto { // m.MATERIALSPECTYPE, // sum(m.MATERIALQUANTITY ) MATERIALQUANTITY - private String materialSpecName; - private String productOrder; - private String packingGrade; - private String erpFactory; - private String erpLocation; - private String unit; - private String materialSpecType; - private String materialQuantity; + private String MATERIALSPECNAME; + private String PRODUCTORDER; + private String PACKINGGRADE; + private String ERPFACTORY; + private String ERPLOCATION; + private String UNIT; + private String MATERIALSPECTYPE; + private String MATERIALQUANTITY; } 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 0697740..1f3ea84 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 @@ -9,6 +9,7 @@ import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.util.time.TimeStampUtil; import com.cim.idm.model.ToSAPFgStockInDto; import com.cim.idm.service.FGStockInService; +import com.cim.idm.service.impl.MESServiceImpl; import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.utils.CommonUtils; import com.cim.idm.utils.EventInfoUtil; @@ -296,7 +297,7 @@ public class ProductIntoServiceImpl implements FGStockInService { EventInfo eventInfo = EventInfoUtil.makeEventInfo("receiveMesShippInfo", user, "receiveMesShippInfo"); List arrayList = new ArrayList (); - + List chargeList = new ArrayList<> (); //将查询的结果写入MaterialPacking表 for(int i=0;i fgStockInInfo = toSapDao.getFgStockInInfo(boxList); @@ -331,8 +333,10 @@ public class ProductIntoServiceImpl implements FGStockInService { }else { // 直接入库 //封装为Json的字符串 + +// String json = JSON.toJSONString(fgStockInInfo); String json = JSON.toJSONString(fgStockInInfo); - undoID = toSAPService.FGStockInByManulIn(json, user); + undoID = toSAPService.FGStockInByManulIn(json, user,receiveRequestActNo); // String pc = "("; // for (MaterialPacking materialPacking : boxList) { @@ -349,6 +353,9 @@ public class ProductIntoServiceImpl implements FGStockInService { toSapDao.saveUnDoInfo( boxList, undoID, commitDate); //更新接口表的标记和 fgStockInDao.updateBsMesShipped(boxList); + + MESServiceImpl mesService=new MESServiceImpl() ; + mesService.CCPRK_deleteMaterialPackingInfo(chargeList); } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java index 9bec259..0a0d1d1 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java @@ -281,7 +281,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { // SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user, // materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,queryForList.get(0).get("SHIPREQUESTNAME").toString(), queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString()); - SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user, + SHIPMesShippInfo2(makeEventInfo, "SDK", materialPackingName, "", user, materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,list2.get(0).get("REQUESTNAME").toString(), ""); } catch (Exception e) { @@ -360,16 +360,16 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { // 查出是否存在原标签 - String receive_flag = queryForList.get(0).get("RECEIVE_FLAG") == null ? "" : queryForList.get(0).get("RECEIVE_FLAG").toString(); - String PREMATERIALPACKINGNAME = queryForList.get(0).get("PREMATERIALPACKINGNAME") == null ? "" : queryForList.get(0).get("PREMATERIALPACKINGNAME").toString(); - - List> xcqueryForList = new ArrayList> (); - Map xcHashMap = new HashMap (); - xcHashMap.put("CHARGE", queryForList.get(0).get("CHARGE")); - xcHashMap.put("MATERIALPACKINGNAME", PREMATERIALPACKINGNAME); - - String xcSql = "SELECT * FROM MATERIALPACKING m WHERE m.CHARGE = :CHARGE AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; - xcqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(xcSql, xcHashMap); +// String receive_flag = queryForList.get(0).get("RECEIVE_FLAG") == null ? "" : queryForList.get(0).get("RECEIVE_FLAG").toString(); +// String PREMATERIALPACKINGNAME = queryForList.get(0).get("PREMATERIALPACKINGNAME") == null ? "" : queryForList.get(0).get("PREMATERIALPACKINGNAME").toString(); +// +// List> xcqueryForList = new ArrayList> (); +// Map xcHashMap = new HashMap (); +// xcHashMap.put("CHARGE", queryForList.get(0).get("CHARGE")); +// xcHashMap.put("MATERIALPACKINGNAME", PREMATERIALPACKINGNAME); +// +// String xcSql = "SELECT * FROM MATERIALPACKING m WHERE m.CHARGE = :CHARGE AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; +// xcqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(xcSql, xcHashMap); //判断标签是否存在,存在就更新不存在就创建新的入库 @@ -442,14 +442,14 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { bindMap.put("ShipUser",queryForList.get(0).get("SHIPUSER")); // 如果是现场仓更新标签,需根据批次才能找到对应的原标签 - if("T".equals(receive_flag)) { - // 如果存在对应的原标签,MATERIALPACKINGNAME相等,组织 仓库 货位 用原标签,拥于后面过账 - if(xcqueryForList != null && xcqueryForList.size() > 0) { - erpFactory = xcqueryForList.get(0).get("ErpFactory") == null ? "" : xcqueryForList.get(0).get("ErpFactory").toString(); - erpLocation = xcqueryForList.get(0).get("ErpLocation") == null ? "" : xcqueryForList.get(0).get("ErpLocation").toString(); - locationName = xcqueryForList.get(0).get("LocationName") == null ? "" : xcqueryForList.get(0).get("LocationName").toString(); - } - } +// if("T".equals(receive_flag)) { +// // 如果存在对应的原标签,MATERIALPACKINGNAME相等,组织 仓库 货位 用原标签,拥于后面过账 +// if(xcqueryForList != null && xcqueryForList.size() > 0) { +// erpFactory = xcqueryForList.get(0).get("ErpFactory") == null ? "" : xcqueryForList.get(0).get("ErpFactory").toString(); +// erpLocation = xcqueryForList.get(0).get("ErpLocation") == null ? "" : xcqueryForList.get(0).get("ErpLocation").toString(); +// locationName = xcqueryForList.get(0).get("LocationName") == null ? "" : xcqueryForList.get(0).get("LocationName").toString(); +// } +// } bindMap.put("ErpLocation", erpLocation); bindMap.put("ErpFactory", erpFactory); @@ -472,10 +472,10 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { // 如果是现场仓更新标签,需根据批次才能找到对应的原标签 // if("T".equals(receive_flag)) { // 如果存在对应的原标签,MATERIALPACKINGNAME相等,就删除原标签 - if(xcqueryForList != null && xcqueryForList.size() > 0) { - String delsql = "DELETE FROM MATERIALPACKING m WHERE m.CHARGE = :CHARGE AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; - IDMFrameServiceProxy.getSqlTemplate().update(delsql, xcHashMap); - } +// if(xcqueryForList != null && xcqueryForList.size() > 0) { +// String delsql = "DELETE FROM MATERIALPACKING m WHERE m.CHARGE = :CHARGE AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; +// IDMFrameServiceProxy.getSqlTemplate().update(delsql, xcHashMap); +// } // } } else { @@ -520,6 +520,212 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { return true; } + + // 退料入库创建 + public boolean SHIPMesShippInfo2(EventInfo eventInfo,String siteName,String materialPackingName, + String durableName,String user,String palletName,String SHIPActNo, + String erpLocation,String erpFactory,String locationName,String SHIPRequestName, String SHIPRequestDetailName) { + StringBuffer sql = new StringBuffer(); + sql.append(" "); + sql.append(" SELECT "); + sql.append(" T.LOTNAME MATERIALPACKINGNAME, "); + sql.append(" T.QTY MATERIALQUANTITY, "); + sql.append(" T.UNIT ,T.RECEIVE_FLAG, T.MATERIALPACKINGNAME PREMATERIALPACKINGNAME,T.CHARGE, "); + sql.append(" M2. SHIPREQUESTDETAILNAME,"); + sql.append(" T.REQUESTNAME SHIPREQUESTNAME,"); + sql.append(" T.PRODUCTSPECNAME MATERIALSPECNAME, "); + sql.append(" SS.SPECNAME , "); + sql.append(" REPLACE(T.SDK_ID,'~','') SDK_ID , "); + sql.append(" M.ERPLOCATION , "); + sql.append(" T.AREA ,"); + sql.append(" T.SHIPUSER , NVL(M4.CAREER_ASSISTANCE ,T.CAREER_ASSISTANCE ) CAREER_ASSISTANCE, NVL(M4.DURABLETYPE ,T.DURABLETYPE ) DURABLETYPE ,NVL(M4.BUSINESS_UNIT ,T.BUSINESS_UNIT ) BUSINESS_UNIT,NVL(M4.CUSTOMNO ,T.CUSTOMERNO ) CUSTOMNO,NVL(M4.SALESPERSON ,T.SALESPERSON ) SALESPERSON,NVL(M4.MJPC ,T.MJPC ) MJPC ,NVL(T.TRUEGG,M4.TRUEGG) TRUEGG,"); + sql.append(" T.PACKINGGRADE , "); + sql.append(" M4.EXPIRINGDATE , "); + sql.append(" NVL(M4.MAKEDATE ,T.MAKEDATE ) SHIPTIME , "); + sql.append(" M3.MATERIALTYPE , "); + sql.append(" T.REMARK, T.PHASE, T.RETURNPC,T.MJPC "); + sql.append(" FROM "); + sql.append(" BS_MES_SHIPPED T LEFT JOIN MATERIALPACKING M4 ON T.RETURNPC = M4.CHARGE AND T.PRODUCTSPECNAME = M4.MATERIALSPECNAME "); + sql.append(" LEFT JOIN MATERIALSHIPREQUEST M ON "); + sql.append(" T.REQUESTNAME = M.SHIPREQUESTNAME "); + sql.append(" LEFT JOIN MATERIALSHIPREQUESTDETAIL M2 ON "); + sql.append(" T.REQUESTNAME = M2.SHIPREQUESTNAME "); + sql.append(" AND T.PRODUCTSPECNAME = M2.MATERIALSPECNAME "); + sql.append(" AND T.SDK_ID = M2.SDK_ID "); + sql.append(" LEFT JOIN SDK_SPEC SS ON T.SDK_ID = SS.SDK_ID "); + sql.append(" LEFT JOIN MATERIALSPEC M3 ON T.PRODUCTSPECNAME = M3.MATERIALSPECNAME "); + sql.append(" WHERE (T.RECEIVE_FLAG IS NULL OR T.RECEIVE_FLAG <> 'Y') "); + sql.append(" AND T.LOTNAME = :MATERIALPACKINGNAME "); + // sql.append(" AND M.SITENAME = :SITENAME "); + Map hashMap = new HashMap (); + hashMap.put("MATERIALPACKINGNAME", materialPackingName); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); + if(queryForList == null || queryForList.size() < 1) { + new CustomException("不存在要入库的信息"); + } + + + // 查出是否存在原标签 + String receive_flag = queryForList.get(0).get("RECEIVE_FLAG") == null ? "" : queryForList.get(0).get("RECEIVE_FLAG").toString(); + String PREMATERIALPACKINGNAME = queryForList.get(0).get("PREMATERIALPACKINGNAME") == null ? "" : queryForList.get(0).get("PREMATERIALPACKINGNAME").toString(); + + List> xcqueryForList = new ArrayList> (); + Map xcHashMap = new HashMap (); + xcHashMap.put("CHARGE", queryForList.get(0).get("CHARGE")); + xcHashMap.put("MATERIALPACKINGNAME", PREMATERIALPACKINGNAME); + + String xcSql = "SELECT * FROM MATERIALPACKING m WHERE m.CHARGE = :CHARGE AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + xcqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(xcSql, xcHashMap); + + + //判断标签是否存在,存在就更新不存在就创建新的入库 + String judgeSql = "SELECT * FROM MATERIALPACKING m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + List> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(judgeSql, hashMap); + if (queryForList2 == null || queryForList2.size() < 1) { + //入库信息存入库存表 + CreateInfo createInfo = new CreateInfo(); + createInfo.setSiteName(siteName); + createInfo.setMaterialPackingName(materialPackingName);// 新生成的box id + createInfo.setMaterialPackingType("Box"); + createInfo.setContentMaterialType(""); + Map bindMap = new HashMap(); + String packingGrade = queryForList.get(0).get("PACKINGGRADE") == null ? "" : queryForList.get(0).get("PACKINGGRADE").toString(); + if (!"".equals(packingGrade)) { + bindMap.put("oqaResultState", GenericServiceProxy.getConstantMap().OQA_State_End); + bindMap.put("oqaResult",packingGrade); + bindMap.put("packingGrade", packingGrade); + } else { + bindMap.put("oqaResultState",GenericServiceProxy.getConstantMap().OQA_State_Pre); + } + + + bindMap.put("lkMaterialPackingName", palletName); + bindMap.put("MaterialType", queryForList.get(0).get("MATERIALTYPE")); + bindMap.put("MaterialSpecName", queryForList.get(0).get("MATERIALSPECNAME")); + bindMap.put("PackingGrade", queryForList.get(0).get("PACKINGGRADE")); + bindMap.put("SubPackingQuantity",queryForList.get(0).get("MATERIALQUANTITY")); + bindMap.put("MaterialCreateQuantity", + queryForList.get(0).get("MATERIALQUANTITY")); + bindMap.put("MaterialQuantity", queryForList.get(0).get("MATERIALQUANTITY"));// 数量 + bindMap.put("PackingState", "Released"); + bindMap.put("OldPackingState", "Released"); + bindMap.put("stockState", "Created"); + bindMap.put("OldStockState", "Created"); + bindMap.put("truegg", queryForList.get(0).get("TRUEGG")); + bindMap.put("HoldState", "N"); + bindMap.put("AreaName", queryForList.get(0).get("AREANAME")); + bindMap.put("LocationName", locationName); + bindMap.put("charge",queryForList.get(0).get("CHARGE")); + bindMap.put("DurableName", durableName); + bindMap.put("MaterialProcessGroupName", + ""); + bindMap.put("LastEventTimeKey", + TimeStampUtil.getCurrentEventTimeKey()); + bindMap.put("receiveRequestName", SHIPRequestName); + bindMap.put("productOrder", SHIPRequestName); + bindMap.put("receiveRequestDetailName",SHIPRequestDetailName); + //如果queryForList.get(0).get("SHIPTIME")为null获取当前时间字符串"YYYY-MM-DD" + String makeDate = queryForList.get(0).get("SHIPTIME") == null ? TimeStampUtil.getCurrentTime("yyyy-MM-dd") : queryForList.get(0).get("SHIPTIME").toString(); + + + bindMap.put("MakeDate", makeDate); + + if(queryForList.get(0).get("EXPIRINGDATE") == null || queryForList.get(0).get("EXPIRINGDATE").toString().isEmpty()) { + bindMap.put("expiringDate", getExpridate( makeDate, queryForList.get(0).get("MATERIALSPECNAME").toString())); + }else { + bindMap.put("expiringDate", queryForList.get(0).get("EXPIRINGDATE").toString()); + } + + bindMap.put("SHIPTime", eventInfo.getEventTime()); + bindMap.put("SHIPUser", eventInfo.getEventUser()); + bindMap.put("ReceiveTime", eventInfo.getEventTime()); + bindMap.put("ReceiveUser", eventInfo.getEventUser()); + bindMap.put("ShipTime",queryForList.get(0).get("SHIPTIME")); + + bindMap.put("MJPC",queryForList.get(0).get("MJPC")); + bindMap.put("RETURNPC",queryForList.get(0).get("RETURNPC")); + + bindMap.put("ShipUser",queryForList.get(0).get("SHIPUSER")); + + // 如果是现场仓更新标签,需根据批次才能找到对应的原标签 + if("T".equals(receive_flag)) { + // 如果存在对应的原标签,MATERIALPACKINGNAME相等,组织 仓库 货位 用原标签,拥于后面过账 + if(xcqueryForList != null && xcqueryForList.size() > 0) { + erpFactory = xcqueryForList.get(0).get("ErpFactory") == null ? "" : xcqueryForList.get(0).get("ErpFactory").toString(); + erpLocation = xcqueryForList.get(0).get("ErpLocation") == null ? "" : xcqueryForList.get(0).get("ErpLocation").toString(); + locationName = xcqueryForList.get(0).get("LocationName") == null ? "" : xcqueryForList.get(0).get("LocationName").toString(); + } + } + + bindMap.put("ErpLocation", erpLocation); + bindMap.put("ErpFactory", erpFactory); + bindMap.put("receiveActNo", SHIPActNo); + bindMap.put("locationName", locationName); + bindMap.put("StockInType", "Return"); + bindMap.put("SDK_ID", queryForList.get(0).get("SDK_ID")); + bindMap.put("PHASE", queryForList.get(0).get("PHASE")); + bindMap.put("unit", queryForList.get(0).get("UNIT")); + bindMap.put("CAREER_ASSISTANCE", queryForList.get(0).get("CAREER_ASSISTANCE"));//业助信息 + bindMap.put("BUSINESS_UNIT", queryForList.get(0).get("BUSINESS_UNIT"));//业务 + bindMap.put("SALESPERSON", queryForList.get(0).get("SALESPERSON"));//事业部 + bindMap.put("CUSTOMNO", queryForList.get(0).get("CUSTOMNO"));//客户 + bindMap.put("remark", queryForList.get(0).get("REMARK"));//备注 + createInfo.setUserColumns(bindMap); + MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName,materialPackingName); + MaterialPackingServiceProxy.getMaterialPackingService().create( + eventInfo, createInfo); + + // 如果是现场仓更新标签,需根据批次才能找到对应的原标签 +// if("T".equals(receive_flag)) { + // 如果存在对应的原标签,MATERIALPACKINGNAME相等,就删除原标签 + if(xcqueryForList != null && xcqueryForList.size() > 0) { + String delsql = "DELETE FROM MATERIALPACKING m WHERE m.CHARGE = :CHARGE AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(delsql, xcHashMap); + } +// } + + } else { + SetEventInfo setEventInfo = new SetEventInfo(); + Map bindMap = new HashMap(); + String packingGrade = queryForList.get(0).get("PACKINGGRADE") == null ? "" : queryForList.get(0).get("PACKINGGRADE").toString(); + if (!"".equals(packingGrade)) { + bindMap.put("oqaResultState",GenericServiceProxy.getConstantMap().OQA_State_End); + bindMap.put("oqaResult",packingGrade); + bindMap.put("packingGrade", packingGrade); + } else { + bindMap.put("oqaResultState",GenericServiceProxy.getConstantMap().OQA_State_Pre); + } + bindMap.put("ReceiveTime", eventInfo.getEventTime()); + bindMap.put("ReceiveUser", eventInfo.getEventUser()); + bindMap.put("ErpLocation", erpLocation); + bindMap.put("ErpFactory", erpFactory); + bindMap.put("locationName", locationName); + bindMap.put("MaterialQuantity", queryForList.get(0).get("MATERIALQUANTITY"));// 数量 + bindMap.put("PackingState", "Released"); + bindMap.put("OldPackingState", "Released"); + bindMap.put("stockState", "Created"); + bindMap.put("SDK_ID", queryForList.get(0).get("SDK_ID")); + bindMap.put("PHASE", queryForList.get(0).get("PHASE")); + bindMap.put("unit", queryForList.get(0).get("UNIT")); + bindMap.put("MJPC",queryForList.get(0).get("MJPC")); + bindMap.put("RETURNPC",queryForList.get(0).get("RETURNPC")); + bindMap.put("receiveActNo", SHIPActNo); + bindMap.put("LastEventTimeKey",TimeStampUtil.getCurrentEventTimeKey()); + bindMap.put("receiveRequestName", SHIPRequestName); + bindMap.put("receiveRequestDetailName",SHIPRequestDetailName); + bindMap.put("CAREER_ASSISTANCE", queryForList.get(0).get("CAREER_ASSISTANCE"));//业助信息 + bindMap.put("BUSINESS_UNIT", queryForList.get(0).get("BUSINESS_UNIT"));//业务 + bindMap.put("SALESPERSON", queryForList.get(0).get("SALESPERSON"));//事业部 + bindMap.put("CUSTOMNO", queryForList.get(0).get("CUSTOMNO"));//客户 + bindMap.put("charge",palletName.split("\\|")[4]); + + setEventInfo.setUserColumns(bindMap); + MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialPackingName); + MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, eventInfo, setEventInfo); + } + + return true; + }