From fdec63ed357fcde85e218a5db087c8d6e7f19dfb Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期一, 13 十月 2025 13:48:21 +0800
Subject: [PATCH] open-api添加单据下发,单据修改,单据删除接口

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java           |   56 +++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java               |   85 ++++++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java              |   15 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java                   |   21 ++
 rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml                                           |   20 ++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java                 |   37 +++
 rsf-open-api/src/main/resources/application-dev.yml                                               |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java        |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java    |    3 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java               |   12 +
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java                     |   13 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java       |    5 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java            |  165 ++++++++++++++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java                       |   12 +
 rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java                     |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java |   11 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java       |   60 ++++-
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java     |    3 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java                       |   57 +++++
 rsf-server/src/main/resources/application-dev.yml                                                 |    2 
 21 files changed, 567 insertions(+), 20 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java
new file mode 100644
index 0000000..8afd3a6
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsErpController.java
@@ -0,0 +1,85 @@
+package com.vincent.rsf.openApi.controller;
+
+
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+import com.vincent.rsf.openApi.entity.params.ErpOpParams;
+import com.vincent.rsf.openApi.service.WmsErpService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+@RestController
+@RequestMapping("/erp")
+public class WmsErpController {
+
+    @Autowired
+    private WmsErpService wmsErpService;
+
+    /**
+     * @author Ryan
+     * @date 2025/9/27
+     * @description: 璁㈠崟淇℃伅鏌ヨ
+     * @version 1.0
+     */
+    @ApiOperation("璁㈠崟淇℃伅鏌ヨ")
+    @PostMapping("/order")
+    public CommonResponse getOrders(@RequestBody ErpOpParams params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return wmsErpService.getOrderInfo(params);
+    }
+
+
+    /**
+     * 璁㈠崟淇敼
+     * @param params
+     * @return
+     */
+    @ApiOperation("鍗曟嵁淇敼")
+    @PostMapping("/order/upadte")
+    public CommonResponse modifyOrderDtel(@RequestBody ErpOpParams params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return wmsErpService.updateOrderDetl(params);
+    }
+
+
+    /**
+     * 璁㈠崟鏂板
+     * @param params
+     * @return
+     */
+    @ApiOperation("鏂板鍗曟嵁")
+    @PostMapping("/order/add")
+    public CommonResponse orderAdd(@RequestBody ErpOpParams params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return wmsErpService.updateOrderDetl(params);
+    }
+
+
+    /**
+     * 鍒犻櫎璁㈠崟
+     * @param params
+     * @return
+     */
+    @ApiOperation("鍒犻櫎璁㈠崟")
+    @PostMapping("/order/del")
+    public CommonResponse orderDel(@RequestBody ErpOpParams params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return wmsErpService.orderDel(params);
+    }
+
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
index 5d04aa1..1e109fe 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
@@ -7,4 +7,16 @@
 
     public static String callBack = "/rsf-server/wcs/receive/ex/msg";
 
+
+    //璁㈠崟淇℃伅鏌ヨ
+    public static String QUERY_ORDER_AND_DETLS = "/rsf-server/erp/query/order";
+
+
+    //璁㈠崟淇℃伅淇敼/娣诲姞
+    public static String MODIFY_ORDER_DETLS = "/rsf-server/order/sync/orders/update";
+
+    //鍒犻櫎鍗曟嵁淇℃伅
+    public static String ORDER_DEL = "/rsf-server/order/sync/orders/delete";
+
+
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java
new file mode 100644
index 0000000..819e1ad
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/OrderDto.java
@@ -0,0 +1,57 @@
+package com.vincent.rsf.openApi.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "OrderDto", description = "璁㈠崟淇℃伅")
+public class OrderDto {
+
+    /**
+     * 鍗曞彿
+     */
+    @ApiModelProperty("璁㈠崟鍙�")
+    private String orderNo;
+
+    /**
+     * PO鍗曞彿
+     */
+    @ApiModelProperty(value = "PO鍗曞彿")
+    private String poCode;
+
+    /**
+     * 鍗曟嵁绫诲瀷
+     */
+    @ApiModelProperty(value = "鍗曟嵁绫诲瀷")
+    private String type;
+
+    /**
+     * 涓氬姟绫诲瀷
+     */
+    @ApiModelProperty(value = "涓氬姟绫诲瀷")
+    private String wkType;
+
+    /**
+     * 閫佽揣鏁伴噺
+     */
+    @ApiModelProperty(value = "閫佽揣鏁伴噺")
+    private Double anfme;
+
+
+    @ApiModelProperty("鎵ц鏁伴噺")
+    private Double workQty;
+
+    /**
+     * 宸叉敹鏁伴噺
+     */
+    @ApiModelProperty(value = "宸叉敹鏁伴噺")
+    private Double qty;
+
+
+    @ApiModelProperty("鎵ц鐘舵��")
+    private Short exceStatus;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java
new file mode 100644
index 0000000..45c2a34
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java
@@ -0,0 +1,37 @@
+package com.vincent.rsf.openApi.entity.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "ErpOpParams", description = "ERP鎿嶄綔璇锋眰鍙傛暟")
+public class ErpOpParams {
+
+    /**
+     * 鍗曞彿
+     */
+    @ApiModelProperty("璁㈠崟鍙�")
+    private String orderNo;
+
+    @ApiModelProperty("涓氬姟绫诲瀷")
+    private String wkType;
+
+    @ApiModelProperty("璁㈠崟绫诲瀷")
+    private String type;
+
+    @ApiModelProperty("鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty("鎵ц鐘舵��")
+    private Short exceStatus;
+
+    @ApiModelProperty("璁㈠崟鏄庣粏")
+    private List<WmsOrderItemParam> orderItems;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java
new file mode 100644
index 0000000..078e01e
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpQueryParams.java
@@ -0,0 +1,15 @@
+package com.vincent.rsf.openApi.entity.params;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "ErpQueryParams", description = "ERP鏌ヨ鍙傛暟")
+public class ErpQueryParams {
+
+
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java
new file mode 100644
index 0000000..75e00de
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WmsOrderItemParam.java
@@ -0,0 +1,56 @@
+package com.vincent.rsf.openApi.entity.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WmsOrderItemParam", description = "璁㈠崟鏄庣粏鍙傛暟")
+public class WmsOrderItemParam {
+
+    @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 crushNo;
+
+    @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-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java
new file mode 100644
index 0000000..b26f605
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/WmsErpMapper.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.openApi.mapper;
+
+import com.vincent.rsf.openApi.entity.dto.OrderDto;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+public interface WmsErpMapper {
+
+    OrderDto getOrderByNo(@Param("orderNo") String orderNo);
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java
new file mode 100644
index 0000000..9997c7d
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsErpService.java
@@ -0,0 +1,13 @@
+package com.vincent.rsf.openApi.service;
+
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+import com.vincent.rsf.openApi.entity.params.ErpOpParams;
+
+public interface WmsErpService {
+
+    CommonResponse getOrderInfo(ErpOpParams params);
+
+    CommonResponse updateOrderDetl(ErpOpParams params);
+
+    CommonResponse orderDel(ErpOpParams params);
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java
new file mode 100644
index 0000000..f939215
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java
@@ -0,0 +1,165 @@
+package com.vincent.rsf.openApi.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.cfg.CoercionAction;
+import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.openApi.config.PlatformProperties;
+import com.vincent.rsf.openApi.entity.constant.WmsConstant;
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+import com.vincent.rsf.openApi.entity.dto.OrderDto;
+import com.vincent.rsf.openApi.entity.params.ErpOpParams;
+import com.vincent.rsf.openApi.service.WmsErpService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.*;
+
+@Slf4j
+@Service("WmsErpService")
+public class WmsErpServiceImpl implements WmsErpService {
+
+    @Autowired
+    private PlatformProperties.WmsApi wmsApi;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * 鑾峰彇璁㈠崟鏄庣粏
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public CommonResponse getOrderInfo(ErpOpParams params) {
+        if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
+            throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        /**WMS鍩虹閰嶇疆閾炬帴*/
+        String rcsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.QUERY_ORDER_AND_DETLS;
+        log.info("鏌ヨ璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", rcsUrl, JSONObject.toJSONString(params));
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Content-Type", "application/json");
+        headers.add("api-version", "v2.0");
+        HttpEntity httpEntity = new HttpEntity(params, headers);
+        ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
+        log.info("鏌ヨ鍝嶅簲缁撴灉锛� {}", exchange);
+        if (Objects.isNull(exchange.getBody())) {
+            throw new CoolException("鏌ヨ澶辫触锛侊紒");
+        } else {
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+            try {
+                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+                if (result.getCode() == 200) {
+                    JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(result.getData()));
+                    OrderDto dto = new OrderDto();
+                    dto.setOrderNo(object.getString("code")).setAnfme(object.getDouble("anfme")).setType(object.getString("type")).setWkType(object.getString("wkType")).setQty(object.getDouble("qty")).setPoCode(object.getString("poCode")).setExceStatus(object.getShort("exceStatus")).setWorkQty(object.getDouble("workQty"));
+                    result.setData(dto);
+                    return result;
+                } else {
+                    throw new CoolException("鏌ヨ澶辫触锛侊紒");
+                }
+            } catch (JsonProcessingException e) {
+                throw new CoolException(e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * 璁㈠崟淇敼
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public CommonResponse updateOrderDetl(ErpOpParams params) {
+        if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
+            throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        /**WMS鍩虹閰嶇疆閾炬帴*/
+        String wmsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.MODIFY_ORDER_DETLS;
+        log.info("淇敼璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", wmsUrl, JSONObject.toJSONString(params));
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Content-Type", "application/json");
+        headers.add("api-version", "v2.0");
+
+        List<Map<String, Object>> maps = new ArrayList<>();
+        Map<String, Object> mapParams = new HashMap<>();
+        mapParams.put("orderNo", Arrays.asList(params.getOrderNo()));
+        mapParams.put("anfme", params.getAnfme());
+        mapParams.put("type", params.getType());
+        mapParams.put("wkType", params.getWkType());
+        mapParams.put("exceStatus", params.getExceStatus());
+        mapParams.put("orderItems", params.getOrderItems());
+        maps.add(mapParams);
+
+        HttpEntity httpEntity = new HttpEntity(maps, headers);
+        ResponseEntity<String> exchange = restTemplate.exchange(wmsUrl, HttpMethod.POST, httpEntity, String.class);
+        log.info("璁㈠崟淇敼杩斿洖缁撴灉锛� {}", exchange);
+        if (Objects.isNull(exchange.getBody())) {
+            throw new CoolException("鏌ヨ澶辫触锛侊紒");
+        } else {
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+            try {
+                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+                if (result.getCode() == 200) {
+//                    JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(result.getData()));
+                    return result;
+                } else {
+                    throw new CoolException("鏌ヨ澶辫触锛侊紒");
+                }
+            } catch (JsonProcessingException e) {
+                throw new CoolException(e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * 鍒犻櫎鍗曟嵁
+     * @param params
+     * @return
+     */
+    @Override
+    public CommonResponse orderDel(ErpOpParams params) {
+        if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
+            throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        /**WMS鍩虹閰嶇疆閾炬帴*/
+        String rcsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.ORDER_DEL;
+        log.info("鏌ヨ璁㈠崟淇℃伅鍙婄姸鎬侊細 {}锛� 璇锋眰鍙傛暟锛� {}", rcsUrl, JSONObject.toJSONString(params));
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Content-Type", "application/json");
+        headers.add("api-version", "v2.0");
+        HttpEntity httpEntity = new HttpEntity(params, headers);
+        ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
+        log.info("鏌ヨ鍝嶅簲缁撴灉锛� {}", exchange);
+        if (Objects.isNull(exchange.getBody())) {
+            throw new CoolException("鏌ヨ澶辫触锛侊紒");
+        } else {
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+            try {
+                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+                if (result.getCode() == 200) {
+                    return result;
+                } else {
+                    throw new CoolException("鏌ヨ澶辫触锛侊紒");
+                }
+            } catch (JsonProcessingException e) {
+                throw new CoolException(e.getMessage());
+            }
+        }
+    }
+
+}
diff --git a/rsf-open-api/src/main/resources/application-dev.yml b/rsf-open-api/src/main/resources/application-dev.yml
index 2d214ee..646090f 100644
--- a/rsf-open-api/src/main/resources/application-dev.yml
+++ b/rsf-open-api/src/main/resources/application-dev.yml
@@ -65,4 +65,4 @@
     #閾炬帴
     host: http://127.0.0.1
     #绔彛
-    port: 8081
\ No newline at end of file
+    port: 8085
\ No newline at end of file
diff --git a/rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml b/rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml
new file mode 100644
index 0000000..8dffc3f
--- /dev/null
+++ b/rsf-open-api/src/main/resources/mapper/WmsErpMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vincent.rsf.openApi.mapper.WmsErpMapper">
+
+    <select id="getOrderByNo" resultType="com.vincent.rsf.openApi.entity.dto.OrderDto">
+        SELECT
+            `code` AS order_no,
+            po_code,
+            type,
+            wk_type,
+            anfme,
+            work_qty,
+            qty,
+            exce_status
+        FROM
+            man_asn_order
+        WHERE
+            `code` = #{orderNo}
+    </select>
+</mapper>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java
index afd0384..50168ab 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java
@@ -38,6 +38,7 @@
 
     @Autowired
     private ReceiveMsgService receiveMsgService;
+
     @Autowired
     private MatnrGroupService matnrGroupService;
 
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 aa18dcf..3061e4b 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
@@ -91,7 +91,7 @@
     /**
      * @author Ryan
      * @date 2025/8/19
-     * @description: 鍚屾鐩樼偣鍗曟嵁
+     * @description: 鏀惰揣閫氱煡鍗曞悓姝�
      * @version 1.0
      */
     @ApiOperation("鍚屾鍗曟嵁")
@@ -164,7 +164,8 @@
         if (Objects.isNull(orders) || orders.isEmpty()) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        return receiveMsgService.syncOrderUpdate(orders);
+//        return receiveMsgService.syncOrderUpdate(orders);
+        return receiveMsgService.syncCheckOrder(orders, getLoginUserId());
     }
 
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java
index c0ee2a8..1578750 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/QueryOrderParam.java
@@ -18,7 +18,7 @@
     private String type;
 
     @ApiModelProperty("璁㈠崟鍙�")
-    private List<String> orderNo;
+    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
index 1b352a2..ae5afc5 100644
--- 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
@@ -21,6 +21,9 @@
     @ApiModelProperty("涓氬姟绫诲瀷")
     private String wkType;
 
+    @ApiModelProperty("鍗曟嵁绫诲瀷")
+    private String type;
+
     @ApiModelProperty("鍗曞彿")
     private String orderNo;
 
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
index 2a743ad..f1d3d99 100644
--- 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
@@ -63,4 +63,7 @@
     @ApiModelProperty("鏉″舰鐮�")
     private String barcode;
 
+    @ApiModelProperty("鐜伴噾绁ㄥ彿")
+    private String crushNo;
+
 }
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 acf0704..9c8c055 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
@@ -1,11 +1,14 @@
 package com.vincent.rsf.server.api.service.impl;
 
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.controller.erp.params.*;
@@ -14,6 +17,7 @@
 import com.vincent.rsf.server.api.controller.erp.params.dto.WkOrderDto;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
 import com.vincent.rsf.server.manager.controller.dto.LocStockDto;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.*;
@@ -221,8 +225,8 @@
     @Override
     public R queryOrderStatus(QueryOrderParam queryParams) {
         WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
-                .in(WkOrder::getCode, queryParams.getOrderNo())
-                .eq(WkOrder::getType, queryParams.getType()));
+                .eq(WkOrder::getCode, queryParams.getOrderNo())
+                .eq(StringUtils.isNotBlank(queryParams.getType()), WkOrder::getType, queryParams.getType()));
         if (Objects.isNull(wkOrders)) {
             throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
         }
@@ -396,10 +400,32 @@
                 if (Objects.isNull(one)) {
                     throw new CoolException("鍗曟嵁锛�" + syncOrder.getOrderNo() + ", 涓氬姟绫诲瀷涓嶅瓨鍦紒锛�");
                 }
-                wkOrder.setType(OrderWorkType.getOrderType(syncOrder.getWkType()))
+                WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
+                        .eq(!Objects.isNull(syncOrder.getOrderId()), WkOrder::getPoId, syncOrder.getOrderId())
+                        .eq(WkOrder::getPoCode, syncOrder.getOrderNo()));
+                if (!Objects.isNull(order)) {
+                    if (order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val) ||
+                            order.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)) {
+                        /**鍒犻櫎鍗曟嵁鏄庣粏*/
+                        asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
+                        /**鍒犻櫎涓诲崟*/
+                        asnOrderService.removeById(order.getId());
+                    } else {
+                        throw new CoolException("鍗曟嵁宸叉坊鍔狅紝涓嶅彲鎵ц淇敼鎴栨坊鍔犳搷浣滐紒锛�");
+                    }
+                }
+                String rule = SerialRuleCode.SYS_ASN_ORDER;
+                if (syncOrder.getType().equals(OrderType.ORDER_OUT.type)) {
+                    rule = SerialRuleCode.SYS_OUT_STOCK_CODE;
+                }
+
+                String ruleCode = SerialRuleUtils.generateRuleCode(rule, null);
+                wkOrder.setType(syncOrder.getType())
                         .setWkType(OrderWorkType.getWorkType(syncOrder.getWkType()))
                         .setAnfme(syncOrder.getAnfme())
-                        .setCode(syncOrder.getOrderNo())
+                        .setPoCode(syncOrder.getOrderNo())
+                        .setPoId(syncOrder.getOrderId())
+                        .setCode(ruleCode)
                         .setArrTime(syncOrder.getArrTime())
                         .setId(null)
                         .setCreateTime(new Date())
@@ -409,17 +435,25 @@
                 if (!asnOrderService.save(wkOrder)) {
                     throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒");
                 }
-                List<SyncOrdersItem> ordersItems = syncOrder.getOrdersItems();
-                ordersItems.forEach(item -> {
-                    WkOrderItem wkOrderItem = new WkOrderItem();
-                    BeanUtils.copyProperties(item, wkOrderItem);
-                    wkOrderItem.setOrderCode(wkOrder.getCode())
-                            .setOrderId(wkOrder.getId())
-                            .setId(null);
-                    if (!asnOrderItemService.save(wkOrderItem)) {
-                        throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒");
+
+                syncOrder.getOrdersItems().forEach(orderItem -> {
+                    Map<String, Object> map = new ObjectMapper().convertValue(orderItem, Map.class);
+                    map.put("orderId", wkOrder.getId());
+                    map.put("poId", wkOrder.getPoId());
+                    map.put("poCode", wkOrder.getPoCode());
+                    map.put("order_code", wkOrder.getCode());
+
+                    if (!asnOrderItemService.fieldsSave(map, loginUserId)) {
+                        throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
                     }
                 });
+                List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
+                        .eq(WkOrderItem::getOrderId, wkOrder.getId()));
+                double sum = orderItems.stream().mapToDouble(WkOrderItem::getAnfme).sum();
+                wkOrder.setAnfme(sum);
+                if (!asnOrderService.updateById(wkOrder)) {
+                    throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒");
+                }
             });
         }
         return R.ok();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
index 44601b4..33c3f2a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
@@ -9,6 +9,7 @@
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.enums.CommonStatus;
 import com.vincent.rsf.server.system.entity.Fields;
 import com.vincent.rsf.server.system.entity.FieldsItem;
 import com.vincent.rsf.server.system.service.FieldsItemService;
@@ -137,7 +138,9 @@
      */
     public static List<Fields> getFieldsSta() {
         FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
-        return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
+        return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, CommonStatus.COMMONSTATUS_YES.val)
+                .eq(Fields::getUnique, CommonStatus.COMMONSTATUS_YES.val)
+                .eq(Fields::getFlagEnable, CommonStatus.COMMONSTATUS_YES.val).orderByAsc(Fields::getId));
     }
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java
new file mode 100644
index 0000000..6decdc5
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonStatus.java
@@ -0,0 +1,21 @@
+package com.vincent.rsf.server.manager.enums;
+
+/**
+ * 閫氱敤鐘舵��
+ */
+public enum CommonStatus {
+
+    //閫氱敤鐘舵��
+    COMMONSTATUS_YES(1, "鏄惁"),
+    COMMONSTATUS_NO(0, "鍚�"),
+    ;
+
+    CommonStatus(Integer val, String desc) {
+        this.val = val;
+        this.desc = desc;
+    }
+
+    public Integer val;
+
+    public String desc;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 4a033b9..3617b00 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -30,6 +30,7 @@
 import com.vincent.rsf.server.manager.service.CompanysService;
 import com.vincent.rsf.server.manager.service.MatnrService;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.entity.Fields;
 import com.vincent.rsf.server.system.service.DictDataService;
 import com.vincent.rsf.server.system.service.FieldsItemService;
 import com.vincent.rsf.server.system.service.FieldsService;
@@ -242,7 +243,15 @@
         try {
             StringBuffer sb = new StringBuffer();
             if (Objects.isNull(wkOrderItem.getFieldsIndex()) || StringUtils.isBlank(wkOrderItem.getFieldsIndex())) {
-                sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getSplrBatch() );
+                List<Fields> fields = FieldsUtils.getFieldsSta();
+                for (Fields field : fields) {
+                    if (Objects.isNull(params.get(field.getFields()))) {
+                        continue;
+                    }
+                    //瀛楁鎷兼帴
+                    sb.append(params.get(field.getFields()));
+                }
+                sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getSplrBatch());
                 //鑾峰彇16浣島uid
                 String uuid16 = Cools.md5Chinese(sb.toString());
                 wkOrderItem.setFieldsIndex(uuid16);
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 6373fc4..97089e8 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
 #    url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #    username: rsf
     username: root
-#    url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://10.10.10.200:3306/rsf-xiri?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #    password: xltys1995
     url: jdbc:mysql://127.0.0.1:3306/rsf-xiri?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     password: 34821015

--
Gitblit v1.9.1