From cb2d5d9ac39efdb38d8a301f7396ac1ab171efc1 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 09 五月 2024 21:49:11 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  306 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 208 insertions(+), 98 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 8263c0a..d2181a2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -90,6 +90,8 @@
     private BasCrnErrorMapper basCrnErrorMapper;
     @Autowired
     private EmptyBarrelInService emptyBarrelInService;
+    @Autowired
+    private WrkMastStaService wrkMastStaService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -2299,7 +2301,7 @@
                 } else {
                     staProtocol = staProtocol.clone();
                 }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
+//                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
                     // 鏌ヨ宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo());
                     if (wrkMast == null) {
@@ -2334,7 +2336,7 @@
 
                     }
 
-                }
+//                }
             }
         }
     }
@@ -2491,111 +2493,219 @@
         for (RgvSlave rgvSlave:slaveProperties.getRgv()){
             ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol.getModeType() != RgvModeType.AUTO){
+            if (Cools.isEmpty(rgvProtocol)){
                 continue;
-            }
-
-
-            int workNo1 = 0;
-            int workNo2 = 0;
-            short souSta1 = 0;
-            short sta1 = 0;
-            short souSta2 = 0;
-            short sta2 = 0;
-
-            //宸ヤ綅涓�浠诲姟
-            for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
-                if (staProtocol == null) {
-                    break;
-//                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){
-                    if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
-                        WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
-                        if (Cools.isEmpty(wrkMast)){
-                            log.error("鏈壘鍒板伐浣滄。");
-                            continue;
-                        }
-                        workNo1 = wrkMast.getWrkNo();
-                        souSta1 = inStn.getSourceStaNo().shortValue();
-                        sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
-                        break;
-                    }
-                    workNo1 = workNo++;
-                    souSta1 = inStn.getSourceStaNo().shortValue();
-                    sta1 = inStn.getStaNo().shortValue();
-                    break;
-                }
-            }
-
-
-            //宸ヤ綅浜屼换鍔�
-            for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
-                if (souSta1 == inStn.getSourceStaNo()){
-                    continue;
-                }
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
-                if (staProtocol == null) {
-                    break;
-//                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){
-                    if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
-                        WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
-                        if (Cools.isEmpty(wrkMast)){
-                            log.error("鏈壘鍒板伐浣滄。");
-                            continue;
-                        }
-                        workNo2 = wrkMast.getWrkNo();
-                        souSta2 = inStn.getSourceStaNo().shortValue();
-                        sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
-                        break;
-                    }
-                    workNo2 = workNo++;
-                    souSta2 = inStn.getSourceStaNo().shortValue();
-                    sta2 = inStn.getStaNo().shortValue();
-                    break;
-                }
-            }
-
-            //rgv浠诲姟涓嬪彂--------------------------------------------------------------
-            RgvCommand command = new RgvCommand();
-            command.setRgvNo(rgvSlave.getId()); // RGV缂栧彿
-            //宸ヤ綅1
-            command.setTaskNo1(workNo1); // 宸ヤ綔鍙�
-            command.setSourceStaNo1(souSta1); // 婧愮珯
-            command.setDestinationStaNo1(sta1);  // 鐩爣绔�
-            command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
-
-            //宸ヤ綅2
-            command.setTaskNo2(workNo2); // 宸ヤ綔鍙�
-            command.setSourceStaNo2(souSta2); // 婧愮珯
-            command.setDestinationStaNo2(sta2);  // 鐩爣绔�
-            command.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
-
-            if (workNo1 != 0 && workNo2 ==0){
-                command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐�
-            } else if (workNo1 == 0 && workNo2 !=0) {
-                command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐�
             }else {
-                command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐�
+                rgvProtocol = rgvProtocol.clone();
             }
