From e347197963ccc724e57842d5ce9259f79c68fdb8 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期二, 08 四月 2025 15:53:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  427 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 281 insertions(+), 146 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 13f7fda..17d2993 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -45,6 +45,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -97,6 +98,9 @@
 
     @Value("${wms.url}")
     private String wmsUrl;
+
+    @Value("${camera.url}")
+    private String cameraUrl;
 
     public Short wrkNo = 10000;
 
@@ -922,9 +926,13 @@
                     News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
                     // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
                     if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                        wrkMast.setUpdMk("Y");
-                        wrkMast.setIoPri(14D);
-                        wrkMastMapper.updateById(wrkMast);
+
+                        if (moveLocForDeepLoc(slave, shallowLoc,mark)){
+                            wrkMast.setUpdMk("Y");
+                            wrkMast.setIoPri(14D);
+                            wrkMastMapper.updateById(wrkMast);
+                        }
+
                         // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
                         moveLocForDeepLoc(slave, shallowLoc,mark);
                         // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
@@ -940,6 +948,12 @@
                     }
                 }
             }
+            //涓嬪彂浠诲姟鍓嶈姹傛憚鍍忔満
+            boolean succ = sendACameraRequest(wrkMast.getWrkNo());
+            if (!succ){
+                log.error(wrkMast.getWrkNo()+"浠诲姟涓嬪彂鍓嶈姹傛憚鍍忔満鍚姩澶辫触");
+            }
+
             News.warnNoLog(""+mark+" - 1"+" - 15"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
                     ,crnStn.getRow().shortValue(),crnStn.getBay().shortValue(),crnStn.getLev().shortValue()
                     ,locMast.getRow1().shortValue(),locMast.getBay1().shortValue(),locMast.getLev1().shortValue());
@@ -1087,10 +1101,10 @@
 //                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
 //                                || Cools.isEmpty(waitWrkMast)) {
                             if (Cools.isEmpty(waitWrkMast)) {
-                                wrkMast.setUpdMk("Y");
-                                wrkMastMapper.updateById(wrkMast);
-                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                                moveLocForDeepLoc(slave, shallowLoc,mark);
+                                if (moveLocForDeepLoc(slave, shallowLoc,mark)){
+                                    wrkMast.setUpdMk("Y");
+                                    wrkMastMapper.updateById(wrkMast);
+                                }
                             }
                             News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
                             continue;
@@ -1109,7 +1123,11 @@
                         break;
 //                        return;
                     }
-
+                    //涓嬪彂浠诲姟鍓嶈姹傛憚鍍忔満
+                    boolean succ = sendACameraRequest(wrkMast.getWrkNo());
+                    if (!succ){
+                        log.error(wrkMast.getWrkNo()+"浠诲姟涓嬪彂鍓嶈姹傛憚鍍忔満鍚姩澶辫触");
+                    }
                     News.warnNoLog(""+mark+" - 2"+" - 12"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
                             ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue()
                             ,crnStn.getRow().shortValue(),crnStn.getBay().shortValue(),crnStn.getLev().shortValue());
@@ -1308,7 +1326,11 @@
         if (wrkMastMapper.selectWorking(slave.getId()) != null) {
             return;
         }
-
+        //涓嬪彂浠诲姟鍓嶈姹傛憚鍍忔満
+        boolean succ = sendACameraRequest(wrkMast.getWrkNo());
+        if (!succ){
+            log.error(wrkMast.getWrkNo()+"浠诲姟涓嬪彂鍓嶈姹傛憚鍍忔満鍚姩澶辫触");
+        }
         News.warnNoLog(""+mark+" - 3"+" - 3"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
                 ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue()
                 ,sta.getRow1().shortValue(),sta.getBay1().shortValue(),sta.getLev1().shortValue());
@@ -1634,78 +1656,157 @@
             List<LedCommand> commands = new ArrayList<>();
             // 宸ヤ綔妗i泦鍚�
             List<WrkMast> wrkMasts = new ArrayList<>();
