From c904f735e0b8a488ef56744c08f8e10258639bce Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 05 六月 2025 15:54:58 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  328 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 323 insertions(+), 5 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 b67f5cc..dd01468 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -21,6 +21,7 @@
 import com.zy.common.utils.HttpHandler;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
+import com.zy.core.RgvThread;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.*;
@@ -29,13 +30,11 @@
 import com.zy.core.model.command.LedCommand;
 import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.ExtProtocol;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
-import com.zy.core.thread.SiemensDevpThread;
-import com.zy.core.thread.SiemensRgvThread;
+import com.zy.core.thread.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -68,6 +67,12 @@
     private FillingMastService fillingMastService;
     @Autowired
     private VacuumMastService vacuumMastService;
+    @Autowired
+    private BasErrLogService basErrLogService;
+    @Autowired
+    private WrkMastStaService wrkMastStaService;
+    @Autowired
+    private BasRgvErrService basRgvErrService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -298,7 +303,13 @@
                 if (rgvComplete){
                     rgvThread.setPakMk(true);
                 }
-
+                List<WrkMastSta> wrkMastStas = wrkMastStaMapper.selectList(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", rgvProtocol.getTaskNo1()));
+                if (!Cools.isEmpty(wrkMastStas) || wrkMastStas.size()<=0){
+                    WrkMastSta wrkMastSta = wrkMastStas.get(0);
+                    wrkMastSta.setWrkSts(3);
+                    wrkMastSta.setBignTime(new Date());
+                    wrkMastStaMapper.updateById(wrkMastSta);
+                }
             }
 
         }
@@ -360,6 +371,313 @@
         }
     }
 
