From bb2e781a57a96dfdd1f20d6eceddeafbd86be784 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期四, 18 十二月 2025 08:43:13 +0800
Subject: [PATCH] 物料同步信息修改

---
 src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java |  282 ++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 191 insertions(+), 91 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 d62396f..3e3634b 100644
--- a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -4,9 +4,12 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.R;
 import com.core.exception.CoolException;
+import com.zy.api.entity.OrderItemsParam;
 import com.zy.api.entity.OrderParams;
+import com.zy.api.entity.OutOrderParams;
 import com.zy.api.entity.PubOrderParams;
 import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockUpOrderParams;
 import com.zy.api.entity.SyncMatParmas;
 import com.zy.api.enums.MatLocType;
 import com.zy.api.enums.OrderType;
@@ -29,7 +32,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 
 @Service("kopenApiServiceImpl")
@@ -45,10 +50,10 @@
     /**
      * 鎺ユ敹涓嬪彂璁㈠崟淇℃伅
      *
-     * @author Ryan
-     * @date 2025/11/24 14:49
      * @param params
      * @return com.core.common.R
+     * @author Ryan
+     * @date 2025/11/24 14:49
      */
     @Override
     public R receiveOrders(PubOrderParams params) {
@@ -61,7 +66,7 @@
 
     /**
      * 涓婃灦娲惧伐鍗曞弽棣�
-     * 
+     *
      * @author Ryan
      * @date 2025/11/24 15:33
      */
@@ -96,13 +101,14 @@
     }
 
     /* */
+
     /**
      * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
-     * 
-     * @author Ryan
-     * @date 2025/11/24 15:21
+     *
      * @param params
      * @return com.core.common.R
+     * @author Ryan
+     * @date 2025/11/24 15:21
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -126,95 +132,106 @@
         return R.ok("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙戞垚鍔燂紒锛�");
     }
 
-    /**
-     * 澶囪揣鎸囩ず娲惧伐鍗�
-     * 
-     * @author Ryan
-     * @date 2025/12/16 9:15
-     * @param params
-     */
-    private void outOrderAddAndUpdate(PubOrderParams params, String type) {
-        if (Objects.isNull(params)) {
-            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
-        }
-        if (Objects.isNull(params.getType())) {
-            throw new CoolException("璁㈠崟绫诲瀷涓嶈兘涓虹┖锛侊紒");
-        }
+    // /**
+    // * 澶囪揣鎸囩ず娲惧伐鍗�
+    // *
+    // * @author Ryan
+    // * @date 2025/12/16 9:15
+    // * @param params
+    // */
+    // private void outOrderAddAndUpdate(PubOrderParams params, String type) {
+    // if (Objects.isNull(params)) {
+    // throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+    // }
+    // if (Objects.isNull(params.getType())) {
+    // throw new CoolException("璁㈠崟绫诲瀷涓嶈兘涓虹┖锛侊紒");
+    // }
 
-        OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
-        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
-        if (type.equals("add") && !Objects.isNull(order)) {
-            throw new CoolException("鍗曟嵁宸插瓨鍦�, 涓嶅彲閲嶅娣诲姞锛侊紒");
-        }
-        // 鍒ゆ柇璁㈠崟鏄惁瀛樺湪
-        if (Objects.isNull(order)) {
-            /** 涓嶅瓨鍦紝鏂板璁㈠崟 */
-            generateOrders(params);
-        } else {
-            /** 瀛樺湪锛屽垹闄よ�佽鍗曪紝鏇存柊鎻掑叆鏂拌鍗� */
-            // 鍒犻櫎鏃ц鍗曟槑缁�
-            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
-                throw new CoolException("璁㈠崟鏄庣粏鍒犻櫎澶辫触锛侊紒");
-            }
-            ;
-            if (!orderService.deleteById(order.getId())) {
-                throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
-            }
-            generateOrders(params);
-        }
+    // OrderParams orderParams =
+    // JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
+    // Order order = orderService.selectOne(new
+    // EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
+    // if (type.equals("add") && !Objects.isNull(order)) {
+    // throw new CoolException("鍗曟嵁宸插瓨鍦�, 涓嶅彲閲嶅娣诲姞锛侊紒");
+    // }
+    // // 鍒ゆ柇璁㈠崟鏄惁瀛樺湪
+    // if (Objects.isNull(order)) {
+    // /** 涓嶅瓨鍦紝鏂板璁㈠崟 */
+    // generateOrders(params);
+    // } else {
+    // /** 瀛樺湪锛屽垹闄よ�佽鍗曪紝鏇存柊鎻掑叆鏂拌鍗� */
+    // // 鍒犻櫎鏃ц鍗曟槑缁�
+    // if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id",
+    // order.getId()))) {
+    // throw new CoolException("璁㈠崟鏄庣粏鍒犻櫎澶辫触锛侊紒");
+    // }
+    // ;
+    // if (!orderService.deleteById(order.getId())) {
+    // throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+    // }
+    // generateOrders(params);
+    // }
 
