From a936c187f9d7f389a711e001739384dcbd9278e2 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 31 三月 2025 13:50:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/LocMastController.java       |    1 
 src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java        |   95 ++++++
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java       |   50 +++
 src/main/java/com/zy/asrs/controller/OpenController.java          |  136 +++++---
 src/main/java/com/zy/asrs/task/GetEquipmentStatus.java            |   74 ++++
 src/main/java/com/zy/asrs/entity/result/StorageResult.java        |    3 
 src/main/resources/mapper/LocDetlMapper.xml                       |    2 
 src/main/resources/mapper/WrkMastMapper.xml                       |    3 
 src/main/java/com/zy/asrs/entity/BasCrnp.java                     |    4 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java        |   30 +-
 src/main/java/com/zy/common/web/WcsController.java                |  239 +++++++++++----
 pom.xml                                                           |    2 
 src/main/java/com/zy/asrs/entity/param/CarryParam.java            |   46 +++
 src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java |   91 ++++++
 src/main/java/com/zy/common/web/param/SearchLocParam.java         |    5 
 src/main/java/com/zy/asrs/entity/LocDetl.java                     |    2 
 src/main/java/com/zy/asrs/task/OutWorkScheduler.java              |   41 ++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java       |    8 
 src/main/java/com/zy/asrs/entity/Mat.java                         |    4 
 src/main/java/com/zy/asrs/controller/MatController.java           |    2 
 src/main/webapp/static/js/common.js                               |    2 
 src/main/java/com/zy/asrs/controller/OutController.java           |   47 ++
 src/main/resources/application.yml                                |   12 
 src/main/webapp/static/image/logo.png                             |    0 
 24 files changed, 735 insertions(+), 164 deletions(-)

diff --git a/pom.xml b/pom.xml
index 095d9cd..4c54898 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,7 +114,7 @@
     </dependencies>
 
     <build>
-        <finalName>htwms</finalName>
+        <finalName>lfdsxkwms</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index 5a9fba3..bbcb7e9 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -64,6 +64,7 @@
         if (!Cools.isEmpty(orderByField)) {
             wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
         }
+        wrapper.orderBy("loc_attribute",false);
         return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 41e0df1..bda8320 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -89,7 +89,7 @@
     public R pdaSearch(@RequestParam(required = false) String condition) {
         EntityWrapper<Mat> wrapper = new EntityWrapper<>();
         if (!Cools.isEmpty(condition)) {
-            wrapper.like("matnr", condition).or().like("maktx", condition);
+            wrapper.like("matnr", condition).or().like("maktx", condition).or().like("specs", condition);
         }
         wrapper.orderBy("create_time", false);
         List<Mat> mats = matService.selectList(wrapper);
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 4217e4e..24bd3a6 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -8,6 +8,7 @@
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.OpenService;
+import com.zy.asrs.service.WorkService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.common.model.DetlDto;
 import com.zy.common.web.BaseController;
@@ -38,12 +39,14 @@
     private OpenService openService;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private WorkService workService;
 
     @PostMapping("/order/matSync/default/v1")
     @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
     public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey,
                                       @RequestBody(required = false) MatSyncParam param,
-                                      HttpServletRequest request){
+                                      HttpServletRequest request) {
         auth(appkey, param, request);
         if (Cools.isEmpty(param)) {
             return R.parse(BaseRes.PARAM);
@@ -218,30 +221,30 @@
      * 浠诲姟寮�濮�
      */
     @RequestMapping("/start/task")
-    public HashMap<String ,Object> startTask(@RequestBody HashMap<String,Object> map) {
-        String taskNo = map.get("TaskNo")+"";
-        HashMap<String ,Object> map1 = new HashMap<>();
-        if(Cools.isEmpty(taskNo)){
+    public HashMap<String, Object> startTask(@RequestBody HashMap<String, Object> map) {
+        String taskNo = map.get("TaskNo") + "";
+        HashMap<String, Object> map1 = new HashMap<>();
+        if (Cools.isEmpty(taskNo)) {
             map1.put("ReturnStatus", "1");
             map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�");
-        }else{
-            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo)));
-            if(wrkMast == null){
+        } else {
+            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+            if (wrkMast == null) {
                 map1.put("ReturnStatus", "1");
-                map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�"+taskNo);
-            }else{
-                if(wrkMast.getIoType()==1){
+                map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+            } else {
+                if (wrkMast.getIoType() == 1) {
                     wrkMast.setWrkSts(3L);//鍏ュ簱寮�濮�
-                }else if(wrkMast.getIoType()==11){
+                } else if (wrkMast.getIoType() == 11) {
                     wrkMast.setWrkSts(13L);//鍑哄簱寮�濮�
                 }
                 wrkMast.setModiTime(new Date());
-                if(wrkMastService.updateById(wrkMast)){
+                if (wrkMastService.updateById(wrkMast)) {
                     map1.put("ReturnStatus", "0");
                     map1.put("ErrorMessage", "");
-                }else{
+                } else {
                     map1.put("ReturnStatus", "1");
-                    map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast);
+                    map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast);
                 }
             }
         }
@@ -252,62 +255,97 @@
      * 鎼繍鍒扮洰鐨勫湴
      */
     @RequestMapping("/destination/task")
-    public HashMap<String ,Object> destinationTask(@RequestBody HashMap<String,Object> map) {
-        String taskNo = map.get("TaskNo")+"";
-        HashMap<String ,Object> map1 = new HashMap<>();
-        if(Cools.isEmpty(taskNo)){
+    public HashMap<String, Object> destinationTask(@RequestBody HashMap<String, Object> map) {
+        String taskNo = map.get("TaskNo") + "";
+        HashMap<String, Object> map1 = new HashMap<>();
+        if (Cools.isEmpty(taskNo)) {
             map1.put("ReturnStatus", "1");
             map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�");
-        }else{
-            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo)));
-            if(wrkMast == null){
-                map1.put("ReturnStatus", "1");
-                map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�"+taskNo);
-            }else{
-                if(wrkMast.getIoType()==1){
-                    wrkMast.setWrkSts(4L);//浠诲姟缁撴潫
-                }else if(wrkMast.getIoType()==11){
-                    wrkMast.setWrkSts(13L);//鍑哄簱鍒扮珯鐐逛笂
-                }
-                wrkMast.setModiTime(new Date());
-                if(wrkMastService.updateById(wrkMast)){
-                    map1.put("ReturnStatus", "0");
-                    map1.put("ErrorMessage", "");
-                }else{
+        } else {
+            //浠诲姟瀹屾垚
+            if (map.get("Result").equals(1)) {
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+                if (wrkMast == null) {
                     map1.put("ReturnStatus", "1");
-                    map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast);
+                    map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+                } else {
+                    if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10) {
+                        wrkMast.setWrkSts(4L);//浠诲姟缁撴潫
+                    } else if (wrkMast.getIoType() == 101) {
+                        wrkMast.setWrkSts(13L);//鍑哄簱鍒扮珯鐐逛笂
+                    } else if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) {
+                        wrkMast.setWrkSts(4L);//4.浠诲姟缁撴潫
+                    } else if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) {
+                        wrkMast.setWrkSts(14L);
+                    }
+                    wrkMast.setModiTime(new Date());
+                    if (wrkMastService.updateById(wrkMast)) {
+                        map1.put("ReturnStatus", "0");
+                        map1.put("ErrorMessage", "");
+                    } else {
+                        map1.put("ReturnStatus", "1");
+                        map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast);
+                    }
                 }
+            } else {
+                //浠诲姟鍙栨秷
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+                if (wrkMast == null) {
+                    map1.put("ReturnStatus", "1");
+                    map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+                    return map1;
+                }
+                workService.cancelWrkMast(String.valueOf(wrkMast.getWrkNo()),9999L);
             }
         }
         return map1;
     }
 
     /**
-     * 鎼繍鍒扮洰鐨勫湴
+     * 鍑哄簱---鐩殑鍦版惉绂�
      */
     @RequestMapping("/leave/task")