-            for (Integer staNo : led.getStaArr()) {
-                // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                // 鑾峰彇宸ヤ綔妗f暟鎹�
-                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-                if (null == wrkMast) { continue; }
-                wrkMasts.add(wrkMast);
-                // 缁勮鍛戒护
-                LedCommand ledCommand = new LedCommand();
-                ledCommand.setWorkNo(wrkMast.getWrkNo());
-                ledCommand.setIoType(wrkMast.getIoType());
-                // 鍑哄簱妯″紡
-                switch (wrkMast.getIoType()) {
-                    case 1:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
-                    case 101:
-                        ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
-                        break;
-                    case 103:
-                        ledCommand.setTitle("鎷f枡鍑哄簱");
-                        break;
-                    case 104:
-                        ledCommand.setTitle("骞舵澘鍑哄簱");
-                        break;
-                    case 107:
-                        ledCommand.setTitle("鐩樼偣鍑哄簱");
-                        break;
-                    case 110:
-                        ledCommand.setTitle("绌烘澘鍑哄簱");
-                        ledCommand.setEmptyMk(true);
-                        break;
-                    default:
-                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-                        break;
-                }
-                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setStaNo(wrkMast.getStaNo());
-                ledCommand.setBarcode(wrkMast.getBarcode());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+            List<Integer> staArr = new ArrayList<>();
+            // 鑾峰彇鍙夎溅绔欑偣
+            StaProtocol modelStaProtocol = devpThread.getStation().get(led.getModelSta());
+            if (null != modelStaProtocol && modelStaProtocol.isIn()) {
+                for (Integer staNo : led.getInStaArr()) {
+                    // 鑾峰彇鍙夎溅绔欑偣
+                    StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                    if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    // 鑾峰彇宸ヤ綔妗f暟鎹�
+                    WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                    if (null == wrkMast) { continue; }
+                    wrkMasts.add(wrkMast);
+                    // 缁勮鍛戒护
+                    LedCommand ledCommand = new LedCommand();
+                    ledCommand.setWorkNo(wrkMast.getWrkNo());
+                    ledCommand.setIoType(wrkMast.getIoType());
+                    // 鍑哄簱妯″紡
+                    switch (wrkMast.getIoType()) {
+                        case 1:
+                            ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+                            break;
+                        case 10:
+                            ledCommand.setTitle("绌烘澘鍏ュ簱");
+                            break;
+                        case 101:
+                            ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+                            break;
+                        case 103:
+                            ledCommand.setTitle("鎷f枡鍑哄簱");
+                            break;
+                        case 104:
+                            ledCommand.setTitle("骞舵澘鍑哄簱");
+                            break;
+                        case 107:
+                            ledCommand.setTitle("鐩樼偣鍑哄簱");
+                            break;
+                        case 110:
+                            ledCommand.setTitle("绌烘澘鍑哄簱");
+                            ledCommand.setEmptyMk(true);
+                            break;
+                        default:
+                            News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                            break;
+                    }
+                    ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                    ledCommand.setStaNo(wrkMast.getStaNo());
+                    ledCommand.setBarcode(wrkMast.getBarcode());
+                    if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                        List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
 
-                    wrkDetls.forEach(wrkDetl -> {
-                        Double total = 0.0;
-                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
-                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-                        if (Cools.isEmpty(locDetl)) {
-                            total = wrkDetl.getAnfme();
-                        } else {
-                            total = locDetl.getAnfme();
-                        }
-                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                        if (wrkMast.getIoType() == 107) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                    });
+                        wrkDetls.forEach(wrkDetl -> {
+                            Double total = 0.0;
+                            EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+                            LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+                            if (Cools.isEmpty(locDetl)) {
+                                total = wrkDetl.getAnfme();
+                            } else {
+                                total = locDetl.getAnfme();
+                            }
+                            if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                            }
+                            if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                            }
+                            if (wrkMast.getIoType() == 107) {
+                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                            }
+                        });
+                    }
+                    commands.add(ledCommand);
                 }
