From ccb810bdcabb3a10b7463acbdb0aa66c44d9c0bc Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 15 八月 2025 18:32:43 +0800
Subject: [PATCH] 对接ERP基础接口

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java        |   24 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java       |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java   |   24 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java           |   29 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java  |  148 ++++++++++++++++++++++++-----
 rsf-admin/src/page/dashboard/index.jsx                                                       |    4 
 rsf-admin/.env                                                                               |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java     |   56 ++++++++++-
 9 files changed, 255 insertions(+), 37 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index f793907..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.151
+VITE_BASE_IP=127.0.0.1
 # VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-admin/src/page/dashboard/index.jsx b/rsf-admin/src/page/dashboard/index.jsx
index db9883b..a41514c 100644
--- a/rsf-admin/src/page/dashboard/index.jsx
+++ b/rsf-admin/src/page/dashboard/index.jsx
@@ -92,6 +92,8 @@
     const getDashBoardHeader = async () => {
         await request.post('/asnOrder/dashbord/header').then(res => {
             const { code, msg, data } = res?.data;
+            console.log(code);
+            
             if (code === 200) {
                 setStatistic(data);
             } else {
@@ -174,7 +176,7 @@
                         <CardWithIcon
                             icon={SensorOccupiedIcon}
                             subtitle={translate('page.dashboard.header.outStockQty')}
-                            title={`${statistic?.membersTotalQua}`}
+                            title={`${statistic?.outAnf}`}
                             type={"out"}
                             statistic={statistic}
                         />
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java
index 8786bd7..13816d9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java
@@ -1,19 +1,21 @@
 package com.vincent.rsf.server.api.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.controller.params.BaseMatParms;
 import com.vincent.rsf.server.api.controller.params.OrderParams;
+import com.vincent.rsf.server.api.controller.params.QueryOrderParam;
 import com.vincent.rsf.server.api.service.ReceiveMsgService;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
-import com.vincent.rsf.server.manager.entity.Matnr;
+import com.vincent.rsf.server.manager.entity.Loc;
 import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
-import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate;
-import com.vincent.rsf.server.manager.service.MatnrGroupService;
 import com.vincent.rsf.server.manager.service.MatnrService;
 import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -24,6 +26,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -64,6 +67,23 @@
         }
     }
 
+
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: DO鍗曞悓姝�
+     * @version 1.0
+     */
+    @ApiOperation("鍑哄簱閫氱煡鍗�(DO鍗曞悓姝�)")
+    @PostMapping("/sync/delivery")
+    public R syncDelivery(@RequestBody List<OrderParams> orders) {
+        if (!receiveMsgService.syncPurchasee(orders)) {
+            return R.error("淇濆瓨澶辫触");
+        } else {
+            return R.ok("淇濆瓨鎴愬姛锛侊紒");
+        }
+    }
+
     /**
      * @author Ryan
      * @description 鍚屾璐ㄦ缁撴灉淇℃伅
@@ -82,6 +102,7 @@
 //        return R.ok();
     }
 
+
     @ApiOperation("鍩虹鐗╂枡淇℃伅鍚屾")
     @PostMapping("/sync/base/matnrs")
     public R syncMatnrs(@RequestBody List<BaseMatParms> matnrs) {
@@ -92,6 +113,31 @@
         return R.ok();
     }
 
-    public R syc
+    @ApiOperation("鏌ヨ鍗曟嵁鐘舵��")
+    @PostMapping("/query/order")
+    public R queryOrderStatus(@RequestBody QueryOrderParam queryParams) {
+        if (Objects.isNull(queryParams)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+       return receiveMsgService.queryOrderStatus(queryParams);
+    }
+
+
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 搴撲綅鏄庣粏鍚屾
+     * @version 1.0
+     */
+    @PostMapping("/sync/locs/detls")
+    @ApiOperation("搴撲綅淇℃伅鏄庣粏鍚屾")
+    public R syncLocDetls(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<Loc, BaseParam> pageParam = new PageParam<>(baseParam, Loc.class);
+        QueryWrapper<Loc> wrapper = pageParam.buildWrapper(true);
+
+        return receiveMsgService.syncLocsDetl(pageParam, wrapper);
+    }
+
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
index 2c8d5c5..91aaad7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
@@ -23,6 +23,9 @@
 @ApiModel(value = "PurchaseOrder", description = "鍏ュ簱鍗曟嵁")
 public class OrderParams implements Serializable {
 
+    @ApiModelProperty("绫诲瀷: {po: 閲囪喘鍗曪紝 do: 鍑哄簱鍗晑")
+    private String type;
+
     @ApiModelProperty(value = "鍗曟嵁缂栫爜")
     private String code;
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java
new file mode 100644
index 0000000..535e5fa
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java
@@ -0,0 +1,24 @@
+package com.vincent.rsf.server.api.controller.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 = "QueryOrderParam", description = "璁㈠崟鏌ヨ鎺ュ彛鍙傛暟")
+public class QueryOrderParam implements Serializable {
+
+    @ApiModelProperty("鍗曟嵁绫诲瀷锛歿in: 鍏ュ簱鍗曪紝 out: 鍑哄簱鍗曪紝 check: 鐩樼偣鍗晑")
+    private String type;
+
+    @ApiModelProperty("璁㈠崟鍙�")
+    private List<String> orderNo;
+
+}
+
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java
new file mode 100644
index 0000000..ee677b9
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java
@@ -0,0 +1,24 @@
+package com.vincent.rsf.server.api.controller.params;
+
+import com.vincent.rsf.server.manager.entity.WkOrder;
+import com.vincent.rsf.server.manager.entity.WkOrderItem;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import lombok.experimental.Delegate;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WkOrderDto", description = "璁㈠崟淇℃伅")
+public class WkOrderDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Delegate
+    private WkOrder order;
+
+    private List<WkOrderItem> orderItems;
+}
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 d1eb12d..71faa49 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
@@ -1,9 +1,14 @@
 package com.vincent.rsf.server.api.service;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.api.controller.params.BaseMatParms;
 import com.vincent.rsf.server.api.controller.params.OrderParams;
-import com.vincent.rsf.server.api.entity.dto.PoItemsDto;
+import com.vincent.rsf.server.api.controller.params.QueryOrderParam;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.entity.Loc;
 
 import java.util.List;
 
@@ -23,5 +28,27 @@
      */
     boolean syncPurchasee(List<OrderParams> orders);
 
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 鍚屾鍩虹鐗╂枡淇℃伅
+     * @version 1.0
+     */
     void syncMatnrs(List<BaseMatParms> matnrs);
+
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 璁㈠崟淇℃伅鏌ヨ
+     * @version 1.0
+     */
+    R queryOrderStatus(QueryOrderParam queryParams);
+
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 搴撲綅鏄庣粏鍚屾
+     * @version 1.0
+     */
+    R syncLocsDetl(PageParam<Loc, BaseParam> pageParam, QueryWrapper<Loc> wrapper);
 }
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 46eb8f1..527b49d 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
@@ -2,15 +2,18 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.controller.params.BaseMatParms;
-import com.vincent.rsf.server.manager.entity.Matnr;
-import com.vincent.rsf.server.manager.entity.MatnrGroup;
+import com.vincent.rsf.server.api.controller.params.QueryOrderParam;
+import com.vincent.rsf.server.api.controller.params.WkOrderDto;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.OrderType;
-import com.vincent.rsf.server.manager.entity.PurchaseItem;
-import com.vincent.rsf.server.manager.service.MatnrGroupService;
-import com.vincent.rsf.server.manager.service.PurchaseItemService;
-import com.vincent.rsf.server.manager.service.PurchaseService;
+import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.api.controller.params.OrderParams;
@@ -19,7 +22,6 @@
 import com.vincent.rsf.server.system.service.FieldsService;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import com.vincent.rsf.server.api.service.ReceiveMsgService;
