From f55ed1d2a1bdf4ad80930e879631d6d95d4b6c3c Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 28 八月 2025 18:57:38 +0800
Subject: [PATCH] RCS 库位同步接口调用 RCS任务下发接口功能调用 RCS 取消任务接口功能开发 RCS异常功回调功能开发

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java      |   37 +
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java          |   10 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java |    3 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java |   88 ++-
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocItemMapper.java           |   13 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java    |    9 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocMapper.java               |   13 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/CommonResponse.java      |    4 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/Loc.java                     |  348 +++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java       |   17 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/CommonResponse.java         |   12 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CommonRequest.java   |   20 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsLocStsType.java       |   31 +
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java          |   34 
 rsf-server/src/main/resources/application-dev.yml                                      |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java   |    8 
 rsf-open-api/src/main/resources/mapper/LocMapper.xml                                   |    5 
 rsf-open-api/src/main/resources/application-dev.yml                                    |   45 -
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/SyncRcsLocsParam.java |   27 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java            |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java      |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java   |  123 ++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/SyncLocsDto.java         |   41 +
 rsf-open-api/src/main/resources/application.yml                                        |    2 
 rsf-open-api/src/main/resources/mapper/LocItemMapper.xml                               |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/SyncLocsDto.java        |   44 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java   |   53 ++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java                 |  347 +++++++++++++++
 29 files changed, 1,220 insertions(+), 134 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java
