From 95d473bc8c09ef41e1455f93dec49c5ee6ac548f Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 18 六月 2024 08:23:38 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/BasLiftStaDto.java  |   20 ++++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java   |   24 ++----------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java |   72 +++++++++++++++++++++++++++++++-----
 3 files changed, 86 insertions(+), 30 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
index 706f0a6..1fc8368 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
@@ -1,21 +1,20 @@
 package com.zy.asrs.wcs.core.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.common.SnowflakeIdWorker;
+import com.zy.asrs.wcs.core.domain.dto.BasLiftStaDto;
 import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam;
 import com.zy.asrs.wcs.core.domain.param.CreateManualTakeTaskParam;
 import com.zy.asrs.wcs.core.domain.param.CreateMoveTaskParam;
 import com.zy.asrs.wcs.core.domain.param.CreateOutTaskParam;
-import com.zy.asrs.wcs.core.entity.Loc;
-import com.zy.asrs.wcs.core.entity.Task;
-import com.zy.asrs.wcs.core.entity.TaskCtg;
+import com.zy.asrs.wcs.core.entity.*;
 import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
 import com.zy.asrs.wcs.core.model.enums.TaskCtgType;
 import com.zy.asrs.wcs.core.model.enums.TaskStsType;
-import com.zy.asrs.wcs.core.service.LocService;
-import com.zy.asrs.wcs.core.service.TaskCtgService;
-import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.core.service.*;
 import com.zy.asrs.wcs.core.utils.Utils;
 import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
 import com.zy.asrs.wcs.rcs.entity.Device;
@@ -33,6 +32,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 瀵瑰鏆撮湶鎺ュ彛
@@ -54,6 +54,10 @@
     private LocService locService;
     @Autowired
     private DictService dictService;
+    @Autowired
+    private BasConveyorPathService basConveyorPathService;
+    @Autowired
+    private BasLiftService basLiftService;
 
     //鐢熸垚鍏ュ簱浠诲姟
     @PostMapping("/createInTask")
@@ -65,6 +69,8 @@
         if (taskCtg == null) {
             return R.error("浠诲姟绫诲瀷寮傚父");
         }
+
+        Long hostId = 1L;//榛樿涓讳粨搴�
 
         Loc loc = locService.selectByLocNo(param.getDestLoc());
         if (loc == null) {
@@ -91,6 +97,19 @@
             return R.error("浠诲姟宸插瓨鍦�");
         }
 