-import com.vincent.rsf.server.manager.entity.Purchase;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,7 +53,25 @@
     private MatnrGroupService matnrGroupService;
     @Autowired
     private MatnrServiceImpl matnrService;
+    @Autowired
+    private AsnOrderService asnOrderService;
+    @Autowired
+    private AsnOrderItemService asnOrderItemService;
+    @Autowired
+    private DeliveryService deliveryService;
+    @Autowired
+    private DeliveryItemService deliveryItemService;
+    @Autowired
+    private LocService locService;
+    @Autowired
+    private LocItemService locItemService;
 
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 淇濆瓨PO/DO鍗曟嵁
+     * @version 1.0
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean syncPurchasee(List<OrderParams> orders) {
@@ -59,35 +79,69 @@
             throw new CoolException("鍗曟嵁鍐呭涓嶈兘涓虹┖锛侊紒");
         }
         orders.forEach(ors -> {
-            Purchase purchase = new Purchase();
-            BeanUtils.copyProperties(ors, purchase);
-            String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase);
-            purchase.setCode(wkVal)
-                    .setType(OrderType.ORDER_IN.type);
-            if (!purchaseService.save(purchase)) {
-                throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触");
-            }
+            if (ors.getType().equals("po")) {
+                Purchase purchase = new Purchase();
+                BeanUtils.copyProperties(ors, purchase);
+                String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase);
+                purchase.setCode(wkVal)
+                        .setType(OrderType.ORDER_IN.type);
+                if (!purchaseService.save(purchase)) {
+                    throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触");
+                }
 
-            //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪
-            List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
+                //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪
+                List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
 
-            //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖
-            if (!ors.getChildren().isEmpty()) {
-                ArrayList<PurchaseItem> list = new ArrayList<>();
-                ors.getChildren().forEach(orderItem -> {
-                    PurchaseItem item = new PurchaseItem();
-                    BeanUtils.copyProperties(orderItem, item);
+                //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖
+                if (!ors.getChildren().isEmpty()) {
+                    ArrayList<PurchaseItem> list = new ArrayList<>();
+                    ors.getChildren().forEach(orderItem -> {
+                        PurchaseItem item = new PurchaseItem();
+                        BeanUtils.copyProperties(orderItem, item);
 //                    if (!fields.isEmpty()) {
 //                        List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList());
 //                        fieldValue.forEach(value -> {
 //
 //                        });
 //                    }
-                    item.setPurchaseId(purchase.getId());
-                    list.add(item);
-                });
-                if (!purchaseItemService.saveBatch(list)) {
-                    throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+                        item.setPurchaseId(purchase.getId());
+                        list.add(item);
+                    });
+                    if (!purchaseItemService.saveBatch(list)) {
+                        throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+                    }
+                }
+            } else {
+                Delivery delivery = new Delivery();
+                BeanUtils.copyProperties(ors, delivery);
+                String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_DELIVERY_RULE_CODE, delivery);
+                delivery.setCode(wkVal)
+                        .setType(OrderType.ORDER_OUT.type);
+                if (!deliveryService.save(delivery)) {
+                    throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触");
+                }
+
+                //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪
+                List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
+
+                //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖
+                if (!ors.getChildren().isEmpty()) {
+                    ArrayList<DeliveryItem> list = new ArrayList<>();
+                    ors.getChildren().forEach(orderItem -> {
+                        DeliveryItem item = new DeliveryItem();
+                        BeanUtils.copyProperties(orderItem, item);
+//                    if (!fields.isEmpty()) {
+//                        List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList());
+//                        fieldValue.forEach(value -> {
+//
+//                        });
+//                    }
+                        item.setDeliveryId(delivery.getId());
+                        list.add(item);
+                    });
+                    if (!deliveryItemService.saveBatch(list)) {
+                        throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+                    }
                 }
             }
         });
