From a48548b110cc1c80e5ee5e5eedeca8bb31e3f295 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期五, 31 五月 2024 19:02:30 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |  309 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 286 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 5a91cb0..825a213 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -7,13 +7,11 @@
 import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.LocMoveParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
-import com.zy.asrs.entity.param.PickParam;
+import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.*;
 import com.zy.common.model.DetlDto;
 import com.zy.common.service.AgvCommonService;
+import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,6 +53,10 @@
     private AgvLocMastService agvLocMastService;
     @Autowired
     private AgvCommonService agvCommonService;
+    @Autowired
+    private AgvWrkMastLogService agvWrkMastLogService;
+    @Autowired
+    private AgvWrkDetlLogService agvWrkDetlLogService;
 
 
     /*
@@ -68,19 +70,24 @@
         }
         param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2)));
 
-//        //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勬墭鐩樻潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯�
+//        //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勮揣鏋舵潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯�
 //        if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) {
 //            throw new CoolException(param.getBarcode() + "鏂欐兂鐮佸凡瀛樺湪AGV鍏ュ簱閫氱煡妗d腑");
 //        }
 
-        //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
+        //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
         if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){
-            throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�");
+            throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�");
         }
 
-        //鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
+        //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
+        if(!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode",param.getBarcode())))){
+            throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV搴撳瓨涓绘。涓�");
+        }
+
+        //鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
         if(!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))){
-            throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑");
+            throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑");
         }
 
         if (Cools.isEmpty(param.getOrderNo())) {
@@ -111,7 +118,8 @@
 
         for (PickParam.Pick pick : pickParams.getPicks()) {
             if (pick.getCount().equals(0D)) continue;
-            AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()));
+            Double count = 0.0D;
+            AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code",pick.getSuppCode()));
             if (Cools.isEmpty(agvWrkDetl)) {
                 AgvWrkDetl wrkDetl = new AgvWrkDetl();
                 Mat mat = matService.selectByMatnr(pick.getMatnr());
@@ -123,7 +131,7 @@
                 wrkDetl.setOrderNo(pick.getOrderNo());
                 wrkDetl.setIoTime(now);
                 wrkDetl.setAnfme(pick.getCount()); // 鏁伴噺
-                wrkDetl.setSuppCode(pick.getSuppCode()); // 鎵樼洏鏉$爜
+                wrkDetl.setSuppCode(pick.getSuppCode()); // 璐ф灦鏉$爜
                 wrkDetl.setAppeUser(userId);
                 wrkDetl.setAppeTime(now);
                 wrkDetl.setModiUser(userId);
@@ -133,7 +141,7 @@
             } else {
                 Double anfme = agvWrkDetl.getAnfme() + pick.getCount();
                 agvWrkDetl.setAnfme(anfme);
-                agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()));
+                agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).eq("supp_code",pick.getSuppCode()));
 
             }
 
@@ -174,7 +182,7 @@
     private void NoOrderComb(CombParam param, Long userId){
         List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,null);
 
-        //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
+        //鐢ㄤ簬缁熶竴涓�涓揣鏋朵笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
         Date now = new Date();
         detlDtos.forEach(detlDto -> {
             syncWaitPakin(detlDto,"",param.getBarcode(),userId,now);
@@ -198,7 +206,7 @@
         }
         // 鐢ㄤ簬鐢熸垚鍏ュ簱閫氱煡妗f墍闇�鍙傛暟
         List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,order);
-        //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
+        //鐢ㄤ簬缁熶竴涓�涓揣鏋朵笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
         Date now = new Date();
         for (DetlDto detlDto : detlDtos) {
             //鍚屾鐢熸垚鍏ュ簱閫氱煡妗�
@@ -221,7 +229,7 @@
             }
 
             DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType());
-            //鍚屼竴鎵樼洏涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗�
+            //鍚屼竴璐ф灦涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗�
             if (DetlDto.has(detlDtos, detlDto)) {
                 DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode());
                 assert one != null;
@@ -264,8 +272,8 @@
         waitPakin.sync(mat);
         waitPakin.setOrderNo(orderNo);   // 鍗曟嵁缂栧彿
         waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
-        //waitPakin.setZpallet(zpallet);   // 鎵樼洏鐮�
-        waitPakin.setSuppCode(zpallet);   // 鎵樼洏鐮�
+        //waitPakin.setZpallet(zpallet);   // 璐ф灦鐮�
+        waitPakin.setSuppCode(zpallet);   // 璐ф灦鐮�
         waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
         waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
         waitPakin.setStatus("Y");    // 鐘舵��
@@ -310,7 +318,7 @@
         }
 
         if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){
-            throw new CoolException("璇ユ枡绠辨湭缁勬墭锛屾棤娉曠粦瀹氱珯鐐�");
+            throw new CoolException("璇ヨ揣鏋舵湭缁勬墭锛屾棤娉曠粦瀹氱珯鐐�");
         }
 
         AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode));
@@ -385,7 +393,19 @@
                 ioType = 11;
             }
         } else {
-            ioType = 12;
+            if (agvLocMast.getFloor() != floor) {
+                if (floor==1 && agvLocMast.getFloor()!=1){
+                    ioType = 121;
+                }else {
+                    if (agvLocMast.getFloor() == 1) {
+                        throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍗曡皟鎷紒");
+                    } else {
+                        ioType = 12;
+                    }
+                }
+            } else {
+                ioType = 11;
+            }
         }
         Date now = new Date();
         //鏌ヨ宸ヤ綔妗�
@@ -401,7 +421,11 @@
         //鐢熸垚宸ヤ綔妗�
         AgvWrkMast mast = new AgvWrkMast();
         //宸ヤ綔鐘舵��
-        mast.setWrkSts(201L);
+        if (ioType==121) {
+            mast.setWrkSts(11L);
+        }else {
+            mast.setWrkSts(201L);
+        }
         //鍏ュ嚭搴撶被鍨�
         mast.setIoType(ioType);
         mast.setIoTime(now);
@@ -411,9 +435,9 @@
         mast.setSourceLocNo(agvLocMast.getLocNo());
         //鐩爣绔欑偣
         mast.setLocNo(locMast.getLocNo());
-        //瀹瑰櫒缂栫爜
+        //璐ф灦缂栫爜
         mast.setBarcode(agvLocMast.getBarcode());
-        //瀹瑰櫒绫诲瀷
+        //璐ф灦绫诲瀷
         mast.setWhsType(30);
 
         mast.setAppeUser(userId);
@@ -423,7 +447,7 @@
         if (!agvWrkMastService.insertByIncrease(mast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
-        if (!agvLocMast.getLocSts().equals("F")) {
+        if (agvLocMast.getLocSts().equals("F")) {
             AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locMast.getLocNo()).eq("source_loc_no",agvLocMast.getLocNo()));
             //鐢熸垚宸ヤ綔妗f槑缁�
             List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
@@ -442,6 +466,18 @@
                 }
             });
         }
+
+        // 濡傛灉褰撳墠浠诲姟鏄澹充簩涓夋ゼ鍥為��涓�妤肩殑 鍥炴粴璋冩嫧鍗�
+        if (ioType == 12 && locMast.getFloor() == 1) {
+            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
+            for (AgvLocDetl agvLocDetl : agvLocDetls) {
+                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("order_no", "DB" + agvLocDetl.getOrderNo()));
+                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
+                if (!orderDetlService.updateById(orderDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+                }
+            }
+        }
         //鏇存柊鐩爣搴撲綅鐘舵��
         updateAgvLocMast(agvLocMast,"P");
         updateAgvLocMast(locMast,"Q");
@@ -449,6 +485,196 @@
     }
 
     /*
+       璋冩嫧绂诲満
+    */
+    @Override
+    @Transactional
+    @Synchronized
+    public String allocationOut(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
+        Integer oldWrkNo = agvWrkMast.getWrkNo();
+        if (Cools.isEmpty(agvWrkMast)) {
+            throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
+        }
+
+        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+        agvWrkMastLogService.save(agvWrkMast);
+        agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
+        //鍒犻櫎AGV宸ヤ綔妗�
+        agvWrkMastService.deleteById(agvWrkMast);
+        //鐢熸垚宸ヤ綔妗�
+        AgvWrkMast wrkMast = createWrkMast(111, 210L, "", "", agvWrkMast.getBarcode(), now, userId, 30, agvWrkMast.getCrnNo());
+        // 鏇存柊宸ヤ綔鏄庣粏
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()));
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            // 淇濇寔宸ヤ綔妗f槑缁�
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            agvWrkDetl.setModiUser(userId);
+            agvWrkDetl.setModiTime(now);
+            if (!agvWrkDetlService.insert(agvWrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        }
+        // 鏇存柊绔欑偣鐘舵��
+        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+        // 鏇存柊婧愬簱浣嶇姸鎬�
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+
+        //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
+        return "ok";
+    }
+    /*
+       璋冩嫧杩涘満
+    */
+    @Override
+    @Transactional
+    public String allocationIn(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()));
+        if (agvWrkMast.getIoType() != 111) {
+            throw new CoolException("闈炴墜鍔ㄨ皟鎷ㄤ换鍔★紝涓嶆敮鎸佹鍔熻兘");
+        }
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo());
+        if (Cools.isEmpty(agvWrkMast)) {
+            throw new CoolException("宸ヤ綔妗d腑娌℃湁姝よ揣鏋朵换鍔�");
+        }
+        if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) {
+            throw new CoolException("璇风Щ鍔ㄥ埌->" + agvWrkMast.getCrnNo() + "妤煎叆搴撶偣鍏ュ簱");
+        }
+        AgvLocMast locNo = agvCommonService.getLocNo(3, 1);
+        //宸ヤ綔鐘舵��
+        agvWrkMast.setWrkSts(211L);
+        //鍏ュ嚭搴撶被鍨�
+        agvWrkMast.setIoType(112);
+        agvWrkMast.setSourceLocNo(param.getDevNo());
+        agvWrkMast.setModiUser(userId);
+        agvWrkMast.setModiTime(now);
+        if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+        }
+        //
+        agvLocMastService.updateLocStsByLocNo(locNo.getLocNo(),"S",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+        // 鏇存柊婧愬簱浣嶇姸鎬�
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"R",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+        //鍒犻櫎AGV宸ヤ綔妗�
+        return "ok";
+    }
+    /*
+       绌烘灦绂诲満
+    */
+    @Override
+    @Transactional
+    @Synchronized
+    public String empOut(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+        Integer oldWrkNo = agvWrkMast.getWrkNo();
+        if (Cools.isEmpty(agvWrkMast)) {
+            throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
+        }
+        agvWrkMast.setWrkSts(213L);
+        agvWrkMast.setSourceLocNo("");
+        if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+        }
+        // 鏇存柊婧愬簱浣嶇姸鎬�
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"O","",agvWrkMast.getWhsType().shortValue());
+        return "ok";
+    }
+    /*
+       绌烘灦杩涘満
+    */
+    @Override
+    @Transactional
+    @Synchronized
+    public String empIn(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()));
+        if (Cools.isEmpty(agvWrkMast)) {
+            throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
+        }
+        agvWrkMast.setWrkSts(214L);
+        agvWrkMast.setSourceLocNo(param.getDevNo());
+        if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+        }
+        // 鏇存柊婧愬簱浣嶇姸鎬�
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",param.getBarcode(),agvWrkMast.getWhsType().shortValue());
+        return "ok";
+    }
+    /*
+     * 绔欑偣鍥為��
+    */
+    @Override
+    @Transactional
+    public String handBack(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+        agvWrkMast.setIoType(113);
+        agvWrkMast.setModiUser(userId);
+        agvWrkMast.setModiTime(now);
+        if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+        }
+        return "ok";
+    }
+
+    /*
+     * 绔欑偣鍥為��
+     */
+    @Override
+    @Transactional
+    public String doBack(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
+        AgvWrkMast agvWrkMastSource = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+        if (!Cools.isEmpty(agvWrkMastSource)) {
+            throw new CoolException("褰撳墠绔欑偣宸叉湁閫�搴撲换鍔�");
+        }
+        Integer oldWrkNo = agvWrkMast.getWrkNo();
+        if (!agvWrkMast.getBarcode().equals(param.getBarcode())) {
+            throw new CoolException("鍥為��浠诲姟鐨勮揣鏋剁爜涓庡綋鍓嶈揣鏋剁爜涓嶄竴鑷�!");
+        }
+        if (agvWrkMast.getWrkSts() != 205) {
+            throw new CoolException("鍑哄簱浠诲姟鏈畬鎴�!");
+        }
+        // 鏂板缓鍥為��宸ヤ綔妗�
+        AgvWrkMast wrkMast = createWrkMast(58, 201L, agvWrkMast.getLocNo(), agvWrkMast.getSourceLocNo(), agvWrkMast.getBarcode(), now, userId, agvWrkMast.getWhsType(), 0);
+        // 鏇存柊鎺ラ┏浣嶏紝鏇存柊搴撲綅鐘舵��
+        agvLocMastService.updateLocStsByLocNo(wrkMast.getLocNo(),"S",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"R",wrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+        // 鏇存柊宸ヤ綔鏄庣粏
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()));
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            // 淇濇寔宸ヤ綔妗f槑缁�
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            agvWrkDetl.setModiUser(userId);
+            agvWrkDetl.setModiTime(now);
+            if (!agvWrkDetlService.insert(agvWrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+            // 鍚屾璁㈠崟鏁伴噺
+            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).in("source",18,31,34));
+            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+            if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderDetl.getOrderNo()).eq("matnr", orderDetl.getMatnr()).eq("three_code",orderDetl.getThreeCode()))){
+                throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+orderDetl.getOrderNo()+orderDetl.getMatnr());
+            }
+        }
+
+        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+        agvWrkMastLogService.save(agvWrkMast);
+        agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
+        //鍒犻櫎AGV宸ヤ綔妗�
+        agvWrkMastService.deleteById(agvWrkMast);
+        //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
+        return "ok";
+    }
+    /*
    鏇存柊鐩爣搴撲綅淇℃伅
     */
     private void updateAgvLocMast(AgvLocMast locMast, String locSts){
@@ -456,4 +682,41 @@
         agvLocMastService.updateById(locMast);
     }
 
+    /*
+   鐢熸垚宸ヤ綔妗�
+    */
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, int containerType,int floor){
+        AgvWrkMast wrkMast = new AgvWrkMast();
+        //宸ヤ綔鐘舵��
+        wrkMast.setWrkSts(wrkSts);
+        //鍏ュ嚭搴撶被鍨�
+        wrkMast.setIoType(ioType);
+        wrkMast.setIoTime(now);
+        //浼樺厛绾�
+        wrkMast.setIoPri(300.0);
+        //婧愮珯鐐�
+        wrkMast.setSourceLocNo(sourceLocNo);
+        //鐩爣绔欑偣
+        wrkMast.setLocNo(locNo);
+        //璐ф灦缂栫爜
+        wrkMast.setBarcode(barcode);
+        //璐ф灦绫诲瀷
+        wrkMast.setWhsType(containerType);
+        // 鐩爣妤煎眰
+        wrkMast.setCrnNo(floor);
+
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+
+        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
+
+        return wrkMast;
+    }
+
 }

--
Gitblit v1.9.1