From 91eca979b480dff62809368a5c6563c9e0fcc851 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期日, 08 六月 2025 08:29:49 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/TaskLogScheduler.java               |   26 
 src/main/java/com/zy/asrs/entity/TaskWrk.java                      |   14 
 src/main/resources/application-prod.yml                            |    4 
 src/main/resources/mapper/BasShuttleMapper.xml                     |    1 
 src/main/java/com/zy/asrs/task/AssignTasksRCSScheduler.java        |   30 
 src/main/java/com/zy/asrs/task/GetshuttlerStatusScheduler.java     |   94 ++
 src/main/java/com/zy/asrs/service/OpenService.java                 |    3 
 src/main/java/com/zy/asrs/entity/param/CarryParam.java             |    8 
 src/main/java/com/zy/asrs/utils/Utils.java                         |    7 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java        |  310 ++++----
 src/main/java/com/zy/asrs/service/TaskWrkService.java              |    4 
 src/main/java/com/zy/core/MainProcess.java                         |   15 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java            |    6 
 src/main/java/com/zy/asrs/entity/BasShuttle.java                   |   39 
 src/main/java/com/zy/asrs/controller/OpenController.java           |  241 ------
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java        |  671 +++++++++++--------
 src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java |    1 
 src/main/java/com/zy/common/utils/HttpHandler.java                 |    2 
 src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java     |   88 +
 src/main/resources/mapper/TaskWrkMapper.xml                        |   12 
 src/main/java/com/zy/asrs/task/AutoReportStartHandler.java         |    2 
 src/main/java/com/zy/asrs/task/TaskMastScheduler.java              |   61 -
 src/main/java/com/zy/asrs/task/RepositionLED.java                  |    2 
 src/main/webapp/static/wms/image/logo.png                          |    0 
 src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java  |   73 ++
 src/main/java/com/zy/common/config/RedisConfig.java                |    3 
 src/main/java/com/zy/asrs/controller/TaskWrkController.java        |  197 ++---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java        |   73 -
 src/main/webapp/static/wcs/images/logo.png                         |    0 
 src/main/resources/application.yml                                 |   12 
 30 files changed, 1,052 insertions(+), 947 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 460f85b..ae0890e 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -12,6 +12,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.BasShuttleServiceImpl;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.web.BaseController;
 import lombok.extern.slf4j.Slf4j;
@@ -61,155 +62,8 @@
     public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
         add("ea1f0459efc02a79f046f982767939ae");
     }};
