diff --git a/zi-wms-generic/src/main/java/com/cim/idm/wmsextend/generic/master/ConstantMap.java b/zi-wms-generic/src/main/java/com/cim/idm/wmsextend/generic/master/ConstantMap.java index 877c032..b53b606 100644 --- a/zi-wms-generic/src/main/java/com/cim/idm/wmsextend/generic/master/ConstantMap.java +++ b/zi-wms-generic/src/main/java/com/cim/idm/wmsextend/generic/master/ConstantMap.java @@ -343,7 +343,7 @@ public class ConstantMap extends com.cim.idm.wmspackage.generic.master.ConstantM public String STOCKSTATE_STOCKED = "Stocked"; public String STOCKSTATE_STOCKOUT = "StockOut"; public String STOCKSTATE_RELEASED = "Released"; - + public String STOCKSTATE_STOCKPENDING = "StockPending"; private Map constantDefsMap = new HashMap(); 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 8f109e0..ce49b32 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 @@ -2118,7 +2118,7 @@ public class ToSAPServiceImpl { " WHERE \r\n" + " T.SHIPREQUESTNAME = :SHIPREQUESTNAME\r\n" + " AND T.SITENAME = :SITENAME\r\n" + - " AND T.STOCKSTATE = 'Stocked'\r\n" + + " AND T.STOCKSTATE = 'StockPending'\r\n" + " AND T.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" + " GROUP BY\r\n" + " t.MATERIALSPECNAME,\r\n" + diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java index 121e1c9..c202f82 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java @@ -23,6 +23,7 @@ import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.CodeGenerator; import com.cim.idm.utils.CommonUtils; import com.cim.idm.utils.EventInfoUtil; +import com.cim.idm.wmsextend.generic.GenericServiceProxy; import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; @@ -3159,6 +3160,14 @@ public class InvoiceServiceImpl implements InvoiceService { */ //抛送MES数据 untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList); + //更新BOX状态 + EventInfo mesEventInfo = eventInfoUtil.makeEventInfo("CompletedShipRequestMES", eventUser, "CompletedShipRequestMES"); + SetEventInfo setEventInfo = new SetEventInfo(); + Map hashMapPack = new HashMap (); + hashMapPack.put("stockState", GenericServiceProxy.getConstantMap().STOCKSTATE_STOCKPENDING); + hashMapPack.put("oldStockState", GenericServiceProxy.getConstantMap().STOCKSTATE_STOCKED); + setEventInfo.setUserColumns(hashMapPack); + MaterialPackingServiceProxy.getMaterialPackingService().setEvent(arrayList, mesEventInfo, setEventInfo); } else { 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 e55e030..29fb21c 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 @@ -181,7 +181,7 @@ public class MESToWMSServiceImpl implements MESToWMSService { String billCode = new ToSAPServiceImpl().ProductionStockOut_NEW(shipRequestName, "SDK", "MES", boxIdList); EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("CompleteShipRequest", "MES", "CompleteShipRequest:MES Receive"); - new CommonUtils().SaveUnDoInfo_ForSap(boxIdList, billCode, makeEventInfo); + new CommonUtils().SaveUnDoInfoByStockPending(boxIdList, billCode, makeEventInfo); result = AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("执行成功"); loginfo.setResultCode("S"); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/utils/CommonUtils.java b/zi-wms-pda/src/main/java/com/cim/idm/utils/CommonUtils.java index f841215..50ff765 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/utils/CommonUtils.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/utils/CommonUtils.java @@ -721,6 +721,93 @@ public void SaveUnDoInfo_ForSap(List list, String undoid, EventInfo mak } } + /** + * 更新BOX信息并插入UNDOINFO + * @param list 标签ID + * @param undoid 物料凭证 + * @param makeEventInfo 事件信息 + */ + public void SaveUnDoInfoByStockPending(List list, String undoid, EventInfo makeEventInfo) { - + // 更新事件名 + // 此SQL语句用于更新物料包装的最后事件名称、评论和时间 + String sqlu="UPDATE MATERIALPACKING m SET m.LASTEVENTNAME=:LASTEVENTNAME,m.LASTEVENTCOMMENT =:LASTEVENTCOMMENT,m.LASTEVENTTIME =SYSDATE \r\n" + + " WHERE m.SITENAME =:SITENAME AND m.MATERIALPACKINGNAME in (:BOXLIST)"; + Map bpu = new HashMap (); + bpu.put("LASTEVENTNAME", makeEventInfo.getEventName()); + bpu.put("LASTEVENTCOMMENT", makeEventInfo.getEventComment()); + bpu.put("SITENAME", "SDK"); + bpu.put("BOXLIST", list); + IDMFrameServiceProxy.getSqlTemplate().update(sqlu, bpu); + + // 销售交货单不返回凭证 + // 如果undoid不等于"S",则执行更新和插入操作,以记录undo信息 + if(!StringUtils.equals("S", undoid)) + { + // 更新undo信息 + // 此SQL语句用于更新物料包装的undoid,仅当库存状态为'Stocked'时 + String updateUndoInfo = "UPDATE MATERIALPACKING T SET T.unDoID = :unDoID WHERE T.MATERIALPACKINGNAME in (:MATERIALPACKINGNAME) " + + " AND STOCKSTATE = 'StockPending'"; + + Map map = new HashMap (); + map.put("MATERIALPACKINGNAME", list); + map.put("unDoID", undoid); + IDMFrameServiceProxy.getSqlTemplate().update(updateUndoInfo, map); + + + // 插入undo物料包装信息 + // 此SQL语句用于插入新的记录到BS_MATERIALPACKINGUNDOINFO表中,记录详细的undo信息 + String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE," + + "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE," + + "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY," + + "MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME," + + "DURABLENAME, MATERIALPROCESSGROUPNAME, LASTEVENTNAME, LASTEVENTTIMEKEY, LASTEVENTTIME, LASTEVENTUSER," + + "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME," + + "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME," + + "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG)" + + "select unDoID,'' as preundoid,UNDODETAILNAME,'Created' as undoidstate,:UNDOIDDATE AS UNDOIDDATE," // + + "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE," + + "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY," + + "DECODE(MATERIALQUANTITY2,0,MATERIALQUANTITY,MATERIALQUANTITY2) MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME," + + "DURABLENAME, MATERIALPROCESSGROUPNAME, LASTEVENTNAME, LASTEVENTTIMEKEY, LASTEVENTTIME, LASTEVENTUSER," + + "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME," + + "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME," + + "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG" + + " from MATERIALPACKING " + + " where unDoID=:UNDOID"; + + Map bindMap_insert = new HashMap(); + bindMap_insert.put("UNDOIDDATE", ""); + bindMap_insert.put("UNDOID", undoid); + IDMFrameServiceProxy.getSqlTemplate() + .update(insertUnDOMaterialPackingInfo, bindMap_insert); + } + // 更新Box状态 + // 根据物料数量和包装数量,更新物料包装的状态和相关属性 + for (String s : list) { + MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",s); + com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(materialPackingKey); + double materialQuantity = selectByKey.getMaterialQuantity(); + double materialQuantity2 = selectByKey.getMaterialQuantity2(); + BigDecimal fmaterialQuantity = new BigDecimal(materialQuantity); + BigDecimal fmaterialQuantity2 = new BigDecimal(materialQuantity2); + if (fmaterialQuantity.compareTo(fmaterialQuantity2) > 0 && fmaterialQuantity2.compareTo(BigDecimal.ZERO) != 0) { + Map hashMap = new HashMap (); + hashMap.put("materialQuantity", fmaterialQuantity.subtract(fmaterialQuantity2)); + hashMap.put("materialQuantity2", 0); + hashMap.put("shipRequestName", ""); + hashMap.put("shipRequestDetailName", ""); + SetEventInfo setEventInfo = new SetEventInfo(); + setEventInfo.setUserColumns(hashMap); + MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo); + } else { + Map hashMap = new HashMap (); + hashMap.put("stockState", "StockOut"); + SetEventInfo setEventInfo = new SetEventInfo(); + setEventInfo.setUserColumns(hashMap); + MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo); + } + } + + } }