From 872c89925ee840594d06bc65fcc7b98f5e1072bd Mon Sep 17 00:00:00 2001
From: zjj <zjj123456>
Date: 星期三, 13 十一月 2024 08:20:47 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  287 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 284 insertions(+), 3 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 493e6a0..026f4f8 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -283,6 +283,241 @@
         }
 
     }
+    public synchronized void generateStoreWrkFile7() {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鍏ュ簱鍙�
+            for (DevpSlave.Sta inSta : devp.getInSta7()) {
+
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+
+                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
+
+                // 灏哄妫�娴嬪紓甯�
+                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.isBan()){
+
+                    // 閫�鍥�
+                    if (back) {
+                        // led 寮傚父鏄剧ず
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                        if (ledThread != null) {
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+                        }
+                        continue;
+                    }
+
+                    if (staProtocol.getStaNoEnd() != 2001){
+                        log.error(staProtocol.getStaNo()+"绔欑偣锛岀┖妗讹紝闈炴硶鐩爣绔欙紒锛侊紒锛侊紒锛�"+staProtocol.getStaNoEnd().toString());
+                        continue;
+                    }
+                    Integer workNo1 = commonService.getWorkNo(3);
+                    Date now = new Date();
+                    // 淇濆瓨宸ヤ綔妗�
+                    WrkMast wrkMast = new WrkMast();
+                    wrkMast.setWrkNo(workNo1);
+                    wrkMast.setIoTime(now);
+                    wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鍒濆
+                    wrkMast.setIoType(199); // 鍏ュ嚭搴撶姸鎬侊細 199.杞Щ
+                    wrkMast.setIoPri(15D);
+                    wrkMast.setCrnNo(0);
+                    wrkMast.setSourceStaNo(staProtocol.getStaNo().intValue()); // 婧愮珯
+                    wrkMast.setStaNo(staProtocol.getStaNoEnd().intValue()); // 鐩爣绔�
+                    wrkMast.setFullPlt("N"); // 婊℃澘
+                    wrkMast.setPicking("N"); // 鎷f枡
+                    wrkMast.setExitMk("N"); // 閫�鍑�
+                    wrkMast.setEmptyMk("Y"); // 绌烘澘
+                    wrkMast.setBarcode("KB888888"); // 鎵樼洏鐮�
+                    wrkMast.setLinkMis("N");
+                    wrkMast.setCtnNo("Y");  // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪
+                    wrkMast.setAppeTime(now);
+                    wrkMast.setModiTime(now);
+                    int res = wrkMastMapper.insert(wrkMast);
+                    if (res == 0) {
+//                                throw new CoolException("");
+                        log.error(staProtocol.getStaNo()+"绔欑偣锛岀┖妗讹紝淇濆瓨宸ヤ綔妗d富妗eけ璐ワ紒锛侊紒锛侊紒锛�"+now.toString());
+                        continue;
+                    }
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+
+//                    StaProtocol staProtocol1 = new StaProtocol();
+                    staProtocol.setWorkNo(workNo1.shortValue());
+                    staProtocol.setStaNo((short)3001);
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    ledThread.errorReset();
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    if (!result) {
+                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                    }
+                    continue;
+                }
+
+                if (staProtocol.isBarcodeErr()) {
+                    errMsg = errMsg+"鎵爜澶辫触";
+                    back = true;
+                }
+                // 閫�鍥�
+                if (back) {
+                    // led 寮傚父鏄剧ず
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                    if (ledThread != null) {
+                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+                    }
+                    continue;
+                }
+
+                if (!Cools.isEmpty(barcode)) {
+                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                        continue;
+                    }
+                } else {
+                    // led 寮傚父鏄剧ず
+//                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+//                    if (ledThread != null) {
+//                        String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+//                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                    }
+                    continue;
+                }
+                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
+                        && staProtocol.isInEnable()
+                        && !staProtocol.isEmptyMk()
+                        && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990)
+                        && staProtocol.isPakMk()) {
+
+                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                        if (ledThread != null) {
+                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                        }
+//                        staProtocol.setWorkNo((short)9999);
+//                        staProtocol.setStaNo((short)(staProtocol.getStaNo()-1));
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                        if (!result) {
+//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                        }
+                        continue;
+                    }
+
+                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+                    WrkMast wrkMast = new WrkMast();
+                    if (barcode.length() == 8) {
+                        wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+                        if (wrkMast != null) {
+                            log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+                            continue;
+                        }
+                    }
+//                     鑾峰彇鍏ュ簱閫氱煡妗�
+//                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
+//                    if (waitPakins.isEmpty()) {
+//                        log.error("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode);
+//                        continue;
+//                    }
+
+                    try {
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(barcode);
+                        param.setIoType(1);
+                        param.setSourceStaNo(inSta.getStaNo());
+                        param.setLocType1(locTypeDto.getLocType1());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/pakin/loc/v1")
+                                .setJson(JSON.toJSONString(param))
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                        if (jsonObject.getInteger("code").equals(200)) {
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+                            barcodeThread.setBarcode("");
+                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            ledThread.errorReset();
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            if (!result) {
+                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            }
+                        } else if(jsonObject.getInteger("code").equals(700)) {
+//                            staProtocol.setWorkNo((short) 9999);
+//                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            // led 寮傚父鏄剧ず
+//                            if (ledThread != null) {
+//                                String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
+//                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                            }
+                            log.error(barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒");
+                            // led 寮傚父鏄剧ず
+                            ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                            if (ledThread != null) {
+                                String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
+                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                            }
+                        } else {
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                        }
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    }
+                }
+
+            }
+        }
+
+    }
 
     /**
      * wms鍏ュ簱
@@ -2554,6 +2789,11 @@
                 }
                 //宸ヤ綅涓�浠诲姟
                 for (RgvSlave.Sta inStn :  inStn1){
+                    work1 = false;
+                    workNo1 = 0;
+                    souSta1 = 0;
+                    sta1 = 0;
+                    type = 0;
                     if (rgvSlave.getId() == 1 && inStn.getSourceStaNo() == 2114){
                         continue;
                     }
@@ -2575,6 +2815,11 @@
                             workNo1 = wrkMast.getWrkNo();
                             souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),staProtocol.getSiteId());
                             sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+                            Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta1);
+                            BasDevp devp = basDevpService.selectById(staNo);
+                            if (devp.getWrkNo()!=0 || devp.getLoading().equals("Y")){
+                                continue;
+                            }
                             work1 = true;
                             devpThread.setPakMk(inStn.getSourceStaNo(),false);
                             break;
@@ -2597,6 +2842,11 @@
                                 sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
                             } else {
                                 log.error("4007绔欑偣锛屾《鍨�4锛岄潪娉曠洰鏍囩珯锛侊紒锛侊紒锛侊紒"+staProtocol.getStaNoEnd().toString());
+                                continue;
+                            }
+                            Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta1);
+                            BasDevp devp = basDevpService.selectById(staNo);
+                            if (devp.getWrkNo()!=0 || devp.getLoading().equals("Y")){
                                 continue;
                             }
                             workNo1 = commonService.getWorkNo(3);
@@ -2626,6 +2876,7 @@
                                 log.error("4007绔欑偣锛屾《鍨�4锛屼繚瀛樺伐浣滄。涓绘。澶辫触锛侊紒锛侊紒锛侊紒"+now.toString());
                                 continue;
                             }
+                            type = 2;
                         } else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) {
                             sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2301);
                         } else {
@@ -2638,7 +2889,11 @@
                         if(inStn.getSourceStaNo() == 2102){
                             weight = staProtocol.getWeight().doubleValue()/10;
                         }
-
+                        Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta1);
+                        BasDevp devp = basDevpService.selectById(staNo);
+                        if (devp.getWrkNo()!=0 || devp.getLoading().equals("Y")){
+                            continue;
+                        }
                         work1 = true;
                         if (inStn.getSourcePlcId() == 4 || inStn.getSourcePlcId() ==5){ //鐏岃绔欓渶瑕佽幏鍙栬緭閫佺嚎鐗╂枡浠g爜
                             matnr = staProtocol.getMatnr();
@@ -2658,6 +2913,11 @@
                 if (rgvSlave.getId() != 3){
                     //宸ヤ綅浜屼换鍔�
                     for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
+                        work2 = false;
+                        workNo2 = 0;
+                        souSta2 = 0;
+                        sta2 = 0;
+                        type2 = 0;
                         if (souSta1 == inStn.getSourceStaNo()){
                             continue;
                         }
@@ -2682,6 +2942,12 @@
                                 workNo2 = wrkMast.getWrkNo();
                                 souSta2 = Utils.getRgvStaNo(rgvSlave.getId(),staProtocol.getSiteId());
                                 sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+                                Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta2);
+                                BasDevp devp2 = basDevpService.selectById(staNo);
+                                if (devp2.getWrkNo()!=0 || devp2.getLoading().equals("Y")){
+                                    continue;
+                                }
+
                                 work2 = true;
                                 devpThread.setPakMk(inStn.getSourceStaNo(),false);
                                 break;
@@ -2702,6 +2968,11 @@
                                     sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
                                 } else {
                                     log.error("4007绔欑偣锛屾《鍨�4锛岄潪娉曠洰鏍囩珯锛侊紒锛侊紒锛侊紒"+staProtocol.getStaNoEnd().toString());
+                                    continue;
+                                }
+                                Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta2);
+                                BasDevp devp2 = basDevpService.selectById(staNo);
+                                if (devp2.getWrkNo()!=0 || devp2.getLoading().equals("Y")){
                                     continue;
                                 }
                                 workNo2 = commonService.getWorkNo(3);
@@ -2731,6 +3002,7 @@
                                     log.error("4007绔欑偣锛屾《鍨�4锛屼繚瀛樺伐浣滄。涓绘。澶辫触锛侊紒锛侊紒锛侊紒"+now.toString());
                                     continue;
                                 }
+                                type2 = 2;
                             } else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) {
                                 sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2301);
                             } else {
@@ -2743,6 +3015,11 @@
 
                             if(inStn.getSourceStaNo() == 2102){
                                 weight2 = staProtocol.getWeight().doubleValue()/10;
+                            }
+                            Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta2);
+                            BasDevp devp2 = basDevpService.selectById(staNo);
+                            if (devp2.getWrkNo()!=0 || devp2.getLoading().equals("Y")){
+                                continue;
                             }
 
                             work2 = true;
@@ -3037,7 +3314,9 @@
                             staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
                             if (wrkMastSta.getType() == 1){
                                 staProtocol.setStaNo((short) 9999);
-                            }else {
+                            } else if (wrkMastSta.getType() == 2){//杞繍
+                                staProtocol.setStaNo((short) 2114);
+                            } else {
                                 staProtocol.setStaNo((short) 2106);
                             }
                             staProtocol.setMatnr(wrkMastSta.getMatnr1());
@@ -3074,7 +3353,9 @@
                             staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue());
                             if (wrkMastSta.getType2() == 1){
                                 staProtocol.setStaNo((short) 9999);
-                            }else {
+                            } else if (wrkMastSta.getType() == 2){//杞繍
+                                staProtocol.setStaNo((short) 2114);
+                            } else {
                                 staProtocol.setStaNo((short) 2106);
                             }
 

--
Gitblit v1.9.1