-    public HashMap<String ,Object> leaveTask(@RequestBody HashMap<String,Object> map) {
-        String taskNo = map.get("TaskNo")+"";
-        HashMap<String ,Object> map1 = new HashMap<>();
-        if(Cools.isEmpty(taskNo)){
+    public HashMap<String, Object> leaveTask(@RequestBody HashMap<String, Object> map) {
+        String taskNo = map.get("TaskNo") + "";
+        HashMap<String, Object> map1 = new HashMap<>();
+        if (Cools.isEmpty(taskNo)) {
             map1.put("ReturnStatus", "1");
             map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�");
-        }else{
-            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo)));
-            if(wrkMast == null){
+        } else {
+
+            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+            if (wrkMast == null) {
                 map1.put("ReturnStatus", "1");
-                map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�"+taskNo);
-            }else{
+                map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+                return map1;
+            }
+            if ((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) && wrkMast.getWrkSts() != 14) {
                 wrkMast.setWrkSts(14L);//鍑哄簱鍒扮珯鐐逛笂
                 wrkMast.setModiTime(new Date());
-                if(wrkMastService.updateById(wrkMast)){
+                if (wrkMastService.updateById(wrkMast)) {
                     map1.put("ReturnStatus", "0");
                     map1.put("ErrorMessage", "");
-                }else{
+                } else {
                     map1.put("ReturnStatus", "1");
-                    map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast);
+                    map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast);
+                }
+            } else if (wrkMast.getIoType() != 101) {
+                map1.put("ReturnStatus", "0");
+                map1.put("ErrorMessage", "");
+                return map1;
+            } else {
+                wrkMast.setWrkSts(14L);//鍑哄簱鍒扮珯鐐逛笂
+                wrkMast.setModiTime(new Date());
+                if (wrkMastService.updateById(wrkMast)) {
+                    map1.put("ReturnStatus", "0");
+                    map1.put("ErrorMessage", "");
+                } else {
+                    map1.put("ReturnStatus", "1");
+                    map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast);
                 }
             }
+
+
         }
         return map1;
     }
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 0d2ba7d..2853918 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -1,16 +1,19 @@
 package com.zy.asrs.controller;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.TaskDto;
 import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -23,7 +26,7 @@
 /**
  * Created by vincent on 2022/3/26
  */