+    public synchronized void ExtTaskAndPut() throws InterruptedException {
+        for (ExtSlave extSlave : slaveProperties.getExt()) {
+//            if (!rgv.getDemo()) {
+//                continue;
+//            }
+            MelsecExtThread extThread = (MelsecExtThread) SlaveConnection.get(SlaveType.Ext, extSlave.getId());
+            ExtProtocol extProtocol = extThread.getExtProtocol();
+            if (extProtocol == null) {
+                continue;
+            }
+//            else {
+//                extProtocol = extProtocol.clone();
+//            }
+            if (extProtocol.isTake()){//鍏佽鍙�
+
+            }else if (extProtocol.isPut()){//鍏佽鏀�
+
+            }
+
+        }
+    }
+
+    public synchronized void DevpTaskAndPut() throws InterruptedException {
+        try {
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+//                    System.out.println(JSON.toJSONString(staProtocol));
+                    if (staProtocol.isAutoing()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,1);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }else if (staProtocol.isLoading()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,3);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }else if (staProtocol.isInEnable()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,5);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }else if (staProtocol.isOutEnable()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,7);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }
+                    if (staProtocol.isEmptyMk()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),1,10);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }
+                    if (staProtocol.isFullPlt()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),3,10);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }
+                    if (staProtocol.isCar()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),5,10);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }
+                    if (staProtocol.isLow()){
+                        WrkMastSta wrkMastSta = new WrkMastSta(new Date(),7,10);
+                        Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+                        if (count==0){
+                            wrkMastSta.setType(1);
+                            wrkMastSta.setWrkType(3);
+                            wrkMastStaMapper.insert(wrkMastSta);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("鐢熸垚灏忚溅鎼繍浠诲姟  ===>> 澶辫触", e);
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+    /**
+     * 鎵ц灏忚溅鎼繍浠诲姟
+     */
+    public synchronized void rgvRunWrkMastFullSta() {
+        try{
+            SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                log.error("RGV涓嶅湪绾�");
+                return;
+            }
+            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+                    && rgvProtocol.getModeType() == RgvModeType.AUTO
+                    && rgvProtocol.getLoaded1()==0
+                    && rgvProtocol.getTaskNo1() == 0
+                    && rgvThread.isPakMk()
+            ) {
+                Integer selectCount = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts", 3).ne("wrk_sts", 0));
+                if (selectCount>0){
+                    log.error("瀛樺湪鎵цRGV涓换鍔★紝浣嗘槸灏忚溅鐘舵�佺┖闂诧紒锛侊紒");
+                    return;
+                }
+
+                List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectList(new EntityWrapper<WrkMastSta>().eq("wrk_sts",0));
+                for (WrkMastSta wrkMastSta : wrkMastStaList){
+                    if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
+                        continue;
+                    }
+                    boolean sign = rgvTakeFullAll(1, wrkMastSta); //鍛戒护涓嬪彂
+                    if (sign){
+                        wrkMastSta.setWrkSts(1);
+                        wrkMastSta.setUpdateTime(new Date());
+                        wrkMastStaMapper.updateById(wrkMastSta);
+                    } else {
+                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+                    }
+                    break;
+                }
+            }
+        }catch (Exception e){
+            log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
+            log.error("3875琛�"+e);
+        }
+    }
+    /*
+     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
+     * */
+    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
+        try{
+            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+            RgvCommand rgvCommand = new RgvCommand();
+            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+            rgvCommand.setAckFinish1(false);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().intValue()); // 宸ヤ綅1宸ヤ綔鍙�
+            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
+            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+            rgvCommand.setCommand((short) 0);   //宸ヤ綅1浠诲姟纭
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+                return false;
+            } else {
+                return true;
+            }
+        }catch (Exception e){
+            return false;
+        }
+    }
+
+    public synchronized void recCrnErr() {
+        Date now = new Date();
+
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                return;
+            }
+            if (true) {
+//            if (crnProtocol.getModeType() != CrnModeType.STOP) {
+                // 鏈変换鍔�
+                if (rgvProtocol.getTaskNo1() != 0) {
+
+                    BasErrLog latest = basErrLogService.findLatestByTaskNo(1, rgvProtocol.getTaskNo1());
+                    // 鏈夊紓甯�
+                    if (latest == null) {
+                        if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
+                            WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
+                                    .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts,wrk_start as wrkStart,wrk_end as wrkEnd, create_time as createTime")
+                                    .eq("wrk_No", rgvProtocol.getTaskNo1())
+                                    .orderBy("create_time", false)
+
+                            );
+                            if (wrkMastSta == null) {
+                               return;
+                            }
+                            BasRgvErr rgvErr = basRgvErrService.selectById(rgvProtocol.getAlarm());
+                            String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
+                            BasErrLog basErrLog = new BasErrLog(
+                                    null,    // 缂栧彿
+                                    wrkMastSta.getWrkNo().intValue(),    // 宸ヤ綔鍙�
+                                    now,    // 鍙戠敓鏃堕棿
+                                    null,    // 缁撴潫鏃堕棿
+                                    wrkMastSta.getWrkSts().longValue(),    // 宸ヤ綔鐘舵��
+                                    wrkMastSta.getType(),    // 鍏ュ嚭搴撶被鍨�
+                                    1,    // 鍫嗗灈鏈�
+                                    null,    // plc
+                                    null,    // 鐩爣搴撲綅
+                                    wrkMastSta.getWrkEnd(),    // 鐩爣绔�
+                                    wrkMastSta.getWrkEnd(),    // 婧愮珯
+                                    null,    // 婧愬簱浣�
+                                    null,    // 鏉$爜
+                                    (int) rgvProtocol.getAlarm(),    // 寮傚父鐮�
+                                    errName,    // 寮傚父
+                                    1,    // 寮傚父鎯呭喌
+                                    now,    // 娣诲姞鏃堕棿
+                                    null,    // 娣诲姞浜哄憳
+                                    now,    // 淇敼鏃堕棿
+                                    null,    // 淇敼浜哄憳
+                                    "浠诲姟涓紓甯�"    // 澶囨敞
+                            );
+                            if (!basErrLogService.insert(basErrLog)) {
+
+                            }
+                        }
+                    } else {
+                        // 寮傚父淇
+                        if (rgvProtocol.getAlarm() == null || rgvProtocol.getAlarm() == 0) {
+                            latest.setEndTime(now);
+                            latest.setUpdateTime(now);
+                            latest.setStatus(2);
+                            if (!basErrLogService.updateById(latest)) {
+
+                            }
+                        }
+                    }
+                    // 鏃犱换鍔�
+                } else {
+                    BasErrLog latest = basErrLogService.findLatest(1);
+
+                    // 鏈夊紓甯�
+                    if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
+
+                        // 璁板綍鏂板紓甯�
+                        if (latest == null || (latest.getErrCode() != rgvProtocol.getAlarm().intValue())) {
+                            BasRgvErr rgvErr = basRgvErrService.selectById(rgvProtocol.getAlarm());
+                            String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
+                            BasErrLog basErrLog = new BasErrLog(
+                                    null,    // 缂栧彿
+                                    null,    // 宸ヤ綔鍙�
+                                    now,    // 鍙戠敓鏃堕棿
+                                    null,    // 缁撴潫鏃堕棿
+                                    null,    // 宸ヤ綔鐘舵��
+                                    null,    // 鍏ュ嚭搴撶被鍨�
+                                    1,    // 鍫嗗灈鏈�
+                                    null,    // plc
+                                    null,    // 鐩爣搴撲綅
+                                    null,    // 鐩爣绔�
+                                    null,    // 婧愮珯
+                                    null,    // 婧愬簱浣�
+                                    null,    // 鏉$爜
+                                    (int) rgvProtocol.getAlarm(),    // 寮傚父鐮�
+                                    errName,    // 寮傚父
+                                    1,    // 寮傚父鎯呭喌
+                                    now,    // 娣诲姞鏃堕棿
+                                    null,    // 娣诲姞浜哄憳
+                                    now,    // 淇敼鏃堕棿
+                                    null,    // 淇敼浜哄憳
+                                    "鏃犱换鍔″紓甯�"    // 澶囨敞
+                            );
+                            if (!basErrLogService.insert(basErrLog)) {
+
+                            }
+                        }
+                        // 鏃犲紓甯�
+                    } else {
+                        // 寮傚父淇
+                        if (latest != null && latest.getStatus() == 1) {
+                            latest.setEndTime(now);
+                            latest.setUpdateTime(now);
+                            latest.setStatus(2);
+                            if (!basErrLogService.updateById(latest)) {
+
+                            }
+                        }
+                    }
+                }
+            }
+
+
+//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
+    }
+
 
 
 }

--
Gitblit v1.9.1