From 7f1ee24bca80d28851a95ee2019ea6faeb70d81c Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 29 十二月 2025 17:34:39 +0800
Subject: [PATCH] 1.新增agv状态反馈

---
 src/main/java/com/zy/asrs/entity/TransInOutStationAllow.java |   29 +
 src/main/java/com/zy/asrs/mapper/TaskMapper.java             |   10 
 src/main/java/com/zy/asrs/entity/TransParent.java            |   39 ++
 src/main/java/com/zy/asrs/controller/OpenController.java     |   14 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java  |    1 
 src/main/java/com/zy/asrs/entity/WrkMast.java                |    4 
 src/main/resources/mapper/TaskMapper.xml                     |   11 
 src/main/java/com/zy/asrs/entity/RcsReturn.java              |   20 +
 src/main/java/com/zy/asrs/entity/RcsTaskContinue.java        |   20 +
 src/main/java/com/zy/asrs/entity/AgvTask.java                |  486 +++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java  |   23 +
 src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java        |   45 ++
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java   |  318 ++++++++++++++++
 src/main/java/com/zy/asrs/service/RcsService.java            |   15 
 src/main/java/com/zy/asrs/entity/RcsReporterTask.java        |   21 +
 src/main/java/com/zy/asrs/service/TaskService.java           |    9 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java      |   26 +
 src/main/resources/application.yml                           |    9 
 18 files changed, 1,098 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 272e105..b0c8856 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -2,6 +2,9 @@
 
 import com.core.common.R;
 import com.zy.asrs.domain.param.ToOutStaParam;