-    //agv浠诲姟瀹屾垚
-    @PostMapping("/toAgvTaskOver")
-    @AppAuth(memo = "agv浠诲姟瀹屾垚鎺ュ彛")
-    public R getAgvTaskOver(@RequestHeader String appkey,
-                           @RequestBody TaskOverParam param,
-                           HttpServletRequest request){
-        auth(appkey, param, request);
-        if (Cools.isEmpty(param)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        if (Cools.isEmpty(param.getWharfCode())){
-            return R.error("鐮佸ご[wharfCode]涓嶈兘涓虹┖");
-        }
-        if (Cools.isEmpty(param.getStatus())){
-            return R.error("瀹屾垚鏍囪[status]涓嶈兘涓虹┖");
-        }
-        openService.getAgvTaskOver(param);
-        return R.ok();
-    }
-
-    //鍒涘缓浠诲姟
-    @PostMapping("/taskCreate")
-    @Transactional
-    public R taskCreate(@RequestHeader String appkey,
-                          @RequestBody List<TaskCreateParam> param1,
-                          HttpServletRequest request) {
-        auth(appkey, param1, request);
-        try{
-            List<TaskCreateParam> paramList = new ArrayList<>();
-            List<String> locNoList = new ArrayList<>();
-            for (TaskCreateParam param : param1) {
-                if (Cools.isEmpty(param)) {
-                    return R.parse(BaseRes.PARAM);
-                }
-                if (Cools.isEmpty(param.getTaskNo())) {
-                    return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖");
-                }
-                if (Cools.isEmpty(param.getIoType())) {
-                    return R.error("浠诲姟绫诲瀷[ioType]涓嶈兘涓虹┖");
-                }
-                if (Cools.isEmpty(param.getBarcode())) {
-                    return R.error("鏉$爜[barcode]涓嶈兘涓虹┖");
-                }
-                String locNo=null;
-                if(param.getIoType()==1){
-                    locNo=param.getTargetPoint();
-                }else{
-                    locNo=param.getStartPoint();
-                }
-                try{
-                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
-                            .eq("loc_no", locNo).ne("loc_sts","X"));
-                    if (Cools.isEmpty(locMast)){
-                        log.error("搴撲綅鍙蜂笉瀛樺湪"+locNo);
-                        return R.error("搴撲綅鍙蜂笉瀛樺湪"+locNo).add("搴撲綅鍙蜂笉瀛樺湪"+locNo);
-                    }
-                }catch (Exception e){
-                    log.error("搴撲綅鍙锋娴嬬▼搴忓紓甯�==銆嬪紓甯镐俊鎭�"+e);
-                    return R.error("搴撲綅鍙锋娴嬬▼搴忓紓甯�").add("搴撲綅鍙锋娴嬬▼搴忓紓甯�==銆嬪紓甯镐俊鎭�"+e);
-                }
-                LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
-                        .eq("loc_sts","F")
-                        .eq("loc_no",locNo)
-                        .eq("barcode",param.getBarcode()));
-                if(Cools.isEmpty(locMast)){
-                    return R.error("璇ュ簱浣嶄笉婊¤冻鍑哄簱鏉′欢"+param.getTargetPoint());
-                }
-                if (!locNoList.contains(locMast.getLocNo())){
-                    locNoList.add(locMast.getLocNo());
-                    paramList.add(param);
-                }else {
-                    return R.error("璇ュ簱浣嶄笉鑳藉悓鏃朵笅鍙戜袱绗斾换鍔�"+locMast.getLocNo());
-                }
-            }
-            for (TaskCreateParam param : paramList){
-                openService.taskCreate(param);
-            }
-        }catch (Exception e){
-            log.error("浠诲姟涓嬪彂寮傚父"+e);
-            return R.error();
-        }
-        return R.ok();
-    }
-
-    //鏌ヨ浠诲姟璇︽儏
-    @GetMapping("/queryTask")
-    public R queryTask(@RequestHeader String appkey,
-                       @RequestParam String taskNo,
-                       HttpServletRequest request) {
-        auth(appkey, taskNo, request);
-        TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
-        if (taskWrk == null) {
-            return R.error("浠诲姟涓嶅瓨鍦�");
-        }
-        return R.ok().add(taskWrk);
-    }
-
-    //鍙栨斁璐х敵璇�
-    @PostMapping("/pick/and/place/v1")
-    @AppAuth(memo = "agv鍙栨斁璐х敵璇�")
-    public R getAgvPickAndPlaceV1(@RequestHeader String appkey,
-                            @RequestBody TaskOverParam param,
-                            HttpServletRequest request){
-        auth(appkey, param, request);
-        if (Cools.isEmpty(param)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        if (Cools.isEmpty(param.getStaNo())){
-            return R.error("鐮佸ご[staNo]涓嶈兘涓虹┖");
-        }
-        if (Cools.isEmpty(param.getType())){
-            return R.error("绫诲瀷[type]涓嶈兘涓虹┖");
-        }
-        return openService.getAgvPickAndPlaceV1(param);
-    }
-
-    //鍙栨斁璐у畬鎴愬弽棣�
-    @PostMapping("/pick/and/place/v2")
-    @AppAuth(memo = "agv鍙栨斁璐у畬鎴愬弽棣�")
-    public R getAgvPickAndPlaceV2(@RequestHeader String appkey,
-                                  @RequestBody TaskOverParam param,
-                                  HttpServletRequest request){
-        auth(appkey, param, request);
-        if (Cools.isEmpty(param)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        if (Cools.isEmpty(param.getStaNo())){
-            return R.error("鐮佸ご[staNo]涓嶈兘涓虹┖");
-        }
-        if (Cools.isEmpty(param.getType())){
-            return R.error("绫诲瀷[type]涓嶈兘涓虹┖");
-        }
-        return openService.getAgvPickAndPlaceV2(param);
-    }
-
-    //鏌ヨ浠诲姟鎸囦护闆嗗悎
-    @GetMapping("/queryTaskCommand")
-    public R queryTaskCommand(@RequestHeader String appkey,
-                              @RequestParam String taskNo,
-                              HttpServletRequest request) {
-        auth(appkey, taskNo, request);
-        TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
-        if (taskWrk == null) {
-            return R.error("浠诲姟涓嶅瓨鍦�");
-        }
-
-        List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskNo);
-        return R.ok().add(commandInfos);
-    }
+    @Autowired
+    private BasShuttleServiceImpl basShuttleService;
 
     private void auth(String appkey, Object obj, HttpServletRequest request) {
         log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", request.getServletPath(), appkey, JSON.toJSONString(obj));
@@ -224,12 +78,11 @@
 
     //浠诲姟涓嬪彂鎺ュ彛
     @PostMapping("/outboundTaskSend")
-    @Transactional
+//    @Transactional
     public HashMap<String, Object> outboundTaskSend(@RequestBody HashMap<String,Object> hashMap) {
         String jsonString = JSON.toJSONString(hashMap.get("TaskList"));
         List<CarryParam> params= JSONObject.parseArray(jsonString,CarryParam.class);
         HashMap<String, Object> map = new HashMap<>();
-        List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>();
         for (CarryParam param:params){
             if (Cools.isEmpty(param)){
                 map.put("Code","0");
@@ -245,8 +98,8 @@
                 return map;
             }
             String fusion = Utils.Fusion(param.getOriginalRowNo(), param.getOriginalFloorNo(), param.getOriginalColumnNo());
-            param.setStartPoint(fusion);
-            LocMast locMast = locMastService.selectByLocNo(param.getStartPoint());
+            param.setOriginStartPoint(fusion);
+            LocMast locMast = locMastService.selectByLocNo(fusion);
             if(Cools.isEmpty(locMast)){
                 map.put("Code","0");
                 map.put("Msg","鍒濆搴撲綅鏃犳硶鎵惧埌锛�");
@@ -259,14 +112,13 @@
                 //鍑哄簱浠诲姟鍒涘缓
                 StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                         .eq("type_no",2)
-                        .eq("crn_no",locMast.getCrnNo())
                         .eq("stn_no",param.getTerminalNo()));
                 if(Cools.isEmpty(staDesc)){
                     map.put("Code","0");
                     map.put("Msg","鍑哄簱璺姴涓嶅瓨鍦紒");
                     return map;
                 }
-                r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo()));
+                r = openService.taskCreate(param);
                 if(r.get("Code").equals("0")){
                     return r;
                 }
@@ -274,7 +126,7 @@
                 String fusion1 = Utils.Fusion(param.getGoalRowNo(), param.getGoalFloorNo(), param.getGoalColumnNo());
                 param.setTerminalNo(fusion1);
                 //绉诲簱浠诲姟鍒涘缓
-                r = openService.taskCreate(new TaskCreateParam(param,locMast.getCrnNo()));
+                r = openService.taskCreate(param);
                 if(r.get("Code").equals("0")){
                     return r;
                 }
@@ -352,22 +204,12 @@
     @GetMapping("/deviceStatus")
     @Transactional
     public R deviceStatus() {
-        List<CrnStatusParam> crnStatusParams=new ArrayList<>();
-        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
-        for (BasCrnp basCrnp:basCrnps){
-            CrnStatusParam crnStatusParam=new CrnStatusParam();
-            crnStatusParam.setCrnNo(basCrnp.getCrnNo());
-            crnStatusParam.setCrnSts(basCrnp.getCrnSts());
-            crnStatusParam.setErrorCode(basCrnp.getCrnErr());
-            BasCrnError error=basCrnErrorService.selectOne(new EntityWrapper<BasCrnError>().eq("error_code",basCrnp.getCrnErr()));
-            if(Cools.isEmpty(error)){
-                crnStatusParam.setErrorMsg("");
-            }else {
-                crnStatusParam.setErrorMsg(error.getErrName());
-            }
-            crnStatusParams.add(crnStatusParam);
-        }
-        return R.ok(crnStatusParams);
+        HashMap<String,Object> map = new HashMap<>();
+        List<BasShuttle> basShuttle = basShuttleService.selectList(null);
+        List<BasDevp> basDevp = basDevpService.selectList(null);
+        map.put("basShuttle",basShuttle);
+        map.put("basDevp",basDevp);
+        return R.ok(map);
     }
 
     //璁惧鐘舵�佹煡璇㈡帴鍙�
@@ -381,50 +223,19 @@
         return "ok";
     }
 
-    public static <T> List<T> convertListMapToListObject(List<HashMap<String, Object>> listMap, Class<T> clazz) throws Exception {
-        List<T> list = new ArrayList<>();
-
-        for (Map<String, Object> map : listMap) {
-            T obj = clazz.getDeclaredConstructor().newInstance();
-
-            for (Map.Entry<String, Object> entry : map.entrySet()) {
-                String key = entry.getKey();
-                Object value = entry.getValue();
-
-                try {
-                    Field field = clazz.getDeclaredField(key);
-                    field.setAccessible(true);
-                    setFieldValue(obj, field, value);
-                } catch (NoSuchFieldException e) {
-                    System.out.println("No such field: " + key + " in class " + clazz.getName());
-                }
-            }
-
-            list.add(obj);
+    //rcs鍜寃cs鏍¢獙鍏ュ簱宸ヤ綔鍙锋槸鍚︿竴鑷�
+    //璁惧鐘舵�佹煡璇㈡帴鍙�
+    @PostMapping("/devpdeviceStatusTaskNo")
+    @Transactional
+    public String devpDeviceStatusTaskNo(@RequestBody HashMap staNo) {
+        BasDevp basDevp=basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no",staNo.get("staNo")));
+        String taskNo=staNo.get("superTaskNo").toString();
+        if(Cools.isEmpty(basDevp)&&Cools.isEmpty(taskNo)){
+            return "no";
+        }else if(!basDevp.getWrkNo().equals(Integer.valueOf(taskNo))){
+            return "no";
         }
-
-        return list;
-    }
-    private static void setFieldValue(Object obj, Field field, Object value) throws IllegalAccessException {
-        Class<?> fieldType = field.getType();
-
-        if (fieldType.isAssignableFrom(value.getClass())) {
-            field.set(obj, value);
-        } else if (fieldType == int.class || fieldType == Integer.class) {
-            field.set(obj, ((Number) value).intValue());
-        } else if (fieldType == long.class || fieldType == Long.class) {
-            field.set(obj, ((Number) value).longValue());
-        } else if (fieldType == double.class || fieldType == Double.class) {
-            field.set(obj, ((Number) value).doubleValue());
-        } else if (fieldType == float.class || fieldType == Float.class) {
-            field.set(obj, ((Number) value).floatValue());
-        } else if (fieldType == boolean.class || fieldType == Boolean.class) {
-            field.set(obj, (Boolean) value);
-        } else if (fieldType == String.class) {
-            field.set(obj, String.valueOf(value));
-        } else {
-            System.out.println("Unsupported field type: " + fieldType.getName());
-        }
+        return "ok";
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/TaskWrkController.java b/src/main/java/com/zy/asrs/controller/TaskWrkController.java
index d090386..d904c90 100644
--- a/src/main/java/com/zy/asrs/controller/TaskWrkController.java
+++ b/src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -61,22 +61,24 @@
 
     @RequestMapping(value = "/taskWrk/list/auth")
     @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam Map<String, Object> param){
+    public R list(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String orderByField,
+                  @RequestParam(required = false) String orderByType,
+                  @RequestParam Map<String, Object> param) {
         EntityWrapper<TaskWrk> wrapper = new EntityWrapper<>();
         excludeTrash(param);
         convert(param, wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        if (!Cools.isEmpty(orderByField)) {
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+        }
         return R.ok(taskWrkService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
-    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
+        for (Map.Entry<String, Object> entry : map.entrySet()) {
             String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
+            if (val.contains(RANGE_TIME_LINK)) {
                 String[] dates = val.split(RANGE_TIME_LINK);
                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
@@ -93,9 +95,9 @@
         return R.ok();
     }
 
-	@RequestMapping(value = "/taskWrk/update/auth")
-	@ManagerAuth
-    public R update(TaskWrk taskWrk){
+    @RequestMapping(value = "/taskWrk/update/auth")
+    @ManagerAuth
+    public R update(TaskWrk taskWrk) {
         if (Cools.isEmpty(taskWrk) || null == taskWrk.getTaskNo()) {
             return R.error();
         }
@@ -105,7 +107,7 @@
 
     @RequestMapping(value = "/taskWrk/updatePoint/auth")
     @ManagerAuth
-    public R updatePoint(TaskWrk taskWrk){
+    public R updatePoint(TaskWrk taskWrk) {
         if (Cools.isEmpty(taskWrk) || null == taskWrk.getTaskNo()) {
             return R.error();
         }
@@ -123,8 +125,8 @@
 
     @RequestMapping(value = "/taskWrk/delete/auth")
     @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
+    public R delete(@RequestParam(value = "ids[]") Long[] ids) {
+        for (Long id : ids) {
             taskWrkService.deleteById(id);
         }
         return R.ok();
@@ -132,7 +134,7 @@
 
     @RequestMapping(value = "/taskWrk/export/auth")
     @ManagerAuth
-    public R export(@RequestBody JSONObject param){
+    public R export(@RequestBody JSONObject param) {
         EntityWrapper<TaskWrk> wrapper = new EntityWrapper<>();
         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
         Map<String, Object> map = excludeTrash(param.getJSONObject("taskWrk"));
@@ -148,7 +150,7 @@
         wrapper.like("id", condition);
         Page<TaskWrk> page = taskWrkService.selectPage(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
-        for (TaskWrk taskWrk : page.getRecords()){
+        for (TaskWrk taskWrk : page.getRecords()) {
             Map<String, Object> map = new HashMap<>();
             map.put("id", taskWrk.getTaskNo());
             map.put("value", taskWrk.getTaskNo());
@@ -161,7 +163,7 @@
     @ManagerAuth
     public R query(@RequestBody JSONObject param) {
         Wrapper<TaskWrk> wrapper = new EntityWrapper<TaskWrk>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != taskWrkService.selectOne(wrapper)){
+        if (null != taskWrkService.selectOne(wrapper)) {
             return R.parse(BaseRes.REPEAT).add(getComment(TaskWrk.class, String.valueOf(param.get("key"))));
         }
         return R.ok();
@@ -178,72 +180,44 @@
     @ManagerAuth(memo = "鎵嬪姩瀹屾垚浠诲姟")
     public R complete(@RequestParam String taskNo) {
         TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
-        if (Cools.isEmpty(taskWrk) || taskWrk.getStatus()>=3){
-            return R.error("宸插畬缁撴垨宸插彇娑�") ;
+        if (Cools.isEmpty(taskWrk) || taskWrk.getStatus() >= 3) {
+            return R.error("宸插畬缁撴垨宸插彇娑�");
         }
-        LocMast locMast=new LocMast();
-        if(taskWrk.getIoType()==1){//鍏ュ簱浠诲姟瀹屾垚搴撲綅涓篎
-            locMast=locMastService.selectByLocNo(taskWrk.getTargetPoint());
-            if(Cools.isEmpty(locMast)){
-              R.error("娌℃湁鎵惧埌璇ュ簱浣�") ;
+        LocMast locMast = new LocMast();
+        if (taskWrk.getIoType() == 1) {//鍏ュ簱浠诲姟瀹屾垚搴撲綅涓篎
+            locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+            if (Cools.isEmpty(locMast)) {
+                R.error("娌℃湁鎵惧埌璇ュ簱浣�");
             }
             locMast.setLocSts("F");
             locMast.setModiTime(new Date());
             locMast.setBarcode(taskWrk.getBarcode());
-        }else if(taskWrk.getIoType()==2){//鍑哄簱浠诲姟瀹屾垚搴撲綅涓篛
-            locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
-            if(Cools.isEmpty(locMast)){
-                R.error("娌℃湁鎵惧埌璇ュ簱浣�") ;
+        } else if (taskWrk.getIoType() == 2) {//鍑哄簱浠诲姟瀹屾垚搴撲綅涓篛
+            locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
+            if (Cools.isEmpty(locMast)) {
+                R.error("娌℃湁鎵惧埌璇ュ簱浣�");
             }
             locMast.setLocSts("O");
             locMast.setModiTime(new Date());
-        }else if(taskWrk.getIoType()==3){
-            locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
-            if(Cools.isEmpty(locMast)){
-                R.error("娌℃湁鎵惧埌璇ュ簱浣�") ;
+        } else if (taskWrk.getIoType() == 3) {
+            locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
+            if (Cools.isEmpty(locMast)) {
+                R.error("娌℃湁鎵惧埌璇ュ簱浣�");
             }
             locMast.setLocSts("O");
             locMast.setModiTime(new Date());
             locMastService.updateById(locMast);
-            locMast=locMastService.selectByLocNo(taskWrk.getTargetPoint());
-            if(Cools.isEmpty(locMast)){
-                R.error("娌℃湁鎵惧埌璇ュ簱浣�") ;
+            locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+            if (Cools.isEmpty(locMast)) {
+                R.error("娌℃湁鎵惧埌璇ュ簱浣�");
             }
             locMast.setLocSts("F");
             locMast.setModiTime(new Date());
             locMast.setBarcode(taskWrk.getBarcode());
 
         }
-        String response="";
-        try{
-            HashMap<String, Object> headParam = new HashMap<>();
-            headParam.put("TaskNo",taskWrk.getTaskNo());
-            headParam.put("Result",1);
-//            headParam.put("reportTime",new Date());
-            log.info("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms={}", taskWrk);
-            response = new HttpHandler.Builder()
-                    // .setHeaders(headParam)
-                    .setUri(wmsUrl)
-                    .setPath(TaskExecCallback)
-                    .setJson(JSON.toJSONString(headParam))
-                    .build()
-                    .doPost();
-
-            JSONObject jsonObject = JSON.parseObject(response);
-            apiLogService.save("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms"
-                    ,wmsUrl+TaskExecCallback
-                    ,null
-                    ,"127.0.0.1"
-                    ,JSON.toJSONString(headParam)
-                    ,response
-                    ,true
-            );
-        }catch (Exception e){
-            log.error("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms澶眥},杩斿洖鍊�={}", taskWrk,response);
-//            throw new CoolException(e);
-        }
         locMastService.updateById(locMast);
-        taskWrk.setStatus(7);//鎵嬪姩瀹屾垚浠诲姟
+        taskWrk.setStatus(6);//鎵嬪姩瀹屾垚浠诲姟
         taskWrk.setModiTime(new Date());
         taskWrkService.updateById(taskWrk);
         return R.ok();
@@ -253,20 +227,20 @@
     @ManagerAuth(memo = "閲嶆柊缁欏爢鍨涙満涓嬪彂浠诲姟")
     public R returnWorkingCondition(@RequestParam String taskNo) {
         TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
-        if (!Cools.isEmpty(taskWrk) && taskWrk.getWrkSts()==12){
+        if (!Cools.isEmpty(taskWrk) && taskWrk.getWrkSts() == 12) {
             taskWrk.setWrkSts(11);
-            if(!taskWrkService.updateById(taskWrk)){
+            if (!taskWrkService.updateById(taskWrk)) {
                 return R.error("鏇存柊浠诲姟鐘舵�佸け璐�");
             }
             return R.ok();
-        } else if (!Cools.isEmpty(taskWrk) && taskWrk.getWrkSts()==3) {
+        } else if (!Cools.isEmpty(taskWrk) && taskWrk.getWrkSts() == 3) {
             taskWrk.setWrkSts(2);
             taskWrkService.updateById(taskWrk);
-            if(!taskWrkService.updateById(taskWrk)){
+            if (!taskWrkService.updateById(taskWrk)) {
                 return R.error("鏇存柊浠诲姟鐘舵�佸け璐�");
             }
             return R.ok();
-        }else{
+        } else {
             return R.error("浠诲姟鐘舵�佷笉瀵规棤娉曢噸鏂扮粰鍫嗗灈鏈轰笅鍙戜换鍔�");
         }
 
@@ -285,39 +259,12 @@
         Date now = new Date();
         taskWrk.setStatus(TaskStatusType.CANCEL.id);
         taskWrk.setModiTime(now);//鎿嶄綔鏃堕棿
-        try{
+        try {
             taskWrk.setModiUser(getUserId());//鎿嶄綔鍛�
-        }catch (Exception e){
+        } catch (Exception e) {
             taskWrk.setModiUser(9999L);//鎿嶄綔鍛�
         }
-        String response="";
-        try{
-            HashMap<String, Object> headParam = new HashMap<>();
-            headParam.put("TaskNo",taskWrk.getTaskNo());
-            headParam.put("Result",0);
-//            headParam.put("reportTime",new Date());
-
-            log.info("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wm={}", taskWrk);
-            response = new HttpHandler.Builder()
-                    // .setHeaders(headParam)
-                    .setUri(wmsUrl)
-                    .setPath(TaskExecCallback)
-                    .setJson(JSON.toJSONString(headParam))
-                    .build()
-                    .doPost();
-            JSONObject jsonObject = JSON.parseObject(response);
-            apiLogService.save("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms"
-                    ,wmsUrl+TaskExecCallback
-                    ,null
-                    ,"127.0.0.1"
-                    ,JSON.toJSONString(headParam)
-                    ,response
-                    ,true
-            );
-        }catch (Exception e){
-            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触={},杩斿洖鍊�={}", taskWrk,response);
-//            throw new CoolException(e);
-        }
+        taskWrk.setStatus(4);//鎵嬪姩鍙栨秷
         taskWrk.setCompleteTime(now);//瀹岀粨鏃堕棿
         taskWrkService.updateById(taskWrk);
         return R.ok();
@@ -338,8 +285,8 @@
         return R.ok();
     }
 
-    public static String getTaskType(Integer paramIoType){
-        switch (paramIoType){
+    public static String getTaskType(Integer paramIoType) {
+        switch (paramIoType) {
             case 1:
                 return "RK";
             case 2:
@@ -354,32 +301,40 @@
     @PostMapping(value = "/taskWrk/state")
 //    @ManagerAuth(memo = "鎺ユ敹RCS浠诲姟鐘舵��")
     public R taskWrkState(@RequestBody NotifyDto notifyDto) {
+        R r = R.ok();
         log.info("鎺ユ敹RCS浠诲姟鐘舵��={}", notifyDto);
         TaskWrk taskWrk = taskWrkService.selectByTaskNo(notifyDto.getSuperTaskNo());//wms浠诲姟鍙�
         if (taskWrk == null) {
-            return R.error("娌℃湁鎵惧埌璇ヤ换鍔�={"+notifyDto+"}");
+            return R.error("娌℃湁鎵惧埌璇ヤ换鍔�={" + notifyDto + "}");
         }
         Date now = new Date();
-        if(notifyDto.getMsgType().equals("task_complete")){
+
+        /**
+         * 浠诲姟瀹屾垚
+         */
+        switch (notifyDto.getMsgType()) {
+            case "task_complete":
+                r = taskWrkService.taskComplete(taskWrk);
+                break;
 
         }
-        if(notifyDto.getMsgType().equals("task_complete")&&taskWrk.getIoType()==3){
-            taskWrk.setWrkSts(7);//鏇存柊鏁版嵁瀹屾垚锛岀洿鎺ヨ浆鍘嗗彶妗�
-
-            //鏇存柊婧愬簱浣嶇姸鎬佷负绌哄簱浣�
-            LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
-            locMast.setLocSts("O");
-            locMastService.updateById(locMast);
-
-            //鏇存柊鐩爣搴撶姸鎬佷负鍦ㄥ簱
-            LocMast locMast2 = locMastService.selectByLocNo(taskWrk.getTargetPoint());
-            locMast2.setLocSts("F");
-            locMastService.updateById(locMast2);
-            taskWrk.setModiTime(now);//鎿嶄綔鏃堕棿
-            taskWrk.setModiUser(9998L);//鎿嶄綔鍛�
-            taskWrkService.updateById(taskWrk);
-        }
-        return R.ok();
+//        if (notifyDto.getMsgType().equals("task_complete") && taskWrk.getIoType() == 3) {//绉诲簱
+//            taskWrk.setWrkSts(7);//鏇存柊鏁版嵁瀹屾垚锛岀洿鎺ヨ浆鍘嗗彶妗�
+//
+//            //鏇存柊婧愬簱浣嶇姸鎬佷负绌哄簱浣�
+//            LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
+//            locMast.setLocSts("O");
+//            locMastService.updateById(locMast);
+//
+//            //鏇存柊鐩爣搴撶姸鎬佷负鍦ㄥ簱
+//            LocMast locMast2 = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+//            locMast2.setLocSts("F");
+//            locMastService.updateById(locMast2);
+//            taskWrk.setModiTime(now);//鎿嶄綔鏃堕棿
+//            taskWrk.setModiUser(9998L);//鎿嶄綔鍛�
+//            taskWrkService.updateById(taskWrk);
+//        }
+        return r;
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttle.java b/src/main/java/com/zy/asrs/entity/BasShuttle.java
index 02f128c..23c79a4 100644
--- a/src/main/java/com/zy/asrs/entity/BasShuttle.java
+++ b/src/main/java/com/zy/asrs/entity/BasShuttle.java
@@ -31,9 +31,9 @@
     private Integer shuttleNo;
 
     /**
-     * 鐘舵�� 1: 姝e父  0: 绂佺敤  
+     * 鐘舵�� 0: 鎵嬪姩  1: 姝e父 2.鍏呯數涓�
      */
-    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    @ApiModelProperty(value= "鐘舵�� 0: 鎵嬪姩  1: 姝e父 2.鍏呯數涓�  ")
     private Integer status;
 
     /**
@@ -42,6 +42,20 @@
     @ApiModelProperty(value= "褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛�")
     @TableField("shuttle_status")
     private Integer shuttleStatus;
+
+    /**
+     * 灏忚溅鎵�鍦ㄥ眰
+     */
+    @ApiModelProperty(value= "灏忚溅鎵�鍦ㄥ眰")
+    @TableField("charge_line")
+    private Integer chargeLine;
+
+    /**
+     * 鏄惁鍏呯數鐘舵��
+     */
+    @ApiModelProperty(value= "鏄惁鍏呯數鐘舵��")
+    @TableField("auto_charge")
+    private Integer autoCharge;
 
     /**
      * 浠诲姟鍙�
@@ -56,20 +70,6 @@
     @ApiModelProperty(value= "鏆傚瓨搴撲綅")
     @TableField("idle_loc")
     private String idleLoc;
-
-    /**
-     * 鑷姩鍏呯數
-     */
-    @ApiModelProperty(value= "鑷姩鍏呯數")
-    @TableField("auto_charge")
-    private Integer autoCharge;
-
-    /**
-     * 鐢甸噺绾�
-     */
-    @ApiModelProperty(value= "鐢甸噺绾�")
-    @TableField("charge_line")
-    private Integer chargeLine;
 
     /**
      * 娣诲姞浜哄憳
@@ -135,6 +135,13 @@
     @TableField("disable_lev")
     private String disableLev;
 
+    /**
+     * 灏忚溅寮傚父鐮�
+     */
+    @ApiModelProperty(value= "灏忚溅寮傚父鐮�")
+    @TableField("errorCode")
+    private Integer errorCode;
+
     public BasShuttle() {}
 
     public BasShuttle(Integer shuttleNo, Integer status, Integer shuttleStatus, Integer wrkNo, String idleLoc, Integer autoCharge, Integer chargeLine, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, Boolean pakMk, String deviceStatus) {
diff --git a/src/main/java/com/zy/asrs/entity/TaskWrk.java b/src/main/java/com/zy/asrs/entity/TaskWrk.java
index 6ea89df..b2083da 100644
--- a/src/main/java/com/zy/asrs/entity/TaskWrk.java
+++ b/src/main/java/com/zy/asrs/entity/TaskWrk.java
@@ -48,9 +48,9 @@
     private String taskNo;
 
     /**
-     * 浠诲姟鐘舵�� 1: 鎺ユ敹  2: 娲惧彂  3: 瀹岀粨  4: 鍙栨秷
+     * 浠诲姟鐘舵�� 1: 鎺ユ敹  2: 娲惧彂 4: 鍙栨秷浠诲姟涓婃姤wms 5.鍙栨秷浠诲姟 6: 瀹岀粨浠诲姟涓婃姤wms 7.瀹岀粨
      */
-    @ApiModelProperty(value= "浠诲姟鐘舵�� 1: 鎺ユ敹  2: 娲惧彂  4: 鍙栨秷  5: 瀹岀粨 ")
+    @ApiModelProperty(value= "浠诲姟鐘舵�� 1: 鎺ユ敹  2: 娲惧彂   4: 鍙栨秷浠诲姟涓婃姤wms   5.鍙栨秷浠诲姟   6: 瀹岀粨浠诲姟涓婃姤wms   7.瀹岀粨 ")
     private Integer status;
 
     /**
@@ -87,14 +87,14 @@
     /**
      * 璧风偣
      */
-    @ApiModelProperty(value= "璧风偣")
+    @ApiModelProperty(value= "婧愮珯鐐�")
     @TableField("start_point")
     private String startPoint;
 
     /**
-     * 缁堢偣
+     * 鐩爣绔欑偣
      */
-    @ApiModelProperty(value= "缁堢偣")
+    @ApiModelProperty(value= "鐩爣绔欑偣")
     @TableField("target_point")
     private String targetPoint;
 
@@ -182,11 +182,11 @@
     @TableField("transfer_mark")
     private Integer transferMark;
 
-    @ApiModelProperty(value = "鍘熷璧风偣")
+    @ApiModelProperty(value = "婧愬簱浣�")
     @TableField("origin_start_point")
     private String originStartPoint;
 
-    @ApiModelProperty(value = "鍘熷缁堢偣")
+    @ApiModelProperty(value = "鐩爣搴撲綅")
     @TableField("origin_target_point")
     private String originTargetPoint;
 
diff --git a/src/main/java/com/zy/asrs/entity/param/CarryParam.java b/src/main/java/com/zy/asrs/entity/param/CarryParam.java
index 63dc5ce..524eef6 100644
--- a/src/main/java/com/zy/asrs/entity/param/CarryParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/CarryParam.java
@@ -16,6 +16,12 @@
     //瀹瑰櫒缂栫爜
     private String BoxNo;
 
+    //婧愬簱浣�
+    private String originStartPoint;
+
+    //鐩爣搴撲綅
+    private String originTargetPoint;
+
     //婧愯揣浣嶆帓缂栧彿
     private Integer OriginalRowNo;
 
@@ -34,7 +40,7 @@
     //鐩爣搴撲綅鍒楃紪鍙�
     private Integer GoalColumnNo;
 
-    //璧风偣
+    //婧愮珯鐐�
     private String startPoint;
 
     //缁堢缂栧彿锛堣緭閫佺嚎涓婃煇涓�鐐逛綅锛�
diff --git a/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java b/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java
new file mode 100644
index 0000000..dff4f2b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java
@@ -0,0 +1,73 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GetShuttleStatusParam {
+
+    /**
+     * 灏忚溅鍙�
+     */
+    private Integer shuttleNo;
+
+    /**
+     * 灏忚溅妯″紡 0锛氭墜鍔� 1锛氳嚜鍔�
+     */
+    private Integer mode;
+    /**
+     * 灏忚溅鐘舵��
+     * <p>
+     * IDLE(1, "绌洪棽"),
+     * WORKING(2, "浣滀笟涓�"),
+     * WAITING(3, "绛夊緟纭"),
+     * CHARGING(4, "鍏呯數涓�"),
+     * CHARGING_WAITING(5, "鍏呯數浠诲姟绛夊緟纭"),
+     * FIXING(6, "鏁呴殰淇涓�"),
+     * OFFLINE(7, "绂荤嚎"),
+     */
+    private Integer protocolStatus;
+    /**
+     * 褰撳墠浜岀淮鐮�
+     * 0涓虹┖
+     */
+    private String currentCode;
+
+    /**
+     * 鏄惁涓哄厖鐢电姸鎬�
+     */
+    private Boolean hasCharge;
+
+    private Integer errorCode;
+
+    public String getProtocolStatus$() {
+        String protocolStatus$ = "";
+        switch (this.protocolStatus) {
+            case 1:
+                protocolStatus$ = "绌洪棽";
+                break;
+            case 2:
+                protocolStatus$ = "浣滀笟涓�";
+                break;
+            case 3:
+                protocolStatus$ = "绛夊緟纭";
+                break;
+            case 4:
+                protocolStatus$ = "鍏呯數涓�";
+                break;
+            case 5:
+                protocolStatus$ = "鍏呯數浠诲姟绛夊緟纭";
+                break;
+            case 6:
+                protocolStatus$ = "鏁呴殰淇涓�";
+                break;
+            case 7:
+                protocolStatus$ = "绂荤嚎";
+                break;
+
+
+        }
+        return protocolStatus$;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java b/src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java
index ca34bf2..9c25d4e 100644
--- a/src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java
@@ -5,6 +5,7 @@
 
 @Data
 public class StorageEscalationParam {
+    private Integer taskNo;
     //鎵樼洏鐮�
     private String boxNo;
     //鎵ц鐘舵��   0锛氭垚鍔� 1锛氬け璐�
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 7175c40..d86c10b 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.service;
 
 import com.core.common.R;
+import com.zy.asrs.entity.param.CarryParam;
 import com.zy.asrs.entity.param.TaskOverParam;
 import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam;
 import com.zy.asrs.entity.param.TaskCreateParam;
@@ -11,7 +12,7 @@
 public interface OpenService {
 
     //鍒涘缓浠诲姟
-    HashMap<String,Object> taskCreate(TaskCreateParam param);
+    HashMap<String,Object> taskCreate(CarryParam param);
 
     R AgvToWCSToWms(WMSAndAGVInterfaceParam param) throws IOException;
 
diff --git a/src/main/java/com/zy/asrs/service/TaskWrkService.java b/src/main/java/com/zy/asrs/service/TaskWrkService.java
index e62ee0b..55dace8 100644
--- a/src/main/java/com/zy/asrs/service/TaskWrkService.java
+++ b/src/main/java/com/zy/asrs/service/TaskWrkService.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.service;
 
+import com.core.common.R;
 import com.zy.asrs.entity.TaskWrk;
 import com.baomidou.mybatisplus.service.IService;
 
@@ -30,4 +31,7 @@
 
     int saveToHistory(String taskNo);//灏嗕换鍔¤浆鍘嗗彶鏃ュ織
 
+    //RCS涓婃姤浠诲姟瀹屾垚锛屽瀹屾垚浠诲姟杩涜澶勭悊
+    R taskComplete(TaskWrk taskWrk);
+
 }
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 288ec0b..7f27a55 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -22,6 +22,7 @@
 import com.zy.asrs.utils.Utils;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.RedisUtil;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -103,15 +104,21 @@
     private String TaskExecCallback;
     @Value("${wms.taskStatusFeedbackPath}")
     private String taskStatusFeedbackPath;
+    @Value("${wms.returnWarehouse}")
+    private String returnWarehouse;
 
     @Value("${wcs.urlWcs}")
     private String wcsUrl;
     @Value("${wcs.inboundTaskApplyPathWcs}")
     private String wcsInboundTaskApplyPath;
+    @Value("${wcs.outboundTaskRequest}")
+    private String outboundTaskRequest;
     @Autowired
     private CrnController crnController;
     @Autowired
     private SiteController siteController;
+    @Autowired
+    private RedisUtil redisUtil;
 
 
     public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException {
@@ -134,7 +141,7 @@
                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                     if (staProtocol.isAutoing() && staProtocol.isLoading()
                             && staProtocol.isInEnable()
-                            && !staProtocol.isEmptyMk() && workNo >= 9790
+                            && !staProtocol.isEmptyMk() && workNo >= 9998
                             && staProtocol.isPakMk()) {
                         // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                         BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
@@ -145,17 +152,17 @@
                         if (BoxNo.equals("00000000")) {
                             storageEscalationParam.setWCSStatus(1);
                             storageEscalationParam.setWCSErrorMessage("娌℃湁鎵埌鐮�");
-                            BasDevp basDevp= basDevpService.selectOne(new EntityWrapper<BasDevp>()
-                                    .eq("dev_no",staProtocol.getSiteId()));
-                            if(Cools.isEmpty(basDevp)){
-                                log.error("鎵爜澶辫触骞朵笖娌℃湁鎵惧埌璇ョ珯鐐�---"+staProtocol.getSiteId());
-                            }else{
+                            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>()
+                                    .eq("dev_no", staProtocol.getSiteId()));
+                            if (Cools.isEmpty(basDevp)) {
+                                log.error("鎵爜澶辫触骞朵笖娌℃湁鎵惧埌璇ョ珯鐐�---" + staProtocol.getSiteId());
+                            } else {
                                 basDevp.setStaErr(1);//娌℃湁鎵埌鐮�
                                 basDevp.setStaErrMsg("娌℃湁鎵埌鐮侊紒");
                                 basDevpService.updateById(basDevp);
                             }
                             continue;
-                        }else{
+                        } else {
                             TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                             if (!Cools.isEmpty(taskWrk1)) {
                                 log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
@@ -185,24 +192,26 @@
                                     .doPost();
                             JSONObject jsonObject = JSON.parseObject(response);
 
-                            if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
-                                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
+                            if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("returnStatus")) && jsonObject.get("returnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("results").toString())) {
+                                Result result = JSON.parseObject(jsonObject.get("results").toString(), Result.class);
                                 // 鍒涙柊涓�涓叆搴撳伐浣滄。
-                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo()+"");
+                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo() + "");
                                 if (Cools.isEmpty(taskWrk)) {
-                                    taskWrk = createTask1(result, BoxNo,staProtocol.getSiteId());
+                                    taskWrk = createTask1(result, BoxNo, staProtocol.getSiteId());
                                     if (Cools.isEmpty(taskWrk)) {
                                         log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛�={}", taskWrk.getOriginTargetPoint());
                                     } else {
                                         taskWrkService.insert(taskWrk);
                                         StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                                 .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
-                                        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                                        staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
-                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                         HashMap<String, Object> hashMap = new HashMap<>();
                                         hashMap.put("TaskNo", taskWrk.getTaskNo());
                                         Boolean bool = false;
+
+                                        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                        staProtocol.setStaNo((short) 0);
+                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
                                         try {
                                             //寮�濮嬩笂鎶�,浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
                                             response = new HttpHandler.Builder()
@@ -212,9 +221,139 @@
                                                     .build()
                                                     .doPost();
                                             JSONObject jsonObject1 = JSON.parseObject(response);
-
                                             if (jsonObject1.get("ReturnStatus").equals(0)) {
                                                 bool = true;
+
+                                            }
+
+                                        } catch (Exception e) {
+
+                                        } finally {
+                                            apiLogService.save("wcs寮�濮嬪叆搴撲换鍔′笂鎶ms"
+                                                    , wmsUrl + TaskExecCallback
+                                                    , null
+                                                    , "127.0.0.1"
+                                                    , JSON.toJSONString(hashMap)
+                                                    , response
+                                                    , bool
+                                            );
+                                        }
+                                    }
+                                }
+                            }
+                        } catch (Exception e) {
+                            log.error("璇锋眰鍏ュ簱璋冪敤鎺ュ彛澶辫触");
+                            log.error("寮傚父淇℃伅鎵撳嵃锛�" + e);
+                            try {
+                                BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
+                                if (Cools.isEmpty(basDevp)) {
+                                    log.error("绔欑偣鍙峰紓甯�" + inSta.getStaNo());
+                                } else if (basDevp.getStaErr() != 0) {
+                                    basDevp.setStaErr(2);
+                                    basDevpService.updateById(basDevp);
+                                }
+                            } catch (Exception e1) {
+                                // 閫�鍥�
+                                log.error("鎵爜妫�娴嬬▼搴忓紓甯�" + inSta.getStaNo() + "寮傚父淇℃伅" + e1);
+                            }
+                        } finally {
+                            apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛"
+                                    , wmsUrl + inboundTaskApplyPath
+                                    , null
+                                    , "127.0.0.1"
+                                    , JSON.toJSONString(storageEscalationParam)
+                                    , response
+                                    , success
+                            );
+                        }
+                        log.info("鍏ュ簱璇锋眰鍙傛暟=" + JSON.toJSONString(BoxNo));
+                        log.info("鍏ュ簱璇锋眰杩斿洖鍙傛暟=" + JSON.toJSONString(response));
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("generateStoreWrkFile e", e);
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+    public synchronized void EmptyPlates() throws IOException, InterruptedException {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                // 閬嶅巻鍏ュ簱鍙�
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
+                    // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    Short workNo = staProtocol.getWorkNo();
+                    Short stano = staProtocol.getStaNo();
+                    // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                    if (staProtocol.isAutoing() && staProtocol.isLoading()
+                            && staProtocol.isInEnable()
+                            && staProtocol.isEmptyMk() && workNo ==9999
+                            && staProtocol.isPakMk()) {
+                        // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+                        if (barcodeThread == null) {
+                            continue;
+                        }
+                        String BoxNo = barcodeThread.getBarcode();
+
+                        log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
+                        storageEscalationParam.setBoxNo(BoxNo);
+                        storageEscalationParam.setWcsIoType(2);//绌烘澘
+                        storageEscalationParam.setWcsSourceStaNo(staProtocol.getSiteId());
+                        String response = "";
+                        Boolean success = false;
+                        try {
+                            response = new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath(inboundTaskApplyPath)
+                                    .setJson(JSON.toJSONString(storageEscalationParam))
+                                    .build()
+                                    .doPost();
+                            JSONObject jsonObject = JSON.parseObject(response);
+
+                            if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("returnStatus")) && jsonObject.get("returnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("results").toString())) {
+                                Result result = JSON.parseObject(jsonObject.get("results").toString(), Result.class);
+                                // 鍒涙柊涓�涓叆搴撳伐浣滄。
+                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo() + "");
+                                if (Cools.isEmpty(taskWrk)) {
+                                    taskWrk = createTask1(result, BoxNo, staProtocol.getSiteId());
+                                    if (Cools.isEmpty(taskWrk)) {
+                                        log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛�={}", taskWrk.getOriginTargetPoint());
+                                    } else {
+                                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                                        taskWrkService.insert(taskWrk);
+                                        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                                                .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                        HashMap<String, Object> hashMap = new HashMap<>();
+                                        hashMap.put("TaskNo", taskWrk.getTaskNo());
+                                        Boolean bool = false;
+
+                                        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                        staProtocol.setStaNo((short) 0);
+                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+                                        try {
+                                            //寮�濮嬩笂鎶�,浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
+                                            response = new HttpHandler.Builder()
+                                                    .setUri(wmsUrl)
+                                                    .setPath(taskStatusFeedbackPath)
+                                                    .setJson(JSON.toJSONString(hashMap))
+                                                    .build()
+                                                    .doPost();
+                                            JSONObject jsonObject1 = JSON.parseObject(response);
+                                            if (jsonObject1.get("ReturnStatus").equals(0)) {
+                                                bool = true;
+
                                             }
 
                                         } catch (Exception e) {
@@ -272,55 +411,56 @@
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
     public synchronized void crnStnToOutStn() {
-        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
-            // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
-            for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
-                List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo()));
-                for (StaDesc staDesc : staDescs) {
-                    try {
-                        // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-                        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                        StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-                        if (staProtocol == null) {
-                            continue;
-                        } else {
-                            staProtocol = staProtocol.clone();
-                        }
-                        if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
-                            // 鏌ヨ宸ヤ綔妗�
-                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
-                            if (taskWrk == null) {
-                                continue;
-                            }
-                            log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
-//                            R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
-                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                            staProtocol.setStaNo(staDesc.getStnNo().shortValue());
-                            boolean offer = false;
-                            try {
-                                offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
-                            } catch (Exception e) {
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
-                            }
-//                            JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
-                            if (offer) {
-                                log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
-                                taskWrk.setStatus(5);
-                                taskWrk.setWrkSts(16);
-                                taskWrkService.updateById(taskWrk);
-
-                            } else {
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
-//                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯镐俊鎭�:"+JSON.toJSONString(r));
-                            }
-                        }
-                    } catch (Exception e) {
-                        log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�" + e);
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鍑哄簱鍙�
+            for (DevpSlave.Sta outSta : devp.getOutSta()) {
+                try {
+                    // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
                     }
-                }
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
+                        // 鏌ヨ宸ヤ綔妗�
+                        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>()
+                                .eq("target_point", staProtocol.getSiteId())
+                                .eq("wrk_sts", 15));
+                        if (taskWrk == null) {
+                            continue;
+                        }
+                        log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
+//                            R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
+                        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                        staProtocol.setStaNo((short) 0);
+                        boolean offer = false;
+                        try {
+                            offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                        } catch (Exception e) {
+                            log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
+                            log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
+                        }
+//                            JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
+                        if (offer) {
+                            log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
+//                            taskWrk.setStatus(5);
+                            taskWrk.setWrkSts(16);
+                            taskWrkService.updateById(taskWrk);
 
+                        } else {
+                            log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
+//                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯镐俊鎭�:"+JSON.toJSONString(r));
+                        }
+                    }
+                } catch (Exception e) {
+                    log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�" + e);
+                }
             }
+
+
         }
     }
 
@@ -328,89 +468,82 @@
      * 鍏ュ嚭搴�  ===>>  璋冪敤RCS杩涜鍏ュ嚭搴�
      */
     public synchronized void crnIoExecute() throws IOException {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            this.crnStnToLoc(crn); //  鍏ュ簱
-            this.locToCrnStn(crn); //  鍑哄簱
-            // 搴撲綅绉昏浆
+        this.crnStnToLoc(); //  鍏ュ簱
+        this.locToCrnStn(); //  鍑哄簱
+        // 搴撲綅绉昏浆
 //            this.locToLoc(crn, crnProtocol);
-        }
     }
 
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public synchronized void crnStnToLoc(CrnSlave slave) throws IOException {
-        for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
-            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
-            for (StaDesc staDesc : staDescs) {
-                boolean flag = false;
-                // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+    public synchronized void crnStnToLoc() throws IOException {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鍏ュ簱鍙�
+            for (DevpSlave.Sta inSta : devp.getInSta()) {
+                StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 if (staProtocol == null) {
                     continue;
                 } else {
                     staProtocol = staProtocol.clone();
                 }
                 // 鏌ヨ绔欑偣璇︾粏淇℃伅
-                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+                BasDevp staDetl = basDevpService.selectById(staProtocol.getSiteId());
                 if (staDetl == null) {
-                    log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                    log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", staProtocol.getSiteId());
                     continue;
                 }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() < 9990
                         && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                    flag = true;
-                }
-                if (!flag) {
-                    continue;
-                }
-
-                // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
-                TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
-                if (null == taskWrk) {
-                    continue;
-                }
-
-                String mbz = taskWrk.getTargetPoint().substring(5);
-
-                HashMap<String, Object> hashMap = new HashMap<>();
-                hashMap.put("taskNo", taskWrk.getTaskNo());//wms浠诲姟鍙�
-                hashMap.put("sourceStaNo", staDetl.getDevNo());//婧愮珯鐐�
-                hashMap.put("staNo", Integer.parseInt(mbz) + "");//鐩爣绔�
-                hashMap.put("locNo", taskWrk.getTargetPoint());//鐩爣搴撲綅
-                String response = "";
-                Boolean bool = false;
-                try {
-                    //寮�濮嬩笂鎶�,鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
-                    response = new HttpHandler.Builder()
-                            .setUri(wcsUrl)
-                            .setPath(wcsInboundTaskApplyPath)
-                            .setJson(JSON.toJSONString(hashMap))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-
-                    if (jsonObject.get("code").equals(200)) {
-                        bool = true;
-//                        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
-                        taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
-                        taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鎴愬姛涓嬪彂鍏ュ簱浠诲姟缁橰CS
-                        taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿
-                        taskWrk.setModiTime(new Date());
-                        taskWrk.setModiUser(9988L);
+                    // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
+                    TaskWrk taskWrk = taskWrkMapper.selectPakIn(null, staProtocol.getWorkNo().intValue(), staProtocol.getSiteId().toString());
+                    if (null == taskWrk) {
+                        continue;
                     }
-                } catch (Exception e) {
-                } finally {
-                    apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟缁橰CS"
-                            , wcsUrl + wcsInboundTaskApplyPath
-                            , null
-                            , "127.0.0.1"
-                            , JSON.toJSONString(hashMap)
-                            , response
-                            , bool
-                    );
+
+                    HashMap<String, Object> hashMap = new HashMap<>();
+                    hashMap.put("taskNo", taskWrk.getTaskNo());//wms浠诲姟鍙�
+                    hashMap.put("sourceStaNo", staDetl.getDevNo());//婧愮珯鐐�
+                    hashMap.put("staNo", taskWrk.getTargetPoint());//鐩爣绔�
+                    hashMap.put("locNo", taskWrk.getOriginTargetPoint());//鐩爣搴撲綅
+                    String response = "";
+                    Boolean bool = false;
+                    try {
+                        //寮�濮嬩笂鎶�,鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
+                        response = new HttpHandler.Builder()
+                                .setUri(wcsUrl)
+                                .setPath(wcsInboundTaskApplyPath)
+                                .setJson(JSON.toJSONString(hashMap))
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+
+                        if (jsonObject.getInteger("code").equals(200)) {
+                            bool = true;
+//                        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
+                            taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
+                            taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鎴愬姛涓嬪彂鍏ュ簱浠诲姟缁橰CS
+                            taskWrk.setModiTime(new Date());
+                            taskWrk.setModiUser(9988L);
+                        }
+                    } catch (Exception e) {
+                    } finally {
+                        apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟缁橰CS"
+                                , wcsUrl + wcsInboundTaskApplyPath
+                                , null
+                                , "127.0.0.1"
+                                , JSON.toJSONString(hashMap)
+                                , response
+                                , bool
+                        );
+                    }
                 }
+
+
             }
         }
     }
@@ -419,16 +552,24 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public synchronized void locToCrnStn(CrnSlave slave) {
-        List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
-        if (taskWrksInitial.size() == 0) {
-            return;
-        }
-        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
-            for (StaDesc staDesc : staDescs) {
-                // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-                List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(), staDesc.getStnNo().toString());
+    public synchronized void locToCrnStn() {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鍏ュ簱鍙�
+            for (DevpSlave.Sta outSta : devp.getOutSta()) {
+                StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(1, staProtocol.getSiteId().toString());
+                if (taskWrks.size() == 0) {
+                    continue;
+                }
                 for (TaskWrk taskWrk : taskWrks) {
                     if (taskWrk == null) {
                         continue;
@@ -444,19 +585,10 @@
                     //棰勭暀
 
 
-                    // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-                    if (staProtocol == null) {
-                        break;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-
                     // 鏌ヨ绔欑偣璇︾粏淇℃伅
-                    BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+                    BasDevp staDetl = basDevpService.selectById(staProtocol.getSiteId());
                     if (staDetl == null) {
-                        log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                        log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", staProtocol.getSiteId());
                         break;
                     }
 
@@ -464,44 +596,35 @@
                     if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                             && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-                        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                        if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
-                            break;
-                        }
-
-                        String mbz = taskWrk.getTargetPoint().substring(5);
-
                         HashMap<String, Object> hashMap = new HashMap<>();
                         hashMap.put("taskNo", taskWrk.getTaskNo());//wms浠诲姟鍙�
-                        hashMap.put("sourceStaNo", staDetl.getDevNo());//婧愮珯鐐�
-                        hashMap.put("staNo", Integer.parseInt(mbz) + "");//鐩爣绔�
-                        hashMap.put("locNo", taskWrk.getTargetPoint());//鐩爣搴撲綅
+                        hashMap.put("sourceLocNo", taskWrk.getOriginStartPoint());//婧愬簱浣�
+                        hashMap.put("staNo", taskWrk.getTargetPoint());//鐩爣绔�
                         String response = "";
                         Boolean bool = false;
                         try {
                             //寮�濮嬩笂鎶�,鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
                             response = new HttpHandler.Builder()
                                     .setUri(wcsUrl)
-                                    .setPath(wcsInboundTaskApplyPath)
+                                    .setPath(outboundTaskRequest)
                                     .setJson(JSON.toJSONString(hashMap))
                                     .build()
                                     .doPost();
                             JSONObject jsonObject = JSON.parseObject(response);
 
-                            if (jsonObject.get("code").equals(200)) {
+                            if (jsonObject.getInteger("code").equals(200)) {
                                 bool = true;
 //                        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
                                 taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
-                                taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鎴愬姛涓嬪彂鍏ュ簱浠诲姟缁橰CS
-                                taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿
+                                taskWrk.setWrkSts(12);//宸ヤ綔鐘舵�� 12.鎴愬姛涓嬪彂鍑哄簱浠诲姟
                                 taskWrk.setModiTime(new Date());
                                 taskWrk.setModiUser(9988L);
+                                taskWrkService.updateById(taskWrk);
                             }
                         } catch (Exception e) {
                         } finally {
                             apiLogService.save("wcs娲惧彂鍑哄簱浠诲姟缁橰CS"
-                                    , wcsUrl + wcsInboundTaskApplyPath
+                                    , wcsUrl + outboundTaskRequest
                                     , null
                                     , "127.0.0.1"
                                     , JSON.toJSONString(hashMap)
@@ -509,47 +632,6 @@
                                     , bool
                             );
                         }
-
-                        try {
-                            // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                            Date now = new Date();
-                            taskWrk.setWrkSts(12);
-                            taskWrk.setModiTime(now);
-                            if (taskWrkMapper.updateById(taskWrk) == 0) {
-                                log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
-                            }
-                        } catch (Exception e) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
-                        }
-//                            try {
-//                                HashMap<String, Object> headParam = new HashMap<>();
-//                                headParam.put("taskNo", taskWrk.getTaskNo());
-//                                headParam.put("status", taskWrk.getStatus());
-//                                headParam.put("ioType", taskWrk.getIoType());
-//                                headParam.put("barcode", taskWrk.getBarcode());
-//                                String response;
-//                                response = new HttpHandler.Builder()
-//                                        // .setHeaders(headParam)
-//                                        .setUri(wmsUrl)
-//                                        .setPath(taskStatusFeedbackPath)
-//                                        .setJson(JSON.toJSONString(headParam))
-//                                        .build()
-//                                        .doPost();
-//                                JSONObject jsonObject = JSON.parseObject(response);
-//                                apiLogService.save("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms"
-//                                        , wmsUrl + taskStatusFeedbackPath
-//                                        , null
-//                                        , "127.0.0.1"
-//                                        , JSON.toJSONString(headParam)
-//                                        , response
-//                                        , true
-//                                );
-//                            } catch (Exception e) {
-//                                log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", JSON.toJSONString(taskWrk));
-////                                throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
-//                            }
-
                     }
                 }
             }
@@ -557,99 +639,117 @@
     }
 
     /**
-     * 搴撲綅绉昏浆
+     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
      */
-    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
-        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
-            List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>()
-                    .eq("crn_no", slave.getId())
-                    .eq("wrk_sts", 11)
-                    .eq("io_type", 3)
-                    .orderBy("io_pri", false));
-            for (TaskWrk taskWrk : taskWrks) {
-
-                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-//                if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) {
-//                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint());
-//                    TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo);
-//                    if (!Cools.isEmpty(hallowLocNoTask)){
-//                        continue;
-//                    }
-//                }
-                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+    public synchronized void stnToCrnStnPick(Integer mark) {
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鎷f枡鍏ュ簱鍙�
+            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
+                StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
+                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+                if (staProtocol == null) {
                     continue;
-                }
-
-                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
-                    continue;
-                }
-
-                if (taskWrk == null || Cools.isEmpty(taskWrk.getTargetPoint()) || taskWrk.getTargetPoint().equals("") || taskWrk.getWrkNo() == null) {
-                    continue;
-                }
-                // 宸ヤ綔妗g姸鎬佸垽鏂�
-                if (taskWrk.getIoType() != 3 || taskWrk.getTargetPoint() == null) {
-                    log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/鐩爣搴撲綅鍙�, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getTargetPoint(), taskWrk.getIoType());
-                    continue;
-                }
-
-                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-
-                // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-                CrnCommand crnCommand = new CrnCommand();
-                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                crnCommand.setSourcePosX(Utils.getRowShort(taskWrk.getStartPoint()));     // 婧愬簱浣嶆帓
-                crnCommand.setSourcePosY(Utils.getBayShort(taskWrk.getStartPoint()));     // 婧愬簱浣嶅垪
-                crnCommand.setSourcePosZ(Utils.getLevShort(taskWrk.getStartPoint()));     // 婧愬簱浣嶅眰
-                crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
-                crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鍒�
-                crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
-                crnCommand.setCommand((short) 1);
-                if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
-                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
                 } else {
-                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                    Date now = new Date();
-                    taskWrk.setWrkSts(12);
-                    taskWrk.setStatus(2);
-                    taskWrk.setModiTime(now);
-                    if (taskWrkMapper.updateById(taskWrk) == 0) {
-                        log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
-                    }
+                    staProtocol = staProtocol.clone();
+                }
+
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()
+                        && staProtocol.getWorkNo() >= 3001 && staProtocol.getWorkNo() <= 6000) {
+
+                    storageEscalationParam.setTaskNo(Integer.valueOf(staProtocol.getWorkNo()));
+                    String response = "";
+                    Boolean success = false;
                     try {
-                        HashMap<String, Object> headParam = new HashMap<>();
-                        headParam.put("TaskNo", taskWrk.getTaskNo());
-                        String response;
+                        //寮�濮嬩笂鎶�,鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱锛學CS鍥炶皟WMS
                         response = new HttpHandler.Builder()
-                                // .setHeaders(headParam)
                                 .setUri(wmsUrl)
-                                .setPath(taskStatusFeedbackPath)
-                                .setJson(JSON.toJSONString(headParam))
+                                .setPath(returnWarehouse)
+                                .setJson(JSON.toJSONString(storageEscalationParam))
                                 .build()
                                 .doPost();
                         JSONObject jsonObject = JSON.parseObject(response);
-                        apiLogService.save("wcs娲惧彂绉诲簱浠诲姟涓婃姤wms"
-                                , wmsUrl + taskStatusFeedbackPath
+                        if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("returnStatus")) && jsonObject.get("returnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("results").toString())) {
+                            Result result = JSON.parseObject(jsonObject.get("results").toString(), Result.class);
+                            // 鍒涙柊涓�涓叆搴撳伐浣滄。
+                            TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo() + "");
+                            if (Cools.isEmpty(taskWrk)) {
+                                taskWrk = createTask1(result, result.getBarcode(), staProtocol.getSiteId());
+                                if (Cools.isEmpty(taskWrk)) {
+                                    log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛�={}", taskWrk.getOriginTargetPoint());
+                                } else {
+                                    taskWrkService.insert(taskWrk);
+                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                                            .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                    HashMap<String, Object> hashMap = new HashMap<>();
+                                    hashMap.put("TaskNo", taskWrk.getTaskNo());
+                                    Boolean bool = false;
+
+                                    staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                    staProtocol.setStaNo((short) 0);
+                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+                                    try {
+                                        //寮�濮嬩笂鎶�,浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
+                                        response = new HttpHandler.Builder()
+                                                .setUri(wmsUrl)
+                                                .setPath(taskStatusFeedbackPath)
+                                                .setJson(JSON.toJSONString(hashMap))
+                                                .build()
+                                                .doPost();
+                                        JSONObject jsonObject1 = JSON.parseObject(response);
+                                        if (jsonObject1.get("ReturnStatus").equals(0)) {
+                                            bool = true;
+
+                                        }
+
+                                    } catch (Exception e) {
+
+                                    } finally {
+                                        apiLogService.save("wcs鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱涓婃姤wms"
+                                                , wmsUrl + TaskExecCallback
+                                                , null
+                                                , "127.0.0.1"
+                                                , JSON.toJSONString(hashMap)
+                                                , response
+                                                , bool
+                                        );
+                                    }
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                    } finally {
+                        apiLogService.save("wcs娲惧彂鍑哄簱浠诲姟缁橰CS"
+                                , wcsUrl + outboundTaskRequest
                                 , null
                                 , "127.0.0.1"
-                                , JSON.toJSONString(headParam)
+                                , JSON.toJSONString(storageEscalationParam)
                                 , response
-                                , true
+                                , success
                         );
-                    } catch (Exception e) {
-                        log.error("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触", taskWrk);
-//                        throw new CoolException("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触");
                     }
 
                 }
-                return;
+
+            }
+        }
+    }
+
+    public void scanForkLift() {
+        for (int i = 1; i <= 2; i++) {
+            Object object = redisUtil.get("fork_lift_put_complete_" + i);
+            if(object != null) {
+                String taskNo = object.toString();
+                TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);//wms浠诲姟鍙�
+                if (taskWrk == null) {
+                    log.info("娌℃湁鎵惧埌璇ヤ换鍔�");
+                }else{
+                    log.info("鎻愬墠瀹屾垚鍑哄簱浠诲姟={}", taskWrk);
+                    taskWrkService.taskComplete(taskWrk);
+                    redisUtil.del("fork_lift_put_complete_" + i);
+                }
             }
         }
 
@@ -1089,19 +1189,20 @@
         return response;
     }
 
-    private TaskWrk createTask1(Result result, String barcode,Integer devNo) {
+    private TaskWrk createTask1(Result result, String barcode, Integer devNo) {
         Date now = new Date();
         TaskWrk taskWrk = new TaskWrk();
 //        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
-        taskWrk.setTaskNo(result.getTaskNo()+"");//浠诲姟鍙�
+        taskWrk.setTaskNo(result.getTaskNo() + "");//浠诲姟鍙�
         taskWrk.setWrkNo(result.getTaskNo());
         taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//浠诲姟鐘舵�侊細娲惧彂
         taskWrk.setCreateTime(now);
         taskWrk.setIoType(1);//浠诲姟绫诲瀷
         taskWrk.setIoPri(13);//浼樺厛绾�
+        taskWrk.setWrkSts(2);//2.娲惧彂鍏ュ簱浠诲姟缁橰CS
         taskWrk.setBarcode(barcode);//鏉$爜
-        taskWrk.setTargetPoint(devNo+"");//绔欑偣缁堢偣
-        taskWrk.setStartPoint(devNo+"");//绔欑偣璧风偣
+        taskWrk.setTargetPoint(devNo + result.getShelfUnitId().substring(6));//绔欑偣缁堢偣
+        taskWrk.setStartPoint(devNo + "");//绔欑偣璧风偣
         taskWrk.setOriginStartPoint("");//婧愬簱浣�
         taskWrk.setOriginTargetPoint(result.getShelfUnitId());//鐩爣搴撲綅
         return taskWrk;
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index f2d45cb..6ff4755 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.domain.enums.WorkNoType;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.CarryParam;
 import com.zy.asrs.entity.param.TaskOverParam;
 import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam;
 import com.zy.asrs.entity.param.TaskCreateParam;
@@ -66,69 +67,47 @@
 
 
     @Override
-    public HashMap<String, Object> taskCreate(TaskCreateParam param) {
-        HashMap<String,Object> map=new HashMap<>();
+    public HashMap<String, Object> taskCreate(CarryParam param) {
+        HashMap<String, Object> map = new HashMap<>();
         TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
         if (taskWrk != null) {
-            map.put("Code","0");
-            map.put("Msg",param.getTaskNo()+"浠诲姟宸茬粡鐢熸垚锛�");
+            map.put("Code", "0");
+            map.put("Msg", param.getTaskNo() + "浠诲姟宸茬粡鐢熸垚锛�");
             return map;
         }
 
         Date now = new Date();
         taskWrk = new TaskWrk();
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getStartPoint()));
-        int workNo1 = commonService.getWorkNo(WorkNoType.PAKOUT.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getOriginStartPoint()));
+//        int workNo1 = commonService.getWorkNo(WorkNoType.PAKOUT.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
         taskWrk.setTaskNo(param.getTaskNo());//浠诲姟鍙�
-        taskWrk.setWrkNo(workNo1);
+        taskWrk.setWrkNo(Integer.valueOf(param.getTaskNo()));
         taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
         taskWrk.setCreateTime(now);
-        try {
-            if (param.getIoType() > 1) {
-                if (Utils.locNoRowBoolean(locMast.getRow1())) {
-                    param.setTaskPriority(11);
-                }
-            }
-        } catch (Exception e) {
-        }
-        taskWrk.setIoType(param.getIoType());//浠诲姟绫诲瀷
-        taskWrk.setIoPri(param.getTaskPriority());//浼樺厛绾�
-        taskWrk.setBarcode(param.getBarcode());//鏉$爜
+        taskWrk.setIoType(param.getStereoscopicTaskType());//浠诲姟绫诲瀷
+        taskWrk.setIoPri(param.getPriority());//浼樺厛绾�
+        taskWrk.setBarcode(param.getBoxNo());//鏉$爜
         taskWrk.setCrnNo(locMast.getCrnNo());
-        if (param.getIoType() == 1) {
-            taskWrk.setWrkSts(1);
-            if (!Cools.isEmpty(param.getTargetPoint())) {
-                taskWrk.setTargetPoint(Utils.getWcsLocNo(param.getTargetPoint()));//缁堢偣
-                taskWrk.setOriginTargetPoint(param.getTargetPoint());
-            }
-
-        } else if (param.getIoType() == 2) {
+        if (param.getStereoscopicTaskType() == 2) {
             taskWrk.setWrkSts(11);
-            if (!Cools.isEmpty(param.getStartPoint())) {
-                taskWrk.setStartPoint(param.getStartPoint());//璧风偣
-                taskWrk.setTargetPoint(param.getTargetPoint());
-            }
-            taskWrk.setTargetPoint(param.getTargetPoint());
-        } else if (param.getIoType() == 3) {
-            taskWrk.setWrkSts(11);
-            if (!Cools.isEmpty(param.getStartPoint())) {
-                taskWrk.setStartPoint(param.getStartPoint());//璧风偣
-                taskWrk.setTargetPoint(param.getTargetPoint());
-            }
-        }
-
-
-        if (!Cools.isEmpty(param.getMemo())) {
-            taskWrk.setMemo(param.getMemo());//澶囨敞
+            taskWrk.setStartPoint(param.getStartPoint());//婧愮珯鐐�
+            taskWrk.setTargetPoint(param.getTerminalNo());//鐩爣绔�
+            taskWrk.setOriginStartPoint(param.getOriginStartPoint());//婧愬簱浣�
+        } else if (param.getStereoscopicTaskType() == 3) {
+//            taskWrk.setWrkSts(11);
+//            if (!Cools.isEmpty(param.getStartPoint())) {
+//                taskWrk.setStartPoint(param.getStartPoint());//璧风偣
+//                taskWrk.setTargetPoint(param.getTargetPoint());
+//            }
         }
 
         if (!taskWrkService.insert(taskWrk)) {
-            map.put("Code","0");
-            map.put("Msg",param.getTaskNo()+"鍒涘缓浠诲姟澶辫触锛�");
+            map.put("Code", "0");
+            map.put("Msg", param.getTaskNo() + "鍒涘缓浠诲姟澶辫触锛�");
             return map;
         }
-        map.put("Code","1");
-        map.put("Msg","ok");
+        map.put("Code", "1");
+        map.put("Msg", "ok");
         return map;
     }
 
@@ -182,7 +161,7 @@
             WMSAndAGVInterfaceParam data = JSONObject.parseObject(jsonObject.get("data").toString(), WMSAndAGVInterfaceParam.class);
             String msg = null;
             try {
-                taskCreate(new TaskCreateParam(data));
+//                taskCreate(new TaskCreateParam(data));
             } catch (Exception e) {
                 msg = e.getMessage();
             }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
index c237c06..8afe071 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -3,13 +3,16 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.domain.enums.WorkNoType;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.StaDesc;
 import com.zy.asrs.mapper.TaskWrkMapper;
 import com.zy.asrs.entity.TaskWrk;
 import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.StaDescService;
 import com.zy.asrs.service.TaskWrkService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
@@ -50,6 +53,10 @@
     private String taskStatusFeedbackPath;
     @Autowired
     private ApiLogService apiLogService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private TaskWrkService taskWrkService;
 
     @Override
     public TaskWrk selectByTaskNo(String taskNo) {
@@ -74,29 +81,7 @@
     @Override
     @Transactional(propagation = Propagation.REQUIRES_NEW)
     public void distribute(String taskNo, Long userId) {
-        TaskWrk taskWrk = this.selectByTaskNo(taskNo);
-        if (taskWrk == null) {
-            throw new CoolException("WMS浠诲姟涓嶅瓨鍦�");
-        }
 
-        if (taskWrk.getStatus() != 1) {
-            throw new CoolException("浠诲姟宸叉淳鍙�");
-        }
-
-        //鍒涘缓浠诲姟
-        if (taskWrk.getIoType() == 1) {
-            //1.鍏ュ簱
-            if (taskWrk.getStartPoint() == null || taskWrk.getTargetPoint() == null) {
-                throw new CoolException("鏈帴鏀跺埌璧风偣鍜岀粓鐐癸紝涓嶈繘琛屾淳鍙�");
-            }
-            startup(taskWrk, userId);
-        }else if(taskWrk.getIoType() == 2){
-            //2.鍑哄簱
-            stockOut(taskWrk, userId);
-        } else if (taskWrk.getIoType() == 3) {
-            //3.搴撴牸绉昏浇
-            locMove(taskWrk, userId);
-        }
     }
 
     @Override
@@ -247,4 +232,63 @@
     public int saveToHistory(String taskNo) {
         return this.baseMapper.saveToHistory(taskNo);
     }
+
+    @Override
+    public R taskComplete(TaskWrk taskWrk) {
+        LocMast locMast = new LocMast();
+        switch (taskWrk.getIoType()) {
+                //鍏ュ簱
+            case 1:
+                taskWrk.setModiTime(new Date());
+                taskWrk.setWrkSts(6);//鍏ュ簱瀹屾垚--鍑嗗涓婃姤wms
+                locMast = locMastService.selectByLocNo(taskWrk.getOriginTargetPoint());
+                if (locMast == null) {
+                    return R.error("娌℃湁鎵惧埌璇ュ簱浣�="+taskWrk.getOriginTargetPoint());
+                }
+                locMast.setLocSts("F");
+                locMastService.updateById(locMast);
+                break;
+                //鍑哄簱
+            case 2:
+                if(taskWrk.getWrkSts()>=15){
+                    return R.ok();
+                }
+                taskWrk.setModiTime(new Date());
+                taskWrk.setWrkSts(15);//RCS鍑哄簱瀹屾垚--銆嬪啓鍏ヨ緭閫佺嚎宸ヤ綔鍙�
+                locMast = locMastService.selectByLocNo(taskWrk.getOriginStartPoint());
+                if (locMast == null) {
+                    return R.error("娌℃湁鎵惧埌璇ュ簱浣�="+taskWrk.getOriginStartPoint());
+                }
+                locMast.setLocSts("O");
+                locMastService.updateById(locMast);
+                log.info("RCS鍑哄簱浠诲姟瀹屾垚鏇存柊WCS浠诲姟鐘舵��={}",taskWrk);
+                break;
+                //绉诲簱
+//            case 3:
+//                taskWrk.setModiTime(new Date());
+//                taskWrk.setWrkSts(6);//鍏ュ簱瀹屾垚--鍑嗗涓婃姤wms
+//                //婧愬簱浣�
+//                locMast = locMastService.selectByLocNo(taskWrk.getOriginTargetPoint());
+//                if (locMast == null) {
+//                    return R.error("娌℃湁鎵惧埌璇ュ簱浣�="+taskWrk.getOriginTargetPoint());
+//                }
+//                locMast.setLocSts("F");
+//                locMastService.updateById(locMast);
+//                //鐩爣搴撲綅
+//                locMast = locMastService.selectByLocNo(taskWrk.getOriginStartPoint());
+//                if (locMast == null) {
+//                    return R.error("娌℃湁鎵惧埌璇ュ簱浣�="+taskWrk.getOriginStartPoint());
+//                }
+//                locMast.setLocSts("0");
+//                locMastService.updateById(locMast);
+//                return R.ok();
+//
+        }
+        if(taskWrkService.updateById(taskWrk)){
+            return R.ok();
+        }else {
+            return R.error("RCS浠诲姟涓婃姤瀹屾垚鏇存柊WCS浠诲姟鐘舵�佸け璐�"+taskWrk);
+        }
+
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 4df73f7..e36f948 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -47,165 +47,165 @@
     @Override
     @Transactional
     public void completeWrkMast(String workNo, Long userId) {
-        WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)) {
-            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
-        }
-        if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
-            throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
-        }
-        // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
-            wrkMast.setWrkSts(4L);
-            // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 10) {
-            wrkMast.setWrkSts(14L);
-        }
-        Date now = new Date();
-        wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
-        wrkMast.setCrnEndTime(now);
-        wrkMast.setModiTime(now);
-        wrkMast.setModiUser(userId);
-        // 瀹屾垚鎿嶄綔浜哄憳璁板綍
-        wrkMast.setManuType("鎵嬪姩瀹屾垚");
-        if (!wrkMastService.updateById(wrkMast)) {
-            throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
-        }
-
-        HashMap<String,Object> headParam = new HashMap<>();
-        headParam.put("TaskNo",wrkMast.getTaskNo());
-        headParam.put("Result",0);//瀹屾垚
-
-        try {
-            String response;
-            log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms={}", wrkMast);
-
-            response = new HttpHandler.Builder()
-                    // .setHeaders(headParam)
-                    .setUri(wmsUrl)
-                    .setPath(taskStatusFeedbackPath)
-                    .setJson(JSON.toJSONString(headParam))
-                    .build()
-                    .doPost();
-            apiLogService.save("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms"
-                    , wmsUrl + taskStatusFeedbackPath
-                    , null
-                    , "127.0.0.1"
-                    , JSON.toJSONString(headParam)
-                    , response
-                    , true
-            );
-        } catch (Exception e) {
-            log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms澶辫触={}", wrkMast);
-            log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
-//                        throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
-        }
+//        WrkMast wrkMast = wrkMastService.selectById(workNo);
+//        if (Cools.isEmpty(wrkMast)) {
+//            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+//        }
+//        if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
+//            throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+//        }
+//        // 鍏ュ簱 + 搴撲綅杞Щ
+//        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
+//            wrkMast.setWrkSts(4L);
+//            // 鍑哄簱
+//        } else if (wrkMast.getWrkSts() > 10) {
+//            wrkMast.setWrkSts(14L);
+//        }
+//        Date now = new Date();
+//        wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+//        wrkMast.setCrnEndTime(now);
+//        wrkMast.setModiTime(now);
+//        wrkMast.setModiUser(userId);
+//        // 瀹屾垚鎿嶄綔浜哄憳璁板綍
+//        wrkMast.setManuType("鎵嬪姩瀹屾垚");
+//        if (!wrkMastService.updateById(wrkMast)) {
+//            throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+//        }
+//
+//        HashMap<String,Object> headParam = new HashMap<>();
+//        headParam.put("TaskNo",wrkMast.getTaskNo());
+//        headParam.put("Result",0);//瀹屾垚
+//
+//        try {
+//            String response;
+//            log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms={}", wrkMast);
+//
+//            response = new HttpHandler.Builder()
+//                    // .setHeaders(headParam)
+//                    .setUri(wmsUrl)
+//                    .setPath(taskStatusFeedbackPath)
+//                    .setJson(JSON.toJSONString(headParam))
+//                    .build()
+//                    .doPost();
+//            apiLogService.save("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms"
+//                    , wmsUrl + taskStatusFeedbackPath
+//                    , null
+//                    , "127.0.0.1"
+//                    , JSON.toJSONString(headParam)
+//                    , response
+//                    , true
+//            );
+//        } catch (Exception e) {
+//            log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms澶辫触={}", wrkMast);
+//            log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
+////                        throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
+//        }
     }
 
     @Override
     @Transactional
     public void cancelWrkMast(String workNo, Long userId) {
-        Date now = new Date();
-        WrkMast wrkMast = wrkMastService.selectById(workNo);
-
-        String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
-        String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
-        // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
-        if (wrkMast.getWrkSts() < 4) {
-            locNo = wrkMast.getLocNo();
-            locSts = "O";
-
-            // 搴撲綅杞Щ
-            if (wrkMast.getIoType() == 11) {
-                // 搴撲綅杞Щ锛氭簮搴撲綅
-                LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
-                if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
-                }
-                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
-                locMast.setModiTime(now);
-                locMast.setModiUser(userId);
-                locMastService.updateById(locMast);
-            }
-            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
-        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
-            locNo = wrkMast.getSourceLocNo();
-            // 鍑哄簱 ===>> F.鍦ㄥ簱
-            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
-                locSts = "F";
-                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
-            } else if (wrkMast.getIoType() == 110) {
-                locSts = "D";
-                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
-            } else if (wrkMast.getIoType() == 11) {
-                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
-                // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
-                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-                if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
-                }
-                locMast.setLocSts("O");
-                locMast.setModiTime(now);
-                locMast.setModiUser(userId);
-                locMastService.updateById(locMast);
-            }
-        } else {
-            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
-        }
-        // 鍙栨秷鎿嶄綔浜哄憳璁板綍
-        wrkMast.setManuType("鎵嬪姩鍙栨秷");
-        wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(now);
-        if (!wrkMastService.updateById(wrkMast)) {
-            throw new CoolException("鍙栨秷浠诲姟澶辫触");
-        }
-        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
-            throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
-        }
-
-        // 鍒犻櫎宸ヤ綔涓绘。
-        boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
-
-        // 淇敼搴撲綅鐘舵��
-        LocMast locMast = locMastService.selectById(locNo);
-        if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷浠诲姟澶辫触锛屽簱浣嶄笉瀛樺湪:" + locNo);
-        }
-        locMast.setLocSts(locSts);
-        locMast.setModiTime(now);
-        locMast.setModiUser(userId);
-        boolean locMastRes = locMastService.updateById(locMast);
-        if (!wrkMastRes || !locMastRes) {
-            throw new CoolException("淇濆瓨鏁版嵁澶辫触");
-        }
-        HashMap<String,Object> headParam = new HashMap<>();
-        headParam.put("TaskNo",wrkMast.getTaskNo());
-        headParam.put("Result",1);//鍙栨秷
-
-        try {
-            String response;
-            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms={}", wrkMast);
-
-            response = new HttpHandler.Builder()
-                    // .setHeaders(headParam)
-                    .setUri(wmsUrl)
-                    .setPath(taskStatusFeedbackPath)
-                    .setJson(JSON.toJSONString(headParam))
-                    .build()
-                    .doPost();
-            apiLogService.save("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms"
-                    , wmsUrl + taskStatusFeedbackPath
-                    , null
-                    , "127.0.0.1"
-                    , JSON.toJSONString(headParam)
-                    , response
-                    , true
-            );
-        } catch (Exception e) {
-            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触={}", wrkMast);
-            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
-//                        throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
-        }
+//        Date now = new Date();
+//        WrkMast wrkMast = wrkMastService.selectById(workNo);
+//
+//        String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
+//        String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+//        // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+//        if (wrkMast.getWrkSts() < 4) {
+//            locNo = wrkMast.getLocNo();
+//            locSts = "O";
+//
+//            // 搴撲綅杞Щ
+//            if (wrkMast.getIoType() == 11) {
+//                // 搴撲綅杞Щ锛氭簮搴撲綅
+//                LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+//                if (Cools.isEmpty(locMast)) {
+//                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
+//                }
+//                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
+//                locMast.setModiTime(now);
+//                locMast.setModiUser(userId);
+//                locMastService.updateById(locMast);
+//            }
+//            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+//        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
+//            locNo = wrkMast.getSourceLocNo();
+//            // 鍑哄簱 ===>> F.鍦ㄥ簱
+//            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
+//                locSts = "F";
+//                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+//            } else if (wrkMast.getIoType() == 110) {
+//                locSts = "D";
+//                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+//            } else if (wrkMast.getIoType() == 11) {
+//                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
+//                // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
+//                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+//                if (Cools.isEmpty(locMast)) {
+//                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
+//                }
+//                locMast.setLocSts("O");
+//                locMast.setModiTime(now);
+//                locMast.setModiUser(userId);
+//                locMastService.updateById(locMast);
+//            }
+//        } else {
+//            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
+//        }
+//        // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+//        wrkMast.setManuType("鎵嬪姩鍙栨秷");
+//        wrkMast.setModiUser(userId);
+//        wrkMast.setModiTime(now);
+//        if (!wrkMastService.updateById(wrkMast)) {
+//            throw new CoolException("鍙栨秷浠诲姟澶辫触");
+//        }
+//        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+//        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+//            throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+//        }
+//
+//        // 鍒犻櫎宸ヤ綔涓绘。
+//        boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
+//
+//        // 淇敼搴撲綅鐘舵��
+//        LocMast locMast = locMastService.selectById(locNo);
+//        if (Cools.isEmpty(locMast)) {
+//            throw new CoolException("鍙栨秷浠诲姟澶辫触锛屽簱浣嶄笉瀛樺湪:" + locNo);
+//        }
+//        locMast.setLocSts(locSts);
+//        locMast.setModiTime(now);
+//        locMast.setModiUser(userId);
+//        boolean locMastRes = locMastService.updateById(locMast);
+//        if (!wrkMastRes || !locMastRes) {
+//            throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+//        }
+//        HashMap<String,Object> headParam = new HashMap<>();
+//        headParam.put("TaskNo",wrkMast.getTaskNo());
+//        headParam.put("Result",1);//鍙栨秷
+//
+//        try {
+//            String response;
+//            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms={}", wrkMast);
+//
+//            response = new HttpHandler.Builder()
+//                    // .setHeaders(headParam)
+//                    .setUri(wmsUrl)
+//                    .setPath(taskStatusFeedbackPath)
+//                    .setJson(JSON.toJSONString(headParam))
+//                    .build()
+//                    .doPost();
+//            apiLogService.save("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms"
+//                    , wmsUrl + taskStatusFeedbackPath
+//                    , null
+//                    , "127.0.0.1"
+//                    , JSON.toJSONString(headParam)
+//                    , response
+//                    , true
+//            );
+//        } catch (Exception e) {
+//            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触={}", wrkMast);
+//            log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
+////                        throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
+//        }
     }
 }
diff --git a/src/main/java/com/zy/asrs/task/AssignTasksRCSScheduler.java b/src/main/java/com/zy/asrs/task/AssignTasksRCSScheduler.java
index 3295e25..ccd60a7 100644
--- a/src/main/java/com/zy/asrs/task/AssignTasksRCSScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AssignTasksRCSScheduler.java
@@ -32,35 +32,41 @@
     private String wcsmovePath;
     @Value("${wcs.outboundTaskRequest}")
     private String wcsoutboundTaskRequest;
+    @Value("${wcs.inboundTaskApplyPathWcs}")
+    private String inboundTaskApplyPathWcs;
     @Value("${wms.TaskExecCallback}")
     private String TaskExecCallback;
     @Value("${wms.taskStatusFeedbackPath}")
     private String taskStatusFeedbackPath;
 
     /**
-     * 鑷姩娲惧彂鍑哄簱浠诲姟缁橰CS
+     * 鑷姩娲惧彂浠诲姟缁橰CS
      *
      * @throws IOException
      */
     @Scheduled(cron = "0/3 * * * * ? ")
     public void execute() throws IOException {
-        if(true){
+        if(false){
             List<TaskWrk> taskWrks=taskWrkService.selectList(new EntityWrapper<TaskWrk>()
-                    .eq("wrk_sts",1).eq("io_type",3));
+                    .eq("wrk_sts",1));
             for(TaskWrk taskWrk:taskWrks){
                 HashMap<String, Object> headParam = new HashMap<>();
                 String response = "";
                 Boolean bool = false;
                 String dz="";
-                if(taskWrk.getIoType()==2){
+                if(taskWrk.getIoType()==1){//鍏ュ簱
+                    dz=inboundTaskApplyPathWcs;
+                    headParam.put("sourceStaNo", taskWrk.getStartPoint());//婧愮珯
+                    headParam.put("staNo", taskWrk.getTargetPoint());//鐩爣绔�
+                }else if(taskWrk.getIoType()==2){//鍑哄簱
                     dz=wcsoutboundTaskRequest;
-                }else{
+                }else if(taskWrk.getIoType()==3){//绉诲簱
                     dz=wcsmovePath;
+                    headParam.put("sourceLocNo",taskWrk.getStartPoint());//婧愬簱浣�
                 }
                 try {
                     headParam.put("taskNo", taskWrk.getTaskNo());
-                    headParam.put("sourceLocNo",taskWrk.getStartPoint());//婧愬簱浣�
-                    headParam.put("locNo",taskWrk.getTargetPoint());//鐩爣搴撲綅
+                    headParam.put("locNo",taskWrk.getOriginTargetPoint());//鐩爣搴撲綅
                     log.info("wcs娲惧彂浠诲姟缁橰CS鍑哄簱={}", taskWrk);
                     response = new HttpHandler.Builder()
                             // .setHeaders(headParam)
@@ -71,8 +77,14 @@
                             .doPost();
                     JSONObject jsonObject = JSON.parseObject(response);
                     if(jsonObject.get("code").equals(200)){
-                        //娲惧彂鍑哄簱浠诲姟缁橰CS==>鎴愬姛涓嬪彂鍑哄簱浠诲姟
-                        taskWrk.setWrkSts(2);
+                        //娲惧彂浠诲姟缁橰CS==>鎴愬姛涓嬪彂鍑哄簱浠诲姟
+                        if(taskWrk.getIoType()==1){
+                            taskWrk.setWrkSts(3);
+                        }else if(taskWrk.getIoType()==2){
+                            taskWrk.setWrkSts(12);
+                        }else if(taskWrk.getIoType()==3){
+                            taskWrk.setWrkSts(3);
+                        }
                         taskWrkService.updateById(taskWrk);
                         bool = true;
                     }
diff --git a/src/main/java/com/zy/asrs/task/AutoReportStartHandler.java b/src/main/java/com/zy/asrs/task/AutoReportStartHandler.java
index da82e80..b8fdbcb 100644
--- a/src/main/java/com/zy/asrs/task/AutoReportStartHandler.java
+++ b/src/main/java/com/zy/asrs/task/AutoReportStartHandler.java
@@ -102,7 +102,7 @@
                                 .doPost();
                         JSONObject jsonObject = JSON.parseObject(response);
                         Boolean bool = false;
-                        if(jsonObject.get("ReturnStatus").equals(0)){
+                        if(jsonObject.get("ReturnStatus").equals("0")){
                             bool = true;
                             taskWrk.setMarkStart(1);
                             taskWrk.setStatus(2);
diff --git a/src/main/java/com/zy/asrs/task/GetshuttlerStatusScheduler.java b/src/main/java/com/zy/asrs/task/GetshuttlerStatusScheduler.java
new file mode 100644
index 0000000..3ddec82
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/GetshuttlerStatusScheduler.java
@@ -0,0 +1,94 @@
+package com.zy.asrs.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.BasShuttle;
+import com.zy.asrs.entity.TaskWrk;
+import com.zy.asrs.entity.param.GetShuttleStatusParam;
+import com.zy.asrs.entity.param.Result;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.BasShuttleService;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+
+@Slf4j
+@Component
+public class GetshuttlerStatusScheduler {
+    @Value("${wcs.urlWcs}")
+    private String wcsUrl;
+    @Value("${wcs.shuttleStatus}")
+    private String shuttleStatus;
+    @Autowired
+    private ApiLogService apiLogService;
+    @Autowired
+    private BasShuttleService basShuttleService;
+    /**
+     * 鑾峰彇rcs灏忚溅淇℃伅
+     *
+     * @throws IOException
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void execute() throws IOException {
+        String response = "";
+        Boolean bool = false;
+        try {
+//            log.info("wcs鑾峰彇rcs灏忚溅淇℃伅");
+            response = new HttpHandler.Builder()
+                    // .setHeaders(headParam)
+                    .setUri(wcsUrl)
+                    .setPath(shuttleStatus)
+                    .setJson(JSON.toJSONString(""))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.get("code").equals(200)) {
+                JSONObject data = JSON.parseObject(jsonObject.get("data").toString());
+                List<GetShuttleStatusParam> shuttles = JSON.parseArray(data.get("shuttle").toString(), GetShuttleStatusParam.class);
+                for (GetShuttleStatusParam shuttle : shuttles) {
+                    //瀵瑰皬杞︿簩缁寸爜杩涜澶勭悊
+                    Integer lev=1;
+                    //灏忚溅妯″紡
+                    Integer mode=0;
+                    //灏忚溅鏄惁鍦ㄥ厖鐢�
+                    Integer autoCharge=0;
+                    if(!Cools.isEmpty(shuttle.getCurrentCode())){
+                        JSONObject jsonObject1 = JSON.parseObject(shuttle.getCurrentCode());
+                        lev=jsonObject1.getInteger("z");
+                    }
+                    if(!Cools.isEmpty(shuttle.getMode())){
+                        mode=shuttle.getMode();
+                    }
+                    if(!Cools.isEmpty(shuttle.getHasCharge())&&shuttle.getHasCharge()){
+                        mode=2;
+                    }
+
+                    BasShuttle shuttle1 = basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttle.getShuttleNo()));
+                    shuttle1.setStatus(mode);//灏忚溅妯″紡
+                    shuttle1.setShuttleStatus(shuttle.getProtocolStatus());//灏忚溅鐘舵��
+                    shuttle1.setDeviceStatus(shuttle.getProtocolStatus$());//灏忚溅鐘舵�佷腑鏂囩増
+                    shuttle1.setChargeLine(lev);//灏忚溅鎵�鍦ㄥ眰
+                    shuttle1.setErrorCode(shuttle.getErrorCode());//寮傚父鐮�
+                    basShuttleService.updateById(shuttle1);
+                }
+
+                bool = true;
+            }
+        } catch (Exception e) {
+            log.error("wcs鑾峰彇灏忚溅鐘舵�佸け璐�");
+        }
+
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/RepositionLED.java b/src/main/java/com/zy/asrs/task/RepositionLED.java
index 793586e..1792a10 100644
--- a/src/main/java/com/zy/asrs/task/RepositionLED.java
+++ b/src/main/java/com/zy/asrs/task/RepositionLED.java
@@ -84,7 +84,7 @@
      * 涓婃姤WMS璐х墿鎼
      * @throws IOException
      */
-    @Scheduled(cron = "0/3 * * * * ? ")
+//    @Scheduled(cron = "0/3 * * * * ? ")
     public void execute() throws IOException {
         List<TaskWrk> taskWrks=taskWrkService.selectList(new EntityWrapper<TaskWrk>().eq("wrk_sts",17));
         for(TaskWrk taskWrk:taskWrks){
diff --git a/src/main/java/com/zy/asrs/task/TaskLogScheduler.java b/src/main/java/com/zy/asrs/task/TaskLogScheduler.java
index 01eb951..f6cf40e 100644
--- a/src/main/java/com/zy/asrs/task/TaskLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -65,7 +65,13 @@
     @Scheduled(cron = "0/3 * * * * ? ")
     public void execute() throws IOException {
         //鍏ュ簱7杞巻鍙叉。,绉诲簱7杞巻鍙叉。,鍑哄簱18杞�
-        List<TaskWrk> taskWrkList = taskWrkService.selectList(new EntityWrapper<TaskWrk>().in("wrk_sts", 7,18));
+        List<TaskWrk> taskWrkList = taskWrkService.selectList(new EntityWrapper<TaskWrk>()
+                .in("wrk_sts", 7,17)
+                .or()
+                .in("status",5,7));//鍙栨秷鎴栬�呭畬缁�
+        if(taskWrkList.size() == 0){
+            return;
+        }
         for (TaskWrk taskWrk : taskWrkList) {
             TaskWrkLog taskWrkLog = new TaskWrkLog(taskWrk);
             if(taskWrkLog.getIoType().equals(1)){
@@ -79,6 +85,16 @@
                 }
             }else if(taskWrkLog.getIoType().equals(2)){
                 BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("wrk_no",taskWrk.getWrkNo()));
+                if(taskWrk.getWrkNo()>=3001&&taskWrk.getWrkNo()<=6000){
+                    taskWrkLog.setWrkSts(18);
+                    taskWrkLog.setModiTime(new Date());
+                    if (!wrkLogService.insert(taskWrkLog)) {
+                        throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+                    }
+                    if (!taskWrkService.deleteById(taskWrk)) {
+                        throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
+                    }
+                }
                 if(basDevp==null){
                     HashMap<Object, Object> headParam = new HashMap<>();
                     String response = "";
@@ -95,6 +111,14 @@
                                 .doPost();
                         JSONObject jsonObject = JSON.parseObject(response);
                         if(jsonObject.get("ReturnStatus").equals(0)){
+                            taskWrkLog.setWrkSts(18);
+                            taskWrkLog.setModiTime(new Date());
+                            if (!wrkLogService.insert(taskWrkLog)) {
+                                throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+                            }
+                            if (!taskWrkService.deleteById(taskWrk)) {
+                                throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
+                            }
                         }
                     } catch (Exception e){
                         log.error("wcs鎼鍑哄簱缁檞ms澶辫触{},杩斿洖鍊�={}", taskWrk, response);
diff --git a/src/main/java/com/zy/asrs/task/TaskMastScheduler.java b/src/main/java/com/zy/asrs/task/TaskMastScheduler.java
index eb5210a..85c3b74 100644
--- a/src/main/java/com/zy/asrs/task/TaskMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/TaskMastScheduler.java
@@ -61,74 +61,45 @@
     public void execute() throws IOException {
         for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) {
             HashMap<String, Object> headParam = new HashMap<>();
-            String s="";//鏃ュ織鏍囪瘑
+            String s = "";//鏃ュ織鏍囪瘑
             if (taskWrk.getWrkSts() == 6) {//鍏ュ簱瀹屾垚
                 headParam.put("Result", 1);
-                s="鍏ュ簱瀹屾垚";
-                taskWrk.setStatus(7);//鍏ュ簱浠诲姟杞巻鍙叉。6--銆�7
+                s = "鍏ュ簱瀹屾垚";
+                taskWrk.setWrkSts(7);//鍏ュ簱浠诲姟杞巻鍙叉。6--銆�7
             } else if (taskWrk.getWrkSts() == 16) {//鍑哄簱瀹屾垚-寰呮惉绂�
                 headParam.put("Result", 1);
-                s="鍑哄簱瀹屾垚-寰呮惉绂�";
+                s = "鍑哄簱瀹屾垚-寰呮惉绂�";
                 taskWrk.setWrkSts(17);//鍑哄簱浠诲姟16--銆�17
-            } else if (taskWrk.getWrkSts().equals(30)) {//鍙栨秷
-                s="鍙栨秷";
+            } else if (taskWrk.getStatus().equals(4)) {//鍙栨秷浠诲姟涓婃姤wms
+                s = "鍙栨秷";
+                taskWrk.setStatus(5);//鍙栨秷浠诲姟
                 headParam.put("Result", 2);
-                taskWrk.setWrkSts(31);//鍙栨秷浠诲姟30--銆�31
+            } else if (taskWrk.getStatus().equals(6)) {//瀹岀粨浠诲姟涓婃姤wms
+                s = "鎵嬪姩瀹屾垚";
+                taskWrk.setStatus(7);//瀹岀粨
+                headParam.put("Result", 1);
             }
             String response = "";
             Boolean bool = false;
             try {
                 headParam.put("TaskNo", taskWrk.getTaskNo());
-                log.info("wcs"+s+"浠诲姟涓婃姤wms={}", taskWrk);
+                log.info("wcs" + s + "浠诲姟涓婃姤wms={}", taskWrk);
                 response = new HttpHandler.Builder()
-                        // .setHeaders(headParam)
+                        // .setHeaders(headPraam)
                         .setUri(wmsUrl)
                         .setPath(TaskExecCallback)
                         .setJson(JSON.toJSONString(headParam))
                         .build()
                         .doPost();
                 JSONObject jsonObject = JSON.parseObject(response);
-                Date date=new Date();
-                if(jsonObject.get("ReturnStatus").equals(0)){
-                    if(taskWrk.getIoType().equals(1)){//鍏ュ簱
-                        LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());//鐩爣搴撲綅
-                        if(locMast != null){
-                            locMast.setLocSts("F");
-                            locMast.setBarcode(taskWrk.getBarcode());
-                            locMast.setModiTime(date);
-                            locMastService.updateById(locMast);
-                        }
-                    }else if(taskWrk.getIoType().equals(3)){//绉诲簱
-                        LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());//鐩爣搴撲綅
-                        if(locMast != null){
-                            locMast.setLocSts("F");
-                            locMast.setBarcode(taskWrk.getBarcode());
-                            locMast.setModiTime(date);
-                            locMastService.updateById(locMast);
-                        }
-                        LocMast locMast2 = locMastService.selectByLocNo(taskWrk.getStartPoint());//鍘熷搴撲綅
-                        if(locMast2 != null){
-                            locMast2.setLocSts("O");
-                            locMast2.setBarcode("");
-                            locMast.setModiTime(date);
-                            locMastService.updateById(locMast2);
-                        }
-                    }else if(taskWrk.getIoType().equals(2)){//鍑哄簱
-                        LocMast locMast2 = locMastService.selectByLocNo(taskWrk.getStartPoint());//鍘熷搴撲綅
-                        if(locMast2 != null){
-                            locMast2.setLocSts("O");
-                            locMast2.setBarcode("");
-                            locMast2.setModiTime(date);
-                            locMastService.updateById(locMast2);
-                        }
-                    }
+                if (jsonObject.get("ReturnStatus").equals("0")) {
                     taskWrkService.updateById(taskWrk);
                     bool = true;
                 }
             } catch (Exception e) {
-                log.error("wcs"+s+"浠诲姟涓婃姤wms澶辫触={},杩斿洖鍊�={}", taskWrk, response);
+                log.error("wcs" + s + "浠诲姟涓婃姤wms澶辫触={},杩斿洖鍊�={}", taskWrk, response);
             } finally {
-                apiLogService.save("wcs"+s+"浠诲姟涓婃姤wms"
+                apiLogService.save("wcs" + s + "浠诲姟涓婃姤wms"
                         , wmsUrl + TaskExecCallback
                         , null
                         , "127.0.0.1"
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 91ae550..2e95470 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -427,7 +427,12 @@
     }
 
     public static String Fusion(int x, int y, int z){
-        String locNo="0"+x;
+        String locNo ="";
+        if(x>=10){
+            locNo=x+"";
+        }else{
+            locNo="0"+x;
+        }
         if(z>=10){
             locNo=locNo+"0"+z;
         }else{
diff --git a/src/main/java/com/zy/common/config/RedisConfig.java b/src/main/java/com/zy/common/config/RedisConfig.java
index d356517..cf99252 100644
--- a/src/main/java/com/zy/common/config/RedisConfig.java
+++ b/src/main/java/com/zy/common/config/RedisConfig.java
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.cache.annotation.CachingConfigurerSupport;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.*;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@@ -14,7 +15,7 @@
  * Redis閰嶇疆绫�
  * Created by vincent on 2019-12-23
  */
-//@Configuration
+@Configuration
 //@EnableCaching // 寮�鍚暟鎹紦瀛樻満鍒�
 public class RedisConfig extends CachingConfigurerSupport {
 
diff --git a/src/main/java/com/zy/common/utils/HttpHandler.java b/src/main/java/com/zy/common/utils/HttpHandler.java
index b305399..438ea88 100644
--- a/src/main/java/com/zy/common/utils/HttpHandler.java
+++ b/src/main/java/com/zy/common/utils/HttpHandler.java
@@ -15,7 +15,7 @@
  */
 public class HttpHandler {
 
-    private static final Integer DEFAULT_TIMEOUT_SECONDS = 5;
+    private static final Integer DEFAULT_TIMEOUT_SECONDS = 10;
     private static final MediaType MEDIA_TYPE = MediaType.parse("application/json");
 
     private String uri;
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index b4df374..4d982b7 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -36,7 +36,7 @@
                 try {
 
                     // 闂撮殧
-                    Thread.sleep(1000);
+                    Thread.sleep(500);
 
                     // 绯荤粺杩愯鐘舵�佸垽鏂�
                     if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
@@ -47,12 +47,19 @@
 //                    mainService.crnDemoOfLocMove1();
                     // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
                     mainService.generateStoreWrkFile1(); // 缁勬墭
+                    //鍏ュ簱  ===>> 绌烘澘鍏ュ簱
+                    mainService.EmptyPlates();//绌烘澘鍏ュ簱
                     // 鍏ュ嚭搴�  ===>>  璋冪敤RCS杩涜鍏ュ嚭搴�
                     mainService.crnIoExecute();
-                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
-//                    mainService.crnStnToOutStn();
+                    // 鍑哄簱  ===>>  鎻愬崌鏈哄嚭搴撶珯鍒板嚭搴撶珯
+                    mainService.crnStnToOutStn();
+
                     // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-//                    mainService.storeFinished();
+                    mainService.storeFinished();
+                    // 鍏ュ簱  ===>> 鎷f枡鐩樼偣鍐嶅叆搴�
+                    mainService.stnToCrnStnPick(1);
+
+                    mainService.scanForkLift();
 
                     // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
 //                    mainService.recCrnErr();
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a380bef..6bba288 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -373,11 +373,11 @@
         //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
         boolean writeFlag = false;
         while(writeCount < 5){
-            OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6,  staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
-            OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 鐩爣绔�
+            OperateResult writeResult1 = siemensS7Net.Write("DB1000." + index*8,  staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
+            OperateResult writeResult2 = siemensS7Net.Write("DB1000." + (index*8+4), staProtocol.getStaNo());    // 鐩爣绔�
             if(writeResult1.IsSuccess && writeResult2.IsSuccess){
                 Thread.sleep(200);
-                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*6, (short)6);
+                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + index*8, (short)6);
                 if(readResult.IsSuccess){
                     Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
                     short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 226b951..718a566 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -21,6 +21,10 @@
       staNo: 100
     outSta[1]: #鍑哄簱鍙�2
       staNo: 200
+    pickSta[0]:
+      staNo: 100
+    pickSta[1]:
+      staNo: 200
   barcode[0]: #鏉$爜鎵弿浠�
     port: 51236
     ip: 172.17.91.39
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 2922d22..2316b9e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,7 +8,7 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=lfdwcs_sxc
+    url: jdbc:sqlserver://192.168.0.17:1433;databasename=lfdwcs_sxc
     username: sa
     password: sa@123
   mvc:
@@ -16,7 +16,7 @@
   redis:
     host: localhost
     port: 6379
-    database: 0
+    database: 6
 #    password: xltys1995
   profiles:
     active: prod
@@ -50,7 +50,7 @@
   #url: 10.32.53.195:8080
   # WMS绯荤粺ip
   #  url: 10.210.157.109:8090
-  url: 127.0.0.1:8081
+  url: 127.0.0.1:8081/lfdsxkwms
   # 鍏ュ簱浠诲姟鐢宠鎺ュ彛
   #inboundTaskApplyPath: api/InterFace/inboundTaskApply
   inboundTaskApplyPath: rpc/pakin/loc/v1
@@ -63,11 +63,15 @@
   taskLeave : open/asrs/leave/task
   # 绉诲簱鐢宠鎺ュ彛
   movePath: api/InterFace/get_InterFace_TestStorage
+  # 鎷f枡鐩樼偣鍥炲簱涓婃姤
+  returnWarehouse : rpc/pakin/loc/returnWarehouse
 wcs:
-  urlWcs: 127.0.0.1:9091/wcs
+  urlWcs: 127.0.0.1:9091/rcs
   #鍏ュ簱浠诲姟鐢宠
   inboundTaskApplyPathWcs: openapi/createInTask
   #鍑哄簱浠诲姟鐢宠
   outboundTaskRequest : openapi/createOutTask
   # 绉诲簱鐢宠鎺ュ彛
   movePathWcs: openapi/createLocMoveTask
+  # 鑾峰彇灏忚溅淇℃伅
+  shuttleStatus: openapi/deviceStatus
diff --git a/src/main/resources/mapper/BasShuttleMapper.xml b/src/main/resources/mapper/BasShuttleMapper.xml
index 5e44550..e0048f0 100644
--- a/src/main/resources/mapper/BasShuttleMapper.xml
+++ b/src/main/resources/mapper/BasShuttleMapper.xml
@@ -21,6 +21,7 @@
         <result column="run_speed" property="runSpeed" />
         <result column="device_status" property="deviceStatus" />
         <result column="disable_lev" property="disableLev" />
+        <result column="errorCode" property="errorCode" />
 
     </resultMap>
 
diff --git a/src/main/resources/mapper/TaskWrkMapper.xml b/src/main/resources/mapper/TaskWrkMapper.xml
index 7369647..6f780b4 100644
--- a/src/main/resources/mapper/TaskWrkMapper.xml
+++ b/src/main/resources/mapper/TaskWrkMapper.xml
@@ -25,6 +25,8 @@
         <result column="command_step" property="commandStep" />
         <result column="transfer_mark" property="transferMark" />
         <result column="mark_start" property="markStart"/>
+        <result column="origin_start_point" property="originStartPoint"/>
+        <result column="origin_target_point" property="originTargetPoint"/>
 
     </resultMap>
     
@@ -50,10 +52,10 @@
     <select id="selectPakIn" resultMap="BaseResultMap">
         select top 1 * from dbo.wcs_task_wrk
         where status=2
-        and crn_no=#{crnNo}
         and wrk_no=#{workNo}
         and start_point=#{startPoint}
         and io_type=1
+        and wrk_sts= 2
         order by io_pri desc,create_time,wrk_no ASC
     </select>
 
@@ -81,10 +83,8 @@
 
     <select id="selectPakOut" resultMap="BaseResultMap">
         select * from dbo.wcs_task_wrk
-        where crn_no=#{crnNo}
-        <if test="targetPoint!=null and targetPoint!='' ">
-            and target_point=#{targetPoint}
-        </if>
+        where
+            target_point=#{targetPoint}
         and wrk_sts=11
         and io_type = 2
         order by io_pri desc,create_time,wrk_no ASC
@@ -119,7 +119,7 @@
     <select id="selectToBeHistoryData" resultMap="BaseResultMap">
         select * from dbo.wcs_task_wrk
         where 1=1
-        and (wrk_sts=16 or wrk_sts=7 or wrk_sts=30)
+        and (wrk_sts=6 or wrk_sts=16 or status=4 or status=5)
         order by io_pri desc,create_time,wrk_no ASC
     </select>
 
diff --git a/src/main/webapp/static/wcs/images/logo.png b/src/main/webapp/static/wcs/images/logo.png
index 11b4dad..71dd632 100644
--- a/src/main/webapp/static/wcs/images/logo.png
+++ b/src/main/webapp/static/wcs/images/logo.png
Binary files differ
diff --git a/src/main/webapp/static/wms/image/logo.png b/src/main/webapp/static/wms/image/logo.png
index 11b4dad..71dd632 100644
--- a/src/main/webapp/static/wms/image/logo.png
+++ b/src/main/webapp/static/wms/image/logo.png
Binary files differ

--
Gitblit v1.9.1