+        String destSite = param.getDestSite();
+        if (Cools.isEmpty(param.getDestSite())) {
+            //鐩爣绔欎负绌哄垯浣跨敤WCS绯荤粺鍐呯疆璺緞
+            BasConveyorPath path = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>()
+                    .eq(BasConveyorPath::getTypeNo, taskCtg.getId())
+                    .eq(BasConveyorPath::getHostId, hostId)
+                    .eq(BasConveyorPath::getStnNo, param.getOriginSite()));
+            if(path == null) {
+                return R.error("鍐呯疆璺緞涓嶅瓨鍦�");
+            }
+            destSite = String.valueOf(path.getDeviceStn());
+        }
+
         //浼樺厛绾�
         Integer priority = 10;
         if (param.getPriority() != null) {
@@ -106,7 +125,7 @@
         task.setPriority(priority);
         task.setOriginSite(param.getOriginSite());
         task.setOriginLoc(null);
-        task.setDestSite(param.getDestSite());
+        task.setDestSite(destSite);
         task.setDestLoc(param.getDestLoc());
         task.setIoTime(new Date());
         task.setStartTime(new Date());
@@ -114,7 +133,7 @@
         task.setMemo("");
         task.setShuttleNo(null);//绛夊緟涓荤嚎绋嬪垎閰嶅皬杞�
         task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅
-        task.setHostId(1L);//涓存椂鎺у埗鍙厑璁竓ost涓�1
+        task.setHostId(hostId);//涓存椂鎺у埗鍙厑璁竓ost涓�1
 
         boolean result = taskService.save(task);
         if (!result) {
@@ -133,6 +152,8 @@
         if (taskCtg == null) {
             return R.error("浠诲姟绫诲瀷寮傚父");
         }
+
+        Long hostId = 1L;//榛樿涓讳粨搴�
 
         Loc loc = locService.selectByLocNo(param.getOriginLoc());
         if (loc == null) {
@@ -159,6 +180,37 @@
             return R.error("浠诲姟宸插瓨鍦�");
         }
 
+        String originSite = param.getOriginSite();
+        if (Cools.isEmpty(param.getOriginSite())) {
+            //浣跨敤WCS绯荤粺鍐呯疆璺緞
+            BasConveyorPath path = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>()
+                    .eq(BasConveyorPath::getTypeNo, taskCtg.getId())
+                    .eq(BasConveyorPath::getHostId, hostId)
+                    .eq(BasConveyorPath::getStnNo, param.getDestSite()));
+            if(path == null) {
+                return R.error("鍐呯疆璺緞涓嶅瓨鍦�");
+            }
+            Integer deviceNo = path.getDeviceNo();//鑾峰彇鎻愬崌鏈哄彿
+            BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getLiftNo, deviceNo).eq(BasLift::getHostId, hostId));
+            if(basLift == null) {
+                return R.error("鎻愬崌鏈哄璞′笉瀛樺湪");
+            }
+            List<BasLiftStaDto> staList = JSON.parseArray(basLift.getSta(), BasLiftStaDto.class);
+            BasLiftStaDto originStaDto = null;
+            for (BasLiftStaDto sta : staList) {
+                if (sta.getLev() == Utils.getLev(param.getOriginLoc())) {
+                    originStaDto = sta;
+                    break;
+                }
+            }
+
+            if (originStaDto == null) {
+                return R.error("婧愮珯涓嶅瓨鍦�");
+            }
+
+            originSite = String.valueOf(originStaDto.getStaNo());
+        }
+
         //浼樺厛绾�
         Integer priority = 10;
         if (param.getPriority() != null) {
@@ -172,7 +224,7 @@
         task.setTaskSts(TaskStsType.NEW_OUTBOUND.sts);
         task.setTaskCtg(taskCtg.getId());
         task.setPriority(priority);
-        task.setOriginSite(param.getOriginSite());
+        task.setOriginSite(originSite);
         task.setOriginLoc(param.getOriginLoc());
         task.setDestSite(param.getDestSite());
         task.setDestLoc(null);
@@ -182,7 +234,7 @@
         task.setMemo("");
         task.setShuttleNo(null);//绛夊緟涓荤嚎绋嬪垎閰嶅皬杞�
         task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅
-        task.setHostId(1L);//涓存椂鎺у埗鍙厑璁竓ost涓�1
+        task.setHostId(hostId);//涓存椂鎺у埗鍙厑璁竓ost涓�1
 
         boolean result = taskService.save(task);
         if (!result) {
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/BasLiftStaDto.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/BasLiftStaDto.java
new file mode 100644
index 0000000..0f42416
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/BasLiftStaDto.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.wcs.core.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class BasLiftStaDto {
+
+    // 鎻愬崌鏈虹珯鐐瑰彿
+    private Integer staNo;
+
+    //杈撻�佺珯鐐规帓
+    private Integer row;
+
+    //杈撻�佺珯鐐瑰垪
+    private Integer bay;
+
+    // 灞�
+    private Integer lev;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
index 74060d0..8869609 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.framework.common.SpringUtils;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wcs.common.ExecuteSupport;
+import com.zy.asrs.wcs.core.domain.dto.BasLiftStaDto;
 import com.zy.asrs.wcs.core.entity.BasLift;
 import com.zy.asrs.wcs.core.model.command.LiftCommand;
 import com.zy.asrs.wcs.core.model.enums.LiftCommandModeType;
@@ -39,7 +40,7 @@
     private LiftProtocol liftProtocol;
     private SiemensS7Net siemensS7Net;
     private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
-    private List<Sta> staList = new ArrayList<>();
+    private List<BasLiftStaDto> staList = new ArrayList<>();
 
     public NyLiftThread(Device device, RedisUtil redisUtil) {
         this.device = device;
@@ -49,9 +50,9 @@
         BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
         BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>()
                 .eq(BasLift::getDeviceId, device.getId()));
-        List<Sta> staList = JSON.parseArray(basLift.getSta(), Sta.class);
+        List<BasLiftStaDto> staList = JSON.parseArray(basLift.getSta(), BasLiftStaDto.class);
         this.staList = staList;
-        for (Sta sta : staList) {
+        for (BasLiftStaDto sta : staList) {
             LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
             liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
             liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
@@ -494,23 +495,6 @@
          * 鎻愬崌鏈哄彿
          */
         private Integer liftNo;
-
-    }
-
-    @Data
-    public static class Sta {
-
-        // 鎻愬崌鏈虹珯鐐瑰彿
-        private Integer staNo;
-
-        //杈撻�佺珯鐐规帓
-        private Integer row;
-
-        //杈撻�佺珯鐐瑰垪
-        private Integer bay;
-
-        // 灞�
-        private Integer lev;
 
     }
 

--
Gitblit v1.9.1