new file mode 100644
index 0000000..6a31602
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java
@@ -0,0 +1,37 @@
+package com.vincent.rsf.openApi.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title PlatformProperties
+ * @description
+ * @create 2025/3/7 09:48
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "platform.rcs")
+public class PlatformProperties {
+
+    /**
+     * 鎺ュ彛host
+     */
+    private String host;
+    /**
+     * 绔彛鍙�
+     */
+    private String port;
+
+    /**
+     * 鎺ュ彛閾炬帴鍓嶇紑
+     */
+    private String prePath;
+
+
+    public String getBaseUrl() {
+        return  this.host + ":" + this.port + "/" + this.prePath;
+    }
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
index db251dd..0b846cf 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
@@ -3,6 +3,7 @@
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.openApi.entity.params.RcsPubTaskParams;
+import com.vincent.rsf.openApi.entity.params.SyncRcsLocsParam;
 import com.vincent.rsf.openApi.service.WmsRcsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -71,9 +72,11 @@
      */
     @ApiOperation("RCS搴撲綅淇℃伅鍚屾")
     @PostMapping("/sync/locs")
-    public R syncLocsToWms() {
-         wmsRcsService.syncLocs();
-         return R.ok();
+    public R syncLocsToWms(@RequestBody SyncRcsLocsParam params) {
+         if (Objects.isNull(params)) {
+             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+         }
+         return R.ok().add(wmsRcsService.syncLocs(params));
     }
 
 
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/Loc.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/Loc.java
new file mode 100644
index 0000000..62b3d68
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/Loc.java
@@ -0,0 +1,348 @@
+package com.vincent.rsf.openApi.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.SpringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Data
+@Accessors(chain = true)
+@TableName("man_loc")
+public class Loc implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 搴撳尯鏍囪瘑
+     */
+    @ApiModelProperty(value= "搴撳尯鏍囪瘑")
+    private Long areaId;
+
+    /**
+     * 搴撲綅鍙�
+     */
+    @ApiModelProperty(value= "搴撲綅鍙�")
+    private String code;
+
+    /**
+     * 浠撳簱鏍囪瘑
+     */
+    @ApiModelProperty(value= "浠撳簱鏍囪瘑")
+    private Long warehouseId;
+
+    /**
+     * 搴撲綅绫诲瀷(*) H:  楂樺簱浣�   M:  涓簱浣�   L:  浣庡簱浣�  
+     */
+    @ApiModelProperty(value= "搴撲綅绫诲瀷(*) H:  楂樺簱浣�   M:  涓簱浣�   L:  浣庡簱浣�  ")
+    @TableField("`type`")
+    private String type;
+
+    @ApiModelProperty("搴撲綅绫诲瀷(*)[man_loc_type]")
+    @TableField(exist = false)
+    private List<Long> typeIds;
+
+    /**
+     * 铏氭嫙搴撲綅
+     */
+    @ApiModelProperty(value= "铏氭嫙搴撲綅")
+    private Short flagLogic;
+
+    /**
+     * 鍔熻兘灞炴��
+     */
+    @ApiModelProperty(value= "鍔熻兘灞炴��")
+    private String fucAtrrs;
+
+    /**
+     * 瀹瑰櫒缂栫爜
+     */
+    @ApiModelProperty(value= "瀹瑰櫒缂栫爜")
+    private String barcode;
+
+    /**
+     * 瀛樻斁鍗曚綅
+     */
+    @ApiModelProperty(value= "瀛樻斁鍗曚綅")
+    private String unit;
+
+    /**
+     * 闀�
+     */
+    @ApiModelProperty(value= "闀�")
+    @TableField("`length`")
+    private Double length;
+
+    /**
+     * 楂�
+     */
+    @ApiModelProperty(value= "楂�")
+    private Double height;
+
+    /**
+     * 瀹�
+     */
+    @ApiModelProperty(value= "瀹�")
+    private Double width;
+    /**
+     * 鎺�
+     */
+    @ApiModelProperty(value= "鎺�")
+    @TableField("`row`")
+    private Integer row;
+
+    /**
+     * 璁惧鍙�
+     */
+    @ApiModelProperty(value= "璁惧鍙�")
+    private Integer deviceNo;
+
+    /**
+     * 鍒�
+     */
+    @ApiModelProperty(value= "鍒�")
+    private Integer col;
+
+    /**
+     * 灞�
+     */
+    @ApiModelProperty(value= "灞�")
+    private Integer lev;
+
+    /**
+     * 宸烽亾
+     */
+    @ApiModelProperty(value= "宸烽亾")
+    @TableField("`channel`")
+    private Integer channel;
+
+    /**
+     * 鏈�澶ч浂浠舵暟
+     */
+    @ApiModelProperty(value= "鏈�澶ч浂浠舵暟")
+    private Integer maxParts;
+
+    /**
+     * 鏈�澶у寘瑁呮暟
+     */
+    @ApiModelProperty(value= "鏈�澶у寘瑁呮暟")
+    private Integer maxPack;
+
+    /**
+     * 搴撲綅浣跨敤鐘舵�� O:  绌哄簱   D:  绌烘澘   R:  棰勭害鍑哄簱   S:  棰勭害鍏ュ簱   X:  绂佺敤  聽 F:  鍦ㄥ簱  
+     */
+    @ApiModelProperty(value= "搴撲綅浣跨敤鐘舵�� O:  绌哄簱   D:  绌烘澘   R:  棰勭害鍑哄簱   S:  棰勭害鍏ュ簱   X:  绂佺敤  聽 F:  鍦ㄥ簱  ")
+    private String useStatus;
+
+    /**
+     * 鏄惁鏍囩绠$悊
+     */
+    @ApiModelProperty(value= "鏄惁鏍囩绠$悊")
+    private Short flagLabelMange;
+
+    /**
+     * 灞炴��
+     */
+    @ApiModelProperty(value= "灞炴��")
+    private String locAttrs;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 鍐荤粨  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
+    @TableField("`status`")
+    private Integer status;
+
+    /**
+     * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
+    @TableLogic
+    private Integer deleted;
+
+    /**
+     * 绉熸埛
+     */
+    @ApiModelProperty(value= "绉熸埛")
+    private Integer tenantId;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public Loc() {}
+
+    public Loc(Long areaId, String code, Long warehouseId, String type, Short flagLogic, String fucAtrrs, String barcode, String unit, Double length, Double height, Double width, Integer row, Integer col, Integer lev, Integer channel, Integer maxParts, Integer maxPack, String useStatus, Short flagLabelMange, String locAttrs, Integer status, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
+        this.areaId = areaId;
+        this.code = code;
+        this.warehouseId = warehouseId;
+        this.type = type;
+        this.flagLogic = flagLogic;
+        this.fucAtrrs = fucAtrrs;
+        this.barcode = barcode;
+        this.unit = unit;
+        this.length = length;
+        this.height = height;
+        this.width = width;
+        this.row = row;
+        this.col = col;
+        this.lev = lev;
+        this.channel = channel;
+        this.maxParts = maxParts;
+        this.maxPack = maxPack;
+        this.useStatus = useStatus;
+        this.flagLabelMange = flagLabelMange;
+        this.locAttrs = locAttrs;
+        this.status = status;
+        this.deleted = deleted;
+        this.tenantId = tenantId;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    Loc loc = new Loc(
+//            null,    // 搴撳尯鏍囪瘑[闈炵┖]
+//            null,    // 搴撲綅鍙�
+//            null,    // 浠撳簱鏍囪瘑[闈炵┖]
+//            null,    // 搴撲綅绫诲瀷(*)[闈炵┖]
+//            null,    // 铏氭嫙搴撲綅
+//            null,    // 鍔熻兘灞炴��
+//            null,    // 瀹瑰櫒缂栫爜
+//            null,    // 瀛樻斁鍗曚綅
+//            null,    // 闀�
+//            null,    // 楂�
+//            null,    // 瀹�
+//            null,    // 鎺抂闈炵┖]
+//            null,    // 鍒梉闈炵┖]
+//            null,    // 灞俒闈炵┖]
+//            null,    // 宸烽亾
+//            null,    // 鏈�澶ч浂浠舵暟
+//            null,    // 鏈�澶у寘瑁呮暟
+//            null,    // 搴撲綅浣跨敤鐘舵�乕闈炵┖]
+//            null,    // 鏄惁鏍囩绠$悊
+//            null,    // 灞炴��
+//            null,    // 鐘舵�乕闈炵┖]
+//            null,    // 鏄惁鍒犻櫎[闈炵┖]
+//            null,    // 绉熸埛
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿[闈炵┖]
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿[闈炵┖]
+//            null    // 澶囨敞
+//    );
+
+
+
+    public String getUseStatus$(){
+        if (null == this.useStatus){ return null; }
+        switch (this.useStatus){
+            case  "O":
+                return " 绌哄簱";
+            case  "D":
+                return " 绌烘澘";
+            case  "R":
+                return " 棰勭害鍑哄簱";
+            case  "S":
+                return " 棰勭害鍏ュ簱";
+            case  "X":
+                return " 绂佺敤";
+            case  "F":
+                return " 鍦ㄥ簱";
+            default:
+                return String.valueOf(this.useStatus);
+        }
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "鍐荤粨";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+
+
+    public Boolean getStatusBool(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return true;
+            case 0:
+                return false;
+            default:
+                return null;
+        }
+    }
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java
new file mode 100644
index 0000000..f855443
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java
@@ -0,0 +1,347 @@
+package com.vincent.rsf.openApi.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.DateUtils;
+import com.vincent.rsf.framework.common.SpringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+import java.util.Objects;
+
+@Data
+@Accessors(chain = true)
+@TableName("man_loc_item")
+public class LocItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 涓诲崟ID
+     */
+    @ApiModelProperty(value= "涓诲崟ID")
+    private Long locId;
+
+
+    @ApiModelProperty("搴撲綅缂栫爜")
+    private String locCode;
+
+    /**
+     * 鍗曟嵁ID
+     */
+    @ApiModelProperty(value= "鍗曟嵁ID")
+    private Long orderId;
+
+    /**
+     * 鍗曟嵁绫诲瀷
+     */
+    @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
+    private String type;
+
+    /**
+     * 璁㈠崟鏄庣粏id
+     */
+    @ApiModelProperty(value= "璁㈠崟鏄庣粏id")
+    private Long orderItemId;
+
+    /**
+     * 涓氬姟绫诲瀷
+     */
+    @ApiModelProperty(value= "涓氬姟绫诲瀷")
+    private Short wkType;
+
+    /**
+     * 鐗╂枡ID
+     */
+    @ApiModelProperty(value= "鐗╂枡ID")
+    private Long matnrId;
+
+    /**
+     * 骞冲彴鏍囪瘑锛堣鍙凤級
+     */
+    @ApiModelProperty(value = "骞冲彴鏍囪瘑锛堣鍙凤級")
+    private String platItemId;
+
+    @ApiModelProperty("瀹㈡埛璁㈠崟鍙�")
+    private String platOrderCode;
+
+    @ApiModelProperty("宸ュ崟鍙�")
+    private String platWorkCode;
+
+    @ApiModelProperty("椤圭洰鍙�")
+    private String projectCode;
+
+    @ApiModelProperty("鍑哄簱鏁伴噺")
+    @TableField(exist = false)
+    private Double outQty;
+
+    @ApiModelProperty("宸烽亾")
+    @TableField(exist = false)
+    private Integer channel;
+
+    /**
+     * 鐗╂枡鍚嶇О
+     */
+    @ApiModelProperty(value= "鐗╂枡鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    @ApiModelProperty(value= "鐗╂枡缂栫爜")
+    private String matnrCode;
+
+    /**
+     * 鐗╂枡璺熻釜鐮�
+     */
+    @ApiModelProperty(value= "鐗╂枡璺熻釜鐮�")
+    private String trackCode;
+
+    /**
+     * 搴撳瓨鍗曚綅
+     */
+    @ApiModelProperty(value= "搴撳瓨鍗曚綅")
+    private String unit;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
+
+
+    @ApiModelProperty("鎵ц鏁伴噺")
+    private Double workQty;
+
+
+    @ApiModelProperty("瀹屾垚鏁伴噺")
+    private Double qty;
+
+    /**
+     * 搴撳瓨鎵规
+     */
+    @ApiModelProperty(value= "搴撳瓨鎵规")
+    private String batch;
+
+    /**
+     * 渚涘簲鍟嗘壒娆�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟嗘壒娆�")
+    private String splrBatch;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String spec;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 瀛楁绱㈠紩
+     */
+    @ApiModelProperty(value= "瀛楁绱㈠紩")
+    private String fieldsIndex;
+
+    @ApiModelProperty("鎵╁睍瀛楁")
+    @TableField(exist = false)
+    private Map<String, String> extendFields;
+
+    @ApiModelProperty("鎵樼洏鐮�")
+    @TableField(exist = false)
+    private String barcode;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 鍐荤粨  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
+    private Integer status;
+
+    /**
+     * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
+    @TableLogic
+    private Integer deleted;
+
+    /**
+     * 绉熸埛
+     */
+    @ApiModelProperty(value= "绉熸埛")
+    private Integer tenantId;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    @ApiModelProperty("渚涘簲鍟咺D")
+    private Long splrId;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private Long sourceId;
+
+    @TableField(exist = false)
+    private Long source;
+
+    @TableField(exist = false)
+    private String sourceCode;
+
+    @ApiModelProperty("鍑虹珯鍙�")
+    @TableField(exist = false)
+    private String siteNo;
+
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public LocItem() {}
+
+    public LocItem(Long locId, Long orderId, String type, Long orderItemId, Short wkType, Long matnrId, String maktx, String matnrCode, String trackCode, String unit, Double anfme, String batch, String splrBatch, String spec, String model, String fieldsIndex, Integer status, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
+        this.locId = locId;
+        this.orderId = orderId;
+        this.type = type;
+        this.orderItemId = orderItemId;
+        this.wkType = wkType;
+        this.matnrId = matnrId;
+        this.maktx = maktx;
+        this.matnrCode = matnrCode;
+        this.trackCode = trackCode;
+        this.unit = unit;
+        this.anfme = anfme;
+        this.batch = batch;
+        this.splrBatch = splrBatch;
+        this.spec = spec;
+        this.model = model;
+        this.fieldsIndex = fieldsIndex;
+        this.status = status;
+        this.deleted = deleted;
+        this.tenantId = tenantId;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    LocItem locItem = new LocItem(
+//            null,    // 涓诲崟IDs
+//            null,    // 鍗曟嵁ID
+//            null,    // 鍗曟嵁绫诲瀷
+//            null,    // 璁㈠崟鏄庣粏id
+//            null,    // 涓氬姟绫诲瀷
+//            null,    // 鐗╂枡ID
+//            null,    // 鐗╂枡鍚嶇О
+//            null,    // 鐗╂枡缂栫爜
+//            null,    // 鐗╂枡璺熻釜鐮�
+//            null,    // 搴撳瓨鍗曚綅
+//            null,    // 鏁伴噺
+//            null,    // 搴撳瓨鎵规
+//            null,    // 渚涘簲鍟嗘壒娆�
+//            null,    // 瑙勬牸
+//            null,    // 鍨嬪彿
+//            null,    // 瀛楁绱㈠紩
+//            null,    // 鐘舵�乕闈炵┖]
+//            null,    // 鏄惁鍒犻櫎[闈炵┖]
+//            null,    // 绉熸埛
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿[闈炵┖]
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿[闈炵┖]
+//            null    // 澶囨敞
+//    );
+
+    public Double getReviseQty() {
+        return this.anfme;
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "鍐荤粨";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public Integer getDeadTime() {
+        if (null == this.createTime){ return null; }
+        return DateUtils.diff(createTime, new Date());
+    }
+
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public Boolean getStatusBool(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return true;
+            case 0:
+                return false;
+            default:
+                return null;
+        }
+    }
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java
index fcdb232..0245eb6 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java
@@ -4,4 +4,6 @@
 
     public static String pubTask = "/api/open/bus/submit";
 
+    public static String syncLocs = "/api/open/loc/sync";
+
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/CommonResponse.java
similarity index 89%
rename from rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java
rename to rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/CommonResponse.java
index 5d944a9..0e89156 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/CommonResponse.java
@@ -1,11 +1,9 @@
-package com.vincent.rsf.openApi.entity;
+package com.vincent.rsf.openApi.entity.dto;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
-
-import java.util.List;
 
 /**
  * @author Ryan
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/SyncLocsDto.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/SyncLocsDto.java
new file mode 100644
index 0000000..1600cd2
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/dto/SyncLocsDto.java
@@ -0,0 +1,41 @@
+package com.vincent.rsf.openApi.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncLocsDto", description = "搴撲綅鍚屾Dto")
+public class SyncLocsDto {
+
+    private Integer zoneId;
+
+    private String locNo;
+
+    private Integer locSts;
+
+    private Integer row;
+
+    private Integer bay;
+
+    private Integer lev;
+
+    private String barcode;
+
+    private String zpallet;
+
+    private String locType;
+
+    private String zoneId$;
+
+    private String locType$;
+
+    private String locSts$;
+
+    private Integer statusBool;
+
+    private String locStsEl;
+
+    private String status$;
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
index c81580d..3240a4c 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
@@ -28,6 +28,9 @@
     @ApiModelProperty("浠诲姟绫诲瀷{LOC_TO_LOC: 绉诲簱, LOC_TO_STA: 鍑哄簱, STA_TO_LOC: 鍏ュ簱, STA_TO_STA: 绔欑偣闂存惉杩恾")
     private String taskType;
 
+    @ApiModelProperty("浠诲姟鍙�")
+    private String seqNum;
+
     @ApiModelProperty("璧峰搴撲綅")
     private String oriLoc;
 
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/SyncRcsLocsParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/SyncRcsLocsParam.java
new file mode 100644
index 0000000..51f164b
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/SyncRcsLocsParam.java
@@ -0,0 +1,27 @@
+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.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncRcsLocsParam", description = "鍚屾搴撲綅鍙傛暟")
+public class SyncRcsLocsParam implements Serializable {
+
+    @ApiModelProperty("褰撳墠椤�")
+    private Integer current;
+
+    @ApiModelProperty("鏉$洰鏁�")
+    private Integer pageSize;
+
+    @ApiModelProperty("搴撲綅鍙�")
+    private String locNo;
+
+    @ApiModelProperty("搴撲綅鐘舵��")
+    private String locSts;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocItemMapper.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocItemMapper.java
new file mode 100644
index 0000000..55b5a87
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocItemMapper.java
@@ -0,0 +1,13 @@
+package com.vincent.rsf.openApi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vincent.rsf.openApi.entity.LocItem;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+
+@Mapper
+@Repository
+public interface LocItemMapper extends BaseMapper<LocItem> {
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocMapper.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocMapper.java
new file mode 100644
index 0000000..4d7b5ce
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/mapper/LocMapper.java
@@ -0,0 +1,13 @@
+package com.vincent.rsf.openApi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vincent.rsf.openApi.entity.Loc;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+
+@Mapper
+@Repository
+public interface LocMapper extends BaseMapper<Loc> {
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
index e96c585..ddbbb24 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
@@ -1,11 +1,17 @@
 package com.vincent.rsf.openApi.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.entity.Loc;
+import com.vincent.rsf.openApi.entity.LocItem;
+import com.vincent.rsf.openApi.entity.dto.SyncLocsDto;
 import com.vincent.rsf.openApi.entity.params.RcsPubTaskParams;
+import com.vincent.rsf.openApi.entity.params.SyncRcsLocsParam;
 
+import java.util.List;
 import java.util.Map;
 
-public interface WmsRcsService {
+public interface WmsRcsService extends IService<Loc> {
 
     R pubTasks(RcsPubTaskParams params);
 
@@ -13,5 +19,5 @@
 
     R callBackEvent(Map<String, Object> params);
 
-    void syncLocs();
+    List<SyncLocsDto> syncLocs(SyncRcsLocsParam params);
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
index 37caa2c..0ecefd8 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -1,15 +1,22 @@
 package com.vincent.rsf.openApi.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
-import com.vincent.rsf.openApi.entity.CommonResponse;
+import com.vincent.rsf.openApi.config.PlatformProperties;
+import com.vincent.rsf.openApi.entity.Loc;
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
 import com.vincent.rsf.openApi.entity.constant.RcsConstant;
+import com.vincent.rsf.openApi.entity.dto.SyncLocsDto;
 import com.vincent.rsf.openApi.entity.params.RcsPubTaskParams;
+import com.vincent.rsf.openApi.entity.params.SyncRcsLocsParam;
+import com.vincent.rsf.openApi.mapper.LocMapper;
 import com.vincent.rsf.openApi.service.WmsRcsService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,24 +28,21 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+
 
 @Slf4j
-@Service("wmsRcsServiceImpl")
-public class WmsRcsServiceImpl implements WmsRcsService {
+@Service("wmsRcsService")
+public class WmsRcsServiceImpl extends ServiceImpl<LocMapper, Loc> implements WmsRcsService {
 
-//    @Autowired
-//    private RemotesInfoProperties.RcsApi rcsApi;
+    @Autowired
+    private PlatformProperties rcsApi;
 
     @Autowired
     private RestTemplate restTemplate;
 
-    /**RCS鍩虹閰嶇疆閾炬帴*/
-//    private final String rcsUrl =  rcsApi.getHost() + rcsApi.getPort();
 
     /**
      * @author Ryan
@@ -47,14 +51,16 @@
      * @version 1.0
      */
     @Override
-    @Transactional(timeout = 60, rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public R pubTasks(RcsPubTaskParams params)  {
-        log.info("浠诲姟涓嬪彂锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", "" + RcsConstant.pubTask, JSONObject.toJSONString(params));
+        /**RCS鍩虹閰嶇疆閾炬帴*/
+        String rcsUrl =  rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask;
+        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" + RcsConstant.pubTask, HttpMethod.POST, httpEntity, String.class);
+        ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
         log.info("浠诲姟涓嬪彂鍚庯紝鍝嶅簲缁撴灉锛� {}", exchange);
         if (Objects.isNull(exchange.getBody())) {
             throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
@@ -65,7 +71,7 @@
             try {
                 CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                 if (result.getCode() == 200) {
-                    return R.ok(result);
+                    return R.ok();
                 } else {
                     throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
                 }
@@ -83,7 +89,7 @@
      */
     @Override
     public R cancelTasks(Map<String, Object> params) {
-        return null;
+        return  R.ok();
     }
 
     /**
@@ -94,7 +100,7 @@
      */
     @Override
     public R callBackEvent(Map<String, Object> params) {
-        return null;
+        return R.ok();
     }
 
     /**
@@ -104,16 +110,46 @@
      * @version 1.0
      */
     @Override
-    public void syncLocs() {
-        ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);
-        scheduled.scheduleWithFixedDelay(new Runnable() {
-            int current = 1;
-            @Override
-            public void run() {
-                log.info("<UNK>{}<UNK>", current);
-                current ++;
-                log.info("{}", current);
+    public List<SyncLocsDto> syncLocs(SyncRcsLocsParam params) {
+         return syncRcsLocs(params);
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/8/28
+     * @description: 鎷夊彇RCS搴撲綅锛屽悓姝ヨ嚦鏈湴
+     * @version 1.0
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public List<SyncLocsDto> syncRcsLocs(SyncRcsLocsParam  params) {
+        /**RCS鍩虹閰嶇疆閾炬帴*/
+        String rcsUrl =  rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.syncLocs;
+        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 jsonObject = JSONObject.parseObject(exchange.getBody()).getJSONObject("data");
+                    List<SyncLocsDto> array =  JSONArray.parseArray(jsonObject.getJSONArray("records").toJSONString(), SyncLocsDto.class);
+                    log.info("records缁撴灉锛� {}",  array);
+                    return array;
+                } else {
+                    throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+                }
+            } catch (JsonProcessingException e) {
+                throw new CoolException(e.getMessage());
             }
-        }, 3, 3, TimeUnit.SECONDS);
+        }
     }
 }
diff --git a/rsf-open-api/src/main/resources/application-dev.yml b/rsf-open-api/src/main/resources/application-dev.yml
index 85e4cc3..bc1bd20 100644
--- a/rsf-open-api/src/main/resources/application-dev.yml
+++ b/rsf-open-api/src/main/resources/application-dev.yml
@@ -44,23 +44,6 @@
     multipart:
       maxFileSize: 100MB
       maxRequestSize: 100MB
-  jmx:
-    enabled: false
-  mail:
-    from: t1731253606@163.com
-    host: smtp.163.com
-    port: 465
-    username: t1731253606@163.com
-    password: FCqETysH8TfuPqkY
-    properties:
-      mail:
-        smtp:
-          auth: true
-          ssl: true
-          connectiontimeout: 5000
-          timeout: 5000
-          socketFactory:
-            class: javax.net.ssl.SSLSocketFactory
 redis:
   host: 127.0.0.1
   password: xltys1995
@@ -70,33 +53,9 @@
 
 #骞冲彴鎺ュ彛淇℃伅閰嶇疆(濡傦細ERP, QMS, WCS绛�)
 platform:
-  #浼佷笟ERP骞冲彴
-  erp:
-    #localhost
-    host: http://127.0.0.1
-    #绔彛鍙�
-    port: 8080
-    #鎺ュ搧閾炬帴鍓嶇紑
-    pre-path: rsf-server
-    #鎺ュ彛鏄庣粏
-    api:
-      #璐ㄦ涓婃姤鎺ュ彛
-      notify-inspect: /report/inspect
+  #RCS閾炬帴
   rcs:
     #閾炬帴
     host: http://192.168.4.84
     #绔彛
-    port: 8088
-
-#浠撳簱鍔熻兘鍙傛暟閰嶇疆
-stock:
-  #鏄惁鍏佽鎵撳嵃璐х墿鏍囩锛� 榛樿鍏佽鎵撳嵃锛屼篃鍙敱渚涘簲鍟嗘彁渚涙爣绛�
-  flagPrinter: false
-  #鏄惁鑷姩鐢熸垚ASN鍗曪紙榛樿锛氭槸锛夛紝涓恒�庡惁銆忓垯寮�鍚疨O鍗曟墜鍔ㄧ敓鎴怉SN鍗曞姛鑳�
-  flagAutoAsn: false
-  #璐ㄦ鍔熻兘 鏄惁鏍¢獙涓婃灦锛堥粯璁わ細鏄級锛屾槸鍚︽牎楠屾敹璐э紙榛樿锛氬惁锛�
-  inspect:
-    #鍒ゆ柇鏄悗妫�楠屽悎鏍煎悗锛屾墠鍏佽涓婃灦
-    flagAvailable: true
-    #鍒ゆ柇鏄惁鏍¢獙鍚堟牸鍚庯紝鎵嶅厑璁告敹璐�
-    flagReceiving: false
\ No newline at end of file
+    port: 8088
\ No newline at end of file
diff --git a/rsf-open-api/src/main/resources/application.yml b/rsf-open-api/src/main/resources/application.yml
index 4e2b57e..dbcd3cd 100644
--- a/rsf-open-api/src/main/resources/application.yml
+++ b/rsf-open-api/src/main/resources/application.yml
@@ -17,8 +17,6 @@
       id-type: auto
       logic-delete-value: 1
       logic-not-delete-value: 0
-super:
-  pwd: xltys1995
 
 logging:
   file:
diff --git a/rsf-open-api/src/main/resources/mapper/LocItemMapper.xml b/rsf-open-api/src/main/resources/mapper/LocItemMapper.xml
new file mode 100644
index 0000000..6354cda
--- /dev/null
+++ b/rsf-open-api/src/main/resources/mapper/LocItemMapper.xml
@@ -0,0 +1,5 @@
+<?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.LocItemMapper">
+
+</mapper>
diff --git a/rsf-open-api/src/main/resources/mapper/LocMapper.xml b/rsf-open-api/src/main/resources/mapper/LocMapper.xml
new file mode 100644
index 0000000..950fa0d
--- /dev/null
+++ b/rsf-open-api/src/main/resources/mapper/LocMapper.xml
@@ -0,0 +1,5 @@
+<?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.LocMapper">
+
+</mapper>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
index dc0352f..92b0dc7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
@@ -4,6 +4,7 @@
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
 import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
+
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.manager.enums.TaskType;
 import com.vincent.rsf.server.api.service.WcsService;
@@ -97,8 +98,6 @@
     @OperationLog("RCS搴撲綅淇℃伅鍚屾")
     @PostMapping("/sync/locs")
     public R syncLocsToWms() {
-
-        return R.ok();
-//        return wmsRcsService.syncLocs();
+        return wcsService.syncLocsToWms();
     }
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/CommonResponse.java
similarity index 74%
copy from rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java
copy to rsf-server/src/main/java/com/vincent/rsf/server/api/entity/CommonResponse.java
index 5d944a9..3dd0f0b 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/CommonResponse.java
@@ -1,18 +1,10 @@
-package com.vincent.rsf.openApi.entity;
+package com.vincent.rsf.server.api.entity;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
-import java.util.List;
-
-/**
- * @author Ryan
- * @date 2025/8/27
- * @description: 閫氱敤鍝嶅簲缁撴灉
- * @version 1.0
- */
 @Data
 @Accessors(chain = true)
 @ApiModel(value = "CommonResponse", description = "閫氱敤鍝嶅簲缁撴灉 ")
@@ -27,4 +19,4 @@
     @ApiModelProperty("鍝嶅簲缁撴灉")
     private Object data;
 
-}
+}
\ No newline at end of file
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java
new file mode 100644
index 0000000..a69d637
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java
@@ -0,0 +1,8 @@
+package com.vincent.rsf.server.api.entity.constant;
+
+public class RcsConstant {
+
+    public static String pubTask = "/rsf-open-api/rcs/pub/task";
+
+    public static String syncLocs = "/rsf-open-api/rcs/sync/locs";
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/SyncLocsDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/SyncLocsDto.java
new file mode 100644
index 0000000..42a1609
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/SyncLocsDto.java
@@ -0,0 +1,44 @@
+package com.vincent.rsf.server.api.entity.dto;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncLocsDto", description = "搴撲綅鍚屾Dto")
+public class SyncLocsDto implements Serializable {
+
+    private Integer zoneId;
+
+    private String locNo;
+
+    private String locSts;
+
+    private Integer row;
+
+    private Integer bay;
+
+    private Integer lev;
+
+    private String barcode;
+
+    private String zpallet;
+
+    private String locType;
+
+    private String zoneId$;
+
+    private String locType$;
+
+    private String locSts$;
+
+    private Integer statusBool;
+
+    private String locStsEl;
+
+    private String status$;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CommonRequest.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CommonRequest.java
new file mode 100644
index 0000000..3da81c5
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CommonRequest.java
@@ -0,0 +1,20 @@
+package com.vincent.rsf.server.api.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncRcsLocsParam", description = "鍚屾搴撲綅鍙傛暟")
+public class CommonRequest implements Serializable {
+
+    @ApiModelProperty("褰撳墠椤�")
+    private Integer current;
+
+    @ApiModelProperty("鏉$洰鏁�")
+    private Integer pageSize;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java
new file mode 100644
index 0000000..ebc0685
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java
@@ -0,0 +1,53 @@
+package com.vincent.rsf.server.api.entity.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 = "WcsTaskParams", description = "浠诲姟涓嬪彂鍙傛暟")
+public class WcsTaskParams implements Serializable {
+
+    @ApiModelProperty("鎵规")
+    private String batch;
+
+    @ApiModelProperty("浠诲姟鏄庣粏")
+    private List<TaskItemParam> taskList;
+}
+
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "TaskItem", description = "浠诲姟鍒楄〃")
+class TaskItemParam {
+
+    @ApiModelProperty("浠诲姟绫诲瀷{LOC_TO_LOC: 绉诲簱, LOC_TO_STA: 鍑哄簱, STA_TO_LOC: 鍏ュ簱, STA_TO_STA: 绔欑偣闂存惉杩恾")
+    private String taskType;
+
+    @ApiModelProperty("浠诲姟鍙�")
+    private String seqNum;
+
+    @ApiModelProperty("璧峰搴撲綅")
+    private String oriLoc;
+
+    @ApiModelProperty("璧峰绔欑偣")
+    private String oriSta;
+
+    @ApiModelProperty("鐩爣搴撲綅")
+    private String destLoc;
+
+    @ApiModelProperty("鐩爣绔欑偣")
+    private String destSta;
+
+    @ApiModelProperty("鎵樼洏鐮�")
+    private String zpallet;
+
+    @ApiModelProperty("浼樺厛绾�")
+    private Integer priority;
+}
\ No newline at end of file
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
index f40ea7c..e2e720c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
@@ -1,7 +1,9 @@
 package com.vincent.rsf.server.api.service;
 
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
 import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.params.WcsTaskParams;
 
 public interface WcsService {
     InTaskMsgDto createInTask(TaskInParam param);
@@ -9,4 +11,6 @@
     void agvTaskPickUpComplete(TaskInParam param);
 
     InTaskMsgDto getLocNo(TaskInParam param) throws Exception;
+
+    R syncLocsToWms();
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index e6a36bf..11a9ab3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -1,12 +1,25 @@
 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.update.LambdaUpdateWrapper;
+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.common.Cools;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.config.RemotesInfoProperties;
+import com.vincent.rsf.server.api.entity.CommonResponse;
+import com.vincent.rsf.server.api.entity.constant.RcsConstant;
 import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
 import com.vincent.rsf.server.api.entity.dto.LocTypeDto;
 import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.dto.SyncLocsDto;
+import com.vincent.rsf.server.api.entity.params.CommonRequest;
+import com.vincent.rsf.server.api.entity.params.WcsTaskParams;
 import com.vincent.rsf.server.manager.enums.*;
 import com.vincent.rsf.server.api.service.WcsService;
 import com.vincent.rsf.server.api.utils.LocUtils;
@@ -17,16 +30,26 @@
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 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.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 public class WcsServiceImpl implements WcsService {
     @Autowired
@@ -51,6 +74,10 @@
     private WaitPakinItemService waitPakinItemService;
     @Autowired
     private BasStationService basStationService;
+    @Autowired
+    private RestTemplate restTemplate;
+    @Autowired
+    private RemotesInfoProperties.RcsApi rcsApi;
 
 
     @Override
@@ -361,18 +388,94 @@
         //鏍规嵁绔嬪簱绫诲瀷鑾峰彇鑾峰彇搴撲綅
         if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_CRN.val)) {
             //鍫嗗灈鏈�
-            dto = getLocNoCrn(param.getOrgLoc(),deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
+            dto = getLocNoCrn(param.getOrgLoc(), deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
 
         } else if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_FOUR_DIRECTIONS.val)) {
             //鍥涘悜搴�
-        }  else {
+        } else {
             //CTU 搴撲互鍙婂叾瀹�
             dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
         }
         return dto;
     }
 
-    private InTaskMsgDto getLocNoCrn(String orgLoc,DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
+    /**
+     * @author Ryan
+     * @date 2025/8/28
+     * @description: Wcs搴撲綅鍚屾
+     * @version 1.0
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R syncLocsToWms() {
+        /**RCS鍩虹閰嶇疆閾炬帴*/
+        CommonRequest params = new CommonRequest();
+        params.setPageSize(100);
+        ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);
+        scheduled.scheduleWithFixedDelay(new Runnable() {
+            int current = 1;
+            @Override
+            public void run() {
+                params.setCurrent(current);
+                List<SyncLocsDto> dtos = syncLocs(params);
+                if (dtos.isEmpty()) {
+                    scheduled.shutdown();
+                }
+                dtos.forEach(dto -> {
+                    Loc loc = new Loc();
+                    loc.setCode(dto.getLocNo())
+                            .setBarcode(dto.getBarcode())
+                            .setRow(dto.getRow())
+                            .setLev(dto.getLev())
+                            .setId(null)
+                            .setAreaId(41L)
+                            .setWarehouseId(27L)
+                            .setCol(dto.getBay())
+                            .setType(dto.getLocType())
+                            .setStatus(dto.getStatusBool())
+                            .setUseStatus(LocStsType.getLocSts(dto.getLocSts()));
+                    if (!locService.save(loc)) {
+                        scheduled.shutdown();
+                        throw new CoolException("WCS搴撲綅鍚屾澶辫触锛侊紒");
+                    }
+                });
+                current++;
+            }
+        }, 1, 1, TimeUnit.SECONDS);
+
+        return R.ok();
+    }
+
+    private List<SyncLocsDto> syncLocs(CommonRequest params) {
+        String rcsUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.syncLocs;
+        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 jsonObject = JSONObject.parseObject(exchange.getBody()).getJSONObject("data");
+                    return JSONArray.parseArray(jsonObject.getJSONArray("records").toJSONString(), SyncLocsDto.class);
+                } else {
+                    throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+                }
+            } catch (JsonProcessingException e) {
+                throw new CoolException(e.getMessage());
+            }
+        }
+    }
+
+    private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
         if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
             matnr = "";
         }
@@ -499,7 +602,7 @@
                     );
 
                     if (!Cools.isEmpty(locMast2)) {
-                        if (null != orgMoveLoc){
+                        if (null != orgMoveLoc) {
                             if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                 break;
                             }
@@ -516,7 +619,7 @@
                     );
 
                     if (!Cools.isEmpty(locMast2)) {
-                        if (null != orgMoveLoc){
+                        if (null != orgMoveLoc) {
                             if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                 break;
                             }
@@ -531,7 +634,7 @@
                         );
 
                         if (!Cools.isEmpty(locMast2)) {
-                            if (null != orgMoveLoc){
+                            if (null != orgMoveLoc) {
                                 if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                     break;
                                 }
@@ -556,7 +659,7 @@
                         );
 
                         if (!Cools.isEmpty(locMast2)) {
-                            if (null != orgMoveLoc){
+                            if (null != orgMoveLoc) {
                                 if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                     break;
                                 }
@@ -571,7 +674,7 @@
                             );
 
                             if (!Cools.isEmpty(locMast2)) {
-                                if (null != orgMoveLoc){
+                                if (null != orgMoveLoc) {
                                     if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                         break;
                                     }
@@ -604,14 +707,14 @@
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < rowCount * 2) {
                 times = times + 1;
-                return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
+                return getLocNoCrn(orgLoc, deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
 
             }
             // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
             if (locTypeDto.getLocType1() < 3) {
                 int i = locTypeDto.getLocType1() + 1;
                 locTypeDto.setLocType1(i);
-                return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
+                return getLocNoCrn(orgLoc, deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
             }
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java
index e0bcb41..8e336a6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java
@@ -2,8 +2,6 @@
 
 import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.config.BeanPostProcessor;
@@ -61,21 +59,6 @@
 
         return docket;
     }
-
-    @Bean
-    public Docket rcsDocket() {
-        Docket docket = new Docket(DocumentationType.OAS_30)
-                .apiInfo(apiInfo())
-                .enable("dev".equals(active))
-                .groupName("RCS浠诲姟璋冨害")
-                .select()
-                .apis(RequestHandlerSelectors.basePackage("com.vincent.rsf.openApi.controller"))
-                .paths(PathSelectors.any())
-                .build();
-
-        return docket;
-    }
-
 
     private ApiInfo apiInfo() {
         return new ApiInfoBuilder()
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
index 6b27992..0047168 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
@@ -1,10 +1,5 @@
 package com.vincent.rsf.server.manager.enums;
 
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.vincent.rsf.framework.common.SpringUtils;
-import com.vincent.rsf.framework.exception.CoolException;
-
 public enum LocStsType {
 
     //绌烘澘
@@ -30,14 +25,6 @@
         this.desc = desc;
     }
 
-//    public long val() {
-//        LocStsService service = SpringUtils.getBean(LocStsService.class);
-//        LocSts locSts = service.getOne(new LambdaQueryWrapper<LocSts>().eq(LocSts::getLocSts, this.toString()));
-//        if (locSts == null) {
-//            throw new CoolException("LocStsType Error!");
-//        }
-//        return locSts.getId();
-//    }
 
     public static LocStsType get(String el) {
         for (LocStsType value : LocStsType.values()) {
@@ -48,5 +35,26 @@
         return null;
     }
 
+    /**
+     * @author Ryan
+     * @date 2025/8/28
+     * @description: RCS搴撲綅鐘舵�佽浆鎹�
+     * @version 1.0
+     */
+    public static String getLocSts(String val) {
+        if (val.equals(RcsLocStsType.LOC_STS_TYPE_D.type)) {
+            return LocStsType.LOC_STS_TYPE_D.type;
+        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_F.type)) {
+            return LocStsType.LOC_STS_TYPE_F.type;
+        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_S.type)) {
+            return LocStsType.LOC_STS_TYPE_S.type;
+        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_R.type)) {
+            return LocStsType.LOC_STS_TYPE_R.type;
+        } else if (val.equals(RcsLocStsType.LOC_STS_TYPE_X.type)) {
+            return LocStsType.LOC_STS_TYPE_X.type;
+        }
+        return null;
+    }
+
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsLocStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsLocStsType.java
new file mode 100644
index 0000000..7181326
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsLocStsType.java
@@ -0,0 +1,31 @@
+package com.vincent.rsf.server.manager.enums;
+
+/**
+ * @author Ryan
+ * @date 2025/8/28
+ * @description: RCS搴撲綅鐘舵�佺被鍨�
+ * @version 1.0
+ */
+public enum RcsLocStsType {
+    //绌烘澘
+    LOC_STS_TYPE_D("15", "IDLE"),
+    //鍦ㄥ簱
+    LOC_STS_TYPE_F("16","STOCK"),
+    //绂佺敤
+    LOC_STS_TYPE_X("19","DISABLED"),
+    //鍏ュ簱棰勭害
+    LOC_STS_TYPE_S("17","PAKIN"),
+    //鍑哄簱棰勭害
+    LOC_STS_TYPE_R("18", "PAKOUT"),
+    ;
+
+    public String type;
+
+    public String desc;
+
+    RcsLocStsType(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+}
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index c783677..da3d1e7 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -84,9 +84,9 @@
       notify-inspect: /report/inspect
   rcs:
     #閾炬帴
-    host: http://192.168.4.84
+    host: http://127.0.0.1
     #绔彛
-    port: 8088
+    port: 8081
 
 #浠撳簱鍔熻兘鍙傛暟閰嶇疆
 stock:

--
Gitblit v1.9.1