+import com.zy.asrs.entity.RcsReporterTask;
+import com.zy.asrs.entity.RcsReturn;
+import com.zy.asrs.service.RcsService;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
@@ -9,6 +12,8 @@
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
+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;
@@ -16,6 +21,8 @@
 @Slf4j
 @RestController
 public class OpenController {
+    @Autowired
+    private RcsService rcsService;
 
     @RequestMapping("/open/toOutSta")
     public R toOutSta(@RequestBody ToOutStaParam param) {
@@ -47,4 +54,11 @@
         return R.ok().add(result);
     }
 
+    // 鍙嶉浠诲姟鎵ц缁撴灉
+    @PostMapping("/api/robot/reporter/task")
+    public RcsReturn reporterTask(@RequestBody RcsReporterTask param){
+
+        return rcsService.reporterTask(param);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/AgvTask.java b/src/main/java/com/zy/asrs/entity/AgvTask.java
new file mode 100644
index 0000000..26dbb36
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/AgvTask.java
@@ -0,0 +1,486 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("agv_task")
+@Accessors(chain = true)
+public class AgvTask implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 浠诲姟绫诲瀷锛� agv  , crn
+     */
+    @ApiModelProperty(value= "浠诲姟绫诲瀷锛� agv  , crn")
+    @TableField("task_type")
+    private String taskType;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    @ApiModelProperty(value= "涓嬪彂AGV浠诲姟璁℃暟")
+    @TableField("ctn_type")
+    private Integer ctnType=0;
+
+    @ApiModelProperty(value= "")
+    @TableField("inv_wh")
+    private String invWh;
+
+    @ApiModelProperty(value= "")
+    private Date ymd;
+
+    @ApiModelProperty(value= "")
+    private String mk;
+
+    @ApiModelProperty(value= "")
+    @TableField("whs_type")
+    private Integer whsType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Long wrkSts;
+
+    /**
+     * 鍏ュ嚭搴撶被鍨�
+     * 3.绔欏埌绔�
+     * 4.绔欏埌鍖哄煙
+     * 5.鍖哄煙鍒扮珯
+     */
+    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @TableField("io_type")
+    private Integer ioType;
+
+    /**
+     * 鍫嗗灈鏈�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈�")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("sheet_no")
+    private String sheetNo;
+
+    /**
+     * 浼樺厛绾�
+     */
+    @ApiModelProperty(value= "浼樺厛绾�")
+    @TableField("io_pri")
+    private Double ioPri;
+
+    @ApiModelProperty(value= "")
+    @TableField("wrk_date")
+    private Date wrkDate;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鐩爣绔�
+     */
+    @ApiModelProperty(value= "鐩爣绔�")
+    @TableField("sta_no")
+    private String staNo;
+
+    /**
+     * 婧愮珯
+     */
+    @ApiModelProperty(value= "婧愮珯")
+    @TableField("source_sta_no")
+    private String sourceStaNo;
+
+    /**
+     * 婧愬簱浣�
+     */
+    @ApiModelProperty(value= "婧愬簱浣�")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    @ApiModelProperty(value= "1.娴峰悍AGV  2.鍗庢檽AGV   榛樿鏄�1.娴峰悍")
+    @TableField("plt_type")
+    private Integer pltType=1;
+
+    @ApiModelProperty(value= "鏂欐灦鍙�")
+    private String packed;
+
+    /**
+     * 鎷f枡
+     */
+    @ApiModelProperty(value= "鎷f枡")
+    private String picking;
+
+    @ApiModelProperty(value= "")
+    @TableField("link_mis")
+    private String linkMis;
+
+    @ApiModelProperty(value= "")
+    @TableField("online_yn")
+    private String onlineYn;
+
+    @ApiModelProperty(value= "鏄惁浠诲姟鎶ラ敊")
+    @TableField("upd_mk")
+    private String updMk;
+
+    /**
+     * 閫�鍑�
+     */
+    @ApiModelProperty(value= "閫�鍑�")
+    @TableField("exit_mk")
+    private String exitMk;
+
+    /**
+     * 绌烘澘
+     */
+    @ApiModelProperty(value= "绌烘澘")
+    @TableField("empty_mk")
+    private String emptyMk;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    private Date ioTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ove_mk")
+    private String oveMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("mtn_type")
+    private Double mtnType;
+
+    @ApiModelProperty(value= "")
+    @TableField("user_no")
+    private String userNo;
+
+    /**
+     * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
+    @TableField("crn_str_time")
+    private Date crnStrTime;
+
+    /**
+     * 鍫嗗灈鏈哄仠姝㈡椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @TableField("crn_end_time")
+    private Date crnEndTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("plc_str_time")
+    private Date plcStrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("crn_pos_time")
+    private Date crnPosTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("load_time")
+    private Double loadTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("exp_time")
+    private Double expTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ref_wrkno")
+    private Double refWrkno;
+
+    /**
+     * 鎷f枡鏃堕棿
+     */
+    @ApiModelProperty(value= "鎷f枡鏃堕棿")
+    @TableField("ref_iotime")
+    private Date refIotime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("pause_mk")
+    private String pauseMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_time")
+    private Date errorTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_memo")
+    private String errorMemo;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_kind")
+    private Integer ctnKind;
+
+    @ApiModelProperty(value= "")
+    @TableField("manu_type")
+    private String manuType;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    @ApiModelProperty(value= "")
+    @TableField("sc_weight")
+    private Double scWeight;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_mk")
+    private String logMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_time")
+    private Date logErrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_memo")
+    private String logErrMemo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    // Y:閿�鍞鍗曞嚭搴撲换鍔�
+    @ApiModelProperty(value= "")
+    @TableField("Pdc_type")
+    private String PdcType;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_no")
+    private String ctnNo;
+
+    /**
+     * 婊℃澘
+     */
+    @ApiModelProperty(value= "婊℃澘")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    /**
+     * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
+     */
+    @ApiModelProperty(value= "鍏堝叆鍝�")
+    @TableField("pre_have")
+    private String preHave;
+
+    /**
+     * 绌烘搷浣� / 鍙栬揣鏃犵
+     */
+    @ApiModelProperty(value= "绌烘搷浣�")
+    @TableField("take_none")
+    private String takeNone;
+
+    /**
+     * 澶栭儴浠诲姟缂栧彿
+     */
+    @ApiModelProperty(value= "澶栭儴浠诲姟缂栧彿")
+    @TableField("task_no")
+    private String taskNo;
+
+    public String getYmd$(){
+        if (Cools.isEmpty(this.ymd)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
+    }
+
+    public String getCrnNo$(){
+        BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
+        BasCrnp basCrnp = service.selectById(this.crnNo);
+        if (!Cools.isEmpty(basCrnp)){
+            return String.valueOf(basCrnp.getCrnNo());
+        }
+        return null;
+    }
+
+    public String getWrkDate$(){
+        if (Cools.isEmpty(this.wrkDate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
+    }
+
+    public String getLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.locNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getTaskType$(){
+        if (Cools.isEmpty(this.taskType)){return  null;}
+        if (taskType.equals("AGV")) {
+            return "AGV浠诲姟";
+        } else {
+            return "鍫嗗灈鏈轰换鍔�";
+        }
+    }
+
+    public String getSourceLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.sourceLocNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getCrnStrTime$(){
+        if (Cools.isEmpty(this.crnStrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
+    }
+
+    public String getCrnEndTime$(){
+        if (Cools.isEmpty(this.crnEndTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
+    }
+
+    public String getPlcStrTime$(){
+        if (Cools.isEmpty(this.plcStrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
+    }
+
+    public String getCrnPosTime$(){
+        if (Cools.isEmpty(this.crnPosTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
+    }
+
+    public String getRefIotime$(){
+        if (Cools.isEmpty(this.refIotime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
+    }
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public String getErrorTime$(){
+        if (Cools.isEmpty(this.errorTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
+    }
+
+
+    public String getLogErrTime$(){
+        if (Cools.isEmpty(this.logErrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/RcsReporterTask.java b/src/main/java/com/zy/asrs/entity/RcsReporterTask.java
new file mode 100644
index 0000000..e47371e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/RcsReporterTask.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+// 浠诲姟鎵ц鍙嶉
+@Data
+public class RcsReporterTask {
+
+    // 浠诲姟鍙�
+    private String robotTaskCode;
+    // 褰撳墠鎵ц浠诲姟鐨勬満鍣ㄤ汉鍞竴鏍囪瘑銆�
+    private String singleRobotCode;
+    // 鐩爣璺緞搴忓垪锛�0 璧风偣搴忓彿锛�1 缁堢偣搴忓彿銆�
+    private Integer currentSeq;
+    // 璇︾粏淇℃伅
+    private JSONObject extra;
+
+    //鍗庢檽AGV浠诲姟鐘舵�佸強璇锋眰
+    private String method;
+}
diff --git a/src/main/java/com/zy/asrs/entity/RcsReturn.java b/src/main/java/com/zy/asrs/entity/RcsReturn.java
new file mode 100644
index 0000000..451dac4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/RcsReturn.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+// 娴峰悍杩斿洖
+@Data
+public class RcsReturn {
+
+    // SUCCESS 鎴愬姛
+//    Err_TaskTypeNotSupport 浠诲姟绫诲瀷涓嶆敮鎸�
+//    Err_RobotGroupsNotMatch 鏈哄櫒浜鸿祫婧愮粍缂栧彿涓庝换鍔′笉鍖归厤锛屾棤娉曡皟搴�
+//    Err_RobotCodeNotMatch 鏈哄櫒浜虹紪鍙蜂笌浠诲姟涓嶅尮閰嶏紝鏃犳硶璋冨害
+//    Err_TargetRouteError 浠诲姟璺緞鍙傛暟鏈夎
+    private String code;
+
+    private String message;
+
+    private JSONObject data;
+}
diff --git a/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java b/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java
new file mode 100644
index 0000000..77ce0c3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.entity;
+
+import lombok.Data;
+
+// 缁х画鎵ц浠诲姟
+@Data
+public class RcsTaskContinue {
+
+    // 浠诲姟閾剧紪鍙�
+    private String robotTaskCode;
+    // 瑙﹀彂绫诲瀷锛�
+    //SITE 绔欑偣缂栧彿瑙﹀彂
+    //CARRIER 杞藉叿缂栧彿瑙﹀彂
+    //ROBOT 杞﹀彿瑙﹀彂
+    //TASK 浠诲姟閾剧紪鍙疯Е鍙�
+    private String triggerType;
+    // 涓� triggerType 瀵瑰簲鐨勮Е鍙戠紪鍙�
+    private String triggerCode;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/TransInOutStationAllow.java b/src/main/java/com/zy/asrs/entity/TransInOutStationAllow.java
new file mode 100644
index 0000000..d1516ed
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/TransInOutStationAllow.java
@@ -0,0 +1,29 @@
+package com.zy.asrs.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+// 鍏ョ珯鍏佽銆佺绔欏厑璁�
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class TransInOutStationAllow extends TransParent {
+    //浠诲姟缂栧彿
+    private String taskno;
+    //浠诲姟鍚嶇О
+    private String taskname;
+    //AGV缂栧彿
+    private String AgvCode;
+    //杩愯緭绫诲瀷
+    private String TransType;
+    //鐢熶骇绾跨紪鍙�
+    private String ProductLineId;
+    //宸ヤ綅缂栧彿
+    private String StationId;
+
+    //浠诲姟绫诲瀷
+
+    private String taskType;
+
+    // 鏄惁鍏佽锛孻 鍏佽锛汵锛屼笉鍏佽
+    private String status;
+}
diff --git a/src/main/java/com/zy/asrs/entity/TransParent.java b/src/main/java/com/zy/asrs/entity/TransParent.java
new file mode 100644
index 0000000..58d5ca8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/TransParent.java
@@ -0,0 +1,39 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+// 鍑哄叆绔欒姹傜户鎵跨埗绫伙細鍏ョ珯璇锋眰銆佸叆绔欏厑璁搞�佺绔欒姹傘�佺绔欏厑璁搞�佺绔欏畬鎴�
+@Data
+public class TransParent {
+
+    // 浠诲姟缂栧彿锛寃cs_task_header琛ㄤ腑鐨則ask_no
+    private String taskno;
+    // 浠诲姟鍚嶇О锛寃cs_task_header琛ㄤ腑鐨則ask_name
+    private String taskname;
+    // AGV缂栫爜
+    @JsonProperty("AgvCode")
+    @JSONField(name = "AgvCode")
+    private String AgvCode;
+    // 杩愯緭绫诲瀷
+    @JsonProperty("TransType")
+    @JSONField(name = "TransType")
+    private String TransType;
+    // 鐢熶骇绾跨紪鐮�
+    @JsonProperty("ProductLineId")
+    @JSONField(name = "ProductLineId")
+    private String ProductLineId;
+    // 宸ヤ綅缂栫爜
+    @JsonProperty("StationId")
+    @JSONField(name = "StationId")
+    private String StationId;
+    // 浠诲姟绫诲瀷
+    @JsonProperty("TaskType")
+    @JSONField(name = "TaskType")
+    private String TaskType;
+
+    //璇锋眰绫诲瀷
+    private String method;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 87a11a0..ecce007 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -25,6 +25,10 @@
 
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
     /**
      * 宸ヤ綔鍙�
      */
diff --git a/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java b/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java
new file mode 100644
index 0000000..6a0784a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java
@@ -0,0 +1,45 @@
+package com.zy.asrs.enums;
+
+public enum RcsRetMethodEnum {
+
+    TASK_START("start", "浠诲姟寮�濮�"),
+    TASK_OUT_BIN("outbin", "璧板嚭鍌ㄤ綅"),
+
+    APPLY_IN_STATION("applyInStation", "鍏ョ珯璇锋眰"),
+    APPLY_OFF_STATION("applyOutStation", "绂荤珯璇锋眰"),
+    ARRIVE_ON_STATION("arriveOnStation", "鍒扮珯瀹屾垚"),
+    ARRIVE_OFF_STATION("arriveOffStation", "绂荤珯瀹屾垚"),
+
+
+    APPLY_PUT("applyPut", "鏀捐揣鐢宠"),
+    TASK_END("end", "浠诲姟瀹屾垚"),
+    APPLY_PICK("applyPick", "鍙栬揣鐢宠"),
+    PICK_COMPLETE("pickComplete", "rcs鍙栬揣瀹屾垚锛屽凡閫�鍑鸿緭閫佺嚎");
+
+
+
+    private String code;
+    private String message;
+
+    RcsRetMethodEnum(String code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public static RcsRetMethodEnum getEnum(String code) {
+        for (RcsRetMethodEnum method : RcsRetMethodEnum.values()) {
+            if (method.getCode().equals(code)) {
+                return method;
+            }
+        }
+        return null;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/TaskMapper.java b/src/main/java/com/zy/asrs/mapper/TaskMapper.java
new file mode 100644
index 0000000..5b43cb5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/TaskMapper.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.AgvTask;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface TaskMapper extends BaseMapper<AgvTask> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/RcsService.java b/src/main/java/com/zy/asrs/service/RcsService.java
new file mode 100644
index 0000000..0866675
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/RcsService.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.RcsReporterTask;
+import com.zy.asrs.entity.RcsReturn;
+
+public interface RcsService {
+
+    /**
+     * 2.2.1浠诲姟鎵ц鍥為
+     *
+     * @param rcsReporterTask
+     * @return
+     */
+    RcsReturn reporterTask(RcsReporterTask rcsReporterTask);
+}
diff --git a/src/main/java/com/zy/asrs/service/TaskService.java b/src/main/java/com/zy/asrs/service/TaskService.java
new file mode 100644
index 0000000..eaad23f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/TaskService.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.AgvTask;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface TaskService extends IService<AgvTask> {
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 7288c3c..986bd05 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2436,6 +2436,7 @@
             int workNo = commonService.getWorkNo(0);
             // 淇濆瓨宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
+            wrkMast.setId();
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(new Date());
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
new file mode 100644
index 0000000..2347bfc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -0,0 +1,318 @@
+package com.zy.asrs.service.impl;
+
+import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.enums.RcsRetMethodEnum;
+import com.zy.asrs.service.RcsService;
+import com.zy.asrs.service.TaskService;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
+import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.thread.SiemensDevpThread;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.ConnectException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Slf4j
+@Service
+public class RcsServiceImpl implements RcsService {
+    // 娴峰悍RCS鍦板潃
+    @Value("${hik.url}")
+    private String HIK_URL;
+
+    @Autowired
+    private TaskService taskService;
+
+
+    /**
+     * 2.2.1浠诲姟鎵ц鍥為
+     * 鍘傚锛氭捣閲忋�佸崕鏅�
+     *
+     * @param rcsReporterTask
+     * @return
+     */
+    @Override
+    public RcsReturn reporterTask(RcsReporterTask rcsReporterTask) {
+
+        RcsReturn rcsReturn = new RcsReturn();
+
+        String robotTaskCode = rcsReporterTask.getRobotTaskCode();
+        String singleRobotCode = rcsReporterTask.getSingleRobotCode();
+        String[] split = robotTaskCode.split("-");
+        robotTaskCode = split[0];
+        JSONObject values = rcsReporterTask.getExtra().getJSONObject("values");
+        // start : 浠诲姟寮�濮嬶紱outbin : 璧板嚭鍌ㄤ綅锛沞nd : 浠诲姟瀹屾垚
+        String method = values.getString("method");
+        String carrierType = values.getString("carrierType");
+        String slotCategory = values.getString("slotCategory");
+        String slotCode = values.getString("slotCode");
+        EntityWrapper<AgvTask> wrapper = new EntityWrapper<>();
+        wrapper.eq("task_no", robotTaskCode);
+        AgvTask task = taskService.selectOne(wrapper);
+        if(!Cools.isEmpty(task)){
+            try {
+                // q3,q8=1
+                if ("1".equals(carrierType)) {    //AGV
+
+                    switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
+                        //鏀捐揣鐢宠
+                        case APPLY_PUT: {
+                            Integer sourceStaNo = Integer.valueOf(task.getStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //wcs鍙嶉rcs缁х画鎵ц
+                            if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType()) {
+                                RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                                rcsTaskContinue.setRobotTaskCode(task.getTaskNo());
+                                rcsTaskContinue.setTriggerType("TASK");
+                                rcsTaskContinue.setTriggerCode(task.getTaskNo());
+
+                                String url =HIK_URL + "api/robot/controller/task/extend/continue";
+                                String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
+                                if (!StringUtils.isEmpty(response) && response.contains("code")){
+                                    RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+                                    if("200".equals(rcsReturn1.getCode())) {
+                                        //鍑哄彂PLC绔欑偣鐨勬壂鐮佸櫒鎵爜
+                                        boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(3, staProtocol));
+                                        log.info("AGV鏀捐揣瀹屾垚锛岀粰绔欑偣鍐�9991宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}",result,task.getStaNo(),task.getTaskNo());
+                                        if (result) {
+                                            // 杩斿洖RCS
+                                            rcsReturn.setCode("SUCCESS");
+                                            rcsReturn.setMessage("");
+                                            JSONObject data = new JSONObject();
+                                            data.put("robotTaskCode", robotTaskCode);
+                                            rcsReturn.setData(data);
+                                        }else {
+                                            // 杩斿洖RCS
+                                            rcsReturn.setCode("Err_Internal");
+                                            rcsReturn.setMessage("");
+                                            JSONObject data = new JSONObject();
+                                            data.put("robotTaskCode", robotTaskCode);
+                                            rcsReturn.setData(data);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        break;
+
+                        //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑
+                        case TASK_END: {
+                            Integer sourceStaNo = Integer.valueOf(task.getStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑 --銆嬬粰PLC绔欑偣鍐�9991宸ヤ綔鍙�
+                            if (staProtocol != null && staProtocol.isLoading() && staProtocol.isEmptyOutType() && staProtocol.getWorkNo() ==0) {
+                                staProtocol.setWorkNo((short) 9991);
+                                staProtocol.setStaNo(Short.valueOf(task.getStaNo()));
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol));
+                                log.info("AGV鏀捐揣瀹屾垚锛岀粰绔欑偣鍐�9991宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}",result,task.getStaNo(),task.getTaskNo());
+                                if(result){
+                                    // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                                    task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                                    task.setModiTime(new Date());
+                                    taskService.updateById(task);
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("SUCCESS");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }else {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("Err_Internal");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }
+                            }
+                        }
+                        break;
+                        //rcs璇锋眰wms鍙栬揣鐢宠
+                        case APPLY_PICK: {
+                            Integer sourceStaNo = Integer.valueOf(task.getSourceStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //鍒ゆ柇绔欑偣鏄惁鏈夋枡鏋跺拰鎵樼洏
+                            if (staProtocol != null && staProtocol.isLoading()
+                                    && staProtocol.isEmptyOutType()
+                                    && staProtocol.getWorkNo() >0 && staProtocol.getWorkNo() <9990) {
+                                RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                                rcsTaskContinue.setRobotTaskCode(task.getTaskNo());
+                                rcsTaskContinue.setTriggerType("TASK");
+                                rcsTaskContinue.setTriggerCode(task.getTaskNo());
+
+                                String url =HIK_URL + "api/robot/controller/task/extend/continue";
+                                String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
+                                if (!StringUtils.isEmpty(response) && response.contains("code")){
+                                    RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+                                    if("200".equals(rcsReturn1.getCode())) {
+                                        // 杩斿洖RCS
+                                        rcsReturn.setCode("SUCCESS");
+                                        rcsReturn.setMessage("");
+                                        JSONObject data = new JSONObject();
+                                        data.put("robotTaskCode", robotTaskCode);
+                                        rcsReturn.setData(data);
+                                    }else {
+                                        // 杩斿洖RCS
+                                        rcsReturn.setCode("Err_Internal");
+                                        rcsReturn.setMessage("");
+                                        JSONObject data = new JSONObject();
+                                        data.put("robotTaskCode", robotTaskCode);
+                                        rcsReturn.setData(data);
+                                    }
+                                }
+                            }
+                        }
+                        break;
+                        //rcs鍙栬揣瀹屾垚锛屽凡閫�鍑鸿緭閫佺嚎
+                        case PICK_COMPLETE: {
+                            Integer sourceStaNo = Integer.valueOf(task.getSourceStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑 --銆嬬粰PLC绔欑偣鍐�9991宸ヤ綔鍙�
+                            if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType() && staProtocol.getWorkNo() >0 && staProtocol.getWorkNo() <9990) {
+                                staProtocol.setWorkNo((short) 0);
+                                staProtocol.setStaNo((short) 0);
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol));
+                                log.info("AGV鍙栬揣瀹屾垚锛岀粰绔欑偣鍐�0宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}",result,task.getStaNo(),task.getTaskNo());
+                                if(result){
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("SUCCESS");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }else {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("Err_Internal");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }
+
+                            }
+                        }
+                        break;
+
+                        default: {
+                        }
+                        break;
+                    }
+                }
+
+            } catch (Exception e) {
+                log.error("RCS鍙嶉浠诲姟杩涘害澶勭悊寮傚父 - {}", rcsReporterTask, e);
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("鍐呴儴澶勭悊寮傚父");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            }
+        }
+        return rcsReturn;
+    }
+
+    /**
+     * 鍚戞寚瀹� URL 鍙戦�丳OST鏂规硶鐨勮姹�
+     *
+     * @param url 鍙戦�佽姹傜殑 URL
+     * @param param 璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
+     * @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPost(String url, String param) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try
+        {
+            log.info("sendPost - {} - {}", url, param);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("Content-Type", "application/json");
+            conn.setRequestProperty("Content-Length", "<calculated when request is sent>");
+            conn.setRequestProperty("Host", "<calculated when request is sent>");
+            conn.setRequestProperty("Accept", "*/*");
+            conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
+            conn.setRequestProperty("Connection", "keep-alive");
+
+            conn.setRequestProperty("X-lr-request-id", String.valueOf(new Date().getTime()));
+            conn.setRequestProperty("X-lr-version", "4.3");
+
+            conn.setConnectTimeout(5000);
+            conn.setReadTimeout(5000);
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("璋冪敤HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("璋冪敤HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("璋冪敤HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("璋冪敤HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (out != null)
+                {
+                    out.close();
+                }
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (IOException ex)
+            {
+                log.error("璋冪敤in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
new file mode 100644
index 0000000..1191a64
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.AgvTask;
+import com.zy.asrs.entity.WaitPakin;
+import com.zy.asrs.mapper.TaskMapper;
+import com.zy.asrs.service.TaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class TaskServiceImpl extends ServiceImpl<TaskMapper, AgvTask> implements TaskService {
+
+}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 6896818..1c6ae47 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -131,6 +131,9 @@
                     case 2:
                         write((StaProtocol)task.getData());
                         break;
+                    case 3:
+                        write1((StaProtocol)task.getData());
+                        break;
                     default:
                         break;
                 }
@@ -340,6 +343,29 @@
         }
     }
 
+    /**
+     * 鎵爜鍣ㄨЕ鍙�
+     */
+    private void write1(StaProtocol staProtocol) throws InterruptedException {
+        if (null == staProtocol) {
+            return;
+        }
+        ArrayList<Integer> staNos = getStaNo();
+        int index = staNos.indexOf(staProtocol.getSiteId());
+        if(staProtocol.getSiteId() == 307){
+            index = 0;
+        }
+        OperateResult writeResult1 = siemensS7Net.Write("DB100.500" + index,  1);    // 鎵爜鍣ㄨЕ鍙�
+        if (!writeResult1.IsSuccess) {
+
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+            log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+        }
+    }
+
     // 鏇存柊鍏ュ嚭搴撴ā寮�
     private void updateIoMode() throws InterruptedException {
         if (this.ioModeOf2F != IoModeType.NONE) {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index cf5a1e7..917f1c4 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -36,6 +36,11 @@
 wms:
   url: 127.0.0.1:8083/ljqwms
 
+#娴峰悍瀵规帴
+hik:
+  switch: false
+  url: http://172.26.11.98:80/rcs/rtas/
+
 zyHikUrl: 10.10.10.200:9091/hik
 
 # 涓嬩綅鏈洪厤缃�
@@ -43,13 +48,13 @@
   # 鍙屾繁
   doubleDeep: true
   # 鍙屾繁搴撲綅鎺掑彿
-  doubleLocs: 3
+  doubleLocs: 1
   # 宸︽繁搴撲綅鎺掑彿
 #  doubleLocsLeft: 4,7,11,15,19,23
   # 鍙虫繁搴撲綅鎺掑彿
   doubleLocsRight: 1
   # 宸︽祬搴撲綅鎺掑彿
-  shallowLocsLeft: 1
+  shallowLocsLeft: 2
   # 鍙虫祬搴撲綅鎺掑彿
   shallowLocsRight: 2
   # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
new file mode 100644
index 0000000..48f43f9
--- /dev/null
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -0,0 +1,11 @@
+<?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.zy.asrs.mapper.TaskMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.AgvTask">
+        <id column="id" property="id" />
+        <result column="task_type" property="taskType" />
+
+    </resultMap>
+</mapper>

--
Gitblit v1.9.1