diff --git a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java index 6fd21e8..765a641 100644 --- a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java +++ b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/materialpacking/management/data/MaterialPacking.java @@ -134,7 +134,15 @@ public class MaterialPacking extends FieldAccessor implements DataInfo> list) throws CustomException { + + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < list.size(); i++) { + JSONObject jsonObject = new JSONObject(true); +//       "deliveryNumber": "SDK20240511003", +//         "supplierName": "BOE", +//         "supplierCode": "0000102038", +//         "materialName": "胶带", +//         "materialCode": "2F08S4J4", +//         "materialGroup": "A40001", +//         "batchQuantity": 10, +//         "quantityUnit": "1", +//         "deliveryDate": "2024-1-1 12:2:2" + jsonObject.put("opCode", opCode); + jsonObject.put("deliveryNumber", opCode); + 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")); + jsonObject.put("inspector", "检验室(原材仓)"); + + String erpFactory = list.get(i).get("BATCHQUANTITY") == null ? "" : list.get(i).get("BATCHQUANTITY").toString(); + String factoryArea = ""; + if("103".equals(erpFactory)) { + factoryArea = "tc"; + }else if("105".equals(erpFactory)) { + factoryArea = "cq"; + }else if("106".equals(erpFactory)){ + factoryArea = "dg"; + }else { + factoryArea = "sh"; + } + // 入库单号和厂区 + String receiveRequestName = list.get(i).get("RECEIVEREQUESTNAME") == null ? "" : list.get(i).get("RECEIVEREQUESTNAME").toString(); + jsonObject.put("transferOrderNumber", receiveRequestName); + jsonObject.put("factoryArea", factoryArea); + + /** + * 增加供应商编码和供应商名称 + * 2025-05-12 + */ + //供应商编码 + jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE")); + //供应商名称 + jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME")); + + String lots = list.get(i).get("LOTS") == null ? "" : list.get(i).get("LOTS").toString(); + String[] split = lots.split("\\;"); + JSONArray jsonArray2 = new JSONArray (); + for (int j = 0; j < split.length; j++) { + jsonArray2.add(split[j]); + } + jsonObject.put("lots", jsonArray2); + jsonArray.add(jsonObject); + } + String makePreIQCInfoSendJson = jsonArray.toString(); + String httpPost = NCHttpUtil.httpPost(baseUrl + "/iqc/select/number", makePreIQCInfoSendJson); + org.json.JSONObject jsonObject = new org.json.JSONObject(httpPost); + String code = jsonObject.getString("code"); + if (!"00000".equals(code)) { + + } +// String msg = jsonObject.getString("msg"); + //JSONObject object = (JSONObject) jsonObject.get("data"); + Thread t = new Thread(new Runnable(){ + public void run(){ + // run方法具体重写 + UUID uuid = UUID.randomUUID(); + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToQMS"); + erplog.setEventName("PreIQCInfoSend"); + erplog.setId(uuid.toString()); + erplog.setInterfaceTime(ConvertUtil.getCurrTime("yyyy-MM-dd HH:mm:ss")); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(makePreIQCInfoSendJson); + erplog.setReturnMsg2(httpPost.toString()); + erplog.setResultCode(code); + MessageLogUtil.writeMessageLog(erplog); + }}); + t.start(); + return code; + + } + + + /** + * 质检信息发送QMS + * @throws CustomException + */ + @Override + public String sendQMSByUrlJson(String sendQMSUrl, String sendQMSJson, EventInfo eventInfo) throws CustomException { + String httpPost = NCHttpUtil.httpPost(baseUrl + sendQMSUrl, sendQMSJson); + org.json.JSONObject jsonObject = new org.json.JSONObject(httpPost); + String code = jsonObject.getString("code"); + String msg = ""; + if (!"200".equals(code)) { + msg = jsonObject.getString("msg"); + } +// String msg = jsonObject.getString("msg"); + //JSONObject object = (JSONObject) jsonObject.get("data"); + Thread t = new Thread(new Runnable(){ + public void run(){ + // run方法具体重写 + UUID uuid = UUID.randomUUID(); + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToQMS"); + erplog.setEventName(eventInfo.getEventName()); + erplog.setId(uuid.toString()); + erplog.setInterfaceTime(ConvertUtil.getCurrTime("yyyy-MM-dd HH:mm:ss")); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendQMSJson); + erplog.setReturnMsg2(httpPost.toString()); + erplog.setResultCode(code); + MessageLogUtil.writeMessageLog(erplog); + }}); + t.start(); + return msg; + + } } 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 5b93614..222e875 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 @@ -5,12 +5,17 @@ import com.alibaba.fastjson.JSONObject; import com.cim.idm.data.AuditBox; import com.cim.idm.data.ErpMessageLog; import com.cim.idm.framework.IDMFrameServiceProxy; +import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.util.sys.SystemPropHelper; import com.cim.idm.framework.util.time.TimeStampUtil; import com.cim.idm.util.MessageLogUtil; import com.cim.idm.util.ToSAPMessageUtil; import com.cim.idm.wmsextend.generic.errorHandler.CustomException; +import com.cim.idm.wmsextend.generic.util.EventInfoUtil; +import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy; +import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey; +import com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -29,6 +34,8 @@ public class ToSAPServiceImpl { @Autowired private ToSAPMessageUtil toSAPMessageUtil; + @Autowired + private QMSServiceImpl qmsServiceImpl; public String PurStockIn(String receiveRequestName, String siteName, String user, @@ -2602,7 +2609,7 @@ public class ToSAPServiceImpl { //过账日期 body.put("BUDAT", budatData); //凭证日期 - body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd")); + body.put("BLDAT", budatData); //凭证抬头文本 body.put("BKTXT", uniqueID); //用户名 @@ -6296,4 +6303,194 @@ public class ToSAPServiceImpl { bodyJSonData.put("BUDAT", payMentDate); return MainData.toJSONString(); } + + /** + * 到货单入库调用SAP过账 + * @param deliveryName 到货单号 + * @param siteName 工厂 + * @param user 登录用户 + * @param commitDate 过账时间 + * @param opCode + * @return + * @throws Exception + */ + public String DeliveryToSAPMontage(String deliveryName, String siteName, String user,String commitDate, String opCode, List saleList) throws Exception { + EventInfo eventInfo = new EventInfoUtil().makeEventInfo("NormalStockInDelivery", user, "NormalStockInDelivery", "", ""); + String rcode; + String undoId = ""; + String rmsg = null; + //调用SAP接口的报文 + String sendData = ""; + //SAP返回报文 + String sapreturn = ""; + List materialPackingKeyList = new ArrayList<>(); + //依据采购订单,查询待入库的物料(MATERIALPACKING) + String querySql = " \n" + + "\tSELECT\n" + + " D.DELIVERYSTATE,\n" + + " DR.DELIVERYNAME,\n" + + " DR.DELIVERYNUM,\n" + + " DR.RECEIVEREQUESTNAME,\n" + + " DR.RECEIVEREQUESTDETAILNAME,\n" + + " DR.MATERIALSPECNAME,\n" + + " P.MATERIALPACKINGNAME,\n" + + " P.ERPLOCATION,\n" + + " P.ERPFACTORY,\n" + + " P.SUPPLIERNAME,\n" + + " P.UNIT,\n" + + "\t\tP.FQTY,\n" + + " P.FUNIT,\n" + + " P.REMARK,\n" + + "\t\tBF.IQCFLAG,\n" + + " P.OQARESULT,\n" + + "\t\tR.STOCKORGNO,\n" + + "\t\tR.RECEIVEREQUESTTYPE\n" + + "FROM\n" + + " MATERIALPACKING P \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 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 MATERIALDELIVERY D ON DR.DELIVERYNAME = D.DELIVERYNAME\n" + + "WHERE\n" + + " D.SITENAME =:SITENAME\n" + + " AND D.DELIVERYNAME =:DELIVERYNAME\n" + + " AND D.DELIVERYSTATE = '01'\n" + + "\t\tAND DR.MATERIALSPECNAME=RD.MATERIALSPECNAME\n" + + "\t\tAND RD.RECEIVEREQUESTDETAILNAME=DR.RECEIVEREQUESTDETAILNAME\n" + + "\t\tAND P.RECEIVEREQUESTNAME = DR.DELIVERYNAME \n" + + "\t\tAND P.MATERIALSPECNAME = DR.MATERIALSPECNAME "; + Map hashMap = new HashMap(); + hashMap.put("DELIVERYNAME", deliveryName); + hashMap.put("SITENAME", siteName); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(querySql, hashMap); + List> receiveBoxsQty = new ArrayList<>(); //基于标签收包的维度的数量 + try { + Map bodyData = new HashMap<>(); + List> itemData = new ArrayList<>(); + + for (Map mm : queryForList) { + + //UMWRK 收货工厂 + //LGORT 发货库存地点 + //UMLOG 收货库存地点 + //MATNR 发货物料号 + //UMMAT 收货物料 + Map item = new HashMap<>(); + item.put("MATNR", mm.get("MATERIALSPECNAME")); + item.put("LGORT", mm.get("ERPLOCATION")); + //item.put("UMWRK", mm.get("ERPFACTORY")); + item.put("WERKS", mm.get("ERPFACTORY")); + item.put("BWART","101"); + item.put("LIFNR", mm.get("SUPPLIERNAME")); + item.put("MENGE", mm.get("MATERIALQUANTITY")); + item.put("MEINS", mm.get("UNIT")); + item.put("BPMNG", mm.get("FQTY"));//采购价格单位数量 + item.put("BPRME", mm.get("FUNIT"));//采购价格单位 + + item.put("EBELN", mm.get("RECEIVEREQUESTNAME")); + item.put("EBELP", mm.get("RECEIVEREQUESTDETAILNAME")); + item.put("SGTXT", mm.get("REMARK")); + String insmk = ""; + if("Y".equals((String)mm.get("IQCFLAG"))) { + insmk = "2"; + } + if("NG".equals((String)mm.get("OQARESULT"))) { + insmk = "3"; + } +// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X"; + item.put("INSMK", insmk); + itemData.add(item); + //存储条码,更新UNDOID用 + MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, mm.get("MATERIALPACKINGNAME").toString()); + materialPackingKeyList.add(materialPackingKey); + } + + sendData = ToSAPMessageUtil.mm067(user, bodyData, itemData, commitDate); + + sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl,"",sendData); + org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn); + + org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN"); + rcode = returnJsonObject.get("STATUS").toString(); + rmsg = returnJsonObject.get("MSGTXT").toString(); + //将log写到表里 + ErpMessageLog erplog = new ErpMessageLog(); + erplog.setEventUser(""); + erplog.setServerName("WmsToErp"); + erplog.setEventName("PurStockIn"); + erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT)); + erplog.setMessageId(UUID.randomUUID().toString()); + erplog.setSendMsg(sendData); + erplog.setReturnMsg2(sapreturn); + erplog.setResultCode(rcode); + MessageLogUtil.writeMessageLog(erplog); + if ("S".equals(rcode)) { + undoId = returnJsonObject.get("MBLNR").toString()+"_"+returnJsonObject.get("MJAHR").toString();//将物料凭证号与凭证年度拼在一起 + }else { + 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())) { + try { + // 调用 QMS + //qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory); + qmsServiceImpl.sendToIQCByDataList(opCode, queryForList); + } catch (CustomException e) { + e.printStackTrace(); + throw new RuntimeException("QMS返回" + e.toString()); + } + } + // 更新入库凭证,更新库存状态 + if (materialPackingKeyList.size() > 0){ + SetEventInfo setEventInfo = new SetEventInfo(); + Map 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; + } + + /** + * 接收ERP返回消息更新WMS凭证 + * @param materialPackingName + */ + public void SaveUnDoInfo(String materialPackingName,String commitDate) { + + 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,'Completed' as undoidstate,:commitDate AS 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" + + " from MATERIALPACKING " + + " where MATERIALPACKINGNAME=:MATERIALPACKINGNAME "; + + Map bindMap_insert = new HashMap(); + bindMap_insert.put("MATERIALPACKINGNAME", materialPackingName); + bindMap_insert.put("commitDate", commitDate); + IDMFrameServiceProxy.getSqlTemplate().update(insertUnDOMaterialPackingInfo, bindMap_insert); + } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/CostCenterController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/CostCenterController.java index c59c124..3b59711 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/CostCenterController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/CostCenterController.java @@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Map; @RestController @@ -32,4 +33,14 @@ public class CostCenterController { List costCenters = costCenterService.getCostCenter(); return RespGenerator.returnOK(costCenters); } + + /** + * 获取用户信息 + * @return + */ + @RequestMapping(value = "/getUserInfo", method = RequestMethod.GET) + public BaseResponse getUserInfo() { + List> userInfos = costCenterService.getUserInfo(); + return RespGenerator.returnOK(userInfos); + } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java index 0c5f058..b87feff 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java @@ -137,4 +137,44 @@ public class DeliveryController { } return AjaxResult.me().setErrorCode(-1).setMessage("删除失败"); } + + /** + * 2025-05-14 + * 获取到货单入库详情 + */ + @PostMapping(value = "/getMaterialDeliveryDetailList") + public AjaxResult GetMaterialDeliveryDetailList(@RequestBody JSONObject in) { + Map params = (Map) in.get("params"); + // siteName + StoreDetailDto storeDetailDto = new StoreDetailDto(); + storeDetailDto.setSiteName(params.get("SITENAME")); + storeDetailDto.setDocumentName(params.get("RECEIVEREQUESTNAME")); + // 单据名称集合 + List nameList = new ArrayList<>(); + String deliveryName = null; + MaterialDelivery byKey = deliveryService.getByKey(storeDetailDto); + // 到货单 + if (Objects.nonNull(byKey)) { + deliveryName = byKey.getDeliveryName(); + // 到库单(找出该单据下的所有的采购单) + nameList = deliveryService.getRelByDelivery(storeDetailDto) + .stream().map(MaterialDeliveryReceive::getReceiveRequestName).distinct().collect(Collectors.toList()); + } + // 异常 + if (nameList.isEmpty()) { + throw new GlobalException("不存在该单据"); + } + + // 获取采购单明细及批次 + String deliveryType = params.get("deliveryType"); + if (deliveryType.equals(DeliveryTypeEnums.BATCH.getCode())) { + // 批次 + return AjaxResult.me().setSuccess(true).setResultObj( + deliveryService.getStoreDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName)); + } else { + // 辅材 + return AjaxResult.me().setSuccess(true).setResultObj( + deliveryService.getMaterialDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName)); + } + } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java index 5722f96..fda6dd3 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/InvoiceController.java @@ -2007,7 +2007,7 @@ public class InvoiceController { MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class); String shipRequestName2 = materialShipRequest.getShipRequestName(); //根据单据类型判断生产订单类型,如果是领料单且单据类型是复卷和返工的不卡控批次质量状态 - String dTypeSql = "SELECT M.PRODUCTORDERTYPE,M.PRODUCTORDERNO FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; + String dTypeSql = "SELECT M.AUART FROM MATERIALSHIPREQUESTDETAIL M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; Map hashMap3 = new HashMap (); hashMap3.put("SHIPREQUESTNAME", shipRequestName2); String productOrderType = ""; @@ -2015,8 +2015,8 @@ public class InvoiceController { List> queryForListW = new ArrayList<>(); List> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3); if (queryForList3 != null && queryForList3.size() > 0) { - productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString(); - productOrderNo = queryForList3.get(0).get("PRODUCTORDERNO") == null ? "" :queryForList3.get(0).get("PRODUCTORDERNO").toString(); + productOrderType = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString(); + productOrderNo = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString(); // 查询工单维护表 是否有对应的生产订单 String workSql = "SELECT w.WORKORDER FROM WORKORDER w WHERE w.WORKORDER =:WORKORDER"; @@ -2065,14 +2065,12 @@ public class InvoiceController { if (!"Stocked".equals(stockState)) { return AjaxResult.me().setSuccess(false).setMessage("条码不在库!"); } - if (!"OK".equals(packinggrade) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) - && !"4455-Cxx-10".equals(productOrderType) && !"4455-Cxx-01".equals(productOrderType) - && !"5X-Cxx-07".equals(productOrderType)) && (queryForListW == null || queryForListW.size() < 1)) {//复卷,返工工单 + if (!"OK".equals(packinggrade) && (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType)) + && (queryForListW == null || queryForListW.size() < 1)) {//复卷,返工工单 return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次不合格不能出库!"); } - if (!"1".equals(exp) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) - && !"4455-Cxx-10".equals(productOrderType) && !"4455-Cxx-01".equals(productOrderType) - && !"5X-Cxx-07".equals(productOrderType)) && (queryForListW == null || queryForListW.size() < 1)) {//复卷,返工工单 + if (!"1".equals(exp) && (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType)) + && (queryForListW == null || queryForListW.size() < 1)) {//复卷,返工工单 return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次已过期!"); } if (!"END".equals(oqaresultstate)) { @@ -2185,13 +2183,13 @@ public class InvoiceController { MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class); String shipRequestName2 = materialShipRequest.getShipRequestName(); //根据单据类型判断生产订单类型,如果是领料单且单据类型是复卷和返工的不卡控批次质量状态 - String dTypeSql = "SELECT M.PRODUCTORDERTYPE FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; + String dTypeSql = "SELECT M.AUART FROM MATERIALSHIPREQUESTDETAIL M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; Map hashMap3 = new HashMap (); hashMap3.put("SHIPREQUESTNAME", shipRequestName2); String productOrderType = ""; List> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3); if (queryForList3 != null && queryForList3.size() > 0) { - productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString(); + productOrderType = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString(); } String type = materialShipRequest.getType();//Assign 备货 Dessign 解绑 String materialPackingName = materialShipRequest.getMaterialPackingName();//标签 @@ -2235,14 +2233,12 @@ public class InvoiceController { if (!"Stocked".equals(stockState)) { return AjaxResult.me().setSuccess(false).setMessage("条码不在库!"); } - if (!"OK".equals(packinggrade) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) - && !"4455-Cxx-10".equals(productOrderType) && !"455-Cxx-01".equals(productOrderType) - && !"5X-Cxx-07".equals(productOrderType))) {//复卷,返工工单 + if (!"OK".equals(packinggrade) && + (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType))) {//复卷,返工工单 return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次不合格不能出库!"); } - if (!"1".equals(exp) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) - && !"4455-Cxx-10".equals(productOrderType) && !"455-Cxx-01".equals(productOrderType) - && !"5X-Cxx-07".equals(productOrderType))) {//复卷,返工工单 + if (!"1".equals(exp) && + (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType))) {//复卷,返工工单 return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次已过期!"); } if (!"END".equals(oqaresultstate)) { diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/LabelController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/LabelController.java index 285882f..e283cc0 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/LabelController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/LabelController.java @@ -13,6 +13,7 @@ import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl; import com.cim.idm.response.BaseResponse; import com.cim.idm.response.RespGenerator; +import com.cim.idm.service.CostCenterService; import com.cim.idm.service.LabelService; import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.EventInfoUtil; @@ -45,6 +46,8 @@ public class LabelController { @Resource private LabelService labelService; + @Resource + private CostCenterService costCenterService; // @Resource // private LabelPrintInfoService labelPrintInfoService; @@ -400,112 +403,11 @@ public class LabelController { MaterialPackingServiceProxy.getMaterialPackingService().setEvent(listKey, makeEventInfo, setEventInfo); return AjaxResult.me().setSuccess(true).setMessage("实际规格更新成功"); } + //更新业助 @RequestMapping(value = "/updateCareerAssistance", method = RequestMethod.POST) - public AjaxResult updateCareerAssistance(@RequestBody JSONObject in) { - - MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class); - List boxList = sl.getBoxList();//CAREER_ASSISTANCE - String user = sl.getUser(); - String siteName = sl.getSiteName(); - String career_ASSISTANCE = sl.getRemark(); - String CUSTOMNO = sl.getCUSTOMNO(); - String pc = "("; - for (MaterialPacking materialPacking : boxList) { - String career_ASSISTANCE2 = materialPacking.getCAREER_ASSISTANCE(); - String CUSTOMNO2 = materialPacking.getCUSTOMNO(); - String materialPackingName = materialPacking.getMaterialPackingName(); - pc += "'" + materialPackingName + "',"; - String materialspecname = materialPacking.getMaterialSpecName(); - String charge = materialPacking.getCharge(); - String phase = materialPacking.getPHASE(); -// SetEventInfo setEventInfo = new SetEventInfo(); - Map hashMap = new HashMap (); -// hashMap.put("CAREER_ASSISTANCE", career_ASSISTANCE); - if (career_ASSISTANCE2 != null && !"".equals(career_ASSISTANCE2)) { - hashMap.put("CAREER_ASSISTANCE2", career_ASSISTANCE2); - } - if (CUSTOMNO2 != null && !"".equals(CUSTOMNO2)) { - hashMap.put("CUSTOMNO2", CUSTOMNO2); - } - - hashMap.put("SITENAME", siteName); - hashMap.put("MATERIALPACKINGNAME", materialPackingName); - hashMap.put("MATERIALSPECNAME", materialspecname); - hashMap.put("CHARGE", charge); - hashMap.put("PHASE", phase); - hashMap.put("IS_CHECK", "N"); - hashMap.put("USERID", user); - hashMap.put("CAREER_ASSISTANCE", career_ASSISTANCE); - hashMap.put("CUSTOMNO", CUSTOMNO); -// setEventInfo.setUserColumns(hashMap); -// MaterialPackingKey mk = new MaterialPackingKey(siteName,materialPackingName); -// EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("UpdateCareerAssistance", user, "UpdateCareerAssistance"); -// MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mk, makeEventInfo, setEventInfo); - -// String yzSql = "SELECT * FROM USERINFO WHERE U.USERNAME = A.CAREER_ASSISTANCE"; - String yzSql = "SELECT U.USERNAME FROM USERINFO U WHERE U.USERID = :USERID "; - - List> userQueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(yzSql, hashMap); - - - if(Objects.isNull(userQueryForList) || userQueryForList.isEmpty() || userQueryForList.size() < 1) { -// throw new RuntimeException("业助名称不正确或未注册"); - return AjaxResult.me().setSuccess(false).setMessage("业助名称不正确或未注册"); - }else { - String userName = userQueryForList.get(0).get("USERNAME") == null ? "" : userQueryForList.get(0).get("USERNAME").toString(); - if ((career_ASSISTANCE2 != null || !"".equals(career_ASSISTANCE2)) && !userName.equals(career_ASSISTANCE2)) { - return AjaxResult.me().setSuccess(false).setMessage("业助" + career_ASSISTANCE2 + "不能被修改"); - } - if ((career_ASSISTANCE != null || !"".equals(career_ASSISTANCE)) && !userName.equals(career_ASSISTANCE)) { - return AjaxResult.me().setSuccess(false).setMessage("业助" + career_ASSISTANCE + "不能被修改"); - } - } - } - pc += "'')"; - - String updateSql = "MERGE\r\n" + - "INTO\r\n" + - " MATERIALPACKINGCHECK T\r\n" + - " USING (\r\n" + - " SELECT\r\n" + - " *\r\n" + - " FROM\r\n" + - " MATERIALPACKING\r\n" + - " WHERE\r\n" + - " MATERIALPACKINGNAME IN " + pc + " ) M " + - "ON\r\n" + - " (T.MATERIALPACKINGNAME = M.MATERIALPACKINGNAME)\r\n" + - " WHEN MATCHED THEN\r\n" + - "UPDATE\r\n" + - "SET\r\n" + - " T.CAREER_ASSISTANCE = :CAREER_ASSISTANCE,\r\n" + - " T.CUSTOMNO = :CUSTOMNO, T.IS_CHECK = 'N' \r\n" + - " WHEN NOT MATCHED THEN\r\n" + - "INSERT\r\n" + - " (SITENAME,\r\n" + - " MATERIALPACKINGNAME,\r\n" + - " MATERIALSPECNAME,\r\n" + - " CHARGE,\r\n" + - " PHASE,\r\n" + - " IS_CHECK,\r\n" + - " CAREER_ASSISTANCE,\r\n" + - " CUSTOMNO)\r\n" + - "VALUES (M.SITENAME,\r\n" + - "M.MATERIALPACKINGNAME,\r\n" + - "M.MATERIALSPECNAME,\r\n" + - "M.CHARGE,\r\n" + - "M.PHASE,\r\n" + - "'N',\r\n" + - ":CAREER_ASSISTANCE,\r\n" + - ":CUSTOMNO)" ; - - Map map = new HashMap (); - map.put("CAREER_ASSISTANCE", career_ASSISTANCE); - map.put("CUSTOMNO", CUSTOMNO); - IDMFrameServiceProxy.getSqlTemplate().update(updateSql, map); - - + public AjaxResult updateCareerAssistance(@RequestBody JSONObject in) { + costCenterService.updateCareerAssistanceNew(in); return AjaxResult.me().setSuccess(true).setMessage("业助更新成功"); } @@ -520,6 +422,21 @@ public class LabelController { String customno = (String)param.get("CUSTOMNO"); String user = (String)param.get("user"); String is_check = (String)param.get("IS_CHECK"); + String SALESHIPREQUESTNAME = (String)param.get("SALESHIPREQUESTNAME"); + String SALESHIPREQUESTDETAILNAME = (String)param.get("SALESHIPREQUESTDETAILNAME"); + String POSTSTATUS = (String)param.get("POSTSTATUS"); + String MATERIALPACKINGNAME = (String)param.get("MATERIALPACKINGNAME"); + + String updatePackingSql ="UPDATE MATERIALPACKING SET SALESHIPREQUESTNAME = :SALESHIPREQUESTNAME, " + + "SALESHIPREQUESTDETAILNAME = :SALESHIPREQUESTDETAILNAME, " + + "POSTSTATUS = :POSTSTATUS WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + Map bindMapPac = new HashMap(); + bindMapPac.put("SALESHIPREQUESTNAME", SALESHIPREQUESTNAME); + bindMapPac.put("SALESHIPREQUESTDETAILNAME", SALESHIPREQUESTDETAILNAME); + bindMapPac.put("POSTSTATUS", POSTSTATUS); + bindMapPac.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME); + IDMFrameServiceProxy.getSqlTemplate().update(updatePackingSql, bindMapPac); + SetSpecEventInfo info = new SetSpecEventInfo(); Map bindMap = new HashMap(); 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 db661f8..d63697e 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 @@ -619,4 +619,43 @@ public class MaterialReceiveActController { } return billCode; } + + /** + * 到货单入库过账 + * 2025-05-14 + * @param in receiveRequestName到货单号 + * @return 返回信息 + */ + @RequestMapping(value = "/commitDeliveryStockInToSAP", method = RequestMethod.POST) + public AjaxResult CommitDeliveryStockInToSAP(@RequestBody JSONObject in ) { + try { + TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class); + StoreDetailDto storeDetailDto = new StoreDetailDto(); + storeDetailDto.setDocumentName(trackOutBoDto.getReceiveRequestName()); + storeDetailDto.setSiteName(trackOutBoDto.getSiteName()); + MaterialDelivery materialDelivery = deliveryService.getByKey(storeDetailDto); + if (Objects.nonNull(materialDelivery)) { + String user = trackOutBoDto.getUser(); + String opCode = trackOutBoDto.getOpCode(); + String commitDate = trackOutBoDto.getCommitDate(); + String siteName = trackOutBoDto.getSiteName(); + toSAPServiceImpl.DeliveryToSAPMontage(materialDelivery.getDeliveryName(), siteName, user, commitDate,opCode,ReceiveTypeEnums.getsaleReturn()); + // 到货单据更新状态 + if (Objects.nonNull(materialDelivery.getDeliveryName())) { + DeliveryEditDto deliveryEditDto = new DeliveryEditDto(); + deliveryEditDto.setDeliveryName(trackOutBoDto.getReceiveRequestName()); + deliveryEditDto.setSiteName(trackOutBoDto.getSiteName()); + // @TODO 完成状态下,更新为 DeliveryStateEnums.FINISH + deliveryEditDto.setDeliveryState(DeliveryStateEnums.DOING.getCode()); + deliveryService.editDelivery(deliveryEditDto); + } + } else { + return AjaxResult.me().setSuccess(false).setMessage("到货单:" + trackOutBoDto.getReceiveRequestName() + "不存在").setErrorCode(400); + } + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.me().setSuccess(false).setMessage(e.toString()); + } + return AjaxResult.me().setSuccess(true); + } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleOutController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleOutController.java index 81133f5..87d9f2a 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleOutController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/SaleOutController.java @@ -888,14 +888,14 @@ public class SaleOutController { MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class); String shipRequestName2 = materialShipRequest.getShipRequestName(); //根据单据类型判断生产订单类型,如果是领料单且单据类型是复卷和返工的不卡控批次质量状态 - String dTypeSql = "SELECT M.PRODUCTORDERTYPE,M.PRODUCTORDERNO FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; + String dTypeSql = "SELECT M.AUART FROM MATERIALSHIPREQUESTDETAIL M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; Map hashMap3 = new HashMap (); hashMap3.put("SHIPREQUESTNAME", shipRequestName2); String productOrderType = ""; List> queryForListW = new ArrayList<>(); List> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3); if (queryForList3 != null && queryForList3.size() > 0) { - productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString(); + productOrderType = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString(); } // 查询工单维护表 是否有对应的生产订单 @@ -905,9 +905,8 @@ public class SaleOutController { queryForListW = IDMFrameServiceProxy.getSqlTemplate().queryForList(workSql, hashMapW); String IsCheck = "N"; // 是否可以为不良和过期 - if (("55A2-02".equals(productOrderType) || "55A2-Cxx-08".equals(productOrderType) - || "4455-Cxx-10".equals(productOrderType) || "4455-Cxx-01".equals(productOrderType) - || "5X-Cxx-07".equals(productOrderType)) || (queryForListW != null && !queryForListW.isEmpty())) {//复卷,返工工单 + if (("ZP01".equals(productOrderType) || "ZP05".equals(productOrderType)) || + (queryForListW != null && !queryForListW.isEmpty())) {//复卷,返工工单 IsCheck = "Y"; } return AjaxResult.me().setResultObj(IsCheck); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/dao/CostCenterDao.java b/zi-wms-pda/src/main/java/com/cim/idm/dao/CostCenterDao.java index 27dc51c..c7fb591 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/dao/CostCenterDao.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/dao/CostCenterDao.java @@ -2,13 +2,32 @@ package com.cim.idm.dao; import com.cim.idm.model.CostCenter; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; @Component @Mapper public interface CostCenterDao { List getCostCenter(); + List> getUserInfo(); + + void updatePacking(@Param("SALESHIPREQUESTNAME") String SALESHIPREQUESTNAME, + @Param("SALESHIPREQUESTDETAILNAME") String SALESHIPREQUESTDETAILNAME, + @Param("POSTSTATUS") String POSTSTATUS, + @Param("MATERIALPACKINGNAME") String MATERIALPACKINGNAME); + + void insertPackingChenk(@Param("SALESHIPREQUESTNAME") String SALESHIPREQUESTNAME, + @Param("SALESHIPREQUESTDETAILNAME") String SALESHIPREQUESTDETAILNAME, + @Param("MATERIALPACKINGNAME") String MATERIALPACKINGNAME, + @Param("SITENAME") String SITENAME, + @Param("materialSpecName") String materialSpecName, + @Param("charge") String charge, + @Param("phase") String phase, + @Param("customno") String customno, + @Param("careerAssistance") String careerAssistance, + @Param("POSTSTATUS") String POSTSTATUS); } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/po/MaterialReceiveRequest.java b/zi-wms-pda/src/main/java/com/cim/idm/model/po/MaterialReceiveRequest.java index 658e08c..6d16252 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/po/MaterialReceiveRequest.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/po/MaterialReceiveRequest.java @@ -29,5 +29,9 @@ public class MaterialReceiveRequest { private String phase; private String CUSTOMNO; private String truegg; + /**销售订单*/ + private String SALESHIPREQUESTNAME; + /**销售订单行号*/ + private String SALESHIPREQUESTDETAILNAME; private List boxList; } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/CostCenterService.java b/zi-wms-pda/src/main/java/com/cim/idm/service/CostCenterService.java index a8cb7da..0e7d2a6 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/CostCenterService.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/CostCenterService.java @@ -1,9 +1,14 @@ package com.cim.idm.service; +import com.alibaba.fastjson.JSONObject; import com.cim.idm.model.CostCenter; import java.util.List; +import java.util.Map; public interface CostCenterService { List getCostCenter(); + List> getUserInfo(); + + void updateCareerAssistanceNew(JSONObject in); } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java index cbcaafb..7648a00 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/CostCenterServiceImpl.java @@ -1,13 +1,20 @@ package com.cim.idm.service.Impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.cim.idm.dao.CostCenterDao; import com.cim.idm.model.CostCenter; +import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.service.CostCenterService; +import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; @Service("CostCenterService") @Slf4j @@ -19,4 +26,54 @@ public class CostCenterServiceImpl implements CostCenterService { public List getCostCenter() { return costCenterDao.getCostCenter(); } + + @Override + public List> getUserInfo() { + return costCenterDao.getUserInfo(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateCareerAssistanceNew(JSONObject in) { + MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class); + List boxList = sl.getBoxList(); + String SALESHIPREQUESTNAME = sl.getSALESHIPREQUESTNAME(); + String SALESHIPREQUESTDETAILNAME = sl.getSALESHIPREQUESTDETAILNAME(); + String siteName = sl.getSiteName(); + // 借用人 + String career_ASSISTANCE = sl.getRemark(); + for (MaterialPacking materialPacking : boxList) { + // 条码 + String materialPackingName = materialPacking.getMaterialPackingName(); + // 原销售订单号 + String saleshiprequestname = materialPacking.getSALESHIPREQUESTNAME(); + // 物料编号 + String materialSpecName = materialPacking.getMaterialSpecName(); + // 批次号 + String charge = materialPacking.getCharge(); + // 阶段 + String phase = materialPacking.getPHASE(); + // 客户 + String customno = materialPacking.getCUSTOMNO(); + // 过账状态 + String POSTSTATUS = ""; + if (StringUtils.isEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME)){ + POSTSTATUS = "0"; + } else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isEmpty(SALESHIPREQUESTNAME)){ + POSTSTATUS = "1"; + } else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME)){ + POSTSTATUS = "2"; + } + if (StringUtils.isEmpty(materialPacking.getCAREER_ASSISTANCE()) || materialPacking.getCAREER_ASSISTANCE().equals(career_ASSISTANCE)){ + // 更新 + costCenterDao.updatePacking(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME, POSTSTATUS, materialPackingName); + } else { + // 新增 + costCenterDao.insertPackingChenk(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME, + materialPackingName, siteName, materialSpecName, charge,phase, + customno, career_ASSISTANCE,POSTSTATUS); + } + } + + } } 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 2ccc440..4b1e2af 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 @@ -15,9 +15,11 @@ import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceUtil import com.cim.idm.mwmsextend.materialshiprequest.service.MaterialShipRequestServiceImpl; import com.cim.idm.service.ChargeSplitService; import com.cim.idm.service.InvoiceService; +import com.cim.idm.service.QMSService; import com.cim.idm.service.impl.MESServiceImpl; import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.util.MessageLogUtil; +import com.cim.idm.util.NCHttpUtil; import com.cim.idm.util.ToSAPMessageUtil; import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.CodeGenerator; @@ -39,7 +41,9 @@ import com.cim.idm.wmspackage.materialreceivetactdetail.management.data.Material import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import groovy.lang.Lazy; +import io.micrometer.core.instrument.util.StringUtils; import org.apache.commons.collections4.MapUtils; +import org.quartz.SimpleTrigger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,8 @@ public class InvoiceServiceImpl implements InvoiceService { @Autowired private ToSAPServiceImpl toSAPService; - + @Autowired + private QMSService qmsService; @Autowired @Lazy private ChargeSplitService chargeSplitService; @@ -3433,6 +3438,11 @@ public class InvoiceServiceImpl implements InvoiceService { // billCode=toSAPService.saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList); billCode=saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate); untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo); + //单据类型等于ZLF0-ZLF9,物料编码以7开头都属于成品胶水需要调用QMS质检接口 + String message = checkShipRequestTypeSendIQC(commitDate, siteName ,shipRequestName, makeEventInfo, materialPackingKeyList); + if (StringUtils.isNotEmpty(message)) { + throw new CustomException(message); + } break; case "08": // 委外 case "OEM": // 委外 @@ -3568,4 +3578,99 @@ public class InvoiceServiceImpl implements InvoiceService { String sendData = MainData.toJSONString(); return sendData; } + + public String checkShipRequestTypeSendIQC(String shippingDate,String siteName, String shipRequestName, EventInfo eventInfo, List materialPackingNameList) throws Exception { + String message = ""; + JSONArray jsonArray = new JSONArray(); + Map jsonObjectMap = new HashMap<>(); + String sql=" SELECT \n" + + "MP.SITENAME,\n" + + "MP.SHIPREQUESTNAME,\n" + + "MP.MATERIALSPECNAME,\n" + + "MP.MATERIALPACKINGNAME,\n" + + "MP.REMARK,\n" + + "MP.CHARGE,\n" + + "MP.SDKTRUEID,\n" + + "MS.DESC_CN\n" + + "FROM\n" + + "MATERIALPACKING MP \n" + + "LEFT JOIN MATERIALSPEC MS ON MP.SITENAME = MS.SITENAME AND MP.MATERIALSPECNAME = MS.MATERIALSPECNAME\n" + + "WHERE\n" + + "MP.SITENAME =:SITENAME\n" + + "AND MP.SHIPREQUESTNAME =:SHIPREQUESTNAME\n" + + "AND MP.MATERIALPACKINGNAME IN (:BOXLIST)\n" + + "AND MP.MATERIALSPECNAME LIKE '7%' "; + + Map hashMap = new HashMap(); + hashMap.put("SHIPREQUESTNAME", shipRequestName); + hashMap.put("SITENAME", siteName); + hashMap.put("BOXLIST", materialPackingNameList); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); + if (!queryForList.isEmpty()){ + + for (int i = 0; i < queryForList.size(); i++) { + String source = "wms"; + String deliveryNumber = queryForList.get(i).get("SHIPREQUESTNAME") == null ? "" : queryForList.get(i).get("SHIPREQUESTNAME").toString(); + String materialCode = queryForList.get(i).get("MATERIALSPECNAME") == null ? "" : queryForList.get(i).get("MATERIALSPECNAME").toString(); + String materialName = queryForList.get(i).get("DESC_CN") == null ? "" : queryForList.get(i).get("DESC_CN").toString(); + String specification = queryForList.get(i).get("SDKTRUEID") == null ? "" : queryForList.get(i).get("SDKTRUEID").toString(); + String materialPackingName = queryForList.get(i).get("MATERIALPACKINGNAME") == null ? "" : queryForList.get(i).get("MATERIALPACKINGNAME").toString(); + if (jsonObjectMap.containsKey(materialName)){ + JSONObject jsonObject = jsonObjectMap.get(materialName); + String shipmentBatch = jsonObject.getString("shipmentBatch"); + jsonObject.put("shipmentBatch",shipmentBatch + "," + materialPackingName); + }else { + JSONObject jsonObject = new JSONObject(true); + //必传字段 + jsonObject.put("source", source); + //出货日期,取页面上的过账日期 + jsonObject.put("shippingDate", shippingDate); +// 发货单号 + jsonObject.put("deliveryNumber", deliveryNumber); +// 料号 + jsonObject.put("materialCode", materialCode); +// 发货品名 + jsonObject.put("materialName", materialName); +// 规格 + jsonObject.put("specification", specification); + //发货批次号 + jsonObject.put("shipmentBatch", materialPackingName); + jsonObjectMap.put(materialName, jsonObject); + //非必传字段 + /** + * String inspectionNumber = queryForList.get(i).get("SHIPREQUESTNAME") == null ? "" : queryForList.get(i).get("SHIPREQUESTNAME").toString(); + * String quantity = queryForList.get(i).get("MATERIALQUANTITY") == null ? "" : queryForList.get(i).get("MATERIALQUANTITY").toString(); + * String inspectBatch = queryForList.get(i).get("CHARGE") == null ? "" : queryForList.get(i).get("CHARGE").toString(); + * String samplingQuantity = queryForList.get(i).get("") == null ? "" : queryForList.get(i).get("").toString(); + * String samplingSpecification = queryForList.get(i).get("") == null ? "" : queryForList.get(i).get("").toString(); + * String remark = queryForList.get(i).get("REMARK") == null ? "" : queryForList.get(i).get("REMARK").toString(); + * String materialGroup = queryForList.get(i).get("MATERIALPROCESSGROUPNAME") == null ? "" : queryForList.get(i).get("MATERIALPROCESSGROUPNAME").toString(); + // 发货数量 + jsonObject.put("quantity", quantity); + // 客户名称 + jsonObject.put("customName", customName); + // 客户代码 + jsonObject.put("customCode", customCode); + // 检验单号 + jsonObject.put("inspectionNumber", inspectionNumber); + //检验批号 + jsonObject.put("inspectBatch", inspectBatch); + + // 抽检数量 + jsonObject.put("samplingQuantity", samplingQuantity); + // 抽检规格 + jsonObject.put("samplingSpecification", samplingSpecification); + // 备注 + jsonObject.put("remark", remark); + // 物料组 + jsonObject.put("materialGroup", materialGroup); + */ + } + } + jsonArray.addAll(jsonObjectMap.values()); + String jsonArrayJSONString = jsonArray.toJSONString(); + message = qmsService.sendQMSByUrlJson(jsonArrayJSONString, "/opc/addShipmentInspection",eventInfo); + } + return message; + } } diff --git a/zi-wms-pda/src/main/resources/com/cim/idm/dao/CostCenterDao.xml b/zi-wms-pda/src/main/resources/com/cim/idm/dao/CostCenterDao.xml index 3079a72..15aa532 100644 --- a/zi-wms-pda/src/main/resources/com/cim/idm/dao/CostCenterDao.xml +++ b/zi-wms-pda/src/main/resources/com/cim/idm/dao/CostCenterDao.xml @@ -6,4 +6,26 @@ select id, cost_code costCode, cost_name costName, erp_factory erpFactory, department, division from cost_center + + + + + UPDATE MATERIALPACKING SET + SALESHIPREQUESTNAME = #{SALESHIPREQUESTNAME, jdbcType=VARCHAR}, + SALESHIPREQUESTDETAILNAME = #{SALESHIPREQUESTDETAILNAME, jdbcType=VARCHAR}, + POSTSTATUS = #{POSTSTATUS, jdbcType=VARCHAR} + WHERE MATERIALPACKINGNAME = #{MATERIALPACKINGNAME, jdbcType=VARCHAR} + + + + insert into MATERIALPACKINGCHECK(MATERIALPACKINGNAME,SALESHIPREQUESTNAME, + SALESHIPREQUESTDETAILNAME,SITENAME,IS_CHECK, MATERIALSPECNAME, + CHARGE,PHASE,CUSTOMNO,CAREER_ASSISTANCE,POSTSTATUS) + values(#{MATERIALPACKINGNAME, jdbcType=VARCHAR}, #{SALESHIPREQUESTNAME, jdbcType=VARCHAR}, + #{SALESHIPREQUESTDETAILNAME, jdbcType=VARCHAR}, #{SITENAME, jdbcType=VARCHAR}, 'N', + #{materialSpecName, jdbcType=VARCHAR}, #{charge, jdbcType=VARCHAR}, #{phase, jdbcType=VARCHAR}, + #{customno, jdbcType=VARCHAR},#{careerAssistance, jdbcType=VARCHAR}, #{POSTSTATUS, jdbcType=VARCHAR}) + \ No newline at end of file diff --git a/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml b/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml index e3507a0..da8fc28 100644 --- a/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml +++ b/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml @@ -285,7 +285,7 @@