From 5e080ab0d724b0de2f596d85a34492cc4ba1111f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E9=A3=9E?= Date: Mon, 28 Apr 2025 18:06:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E9=94=80=E5=94=AE?= =?UTF-8?q?=E9=80=80=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/MaterialReceiveRequestDetail.java | 10 +++ .../cim/idm/service/impl/MESServiceImpl.java | 64 ++++++++++++++ .../idm/service/impl/ToSAPServiceImpl.java | 80 +++++++++++------ .../com/cim/idm/util/ToSAPMessageUtil.java | 17 +++- .../constants/receive/ReceiveTypeEnums.java | 22 ++++- .../MaterialReceiveActController.java | 16 ++-- .../idm/controller/SAPToWMSController.java | 88 +++++++++++++++++-- .../idm/controller/SaleReturnController.java | 12 +-- .../idm/service/Impl/InvoiceServiceImpl.java | 14 ++- .../idm/service/Impl/MESToWMSServiceImpl.java | 8 +- .../Impl/ReturnStockIntoServiceImpl.java | 17 +--- 11 files changed, 274 insertions(+), 74 deletions(-) diff --git a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/receiverequestdetail/management/data/MaterialReceiveRequestDetail.java b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/receiverequestdetail/management/data/MaterialReceiveRequestDetail.java index 9713424..929f5e2 100644 --- a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/receiverequestdetail/management/data/MaterialReceiveRequestDetail.java +++ b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/receiverequestdetail/management/data/MaterialReceiveRequestDetail.java @@ -62,6 +62,9 @@ public class MaterialReceiveRequestDetail extends FieldAccessor implements DataI private String salesAssistant; // 业务助理zzywzl private String businessDivision; // 事业部zzsyb + private String phase; + + public String getLocationName() { return locationName; } @@ -538,4 +541,11 @@ public class MaterialReceiveRequestDetail extends FieldAccessor implements DataI this.businessDivision = businessDivision; } + public String getPhase() { + return phase; + } + + public void setPhase(String phase) { + this.phase = phase; + } } diff --git a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/MESServiceImpl.java b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/MESServiceImpl.java index 3806fe7..bbeda1b 100644 --- a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/MESServiceImpl.java +++ b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/MESServiceImpl.java @@ -359,6 +359,70 @@ public class MESServiceImpl implements MESService{ return code; + } + // mes生产退料删除批次 + public String SCTL_deleteMaterialPackingInfo(List chargeList) throws CustomException{ + + JSONObject requestBodyMap = new JSONObject(); + requestBodyMap.put("chargeList", chargeList); + String requestBody = requestBodyMap.toString(); + String httpPost = mesHttpUtil.httpPost(baseUrl + "/wms/wmsMaterialDelete", requestBody); + System.out.println(httpPost); + org.json.JSONObject receiveJsonObject = new org.json.JSONObject(httpPost); + String code = receiveJsonObject.getString("code"); + String msg = receiveJsonObject.getString("msg"); + boolean success = receiveJsonObject.getBoolean("success"); + + // 写log + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToMES"); + erplog.setEventName("生产退料删除标签delete"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(requestBody); + erplog.setReturnMsg2(httpPost.toString()); + erplog.setResultCode(code); + MessageLogUtil.writeMessageLog(erplog); + + if (!success) { + throw new CustomException("MES删除标签接口返回报错:" + msg); + } + + return code; + } + + // mes产品品入库删除批次 + public String CCPRK_deleteMaterialPackingInfo(List chargeList) throws CustomException{ + + JSONObject requestBodyMap = new JSONObject(); + requestBodyMap.put("chargeList", chargeList); + String requestBody = requestBodyMap.toString(); + String httpPost = mesHttpUtil.httpPost(baseUrl + "/wms/wmsShipDelete", requestBody); + System.out.println(httpPost); + org.json.JSONObject receiveJsonObject = new org.json.JSONObject(httpPost); + String code = receiveJsonObject.getString("code"); + String msg = receiveJsonObject.getString("msg"); + boolean success = receiveJsonObject.getBoolean("success"); + + // 写log + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToMES"); + erplog.setEventName("生产退料删除标签delete"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(requestBody); + erplog.setReturnMsg2(httpPost.toString()); + erplog.setResultCode(code); + MessageLogUtil.writeMessageLog(erplog); + + if (!success) { + throw new CustomException("MES删除标签接口返回报错:" + msg); + } + + return code; + } //zd.2024.8.23 需MES接收的数据发送MES并更新SENDMESFLAG为Y 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 68fdb21..1475605 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 @@ -27,7 +27,7 @@ public class ToSAPServiceImpl { @Autowired private ToSAPMessageUtil toSAPMessageUtil; public String PurStockIn(String receiveRequestName, String siteName, String user, - Map args ) throws Exception { + Map args) throws Exception { String rcode; String undoId = ""; @@ -47,9 +47,9 @@ public class ToSAPServiceImpl { .append(" mp.ERPLOCATION , ").append(SystemPropHelper.CR) .append(" mp.SUPPLIERNAME , ").append(SystemPropHelper.CR) .append(" m2.IQCFLAG, ").append(SystemPropHelper.CR) - .append(" SUM(mp.MATERIALQUANTITY) AS MATERIALQUANTITY ,SUM(mp.FQTY) AS FQTY ").append(SystemPropHelper.CR) - .append(" FROM MATERIALPACKING mp ").append(SystemPropHelper.CR) - .append(" LEFT JOIN MATERIALPACKINGSUB ms ").append(SystemPropHelper.CR) + .append(" SUM(ms.QTY) AS MATERIALQUANTITY ,SUM(mp.FQTY) AS FQTY ").append(SystemPropHelper.CR) + .append(" FROM MATERIALPACKINGSUB ms ").append(SystemPropHelper.CR) + .append(" LEFT JOIN MATERIALPACKING mp ").append(SystemPropHelper.CR) .append(" ON mp.MATERIALPACKINGNAME =ms.MATERIALPACKINGNAME ").append(SystemPropHelper.CR) .append(" AND mp.RECEIVEREQUESTNAME =ms.RECEIVEREQUESTNAME ").append(SystemPropHelper.CR) .append(" LEFT JOIN MATERIALRECEIVEREQUEST mcr ").append(SystemPropHelper.CR) @@ -57,7 +57,7 @@ public class ToSAPServiceImpl { .append(" AND mp.RECEIVEREQUESTNAME = mcr.RECEIVEREQUESTNAME ").append(SystemPropHelper.CR) .append(" LEFT JOIN MATERIALRECEIVEREQUESTDETAIL m ").append(SystemPropHelper.CR) .append(" ON m.SITENAME = mp.SITENAME ").append(SystemPropHelper.CR) - .append(" AND m.RECEIVEREQUESTNAME = mp.RECEIVEREQUESTNAME ").append(SystemPropHelper.CR) + .append(" AND m.RECEIVEREQUESTNAME = ms.RECEIVEREQUESTNAME ").append(SystemPropHelper.CR) .append(" AND m.RECEIVEREQUESTDETAILNAME = ms.RECEIVEREQUESTDETAILNAME ").append(SystemPropHelper.CR) .append(" LEFT JOIN BS_MATERIALFACTORY m2 ").append(SystemPropHelper.CR) .append(" ON m2.MATERIALSPECNAME = mp.MATERIALSPECNAME ").append(SystemPropHelper.CR) @@ -1259,28 +1259,51 @@ public class ToSAPServiceImpl { * @throws Exception */ public String SaleReturn(String shipRequestName, String siteName, String eventUser,String commitDate, String opcode ) throws Exception { - String sql="SELECT\r\n" + - " mp.RECEIVEREQUESTDETAILNAME SHIPREQUESTDETAILNAME,\r\n" + - " mp.ERPLOCATION,\r\n" + - " count(*) AS ZROL,\r\n" + - " sum(mp.MATERIALQUANTITY) AS MATERIALQUANTITY\r\n" + - " FROM\r\n" + - " MATERIALPACKING mp\r\n" + - " LEFT JOIN MATERIALSHIPREQUEST ms ON\r\n" + - " mp.RECEIVEREQUESTNAME = ms.SHIPREQUESTNAME\r\n" + - " AND mp.SITENAME = ms.SITENAME\r\n" + - " LEFT JOIN MATERIALSHIPREQUESTDETAIL md ON\r\n" + - " mp.RECEIVEREQUESTNAME = md.SHIPREQUESTNAME\r\n" + - " AND mp.RECEIVEREQUESTDETAILNAME = md.SHIPREQUESTDETAILNAME\r\n" + - " AND mp.SITENAME = md.SITENAME\r\n" + - " WHERE\r\n" + - " 1 = 1\r\n" + - " AND mp.RECEIVEREQUESTNAME = :SHIPREQUESTNAME \r\n" + - " AND mp.SITENAME = :SITENAME \r\n" + - " AND (mp.STOCKSTATE = 'StockOut' OR mp.STOCKSTATE = 'Created' ) \r\n" + - " GROUP BY\r\n" + - " mp.RECEIVEREQUESTDETAILNAME ,\r\n" + - " mp.ERPLOCATION"; +// String sql="SELECT\r\n" + +// " mp.RECEIVEREQUESTDETAILNAME SHIPREQUESTDETAILNAME,\r\n" + +// " mp.ERPLOCATION,\r\n" + +// " count(*) AS ZROL,\r\n" + +// " sum(mp.MATERIALQUANTITY) AS MATERIALQUANTITY\r\n" + +// " FROM\r\n" + +// " MATERIALPACKING mp\r\n" + +// " LEFT JOIN MATERIALSHIPREQUEST ms ON\r\n" + +// " mp.RECEIVEREQUESTNAME = ms.SHIPREQUESTNAME\r\n" + +// " AND mp.SITENAME = ms.SITENAME\r\n" + +// " LEFT JOIN MATERIALSHIPREQUESTDETAIL md ON\r\n" + +// " mp.RECEIVEREQUESTNAME = md.SHIPREQUESTNAME\r\n" + +// " AND mp.RECEIVEREQUESTDETAILNAME = md.SHIPREQUESTDETAILNAME\r\n" + +// " AND mp.SITENAME = md.SITENAME\r\n" + +// " WHERE\r\n" + +// " 1 = 1\r\n" + +// " AND mp.RECEIVEREQUESTNAME = :SHIPREQUESTNAME \r\n" + +// " AND mp.SITENAME = :SITENAME \r\n" + +// " AND (mp.STOCKSTATE = 'StockOut' OR mp.STOCKSTATE = 'Created' ) \r\n" + +// " GROUP BY\r\n" + +// " mp.RECEIVEREQUESTDETAILNAME ,\r\n" + +// " mp.ERPLOCATION"; + + String sql="SELECT \n" + + "\tmd.RECEIVEREQUESTDETAILNAME SHIPREQUESTDETAILNAME,\n" + + "\tmp.ERPLOCATION, \n" + + "\tcount(*) AS ZROL, \n" + + "\tsum(mp.MATERIALQUANTITY) AS MATERIALQUANTITY \n" + + " FROM \n" + + "\tMATERIALPACKING mp \n" + + " LEFT JOIN MATERIALRECEIVEREQUEST ms ON \n" + + "\tmp.RECEIVEREQUESTNAME = ms.RECEIVEREQUESTNAME \n" + + "\tAND mp.SITENAME = ms.SITENAME \n" + + " LEFT JOIN MATERIALRECEIVEREQUESTDETAIL md ON \n" + + "\tmp.RECEIVEREQUESTNAME = md.RECEIVEREQUESTNAME \n" + + "\tAND mp.RECEIVEREQUESTNAME = md.RECEIVEREQUESTNAME \n" + + "\tAND mp.SITENAME = md.SITENAME \n" + + " WHERE \n" + + "\t1 = 1 \n" + + "\t AND mp.RECEIVEREQUESTNAME = :SHIPREQUESTNAME \n" + + " AND mp.SITENAME = :SITENAME \n" + + " AND (mp.STOCKSTATE = 'StockOut' OR mp.STOCKSTATE = 'Created' ) \n" + + " GROUP BY \n" + + "\tmd.RECEIVEREQUESTDETAILNAME , \n" + + "\tmp.ERPLOCATION"; Map hashMap = new HashMap(); hashMap.put("SHIPREQUESTNAME", shipRequestName); hashMap.put("SITENAME", siteName); @@ -1364,11 +1387,12 @@ public class ToSAPServiceImpl { //销售交货单过账不返回物料凭证,且RETURN为JsonArray org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN"); + rcode = returnJsonObject.get("STATUS").toString(); rmsg = returnJsonObject.get("MSGTXT").toString(); if ("S".equals(rcode)) { - undoId = "S"; + undoId = returnJsonObject.get("KEY01").toString(); } //将log写到表里 ErpMessageLog erplog = new ErpMessageLog(); diff --git a/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java b/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java index 8a15bce..b3a49fd 100644 --- a/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java +++ b/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java @@ -517,7 +517,7 @@ public class ToSAPMessageUtil { log.info("*************************************************" ); log.info("******************开始发送******************" ); // 调用业务接口,需实时获取token - authStr = getAccessToken(getBaseUrl()); + authStr = getAccessToken(getBaseUrl(),url); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); @@ -539,11 +539,20 @@ public class ToSAPMessageUtil { return responseContent; } - public static String getAccessToken(String requestUrl){ + public static String getAccessToken(String requestUrl,String paramsUrl){ + String clientId = ""; + String clientSecret = ""; + if(paramsUrl.contains("sd023")) { + clientId = "BC_SAPPO"; + clientSecret = "VeH16jPWv03aTRMptirgGGSs3ZqnqHMxQ7WTKHiFGNg"; + }else { + clientId = "BC_WMS"; + clientSecret = "vBkGIRyeuud0t8W79kGMV0lZHuBIj26duPFSR-vSLvg"; + } String grantType = "client_credentials"; - String clientId = "BC_WMS"; - String clientSecret = "vBkGIRyeuud0t8W79kGMV0lZHuBIj26duPFSR-vSLvg"; +// clientId = "BC_WMS"; +// clientSecret = "vBkGIRyeuud0t8W79kGMV0lZHuBIj26duPFSR-vSLvg"; String scope = ""; String clientAuth = "Send client credentials in body"; diff --git a/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/ReceiveTypeEnums.java b/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/ReceiveTypeEnums.java index 2100590..04908bf 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/ReceiveTypeEnums.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/ReceiveTypeEnums.java @@ -11,7 +11,17 @@ public enum ReceiveTypeEnums { Z002("Z002", "研发采购订单"), Z003("Z003", "非生产物资采购订单"), Z004("Z004", "固定资产、在建工程采购订单"), - ZLR1("ZLR1", "销售退货"); + ZLR1("ZLR1", "销售退货"), + ZLF0("ZLF0", "销售退货"), + ZLF1("ZLF1", "销售退货"), + ZLF2("ZLF2", "销售退货"), + ZLF3("ZLF3", "销售退货"), + ZLF4("ZLF4", "销售退货"), + ZLF5("ZLF5", "销售退货"), + ZLF6("ZLF6", "销售退货"), + ZLF7("ZLF7", "销售退货"), + ZLF8("ZLF8", "销售退货"), + ZLF9("ZLF9", "销售退货"); private final String code; private final String info; @@ -46,6 +56,16 @@ public enum ReceiveTypeEnums { public static List getsaleReturn() { List str = new ArrayList<>(); str.add(ZLR1.getCode()); + str.add(ZLF0.getCode()); + str.add(ZLF1.getCode()); + str.add(ZLF2.getCode()); + str.add(ZLF3.getCode()); + str.add(ZLF4.getCode()); + str.add(ZLF5.getCode()); + str.add(ZLF6.getCode()); + str.add(ZLF7.getCode()); + str.add(ZLF8.getCode()); + str.add(ZLF9.getCode()); return str; } /** diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java index ea2b18f..8dc5e9a 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java @@ -535,13 +535,17 @@ public class MaterialReceiveActController { e.printStackTrace(); return AjaxResult.me().setSuccess(false).setMessage(e.toString()); } - try { - // 调用 QMS - qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory); - } catch (CustomException e) { - e.printStackTrace(); - return AjaxResult.me().setSuccess(false).setMessage(e.toString()); + + if(!ReceiveTypeEnums.isSaleReturn(requests.get(0).getReceiveRequestType())) { + try { + // 调用 QMS + qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory); + } catch (CustomException e) { + e.printStackTrace(); + return AjaxResult.me().setSuccess(false).setMessage(e.toString()); + } } + // 发送过账 EventInfoUtil util = new EventInfoUtil(); makeEventInfo = util.makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK"); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java index b9967d1..db37909 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java @@ -566,6 +566,29 @@ public class SAPToWMSController { Map selectMap= new HashMap(); selectMap.put("receiverequestname", receiveRequestName); List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); + + // 检验单据是否已存在,并且未被使用过账 + String isSql = "SELECT\n" + + "\t*\n" + + "FROM\n" + + "\tMATERIALRECEIVEREQUEST m\n" + + "LEFT JOIN MATERIALRECEIVEREQUESTDETAIL md ON\n" + + "\tmd.RECEIVEREQUESTNAME = m.RECEIVEREQUESTNAME\n" + + "WHERE\n" + + "\tm.RECEIVEREQUESTNAME =:receiverequestname\n" + + "\tAND md.RECEIVEDQUANTITY > 0"; + + List> isList = IDMFrameServiceProxy.getSqlTemplate().queryForList(isSql, selectMap); + if (isList != null && isList.size() > 0) { + throw new CustomException("ERROR","单据已存在,并且已存在过账!"); + }else { + String shipquestSql="DELETE FROM MATERIALRECEIVEREQUEST WHERE receiveRequestName =?"; + String shipDetailSql="DELETE FROM MATERIALRECEIVEREQUESTDETAIL WHERE receiveRequestName =?"; + Object[] obj=new Object[] {receiveRequestName, receiveRequestName}; + IDMFrameServiceProxy.getSqlTemplate().update(shipquestSql, obj); + IDMFrameServiceProxy.getSqlTemplate().update(shipDetailSql, obj); + } + if(checkResultList == null || checkResultList.size() == 0) { CreateReceiveRequestInfo createInfo = new CreateReceiveRequestInfo(); createInfo.setSiteName(sitename); @@ -684,7 +707,9 @@ public class SAPToWMSController { createInfo.setPocategory(pstyp); //针对 供应商的, L表示委外订单, K表示寄售 createInfo.setMaterialSpecName(materialSpecName); createInfo.setErpLocation(erpLocation); - createInfo.setRequestQuantity(Float.parseFloat(requestQty)); + // 处理精度丢失 + BigDecimal bigRequestQty = new BigDecimal(requestQty.trim()); + createInfo.setRequestQuantity(bigRequestQty.doubleValue()); createInfo.setReceivedQuantity(0); createInfo.setCreateUser("SAP"); createInfo.setIqcFlag(""); @@ -748,7 +773,9 @@ public class SAPToWMSController { bindMapItem.put("freeFlag", freeFlag); bindMapItem.put("iqcFlag", ""); bindMapItem.put("erpFactory", erpFactory); // 工厂 - bindMapItem.put("requestQuantity", Float.parseFloat(requestQty)); + // 处理精度丢失 + BigDecimal bigRequestQty = new BigDecimal(requestQty.trim()); + bindMapItem.put("requestQuantity", bigRequestQty.doubleValue()); bindMapItem.put("materialUnit", unit); bindMapItem.put("innerOrder", innerOrder); // 内部定单号 bindMapItem.put("finishFlag", finishFlag); //交货完成标识 @@ -1031,7 +1058,29 @@ public class SAPToWMSController { Map selectMap= new HashMap(); selectMap.put("SHIPREQUESTNAME", shipRequestName); List> checkResultList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlCheck, selectMap); - + + String isSql = "SELECT\n" + + "\t*\n" + + "FROM\n" + + "\tMATERIALSHIPREQUEST m\n" + + "LEFT JOIN MATERIALSHIPREQUESTDETAIL md ON\n" + + "\tmd.SHIPREQUESTNAME = m.SHIPREQUESTNAME\n" + + "WHERE\n" + + "\tm.SHIPREQUESTNAME =:SHIPREQUESTNAME\n" + + "\tAND md.SALEOUTQUANTITY > 0"; + + List> isList = IDMFrameServiceProxy.getSqlTemplate().queryForList(isSql, selectMap); + if (isList != null && isList.size() > 0) { + throw new CustomException("ERROR","单据已存在,并且已存在过账!"); + }else { + String shipquestSql="DELETE FROM MATERIALSHIPREQUEST WHERE shiprequestname =?"; + String shipDetailSql="DELETE FROM materialshiprequestdetail WHERE shiprequestname =?"; + Object[] obj=new Object[] {shipRequestName, shipRequestName}; + IDMFrameServiceProxy.getSqlTemplate().update(shipquestSql, obj); + IDMFrameServiceProxy.getSqlTemplate().update(shipDetailSql, obj); + } + + if(checkResultList == null || checkResultList.size() == 0) { CreateMaterialShipRequestInfo createInfo = new CreateMaterialShipRequestInfo(); createInfo.setSiteName(sitename); @@ -1156,7 +1205,12 @@ public class SAPToWMSController { Map materialMap= new HashMap(); materialMap.put("MATERIALSPECNAME", materialSpecName); List> phaseList = IDMFrameServiceProxy.getSqlTemplate().queryForList(materialSql, materialMap); - String phase = phaseList.get(0).get("PHASE") != null ? phaseList.get(0).get("PHASE").toString() : ""; + String phase= ""; + if(phaseList == null || phaseList.size() == 0) { + throw new CustomException("ERROR","料号在基础数据里没找到!"); + }else { + phase = phaseList.get(0).get("PHASE") != null ? phaseList.get(0).get("PHASE").toString() : ""; + } String sqlItemCheck ="SELECT * FROM materialshiprequestdetail WHERE shiprequestname =:SHIPREQUESTNAME and shiprequestdetailname = :SHIPREQUESTDETAILNAME"; @@ -1173,7 +1227,9 @@ public class SAPToWMSController { createInfo.setShipRequestName(shipRequestName); createInfo.setShipRequestDetailName(shipRequestDetailName); createInfo.setMaterialSpecName(materialSpecName); - createInfo.setRequestQuantity(Float.parseFloat(requestQuantity)); + // 精度丢失处理 + BigDecimal bigRequestQuantity = new BigDecimal(requestQuantity.trim()); + createInfo.setRequestQuantity(bigRequestQuantity.doubleValue()); createInfo.setAssignedQuantity(0); @@ -1224,7 +1280,9 @@ public class SAPToWMSController { //bindMapItem.put("desc_cn", description ); // 成本中心 bindMapItem.put("charge", charge); bindMapItem.put("materialSpecName", materialSpecName); - bindMapItem.put("requestQuantity", requestQuantity); + // 精度丢失处理 + BigDecimal bigRequestQuantity = new BigDecimal(requestQuantity.trim()); + bindMapItem.put("requestQuantity", bigRequestQuantity.doubleValue()); bindMapItem.put("unit", unit); bindMapItem.put("erpReceiveFactory", werks2); bindMapItem.put("erpReceiveLocation", lgort2); @@ -1692,6 +1750,15 @@ public class SAPToWMSController { bindMapItem.put("sendSalesOrderDetailNo", sendSaleOrderDetailNo); // 销售订单行号 bindMapItem.put("sourceNo", sourceNo); // 原单号 + // 根据料号获取阶段 + String materialSql = "SELECT m.PHASE FROM MATERIALSPEC m WHERE MATERIALSPECNAME = :MATERIALSPECNAME"; + Map materialMap= new HashMap(); + materialMap.put("MATERIALSPECNAME", materialSpecName); + List> phaseList = IDMFrameServiceProxy.getSqlTemplate().queryForList(materialSql, materialMap); + String phase = phaseList.get(0).get("PHASE") != null ? phaseList.get(0).get("PHASE").toString() : ""; + bindMapItem.put("phase", phase); // 原单号 + + // 如果是销售退 if("ZLR1".equals(shipRequestType)) { bindMapItem.put("receiveRequestDetailType", shipRequestType); // 原单号 @@ -1700,7 +1767,8 @@ public class SAPToWMSController { createReceiveInfo.setReceiveRequestName(shipRequestName); createReceiveInfo.setReceiveRequestDetailName(shipRequestDetailName); createReceiveInfo.setMaterialSpecName(materialSpecName); - createReceiveInfo.setRequestQuantity(Float.parseFloat(requestQuantity)); + BigDecimal bigRequestQuantity = new BigDecimal(requestQuantity.trim()); + createReceiveInfo.setRequestQuantity(bigRequestQuantity.doubleValue()); createReceiveInfo.setReceivedQuantity(0); createReceiveInfo.setUserColumns(bindMapItem); EventInfo eventReciveInfo = new EventInfo(); @@ -1720,7 +1788,8 @@ public class SAPToWMSController { createInfo.setShipRequestName(shipRequestName); createInfo.setShipRequestDetailName(shipRequestDetailName); createInfo.setMaterialSpecName(materialSpecName); - createInfo.setRequestQuantity(Float.parseFloat(requestQuantity)); + BigDecimal bigRequestQuantity = new BigDecimal(requestQuantity.trim()); + createInfo.setRequestQuantity(bigRequestQuantity.doubleValue()); createInfo.setAssignedQuantity(0); createInfo.setUserColumns(bindMapItem); EventInfo eventInfo = new EventInfo(); @@ -1735,7 +1804,8 @@ public class SAPToWMSController { Map bindMapItem = new HashMap(); bindMapItem.put("erpFactory", factoryName); // 工厂 bindMapItem.put("materialSpecName", materialSpecName); - bindMapItem.put("requestQuantity", requestQuantity); + BigDecimal bigRequestQuantity = new BigDecimal(requestQuantity.trim()); + bindMapItem.put("requestQuantity", bigRequestQuantity.doubleValue()); //需要新建 bindMapItem.put("width", width); // 宽幅 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java index 55771c0..a26a0db 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleReturnController.java @@ -327,12 +327,12 @@ public class SaleReturnController { String erpFactory = materialPacking.getErpFactory(); - String sqlString = "SELECT * \r\n" - + "FROM MATERIALPACKING m \r\n" - + "LEFT JOIN MATERIALSHIPREQUEST m2 ON m.SHIPREQUESTNAME = m2.SHIPREQUESTNAME\r\n" - + "WHERE m.STOCKSTATE ='StockOut'\r\n" - + " AND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" - + " AND m2.SHIPREQUESTTYPE = 'ZLF1'"; + String sqlString = "SELECT * \n" + + "FROM MATERIALPACKING m \n" + + "LEFT JOIN MATERIALSHIPREQUEST m2 ON m.SHIPREQUESTNAME = m2.SHIPREQUESTNAME\n" + + "WHERE m.STOCKSTATE ='StockOut'\n" + + "\tAND m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n" + + "\tAND REGEXP_LIKE(m2.SHIPREQUESTTYPE, '^ZLF[0-9]$')"; Map hashMap = new HashMap(); hashMap.put("MATERIALPACKINGNAME", materialPackingName); 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 c235290..b96f7fc 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 @@ -564,19 +564,27 @@ public class InvoiceServiceImpl implements InvoiceService { untils.sendMaterialInfoToMES_NEW(shipRequestName, "", materialPackingKeyList); //billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,""); untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo); - } break; case "06"://成本中心领料 - case "09"://研发领料 -// billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList); + // billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList); billCode=orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList); + //抛送MES数据 + untils.sendMaterialInfoToMES_NEW(shipRequestName, "", materialPackingKeyList); //更新MES管芯数据 new MESServiceImpl().updateDurable_ByCostcenter(shipRequestName, "SDK", eventUser, materialPackingKeyList); //billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,""); untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo); break; + case "09"://研发领料 +// billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList); +// billCode=orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList); +// //更新MES管芯数据 +// new MESServiceImpl().updateDurable_ByCostcenter(shipRequestName, "SDK", eventUser, materialPackingKeyList); +// //billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,""); +// untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo); + break; case "ZLF0"://销售出库确认 (单据类型ZLF0~ZLF8) SD023(销售回传) case "ZLF1": case "ZLF2": 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 6727009..44bbe58 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 @@ -396,12 +396,12 @@ public class MESToWMSServiceImpl implements MESToWMSService { + "PRODUCTSPECNAME, PRODUCTNAME, SDK_ID, PHASE, RECEIVE_FLAG, REMARK, SHIPTIME, " + "SHIPUSER, SITENAME, MATERIALSPECTYPE," + "INVENTORYTYPE, SALENO, SALEDETAILNO, ERPLOCATION, CHARGE, LOCATIONNAME, " - + "OPERATIONTYPE, ERPFACTORY,GXID)" + SystemPropHelper.CR + + "OPERATIONTYPE, MAKEDATE,ERPFACTORY,GXID)" + SystemPropHelper.CR + " VALUES(:LOTNAME,:QTY,:UNIT,:REQUESTNAME, :AREA, " + ":PRODUCTSPECNAME, :PRODUCTNAME, :SDK_ID, :PHASE, 'N', :REMARK, :SHIPTIME, " + "'MES', 'SDK', :MATERIALSPECTYPE, " + ":INVENTORYTYPE, :SALENO, :SALEDETAILNO, :ERPLOCATION, :CHARGE, :LOCATIONNAME, " - + ":OPERATIONTYPE, :ERPFACTORY,:GXID)"; + + ":OPERATIONTYPE,TO_DATE(:MAKEDATE, 'YYYY-MM-DD'),:ERPFACTORY,:GXID)"; String receiveActNo = ""; String productSpecName = ""; String erpFactory = ""; @@ -428,7 +428,7 @@ public class MESToWMSServiceImpl implements MESToWMSService { String erpLocation = jo.getString("erpLocation"); String locationName = jo.getString("locationName"); String gxId = jo.getString("gxId"); // 增加管芯字段 -// String makeDate = jo.getString("makeDate"); + String makeDate = jo.getString("makeDate"); erpFactory = jo.getString("erpFactory"); String materialPackingName = jo.getString("materialPackingName"); // 生成退料原条码二维码 @@ -473,7 +473,7 @@ public class MESToWMSServiceImpl implements MESToWMSService { bindMap.put("CHARGE", charge); bindMap.put("GXID", gxId); bindMap.put("MATERIALPACKINGNAME", materialPackingName); -// bindMap.put("makeDate", makeDate); + bindMap.put("MAKEDATE", makeDate); if ("1".equals(operationType)) { // 自动入库 if ("FG".equals(stockInType) || "BFG".equals(stockInType)) { // 产成品入库 增加回收例子入库 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java index 71ed196..9bec259 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java @@ -8,6 +8,7 @@ import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.exception.IDMFrameDBErrorSignal; import com.cim.idm.framework.util.time.TimeStampUtil; import com.cim.idm.service.ReturnStockInService; +import com.cim.idm.service.impl.MESServiceImpl; import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.utils.EventInfoUtil; import com.cim.idm.wmsextend.generic.GenericServiceProxy; @@ -675,19 +676,9 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { } SaveUnDoInfo(billCode, commitDate); - - // 调mes接口删除批次,暂时注释,mes接口还没写好 - JSONObject requestBodyMap = new JSONObject(); - requestBodyMap.append("chargeList", chargeList); - String requestBody = requestBodyMap.toString(); -// String httpPost = mesHttpUtil.httpPost(baseUrl + "/wms/wmsMaterialDelete", requestBody); -// System.out.println(httpPost); -// org.json.JSONObject receiveJsonObject = new org.json.JSONObject(httpPost); -// String code = receiveJsonObject.getString("code"); -// String msg = receiveJsonObject.getString("msg"); -// if ("20000".equals(code) || "1".equals(code)) { -// throw new GlobalException("MES返回报错:" + msg); -// } + // 创建MESServiceImpl实例,用于调用发送物料信息到MES系统的方法 + MESServiceImpl mesService=new MESServiceImpl() ; + mesService.SCTL_deleteMaterialPackingInfo(chargeList); // }