-    }
+    // }
 
     /**
      * 鍩虹闆朵欢鍙樻洿
      *
-     * @author Ryan
-     * @date 2025/11/24 15:05
      * @param params
      * @return com.core.common.R
+     * @author Ryan
+     * @date 2025/11/24 15:05
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public synchronized R basMatupdate(SyncMatParmas params) {
-        if (Objects.isNull(params.getPro_komcode())) {
-            return R.error("闆朵欢缂栫爜涓嶈兘涓虹┖锛侊紒");
+    public synchronized R basMatupdate(List<SyncMatParmas> params) {
+        if (Objects.isNull(params) || params.isEmpty()) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", params.getPro_komcode()));
-        if (!Objects.isNull(matnr)) {
-            // 璁㈠崟鏃堕棿
-            if (Utils.isValidFormat(params.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
-                Date date1 = Utils.getFormateDate(params.getUpdate_time());
-                matnr.setUpdateTime(date1);
+        params.forEach(mats -> {
+            if (Objects.isNull(mats)) {
+                throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒");
             }
-            matnr.setMaktx(params.getPro_name());
-            matnr.setSpecs(params.getPro_size());
-            matnr.setWeight(Double.parseDouble(params.getPro_wet()));
-            matnr.setSuppCode(params.getPro_id());
-            matnr.setTagId(MatLocType.getTag(params.getPro_type()));
-            matnr.setManu(params.getCompany_id());
-            if (!matService.updateById(matnr)) {
-                throw new CoolException("鐗╂枡鏇存柊澶辫触鎴栨棤闇�鏇存柊锛侊紒");
+            Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", mats.getPro_komcode()));
+            if (!Objects.isNull(matnr)) {
+                // 璁㈠崟鏃堕棿
+                if (Utils.isValidFormat(mats.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
+                    Date date1 = Utils.getFormateDate(mats.getUpdate_time());
+                    matnr.setUpdateTime(date1);
+                }
+                matnr.setMaktx(mats.getPro_name());
+                matnr.setSpecs(mats.getPro_size());
+                matnr.setWeight(Double.parseDouble(mats.getPro_wet()));
+                matnr.setSuppCode(mats.getPro_id());
+                matnr.setTagId(MatLocType.getTag(mats.getPro_type()));
+                matnr.setLocType(MatLocType.getTag(mats.getPro_type()));
+                matnr.setManu(mats.getCompany_id());
+                if (!matService.updateById(matnr)) {
+                    throw new CoolException("鐗╂枡鏇存柊澶辫触鎴栨棤闇�鏇存柊锛侊紒");
+                }
+            } else {
+                if (Objects.isNull(matnr)) {
+                    matnr = new Mat();
+                }
+                // 璁㈠崟鏃堕棿
+                if (Utils.isValidFormat(mats.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
+                    Date date1 = Utils.getFormateDate(mats.getUpdate_time());
+                    matnr.setUpdateTime(date1);
+                }
+                matnr.setMaktx(mats.getPro_name());
+                matnr.setMatnr(mats.getPro_komcode());
+                matnr.setSpecs(mats.getPro_size());
+                matnr.setWeight(Double.parseDouble(mats.getPro_wet()));
+                matnr.setSuppCode(mats.getPro_id());
+                matnr.setTagId(MatLocType.getTag(mats.getPro_type()));
+                matnr.setLocType(MatLocType.getTag(mats.getPro_type()));
+                matnr.setManu(mats.getCompany_id());
+                if (!matService.insert(matnr)) {
+                    throw new CoolException("鐗╂枡鏇存柊澶辫触锛侊紒");
+                }
             }
-        } else {
-            if (Objects.isNull(matnr)) {
-                matnr = new Mat();
-            }
-            // 璁㈠崟鏃堕棿
-            if (Utils.isValidFormat(params.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
-                Date date1 = Utils.getFormateDate(params.getUpdate_time());
-                matnr.setUpdateTime(date1);
-            }
-            matnr.setMaktx(params.getPro_name());
-            matnr.setMatnr(params.getPro_komcode());
-            matnr.setSpecs(params.getPro_size());
-            matnr.setWeight(Double.parseDouble(params.getPro_wet()));
-            matnr.setSuppCode(params.getPro_id());
-            matnr.setTagId(MatLocType.getTag(params.getPro_type()));
-            matnr.setManu(params.getCompany_id());
-            if (!matService.insert(matnr)) {
-                throw new CoolException("鐗╂枡鏇存柊澶辫触锛侊紒");
-            }
-        }
+        });
+
         return R.ok("淇濆瓨鎴愬姛锛侊紒");
     }
 
@@ -234,14 +251,28 @@
             throw new CoolException("璁㈠崟绫诲瀷涓嶈兘涓虹┖锛侊紒");
         }
         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();
         if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍏ュ簱
-          order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
+            order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
+                    orderParams.getDispatch_no()));
         } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍑哄簱
-           order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getDispatch_no()));
+            if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+                // 澶囪揣鍗曞嚭搴�
+                order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
+                        orderParams.getPick_no()));
+            } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+                    || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
+                // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+                order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
+                        orderParams.getDispatch_no()));
+            }
         }
+        // 鍑哄簱
+
         if (type.equals("add") && !Objects.isNull(order)) {
             throw new CoolException("鍗曟嵁宸插瓨鍦�, 涓嶅彲閲嶅娣诲姞锛侊紒");
         }
@@ -269,29 +300,40 @@
 
     /**
      * 鐢熸垚璁㈠崟淇℃伅
-     * 
+     *
      * @param params
      */
     @Transactional(rollbackFor = Exception.class)
     public void generateOrders(PubOrderParams params) {
         // 灏嗘暟鎹綋鏂拌鍗曟彃鍏�
         Order newOrder = new Order();
+        // 娲惧伐鍗曞彿
+        newOrder.setOrderNo(params.getDispatch_no());
         if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍏ュ簱
             newOrder.setPakinPakoutStatus(1);
             newOrder.setDocType(Long.parseLong(params.getType()));
-            newOrder.setOrderNo(params.getInv_no());
+            newOrder.setNumber(params.getInv_no());
         } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
             // 鍑哄簱
