From e246d51d8a38b0a9d4ac6204e4b953d973929f71 Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期三, 01 二月 2023 12:54:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  159 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 155 insertions(+), 4 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 678debb..2f671c0 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasCrnErrorMapper;
+import com.zy.asrs.mapper.BasDevpMapper;
 import com.zy.asrs.mapper.WrkChargeMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
@@ -91,6 +92,8 @@
     private CommonService commonService;
     @Autowired
     private WrkChargeMapper wrkChargeMapper;
+    @Autowired
+    private BasDevpMapper basDevpMapper;
 
     /**
      * 缁勬墭
@@ -102,7 +105,7 @@
             // 閬嶅巻鍏ュ簱鍙�
             for (DevpSlave.Sta inSta : devp.getInSta()) {
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 if (staProtocol == null) {
                     continue;
@@ -110,6 +113,25 @@
                     staProtocol = staProtocol.clone();
                 }
                 Short workNo = staProtocol.getWorkNo();
+
+                //20230201. 2鍙峰爢鍨涙満鏈夊嚭搴撲换鍔℃椂锛岀姝㈡柊鏉垮叆搴�
+                if ( inSta.getStaNo()==103 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) {
+                    //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                    staProtocol.setWorkNo((short) 9999);
+                    staProtocol.setStaNo((short)100);
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    continue;
+                }
+                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+                    //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                    staProtocol.setWorkNo((short) 9999);
+                    staProtocol.setStaNo((short)200);
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    continue;
+                }
+
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading()
                         && staProtocol.isInEnable()
@@ -304,10 +326,46 @@
                         case 104:
                         case 108:
                             staNo = 103;
+                            List<BasDevp> basDevps1 = basDevpMapper.getLoading(103);
+                            if (basDevps1.size()!=0){
+                                continue;
+                            }
+                            List<WrkMast> wrkMasts1 = wrkMastMapper.selectWrkStsAndIoType(103);
+                            if (wrkMasts1.size()!=0){
+                                boolean flag = false;
+                                for (WrkMast wrkMast1:wrkMasts1){
+                                    if (!wrkMast1.getWrkNo().equals(wrkMast.getWrkNo())){
+                                        flag = true;
+                                        break;
+                                    }
+                                }
+                                if (flag)  {
+                                    News.error("MainServiceImpl  324琛�"+"104绔欑偣瀛樺湪璐х墿锛屾崱鏂欑洏鐐硅揣鐗╂殏鏃朵笉閲嶆柊鍏ュ簱锛侊紒锛�");
+                                    continue;
+                                }
+                            }
                             break;
                         case 204:
                         case 208:
                             staNo = 203;
+                            List<BasDevp> basDevps2 = basDevpMapper.getLoading(203);
+                            if (basDevps2.size()!=0){
+                                continue;
+                            }
+                            List<WrkMast> wrkMasts2 = wrkMastMapper.selectWrkStsAndIoType(203);
+                            if (wrkMasts2.size()!=0){
+                                boolean flag = false;
+                                for (WrkMast wrkMast1:wrkMasts2){
+                                    if (!wrkMast1.getWrkNo().equals(wrkMast.getWrkNo())){
+                                        flag = true;
+                                        break;
+                                    }
+                                }
+                                if (flag)  {
+                                    News.error("MainServiceImpl  346琛�"+"204绔欑偣瀛樺湪璐х墿锛屾崱鏂欑洏鐐硅揣鐗╂殏鏃朵笉閲嶆柊鍏ュ簱锛侊紒锛�");
+                                    continue;
+                                }
+                            }
                             break;
                         default:
                             News.error("{}浠诲姟鍐嶅叆搴撳け璐ワ紝绯荤粺鏁版嵁寮傚父锛�", wrkMast.getWrkNo());
@@ -489,6 +547,7 @@
                             LocMast sourceLocMast = locMastService.selectById(sourceLocNo);
                             if (sourceLocMast.getLocSts().equals("P")) {
                                 sourceLocMast.setLocSts("O");
+                                sourceLocMast.setBarcode("");
                                 sourceLocMast.setModiTime(new Date());
                                 if (!locMastService.updateById(sourceLocMast)) {
                                     throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
@@ -984,6 +1043,17 @@
             WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo());
             if (wrkMast == null) {
                 continue;
+            }
+
+            if (wrkMast.getCrnNo().equals(2)){
+                if (wrkMast.getWrkSts() == 11 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){
+                    Integer sour = wrkMast.getSourceStaNo();
+                    List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType0(sour);
+                    if (wrkMasts.size() > 0){
+                        News.error("MainServiceImpl  1028琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
+                        continue;
+                    }
+                }
             }
 
             // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
@@ -1494,8 +1564,11 @@
             if(!Cools.isEmpty(deeplocs)){
                 for(String deepLocNo : deeplocs) {
                     LocMast deepLoc = locMastService.selectById(deepLocNo);
-//                WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(deepLocNo);
-                    if(deepLoc != null && !deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("O")){
+                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(deepLocNo);
+                    if(deepLoc != null && !deepLoc.getLocSts().equals("F")
+                            && !deepLoc.getLocSts().equals("D")
+                            && !deepLoc.getLocSts().equals("O")
+                            && (waitWrkMast!=null && waitWrkMast.getWrkSts()<17)){
                         News.error("绉诲簱鍐嶅洖搴撴椂锛屾繁搴撲綅缁勬繁搴撲綅鐘舵�佷负浣滀笟涓� ===>> deepLoc={},loc_sts={}", deepLoc.getLocNo(), deepLoc.getLocSts());
                         flag = true;
                         break;
@@ -3149,13 +3222,32 @@
             // 閬嶅巻绌烘澘鍏ュ簱鍙�
             for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
                 // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
                 if (staProtocol == null) {
                     continue;
                 } else {
                     staProtocol = staProtocol.clone();
                 }
+
+                //20230201. 2鍙峰爢鍨涙満鏈夊嚭搴撲换鍔℃椂锛岀姝㈡柊鏉垮叆搴�
+                if ( emptyInSta.getStaNo()==103 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) {
+                    //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                    staProtocol.setWorkNo((short) 9999);
+                    staProtocol.setStaNo((short)100);
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    continue;
+                }
+                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+                    //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                    staProtocol.setWorkNo((short) 9999);
+                    staProtocol.setStaNo((short)200);
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    continue;
+                }
+
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing()
                         && staProtocol.isLoading()
@@ -3809,4 +3901,63 @@
         }
     }
 
+    /**
+     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+     */
+    public synchronized void ioConvert() {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204;
+                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
+                    switch (inSta.getStaNo()) {
+                        case 103://1F
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf1F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()+1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()+1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf1F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 203://2F
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                    }
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }

--
Gitblit v1.9.1