From 697af1096e89e54d473874179a704719fb184df2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期四, 10 四月 2025 22:02:32 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  288 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 272 insertions(+), 16 deletions(-)

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 35e110a..162bc07 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,24 +1,33 @@
 package com.zy.asrs.service.impl;
 
 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.domain.enums.NotifyMsgType;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.NotifyUtils;
 import com.zy.asrs.utils.Utils;
-import com.zy.common.model.*;
+import com.zy.common.model.MapNode;
+import com.zy.common.model.NavigateNode;
+import com.zy.common.model.SearchLocParam;
+import com.zy.common.model.StartupDto;
 import com.zy.common.model.enums.NavigationMapType;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.*;
 import com.zy.core.News;
 import com.zy.core.action.LiftAction;
 import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.dispatcher.ShuttleDispatchUtils;
 import com.zy.core.enums.*;
 import com.zy.core.model.*;
-import com.zy.core.model.command.*;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
 import com.zy.core.model.protocol.*;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.*;
@@ -28,7 +37,10 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -78,6 +90,250 @@
     private BasLiftOptService basLiftOptService;
     @Autowired
     private LiftAction liftAction;
+
+    //鍏ュ簱绔欑偣
+    public static final ArrayList<Integer> inSta = new ArrayList<Integer>() {{
+        add(1012);
+        add(1014);
+        add(1022);
+        add(1025);
+        add(1032);
+    }};
+
+    //鍑哄簱绔欑偣
+    public static final ArrayList<Integer> outSta = new ArrayList<Integer>() {{
+        add(1012);
+        add(1014);
+        add(1022);
+        add(1025);
+        add(1032);
+    }};
+
+
+    private boolean isInEnable(DevpThread devpThread, Integer staNo) {
+        if (staNo == null) {
+            return false;
+        }
+        // 鑾峰彇鍏ュ簱绔欎俊鎭�
+        switch (staNo) {
+            case 1011:
+            case 1012:
+                devpThread.getStation().get(1012).isInEnable();
+                break;
+            case 1021:
+            case 1022:
+            case 1023:
+                devpThread.getStation().get(1022).isInEnable();
+                break;
+            case 1031:
+            case 1032:
+                devpThread.getStation().get(1032).isInEnable();
+                break;
+            case 1025:
+            case 1026:
+                devpThread.getStation().get(1025).isInEnable();
+                break;
+            case 1013:
+            case 1014:
+            case 1015:
+                devpThread.getStation().get(1014).isInEnable();
+                break;
+        }
+        return false;
+    }
+
+    private boolean isOutEnable(DevpThread devpThread, Integer staNo) {
+        if (staNo == null) {
+            return false;
+        }
+        // 鑾峰彇鍏ュ簱绔欎俊鎭�
+        switch (staNo) {
+            case 1011:
+            case 1012:
+                devpThread.getStation().get(1012).isOutEnable();
+                break;
+            case 1021:
+            case 1022:
+            case 1023:
+                devpThread.getStation().get(1022).isOutEnable();
+                break;
+            case 1031:
+            case 1032:
+                devpThread.getStation().get(1032).isOutEnable();
+                break;
+            case 1025:
+            case 1026:
+                devpThread.getStation().get(1025).isOutEnable();
+                break;
+            case 1013:
+            case 1014:
+            case 1015:
+                devpThread.getStation().get(1014).isOutEnable();
+                break;
+        }
+        return false;
+    }
+
+    /**
+     * 缁勬墭
+     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
+     */
+    public synchronized void generateInboundWrk() {
+        try {
+            DevpSlave devpSlave = slaveProperties.getDevpSlave().get(0);
+            // 閬嶅巻鍏ュ簱鍙�
+            for (DevpSlave.Sta inSta : devpSlave.getInSta()) {
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                Short workNo = staProtocol.getWorkNo();
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "寮傚父锛�";
+                if (staProtocol.isFrontErr()) {
+                    errMsg = errMsg + "鍓嶈秴闄愶紱";
+                    back = true;
+                }
+                if (staProtocol.isBackErr()) {
+                    errMsg = errMsg + "鍚庤秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isHighErr()) {
+                    errMsg = errMsg + "楂樿秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isLeftErr()) {
+                    errMsg = errMsg + "宸﹁秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isRightErr()) {
+                    errMsg = errMsg + "鍙宠秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isWeightErr()) {
+                    errMsg = errMsg + "瓒呴噸";
+                    back = true;
+                }
+                if (staProtocol.isBarcodeErr()) {
+                    errMsg = errMsg + "鎵爜澶辫触";
+                    back = true;
+                }
+                // 閫�鍥�
+                if (back) {
+                    // led 寮傚父鏄剧ず
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                    if (ledThread != null) {
+                        ledThread.error(errMsg);
+                    }
+                    continue;
+                }
+
+                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                if (staProtocol.isAutoing() && staProtocol.isLoading()
+                        && isInEnable(devpThread, inSta.getStaNo())
+                        && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999))
+                        && staProtocol.isPakMk()
+                ) {
+                    String barcode = staProtocol.getBarcode();
+                    if (!Cools.isEmpty(barcode)) {
+                        News.info("鏉$爜鎵弿鍣ㄦ娴嬫潯鐮佷俊鎭細{}", barcode);
+                    }
+
+                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                            .eq("source_sta_no", inSta.getStaNo())
+                            .eq("wrk_sts", WrkStsType.NEW_INBOUND)
+                            .eq("barcode", barcode));
+                    if (wrkMast != null) {
+                        News.error("宸ヤ綔妗e凡瀛樺湪,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+                        if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) {
+                            MessageQueue.offer(SlaveType.Devp, devpSlave.getId(), new Task(2, staProtocol));
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast));
+                        }
+                        continue;
+                    }
+
+                    try {
+                        String wmsUrl = "127.0.0.1:8080/fyxcwms";
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(barcode);
+                        param.setIoType(1);
+                        param.setSourceStaNo(inSta.getStaNo());
+                        param.setLocType1(staProtocol.getLocType1().shortValue());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/pakin/loc/v1")
+                                .setJson(JSON.toJSONString(param))
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        Integer code = jsonObject.getInteger("code");
+                        if (code.equals(200)) {
+                            MessageQueue.offer(SlaveType.Devp, devpSlave.getId(), new Task(2, staProtocol));
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast));
+
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+//                                String wmsLocNo = dto.getLocNo();
+//                                int row = Integer.parseInt(wmsLocNo.substring(0, 2));
+//                                int bay = Integer.parseInt(wmsLocNo.substring(2, 5));
+//                                int lev = Integer.parseInt(wmsLocNo.substring(5, 7));
+//                                String wcsLocNo = Utils.getLocNo(row, bay, lev);
+//
+//                                CreateInTaskParam createInTaskParam = new CreateInTaskParam();
+//                                createInTaskParam.setTaskNo(String.valueOf(dto.getWorkNo()));
+//                                createInTaskParam.setDestLoc(wcsLocNo);
+//                                createInTaskParam.setOriginSite(dto.getSourceStaNo().toString());
+//                                createInTaskParam.setDestSite(dto.getStaNo().toString());
+//                                createInTaskParam.setPriority(11);
+//                                createInTaskParam.setBarcode(barcode);
+//
+//                                R result = openUtils.createInTask(createInTaskParam);
+//                                News.info("鍒涘缓鍏ュ簱浠诲姟锛屼换鍔℃暟鎹�={}锛學MS鍝嶅簲={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject), JSON.toJSON(result));
+//                                try{
+//                                    String msg = "";
+//                                    HashMap<String, String> hashMap = new HashMap<>();
+//                                    hashMap.put("msg", msg);
+//                                    hashMap.put("sta", inSta.getStaNo().toString());
+//                                    new HttpHandler.Builder()
+//                                            .setUri(wmsUrl)
+//                                            .setPath("/rpc/led/getError")
+//                                            .setJson(JSON.toJSONString(hashMap))
+//                                            .build()
+//                                            .doPost();
+//                                }catch (Exception e){
+//
+//                                }
+                        } else {
+                            String msg = jsonObject.getString("msg");
+                            HashMap<String, String> hashMap = new HashMap<>();
+                            hashMap.put("msg", msg);
+                            hashMap.put("sta", inSta.getStaNo().toString());
+                            new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath("/rpc/led/getError")
+                                    .setJson(JSON.toJSONString(hashMap))
+                                    .build()
+                                    .doPost();
+                            News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject));
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 
     /**
      * 鍒濆鍖栧疄鏃跺湴鍥�
@@ -494,7 +750,7 @@
                         }
                     } else {
                         Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo());
-                        if(object != null){
+                        if (object != null) {
                             ShuttleAssignCommand assignCommand = JSON.parseObject(object.toString(), ShuttleAssignCommand.class);
                             if (!assignCommand.getAuto()) {
                                 //鎵嬪姩妯″紡
@@ -1191,7 +1447,7 @@
                         }
                         int errorCode = Integer.parseInt(shuttleProtocol.getErrorCode());
                         BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(errorCode);
-                        String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+                        String errName = basShuttleErr == null ? "鏈煡寮傚父" : basShuttleErr.getErrName();
                         BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
                                 null,    // 缂栧彿
                                 wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
@@ -1263,7 +1519,7 @@
                         }
 
                         BasLiftErr basLiftErr = basLiftErrService.queryByCode(Integer.parseInt(liftProtocol.getErrorCode()));
-                        String errName = basLiftErr==null? "鏈煡寮傚父":basLiftErr.getErrName();
+                        String errName = basLiftErr == null ? "鏈煡寮傚父" : basLiftErr.getErrName();
 
                         BasLiftErrLog basLiftErrLog = new BasLiftErrLog(
                                 null,    // 缂栧彿
@@ -1367,7 +1623,7 @@
                             ArrayList<String> locs = new ArrayList<>();
                             locs.add(charge.getLocNo());
                             Integer checkHasShuttle = Utils.checkGroupLocHasShuttle(locs);
-                            if(checkHasShuttle != null) {
+                            if (checkHasShuttle != null) {
                                 //褰撳墠鍏呯數妗╂湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
                                 continue;
                             }
@@ -1417,7 +1673,7 @@
             //鏌ヨ灏忚溅鍏呯數浠诲姟
             for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
                 WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttle.getId());
-                if(wrkMast == null) {
+                if (wrkMast == null) {
                     continue;
                 }
 
@@ -1503,7 +1759,7 @@
 
             //鍒ゆ柇鏄惁瀛樺湪鏈畬鎴愮殑绉诲姩浠诲姟
             WrkMast moveWrk = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
-            if(moveWrk != null) {
+            if (moveWrk != null) {
                 return false;
             }
 
@@ -1604,7 +1860,7 @@
             }
 
             BasShuttleCharge basShuttleCharge = basShuttleChargeService.selectOne(new EntityWrapper<BasShuttleCharge>().eq("charge_id", wrkMast.getMk()));
-            if(basShuttleCharge == null) {
+            if (basShuttleCharge == null) {
                 return false;
             }
 
@@ -1636,7 +1892,7 @@
                     this.shuttleMoveExecuteTransportLift(wrkMast);
                 } else if ("TRANSPORT_DEVP".equals(wrkMast.getMk())) {
 
-                }else {
+                } else {
                     this.shuttleMoveExecuteMove(wrkMast);
                 }
             }
@@ -1682,7 +1938,7 @@
         if (Utils.getRow(liftLocNo) == Utils.getRow(wrkMast.getSourceLocNo()) && Utils.getBay(liftLocNo) == Utils.getBay(wrkMast.getSourceLocNo())) {
             //鍙栬揣浣嶇疆鏄彁鍗囨満
             this.shuttleMoveExecuteTransportLiftTake(wrkMast);
-        }else {
+        } else {
             //鏀捐揣浣嶇疆鏄彁鍗囨満
             this.shuttleMoveExecuteTransportLiftPut(wrkMast);
         }
@@ -1907,7 +2163,7 @@
                 wrkMast.setSystemMsg("");//娓呯┖娑堟伅
                 wrkMastService.updateById(wrkMast);
                 return false;
-            }else {
+            } else {
                 liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
                 if (liftThread == null) {
                     News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
@@ -2371,7 +2627,7 @@
                 wrkMast.setSystemMsg("");//娓呯┖娑堟伅
                 wrkMastService.updateById(wrkMast);
                 return false;
-            }else {
+            } else {
                 liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
                 if (liftThread == null) {
                     News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
@@ -2934,7 +3190,7 @@
                     return false;//璺緞瑙i攣澶辫触
                 }
                 commands.addAll(moveCommands);
-            }else {
+            } else {
                 //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
                 wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);//  302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
                 wrkMast.setModiTime(now);
@@ -3134,7 +3390,7 @@
                 wrkMast.setSystemMsg("");//娓呯┖娑堟伅
                 wrkMastService.updateById(wrkMast);
                 return false;
-            }else {
+            } else {
                 liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
                 if (liftThread == null) {
                     News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());

--
Gitblit v1.9.1