+            if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+                // 澶囪揣鍗曞嚭搴�
+                newOrder.setOrderNo(params.getPick_no());
+                newOrder.setNumber(params.getDispatch_no());
+                newOrder.setCstmrName(params.getCus_id());
+                newOrder.setTel(params.getCus_address());
+                newOrder.setDocType(Long.parseLong(OrderTypeEnum.STOCK.type + ""));
+            } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+                    || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
+                // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+                newOrder.setDocType(Long.parseLong(OrderTypeEnum.TRANSFER.type + ""));
+            }
             newOrder.setPakinPakoutStatus(2);
-            newOrder.setDocType(Long.parseLong(OrderTypeEnum.TRANSFER.type + ""));
-            newOrder.setOrderNo(params.getDispatch_no());
         }
+
         newOrder.setUuid(generateUUID(params));
         // 娴佹按鍙凤紙鍞竴锛�
         newOrder.setDefNumber(params.getKopen_id());
-        // 娲惧伐鍗曞彿
-        newOrder.setNumber(params.getDispatch_no());
         // 绠卞彿
         newOrder.setItemName(params.getPm_tktid());
         newOrder.setSettle(OrderSettle.ORDER_SETTLE_HOLDING.type);
@@ -323,8 +365,14 @@
                     orderItem.setAnfme(Math.round(item.getInv_qty() * 10000) / 10000.0);
                 } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
                     // 鍑哄簱
-                    newOrder.setPakinPakoutStatus(2);
-                    orderItem.setAnfme(Math.round(item.getOrder_qty() * 10000) / 10000.0);
+                    if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+                        // 澶囪揣鍗曞嚭搴�
+                        orderItem.setAnfme(Math.round(item.getPick_qty() * 10000) / 10000.0);
+                    } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+                            || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
+                        // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+                        orderItem.setAnfme(Math.round(item.getOrder_qty() * 10000) / 10000.0);
+                    }
                 }
                 orderItem.setMatnr(matnr.getMatnr());
                 orderItem.setMaktx(matnr.getMaktx());
@@ -344,4 +392,56 @@
         }
     }
 
+    /**
+     * 澶囪揣鍗曚笅鍙�
+     *
+     * @param params
+     * @return com.core.common.R
+     * @author Ryan
+     * @date 2025/11/24 15:40
+     */
+    @Override
+    public R getOutDetails(StockUpOrderParams params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        // 鏍¢獙鍙傛暟
+        if (Objects.isNull(params.getDispatch_no())) {
+            return R.error("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        if (Objects.isNull(params.getKopen_id())) {
+            return R.error("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        if (Objects.isNull(params.getCompany_id())) {
+            return R.error("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+            return R.error("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+        }
+
+        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");
+        });
+
+        return R.ok("澶囪揣鍗曚笅鍙戞垚鍔燂紒锛�");
+    }
+
 }

--
Gitblit v1.9.1