From c45f2e980ff53c2e0d8a0a05480d347132a6cd3c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 29 八月 2025 16:06:51 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java | 292 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 222 insertions(+), 70 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 9a39455..ec8faa1 100644
--- a/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -8,8 +8,10 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
+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;
@@ -19,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;
@@ -47,6 +50,8 @@
@Autowired
private NccSaleXsfhmxWmsService nccSaleXsfhmxWmsService;
+ @Autowired
+ private NccSaleDbddWmsService nccSaleDbddWmsService;
@Value("${NYNC.ip}")
private String nyncIp;
@@ -84,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 "閿�鍞��璐�":
@@ -93,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);
}
@@ -104,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);
}
@@ -115,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);
}
@@ -144,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);
}
@@ -166,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);
}
@@ -179,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);
}
@@ -201,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.getTkFlag();
+ 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) {
@@ -268,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);
@@ -275,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);
@@ -287,7 +379,7 @@
.eq("VBILLCODE", orderNo)
.eq("WLBM", matnr)
);
- if(null == nccSaleXsfhmxWms) {
+ if (null == nccSaleXsfhmxWms) {
throw new CoolException("鏈壘鍒伴攢鍞崟鎹�");
}
@@ -306,6 +398,7 @@
saleOutBodyVO.setVbatchcode(batch);
saleOutBodyVO.setNnum(anfme * -1);
+ saleOutBodyVO.setCstateid(cstateid);
saleOutBodyVOList.add(saleOutBodyVO);
data.put("SaleOutHeadVO", saleOutHeadVO);
@@ -313,46 +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();
-
InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
- invCountBodyVO.setCmaterialoid(inventoryCheckOrderDetl.getMatnr());
- invCountBodyVO.setVbatchcode(inventoryCheckOrderDetl.getBatch());
- invCountBodyVO.setNcountastnum(inventoryCheckOrderDetl.getCheckAnfme());
- 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");
@@ -401,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;
}
@@ -476,7 +624,7 @@
}
whsTransBillBodyVO = new WhsTransBillBodyVO();
- whsTransBillBodyVO.setCstateid(nccScPcdaWms.getPkBatchcode());
+ whsTransBillBodyVO.setCstateid(orderDetl.getCstateid());
String remark = orderDetl.getRemark();
//if (!Cools.isEmpty(remark)) {
@@ -484,6 +632,7 @@
whsTransBillBodyVO.setNnum(orderDetl.getQty());
whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
+ whsTransBillBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
//}
whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1());
whsTransBillBodyVOS.add(whsTransBillBodyVO);
@@ -527,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());
@@ -547,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