From e3508915adca349eb4adfc2c50ce808696e730f4 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 03 三月 2026 13:59:43 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/CommonService.java |  117 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 97 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 138e46b..73e20a9 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -1,7 +1,5 @@
 package com.zy.common.service;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
@@ -14,11 +12,13 @@
 import com.zy.common.utils.NavigateUtils;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.News;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.WrkIoType;
-import com.zy.core.enums.WrkStsType;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.*;
 import com.zy.core.model.StationObjModel;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.StationCommand;
+import com.zy.core.thread.StationThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,6 +26,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Random;
 
 @Slf4j
 @Service
@@ -45,6 +46,8 @@
     private NavigateUtils navigateUtils;
     @Autowired
     private RedisUtil redisUtil;
+    @Autowired
+    private BasOutStationAreaService basOutStationAreaService;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -85,8 +88,18 @@
     }
 
     public boolean completeTask(CompleteTaskParam param) {
+        WrkMast wrkMast = null;
         Integer wrkNo = param.getWrkNo();
-        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        String taskNo = param.getTaskNo();//wms浠诲姟鍙�
+
+        if(wrkNo == null) {
+            if (!Cools.isEmpty(taskNo)) {
+                wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", taskNo));
+            }
+        }else {
+            wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        }
+
         if (null == wrkMast) {
             throw new CoolException("浠诲姟涓嶅瓨鍦�");
         }
@@ -105,8 +118,18 @@
     }
 
     public boolean cancelTask(CancelTaskParam param) {
+        WrkMast wrkMast = null;
         Integer wrkNo = param.getWrkNo();
-        WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        String taskNo = param.getTaskNo();//wms浠诲姟鍙�
+
+        if(wrkNo == null) {
+            if (!Cools.isEmpty(taskNo)) {
+                wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", taskNo));
+            }
+        }else {
+            wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        }
+
         if (null == wrkMast) {
             throw new CoolException("浠诲姟涓嶅瓨鍦�");
         }
@@ -156,8 +179,10 @@
         if (!sourceCrnResult.getCrnNo().equals(targetCrnResult.getCrnNo())) {
             throw new CoolException("婧愬簱浣嶅拰鐩爣搴撲綅涓嶅湪鍚屼竴宸烽亾");
         }
-        Integer crnNo = targetCrnResult.getCrnNo();
-
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wms_wrk_no", param.getTaskNo()));
+        if (!wrkMasts.isEmpty()) {
+            throw new CoolException("宸茬粡鐢熸垚鏀逛换鍔″彿浠诲姟="+param.getTaskNo());
+        }
         // 鑾峰彇宸ヤ綔鍙�
         int workNo = getWorkNo(WrkIoType.LOC_MOVE.id);
         // 淇濆瓨宸ヤ綔妗�
@@ -169,11 +194,19 @@
         wrkMast.setIoPri(ioPri);
         wrkMast.setSourceLocNo(param.getSourceLocNo());
         wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅
-        wrkMast.setCrnNo(crnNo);
         wrkMast.setWmsWrkNo(param.getTaskNo());
         wrkMast.setBarcode(sourceLocMast.getBarcode());
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
+
+        if (targetCrnResult.getCrnType().equals(SlaveType.Crn)) {
+            wrkMast.setCrnNo(targetCrnResult.getCrnNo());
+        } else if (targetCrnResult.getCrnType().equals(SlaveType.DualCrn)) {
+            wrkMast.setDualCrnNo(targetCrnResult.getCrnNo());
+        }else {
+            throw new CoolException("鏈煡璁惧绫诲瀷");
+        }
+
         boolean res = wrkMastService.insert(wrkMast);
         if (!res) {
             News.error("绉诲簱浠诲姟 --- 淇濆瓨宸ヤ綔妗eけ璐ワ紒");
@@ -194,6 +227,7 @@
     //鍏ュ簱浠诲姟
     public WrkMast createInTask(CreateInTaskParam param) {
         Date now = new Date();
+//        String s = Utils.WMSLocToWCSLoc(param.getLocNo());
         LocMast locMast = locMastService.queryByLoc(param.getLocNo());
         if (null == locMast) {
             throw new CoolException(param.getLocNo() + "鐩爣搴撲綅涓嶅瓨鍦�");
@@ -220,16 +254,22 @@
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
         wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(WrkStsType.NEW_INBOUND.sts); // 宸ヤ綔鐘舵�侊細1.鐢熸垚鍏ュ簱浠诲姟
+        wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts); // 宸ヤ綔鐘舵�侊細3.璁惧鎼繍涓�
         wrkMast.setIoType(WrkIoType.IN.id); // 鍏ュ嚭搴撶姸鎬侊細 1.鍏ュ簱
         wrkMast.setIoPri(ioPri);
         wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅
-        wrkMast.setSourceStaNo(param.getSourceStaNo());//婧愮珯
-        wrkMast.setStaNo(param.getStaNo());//鐩爣绔�
-        wrkMast.setWmsWrkNo(param.getTaskNo());
+        wrkMast.setSourceStaNo(Integer.valueOf(param.getSourceStaNo()));//婧愮珯
+        wrkMast.setStaNo(Integer.valueOf(param.getStaNo()));//鐩爣绔�
+        wrkMast.setWmsWrkNo(String.valueOf(param.getTaskNo()));
         wrkMast.setBarcode(param.getBarcode());
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
+        StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, 1);
+
+        StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
+                wrkMast.getWrkNo(), Integer.valueOf(param.getSourceStaNo()), Integer.valueOf(param.getSourceStaNo()), 0);
+
+        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, command));
 
         if (findCrnResult.getCrnType().equals(SlaveType.Crn)) {
             wrkMast.setCrnNo(findCrnResult.getCrnNo());
@@ -257,7 +297,7 @@
     //鍑哄簱浠诲姟
     public boolean createOutTask(CreateOutTaskParam param) {
         Date now = new Date();
-        LocMast locMast = locMastService.queryByLoc(param.getLocNo());
+        LocMast locMast = locMastService.queryByLoc(param.getSourceLocNo());
         if (null == locMast) {
             throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
         }
@@ -277,7 +317,23 @@
         }
         Integer crnNo = findCrnResult.getCrnNo();
 
-        Integer sourceStationId = this.findOutStationId(findCrnResult, param.getStaNo());
+        Integer staNo = param.getStaNo();
+        String outArea = param.getOutArea();
+        if(Cools.isEmpty(staNo) && Cools.isEmpty(outArea)) {
+            throw new CoolException("璇蜂紶鍏ュ嚭搴撶珯鐐规垨鍑哄簱鍖哄煙");
+        }
+
+        if(Cools.isEmpty(staNo)) {
+            List<BasOutStationArea> areaList = basOutStationAreaService.selectList(new EntityWrapper<BasOutStationArea>().eq("area_code", outArea));
+            if (areaList.isEmpty()) {
+                throw new CoolException("鍑哄簱鍖哄煙涓嶅瓨鍦�");
+            }
+            int nextInt = new Random().nextInt(areaList.size());
+            BasOutStationArea basOutStationArea = areaList.get(nextInt);
+            staNo = basOutStationArea.getStationId();
+        }
+
+        Integer sourceStationId = this.findOutStationId(findCrnResult, staNo);
         if (sourceStationId == null) {
             throw new CoolException("鏈壘鍒拌緭閫佺洰鏍囩珯鐐瑰彲璧拌璺緞");
         }
@@ -292,12 +348,33 @@
         wrkMast.setIoType(WrkIoType.OUT.id); // 鍏ュ嚭搴撶姸鎬侊細 101.鍑哄簱
         wrkMast.setIoPri(ioPri);
         wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+
+        if(!Cools.isEmpty(param.getLocNo())) {
+            //鐩爣绔欑偣
+            LocMast locMast1 = locMastService.queryByLoc(param.getLocNo());
+            if (null == locMast1) {
+                throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+            }
+
+            if (!locMast1.getLocSts().equals("O")) {
+                throw new CoolException("鐩爣搴撲綅涓嶅浜庡湪搴撶姸鎬�");
+            }
+            wrkMast.setLocNo(locMast1.getLocNo()); //鐩爣搴撲綅
+        }
         wrkMast.setSourceStaNo(sourceStationId);//婧愮珯
-        wrkMast.setStaNo(param.getStaNo());//鐩爣绔�
+        wrkMast.setStaNo(staNo);//鐩爣绔�
         wrkMast.setWmsWrkNo(param.getTaskNo());
         wrkMast.setBarcode(locMast.getBarcode());
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
+
+        if (!Cools.isEmpty(param.getBatch())) {
+            wrkMast.setBatch(param.getBatch());
+        }
+
+        if (!Cools.isEmpty(param.getBatchSeq())) {
+            wrkMast.setBatchSeq(param.getBatchSeq());
+        }
 
         if (findCrnResult.getCrnType().equals(SlaveType.Crn)) {
             BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", crnNo));
@@ -402,7 +479,7 @@
                     break;
                 }
             } catch (Exception e) {
-                e.printStackTrace();
+//                e.printStackTrace();
             }
         }
         return targetStationId;
@@ -434,7 +511,7 @@
                     break;
                 }
             } catch (Exception e) {
-                e.printStackTrace();
+//                e.printStackTrace();
             }
         }
         return finalSourceStationId;

--
Gitblit v1.9.1