diff --git a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/QMSServiceImpl.java b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/QMSServiceImpl.java index ace0053..6fa111a 100644 --- a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/QMSServiceImpl.java +++ b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/QMSServiceImpl.java @@ -48,7 +48,7 @@ public class QMSServiceImpl implements QMSService{ " TO_CHAR(T.RECEIVETIME ,'YYYY-MM-DD' ) deliveryDate, \r\n" + " T.RECEIVEREQUESTNAME , \r\n" + " M3.MATERIALSPECNAME materialCode, \r\n" + - " M3.DESC_CN materialName, \r\n" + + " M3.DESCRIPTION materialName, \r\n" + " M3.MATERIALGROUP materialGroup, \r\n" + " COUNT(DISTINCT T.CHARGE ) batchQuantity, \r\n" + " T.UNIT quantityUnit, \r\n" + @@ -410,7 +410,7 @@ public class QMSServiceImpl implements QMSService{ " T.LOCATIONNAME,\r\n" + " TO_CHAR(T.RECEIVETIME, 'YYYY-MM-DD') deliveryDate,\r\n" + " M3.MATERIALSPECNAME materialCode,\r\n" + - " M3.DESC_CN materialName,\r\n" + + " M3.DESCRIPTION materialName,\r\n" + " M3.MATERIALGROUP materialGroup,\r\n" + " COUNT(DISTINCT T.CHARGE) batchQuantity,\r\n" + " T.UNIT quantityUnit,\r\n" + @@ -479,41 +479,53 @@ public class QMSServiceImpl implements QMSService{ public String sendToIQCByDataList(String opCode, String siteName, String deliveryName) throws CustomException { String sql = " \n" + - "SELECT \n" + + "WITH AA AS (\n" + + "\tSELECT\n" + "\t\tP.SITENAME,\n" + - " \t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" + - "\t\tP.LOCATIONNAME,\t\n" + - "\t\tTO_CHAR(P.RECEIVETIME ,'YYYY-MM-DD' ) deliveryDate,\n" + - "\t\tDR.RECEIVEREQUESTNAME,\n" + + "\t\tP.RECEIVEREQUESTNAME,\n" + + "\t\tP.ERPFACTORY,\n" + + "\t\tP.ERPLOCATION,\n" + "\t\tP.MATERIALSPECNAME AS materialCode,\n" + - "\t\tMP.DESC_CN AS materialName,\n" + - "\t\tMP.MATERIALGROUP AS materialGroup,\n" + + "\t\tP.LOCATIONNAME,\t\n" + + "\t\tP.UNIT AS quantityUnit,\n" + + "\t\tLISTAGG(DISTINCT P.CHARGE , ';') WITHIN GROUP (ORDER BY P.CHARGE) AS LOTS,\n" + "\t\tCOUNT(DISTINCT P.CHARGE ) batchQuantity,\n" + - " P.UNIT AS quantityUnit,\n" + - "\t\tSP.SUPPLIERNO AS SUPPLIERCODE,\n" + - "\t\tSP.SUPPLIERNAME,\n" + - "\t\tLISTAGG(DISTINCT P.CHARGE , ';') WITHIN GROUP (ORDER BY P.CHARGE) AS LOTS\n" + - "\t\t\tFROM\n" + - " MATERIALPACKING P \n" + - "LEFT JOIN SUPPLIER SP\tON SP.SUPPLIERNO = 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 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 WHERE\n" + - " D.SITENAME =:SITENAME\n" + - " AND D.DELIVERYNAME =:DELIVERYNAME\n" + - " AND D.DELIVERYSTATE = '02'\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 AND P.STOCKSTATE = 'Created' \n" + + "\t\tP.SUPPLIERNAME\n" + + "\tFROM\n" + + "\t\tMATERIALPACKING P \n" + + "\tWHERE\n" + + "\t\tP.RECEIVEREQUESTNAME =:DELIVERYNAME\n" + "\t\tGROUP BY \n" + - "\t\tP.SITENAME,EL.DESCRIPTION,TO_CHAR(P.RECEIVETIME ,'YYYY-MM-DD' ),\n" + - "\t\tP.MATERIALSPECNAME,MP.DESC_CN, MP.MATERIALGROUP,P.UNIT,SP.SUPPLIERNO, SP.SUPPLIERNAME,\n" + - "\t\tSUBSTR(P.TRUEGG , 1, INSTR(P.TRUEGG , '*') - 1) ,P.LOCATIONNAME,DR.RECEIVEREQUESTNAME "; + "\t\tP.SITENAME,\n" + + "\t\tP.RECEIVEREQUESTNAME,\n" + + "\t\tP.ERPFACTORY,\n" + + "\t\tP.ERPLOCATION,\n" + + "\t\tP.MATERIALSPECNAME,\n" + + "\t\tP.LOCATIONNAME,\n" + + "\t\tP.UNIT,\n" + + "\t\tP.SUPPLIERNAME\n" + + "\t\t)\n" + + "\t\t\n" + + "SELECT\n" + + "\tAA.SITENAME,\n" + + "AA.RECEIVEREQUESTNAME,\n" + + "\t\tAA.ERPFACTORY,\n" + + "\t\tAA.ERPLOCATION,\n" + + "\t\tAA.materialCode,\n" + + "\t\tAA.LOCATIONNAME,\t\n" + + "\t\tAA.quantityUnit,\n" + + "\t\tAA.LOTS,\n" + + "\t\tAA.batchQuantity,\n" + + "\t\tAA.SUPPLIERNAME,\n" + + "\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" + + "\t\tMP.MATERIALGROUP,\n" + + "\t\tMP.DESCRIPTION\n" + + "FROM\n" + + "AA\n" + + "LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = AA.ERPLOCATION\n" + + "LEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = AA.materialCode\n" + + "WHERE\n" + + "\tAA.RECEIVEREQUESTNAME =:DELIVERYNAME "; Map hashMap = new HashMap (); hashMap.put("SITENAME", siteName); hashMap.put("DELIVERYNAME", deliveryName); 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 052aec3..6874096 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 @@ -6602,53 +6602,43 @@ public class ToSAPServiceImpl { List materialPackingKeyList = new ArrayList<>(); List> qmsDataList = new ArrayList<>(); //依据采购订单,查询待入库的物料(MATERIALPACKING) - String querySql = " SELECT " + - " DR.DELIVERYNUM AS MATERIALQUANTITY,\n" + - " DR.RECEIVEREQUESTNAME,\n" + - " DR.RECEIVEREQUESTDETAILNAME,\n" + - " P.ERPLOCATION,\n" + - " P.ERPFACTORY,\n" + - " P.UNIT,\n" + - "\t\tSUM(P.FQTY) AS FQTY,\n" + - " P.FUNIT,\n" + - " P.REMARK,\n" + - "\t\tP.OQARESULTSTATE,\n" + - "\t\tBF.IQCFLAG,\n" + - " P.OQARESULT,\n" + - "\t\tR.RECEIVEREQUESTTYPE,\n" + - "\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\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" + - "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 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 " + + String querySql = " \n" + + "\t\t\n" + + "\t\tWITH AA AS (\n" + + "\tSELECT DISTINCT\n" + + "\t\tP.RECEIVEREQUESTNAME,\n" + + "\t\tP.ERPFACTORY,\n" + + "\t\tP.ERPLOCATION,\n" + + "\t\tP.MATERIALSPECNAME \n" + + "\tFROM\n" + + "\t\tMATERIALPACKING P \n" + + "\tWHERE\n" + + "\t\tP.RECEIVEREQUESTNAME =:DELIVERYNAME\n" + + "\t\tAND P.STOCKSTATE = 'Created' \n" + + "\t) \n" + + "SELECT\n" + + "\tDR.DELIVERYNAME,\n" + + "\tDR.DELIVERYNUM AS MATERIALQUANTITY,\n" + + "\tDR.RECEIVEREQUESTNAME,\n" + + "\tDR.MATERIALSPECNAME,\n" + + "\tDR.RECEIVEREQUESTDETAILNAME,\n" + + "\tAA.ERPLOCATION,\n" + + "\tAA.ERPFACTORY,\n" + + "\tRQ.SUPPLIERNO AS SUPPLIERNAME,\n" + + "\tRD.MATERIALUNIT AS UNIT,\n" + + "\tMP.FUNIT,\n" + + "\tBF.IQCFLAG\n" + + "FROM\n" + + "\tMATERIALDELIVERYRECEIVE DR\n" + + "\tLEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON DR.RECEIVEREQUESTNAME = RD.RECEIVEREQUESTNAME AND DR.RECEIVEREQUESTDETAILNAME = RD.RECEIVEREQUESTDETAILNAME\n" + + "\tLEFT JOIN MATERIALRECEIVEREQUEST RQ ON RQ.RECEIVEREQUESTNAME = RD.RECEIVEREQUESTNAME\n" + + "\tLEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = DR.MATERIALSPECNAME\n" + + "\tLEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = RD.MATERIALSPECNAME \n" + + "\tAND BF.ERPFACTORY = RD.ERPFACTORY\n" + + "\tLEFT JOIN AA ON DR.MATERIALSPECNAME = AA.MATERIALSPECNAME \n" + "WHERE\n" + - " D.SITENAME =:SITENAME\n" + - " AND D.DELIVERYNAME =:DELIVERYNAME\n" + - " AND D.DELIVERYSTATE = '02'\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" + - " 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,DR.DELIVERYNUM "; + "\tDELIVERYNAME =:DELIVERYNAME\n" + + "\t " ; Map hashMap = new HashMap(); hashMap.put("DELIVERYNAME", deliveryName); hashMap.put("SITENAME", siteName); @@ -6674,7 +6664,7 @@ public class ToSAPServiceImpl { 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("BPMNG", mm.get("FQTY") == null ? "0" : mm.get("FQTY"));//采购价格单位数量 item.put("BPRME", mm.get("FUNIT"));//采购价格单位 item.put("EBELN", mm.get("RECEIVEREQUESTNAME")); @@ -6690,9 +6680,9 @@ public class ToSAPServiceImpl { // String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X"; item.put("INSMK", insmk); itemData.add(item); - if (!saleList.contains(mm.get("RECEIVEREQUESTTYPE").toString())){ + /*if (!saleList.contains(mm.get("RECEIVEREQUESTTYPE").toString())){ qmsDataList.add(mm); - } + }*/ /** //存储条码,更新UNDOID用 MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, mm.get("MATERIALPACKINGNAME").toString()); @@ -6726,21 +6716,7 @@ public class ToSAPServiceImpl { throw new RuntimeException("SAP返回" + rmsg); } - if("S".equals(rcode) && qmsDataList.size() > 0) { - /** - 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(); - */ + if("S".equals(rcode)) { // 调用 QMS //qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory); exceptionMsg = "QMS返回"; 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 5318951..21e10d5 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 @@ -29,6 +29,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -634,6 +635,7 @@ public class MaterialReceiveActController { * @param in receiveRequestName到货单号 * @return 返回信息 */ + @Transactional(rollbackFor = Exception.class) @RequestMapping(value = "/commitDeliveryStockInToSAP", method = RequestMethod.POST) public AjaxResult CommitDeliveryStockInToSAP(@RequestBody JSONObject in ) throws Exception { try { diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialShipService.java b/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialShipService.java index ba9e9da..8466351 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialShipService.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialShipService.java @@ -68,5 +68,5 @@ public interface IMaterialShipService { * @param eventInfo 事件信息 * @param materialDelivery 到货单信息 */ - void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery); + void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery) throws Exception; } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java index 465aa58..95a1f31 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java @@ -2066,7 +2066,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService { * @param eventInfo 事件信息 * @param materialDelivery 到货单信息 */ - public void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery){ + public void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery) throws Exception{ //获取到货单关联的所有入库单 StoreDetailDto storeDetailDto = new StoreDetailDto(); storeDetailDto.setDocumentName(materialDelivery.getDeliveryName()); @@ -2090,6 +2090,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService { updateReceiveRequestQtyMap.put("SITENAME", materialDelivery.getSiteName()); updateReceiveRequestQtyMap.put("MATERIALSPECNAME", materialDeliveryReceive.getMaterialSpecName()); updateReceiveRequestQtyMap.put("RECEIVEREQUESTNAME", materialDeliveryReceive.getReceiveRequestName()); + updateReceiveRequestQtyMap.put("RECEIVEREQUESTDETAILNAME", materialDeliveryReceive.getReceiveRequestDetailName()); updateReceiveRequestQtyMap.put("LASTEVENTNAME", eventInfo.getEventUser()); updateReceiveRequestQtyMap.put("LASTEVENTTIMEKEY", eventInfo.getEventTimeKey()); updateReceiveRequestQtyMap.put("LASTEVENTTIME", eventInfo.getEventTime());