-            command.setCommand(false);
-            MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command));
-            log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command));
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){
+                boolean work1 = false;
+                boolean work2 = false;
+                int workNo1 = 0;
+                int workNo2 = 0;
+                short souSta1 = 0;
+                short sta1 = 0;
+                short souSta2 = 0;
+                short sta2 = 0;
+
+                //宸ヤ綅涓�浠诲姟
+                for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
+                    if (staProtocol == null) {
+                        break;
+//                    continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
+                        if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
+                            WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
+                            if (Cools.isEmpty(wrkMast)){
+                                log.error("鏈壘鍒板伐浣滄。");
+                                continue;
+                            }
+                            workNo1 = wrkMast.getWrkNo();
+                            souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),wrkMast.getSourceStaNo());
+                            sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+                            work1 = true;
+                            devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                            break;
+                        }
+                        workNo1 = workNo++;
+                        souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
+                        sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+                        work1 = true;
+                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                        break;
+                    }
+                }
+
+
+                //宸ヤ綅浜屼换鍔�
+                for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
+                    if (souSta1 == inStn.getSourceStaNo()){
+                        continue;
+                    }
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
+                    if (staProtocol == null) {
+                        break;
+//                    continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk()){
+                        if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
+                            WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
+                            if (Cools.isEmpty(wrkMast)){
+                                log.error("鏈壘鍒板伐浣滄。");
+                                continue;
+                            }
+                            workNo2 = wrkMast.getWrkNo();
+                            souSta2 = inStn.getSourceStaNo().shortValue();
+                            sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+                            work2 = true;
+                            devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                            break;
+                        }
+                        workNo2 = workNo++;
+                        souSta2 = inStn.getSourceStaNo().shortValue();
+                        sta2 = inStn.getStaNo().shortValue();
+                        work2 = true;
+                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                        break;
+                    }
+                }
+
+                if (work1 || work2){
+                    //rgv浠诲姟涓嬪彂--------------------------------------------------------------
+                    RgvCommand command = new RgvCommand();
+                    command.setRgvNo(rgvSlave.getId()); // RGV缂栧彿
+                    //宸ヤ綅1
+                    command.setTaskNo1(workNo1); // 宸ヤ綔鍙�
+                    command.setSourceStaNo1(souSta1); // 婧愮珯
+                    command.setDestinationStaNo1(sta1);  // 鐩爣绔�
+                    command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
+
+                    //宸ヤ綅2
+                    command.setTaskNo2(workNo2); // 宸ヤ綔鍙�
+                    command.setSourceStaNo2(souSta2); // 婧愮珯
+                    command.setDestinationStaNo2(sta2);  // 鐩爣绔�
+                    command.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
+
+                    if (workNo1 == 0 && workNo2 !=0){
+                        command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐�
+                    } else if (workNo1 != 0 && workNo2 ==0) {
+                        command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐�
+                    }else {
+                        command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐�
+                    }
+                    command.setCommand(false);
+                    rgvTaskSave(command);
+                    MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command));
+                    log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command));
+                }
+            }
+
+
+
+
 
         }
     }
 
 
     public synchronized void RGVTaskOver() {
+        for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+            ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (Cools.isEmpty(rgvProtocol)){
+                continue;
+            }else {
+                rgvProtocol = rgvProtocol.clone();
+            }
 
+            //宸ヤ綅涓�浠诲姟瀹屾垚
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+                if (Cools.isEmpty(wrkMastSta)){
+                    log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    continue;
+                }
+                for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
+//                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+//                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+                            continue;
+                        }
+                    }
+
+                }
+
+                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
+                log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo());
+            }
+
+            //宸ヤ綅浜屼换鍔″畬鎴�
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+                if (Cools.isEmpty(wrkMastSta)){
+                    log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
+                    continue;
+                }
+                for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
+//                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+//                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+                            continue;
+                        }
+                    }
+
+                }
+
+                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
+                log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2());
+            }
+        }
     }
+
+    public boolean rgvTaskSave(RgvCommand command){
+        Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1());
+        WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
+        if (!Cools.isEmpty(wrkMastSta1)){
+            wrkMastStaService.delete(wrkMastStaWrapper);
+        }
+        WrkMastSta wrkMastSta = new WrkMastSta();
+        wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1()));
+        wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2()));
+        wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue());
+        wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue());
+        wrkMastSta.setStaStart(command.getSourceStaNo2().intValue());
+        wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue());
+        wrkMastSta.setWrkSts(1);
+        Date now = new Date();
+        wrkMastSta.setCreateTime(now);
+        wrkMastSta.setUpdateTime(now);
+        wrkMastSta.setWrkCrn(command.getRgvNo());
+        wrkMastSta.setWrkType(command.getTaskMode().intValue());
+        return wrkMastStaService.insert(wrkMastSta);
+    }
+
 }

--
Gitblit v1.9.1