update 备货出库,点击出库按钮,需要二次确认,更新标签状态为StockPending。

This commit is contained in:
18110972313 2025-05-13 11:07:35 +08:00
parent ff6484dcae
commit e8e1635248
5 changed files with 100 additions and 4 deletions

View File

@ -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<String, String> constantDefsMap = new HashMap<String, String>();

View File

@ -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" +

View File

@ -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<String, Object> hashMapPack = new HashMap<String,Object> ();
hashMapPack.put("stockState", GenericServiceProxy.getConstantMap().STOCKSTATE_STOCKPENDING);
hashMapPack.put("oldStockState", GenericServiceProxy.getConstantMap().STOCKSTATE_STOCKED);
setEventInfo.setUserColumns(hashMapPack);
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(arrayList, mesEventInfo, setEventInfo);
}
else
{

View File

@ -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");

View File

@ -721,6 +721,93 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
}
}
/**
* 更新BOX信息并插入UNDOINFO
* @param list 标签ID
* @param undoid 物料凭证
* @param makeEventInfo 事件信息
*/
public void SaveUnDoInfoByStockPending(List<String> 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<String,Object> bpu = new HashMap<String,Object> ();
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<String,Object> map = new HashMap<String,Object> ();
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<String, Object> bindMap_insert = new HashMap<String, Object>();
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<String, Object> hashMap = new HashMap<String,Object> ();
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<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("stockState", "StockOut");
SetEventInfo setEventInfo = new SetEventInfo();
setEventInfo.setUserColumns(hashMap);
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo);
}
}
}
}