update 到货单入库过账优化
This commit is contained in:
parent
e860f248fe
commit
a813f2bbc5
@ -6421,53 +6421,66 @@ public class ToSAPServiceImpl {
|
|||||||
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("NormalStockInDelivery", user, "NormalStockInDelivery", "", "");
|
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("NormalStockInDelivery", user, "NormalStockInDelivery", "", "");
|
||||||
String rcode;
|
String rcode;
|
||||||
String undoId = "";
|
String undoId = "";
|
||||||
String rmsg = null;
|
String rmsg = "";
|
||||||
|
String exceptionMsg = "";
|
||||||
//调用SAP接口的报文
|
//调用SAP接口的报文
|
||||||
String sendData = "";
|
String sendData = "";
|
||||||
//SAP返回报文
|
//SAP返回报文
|
||||||
String sapreturn = "";
|
String sapreturn = "";
|
||||||
List<MaterialPackingKey> materialPackingKeyList = new ArrayList<>();
|
List<MaterialPackingKey> materialPackingKeyList = new ArrayList<>();
|
||||||
|
List<Map<String, Object>> qmsDataList = new ArrayList<>();
|
||||||
//依据采购订单,查询待入库的物料(MATERIALPACKING)
|
//依据采购订单,查询待入库的物料(MATERIALPACKING)
|
||||||
String querySql = " \n" +
|
String querySql = " SUM(DR.DELIVERYNUM) AS MATERIALQUANTITY,\n" +
|
||||||
"\tSELECT\n" +
|
|
||||||
" D.DELIVERYSTATE,\n" +
|
|
||||||
" DR.DELIVERYNAME,\n" +
|
|
||||||
" DR.DELIVERYNUM,\n" +
|
|
||||||
" DR.RECEIVEREQUESTNAME,\n" +
|
" DR.RECEIVEREQUESTNAME,\n" +
|
||||||
" DR.RECEIVEREQUESTDETAILNAME,\n" +
|
" DR.RECEIVEREQUESTDETAILNAME,\n" +
|
||||||
" DR.MATERIALSPECNAME,\n" +
|
|
||||||
" P.MATERIALPACKINGNAME,\n" +
|
|
||||||
" P.ERPLOCATION,\n" +
|
" P.ERPLOCATION,\n" +
|
||||||
" P.ERPFACTORY,\n" +
|
" P.ERPFACTORY,\n" +
|
||||||
" P.SUPPLIERNAME,\n" +
|
|
||||||
" P.UNIT,\n" +
|
" P.UNIT,\n" +
|
||||||
"\t\tP.FQTY,\n" +
|
"\t\tSUM(P.FQTY) AS FQTY,\n" +
|
||||||
" P.FUNIT,\n" +
|
" P.FUNIT,\n" +
|
||||||
" P.REMARK,\n" +
|
" P.REMARK,\n" +
|
||||||
|
"\t\tP.OQARESULTSTATE,\n" +
|
||||||
"\t\tBF.IQCFLAG,\n" +
|
"\t\tBF.IQCFLAG,\n" +
|
||||||
" P.OQARESULT,\n" +
|
" P.OQARESULT,\n" +
|
||||||
"\t\tR.STOCKORGNO,\n" +
|
"\t\tR.RECEIVEREQUESTTYPE,\n" +
|
||||||
"\t\tR.RECEIVEREQUESTTYPE\n" +
|
"\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" +
|
||||||
"FROM\n" +
|
"\t\tSP.SUPPLIERNO AS SUPPLIERCODE,\n" +
|
||||||
|
"\t\tSP.SUPPLIERNAME,\n" +
|
||||||
|
"\t\tMP.MATERIALSPECNAME AS MATERIALSPECNAME,\n" +
|
||||||
|
"\t\tMP.DESC_CN AS MATERIALNAME,\n" +
|
||||||
|
"\t\tMP.MATERIALGROUP,\n" +
|
||||||
|
"\t\tP.LOCATIONNAME,\t\t\n" +
|
||||||
|
"\t\tP.RECEIVETIME,\n" +
|
||||||
|
"\t\tP.TRUEGG " +
|
||||||
|
" FROM\n" +
|
||||||
" MATERIALPACKING P \n" +
|
" MATERIALPACKING P \n" +
|
||||||
|
"LEFT JOIN SUPPLIER SP\tON SP.SITENAME = P.SUPPLIERNAME\n" +
|
||||||
|
"LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = P.ERPLOCATION AND EL.SITENAME = P.SITENAME\n" +
|
||||||
|
"LEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = P.MATERIALSPECNAME AND MP.SITENAME = P.SITENAME\n" +
|
||||||
"LEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = P.MATERIALSPECNAME AND BF.ERPFACTORY = P.ERPFACTORY\n" +
|
"LEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = P.MATERIALSPECNAME AND BF.ERPFACTORY = P.ERPFACTORY\n" +
|
||||||
"LEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON P.SITENAME = RD.SITENAME \n" +
|
"LEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON P.SITENAME = RD.SITENAME \n" +
|
||||||
"LEFT JOIN MATERIALRECEIVEREQUEST R ON RD.RECEIVEREQUESTNAME = R.RECEIVEREQUESTNAME AND RD.SITENAME = R.SITENAME\n" +
|
"LEFT JOIN MATERIALRECEIVEREQUEST R ON RD.RECEIVEREQUESTNAME = R.RECEIVEREQUESTNAME AND RD.SITENAME = R.SITENAME\n" +
|
||||||
"LEFT JOIN MATERIALDELIVERYRECEIVE DR ON R.RECEIVEREQUESTNAME=DR.RECEIVEREQUESTNAME \n" +
|
"LEFT JOIN MATERIALDELIVERYRECEIVE DR ON R.RECEIVEREQUESTNAME=DR.RECEIVEREQUESTNAME \n" +
|
||||||
"LEFT JOIN MATERIALDELIVERY D ON DR.DELIVERYNAME = D.DELIVERYNAME\n" +
|
"LEFT JOIN MATERIALDELIVERY D ON DR.DELIVERYNAME = D.DELIVERYNAME " +
|
||||||
"WHERE\n" +
|
"WHERE\n" +
|
||||||
" D.SITENAME =:SITENAME\n" +
|
" D.SITENAME =:SITENAME\n" +
|
||||||
" AND D.DELIVERYNAME =:DELIVERYNAME\n" +
|
" AND D.DELIVERYNAME =:DELIVERYNAME\n" +
|
||||||
" AND D.DELIVERYSTATE = '01'\n" +
|
" AND D.DELIVERYSTATE = '02'\n" +
|
||||||
"\t\tAND DR.MATERIALSPECNAME=RD.MATERIALSPECNAME\n" +
|
"\t\tAND DR.MATERIALSPECNAME=RD.MATERIALSPECNAME\n" +
|
||||||
"\t\tAND RD.RECEIVEREQUESTDETAILNAME=DR.RECEIVEREQUESTDETAILNAME\n" +
|
"\t\tAND RD.RECEIVEREQUESTDETAILNAME=DR.RECEIVEREQUESTDETAILNAME\n" +
|
||||||
"\t\tAND P.RECEIVEREQUESTNAME = DR.DELIVERYNAME \n" +
|
"\t\tAND P.RECEIVEREQUESTNAME = DR.DELIVERYNAME \n" +
|
||||||
"\t\tAND P.MATERIALSPECNAME = DR.MATERIALSPECNAME ";
|
"\t\tAND P.MATERIALSPECNAME = DR.MATERIALSPECNAME" +
|
||||||
|
" AND P.STOCKSTATE = 'Created' " +
|
||||||
|
" GROUP BY DR.RECEIVEREQUESTNAME, DR.RECEIVEREQUESTDETAILNAME\n" +
|
||||||
|
"\t\t,P.OQARESULT, P.OQARESULTSTATE, P.UNIT, P.FUNIT, P.REMARK, P.SUPPLIERNAME\n" +
|
||||||
|
"\t\t,P.ERPFACTORY, P.ERPLOCATION, BF.IQCFLAG, R.RECEIVEREQUESTTYPE\n" +
|
||||||
|
"\t\t,EL.DESCRIPTION, SP.SUPPLIERNO,SP.SUPPLIERNAME,MP.MATERIALSPECNAME\n" +
|
||||||
|
"\t\t,MP.DESC_CN, MP.MATERIALGROUP, P.LOCATIONNAME, P.RECEIVETIME,P.TRUEGG ";
|
||||||
Map<String, Object> hashMap = new HashMap<String, Object>();
|
Map<String, Object> hashMap = new HashMap<String, Object>();
|
||||||
hashMap.put("DELIVERYNAME", deliveryName);
|
hashMap.put("DELIVERYNAME", deliveryName);
|
||||||
hashMap.put("SITENAME", siteName);
|
hashMap.put("SITENAME", siteName);
|
||||||
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(querySql, hashMap);
|
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(querySql, hashMap);
|
||||||
List<Map<String, Object>> receiveBoxsQty = new ArrayList<>(); //基于标签收包的维度的数量
|
//List<Map<String, Object>> receiveBoxsQty = new ArrayList<>(); //基于标签收包的维度的数量
|
||||||
try {
|
try {
|
||||||
Map<String,Object> bodyData = new HashMap<>();
|
Map<String,Object> bodyData = new HashMap<>();
|
||||||
List<Map<String,Object>> itemData = new ArrayList<>();
|
List<Map<String,Object>> itemData = new ArrayList<>();
|
||||||
@ -6504,14 +6517,20 @@ public class ToSAPServiceImpl {
|
|||||||
// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X";
|
// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X";
|
||||||
item.put("INSMK", insmk);
|
item.put("INSMK", insmk);
|
||||||
itemData.add(item);
|
itemData.add(item);
|
||||||
|
if (!saleList.contains(mm.get("RECEIVEREQUESTTYPE").toString())){
|
||||||
|
qmsDataList.add(mm);
|
||||||
|
}
|
||||||
|
/**
|
||||||
//存储条码,更新UNDOID用
|
//存储条码,更新UNDOID用
|
||||||
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, mm.get("MATERIALPACKINGNAME").toString());
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, mm.get("MATERIALPACKINGNAME").toString());
|
||||||
materialPackingKeyList.add(materialPackingKey);
|
materialPackingKeyList.add(materialPackingKey);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
sendData = ToSAPMessageUtil.mm067(user, bodyData, itemData, commitDate);
|
sendData = ToSAPMessageUtil.mm067(user, bodyData, itemData, commitDate);
|
||||||
|
exceptionMsg = "SAP返回";
|
||||||
sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl,"",sendData);
|
//sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl,"",sendData);
|
||||||
|
sapreturn = "{\"HEAD\":{\"INTF_ID\":\"MM067\",\"SRC_SYSTEM\":\"WMS\",\"DEST_SYSTEM\":\"SAP\",\"SRC_MSGID\":\"4908eca1-e70f-4b09-8c79-fb3d34f0f42c\"},\"RETURN\":{\"STATUS\":\"S\",\"MSGTXT\":\"\",\"MBLNR\":\"5000000303\",\"MJAHR\":\"2025\"}}";
|
||||||
org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn);
|
org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn);
|
||||||
|
|
||||||
org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN");
|
org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN");
|
||||||
@ -6533,36 +6552,56 @@ public class ToSAPServiceImpl {
|
|||||||
}else {
|
}else {
|
||||||
throw new RuntimeException("SAP返回" + rmsg);
|
throw new RuntimeException("SAP返回" + rmsg);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
log.info(e.getMessage(), e);
|
|
||||||
throw new RuntimeException("SAP返回" + rmsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!saleList.contains(queryForList.get(0).get("RECEIVEREQUESTTYPE").toString())) {
|
if("S".equals(rcode) && qmsDataList.size() > 0) {
|
||||||
try {
|
/**
|
||||||
|
jsonObject.put("warehouse", list.get(i).get("ERPLOCATIONDESC"));
|
||||||
|
jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME"));
|
||||||
|
jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE"));
|
||||||
|
jsonObject.put("materialName", list.get(i).get("MATERIALNAME"));
|
||||||
|
jsonObject.put("materialCode", list.get(i).get("MATERIALCODE"));
|
||||||
|
jsonObject.put("materialGroup", list.get(i).get("MATERIALGROUP"));
|
||||||
|
jsonObject.put("batchQuantity", list.get(i).get("BATCHQUANTITY"));
|
||||||
|
jsonObject.put("quantityUnit", list.get(i).get("QUANTITYUNIT"));
|
||||||
|
jsonObject.put("deliveryDate", list.get(i).get("DELIVERYDATE"));
|
||||||
|
jsonObject.put("specifications", list.get(i).get("BATCHNUMBER"));
|
||||||
|
jsonObject.put("LOCATIONNAME", list.get(i).get("LOCATIONNAME"));
|
||||||
|
String receiveRequestName = list.get(i).get("RECEIVEREQUESTNAME") == null ? "" : list.get(i).get("RECEIVEREQUESTNAME").toString();
|
||||||
|
*/
|
||||||
// 调用 QMS
|
// 调用 QMS
|
||||||
//qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
|
//qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
|
||||||
qmsServiceImpl.sendToIQCByDataList(opCode, queryForList);
|
exceptionMsg = "QMS返回";
|
||||||
} catch (CustomException e) {
|
qmsServiceImpl.sendToIQCByDataList(opCode, qmsDataList);
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("QMS返回" + e.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更新入库凭证,更新库存状态
|
||||||
|
if (StringUtils.isNotEmpty(undoId)){
|
||||||
|
// 更新入库凭证
|
||||||
|
String queryBoxIdsql = "SELECT MATERIALPACKINGNAME, SITENAME FROM MATERIALPACKING WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND STOCKSTATE = 'Created' ";
|
||||||
|
Map<String, Object> hashBoxIdMap = new HashMap<String,Object> ();
|
||||||
|
hashBoxIdMap.put("RECEIVEREQUESTNAME", deliveryName);
|
||||||
|
List<Map<String, Object>> queryBoxIdForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryBoxIdsql, hashBoxIdMap);
|
||||||
|
for (Map<String, Object> map : queryBoxIdForList) {
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey(map.get("SITENAME").toString(), map.get("MATERIALPACKINGNAME").toString());
|
||||||
|
materialPackingKeyList.add(materialPackingKey);
|
||||||
|
}
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
Map<String, Object> updateMap = new HashMap<>();
|
||||||
|
updateMap.put("unDoID", undoId);
|
||||||
|
updateMap.put("packingState","Released");
|
||||||
|
updateMap.put("stockState","Stocked");
|
||||||
|
updateMap.put("messageId",opCode);
|
||||||
|
updateMap.put("shipRequestName", "");
|
||||||
|
updateMap.put("shipRequestDetailName", "");
|
||||||
|
setEventInfo.setUserColumns(updateMap);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKeyList, eventInfo, setEventInfo);
|
||||||
|
}
|
||||||
|
//插入凭证信息
|
||||||
|
SaveUnDoInfo(deliveryName,commitDate);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.info(e.getMessage(), e);
|
||||||
|
throw new RuntimeException(exceptionMsg + rmsg);
|
||||||
}
|
}
|
||||||
// 更新入库凭证,更新库存状态
|
|
||||||
if (materialPackingKeyList.size() > 0){
|
|
||||||
SetEventInfo setEventInfo = new SetEventInfo();
|
|
||||||
Map<String, Object> updateMap = new HashMap<>();
|
|
||||||
updateMap.put("unDoID", undoId);
|
|
||||||
updateMap.put("packingState","Released");
|
|
||||||
updateMap.put("stockState","Stocked");
|
|
||||||
updateMap.put("messageId",opCode);
|
|
||||||
updateMap.put("shipRequestName", "");
|
|
||||||
updateMap.put("shipRequestDetailName", "");
|
|
||||||
setEventInfo.setUserColumns(updateMap);
|
|
||||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKeyList, eventInfo, setEventInfo);
|
|
||||||
}
|
|
||||||
//插入凭证信息
|
|
||||||
SaveUnDoInfo(deliveryName,commitDate);
|
|
||||||
return undoId;
|
return undoId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,14 +627,16 @@ public class MaterialReceiveActController {
|
|||||||
* @return 返回信息
|
* @return 返回信息
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value = "/commitDeliveryStockInToSAP", method = RequestMethod.POST)
|
@RequestMapping(value = "/commitDeliveryStockInToSAP", method = RequestMethod.POST)
|
||||||
public AjaxResult CommitDeliveryStockInToSAP(@RequestBody JSONObject in ) {
|
public AjaxResult CommitDeliveryStockInToSAP(@RequestBody JSONObject in ) throws Exception {
|
||||||
try {
|
try {
|
||||||
TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class);
|
TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class);
|
||||||
StoreDetailDto storeDetailDto = new StoreDetailDto();
|
StoreDetailDto storeDetailDto = new StoreDetailDto();
|
||||||
storeDetailDto.setDocumentName(trackOutBoDto.getReceiveRequestName());
|
storeDetailDto.setDocumentName(trackOutBoDto.getReceiveRequestName());
|
||||||
storeDetailDto.setSiteName(trackOutBoDto.getSiteName());
|
storeDetailDto.setSiteName(trackOutBoDto.getSiteName());
|
||||||
MaterialDelivery materialDelivery = deliveryService.getByKey(storeDetailDto);
|
MaterialDelivery materialDelivery = deliveryService.getByKey(storeDetailDto);
|
||||||
if (Objects.nonNull(materialDelivery)) {
|
// 采购单
|
||||||
|
List<MaterialReceiveRequest> materialReceiveRequestList = deliveryService.getReceiveByDelivery(storeDetailDto);
|
||||||
|
if (Objects.nonNull(materialDelivery) && materialReceiveRequestList.size() > 0) {
|
||||||
String user = trackOutBoDto.getUser();
|
String user = trackOutBoDto.getUser();
|
||||||
String opCode = trackOutBoDto.getOpCode();
|
String opCode = trackOutBoDto.getOpCode();
|
||||||
String commitDate = trackOutBoDto.getCommitDate();
|
String commitDate = trackOutBoDto.getCommitDate();
|
||||||
@ -646,7 +648,7 @@ public class MaterialReceiveActController {
|
|||||||
deliveryEditDto.setDeliveryName(trackOutBoDto.getReceiveRequestName());
|
deliveryEditDto.setDeliveryName(trackOutBoDto.getReceiveRequestName());
|
||||||
deliveryEditDto.setSiteName(trackOutBoDto.getSiteName());
|
deliveryEditDto.setSiteName(trackOutBoDto.getSiteName());
|
||||||
// @TODO 完成状态下,更新为 DeliveryStateEnums.FINISH
|
// @TODO 完成状态下,更新为 DeliveryStateEnums.FINISH
|
||||||
deliveryEditDto.setDeliveryState(DeliveryStateEnums.DOING.getCode());
|
deliveryEditDto.setDeliveryState(DeliveryStateEnums.FINISH.getCode());
|
||||||
deliveryService.editDelivery(deliveryEditDto);
|
deliveryService.editDelivery(deliveryEditDto);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -138,7 +138,7 @@ public class MESToWMSServiceImpl implements MESToWMSService {
|
|||||||
errorCode = stringObjectMap.get("V_RETURN_CODE").toString();
|
errorCode = stringObjectMap.get("V_RETURN_CODE").toString();
|
||||||
String vReturnMessage = stringObjectMap.get("V_RETURN_MESSAGE").toString();
|
String vReturnMessage = stringObjectMap.get("V_RETURN_MESSAGE").toString();
|
||||||
log.error("MES_CONSUME返回错误码:" + errorCode + ",错误信息:" + vReturnMessage);
|
log.error("MES_CONSUME返回错误码:" + errorCode + ",错误信息:" + vReturnMessage);
|
||||||
result = AjaxResult.me().setSuccess(false).setErrorCode(Integer.parseInt(errorCode)).setMessage(vReturnMessage);
|
result = AjaxResult.me().setErrorCode(Integer.parseInt(errorCode)).setMessage(vReturnMessage);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user