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 c2e3622..c18e6b3 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 @@ -334,6 +334,67 @@ public class ToSAPServiceImpl { } return undoId; } + + public String FGStockIn2(String RECEIVEACTNO, String user) throws Exception { + StringBuffer sql = new StringBuffer(); + sql.append(SystemPropHelper.CR) + .append("SELECT m.MATERIALSPECNAME ,").append(SystemPropHelper.CR) + .append(" m.PRODUCTORDER ,").append(SystemPropHelper.CR) + .append(" m.PACKINGGRADE ,").append(SystemPropHelper.CR) + .append(" m.ERPFACTORY ,").append(SystemPropHelper.CR) + .append(" m.ERPLOCATION ,").append(SystemPropHelper.CR) + .append(" m.UNIT ,").append(SystemPropHelper.CR) + .append(" m.PACKINGGRADE,").append(SystemPropHelper.CR) + .append(" m.MATERIALSPECTYPE,").append(SystemPropHelper.CR) + .append(" sum(m.MATERIALQUANTITY ) MATERIALQUANTITY ").append(SystemPropHelper.CR) + .append(" FROM MATERIALPACKING m ").append(SystemPropHelper.CR) + .append("LEFT JOIN BS_MES_SHIPPED bms ON m.materialpackingname = bms.lotname ").append(SystemPropHelper.CR) + .append(" WHERE bms.RECEIVE_FLAG <> 'Y' ").append(SystemPropHelper.CR) + .append(" AND m.STOCKSTATE = 'Created' ").append(SystemPropHelper.CR) + .append(" AND m.RECEIVEACTNO = :RECEIVEACTNO ").append(SystemPropHelper.CR) + .append("GROUP BY m.MATERIALSPECNAME ,m.PRODUCTORDER ,m.PACKINGGRADE ,m.ERPFACTORY ,m.ERPLOCATION ,m.UNIT ,").append(SystemPropHelper.CR) + .append(" m.PACKINGGRADE,m.MATERIALSPECTYPE "); + Map hashMap = new HashMap(); + hashMap.put("RECEIVEACTNO", RECEIVEACTNO); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); + String makeFGStockIn = makeFGStockIn(queryForList, user, RECEIVEACTNO); + String sapreturn = ""; + String rcode = ""; + String rmsg = ""; + String undoId = ""; + try { + sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl, "", + makeFGStockIn); + 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();//将物料凭证号与凭证年度拼在一起 + } + } catch (Exception e) { + log.error("WMS请求SAP异常:" + e.getMessage(), e); + throw new RuntimeException("WMS请求SAP异常:" + rmsg); + } finally { + // 将消息记录log表 + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(user); + erplog.setServerName("WmsToErp"); + erplog.setEventName("FGStockIn"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(RECEIVEACTNO); + erplog.setSendMsg2(makeFGStockIn); + erplog.setSendMsg(makeFGStockIn); + erplog.setReturnMsg2(sapreturn); + erplog.setResultCode(rcode); + MessageLogUtil.writeMessageLog(erplog); + } + if (!"S".equals(rcode)) { + throw new RuntimeException("SAP返回" + rmsg); + } + return undoId; + } //取消成品入库接口。zd.2024.8.29 public String cancelFGStockIn(List boxList, String user,String siteName) throws Exception { 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 51c6918..b67b8b5 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 @@ -158,7 +158,7 @@ public class ProductIntoServiceImpl implements FGStockInService { bindMap.put("LOTNAME",materialPackingName); List> list2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql2, bindMap); if(list2.size() < 1) { - throw new GlobalException( materialPackingName + "生产未完成入库,请联系IT处理!"); + throw new GlobalException( materialPackingName + "生产未完成入库,请联系生产确认!"); } String phase = (list2.get(0).get("PHASE") == null || "".equals(list2.get(0).get("PHASE"))) ? "" : list2.get(0).get("PHASE").toString(); String sdk_id = (list2.get(0).get("SDK_ID") == null || "~".equals(list2.get(0).get("SDK_ID"))) ? "" : list2.get(0).get("SDK_ID").toString(); @@ -194,7 +194,7 @@ public class ProductIntoServiceImpl implements FGStockInService { bindMap.put("SDK_ID",sdk_id); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3.toString(), bindMap); if (queryForList == null || queryForList.size() < 1) { - throw new RuntimeException(materialPackingName.split("\\|")[0] + materialPackingName.split("\\|")[4] + "生产报告未完成,请联系IT处理!"); + throw new RuntimeException(materialPackingName.split("\\|")[0] + materialPackingName.split("\\|")[4] + "生产报告未完成,请联系生产确认!"); } EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("createfgBoxInfo", user, "createfgBoxInfo"); //IDMFrameServiceProxy.getTransactionManager().beginTransaction(); @@ -293,7 +293,7 @@ public class ProductIntoServiceImpl implements FGStockInService { sql.append(" T.PACKINGGRADE , "); sql.append(" T.SHIPTIME , "); sql.append(" M3.MATERIALTYPE , "); - sql.append(" T.PHASE,T.CAREER_ASSISTANCE,T.DURABLETYPE ,T.BUSINESS_UNIT,T.SALESPERSON,T.MJPC ,T.TRUEGG,T.CHARGE,T.MAKEDATE, T.CUSTOMERNO ," + 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 ," + "T.LK_DURABLENAME,T.LK_AREANAME,T.LK_PRODUCTLINE,T.LK_WIDTH ,T.LK_DEVIATION,T.LK_WEIGHT,T.LK_DIAMETER,T.LK_SHELFNAME "); sql.append(" FROM "); sql.append(" BS_MES_SHIPPED T "); @@ -428,7 +428,7 @@ public class ProductIntoServiceImpl implements FGStockInService { bindMap.put("productOrder", receiveRequestName); bindMap.put("ReceiveRequestDetailName",receiveRequestDetailName); bindMap.put("MakeDate", queryForList.get(0).get("MAKEDATE")); - bindMap.put("expiringDate", getExpridate(queryForList.get(0).get("MAKEDATE").toString(), queryForList.get(0).get("MATERIALSPECNAME").toString())); + bindMap.put("expiringDate", getExpridate(queryForList.get(0).get("MAKEDATE") == null ? "" : queryForList.get(0).get("MAKEDATE").toString(), queryForList.get(0).get("MATERIALSPECNAME").toString())); bindMap.put("ReceiveTime", eventInfo.getEventTime()); bindMap.put("ReceiveUser", eventInfo.getEventUser()); bindMap.put("ShipTime",queryForList.get(0).get("SHIPTIME")); @@ -445,6 +445,7 @@ public class ProductIntoServiceImpl implements FGStockInService { bindMap.put("BUSINESS_UNIT", queryForList.get(0).get("BUSINESS_UNIT"));//业务 bindMap.put("SALESPERSON", queryForList.get(0).get("SALESPERSON"));//事业部 bindMap.put("MJPC", queryForList.get(0).get("MJPC"));//母卷批次 + bindMap.put("remark", queryForList.get(0).get("REMARK"));//备注 if("Y".equals(is_oven)) { bindMap.put("MATURATIONINTIME", eventInfo.getEventTime());//熟化入库时间 } @@ -685,26 +686,59 @@ public class ProductIntoServiceImpl implements FGStockInService { List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); if (queryForList != null && queryForList.size() > 0) { - return queryForList.get(0).get("EXP").toString(); + return queryForList.get(0).get("EXP") == null ? "" : queryForList.get(0).get("EXP").toString(); } return ""; } public boolean fgStockIn (String RECEIVEACTNO, String eventUser) throws Exception { //根据抬头文本获取批次集合 - List boxList = new ArrayList(); - String sql = "SELECT * FROM MATERIALPACKING WHERE RECEIVEACTNO = :RECEIVEACTNO"; +// List boxList = new ArrayList(); +// String sql = "SELECT * FROM MATERIALPACKING WHERE RECEIVEACTNO = :RECEIVEACTNO"; +// Map hashMap = new HashMap (); +// hashMap.put("RECEIVEACTNO", RECEIVEACTNO); +// List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); +// for (Map map : queryForList) { +// MaterialPackingKey materialPackingKey = new MaterialPackingKey(); +// materialPackingKey.setMaterialPackingName(map.get("MATERIALPACKINGNAME").toString()); +// materialPackingKey.setSiteName(map.get("SITENAME").toString()); +// MaterialPacking materialPacking = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(materialPackingKey); +// boxList.add(materialPacking); +// } +// fgStockInNew(boxList, eventUser, RECEIVEACTNO, "", ""); + + + String billCode = toSAPService.FGStockIn2(RECEIVEACTNO, eventUser); + if (billCode == null) { + throw new GlobalException("报送ERP失败,请联系IT处理!"); + } + EventInfo makeEventInfo = EventInfoUtil.makeEventInfo("FGStockIn", eventUser, "FGStockIn", "", ""); + //更新抬头文本状态和Box状态 + String sql = "SELECT M.SITENAME ,M.MATERIALPACKINGNAME FROM MATERIALPACKING M WHERE M.RECEIVEACTNO = :RECEIVEACTNO"; Map hashMap = new HashMap (); hashMap.put("RECEIVEACTNO", RECEIVEACTNO); - List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); for (Map map : queryForList) { - MaterialPackingKey materialPackingKey = new MaterialPackingKey(); - materialPackingKey.setMaterialPackingName(map.get("MATERIALPACKINGNAME").toString()); - materialPackingKey.setSiteName(map.get("SITENAME").toString()); - MaterialPacking materialPacking = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(materialPackingKey); - boxList.add(materialPacking); + MaterialPackingKey materialPackingKey = new MaterialPackingKey(map.get("SITENAME").toString(),map.get("MATERIALPACKINGNAME").toString()); + SetEventInfo setEventInfo = new SetEventInfo(); + Map bindMap = new HashMap(); + bindMap.put("unDoID", billCode); + bindMap.put("StockState", "Stocked"); + setEventInfo.setUserColumns(bindMap); + MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo); + + String sql2 = "UPDATE BS_MES_SHIPPED T SET T.RECEIVE_FLAG = 'Y', T.RECEIVE_TIME = SYSDATE WHERE T.LOTNAME = :LOTNAME"; + Map hashMap2 = new HashMap (); + hashMap2.put("LOTNAME", map.get("MATERIALPACKINGNAME").toString()); + IDMFrameServiceProxy.getSqlTemplate().update(sql2, hashMap2); + + + String sql3 = "UPDATE MATERIALRECEIVEACT SET RECEIVEACTSTATE = 'Received' WHERE RECEIVEACTNO = :RECEIVEACTNO"; + IDMFrameServiceProxy.getSqlTemplate().update(sql3, hashMap); + } - fgStockInNew(boxList, eventUser, RECEIVEACTNO, "", ""); + String commitDate=TimeStampUtil.getCurrentTime("yyyy-MM-dd"); + SaveUnDoInfo( billCode, commitDate); //更新MES标识 return true; } 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 1e96500..d0c1387 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 @@ -329,7 +329,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { sql.append(" M4.EXPIRINGDATE , "); sql.append(" NVL(M4.MAKEDATE ,T.MAKEDATE ) SHIPTIME , "); sql.append(" M3.MATERIALTYPE , "); - sql.append(" T.PHASE, T.RETURNPC,T.MJPC "); + 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 "); @@ -431,6 +431,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { 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(