From f84b3af27f34be7e22990c54612f3110559c7710 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 19 八月 2025 18:28:44 +0800
Subject: [PATCH] 盘点单、入库单、出库单同步接口

---
 /dev/null                                                                                      |   15 ---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java             |    8 ++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java    |   59 ++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java  |   78 +++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java |   23 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java    |   17 ++-
 6 files changed, 178 insertions(+), 22 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
index b8c42c9..f3b403b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
@@ -1,11 +1,13 @@
 package com.vincent.rsf.server.api.controller.erp;
 
 import com.vincent.rsf.framework.common.R;
-import com.vincent.rsf.server.api.controller.erp.params.CheckDiffParams;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.controller.erp.params.OrderParams;
+import com.vincent.rsf.server.api.controller.erp.params.SyncOrderParams;
 import com.vincent.rsf.server.api.service.ReceiveMsgService;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
+import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,11 +20,12 @@
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/order")
 @Api(tags = "鍗曟嵁")
-public class SyncOrderController {
+public class SyncOrderController extends BaseController {
 
     @Autowired
     private ReceiveMsgService receiveMsgService;
@@ -87,11 +90,13 @@
      * @description: 鍚屾鐩樼偣鍗曟嵁
      * @version 1.0
      */
-    @ApiOperation("鍚屾鐩樼偣鍗�")
+    @ApiOperation("鍚屾鍗曟嵁")
     @PostMapping("/sync/checks")
-    public R syncCheckResult(@RequestBody List<CheckDiffParams> checkDiffs) {
-        
-        return R.ok();
+    public R syncCheckResult(@RequestBody SyncOrderParams syncOrders) {
+        if (Objects.isNull(syncOrders)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return receiveMsgService.syncCheckOrder(syncOrders, getLoginUserId());
     }
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java
deleted file mode 100644
index d7dac78..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.vincent.rsf.server.api.controller.erp.params;
-
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-@ApiModel(value = "CheckDiffParams", description = "鍚屾鐩樼偣鍙傛暟")
-public class CheckDiffParams {
-
-    private String orderNo;
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java
new file mode 100644
index 0000000..1ded2e0
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java
@@ -0,0 +1,23 @@
+package com.vincent.rsf.server.api.controller.erp.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncOrderParams", description = "鍗曟嵁鍚屾鍙傛暟")
+public class SyncOrderParams implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("鍗曟嵁绫诲瀷{in: 鏀惰揣鍏ュ簱鍗曪紝 out锛氬嚭搴撳崟锛宑heck: 鐩樼偣鍗�,  }")
+    private String type;
+
+    @ApiModelProperty("鍗曟嵁鏄庣粏淇℃伅")
+    private List<SyncOrdersItem> items;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java
new file mode 100644
index 0000000..58f9aa1
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java
@@ -0,0 +1,78 @@
+package com.vincent.rsf.server.api.controller.erp.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.experimental.Accessors;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncOrdersParams", description = "鍚屾鐩樼偣鍙傛暟")
+public class SyncOrdersItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("鐩樼偣鍗曟槑缁咺D")
+    private Long id;
+
+    @ApiModelProperty("璁㈠崟ID")
+    private Long orderId;
+
+    @ApiModelProperty("璁㈠崟鐘舵�亄in: 鍏ュ簱鍗�, out: 鍑哄簱鍗�, check: 鐩樼偣鍗晑")
+    private String orderType;
+
+    @ApiModelProperty("涓氬姟绫诲瀷")
+    private String wkType;
+
+    @ApiModelProperty("ASN鍗曞彿")
+    private String orderCode;
+
+    @ApiModelProperty("鐗╂枡鏍囪瘑")
+    private Long matnrId;
+
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String matnrCode;
+
+    @ApiModelProperty("鐗╂枡鍚嶇О")
+    private String maktx;
+
+    @ApiModelProperty("瀹㈠崟鍙�")
+    private String platOrderCode;
+
+    @ApiModelProperty("骞冲彴鏍囪瘑锛堣鍙凤級")
+    private String platItemId;
+
+    @ApiModelProperty("宸ュ崟鍙�")
+    private String platWorkCode;
+
+    @ApiModelProperty("椤圭洰鍙�")
+    private String projectCode;
+
+    @ApiModelProperty("瀛楁绱㈠紩")
+    private String fieldsIndex;
+
+    @ApiModelProperty("瑙勬牸")
+    private String spec;
+
+    @ApiModelProperty("鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty("閫佽揣鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty("搴撳瓨鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty("搴撳瓨鎵规")
+    private String batch;
+
+    @ApiModelProperty("宸叉敹鏁伴噺")
+    private Double qty;
+
+    @ApiModelProperty("鏉″舰鐮�")
+    private String barcode;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
index c3bf1ad..0ac5d53 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
@@ -89,4 +89,12 @@
      * @version 1.0
      */
     R syncCompanies(List<CompaniesParam> companyParams);
+
+    /**
+     * @author Ryan
+     * @date 2025/8/19
+     * @description: 鍗曟嵁鍚屾--鏀惰揣閫氱煡鍗�/鍑哄簱鍗�/鐩樼偣鍗�
+     * @version 1.0
+     */
+    R syncCheckOrder(SyncOrderParams syncOrders, Long loginUserId);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index 97b8ffd..fb49c49 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -14,8 +14,8 @@
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.CompanysType;
 import com.vincent.rsf.server.manager.enums.OrderType;
+import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.manager.service.*;
-import com.vincent.rsf.server.manager.service.impl.LocAreaServiceImpl;
 import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.entity.Fields;
@@ -30,6 +30,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author Ryan
@@ -72,6 +73,7 @@
     private WarehouseService warehouseService;
     @Autowired
     private CompanysService companysService;
+
 
     /**
      * @author Ryan
@@ -354,4 +356,59 @@
         return R.ok();
     }
 
+
+    @Override
+    @Transactional(timeout = 60, rollbackFor = Exception.class)
+    public R syncCheckOrder(SyncOrderParams syncOrders, Long loginUserId) {
+        List<SyncOrdersItem> ordersItems = syncOrders.getItems();
+        Map<String, List<SyncOrdersItem>> listMap = ordersItems.stream().collect(Collectors.groupingBy(SyncOrdersItem::getOrderCode));
+        listMap.keySet().forEach(orderCode -> {
+            WkOrder wkOrder = new WkOrder();
+            String ruleCode = null;
+            if (syncOrders.getType().equals(OrderType.ORDER_CHECK.type)) {
+                 ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_CHECK_RULE_CODE, null);
+            } else if (syncOrders.getType().equals(OrderType.ORDER_IN.type)) {
+                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, null);
+            } else if (syncOrders.getType().equals(OrderType.ORDER_OUT.type)) {
+                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, null);
+            }  else if (syncOrders.getType().equals(OrderType.ORDER_REVISE.type)) {
+                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LOC_REVISE_CODE, null);
+            } else if (syncOrders.getType().equals(OrderType.ORDER_TRANSFER.type)) {
+                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TRANSFER_ORDER_CODE, null);
+            }
+
+            SyncOrdersItem ordersItem = listMap.get(orderCode).stream().findFirst().get();
+            Double anfmes = listMap.get(orderCode).stream().mapToDouble(SyncOrdersItem::getAnfme).sum();
+            wkOrder.setType(syncOrders.getType())
+                    .setWkType(OrderWorkType.getWorkType(ordersItem.getWkType()))
+                    .setAnfme(anfmes)
+                    .setPoCode(orderCode)
+                    .setPoId(ordersItem.getId())
+                    .setCode(ruleCode)
+                    .setId(null)
+                    .setCreateTime(new Date())
+                    .setUpdateTime(new Date())
+                    .setCreateBy(loginUserId)
+                    .setUpdateBy(loginUserId);
+
+            if (!asnOrderService.save(wkOrder)) {
+                throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒");
+            }
+
+            listMap.get(orderCode).forEach(order -> {
+                WkOrderItem wkOrderItem = new WkOrderItem();
+                BeanUtils.copyProperties(order, wkOrderItem);
+                wkOrderItem.setOrderCode(wkOrder.getCode())
+                        .setOrderId(wkOrder.getId())
+                        .setId(null);
+
+                if (!asnOrderItemService.save(wkOrderItem)) {
+                    throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒");
+                }
+            });
+        });
+
+        return R.ok();
+    }
+
 }

--
Gitblit v1.9.1