-
+@Slf4j
 @RestController
 public class OutController extends BaseController {
 
@@ -66,17 +69,37 @@
             if (issued <= 0.0D) { continue; }
             List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
             for (LocDetl locDetl : locDetls) {
-                if (issued > 0) {
-                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
-                    List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
-                    locDto.setStaNos(staNos);
-                    locDtos.add(locDto);
-                    exist.add(locDetl.getLocNo());
-                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
-                    issued = issued - locDetl.getAnfme();
-                } else {
-                    break;
+                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
+                if(locMast==null){
+                    R.error("娌℃湁鎵惧埌璇ュ簱浣嶏細"+locDetl.getLocNo());
+                }
+                List<LocMast> locMasts=locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("group1",locMast.getGroup1())
+                        .eq("loc_sts","F")
+                        .orderBy("loc_attribute",false));
+                for (LocMast locMast1 : locMasts) {
+                    LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast1.getLocNo()));
+                    if(locDetl1==null){
+                        return R.error(locMast1.getLocNo()+"娌℃湁鎵惧埌鐗╂枡");
+                    }
+                    if (!locDetl1.getMatnr().equals(locDetl.getMatnr())) {
+                        log.error(locMast1.getGroup1()+"宸烽亾鐨勭"+locMast1.getLocAttribute()+"娣辨祬搴撲綅鍙峰拰鍚屽贩閬撶墿鏂欎笉鍚�");
+                        break;
+                    }
+                    if (issued > 0) {
+                        LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(),
+                                issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued);
+                        List<Integer> staNos = new ArrayList<>();
+                        staNos.add(100);
+                        staNos.add(200);
+                        locDto.setStaNos(staNos);
+                        locDtos.add(locDto);
+                        exist.add(locDetl.getLocNo());
+                        // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                        issued = issued - locDetl.getAnfme();
+                    } else {
+                        break;
+                    }
                 }
             }
             if (issued > 0) {
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java
index eb4f9df..8d368db 100644
--- a/src/main/java/com/zy/asrs/entity/BasCrnp.java
+++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java
@@ -50,8 +50,8 @@
     /**
      * 鐘舵��
      * 1.鑱旀満
-     * 2.鎵嬪姩
-     * 3.鍏呯數涓�
+     * 0.鎵嬪姩
+     * 2.鍏呯數涓�
      */
     @ApiModelProperty(value= "鐘舵��")
     @TableField("crn_sts")
diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java
index 0556824..0b63f8a 100644
--- a/src/main/java/com/zy/asrs/entity/LocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -67,7 +67,7 @@
     @ApiModelProperty(value= "鍗曚綅")
     private String unit;
 
-    @ApiModelProperty(value= "鍗曚环")
+    @ApiModelProperty(value= "搴撳瓨鏁伴噺")
     private Double price;
 
     @ApiModelProperty(value= "sku")
diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java
index edeaf84..e77a43b 100644
--- a/src/main/java/com/zy/asrs/entity/Mat.java
+++ b/src/main/java/com/zy/asrs/entity/Mat.java
@@ -86,10 +86,10 @@
     private String specs;
 
     /**
-     * 鍨嬪彿
+     * 鍥惧彿
      */
     @ApiModelProperty(value= "鍨嬪彿")
-    @ExcelProperty(value = "鍨嬪彿")
+    @ExcelProperty(value = "鍥惧彿")
     private String model;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/param/CarryParam.java b/src/main/java/com/zy/asrs/entity/param/CarryParam.java
new file mode 100644
index 0000000..63dc5ce
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/CarryParam.java
@@ -0,0 +1,46 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class CarryParam {
+    //宸ヤ綔鍙�
+    private String TaskNo;
+
+    //鍏ュ嚭搴撶被鍨�
+    private Integer StereoscopicTaskType;
+
+    //浼樺厛绾�
+    private Integer Priority;
+
+    //瀹瑰櫒缂栫爜
+    private String BoxNo;
+
+    //婧愯揣浣嶆帓缂栧彿
+    private Integer OriginalRowNo;
+
+    //婧愯揣浣嶅眰缂栧彿
+    private Integer OriginalFloorNo;
+
+    //婧愯揣浣嶅垪缂栧彿
+    private Integer OriginalColumnNo;
+
+    //鐩爣搴撲綅鎺掔紪鍙�
+    private Integer GoalRowNo;
+
+    //鐩爣搴撲綅灞傜紪鍙�
+    private Integer GoalFloorNo;
+
+    //鐩爣搴撲綅鍒楃紪鍙�
+    private Integer GoalColumnNo;
+
+    //璧风偣
+    private String startPoint;
+
+    //缁堢缂栧彿锛堣緭閫佺嚎涓婃煇涓�鐐逛綅锛�
+    private String TerminalNo;
+
+    //澶囨敞
+    private String meno;
+
+}
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..5c126d6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java
@@ -0,0 +1,91 @@
+package com.zy.asrs.entity.param;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GetShuttleStatusParam {
+
+    /**
+     * 灏忚溅鍙�
+     */
+    private Integer shuttleNo;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 鎵嬪姩 2.鍏呯數涓�
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鎵嬪姩 2.鍏呯數涓�  ")
+    private Integer status;
+
+    /**
+     * 灏忚溅鎵�鍦ㄥ眰
+     */
+    @ApiModelProperty(value= "灏忚溅鎵�鍦ㄥ眰")
+    @TableField("charge_line")
+    private Integer chargeLine;
+
+
+    /**
+     * 灏忚溅寮傚父鐮�
+     */
+    @ApiModelProperty(value= "灏忚溅寮傚父鐮�")
+    @TableField("errorCode")
+    private Integer errorCode;
+
+    /**
+     * 灏忚溅鐘舵��
+     * <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;
+    
+
+
+
+    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/result/StorageResult.java b/src/main/java/com/zy/asrs/entity/result/StorageResult.java
index bdc456d..f9f56e5 100644
--- a/src/main/java/com/zy/asrs/entity/result/StorageResult.java
+++ b/src/main/java/com/zy/asrs/entity/result/StorageResult.java
@@ -8,12 +8,15 @@
     private Integer ReturnStatus = 0;
     private Results Results;
 
+
     @Data
     public static class Results{
         //搴撲綅鍙�
         private String ShelfUnitId;
         //浠诲姟鍙�
         private Integer TaskNo;
+
+        private String barcode;
     }
 
 }
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 4664557..a254a5c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -232,7 +232,7 @@
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setIoPri(10.0+locMast.getLocAttribute()); // 浼樺厛绾�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
             wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
@@ -300,6 +300,7 @@
         StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+        int yz=staDesc.getStnNo()*10+Integer.valueOf(taskDto.getLocNo().substring(6));
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -308,7 +309,7 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+        wrkMast.setSourceStaNo(yz); // 婧愮珯
         wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -331,6 +332,7 @@
             if (orderDetl == null) {
                 orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
             }
+            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr()));
             Mat mat=matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDto.getMatnr()));
             WrkDetl wrkDetl = new WrkDetl();
             wrkDetl.sync(orderDetl);
@@ -340,6 +342,7 @@
             wrkDetl.setBatch(locDto.getBatch());
             wrkDetl.setOrderNo(locDto.getOrderNo());
             wrkDetl.setModel(mat.getModel());
+            wrkDetl.setPrice(locDetl.getAnfme());//搴撳瓨鏁伴噺
             wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
             wrkDetl.setAppeTime(now);
             wrkDetl.setAppeUser(userId);
@@ -465,6 +468,7 @@
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+            wrkMast.setIoPri(10.0+locMast.getLocAttribute());//浼樺厛绾�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
             wrkMast.setExitMk("N"); // 閫�鍑�
diff --git a/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java b/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java
new file mode 100644
index 0000000..a1164aa
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java
@@ -0,0 +1,74 @@
+package com.zy.asrs.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.param.GetShuttleStatusParam;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.impl.BasDevpServiceImpl;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+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.util.List;
+
+@Component
+public class GetEquipmentStatus {
+    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
+    @Value("${wcs.address.URL}")
+    private String addrs;
+    @Value("${wcs.address.deviceStatus}")
+    private String deviceStatus;
+    @Autowired
+    private BasCrnpService basCrnpService;
+    @Autowired
+    private ApiLogService apiLogService;
+    @Autowired
+    private BasDevpService basDevpService;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute() {
+        //鑾峰彇璁惧淇℃伅
+        String response ="";
+        try {
+            response = new HttpHandler.Builder()
+                    // .setHeaders(headParam)
+                    .setUri(addrs)
+                    .setPath(deviceStatus)
+                    .build()
+                    .doGet();
+            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("basShuttle").toString(), GetShuttleStatusParam.class);
+                for (GetShuttleStatusParam shuttle : shuttles) {
+
+
+                    BasCrnp shuttle1 = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", shuttle.getShuttleNo()));
+                    shuttle1.setCrnSts(shuttle.getStatus());//灏忚溅妯″紡
+                    shuttle1.setCrnErr(Long.valueOf(shuttle.getErrorCode()));//灏忚溅鎶ヨ
+                    shuttle1.setLev1(shuttle.getChargeLine());//灏忚溅鎵�鍦ㄥ眰
+                    basCrnpService.updateById(shuttle1);
+                }
+
+                List<BasDevp> basDevps = JSON.parseArray(data.get("basDevp").toString(), BasDevp.class);
+                for (BasDevp basDevp : basDevps) {
+                    basDevpService.updateById(basDevp);
+                }
+            }
+        } catch (Exception e) {
+            log.error("wms璇诲彇wcs灏忚溅鐘舵�佸け璐�");
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/OutWorkScheduler.java b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
new file mode 100644
index 0000000..1bb688d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
@@ -0,0 +1,41 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.OutWorkHandler;
+import com.zy.asrs.task.handler.WorkMastHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class OutWorkScheduler {
+    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
+
+    @Autowired
+    OutWorkHandler outWorkHandler;
+    @Autowired
+    WrkMastService wrkMastService;
+
+    /**
+     * 鍑哄簱浠诲姟涓嬪彂
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute() {
+        List<WrkMast> wrkMasts=wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                .eq("wrk_sts",11)
+                .in("io_type",11,101,103,107,110));
+        for(WrkMast wrkMast:wrkMasts){
+            ReturnT<String> result = outWorkHandler.start(wrkMast);
+            if (!result.isSuccess()) {
+                log.error("wms涓嬪彂鍑哄簱绉诲簱浠诲姟={}缁檞cs涓嬪彂澶辫触", wrkMast.getWrkNo());
+            }
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
new file mode 100644
index 0000000..06dd5f1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
@@ -0,0 +1,95 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.param.CarryParam;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.impl.LocMastServiceImpl;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+@Slf4j
+@Service
+@Transactional
+public class OutWorkHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private ApiLogService apiLogService;
+    @Value("${wcs.address.URL}")
+    private String addrs;
+    @Value("${wcs.address.outboundTaskSend}")
+    private String outboundTaskSend;
+    @Autowired
+    private WrkMastService wrkMastService;
+
+
+    public synchronized ReturnT<String> start(WrkMast wrkMast) {
+        //浼樺厛绾�
+        LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+        int Priority = locMast.getLocAttribute() == null ? 0 : locMast.getLocAttribute();
+
+        HashMap<String, Object> map = new HashMap<>();
+        CarryParam carryParam = new CarryParam();
+        carryParam.setBoxNo(wrkMast.getBarcode());//鎵樼洏鐮�
+        carryParam.setTaskNo(wrkMast.getWrkNo()+"");//浠诲姟鍙�
+        carryParam.setStereoscopicTaskType(2);//2.鍑哄簱
+        carryParam.setPriority(10+Priority);//浼樺厛绾�
+        carryParam.setOriginalRowNo(locMast.getRow1());//婧愬簱浣嶆帓
+        carryParam.setOriginalColumnNo(locMast.getBay1());//婧愬簱浣嶅垪
+        carryParam.setOriginalFloorNo(locMast.getLev1());//婧愬簱浣嶅眰
+        carryParam.setStartPoint(wrkMast.getStaNo()+""+locMast.getLev1());//婧愮珯
+        carryParam.setTerminalNo(wrkMast.getStaNo()+"");//鐩爣绔�
+        List<CarryParam> carryParamList=new ArrayList<>();
+        carryParamList.add(carryParam);
+        map.put("TaskList",carryParamList);
+
+        String response ="";
+        Boolean bool =false;
+        try {
+            log.info("wms娲惧彂浠诲姟缁檞cs鍑哄簱={}", map);
+            response = new HttpHandler.Builder()
+                    // .setHeaders(headParam)
+                    .setUri(addrs)
+                    .setPath(outboundTaskSend)
+                    .setJson(JSON.toJSONString(map))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if(jsonObject.get("Code").equals("1")){
+                wrkMast.setWrkSts(12L);
+                wrkMastService.updateById(wrkMast);
+                bool = true;
+            }
+        } catch (Exception e) {
+            log.error("wcs娲惧彂浠诲姟缁橰CS鍑哄簱澶辫触{},杩斿洖鍊�={}", wrkMast, response);
+        } finally {
+            apiLogService.save("wcs娲惧彂浠诲姟缁橰CS鍑哄簱"
+                    , addrs + outboundTaskSend
+                    , null
+                    , "127.0.0.1"
+                    , JSON.toJSONString(map)
+                    , response
+                    , bool
+            );
+        }
+        return  SUCCESS;
+
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 4fa9711..32abee8 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -71,27 +71,27 @@
                         }
                     }
                     // 鎵嬪姩鍏ュ簱鐢熸垚鍗曟嵁 銆� 涓婃姤涓夋柟骞冲彴 銆�
-                    if (!Cools.isEmpty(wrkDetls)) {
-                        if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) {
-                            exceptionHandle("鐢熸垚鎵嬪姩鍏ュ簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
-                        }
-                    }
+//                    if (!Cools.isEmpty(wrkDetls)) {
+//                        if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) {
+//                            exceptionHandle("鐢熸垚鎵嬪姩鍏ュ簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
+//                        }
+//                    }
                 // 鎷f枡鍐嶅叆搴�
                 } else if (wrkMast.getIoType() == 53) {
-                    if (!Cools.isEmpty(wrkDetls)) {
-                        if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
-                            exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
-                        }
-                    }
+//                    if (!Cools.isEmpty(wrkDetls)) {
+//                        if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
+//                            exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
+//                        }
+//                    }
                 }
 
             // 鍑哄簱 --------------------------------------------------------------------------------
             } else if (wrkMast.getWrkSts() == 15) {
-                if (!Cools.isEmpty(wrkDetls)) {
-                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
-                        exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
-                    }
-                }
+//                if (!Cools.isEmpty(wrkDetls)) {
+//                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
+//                        exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
+//                    }
+//                }
             }
 
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 9f8ce99..62ed062 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -35,6 +35,10 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private OrderDetlService orderDetlService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
+    @Autowired
+    private WrkDetlLogService wrkDetlLogService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -156,9 +160,16 @@
                     }
                     for (WrkDetl wrkDetl : wrkDetls53) {
 
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                        LocDetl locDetl = new LocDetl();
+                        locDetl.sync(wrkDetl);
+                        locDetl.setAnfme(wrkDetl.getPrice()-wrkDetl.getAnfme());//鏁伴噺
+                        locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+                        locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                        locDetl.setModiTime(now);
+                        locDetl.setAppeTime(now);
+                        locDetl.setPrice(0.0);
                         if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+                            if (!locDetlService.insert(locDetl)) {
 //                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                 return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
@@ -184,7 +195,7 @@
 
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
-                    if (locMast.getLocSts().equals("Q")) {
+                    if (locMast.getLocSts().equals("S")) {
                         locMast.setLocSts("F");
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
@@ -382,6 +393,8 @@
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                             return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                         }
+                        // 淇敼宸ヤ綔涓绘。鐘舵��
+                        wrkMast.setWrkSts(15L);
                     }
                     break;
                 // 绌烘澘鍑哄簱
@@ -397,13 +410,40 @@
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                             return FAIL.setMsg("绌烘澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                         }
+                        // 淇敼宸ヤ綔涓绘。鐘舵��
+                        wrkMast.setWrkSts(15L);
+                    }
+                    break;
+                    //鎷f枡鍜岀洏鐐瑰嚭搴�
+                case 103:
+                case 107:
+                    if (locMast.getLocSts().equals("P")) {
+                        locMast.setLocSts("O");
+                        locMast.setBarcode("");
+                        locMast.setModiTime(now);
+                        locMast.setIoTime(now);
+                        if (!locMastService.updateById(locMast)) {
+//                            exceptionHandle("绌烘澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鎷f枡鍜岀洏鐐瑰嚭搴� ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                        }
+                        wrkMast.setWrkSts(16L);//绛夊緟鍏ュ簱
+                        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+                        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+                            exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+                        }
+                        if(!wrkMast.getEmptyMk().equals("Y")) {
+                            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+                            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+                                exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+                            }
+                        }
                     }
                     break;
                 default:
                     break;
             }
-            // 淇敼宸ヤ綔涓绘。鐘舵��
-            wrkMast.setWrkSts(15L);
+
             wrkMast.setModiTime(now);
             if (!wrkMastService.updateById(wrkMast)) {
 //                exceptionHandle("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 72cd9a1..6f16d15 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -46,43 +46,100 @@
     private  LocDetlService locDetlService;
     @Autowired
     private  BasCrnpService basCrnpService;
+    @PostMapping("/pakin/loc/returnWarehouse")
+    @ResponseBody
+    public synchronized StorageResult returnWarehouse(@RequestBody(required = false) SearchLocParam param) {
+        StorageResult storageResult=new StorageResult();
+        if (Cools.isEmpty(param.getTaskNo())) {
+            storageResult.setReturnStatus(1);
+            storageResult.setErrorMessage("浼犲叆宸ヤ綔鍙蜂负绌�");
+            return storageResult;
+        }
+        WrkMast wrkMast =wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                .eq("wrk_no",param.getTaskNo())
+                .in("io_type",103,107));
+        if (Cools.isEmpty(wrkMast)){
+            storageResult.setReturnStatus(1);
+            storageResult.setErrorMessage("娌℃湁鎵惧埌鐩樼偣鎷f枡浠诲姟---------"+param.getTaskNo());
+            return storageResult;
+        }
+        SearchLocParam searchLocParam = new SearchLocParam();
+        searchLocParam.setBoxNo(wrkMast.getBarcode());
+        searchLocParam.setWcsIoType(1);//婊℃澘
+        searchLocParam.setWcsSourceStaNo(wrkMast.getStaNo());
+        searchLocParam.setWcsStatus(0);
+        return getLocNo(searchLocParam);
+    }
+
 
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
-    public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) {
+    public synchronized StorageResult getLocNo(@RequestBody(required = false) SearchLocParam param) {
         StorageResult storageResult=new StorageResult();
         log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
         if (Cools.isEmpty(param.getWcsIoType())) {
-            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+            storageResult.setReturnStatus(1);
+            storageResult.setErrorMessage("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+            return storageResult;
         }
         if (Cools.isEmpty(param.getWcsSourceStaNo())) {
-            return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
+            storageResult.setReturnStatus(1);
+            storageResult.setErrorMessage("婧愮珯缂栧彿涓嶈兘涓虹┖");
+            return storageResult;
         }
+        int ioType = 0;
         List<WaitPakin> waitPakins = null;
         if (param.getWcsIoType() == 1) {
-            if (Cools.isEmpty(param.getBoxNo())) {
-                return R.error("鏉$爜涓嶈兘涓虹┖");
+            //鎷f枡鍜岀洏鐐瑰叆搴�
+            WrkMast wrkMast1037 =wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                    .eq("barcode", param.getBoxNo())
+                    .in("io_type",103,107));
+            WrkMast wrkMast537 =wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                    .eq("barcode", param.getBoxNo())
+                    .in("io_type",53,57));
+            if (wrkMast537 != null) {
+                StorageResult.Results results=new StorageResult.Results();
+                results.setTaskNo(wrkMast537.getWrkNo());
+                results.setShelfUnitId(wrkMast537.getLocNo()+"");
+                storageResult.setResults(results);
+                return storageResult;
             }
-            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo()));
-            if (Cools.isEmpty(waitPakins)) {
-                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo());
-                if (wrkMast != null && wrkMast.getIoType() == 103) {
-                    return R.parse(CodeRes.PICK_600);
+            if(Cools.isEmpty(wrkMast1037)) {
+                if (Cools.isEmpty(param.getBoxNo())) {
+                    storageResult.setReturnStatus(1);
+                    storageResult.setErrorMessage("鏉$爜涓嶈兘涓虹┖");
+                    return storageResult;
                 }
-                return R.parse(CodeRes.NO_COMB_700);
+                waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo()));
+                if (Cools.isEmpty(waitPakins)) {
+                    WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo());
+                    if (wrkMast != null && wrkMast.getIoType() == 103) {
+                        storageResult.setReturnStatus(1);
+                        storageResult.setErrorMessage(CodeRes.PICK_600);
+                        return storageResult;
+                    }
+                    storageResult.setReturnStatus(1);
+                    storageResult.setErrorMessage(CodeRes.NO_COMB_700);
+                    return storageResult;
+                }
+                int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBoxNo()));
+                int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBoxNo()));
+                if (countLoc > 0 || countWrk > 0) {
+                    storageResult.setReturnStatus(1);
+                    storageResult.setErrorMessage(CodeRes.EXIST_500);
+                    return storageResult;
+                }
+            }else {
+                ioType = wrkMast1037.getIoType();
             }
-            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBoxNo()));
-            int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBoxNo()));
-            if (countLoc > 0 || countWrk > 0) {
-                return R.error(CodeRes.EXIST_500);
-            }
+
         }
 
 
         switch (param.getWcsIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakins != null;
-                storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins);
+                storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins,ioType);
                 break;
             case 2://绌烘墭鐩樺叆搴�
                 storageResult = emptyPlateIn(param.getWcsSourceStaNo(), param.getBoxNo());
@@ -91,80 +148,111 @@
                 break;
         }
         log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", storageResult, param.getBoxNo());
-        return R.ok().add(storageResult);
+        return storageResult;
     }
+
 
     /**
      * 鍏ㄦ澘鍏ュ簱
      */
     @Transactional
-    public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins) {
+    public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins,Integer ioType) {
         StorageResult storageResult=new StorageResult();
         Integer[] arr=arr();
-        int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch();
-        // 妫�绱㈠簱浣�
-        LocMast locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1);
-        int workNo = commonService.getWorkNo(0);
-        Date now = new Date();
-        // 鐢熸垚宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(new Date());
-        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
-        wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾�
-        wrkMast.setSourceStaNo(devpNo);
-        wrkMast.setLocNo(locMast1.getLocNo());
-        wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
-        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk("N"); // 绌烘澘
-        wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
-        // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiTime(now);
-        boolean res = wrkMastService.insert(wrkMast);
-        if (!res) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-        }
-        // 鐢熸垚宸ヤ綔妗f槑缁�
-        waitPakins.forEach(waitPakin -> {
-            WrkDetl wrkDetl = new WrkDetl();
-            wrkDetl.sync(waitPakin);
-            wrkDetl.setWrkNo(wrkMast.getWrkNo());
-            wrkDetl.setIoTime(wrkMast.getIoTime());
-            wrkDetl.setAppeTime(now);
-            wrkDetl.setModiTime(now);
-            if (!wrkDetlService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+        LocMast locMast1=new LocMast();
+        Integer workNo = 0;
+        //鍒ゆ柇鏄惁鏄嫞鏂欐垨鑰呮槸鐩樼偣
+        if(ioType==103||ioType==107) {
+            WrkDetl wrkDetl=wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("zpallet", barcode));
+
+            int type=Cools.isEmpty(wrkDetl.getBeBatch())?1:wrkDetl.getBeBatch();
+            // 妫�绱㈠簱浣�
+            WaitPakin waitPakin1=new WaitPakin();
+            waitPakin1.sync(wrkDetl);
+            locMast1 =commonService.getLocNo2(waitPakin1,arr,0,type,1);
+
+            WrkMast wrkMast=wrkMastService.selectByBarcode(barcode);
+            workNo = wrkMast.getWrkNo();
+            int mbz=wrkMast.getStaNo()*10+Integer.valueOf(wrkMast.getSourceLocNo().substring(6));
+            String ykw=wrkMast.getLocNo();
+            wrkMast.setIoType(ioType-50);
+            wrkMast.setWrkSts(1L);//鍏ュ簱
+            wrkMast.setModiTime(new Date());
+            wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+            wrkMast.setStaNo(mbz); // 鐩爣绔�
+            wrkMast.setLocNo(locMast1.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+            wrkMast.setSourceLocNo(ykw); // 婧愬簱浣�
+            wrkMastService.updateById(wrkMast);
+        }else{
+            int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch();
+            // 妫�绱㈠簱浣�
+            locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1);
+
+            //姝e父鍏ュ簱
+            workNo = commonService.getWorkNo(0);
+            Date now = new Date();
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(new Date());
+            wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+            wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+            wrkMast.setIoPri(13D); // 浼樺厛绾�
+            wrkMast.setSourceStaNo(devpNo);
+            wrkMast.setLocNo(locMast1.getLocNo());
+            wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("Y");
+            wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+            // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiTime(now);
+            boolean res = wrkMastService.insert(wrkMast);
+            if (!res) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
-        });
-        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
-        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
-                .eq("zpallet", barcode);
-        WaitPakin setParam = new WaitPakin();
-        setParam.setLocNo(locMast1.getLocNo());
-        setParam.setIoStatus("Y");
-        setParam.setModiTime(now);
-        if (!waitPakinService.update(setParam, wrapper)) {
-            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            waitPakins.forEach(waitPakin -> {
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(waitPakin);
+                wrkDetl.setWrkNo(wrkMast.getWrkNo());
+                wrkDetl.setIoTime(wrkMast.getIoTime());
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setModiTime(now);
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+                }
+            });
+            // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                    .eq("zpallet", barcode);
+            WaitPakin setParam = new WaitPakin();
+            setParam.setLocNo(locMast1.getLocNo());
+            setParam.setIoStatus("Y");
+            setParam.setModiTime(now);
+            if (!waitPakinService.update(setParam, wrapper)) {
+                throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+            }
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(locMast1.getLocNo());
         if (locMast.getLocSts().equals("O")){
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-            locMast.setModiTime(now);
+            locMast.setModiTime(new Date());
             if (!locMastService.updateById(locMast)){
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
             throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
         }
+
         StorageResult.Results results=new StorageResult.Results();
         results.setTaskNo(workNo);
         results.setShelfUnitId(locMast1.getLocNo());
+        results.setBarcode(barcode);
         storageResult.setResults(results);
         return storageResult;
     }
@@ -252,6 +340,7 @@
         }else{
             basCrnp.setTankQty(0);
             basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",basCrnp.getCrnNo()));
+            int xx=0;
             arr[i]=basCrnp.getLev1();
             i++;
             int o=basCrnp.getCrnNo();
@@ -260,18 +349,27 @@
                     o=1;
                 }
                 basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",o));