@@ -97,6 +151,7 @@
 
     /**
      * 鐗╂枡淇℃伅鍚屾
+     *
      * @param matnrs
      */
     @Override
@@ -125,5 +180,42 @@
         }
     }
 
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 璁㈠崟鏌ヨ
+     * @version 1.0
+     */
+    @Override
+    public R queryOrderStatus(QueryOrderParam queryParams) {
+        WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
+                .eq(WkOrder::getCode, queryParams.getOrderNo())
+                .eq(WkOrder::getType, queryParams.getType()));
+        if (Objects.isNull(wkOrders)) {
+            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, wkOrders.getId()));
+
+        WkOrderDto wkorderDto = new WkOrderDto();
+        wkorderDto.setOrder(wkOrders).setOrderItems(orderItems);
+
+        return R.ok().add(wkorderDto);
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/8/15
+     * @description: 鍚屾搴撲綅淇℃伅
+     * @version 1.0
+     */
+    @Override
+    public R syncLocsDetl(PageParam<Loc, BaseParam> pageParam, QueryWrapper<Loc> wrapper) {
+        Page<Object> page = new Page<>();
+        page.setCurrent(pageParam.getCurrent()).setSize(pageParam.getSize());
+
+
+        return null;
+    }
+
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java
index e6cd17b..42359b0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java
@@ -44,7 +44,7 @@
         list.add("row");
         list.add("col");
         list.add("lev");
-        return R.ok().add(locService.page(pageParam, pageParam.buildWrapper(true,list)));
+        return R.ok().add(locService.page(pageParam, pageParam.buildWrapper(true, list)));
     }
 
     @PreAuthorize("hasAuthority('manager:locPreview:list')")

--
Gitblit v1.9.1