From 1bfb3738a3560bf106e6751bffea9fb42e71c402 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 13 一月 2026 15:28:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |  320 +++++++++++++++++++++++------------------------------
 1 files changed, 138 insertions(+), 182 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index f80a683..5e13bfe 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -50,6 +50,7 @@
  */
 @Slf4j
 @Service("mainService")
+@Transactional
 public class MainServiceImpl {
 
     @Autowired
@@ -105,7 +106,6 @@
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
      */
-    @Transactional(rollbackFor = Exception.class)
     public synchronized void generateStoreWrkFile() {
         String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
         // 鏍规嵁杈撻�佺嚎plc閬嶅巻
@@ -249,7 +249,6 @@
     /**
      * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
      */
-    @Transactional(rollbackFor = Exception.class)
     public synchronized void stnToCrnStnPick(Integer mark) {
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鎷f枡鍏ュ簱鍙�
@@ -277,7 +276,7 @@
                     staProtocol = staProtocol.clone();
                 }
 
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9999) {
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
                     News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
                     if (wrkMast == null) {
@@ -355,7 +354,7 @@
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
+                    staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
@@ -444,74 +443,54 @@
 
     /**
      * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
-     * 娉ㄦ剰锛氫娇鐢� REQUIRES_NEW 璁╂瘡涓爢鍨涙満鐨勫鐞嗗湪鐙珛浜嬪姟涓墽琛岋紝閬垮厤闀挎椂闂存寔鏈夐攣瀵艰嚧姝婚攣
      */
     public synchronized void crnIoExecute(Integer mark) {
-        try {
-            for (CrnSlave crn : slaveProperties.getCrn()) {
-                try {
-                    // 姣忎釜鍫嗗灈鏈虹殑澶勭悊鍦ㄧ嫭绔嬩簨鍔′腑鎵ц锛屽揩閫熸彁浜ら噴鏀鹃攣
-                    processCrnIo(crn, mark);
-                } catch (Exception e) {
-                    News.error(""+mark+" - crnIoExecute"+" - 澶勭悊鍫嗗灈鏈簕}鏃跺彂鐢熷紓甯�", crn.getId(), e);
-                    // 缁х画澶勭悊涓嬩竴涓爢鍨涙満锛屼笉涓柇鏁翠釜娴佺▼
-                }
-            }
-        } catch (Exception e) {
-            News.error(""+mark+" - crnIoExecute"+" - 鎵ц鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鏃跺彂鐢熷紓甯�", e);
-            }
-    }
 
-    /**
-     * 澶勭悊鍗曚釜鍫嗗灈鏈虹殑鍏ュ嚭搴撲綔涓氾紙浣跨敤鐙珛浜嬪姟锛屽揩閫熸彁浜ら噴鏀鹃攣锛�
-     */
-    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
-    public void processCrnIo(CrnSlave crn, Integer mark) {
-        // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-        if (crnThread == null) {
-            return;
-        }
-        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-        if (crnProtocol == null) {
-            return;
-        }
-        BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
-        if (basCrnp == null) {
-            News.error(""+mark+" - 1"+" - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-            return;
-        }
+        for (CrnSlave crn : slaveProperties.getCrn()) {
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if (crnProtocol == null) {
+                continue;
+            }
+            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+            if (basCrnp == null) {
+                News.error(""+mark+" - 1"+" - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+                continue;
+            }
 
-        // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
-                && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
-            News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
-            // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-            if (crnProtocol.getLastIo().equals("I")) {
-                if (basCrnp.getInEnable().equals("Y")) {
-                    //mark - 1 - ....
-                    this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
-                    crnProtocol.setLastIo("O");
-                } else if (basCrnp.getOutEnable().equals("Y")) {
-                    //mark - 2 - ....
-                    this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
-                    crnProtocol.setLastIo("I");
+            // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
+                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+                if (crnProtocol.getLastIo().equals("I")) {
+                    if (basCrnp.getInEnable().equals("Y")) {
+                        //mark - 1 - ....
+                        this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
+                        crnProtocol.setLastIo("O");
+                    } else if (basCrnp.getOutEnable().equals("Y")) {
+                        //mark - 2 - ....
+                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        crnProtocol.setLastIo("I");
+                    }
+                }
+                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+                else if (crnProtocol.getLastIo().equals("O")) {
+                    if (basCrnp.getOutEnable().equals("Y")) {
+                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        crnProtocol.setLastIo("I");
+                    } else if (basCrnp.getInEnable().equals("Y")) {
+                        this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
+                        crnProtocol.setLastIo("O");
+                    }
                 }
             }
-            // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-            else if (crnProtocol.getLastIo().equals("O")) {
-                if (basCrnp.getOutEnable().equals("Y")) {
-                    this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
-                    crnProtocol.setLastIo("I");
-                } else if (basCrnp.getInEnable().equals("Y")) {
-                    this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
-                    crnProtocol.setLastIo("O");
-                }
-            }
+            // 搴撲綅绉昏浆
+            //mark - 3 - ....
+            this.locToLoc(crn, crnProtocol,mark);
+
         }
-        // 搴撲綅绉昏浆
-        //mark - 3 - ....
-        this.locToLoc(crn, crnProtocol,mark);
     }
 
     /**
@@ -598,22 +577,13 @@
 
                 } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
                     News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-                    // 妫�鏌ユ槸鍚﹀凡瀛樺湪绉诲簱浠诲姟
-                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
                     // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                    if (Cools.isEmpty(waitWrkMast) && (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk()))) {
-                        wrkMast.setUpdMk("Y");
-                        wrkMast.setIoPri(14D);
-                        wrkMastMapper.updateById(wrkMast);
-                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        try {
-                            moveLocForDeepLoc(slave, shallowLoc,mark);
-                            News.warnNoLog("{}浠诲姟宸茬敓鎴愭祬搴撲綅绉昏浆浠诲姟锛屾祬搴撲綅鍙�:{}锛岀户缁鐞嗕笅涓�涓换鍔�", wrkMast.getWrkNo(), shallowLocNo);
-                        } catch (Exception e) {
-                            News.error("{}浠诲姟鐢熸垚娴呭簱浣嶇Щ杞换鍔″け璐ワ紝娴呭簱浣嶅彿:{}", wrkMast.getWrkNo(), shallowLocNo, e);
+                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
+                        if ( moveLocForDeepLoc(slave, shallowLoc,mark)){
+                            wrkMast.setUpdMk("Y");
+                            wrkMast.setIoPri(14D);
+                            wrkMastMapper.updateById(wrkMast);
                         }
-                    } else if (!Cools.isEmpty(waitWrkMast)) {
-                        News.warnNoLog("{}浠诲姟鍏ュ簱绛夊緟涓紝娴呭簱浣嶅凡鏈夌Щ搴撲换鍔★紝娴呭簱浣嶅彿:{}锛岀Щ搴撲换鍔″彿:{}", wrkMast.getWrkNo(), shallowLocNo, waitWrkMast.getWrkNo());
                     }
                     continue;
                 } else if (shallowLoc.getLocSts().equals("Q")) {
@@ -713,15 +683,15 @@
                     outStationAvailable =
                             //鑷姩
                             staProtocol.isAutoing()
-                            //!鏈夌墿
-                            && !staProtocol.isLoading()
-                            //鑳藉嚭
-                            && staDetl.getCanouting() != null
-                            && staDetl.getCanouting().equals("Y")
-                            //宸ヤ綔鍙�
-                            && staProtocol.getWorkNo() == 0
-                            //鍙嚭
-                            && staProtocol.isOutEnable();
+                                    //!鏈夌墿
+                                    && !staProtocol.isLoading()
+                                    //鑳藉嚭
+                                    && staDetl.getCanouting() != null
+                                    && staDetl.getCanouting().equals("Y")
+                                    //宸ヤ綔鍙�
+                                    && staProtocol.getWorkNo() == 0
+                                    //鍙嚭
+                                    && staProtocol.isOutEnable();
                 }
                 // 鍑哄簱绔欏彲鐢ㄦ椂缁х画鎵ц
                 if (outStationAvailable) {
@@ -763,22 +733,13 @@
 //                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
 //                                || Cools.isEmpty(waitWrkMast)) {
                             if (Cools.isEmpty(waitWrkMast)) {
-                                wrkMast.setUpdMk("Y");
-                                wrkMastMapper.updateById(wrkMast);
-                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                                try {
-                                    moveLocForDeepLoc(slave, shallowLoc,mark);
-                                    News.warnNoLog("{}浠诲姟宸茬敓鎴愭祬搴撲綅绉昏浆浠诲姟锛屾祬搴撲綅鍙�:{}锛岀户缁鐞嗕笅涓�涓换鍔�", wrkMast.getWrkNo(), shallowLocNo);
-                                    continue; // 宸茬敓鎴愮Щ搴撲换鍔★紝缁х画澶勭悊涓嬩竴涓换鍔�
-                                } catch (Exception e) {
-                                    News.error("{}浠诲姟鐢熸垚娴呭簱浣嶇Щ杞换鍔″け璐ワ紝娴呭簱浣嶅彿:{}", wrkMast.getWrkNo(), shallowLocNo, e);
-                                    continue; // 鐢熸垚澶辫触锛岀户缁鐞嗕笅涓�涓换鍔�
+                                if (moveLocForDeepLoc(slave, shallowLoc,mark)){
+                                    wrkMast.setUpdMk("Y");
+                                    wrkMastMapper.updateById(wrkMast);
                                 }
-                            } else {
-                                // 宸插瓨鍦ㄧЩ搴撲换鍔★紝绛夊緟绉诲簱瀹屾垚
-                                News.warnNoLog("{}浠诲姟鍑哄簱绛夊緟涓紝娴呭簱浣嶅凡鏈夌Щ搴撲换鍔★紝娴呭簱浣嶅彿:{}锛岀Щ搴撲换鍔″彿:{}", wrkMast.getWrkNo(), shallowLocNo, waitWrkMast.getWrkNo());
-                                continue; // 缁х画澶勭悊涓嬩竴涓换鍔★紝涓嶉樆濉炲綋鍓嶅惊鐜�
                             }
+                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
+                            break;
                         } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
                             News.warnNoLog(""+mark+" - 2"+" - 10"+" - // Q銆丼  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
@@ -1078,7 +1039,6 @@
     /**
      * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
      */
-    @Transactional(rollbackFor = Exception.class)
     public synchronized void storeEmptyPlt(Integer mark) {
 
         for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -1360,7 +1320,6 @@
     /**
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
-    @Transactional(rollbackFor = Exception.class)
     public synchronized void ledExecute() {
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
@@ -1519,10 +1478,10 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * 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" + " - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
+            News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
             List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
             LocMast loc = null;
             for (Integer row : rows) {
@@ -1564,87 +1523,84 @@
             }
 
             if (null == loc) {
-                News.error("" + mark + "moveLocForDeepLoc" + " - 1" + " - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                News.error(""+mark+"moveLocForDeepLoc"+" - 1"+" - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
 //                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                return false;
             }else {
-                mainService.createMoveWrkMast(crn, shallowLoc, loc);
-            }
-
-
-        } catch (Exception e) {
-            News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
-    public synchronized void createMoveWrkMast(CrnSlave crn, LocMast shallowLoc, LocMast loc) {
-        // 鑾峰彇宸ヤ綔鍙�
-        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(""  + "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(""  + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                // 鑾峰彇宸ヤ綔鍙�
+                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("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                    }
+                } 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("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触");
+                    throw new CoolException("绉昏浆澶辫触");
                 }
             }
+
+        } catch (Exception e) {
+            News.error(""+mark+"moveLocForDeepLoc"+" - 8"+" - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return false;
         }
-        // 淇敼婧愬簱浣嶇姸鎬�
-        if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-            shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-            shallowLoc.setModiTime(new Date());
-            if (!locMastService.updateById(shallowLoc)) {
-                News.errorNoLog(""  + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-            }
-        } else {
-            News.errorNoLog(""  + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
-            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-        }
-        // 淇敼鐩爣搴撲綅鐘舵��
-        if (loc.getLocSts().equals("O")) {
-            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-            loc.setModiTime(new Date());
-            if (!locMastService.updateById(loc)) {
-                News.errorNoLog(""  + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-            }
-        } else {
-            News.errorNoLog(""  + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
-            throw new CoolException("绉昏浆澶辫触");
-        }
+        return true;
     }
 
     /**

--
Gitblit v1.9.1