From fe8d6e225812fee9723a3a942481fdaf171a9dbc Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期一, 29 十二月 2025 15:56:33 +0800
Subject: [PATCH] Merge branch 'jsxswms' of http://47.97.1.152:5880/r/zy-asrs into jsxswms

---
 src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java |  259 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 164 insertions(+), 95 deletions(-)

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..ea5c884 100644
--- a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -37,17 +37,17 @@
 
 import com.zy.asrs.utils.Utils;
 import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
+@Slf4j
 @Service("kopenApiServiceImpl")
 public class KopenApiServiceImpl implements KopenApiService {
 
@@ -65,21 +65,31 @@
     private SnowflakeIdWorker snowflakeIdWorker;
     @Autowired
     private CheckOrderDetlService checkOrderDetlService;
+    @Value("${kopen.url}")
+    private String url;
+    @Value("${kopen.port}")
+    private String port;
+    @Value("${kopen.prefix}")
+    private String prefix;
+
 
     /**
      * 鎺ユ敹涓嬪彂璁㈠崟淇℃伅
      *
-     * @param params
+     * @param orderParams
      * @return com.core.common.R
      * @author Ryan
      * @date 2025/11/24 14:49
      */
     @Override
-    public XSR receiveOrders(PubOrderParams params) {
-        if (params.getType().equals(OrderWkType.getTypeVal(params.getType()))) {
-            return XSR.error("褰撳墠绫诲瀷涓嶆槸涓婃灦娲惧伐鍗曪紒锛�");
-        }
-        addOrUpdateOrders(params, "add");
+    public XSR receiveOrders(List<PubOrderParams> orderParams) {
+        orderParams.forEach(params -> {
+            if (params.getType().equals(OrderWkType.getTypeVal(params.getType()))) {
+                throw new CoolException("褰撳墠绫诲瀷涓嶆槸涓婃灦娲惧伐鍗曪紒锛�");
+            }
+            addOrUpdateOrders(params, "add");
+        });
+
         return XSR.ok("鍗曟嵁涓嬪彂鎴愬姛锛侊紒");
     }
 
@@ -91,15 +101,16 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public XSR getInDispatchResult(ReportOrderParam params) {
+    public XSR getInDispatchResult(List<ReportOrderParam> params, Order order) {
         if (Objects.isNull(params)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
         String response = null;
+
         try {
             response = new HttpHandler.Builder()
-                    .setUri("127.0.0.1:8081")
-                    .setPath("/wms/order/getInDispatchResult")
+                    .setUri(url + ":" + port)
+                    .setPath(prefix + "/getInDispatchResult")
                     .setJson(JSONObject.toJSONString(params))
                     .build()
                     .doPost();
@@ -108,15 +119,52 @@
             }
             JSONObject jsonObject = JSONObject.parseObject(response);
             Integer code = jsonObject.getInteger("code");
-            if (!Objects.isNull(code) && code.equals(1)) {
+            if (!Objects.isNull(code) && code.equals(200)) {
+                if (!Objects.isNull(order)) {
+                    order.setReportOnce(5);
+                    orderService.updateById(order);
+                }
                 return XSR.ok("鍏ュ簱鍗曚笂鎶ュ畬鎴愶紒锛�");
             } else {
+                if (!Objects.isNull(order)) {
+                    int reportOnce = order.getReportOnce();
+                    reportOnce ++;
+                    order.setReportOnce(reportOnce);
+                    orderService.updateById(order);
+                }
                 String msg = jsonObject.getString("message");
                 return XSR.error(Objects.isNull(msg) ? "涓婃姤澶辫触锛侊紒" : msg);
             }
         } catch (Exception e) {
+            if (!Objects.isNull(order)) {
+                int reportOnce = order.getReportOnce();
+                reportOnce ++;
+                order.setReportOnce(reportOnce);
+                orderService.updateById(order);
+            }
+            log.error(e.getMessage(), e);
             return XSR.error(e.getMessage());
         }
+    }
+
+    /**
+     * 鑾峰彇鑷畾涔夎姹傚ご
+     * @author Ryan
+     * @date 2025/12/29 9:11
+     * @return java.util.Map<java.lang.String,java.lang.Object>
+     */
+    private Map<String, Object> getHeaderParam() {
+        Map<String, Object> headerParam = new HashMap<>();
+//        headerParam.put("accept", "*/*");
+//        headerParam.put("connection", "Keep-Alive");
+        //璁剧疆璇锋眰杩炴帴鐨凾oken
+        headerParam.put("api_key", "WMS");
+        headerParam.put("charset", "UTF-8");
+        headerParam.put("timestamp", new Date());
+        headerParam.put("format", "xml");
+        headerParam.put("signature", "c56ced444ed772098ffeb59537bbfa59");
+
+        return headerParam;
     }
 
     /* */
@@ -124,29 +172,31 @@
     /**
      * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
      *
-     * @param params
+     * @param pubOrderParams
      * @return com.core.common.R
      * @author Ryan
      * @date 2025/11/24 15:21
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public XSR sendOutDispatch(PubOrderParams params) {
-        if (Objects.isNull(params)) {
+    public XSR sendOutDispatch(List<PubOrderParams> pubOrderParams) {
+        if (Objects.isNull(pubOrderParams) || pubOrderParams.isEmpty()) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        // 鏍¢獙鍙傛暟
-        if (Objects.isNull(params.getDispatch_no())) {
-            return XSR.error("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getKopen_id())) {
-            return XSR.error("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getCompany_id())) {
-            return XSR.error("鍏徃ID涓嶈兘涓虹┖锛侊紒");
-        }
+        pubOrderParams.forEach(params -> {
+            // 鏍¢獙鍙傛暟
+            if (Objects.isNull(params.getDispatch_no())) {
+                throw new CoolException("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getKopen_id())) {
+                throw new CoolException("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getCompany_id())) {
+                throw new CoolException("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+            }
 
-        addOrUpdateOrders(params, "add");
+            addOrUpdateOrders(params, "add");
+        });
 
         return XSR.ok("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙戞垚鍔燂紒锛�");
     }
@@ -211,6 +261,9 @@
             if (Objects.isNull(mats)) {
                 throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒");
             }
+            if (Objects.isNull(mats.getPro_type())) {
+                throw new CoolException("闆朵欢绫诲瀷涓嶈兘涓虹┖锛侊紒");
+            }
             Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", mats.getPro_komcode()));
             if (!Objects.isNull(matnr)) {
                 // 璁㈠崟鏃堕棿
@@ -220,7 +273,7 @@
                 }
                 matnr.setMaktx(mats.getPro_name());
                 matnr.setSpecs(mats.getPro_size());
-                matnr.setWeight(Double.parseDouble(mats.getPro_wet()));
+                matnr.setWeight(Objects.isNull(mats.getPro_wet()) ? 0.0 : Double.parseDouble(mats.getPro_wet()));
                 matnr.setSuppCode(mats.getPro_id());
                 matnr.setTagId(MatLocType.getTag(mats.getPro_type()));
                 matnr.setLocType(MatLocType.getTag(mats.getPro_type()));
@@ -272,7 +325,7 @@
         OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
         // Order order = orderService.selectOne(new
         // EntityWrapper<Order>().eq("order_no", orderParams.getDispatch_no()));
-        Order order = new Order();
+        Order order = null;
         if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍏ュ簱
             order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
@@ -288,10 +341,13 @@
                 // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
                 order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
                         orderParams.getDispatch_no()));
+            } else {
+                throw new CoolException("鍗曟嵁绫诲瀷涓嶅瓨鍦紝涓嶆敮鎸佹坊鍔狅紒锛�");
             }
+        } else {
+            throw new CoolException("鍗曟嵁绫诲瀷涓嶅瓨鍦紝涓嶆敮鎸佹坊鍔狅紒锛�");
         }
         // 鍑哄簱
-
         if (type.equals("add") && !Objects.isNull(order)) {
             throw new CoolException("鍗曟嵁宸插瓨鍦�, 涓嶅彲閲嶅娣诲姞锛侊紒");
         }
@@ -331,7 +387,8 @@
         if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍏ュ簱
             newOrder.setPakinPakoutStatus(1);
-            newOrder.setDocType(Long.parseLong(params.getType()));
+            Integer docType = OrderWkType.getDocType(params.getType());
+            newOrder.setDocType(Long.parseLong(docType + ""));
             newOrder.setNumber(params.getInv_no());
         } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍑哄簱
@@ -354,6 +411,7 @@
         newOrder.setUuid(generateUUID(params));
         // 娴佹按鍙凤紙鍞竴锛�
         newOrder.setDefNumber(params.getKopen_id());
+        newOrder.setTargetLocation(params.getTarget_location());
         // 绠卞彿
         newOrder.setItemName(params.getPm_tktid());
         newOrder.setSettle(OrderSettle.ORDER_SETTLE_HOLDING.type);
@@ -415,50 +473,50 @@
     /**
      * 澶囪揣鍗曚笅鍙�
      *
-     * @param params
+     * @param stockUpParams
      * @return com.core.common.R
      * @author Ryan
      * @date 2025/11/24 15:40
      */
     @Override
-    public XSR getOutDetails(StockUpOrderParams params) {
-        if (Objects.isNull(params)) {
+    public XSR getOutDetails(List<StockUpOrderParams> stockUpParams) {
+        if (Objects.isNull(stockUpParams)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        // 鏍¢獙鍙傛暟
-        if (Objects.isNull(params.getDispatch_no())) {
-            return XSR.error("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getKopen_id())) {
-            return XSR.error("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getCompany_id())) {
-            return XSR.error("鍏徃ID涓嶈兘涓虹┖锛侊紒");
-        }
-        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
-            return XSR.error("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
-        }
-
-        List<OrderItemsParam> items = new ArrayList<>();
-        if (params.getDetails() != null) {
-            for (OutOrderParams detail : params.getDetails()) {
-                if (detail.getPartList() != null) {
-                    items.addAll(detail.getPartList());
+        stockUpParams.forEach(params -> {
+            if (Objects.isNull(params.getDispatch_no())) {
+                throw new CoolException("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getKopen_id())) {
+                throw new CoolException("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getCompany_id())) {
+                throw new CoolException("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+            }
+            if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+                throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+            }
+            List<OrderItemsParam> items = new ArrayList<>();
+            if (params.getDetails() != null) {
+                for (OutOrderParams detail : params.getDetails()) {
+                    if (detail.getPartList() != null) {
+                        items.addAll(detail.getPartList());
+                    }
                 }
             }
-        }
 
-        params.getDetails().forEach(item -> {
-            PubOrderParams pubOrderParams = new PubOrderParams();
-            BeanUtils.copyProperties(params, pubOrderParams);
-            pubOrderParams.setType(item.getType())
-                    .setPick_no(item.getPick_no())
-                    .setCus_address(item.getCus_address())
-                    .setOrder_no(item.getOrder_no())
-                    .setUpdate_time(params.getUpdate_time())
-                    .setCus_id(item.getCus_id());
-            pubOrderParams.setDetails(item.getPartList());
-            addOrUpdateOrders(pubOrderParams, "add");
+            params.getDetails().forEach(item -> {
+                PubOrderParams pubOrderParams = new PubOrderParams();
+                BeanUtils.copyProperties(params, pubOrderParams);
+                pubOrderParams.setType(item.getType())
+                        .setPick_no(item.getPick_no())
+                        .setCus_address(item.getCus_address())
+                        .setOrder_no(item.getOrder_no())
+                        .setUpdate_time(params.getUpdate_time())
+                        .setCus_id(item.getCus_id());
+                pubOrderParams.setDetails(item.getPartList());
+                addOrUpdateOrders(pubOrderParams, "add");
+            });
         });
 
         return XSR.ok("澶囪揣鍗曚笅鍙戞垚鍔燂紒锛�");
@@ -472,10 +530,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 +553,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 +567,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 +600,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>()
@@ -576,4 +641,8 @@
         });
     }
 
+    private String kopen() {
+        return url + ":" + port + prefix;
+    }
+
 }

--
Gitblit v1.9.1