入库库存状态改为在库

This commit is contained in:
王帅 2025-05-26 09:05:43 +08:00
parent 497b954355
commit b5d1c27ae5
2 changed files with 92 additions and 1 deletions

View File

@ -91,7 +91,7 @@ public class NoInvoiceManagerServiceImpl {
commitDate,opCode,costName,lifnr);
SDKMaterialPackingServiceImpl.updateUndoIdInByList(list, undoid, makeEventInfo,opCode);
//更新库存状态
commonUtils.SaveUnDoInfo_ForSap(strings,undoid,makeEventInfo);
commonUtils.SaveUnDoInfo_ForSap_qtr(strings,undoid,makeEventInfo);
}

View File

@ -685,6 +685,97 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
}
}
/**
* 保存undo信息
* 该方法用于更新和插入与物料包装相关的undo信息根据提供的参数执行不同的数据库操作
*
* @param list 包含物料包装名称的列表
* @param undoid undo的标识符用于区分不同的undo操作
* @param makeEventInfo 包含事件信息的对象用于更新物料包装的最后事件信息
*/
public void SaveUnDoInfo_ForSap_qtr(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 = 'Stocked'";
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,PREERPLOCATION,PRELOCATIONNAME,"
+ "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, PREERPLOCATION,PRELOCATIONNAME,"
+ "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", "Stocked");
SetEventInfo setEventInfo = new SetEventInfo();
setEventInfo.setUserColumns(hashMap);
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo);
}
}
}
public void SaveSplitUnDoInfo_ForSap(List<String> list, String undoid, EventInfo makeEventInfo) {