-                commands.add(ledCommand);
+            }else if (null != modelStaProtocol && modelStaProtocol.isOut()){
+                for (Integer staNo : led.getOutStaArr()) {
+                    // 鑾峰彇鍙夎溅绔欑偣
+                    StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                    if (null == staProtocol || null == staProtocol.getFinishWorkNo() || 0 == staProtocol.getFinishWorkNo() || !staProtocol.isLoading()) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    // 鑾峰彇宸ヤ綔妗f暟鎹�
+                    WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                    if (null == wrkMast) { continue; }
+                    wrkMasts.add(wrkMast);
+                    // 缁勮鍛戒护
+                    LedCommand ledCommand = new LedCommand();
+                    ledCommand.setWorkNo(wrkMast.getWrkNo());
+                    ledCommand.setIoType(wrkMast.getIoType());
+                    // 鍑哄簱妯″紡
+                    switch (wrkMast.getIoType()) {
+                        case 1:
+                            ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+                            break;
+                        case 10:
+                            ledCommand.setTitle("绌烘澘鍏ュ簱");
+                            break;
+                        case 101:
+                            ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+                            break;
+                        case 103:
+                            ledCommand.setTitle("鎷f枡鍑哄簱");
+                            break;
+                        case 104:
+                            ledCommand.setTitle("骞舵澘鍑哄簱");
+                            break;
+                        case 107:
+                            ledCommand.setTitle("鐩樼偣鍑哄簱");
+                            break;
+                        case 110:
+                            ledCommand.setTitle("绌烘澘鍑哄簱");
+                            ledCommand.setEmptyMk(true);
+                            break;
+                        default:
+                            News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                            break;
+                    }
+                    ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                    ledCommand.setStaNo(wrkMast.getStaNo());
+                    ledCommand.setBarcode(wrkMast.getBarcode());
+                    if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                        List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+
+                        wrkDetls.forEach(wrkDetl -> {
+                            Double total = 0.0;
+                            EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+                            LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+                            if (Cools.isEmpty(locDetl)) {
+                                total = wrkDetl.getAnfme();
+                            } else {
+                                total = locDetl.getAnfme();
+                            }
+                            if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                            }
+                            if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                            }
+                            if (wrkMast.getIoType() == 107) {
+                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                            }
+                        });
+                    }
+                    commands.add(ledCommand);
+                }
             }
+
             Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
             // 鑾峰彇LED绾跨▼
             LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
@@ -1749,9 +1850,16 @@
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+            List<Integer> staArr = new ArrayList<>();
             // 鍛戒护闆嗗悎
             boolean reset = true;
