From 44bc5cf48fa23a1bf5fcefedce1b4686033b245a Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期三, 24 十二月 2025 13:38:59 +0800
Subject: [PATCH] 添加损溢单上报接口
---
src/main/java/com/zy/asrs/entity/CheckOrderDetl.java | 12 --
src/main/resources/mapper/OrderMapper.xml | 10 ++
src/main/java/com/zy/asrs/service/OrderService.java | 11 +-
src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java | 65 +++++++++-------
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 9 ++
src/main/java/com/zy/api/service/KopenApiService.java | 3
src/main/java/com/zy/asrs/mapper/OrderMapper.java | 6 +
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | 34 ++++++++
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | 66 +++++++++++++++-
src/main/java/com/zy/api/controller/KopenApiController.java | 11 +-
src/main/java/com/zy/api/entity/OrderParams.java | 1
11 files changed, 171 insertions(+), 57 deletions(-)
diff --git a/src/main/java/com/zy/api/controller/KopenApiController.java b/src/main/java/com/zy/api/controller/KopenApiController.java
index a504ae8..dee3217 100644
--- a/src/main/java/com/zy/api/controller/KopenApiController.java
+++ b/src/main/java/com/zy/api/controller/KopenApiController.java
@@ -172,14 +172,15 @@
*/
@ApiOperation("闆朵欢鎹熸孩鍗曚笅鍙�")
@PostMapping("/sendBSBYDetails")
- public XSR sendStockAdjust(@RequestBody StockAdjustParams params) {
- if (Objects.isNull(params)) {
+ public XSR sendStockAdjust(@RequestBody List<StockAdjustParams> params) {
+ if (Objects.isNull(params) || params.isEmpty()) {
return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
- }
- if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
- return XSR.error("涓婃姤璁㈠崟鍒楄〃涓嶈兘涓虹┖锛侊紒");
}
return kopenApiService.sendStockAdjust(params, 1L);
}
+
+
+
+
}
diff --git a/src/main/java/com/zy/api/entity/OrderParams.java b/src/main/java/com/zy/api/entity/OrderParams.java
index e865e5d..e09e9a9 100644
--- a/src/main/java/com/zy/api/entity/OrderParams.java
+++ b/src/main/java/com/zy/api/entity/OrderParams.java
@@ -1,7 +1,6 @@
package com.zy.api.entity;
import java.io.Serializable;
-import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
diff --git a/src/main/java/com/zy/api/service/KopenApiService.java b/src/main/java/com/zy/api/service/KopenApiService.java
index f209638..c2cd61c 100644
--- a/src/main/java/com/zy/api/service/KopenApiService.java
+++ b/src/main/java/com/zy/api/service/KopenApiService.java
@@ -3,7 +3,6 @@
import java.util.List;
import com.zy.api.controller.params.PageRequestParams;
-import com.zy.api.entity.OrderItemsParam;
import com.zy.api.entity.PubOrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.StockAdjustParams;
@@ -79,5 +78,5 @@
* @param params
* @return com.core.common.R
*/
- XSR sendStockAdjust(StockAdjustParams params, Long userId);
+ XSR sendStockAdjust(List<StockAdjustParams> params, Long userId);
}
diff --git a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
index 05586a0..38d8f8d 100644
--- a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -472,10 +472,15 @@
*/
@Override
public XSR getStockInfo(PageRequestParams params) {
- Page<LocDetl> locDetls = locDetlService.selectPage(new Page<>(params.getCurr(), params.getLimit()),
- new EntityWrapper<LocDetl>()
- .eq(!Objects.isNull(params.getPro_komcode()), "matnr", params.getPro_komcode())
- .eq(Objects.isNull(params.getPro_id()), "supp_code", params.getPro_id()));
+ EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+ if (!Objects.isNull(params.getPro_id())) {
+ wrapper.eq("supp_code", params.getPro_id());
+ }
+ if (!Objects.isNull(params.getPro_komcode())) {
+ wrapper.eq("matnr", params.getPro_komcode());
+ }
+
+ Page<LocDetl> locDetls = locDetlService.selectPage(new Page<>(params.getCurr(), params.getLimit()), wrapper);
return XSR.ok(locDetls.getRecords());
}
@@ -490,25 +495,13 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public XSR sendStockAdjust(StockAdjustParams params, Long userId) {
+ public XSR sendStockAdjust(List<StockAdjustParams> params, Long userId) {
if (Objects.isNull(params)) {
return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
- return XSR.error("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
- }
- // 鏍¢獙鍙傛暟
- if (Objects.isNull(params.getBsby_no())) {
- return XSR.error("鎹熸孩鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
- }
-
- CheckOrder checkOrder = checkOrderService
- .selectOne(new EntityWrapper<CheckOrder>().eq("order_no", params.getBsby_no()));
- if (!Objects.isNull(checkOrder)) {
- return XSR.error("鎹熸孩鍗曞凡瀛樺湪锛侊紒");
- }
-
- gentCheckOrders(params, userId);
+ params.forEach(param -> {
+ gentCheckOrders(param, userId);
+ });
return XSR.ok("闆朵欢鎹熸孩鍗曚笅鍙戞垚鍔燂紒锛�");
}
@@ -516,18 +509,32 @@
/** 鐢熸垚鏂扮殑闆朵欢鎹熸孩鍗�
* @param userId */
@Transactional(rollbackFor = Exception.class)
- public void gentCheckOrders(StockAdjustParams checkOrder, Long userId) {
+ public void gentCheckOrders(StockAdjustParams params, Long userId) {
+ if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+ throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+ }
+ // 鏍¢獙鍙傛暟
+ if (Objects.isNull(params.getBsby_no())) {
+ throw new CoolException("鎹熸孩鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+
+ CheckOrder checkOrder = checkOrderService
+ .selectOne(new EntityWrapper<CheckOrder>().eq("order_no", params.getBsby_no()));
+ if (!Objects.isNull(checkOrder)) {
+ throw new CoolException("鎹熸孩鍗曞凡瀛樺湪锛侊紒");
+ }
+
CheckOrder order = new CheckOrder();
- order.setOrderNo(checkOrder.getBsby_no());
- order.setCstmrName(checkOrder.getCompany_id());
- order.setDefNumber(checkOrder.getKopen_id());
+ order.setOrderNo(params.getBsby_no());
+ order.setCstmrName(params.getCompany_id());
+ order.setDefNumber(params.getKopen_id());
order.setDocType(4L);
order.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
order.setSettle(Long.valueOf(CommonEnum.COMMON_ENUM_Y.type + ""));
order.setStatus(CommonEnum.COMMON_ENUM_Y.type);
- order.setOrderTime(checkOrder.getUpdate_time());
- order.setMemo(checkOrder.getResason());
- order.setShipName(checkOrder.getReason_name());
+ order.setOrderTime(params.getUpdate_time());
+ order.setMemo(params.getResason());
+ order.setShipName(params.getReason_name());
order.setCreateTime(new Date());
order.setUpdateTime(new Date());
@@ -535,11 +542,11 @@
throw new CoolException("鎹熸孩鍗曟柊澧炲け璐ワ紒锛�");
}
- if (Objects.isNull(checkOrder.getDetails()) || checkOrder.getDetails().isEmpty()) {
+ if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
- checkOrder.getDetails().forEach(item -> {
+ params.getDetails().forEach(item -> {
CheckOrderDetl checkOrderDetl = new CheckOrderDetl();
//閫氳繃鎵樼洏锛� 鐗╂枡缂栫爜锛� 渚涘簲鍟嗙紪鐮佹煡璇㈠簱瀛樻槑缁�
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
diff --git a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
index 04afc24..bf76f08 100644
--- a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -5,9 +5,7 @@
import com.core.common.SpringUtils;
import com.zy.asrs.enums.CheckStatusEnum;
import com.zy.asrs.service.OrderService;
-import com.zy.asrs.entity.Order;
import com.baomidou.mybatisplus.annotations.TableField;
-import com.core.common.SpringUtils;
import com.zy.common.utils.Synchro;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
@@ -16,15 +14,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index 69f50ce..ab3ffc7 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -1,6 +1,7 @@
package com.zy.asrs.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.CheckOrder;
import com.zy.asrs.entity.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -25,4 +26,9 @@
Order selectOrderMoveStatus();
Order selectOrderMoveStatusInitial();
+ /**
+ * 鏌ヨ鎹熸孩鍗曞畬缁撶殑璁㈠崟
+ * @return
+ */
+ List<CheckOrder> selectCompleteCheck();
}
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 878002f..667df16 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,10 +1,7 @@
package com.zy.asrs.service;
-import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.*;
import com.baomidou.mybatisplus.service.IService;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.entity.WrkDetl;
-import com.zy.asrs.entity.WrkMast;
import java.util.List;
@@ -35,5 +32,11 @@
Order selectOrderMoveStatus();
Order selectOrderMoveStatusInitial();
+
+ /**
+ * 鏌ヨ鎹熸孩鍗曞畬缁撶殑璁㈠崟
+ * @return
+ */
+ List<CheckOrder> selectCompleteCheck();
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 912bdf6..29f7980 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -209,4 +209,13 @@
return this.baseMapper.selectOrderMoveStatusInitial();
}
+ /**
+ * 鏌ヨ鎹熸孩鍗曞畬缁撶殑璁㈠崟
+ * @return
+ */
+ @Override
+ public List<CheckOrder> selectCompleteCheck() {
+ return this.baseMapper.selectCompleteCheck();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 75e2e92..453e50f 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,6 +1,7 @@
package com.zy.asrs.task;
import com.core.common.Cools;
+import com.zy.asrs.entity.CheckOrder;
import com.zy.asrs.entity.Order;
import com.zy.asrs.enums.OrderTypeEnum;
import com.zy.asrs.service.ApiLogService;
@@ -124,4 +125,37 @@
}
}
}
+
+ /**鎹熸孩鍗曞畬缁撲笂鎶� */
+ @Scheduled(cron = "0/30 * * * * ?")
+ @Async("checkOrderThreadPool")
+ public void completeCheckOrderReport() {
+ if (!ErpReportOld){
+ return;
+ }
+ String erpReport = Parameter.get().getErpReport();
+ if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
+ List<CheckOrder> orders = orderService.selectCompleteCheck();
+ for (CheckOrder order : orders) {
+ try {
+ ReturnT<String> result = orderSyncHandler.startCheckOrderReport(order);
+ if (!result.isSuccess()) {
+ log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+ }
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+ }
+
+ try {
+ Thread.sleep(300);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+
}
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index 3fb456e..157b547 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
@@ -10,12 +11,14 @@
import com.zy.api.entity.PubOrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.ReportOrderParams;
+import com.zy.api.entity.StockAdjustParams;
import com.zy.api.entity.StockUpOrderParams;
import com.zy.api.entity.dto.XSR;
import com.zy.api.service.KopenApiService;
import com.zy.asrs.entity.*;
import com.zy.asrs.enums.OrderTypeEnum;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.CheckOrderDetlServiceImpl;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -44,6 +47,8 @@
@Service
public class OrderSyncHandler extends AbstractHandler<String> {
+ private final CheckOrderDetlServiceImpl checkOrderDetlService;
+
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
@@ -62,6 +67,10 @@
private KopenApiService kopenApiService;
@Autowired
private MatService matService;
+
+ OrderSyncHandler(CheckOrderDetlServiceImpl checkOrderDetlService) {
+ this.checkOrderDetlService = checkOrderDetlService;
+ }
@Transactional
public ReturnT<String> startOrderIssuedOnceMore(Order order) {
@@ -389,7 +398,8 @@
throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
}
} else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.OUT_DISPATCH_RESULT,
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
+ MesConstant.URL + MesConstant.OUT_DISPATCH_RESULT,
JSON.toJSONString(orderParam), JSON.toJSONString(response));
throw new CoolException("涓婃姤KOPEN绯荤粺澶辫触");
}
@@ -424,7 +434,6 @@
.setCus_id(order.getCstmrName())
.setCus_address(order.getTel());
-
List<OrderItemsParam> reportOrderParams = new ArrayList<>();
orderDetls.forEach(detl -> {
Mat material = matService.selectByMatnr(detl.getMatnr());
@@ -447,11 +456,10 @@
List<OutOrderParams> pubOrderParamsList = new ArrayList<>();
pubOrderParamsList.add(pubOrderParams);
- //璁剧疆娲惧伐鍗曟槑缁�
+ // 璁剧疆娲惧伐鍗曟槑缁�
stockUpOrderParams.setDetails(pubOrderParamsList);
stockUpOrderParams.setUpdate_time(order.getUpdateBy$());
-
XSR response = null;
boolean success = false;
try {
@@ -470,7 +478,8 @@
throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
}
} else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
+ MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
JSON.toJSONString(stockUpOrderParams), JSON.toJSONString(response));
throw new CoolException("涓婃姤KOPEN绯荤粺澶辫触");
}
@@ -497,4 +506,51 @@
return SUCCESS;
}
+ /**
+ * 鎹熸孩鍗曞畬缁撲笂鎶�
+ *
+ * @param order
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> startCheckOrderReport(CheckOrder order) {
+ List<StockAdjustParams> adjustParams = new ArrayList<>();
+
+ StockAdjustParams adjustParam = new StockAdjustParams();
+
+ adjustParam.setCompany_id(order.getCstmrName())
+ .setWms_id(order.getId() + "")
+ .setType(0 + "")
+ .setCompany_id(order.getCstmrName());
+
+ adjustParam.setBsby_no(order.getNumber())
+ .setResason("")
+ .setReason_name("");
+ List<CheckOrderDetl> detls = checkOrderDetlService
+ .selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", order.getId()));
+ if (Objects.isNull(detls) || detls.isEmpty()) {
+ throw new CoolException("鎹熸孩鍗曡鎯呬笉瀛樺湪");
+ }
+ List<OrderItemsParam> items = new ArrayList<>();
+ detls.forEach(detl -> {
+ Mat material = matService.selectByMatnr(detl.getMatnr());
+ if (Objects.isNull(material)) {
+ throw new CoolException("鐗╂枡涓嶅瓨鍦�");
+ }
+ OrderItemsParam itemParam = new OrderItemsParam();
+ itemParam.setLocation_no(detl.getZpallet())
+ .setPro_komcode(material.getMatnr())
+ .setPro_id(detl.getSuppCode())
+ .setBsby_qty(detl.getDiffQty().intValue());
+ items.add(itemParam);
+ });
+ adjustParam.setDetails(items);
+
+ adjustParams.add(adjustParam);
+
+ return SUCCESS;
+ // TODO Auto-generated method stub
+
+ }
+
}
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index f8c5070..270025a 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -118,5 +118,15 @@
and move_status = 1
order by update_time
</select>
+ <select id="selectCompleteCheck" resultType="com.zy.asrs.entity.Order">
+ SELECT TOP
+ 20 *
+ FROM
+ man_check_order
+ WHERE
+ settle = 4
+ AND status = 1
+ AND doc_type = 4
+ </select>
</mapper>
--
Gitblit v1.9.1