-                if(q==1){
+                if(Cools.isEmpty(basCrnp)){
+                    log.error(q+"鍙峰皬杞︽病鏈夋壘鍒�");
+                    continue;
+                }
+                if(basCrnp.getCrnErr()>0||basCrnp.getCrnSts()!=1){
+                    log.error(q+"鍙峰皬杞︽姤璀︽垨鑰呭湪鍏呯數璺宠繃姝よ溅");
+                    continue;
+                }
+                if(xx==0){
                     basCrnp.setTankQty(1);
                     basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",o));
                 }
                 arr[i]=basCrnp.getLev1();
                 i++;
+                xx++;
             }
 
         }
         for (int w=1;w<=7;w++){
             boolean boo=true;
-            for(int g=0;g<count;g++){
+            for(int g=0;g<i;g++){
                 if(arr[g]==w){
                     boo=false;
                     break;
@@ -281,6 +379,7 @@
                 arr[i]=w;
                 i++;
             }
+            if(i==7) break;
         }
         return arr;
     }
diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java
index 1f058ab..63cb560 100644
--- a/src/main/java/com/zy/common/web/param/SearchLocParam.java
+++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -9,6 +9,9 @@
 @Data
 public class SearchLocParam {
 
+    @JSONField(name = "taskNo")
+    private Integer taskNo;
+
     //鎵樼洏鐮�
     @JSONField(name = "BoxNo")
     private String boxNo;
@@ -23,7 +26,7 @@
     @JSONField(name = "WCSSourceStaNo")
     private Integer wcsSourceStaNo;
 
-    //绌烘澘婊℃澘
+    //绌烘澘婊℃澘 1.婊℃澘 2.绌烘澘
     @JSONField(name = "WCSIoType")
     private Integer wcsIoType;
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 41e1cf9..dd6748a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=lfdasrs-sxc
+    url: jdbc:sqlserver://192.168.0.17:1433;databasename=lfdasrs-sxc
     username: sa
     password: sa@123
   mvc:
@@ -50,6 +50,16 @@
   # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
   groupCount: 4
 
+#wcs瀵规帴
+wcs:
+  #鍦板潃
+  address:
+    URL: http://127.0.0.1:9092/wcs
+    #鍑哄簱绉诲簱浠诲姟涓嬪彂
+    outboundTaskSend: open/outboundTaskSend
+
+    deviceStatus : open/deviceStatus
+
 #erp瀵规帴
 erp:
   #鍦板潃
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 61c2dc6..cad2e7f 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -120,6 +120,7 @@
         and b.loc_sts = 'F'
         <include refid="stockOutCondition"></include>
         ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+
     </select>
 
     <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
@@ -205,6 +206,7 @@
         where 1=1
         and b.loc_sts = 'F'
         and a.matnr = #{matnr}
+        and b.loc_attribute = 1
         <!--        <choose>-->
         <!--            <when test="batch != null and batch != ''">-->
         <!--                and a.batch = #{batch}-->
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index ce04079..e4b3d26 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -63,12 +63,13 @@
     </resultMap>
 
     <select id="selectToBeCompleteData" resultMap="BaseResultMap">
-        select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
+        select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 )  and io_type != 104  ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
     </select>
 
     <select id="selectToBeHistoryData" resultMap="BaseResultMap">
         select * from asr_wrk_mast
         where wrk_sts=5
+        or wrk_sts=20
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
diff --git a/src/main/webapp/static/image/logo.png b/src/main/webapp/static/image/logo.png
index 094646e..71dd632 100644
--- a/src/main/webapp/static/image/logo.png
+++ b/src/main/webapp/static/image/logo.png
Binary files differ
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index d0326bb..deca98e 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/htwms";
+var baseUrl = "/lfdsxkwms";
 
 // 璇︽儏绐楀彛-楂樺害
 var detailHeight = '80%';

--
Gitblit v1.9.1