-            for (Integer staNo : led.getStaArr()) {
+            StaProtocol modelStaProtocol = devpThread.getStation().get(led.getModelSta());
+            if (null != modelStaProtocol && modelStaProtocol.isIn()) {
+                staArr = led.getInStaArr();
+            } else if (null != modelStaProtocol && modelStaProtocol.isOut()) {
+                staArr = led.getOutStaArr();
+            }
+            for (Integer staNo : staArr) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
                 if (staProtocol == null) { continue; }
@@ -1854,7 +1962,7 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */
-    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
+    private synchronized boolean moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
 
         try {
             News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
@@ -1900,80 +2008,82 @@
 
             if (null == loc) {
                 News.error(""+mark+"moveLocForDeepLoc"+" - 1"+" - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-            }
-
-            // 鑾峰彇宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(0);
-            // 淇濆瓨宸ヤ綔妗�
-            WrkMast wrkMast = new WrkMast();
-            wrkMast.setWrkNo(workNo);
-            wrkMast.setIoTime(new Date());
-            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-            wrkMast.setIoPri(13D);
-            wrkMast.setCrnNo(crn.getId());
-            wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
-            wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-            wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
-            wrkMast.setPicking("N"); // 鎷f枡
-            wrkMast.setExitMk("N"); // 閫�鍑�
-            wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-            wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
-            wrkMast.setLinkMis("N");
-            wrkMast.setAppeTime(new Date());
-            wrkMast.setModiTime(new Date());
-            int res = wrkMastMapper.insert(wrkMast);
-            if (res == 0) {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�");
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-            }
-            // 宸ヤ綔妗f槑缁嗕繚瀛�
-            if (shallowLoc.getLocSts().equals("F")) {
-                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
-                for (LocDetl locDetl : locDetls) {
-                    WrkDetl wrkDetl = new WrkDetl();
-                    wrkDetl.setWrkNo(workNo);
-                    wrkDetl.setIoTime(new Date());
-                    wrkDetl.setAnfme(locDetl.getAnfme());
-                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-                    wrkDetl.setAppeTime(new Date());
-                    wrkDetl.setModiTime(new Date());
-                    if (!wrkDetlService.insert(wrkDetl)) {
-                        News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+//                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                return false;
+            }else {
+                // 鑾峰彇宸ヤ綔鍙�
+                int workNo = commonService.getWorkNo(0);
+                // 淇濆瓨宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(new Date());
+                wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+                wrkMast.setIoPri(13D);
+                wrkMast.setCrnNo(crn.getId());
+                wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+                wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+                wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘锛歒
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+                wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+                wrkMast.setLinkMis("N");
+                wrkMast.setAppeTime(new Date());
+                wrkMast.setModiTime(new Date());
+                int res = wrkMastMapper.insert(wrkMast);
+                if (res == 0) {
+                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�");
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+                // 宸ヤ綔妗f槑缁嗕繚瀛�
+                if (shallowLoc.getLocSts().equals("F")) {
+                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+                    for (LocDetl locDetl : locDetls) {
+                        WrkDetl wrkDetl = new WrkDetl();
+                        wrkDetl.setWrkNo(workNo);
+                        wrkDetl.setIoTime(new Date());
+                        wrkDetl.setAnfme(locDetl.getAnfme());
+                        VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+                        wrkDetl.setAppeTime(new Date());
+                        wrkDetl.setModiTime(new Date());
+                        if (!wrkDetlService.insert(wrkDetl)) {
+                            News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                        }
                     }
                 }
-            }
-            // 淇敼婧愬簱浣嶇姸鎬�
-            if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-                shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                shallowLoc.setModiTime(new Date());
-                if (!locMastService.updateById(shallowLoc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                    throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                // 淇敼婧愬簱浣嶇姸鎬�
+                if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+                    shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+                    shallowLoc.setModiTime(new Date());
+                    if (!locMastService.updateById(shallowLoc)) {
+                        News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                        throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                    }
+                } else {
+                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�");
+                    throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
                 }
-            } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�");
-                throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-            }
-            // 淇敼鐩爣搴撲綅鐘舵��
-            if (loc.getLocSts().equals("O")) {
-                loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                loc.setModiTime(new Date());
-                if (!locMastService.updateById(loc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                    throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                // 淇敼鐩爣搴撲綅鐘舵��
+                if (loc.getLocSts().equals("O")) {
+                    loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    loc.setModiTime(new Date());
+                    if (!locMastService.updateById(loc)) {
+                        News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                        throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触");
+                    throw new CoolException("绉昏浆澶辫触");
                 }
-            } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触");
-                throw new CoolException("绉昏浆澶辫触");
             }
+
         } catch (Exception e) {
             News.error(""+mark+"moveLocForDeepLoc"+" - 8"+" - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return false;
         }
+        return true;
     }
 
     /**
@@ -2264,4 +2374,29 @@
 
     }
 
+    public boolean sendACameraRequest(Integer taskNo){
+        try {
+            WrkMast wrkMast = wrkMastService.selectByWrkNo(taskNo);
+            if (null == wrkMast){
+                return false;
+            }
+
+            String response = new HttpHandler.Builder()
+                    .setUri(cameraUrl)
+                    .setPath("/execute")
+                    .build()
+                    .doGet();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getInteger("code").equals(200)) {
+                wrkMast.setLogErrMemo(jsonObject.getInteger("data").toString());
+                wrkMastService.updateById(wrkMast);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            return false;
+        }
+
+        return true;
+    }
+
 }

--
Gitblit v1.9.1