update MES物料冲销接口优化,解决无法冲销问题
This commit is contained in:
parent
42423b73f6
commit
f23f49b8b0
@ -70,11 +70,11 @@ public class MESToWMSController {
|
||||
String userId = in.getJSONObject(0).getString("userId");
|
||||
String payMentDate = in.getJSONObject(0).get("payMentDate") == null ? "" : in.getJSONObject(0).get("payMentDate").toString(); //过账日期
|
||||
if (StringUtils.isBlank(payMentDate)) {
|
||||
return AjaxResult.me().setSuccess(false).setErrorCode(500).setMessage("payMentDate过账日期不能为空");
|
||||
return AjaxResult.me().setSuccess(false).setErrorCode(500).setMessage("冲销失败:payMentDate过账日期不能为空");
|
||||
}
|
||||
// return mesToWMSService.cancelShipByMES(in);
|
||||
try {
|
||||
return mesToWMSService.sapcprkUndo(undoId, userId, payMentDate);
|
||||
return mesToWMSService.materialConsumeRequestSapcprkUndo(undoId, userId, payMentDate);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
@ -147,9 +147,7 @@ public class MESToWMSServiceImpl implements MESToWMSService {
|
||||
}
|
||||
// 将工单的物料消耗数据传给SAP
|
||||
String undoId = toSAPService.mesMaterialConsume("MES",payMentDate, eventInfo);
|
||||
Map<String, Object> undoidMap = new HashMap<>();
|
||||
undoidMap.put("undoid", undoId);
|
||||
result = AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("执行成功").setResultObj(undoidMap);
|
||||
result = AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("执行成功").setResultObj(undoId);
|
||||
loginfo.setResultCode("0");
|
||||
loginfo.setReturnMsg(JSONObject.toJSONString(result));
|
||||
// 消息保存日志,erp推送wms的数据写入表BS_ERPMESSAGELOG中
|
||||
@ -757,4 +755,126 @@ public class MESToWMSServiceImpl implements MESToWMSService {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 物料消耗接口-冲销
|
||||
* @param undoId
|
||||
* @param user
|
||||
@param payMentDate
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public AjaxResult materialConsumeRequestSapcprkUndo(String undoId, String user, String payMentDate) throws Exception {
|
||||
|
||||
AjaxResult result = new AjaxResult();
|
||||
List<MaterialPackingKey> materialPackingKeyList = new ArrayList<>();
|
||||
EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("MakeUndo", user, "MakeUndo");
|
||||
String condition="SELECT MATERIALPACKINGNAME FROM MATERIALPACKING WHERE UNDOID = :UNDOID ";
|
||||
// String[] bindSet={undoId};
|
||||
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||
hashMap.put("UNDOID", undoId);
|
||||
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
||||
List<Map<String, Object>> MPlIST = IDMFrameServiceProxy.getSqlTemplate().queryForList(condition, hashMap);
|
||||
SetEventInfo setEventInfo = new SetEventInfo();
|
||||
setEventInfo.setUserColumns(hashMap);
|
||||
RemoveInfo removeInfo = new RemoveInfo();
|
||||
for (Map<String, Object> MP : MPlIST) {
|
||||
String MATERIALPACKINGNAME = MP.get("MATERIALPACKINGNAME").toString();
|
||||
hashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
|
||||
String queryBS_MATERIALPACKINGUNDOINFO = "SELECT MATERIALPACKINGNAME, MATERIALQUANTITY FROM BS_MATERIALPACKINGUNDOINFO WHERE UNDOID =:UNDOID AND MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND LASTEVENTNAME =:LASTEVENTNAME ";
|
||||
hashMap.put("LASTEVENTNAME", "MES消耗");
|
||||
List<Map<String, Object>> bsMaterialPackingUndoInfo = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryBS_MATERIALPACKINGUNDOINFO, hashMap);
|
||||
if (bsMaterialPackingUndoInfo.size() > 0){
|
||||
if (null != bsMaterialPackingUndoInfo.get(0).get("MATERIALQUANTITY")){
|
||||
String materialQuantity = bsMaterialPackingUndoInfo.get(0).get("MATERIALQUANTITY").toString();
|
||||
String updateMaterialPackingQtySql = " UPDATE MATERIALPACKING SET MATERIALQUANTITY = MATERIALQUANTITY + :QTY WHERE MATERIALPACKINGNAME =:MATERIALPACKINGNAME ";
|
||||
Map<String, Object> updateMaterialPackingQtyMap = new HashMap<String, Object> ();
|
||||
updateMaterialPackingQtyMap.put("MATERIALPACKINGNAME",MATERIALPACKINGNAME);
|
||||
updateMaterialPackingQtyMap.put("QTY",materialQuantity);
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingQtySql,updateMaterialPackingQtyMap);
|
||||
|
||||
//记录后续要更新凭证的条件和更新的信息
|
||||
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK", MATERIALPACKINGNAME);
|
||||
materialPackingKeyList.add(materialPackingKey);
|
||||
}else {
|
||||
throw new Exception("冲销失败,匹配到物料凭证:" + undoId + "的消耗记录中数量异常无法冲销");
|
||||
}
|
||||
}else {
|
||||
throw new Exception("冲销失败,没有匹配该物料凭证:" + undoId + "的消耗记录无法冲销");
|
||||
}
|
||||
|
||||
/*
|
||||
//根据当前的数据跟新完工报告且删除入库表的数据
|
||||
String sql = "SELECT M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.QTY FROM MATERIALPACKINGSUB M WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" +
|
||||
"UNION \r\n" +
|
||||
"SELECT M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.QTY FROM MATERIALPACKINGSUBHISTORY M WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||
|
||||
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
|
||||
for (int i = 0; i < queryForList.size(); i++) {
|
||||
String dh = queryForList.get(i).get("RECEIVEREQUESTNAME").toString();
|
||||
hashMap.put("RECEIVEREQUESTNAME", dh);
|
||||
String hh = queryForList.get(i).get("RECEIVEREQUESTDETAILNAME").toString();
|
||||
hashMap.put("RECEIVEREQUESTDETAILNAME", hh);
|
||||
// String sl = queryForList.get(i).get("QTY").toString();
|
||||
String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T \r\n" +
|
||||
"SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - ( \r\n" +
|
||||
" SELECT NVL(SUM(M.QTY),0) \r\n" +
|
||||
" FROM MATERIALPACKINGSUB M \r\n" +
|
||||
" WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME \r\n" +
|
||||
" AND M.RECEIVEREQUESTNAME = T.RECEIVEREQUESTNAME \r\n" +
|
||||
" AND M.RECEIVEREQUESTDETAILNAME = T.RECEIVEREQUESTDETAILNAME \r\n" +
|
||||
") \r\n" +
|
||||
"WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME \r\n" +
|
||||
" AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME";
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap);
|
||||
|
||||
|
||||
String updateSql2 = "UPDATE MATERIALRECEIVEREQUESTDETAIL T \r\n" +
|
||||
"SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - ( \r\n" +
|
||||
" SELECT NVL(SUM(M.QTY),0) \r\n" +
|
||||
" FROM MATERIALPACKINGSUBHISTORY M \r\n" +
|
||||
" WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME \r\n" +
|
||||
" AND M.RECEIVEREQUESTNAME = T.RECEIVEREQUESTNAME \r\n" +
|
||||
" AND M.RECEIVEREQUESTDETAILNAME = T.RECEIVEREQUESTDETAILNAME \r\n" +
|
||||
") \r\n" +
|
||||
"WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME \r\n" +
|
||||
" AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME";
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(updateSql2, hashMap);
|
||||
|
||||
String deleteSql = " DELETE FROM MATERIALPACKINGSUB T WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND "
|
||||
+ "T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME AND T.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
|
||||
|
||||
String MESsQL = " UPDATE BS_MES_SHIPPED T SET T.RECEIVE_FLAG = 'N' WHERE T.LOTNAME = :MATERIALPACKINGNAME ";
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(MESsQL, hashMap);
|
||||
}
|
||||
*/
|
||||
|
||||
String MESsQL = " DELETE FROM BS_MES_SHIPPED T WHERE T.LOTNAME = :MATERIALPACKINGNAME ";
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(MESsQL, hashMap);
|
||||
|
||||
//MaterialPackingServiceProxy.getMaterialPackingService().remove(new MaterialPackingKey("SDK", MATERIALPACKINGNAME), makeEventInfo, removeInfo);
|
||||
}
|
||||
|
||||
String sql = "UPDATE IF_ERPUNDO T SET T.FLAG = 'Y' WHERE T.UNDOID = :UNDOID ";
|
||||
Map<String, Object> hashMap2 = new HashMap<String, Object> ();
|
||||
hashMap2.put("UNDOID", undoId);
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(sql, hashMap2);
|
||||
String billCode = toSAPService.cancelShipInter(undoId, user, payMentDate);
|
||||
if (billCode == null) {
|
||||
throw new GlobalException("报送SAP失败,请联系IT处理!");
|
||||
}
|
||||
|
||||
//将SAP返回的凭证更新到BOX信息中
|
||||
if (!materialPackingKeyList.isEmpty()){
|
||||
EventInfo eventInfo = new EventInfoUtil ().makeEventInfo("MES冲销", user, "MES冲销");
|
||||
Map<String, Object> updateUndoIdMap = new HashMap<String, Object> ();
|
||||
SetEventInfo updateUndoIdSetEventInfo = new SetEventInfo();
|
||||
updateUndoIdMap.put("unDoID", billCode);
|
||||
updateUndoIdSetEventInfo.setUserColumns(updateUndoIdMap);
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKeyList, eventInfo, updateUndoIdSetEventInfo);
|
||||
}
|
||||
result = AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("冲销成功").setResultObj(billCode);
|
||||
return result;
|
||||
}
|
||||
}
|
@ -41,4 +41,7 @@ public interface MESToWMSService {
|
||||
* @return
|
||||
*/
|
||||
AjaxResult workOrder_Request(JSONArray in);
|
||||
|
||||
@Transactional
|
||||
AjaxResult materialConsumeRequestSapcprkUndo(String undoId, String user, String payMentDate) throws Exception;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user