From 6e2dd9a7b6f87d39bdc682e164403be6a7e1ec0f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 28 十月 2025 10:22:40 +0800
Subject: [PATCH] 新增已完成订单上传接口

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 106 insertions(+), 9 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
index 8adaa8a..ec5cd67 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -2,7 +2,12 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.controller.erp.params.ReportDataParam;
+import com.vincent.rsf.server.api.controller.erp.params.ReportParams;
+import com.vincent.rsf.server.api.service.ReportMsgService;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.AsnExceStatus;
 import com.vincent.rsf.server.manager.enums.OrderType;
@@ -10,16 +15,16 @@
 import com.vincent.rsf.server.manager.enums.POExceStatus;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl;
+import com.vincent.rsf.server.system.entity.User;
+import com.vincent.rsf.server.system.service.UserService;
+import com.vincent.rsf.server.system.service.impl.UserServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +53,10 @@
     private TransferOrderService transferOrderService;
     @Autowired
     private TransferService transferService;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private ReportMsgService reportMsgService;
 
     /**
      * @param
@@ -98,6 +107,91 @@
         }
     }
 
+    /**
+     * @author Ryan
+     * @date 2025/10/28
+     * @description: 涓婁紶宸插畬鎴愯鍗曡嚦ERP骞冲彴
+     * @version 1.0
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void reportOrders(List<WkOrder> orders) {
+        orders.forEach(order -> {
+            ReportParams params = new ReportParams();
+            List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
+            if (orderItems.isEmpty()) {
+                throw new CoolException("璁㈡嵁鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+            List<ReportDataParam> reportData = new ArrayList<>();
+            orderItems.forEach(orderItem -> {
+                ReportDataParam param = new ReportDataParam();
+                User user = userService.getById(order.getUpdateBy());
+                String nickName = null;
+                if (!Objects.isNull(user)) {
+                    nickName = user.getNickname();
+                }
+
+                Map<String, String> fields = FieldsUtils.getFields(orderItem.getFieldsIndex());
+
+                //璁剧疆閫氱敤鍙傛暟
+                param.setWMSNO(order.getCode())
+                        .setPONO(order.getPoCode())
+                        .setOrderDate(order.getCreateTime())
+                        .setItemCode(orderItem.getMatnrCode())
+                        .setEditUser(nickName)
+                        .setEditDate(order.getUpdateTime())
+                        .setGoodsNO(fields.get("crushNo"))
+                        .setMemoDtl(order.getMemo());
+
+                if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type)) {
+                    //閲囪喘鍏ュ簱鍗�
+                    params.setOrderType("PO_Instock").setAction("Update");
+                    //鑾峰彇鎸囧畾鏌ヨ瀛楁CrushNo 绁ㄥ彿
+                    param.setInQty(orderItem.getQty());
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type)) {
+                    //閲囪喘閫�璐�
+                    params.setOrderType("PR_Outstock").setAction("Update");
+                    param.setOutQty(orderItem.getQty());
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD.type)) {
+                    //鐢熶骇鍏ュ簱鍗�
+//                params.setOrderType("WO_Outstock").setAction("Update");
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type)) {
+                    //鐢熶骇閫�鏂�
+                    params.setOrderType("WR_Instock").setAction("Update");
+                    param.setInQty(orderItem.getQty());
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
+                    //鐢熶骇棰嗘枡
+                    params.setOrderType("WO_Outstock").setAction("Update");
+                    param.setOutQty(orderItem.getQty());
+
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD_ADDITION.type)) {
+                    //鐢熶骇琛ユ枡
+                    params.setOrderType("WR_Instock_BL").setAction("Update");
+                    param.setOutQty(orderItem.getQty());
+
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
+                    //鍏跺畠鍏ュ簱鍗�/鎵嬪姩鍏ュ簱鍗�
+                    params.setOrderType("In_Instock").setAction("Update");
+                    param.setInQty(orderItem.getQty());
+
+                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
+                    //鍏跺畠鍑哄簱鍗�/鎵嬪姩鍑哄簱鍗�
+                    params.setOrderType("Io_Outstock").setAction("Update");
+                    param.setOutQty(orderItem.getQty());
+                }
+                reportData.add(param);
+            });
+            params.setData(reportData);
+
+            R reported = reportMsgService.reportOrders(params);
+            if (reported.get("code").equals(200)) {
+               order.setNtyStatus(1);
+               if (!asnOrderService.updateById(order)) {
+                   throw new CoolException("涓婃姤鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+               }
+            }
+        });
+    }
+
 
     /**
      * @param
@@ -109,6 +203,9 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public void moveOrderToLog(List<WkOrder> wkOrders, String type) {
+        //涓婃姤宸插畬鎴愯鍗曡嚦ERP銆丮ES绛変笁鏂圭郴缁�
+        reportOrders(wkOrders);
+
         Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet());
         List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                 .in(WkOrderItem::getOrderId, longSet));
@@ -169,11 +266,11 @@
 //                        if (!this.asnOrderService.removeByIds(orderIds)) {
 //                            throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
 //                        }
-                          if (!transferService.update(new LambdaUpdateWrapper<Transfer>()
-                                  .eq(Transfer::getId, order.getPoId())
-                                  .set(Transfer::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val))) {
-                              throw new CoolException("璋冩嫈鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
-                          }
+                        if (!transferService.update(new LambdaUpdateWrapper<Transfer>()
+                                .eq(Transfer::getId, order.getPoId())
+                                .set(Transfer::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val))) {
+                            throw new CoolException("璋冩嫈鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
+                        }
                         return;
                     } else {
                         if (!Objects.isNull(order.getPoId())) {

--
Gitblit v1.9.1