From 1f91032bff073f770065426a92e02e4375b732c5 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期一, 11 八月 2025 14:50:38 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java | 294 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 220 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java index 57ce31b..13f1f43 100644 --- a/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java @@ -11,6 +11,7 @@ import com.zy.asrs.utils.MatUtils; import com.zy.nc.SendUtil; import com.zy.nc.entity.*; +import com.zy.nc.service.NccSaleDbddWmsService; import com.zy.nc.service.NccSaleXsfhmxWmsService; import com.zy.nc.service.NccScPcdaWmsService; import com.zy.nc.util.NcResultMessage; @@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -48,6 +50,8 @@ @Autowired private NccSaleXsfhmxWmsService nccSaleXsfhmxWmsService; + @Autowired + private NccSaleDbddWmsService nccSaleDbddWmsService; @Value("${NYNC.ip}") private String nyncIp; @@ -85,6 +89,8 @@ Object process2 = null; String memo = order.getMemo(); String remark = ""; + boolean success = false; + log.info("璁㈠崟寮�濮嬩笂鎶�:{}", JSON.toJSONString(order)); try { switch (order.getDocType$().toString()) { case "閿�鍞��璐�": @@ -94,6 +100,7 @@ if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("閿�鍞彂璐esponse:{}", response); step = 10; + success = true; } else { remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); } @@ -105,6 +112,7 @@ if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("閿�鍞彂璐esponse:{}", response); step = 10; + success = true; } else { remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); } @@ -116,6 +124,7 @@ if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("杞簱-鍏ュ簱response:{}", response); step = 10; + success = true; } else { remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); } @@ -145,6 +154,7 @@ if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("杞簱-鍑哄簱2response:{}", response); step = 10; + success = true; } else { remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); } @@ -167,6 +177,7 @@ if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("杞簱-鍑哄簱2response:{}", response); step = 10; + success = true; } else { remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); } @@ -180,6 +191,7 @@ if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("闆嗗洟鍐呴儴璋冩嫧response:{}", response); step = 10; + success = true; } else { remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); } @@ -202,39 +214,117 @@ e.printStackTrace(); throw new CoolException("璋冪敤鎺ュ彛鎶ラ敊锛岃鑱旂郴绠$悊鍛�"); } finally { - reportApiLog(response, order.getDocType$(), nyncIp, saveRefDelivery); + reportApiLog(order, process1, process2, response, order.getDocType$(), nyncIp, saveRefDelivery, success); } } @Override - public boolean reportTkrk(String matnr, String batch, String orderNo, Double anfme) { - Object process1 = processTKRK(matnr, batch, orderNo, anfme); - //鍙戦�佽姹� - NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); - log.info("閫�搴撳叆搴搑esponse:{}", response); - if (!Cools.isEmpty(response) && response.isSuccess()) { - log.info("閫�搴撳叆搴搑esponse:{}", response); - return true; - } else { -// remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); - return false; + public boolean reportTkrk(WaitPakin waitPakin) { + String matnr = waitPakin.getMatnr(); + String batch = waitPakin.getBatch(); + String orderNo = waitPakin.getOrderNo(); + Double anfme = waitPakin.getAnfme(); + + Object process1 = null; + NcResultMessage response1 = null; + boolean success1 = false; + try { + process1 = processTKRK(matnr, batch, orderNo, anfme, waitPakin.getCstateid()); + //鍙戦�佽姹� + response1 = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); + log.info("閫�搴撳叆搴搑esponse:{}", response1); + if (!Cools.isEmpty(response1) && response1.isSuccess()) { + log.info("閫�搴撳叆搴搑esponse:{}", response1); + success1 = true; + return true; + } + } catch (Exception e) { + e.printStackTrace(); + process1 = e.getMessage(); + } finally { + reportApiLog(null, process1, process1, response1, "TKRK", nyncIp, saveRefDelivery, success1); } + + Object process2 = null; + NcResultMessage response2 = null; + boolean success2 = false; + try { + process2 = processDBTK(matnr, batch, orderNo, anfme, waitPakin.getCstateidVcode()); + //鍙戦�佽姹� + response2 = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, dbdd, JSONObject.toJSONString(process2)); + log.info("閫�搴撳叆搴搑esponse:{}", response2); + if (!Cools.isEmpty(response2) && response2.isSuccess()) { + log.info("閫�搴撳叆搴搑esponse:{}", response2); + success2 = true; + return true; + } + } catch (Exception e) { + e.printStackTrace(); + process2 = e.getMessage(); + } finally { + reportApiLog(null, process2, process2, response2, "DBRK", nyncIp, dbdd, success2); + } + + return false; } @Override - public boolean reportCheckOrder(InventoryCheckOrder checkOrder) { - Object process1 = processInvcount(checkOrder); - //鍙戦�佽姹� - NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1)); - log.info("鐩樼偣鍗時esponse:{}", response); - if (!Cools.isEmpty(response) && response.isSuccess()) { - log.info("鐩樼偣鍗時esponse:{}", response); - return true; - } else { -// remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); - return false; + public boolean reportCheckOrder(List<InventoryCheckOrderDetl> checkOrderDetls) { + ArrayList<String> orderNoList = new ArrayList<>(); + HashMap<String, List<InventoryCheckOrderDetl>> map = new HashMap<>(); + for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { + if (map.containsKey(checkOrderDetl.getCwarehouseid())) { + List<InventoryCheckOrderDetl> list = map.get(checkOrderDetl.getCwarehouseid()); + list.add(checkOrderDetl); + map.put(checkOrderDetl.getCwarehouseid(), list); + }else { + List<InventoryCheckOrderDetl> list = new ArrayList<>(); + list.add(checkOrderDetl); + map.put(checkOrderDetl.getCwarehouseid(), list); + } + + if (!orderNoList.contains(checkOrderDetl.getOrderNo())) { + orderNoList.add(checkOrderDetl.getOrderNo()); + } } + + boolean result = true; + for (Map.Entry<String, List<InventoryCheckOrderDetl>> entry : map.entrySet()) { + String cwarehouseid = entry.getKey(); + List<InventoryCheckOrderDetl> list = entry.getValue(); + Object process1 = processInvcount(list, cwarehouseid); + NcResultMessage response = null; + boolean success = false; + try { + //鍙戦�佽姹� + response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1)); + log.info("鐩樼偣鍗時esponse:{}", response); + if (!Cools.isEmpty(response) && response.isSuccess()) { + log.info("鐩樼偣鍗時esponse:{}", response); + success = true; + } else { + result = false; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + reportApiLog(null, process1, null, response, "鐩樼偣涓婃姤", nyncIp, invcountAdd, success); + } + } + + if (result) { + List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>() + .in("order_no", orderNoList) + .eq("status", 1) + ); + + for (InventoryCheckOrder inventoryCheckOrder : inventoryCheckOrders) { + inventoryCheckOrder.setStatus("2"); + inventoryCheckOrderService.updateById(inventoryCheckOrder); + } + } + return result; } private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) { @@ -269,6 +359,7 @@ saleOutBodyVO.setVbatchcode(orderDetl.getBatch()); saleOutBodyVO.setNshouldnum(flag ? -orderDetl.getQty() : orderDetl.getQty()); saleOutBodyVO.setNnum(flag ? -orderDetl.getQty() : orderDetl.getQty()); + saleOutBodyVO.setCstateid(orderDetl.getCstateid()); saleOutBodyVOList.add(saleOutBodyVO); } data.put("SaleOutHeadVO", saleOutHeadVO); @@ -276,7 +367,7 @@ return data; } - private Object processTKRK(String matnr,String batch, String orderNo, Double anfme) { + private Object processTKRK(String matnr, String batch, String orderNo, Double anfme, String cstateid) { // EntityWrapper<NccXsckmxTkWms> wrapper = new EntityWrapper<>(); // wrapper.eq("VBATCHCODE", batch).eq("VSOURCEBILLCODE", orderNo); // NccXsckmxTkWms nccXsckmxTkWms = nccXsckmxTkWmsService.selectOne(wrapper); @@ -288,7 +379,7 @@ .eq("VBILLCODE", orderNo) .eq("WLBM", matnr) ); - if(null == nccSaleXsfhmxWms) { + if (null == nccSaleXsfhmxWms) { throw new CoolException("鏈壘鍒伴攢鍞崟鎹�"); } @@ -307,6 +398,7 @@ saleOutBodyVO.setVbatchcode(batch); saleOutBodyVO.setNnum(anfme * -1); + saleOutBodyVO.setCstateid(cstateid); saleOutBodyVOList.add(saleOutBodyVO); data.put("SaleOutHeadVO", saleOutHeadVO); @@ -314,50 +406,96 @@ return data; } - private Object processInvcount(InventoryCheckOrder checkOrder) { - List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() - .eq("order_no", checkOrder.getOrderNo())); + private Object processDBTK(String matnr, String batch, String orderNo, Double anfme, String cstateid) { + List<NccSaleDbddWms> nccSaleDbddWmsList = nccSaleDbddWmsService.selectList(new EntityWrapper<NccSaleDbddWms>() + .eq("wlbm", matnr) + .eq("vbillcode", orderNo) + ); + + if (nccSaleDbddWmsList.isEmpty()) { + throw new CoolException("璋冩嫧璁㈠崟ERP鏁版嵁涓虹┖"); + } + + NccSaleDbddWms nccSaleDbddWms = nccSaleDbddWmsList.get(0); + + //缁勮瀵硅薄鏁版嵁 + Map<String, Object> data = new HashMap<String, Object>(); + + List<IaIjBillB> bids = new ArrayList<>(); + IaIjBillB iaIjBillB = new IaIjBillB(); +// NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", batch).eq("wlbm", matnr)); +// if (nccScPcdaWms == null) { +// throw new CoolException("鎵规[{}]鐗╂枡[{}]鏈壘鍒�" + batch + "-" + matnr); +// } + + Double weight = MatUtils.calcWeight(matnr, anfme); + iaIjBillB.setBid(nccSaleDbddWms.getCbill_bid()); + iaIjBillB.setNassistnum(weight * -1); + iaIjBillB.setNnum(anfme * -1); + iaIjBillB.setVbatchcode(batch); + iaIjBillB.setClocationid(""); + iaIjBillB.setCstateid(cstateid); + + bids.add(iaIjBillB); + + data.put("hid", nccSaleDbddWms.getCbillid()); + data.put("bids", bids); + return data; + } + + private Object processInvcount(List<InventoryCheckOrderDetl> inventoryCheckOrderDetls, String cwarehouseid) { if (inventoryCheckOrderDetls.isEmpty()) { throw new CoolException("鐩樼偣鏄庣粏涓嶅瓨鍦�"); + } + + HashMap<String, InventoryCheckOrderDetl> map = new HashMap<>(); + for (InventoryCheckOrderDetl checkOrderDetl : inventoryCheckOrderDetls) { + String key = checkOrderDetl.getMatnr() + "_" + checkOrderDetl.getBatch() + "_" + checkOrderDetl.getCstateid(); + if (map.containsKey(key)) { + InventoryCheckOrderDetl orderDetl = map.get(key); + BigDecimal checkAnfmeDecimal = BigDecimal.valueOf(orderDetl.getCheckAnfme()); + checkAnfmeDecimal = checkAnfmeDecimal.add(BigDecimal.valueOf(checkOrderDetl.getCheckAnfme())); + //璁$畻杈呮暟閲� + Double weight = MatUtils.calcWeight(orderDetl.getMatnr(), checkAnfmeDecimal.doubleValue()); + + orderDetl.setCheckAnfme(checkAnfmeDecimal.doubleValue()); + orderDetl.setWeight(weight); + map.put(key, orderDetl); + } else { + //璁$畻杈呮暟閲� + Double weight = MatUtils.calcWeight(checkOrderDetl.getMatnr(), checkOrderDetl.getCheckAnfme()); + checkOrderDetl.setWeight(weight); + map.put(key, checkOrderDetl); + } } //缁勮瀵硅薄鏁版嵁 Map<String, Object> data = new HashMap<String, Object>(); - //浠撳簱id - String cwarehouseid = null; List<InvCountBodyVO> invCountBodyVOList = new ArrayList<>(); - for (InventoryCheckOrderDetl inventoryCheckOrderDetl : inventoryCheckOrderDetls) { - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>() - .eq("matnr", inventoryCheckOrderDetl.getMatnr()) - .eq("batch", inventoryCheckOrderDetl.getBatch()) - ); - if (wrkDetls.isEmpty()) { - throw new CoolException("宸ヤ綔妗f槑缁嗕笉瀛樺湪"); - } + + for (Map.Entry<String, InventoryCheckOrderDetl> entry : map.entrySet()) { + InventoryCheckOrderDetl checkOrderDetl = entry.getValue(); + String matnr = checkOrderDetl.getMatnr(); + String batch = checkOrderDetl.getBatch(); NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>() - .eq("WLBM", inventoryCheckOrderDetl.getMatnr()) - .eq("VBATCHCODE", inventoryCheckOrderDetl.getBatch()) + .eq("WLBM", matnr) + .eq("VBATCHCODE", batch) ); - if(null == nccScPcdaWms) { + if (null == nccScPcdaWms) { throw new CoolException("ERP鏁版嵁搴撴棤娉曟煡璇㈠埌鐩樼偣涓婃姤鏁版嵁"); } - - cwarehouseid = wrkDetls.get(0).getStandby1(); - - //璁$畻杈呮暟閲� - Double weight = MatUtils.calcWeight(inventoryCheckOrderDetl.getMatnr(), inventoryCheckOrderDetl.getCheckAnfme()); - InvCountBodyVO invCountBodyVO = new InvCountBodyVO(); - invCountBodyVO.setCmaterialoid(inventoryCheckOrderDetl.getMatnr()); - invCountBodyVO.setVbatchcode(inventoryCheckOrderDetl.getBatch()); - invCountBodyVO.setNcountnum(inventoryCheckOrderDetl.getCheckAnfme()); - invCountBodyVO.setNcountastnum(weight); - invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate()); + invCountBodyVO.setCmaterialoid(matnr); + invCountBodyVO.setVbatchcode(batch); + invCountBodyVO.setNcountnum(checkOrderDetl.getCheckAnfme()); + invCountBodyVO.setNcountastnum(checkOrderDetl.getWeight()); + invCountBodyVO.setCstateid(checkOrderDetl.getCstateid()); invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode()); invCountBodyVOList.add(invCountBodyVO); } + InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO(); invCountHeaderVO.setPk_org("FYT"); @@ -406,26 +544,31 @@ private Object processDBDD(List<OrderDetl> orderDetls) { //缁勮瀵硅薄鏁版嵁 Map<String, Object> data = new HashMap<String, Object>(); - IaIjBill iaIjBill = new IaIjBill(); - iaIjBill.setPk_org("FYT"); - //iaIjBill.setCwarehouseid("6101"); - IaIjBillB iaIjBillB = null; - List<IaIjBillB> iaIjBillBS = new ArrayList<>(); + + String hid = ""; + List<IaIjBillB> bids = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { - iaIjBillB = new IaIjBillB(); + if (orderDetl.getQty() <= 0) { + continue; + } + IaIjBillB iaIjBillB = new IaIjBillB(); String remark = orderDetl.getRemark(); if (!Cools.isEmpty(remark)) { - NccSaleDbddWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleDbddWms.class); - iaIjBillB.setCinventoryid(nccSaleXsfhmxWms.getWlbm()); - iaIjBillB.setCinventoryvid(nccSaleXsfhmxWms.getWlbm()); - iaIjBillB.setCsrcid(nccSaleXsfhmxWms.getCbillid()); - iaIjBillB.setNnum(orderDetl.getQty().intValue() + ""); - iaIjBillB.setPk_org("FYT"); + Double weight = MatUtils.calcWeight(orderDetl.getMatnr(), orderDetl.getQty()); + NccSaleDbddWms nccSaleDbddWms = JSONObject.parseObject(remark, NccSaleDbddWms.class); + iaIjBillB.setBid(nccSaleDbddWms.getCbill_bid()); + iaIjBillB.setNassistnum(weight); + iaIjBillB.setNnum(orderDetl.getQty()); + iaIjBillB.setVbatchcode(orderDetl.getBatch()); + iaIjBillB.setClocationid(""); + iaIjBillB.setCstateid(orderDetl.getCstateidVcode()); + + hid = nccSaleDbddWms.getCbillid(); + bids.add(iaIjBillB); } - iaIjBillBS.add(iaIjBillB); } - data.put("ia_ijbill", iaIjBill); - data.put("ia_ijbill_b", iaIjBillBS); + data.put("hid", hid); + data.put("bids", bids); return data; } @@ -481,7 +624,7 @@ } whsTransBillBodyVO = new WhsTransBillBodyVO(); - whsTransBillBodyVO.setCstateid(nccScPcdaWms.getPkStorestate()); + whsTransBillBodyVO.setCstateid(orderDetl.getCstateid()); String remark = orderDetl.getRemark(); //if (!Cools.isEmpty(remark)) { @@ -533,7 +676,7 @@ generalout_b.setCsourcetype("4K-01"); generalout_b.setCsourcebillhid(cspecialhid); generalout_b.setCmaterialvid(orderDetl.getMatnr()); - generalout_b.setCstateid(nccScPcdaWms.getPkStorestate()); + generalout_b.setCstateid(orderDetl.getCstateid()); generalout_b.setPk_batchcode(nccScPcdaWms.getPkBatchcode()); StoreType storeType = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", orderDetl.getStandby1())); generalout_b.setCdptvid(storeType.getDepartmentId()); @@ -553,16 +696,19 @@ } - private Boolean reportApiLog(Object data, String docType, String url, String path) { - String response = ""; - boolean success = false; + private Boolean reportApiLog(Order order, Object process1, Object process2, Object response, String docType, String url, String path, Boolean success) { + HashMap<String, Object> request = new HashMap<>(); + request.put("order", order); + request.put("process1", process1); + request.put("process2", process2); + apiLogService.save( docType, url + path, null, "127.0.0.1", - JSON.toJSONString(data), - response, + JSON.toJSONString(request), + JSON.toJSONString(response), success ); return false; -- Gitblit v1.9.1