From e97bfb5567d95dea572f84a84db9c4151b884656 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期五, 02 八月 2024 11:36:57 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  621 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 441 insertions(+), 180 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 0c3227a..97316b1 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -17,8 +17,11 @@
 import com.zy.common.model.TaskDto;
 import com.zy.common.service.AgvCommonService;
 import com.zy.common.web.BaseController;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -27,6 +30,7 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Created by vincent on 2020/6/11
@@ -66,6 +70,10 @@
     private AgvWrkMastLogService agvWrkMastLogService;
     @Autowired
     private AgvWrkDetlLogService agvWrkDetlLogService;
+    @Autowired
+    private WrkMastExecuteService wrkMastExecuteService;
+    @Autowired
+    private ConfigService configService;
 
 
     /*
@@ -89,14 +97,14 @@
             List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
 
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor());
+            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor(),false,false);
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, agvBasDevp.getLocType2());
             //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
             wrkMast.setMk(isConveyor ? "Y" : "N");
             //鐢熸垚宸ヤ綔妗f槑缁�
             agvWaitPakinList.forEach(wp -> {
-                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
+                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProcessSts());
             });
             //鏇存柊婧愮珯鐐逛俊鎭�
             updateAgvBasDevp(agvBasDevp,"R");
@@ -148,7 +156,8 @@
                             now,
                             userId,
                             locDto.getCsocode(),
-                            locDto.getIsoseq());
+                            locDto.getIsoseq(),
+                            locDto.getProcessSts());
                 }else {
                     List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                     orderDtoList.forEach(orderDto -> {
@@ -162,7 +171,8 @@
                                 now,
                                 userId,
                                 locDto.getCsocode(),
-                                locDto.getIsoseq());
+                                locDto.getIsoseq(),
+                                locDto.getProcessSts());
                     });
                 }
 
@@ -177,6 +187,80 @@
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
             updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S");
+
+        });
+    }
+
+    /*
+    鍔犲伐鍑哄簱
+     */
+    @Transactional
+    public void processOut(List<TaskDto> agvTaskDtos, Long userId) {
+        Date now = new Date();
+
+        agvTaskDtos.forEach(taskDto -> {
+
+            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectByTaskDto(taskDto);
+
+            //AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
+
+            //宸ヤ綔妗f墍闇�鍙傛暟
+
+            long wrkSts = 21L;
+            String sourceLocNo = taskDto.getLocNo();
+            String targetLocNo = taskDto.getAgvStaNo();
+            //String barcode = agvLocDetls.get(0).getSuppCode();
+            String containerCode = taskDto.getLocDtos().get(0).getContainerCode();
+
+
+            //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
+            int ioType = 107;
+            //鐢熸垚宸ヤ綔妗�
+            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,Short.valueOf(containerCode.substring(0,2)));
+            //鐢熸垚宸ヤ綔妗f槑缁�
+            taskDto.getLocDtos().forEach(locDto -> {
+                if (!BaseController.isJSON(locDto.getOrderNo())) {
+                    //鏄庣粏妗f墍闇�鍙傛暟
+                    createWrkDetlReWrite(locDto.getMatnr(),
+                            wrkMast.getWrkNo(),
+                            locDto.getOrderNo(),
+                            locDto.getBatch(),
+                            locDto.getAnfme(),
+                            locDto.getContainerCode(),
+                            now,
+                            userId,
+                            locDto.getCsocode(),
+                            locDto.getIsoseq(),
+                            locDto.getProcessSts());
+                }else {
+                    List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+                    orderDtoList.forEach(orderDto -> {
+                        //鏄庣粏妗f墍闇�鍙傛暟
+                        createWrkDetlReWrite(locDto.getMatnr(),
+                                wrkMast.getWrkNo(),
+                                orderDto.getOrderNo(),
+                                locDto.getBatch(),
+                                orderDto.getAnfme(),
+                                locDto.getContainerCode(),
+                                now,
+                                userId,
+                                locDto.getCsocode(),
+                                locDto.getIsoseq(),
+                                locDto.getProcessSts());
+                    });
+                }
+
+                //淇敼璁㈠崟淇℃伅
+                modifyOrderDetl(locDto, userId);
+            });
+//            //淇敼璁㈠崟淇℃伅
+//            modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
+            //鏇存柊婧愮珯鐐逛俊鎭�
+            String locSts = "R";
+            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
+            //鏇存柊鐩爣绔欑偣鐘舵��
+            //locSts = ioType == 101 ? "S" : "Q";
+            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S",Short.valueOf(containerCode.substring(0,2)),containerCode);
 
         });
     }
@@ -202,6 +286,7 @@
             agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
             agvWrkMast.setSourceLocNo(locNo);
             agvWrkMast.setIoTime(now);
+            agvWrkMast.setLogErrMemo("createWaitPainWrkMastStart");
             agvWrkMastService.updateById(agvWrkMast);
 
             List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
@@ -209,20 +294,20 @@
             //List<AgvLocDetl> agvLocDetlList = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
             AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo());
 
-            //鎷f枡鍏ュ簱
-            if(ioType == 53){
-                //淇敼宸ヤ綔鍏氭槑缁�
-                //agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
-                //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
-                //淇敼搴撳瓨淇℃伅
-                agvWrkDetlList.forEach(agvWrkDetl -> {
-                    AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
-
-                    //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
-                    double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
-                    agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
-                });
-            }
+            ////鎷f枡鍏ュ簱
+            //if(ioType == 53){
+            //    //淇敼宸ヤ綔鍏氭槑缁�
+            //    //agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
+            //    //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
+            //    //淇敼搴撳瓨淇℃伅
+            //    agvWrkDetlList.forEach(agvWrkDetl -> {
+            //        AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+            //
+            //        //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+            //        double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+            //        agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
+            //    });
+            //}
             //淇敼搴撲綅淇℃伅
             updateAgvLocMast(agvLocMast,"Q");
             //淇敼绔欑偣淇℃伅
@@ -240,7 +325,7 @@
 
         List<TaskDto> taskDtos = new ArrayList<>();
         param.getLocDetls().forEach(locDetl -> {
-            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode());
+            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode(), locDetl.getProcessSts());
             TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto);
             if(TaskDto.has(taskDtos,taskDto)){
                 TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto);
@@ -274,7 +359,8 @@
                         now,
                         userId,
                         locDto.getCsocode(),
-                        locDto.getIsoseq());
+                        locDto.getIsoseq(),
+                        locDto.getProcessSts());
             });
             updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P");
             //鏇存柊鐩爣绔欑偣鐘舵��
@@ -305,7 +391,7 @@
         //鐢熸垚绉诲簱宸ヤ綔妗�
         AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo));
         //鐢熸垚宸ヤ綔鍏氭槑缁�
-        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
+        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProcessSts());
         //淇敼鐩爣搴撲綅鐘舵��
         updateAgvLocMast(targetLocMast,"S");
         //淇敼鍘熷簱浣嶇姸鎬�
@@ -326,12 +412,41 @@
         if (Cools.isEmpty(agvBasDevp)) {
             throw new CoolException("鏆傛棤"+ station + "绔欑偣");
         }
+        int br = 0;
+        if (containerType == 21 && agvBasDevp.getFloor() == 2) {
+            containerType = 20;
+        }
+        switch (containerType) {
+            case 10:
+                br = 1;
+                break;
+            case 20:
+                br = 2;
+                break;
+            case 21:
+                br = 4;
+                break;
+            case 30:
+                br = 3;
+                break;
+            case 40:
+                br = 5;
+                break;
+        }
+        if (br == 4 && agvBasDevp.getLocType1() == 2) {
+            br = 2;
+        }
+        if (agvBasDevp.getLocType1() != br) {
+            throw new CoolException("绔欑偣寮傚父锛�");
+        }
         if (containerType == 40) {
             locType = 5;
         } else if (containerType == 21 && agvBasDevp.getFloor() == 3) {
             locType = 4;
         } else if (containerType == 20 && agvBasDevp.getFloor() == 3) {
             locType = 2;
+        } else if (containerType == 30) {
+            locType = 3;
         } else {
             locType = agvBasDevp.getLocType1();
         }
@@ -347,12 +462,47 @@
         }
 
         //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-        AgvLocMast agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor());
+        AgvLocMast agvLocMast = new AgvLocMast();
+
+        //鏌ヨ搴撳瓨
+        AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode));
+        if (!Cools.isEmpty(locMast)) {
+            throw new CoolException("褰撳墠璐ф灦宸插湪搴撳瓨涓紝鏃犳硶杩涜鍏ュ簱");
+        }
 
         //鏌ヨ鍏ュ簱閫氱煡妗�
         List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode);
         if(!Cools.isEmpty(agvWaitPakinList)){
+            AtomicBoolean isCurrLev = new AtomicBoolean(false);
+            agvWaitPakinList.forEach(agvWaitPakin -> {
+                if (!Cools.isEmpty(agvWaitPakin.getProcessSts())) {
+                    if (agvWaitPakin.getProcessSts() == 1) {
+                        isCurrLev.set(true);
+                    }
+                }
+            });
 
+
+            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "elevatorTasks"));
+            if (Cools.isEmpty(config)) {
+                if (isCurrLev.get()) {
+                    agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,true);
+                } else {
+                    agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
+                }
+            } else {
+                List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1"));
+                if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) {
+                    agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,true);
+                } else {
+                    if (isCurrLev.get()) {
+                        agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,true);
+                    } else {
+                        agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
+                    }
+                    //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
+                }
+            }
 
             String devNo = agvBasDevp.getDevNo();
             String locNo = agvLocMast.getLocNo();
@@ -361,13 +511,19 @@
             AgvWrkMast wrkMast = createWrkMast(1,201L,devNo,locNo,containerCode,now,userId, containerType);
             //鐢熸垚宸ヤ綔妗f槑缁�
             agvWaitPakinList.forEach(wp -> {
-                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
+                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProcessSts());
             });
             //淇敼鍏ュ簱閫氱煡妗g姸鎬�
             agvWaitPakinService.updateIoStatus(containerCode,"Y");
             //鏇存柊婧愮珯鐐圭姸鎬�
             updateAgvBasDevp(agvBasDevp,"R",containerType);
         }else {
+            //鏌ヨ宸ヤ綔妗�
+            AgvWrkMast agvWrkMast1 = agvWrkMastService.selectByContainerCode(containerCode);
+            if (!Cools.isEmpty(agvWrkMast1)) {
+                throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+            }
+            agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),true,true);
             // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
             createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,containerType);
             //鏇存柊婧愮珯鐐圭姸鎬�
@@ -378,7 +534,6 @@
         updateAgvLocMast(agvLocMast,"S");
         return agvLocMast.getLocNo();
     }
-
     /*
     绌烘澘鍑哄簱
      */
@@ -440,10 +595,10 @@
                 LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
                 if (adjust.getCount() == 0) { continue; }
                 if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch()) && Cools.eq(locDetl.getSuppCode(),adjust.getSuppCode()) && Cools.eq(locDetl.getThreeCode(),adjust.getThreeCode()) && Cools.eq(locDetl.getDeadTime(),adjust.getDeadTime())) {
-                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
+                    if (!locDetl.getAnfme().equals(adjust.getCount()) || !locDetl.getProcessSts().equals(adjust.getProcessSts())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
+                        if (!agvLocDetlService.updateAnfmeProcess(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),adjust.getProcessSts())) {
                             throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -474,7 +629,7 @@
         // 鍒犻櫎搴撳瓨
         for (AgvLocDetl locDetl : locDetls) {
             // todo 鐩樼偣璁板綍
-            if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
+            if (!agvLocDetlService.updateAnfmeProcess(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getProcessSts())) {
                 throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
             // 淇濆瓨璋冩暣璁板綍
@@ -557,13 +712,29 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-//        if(!wrkMast.getLocNo().contains("@") || !wrkMast.getSourceLocNo().contains("@")){
-//            throw new CoolException("鐩爣搴撲綅鎴栬�呮簮搴撲綅鏆傛湭鍒嗛厤锛屾棤娉曞彇娑�");
-//        }
-        //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
-        //agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205);
+        if (wrkMast.getIoType() == 113 && (wrkMast.getWrkSts() != 212L || wrkMast.getWrkSts() != 213L || wrkMast.getWrkSts() != 214L)) {
+            throw new CoolException(workNo+"涓嶆敮鎸佹墜鍔ㄧ淮鎶�");
+        }
+        if (wrkMast.getIoType()==121){
+            if (wrkMast.getWrkSts()<12L){
+                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205,"鎵嬪姩瀹屾垚",userId);
+            }else if (wrkMast.getWrkSts()==12L){
+                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),12,"鎵嬪姩瀹屾垚",userId);
 
-        agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205,"鎵嬪姩瀹屾垚",userId);
+                WrkMastExecute wrkMastExecute = wrkMastExecuteService.selectOne(new EntityWrapper<WrkMastExecute>().eq("wrk_no", workNo));
+                wrkMastExecute.setWrkSts(3L);
+                wrkMastExecute.setNowPosition(3);
+                wrkMastExecuteService.updateById(wrkMastExecute);
+            }
+            return;
+
+        } else  {
+            if(wrkMast.getIoType() == 110){
+                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),206,"鎵嬪姩瀹屾垚",userId);
+            } else {
+                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205,"鎵嬪姩瀹屾垚",userId);
+            }
+        }
 
         //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
         if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 111){
@@ -575,8 +746,9 @@
             agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"O","",wrkMast.getWhsType().shortValue());
         }
         //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
-        if(wrkMast.getIoType() == 110){
-            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+
+        if (wrkMast.getIoType() == 10) {
+            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"O",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
         }
 
     }
@@ -587,164 +759,229 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-        //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
-        if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
-            throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
-        }
+        if (wrkMast.getIoType()==121){
+            if (wrkMast.getWrkSts()<12L){
+                //婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
 
-        //鍏ュ簱鍙栨秷
-        if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 58){
-            //婧愮珯鐐�
-            String devNo = wrkMast.getSourceLocNo();
-            //鐩爣搴撲綅
-            String locNo = wrkMast.getLocNo();
-            agvLocMastService.updateLocStsByLocNo(locNo,"O","",null);
-            if (wrkMast.getIoType() == 58) {
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
-            } else {
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",wrkMast.getWhsType().shortValue());
-            }
-
-            if (wrkMast.getIoType() == 1) {
-                List<AgvWaitPakin> agvWaitPakins = agvWaitPakinService.selectByContainerCode2(wrkMast.getBarcode());
-
-                for (AgvWaitPakin agvWaitPakin : agvWaitPakins) {
-                    // 鍥炴粴鍏ュ簱璁㈠崟
-                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvWaitPakin.getThreeCode()).eq("matnr", agvWaitPakin.getMatnr()).eq("order_no", agvWaitPakin.getOrderNo()));
-                    orderDetl.setQty(orderDetl.getQty() - agvWaitPakin.getAnfme());
-                    if (!orderDetlService.updateById(orderDetl)) {
-                        throw new CoolException("璁㈠崟鍥炴粴澶辫触");
-                    }
-                    // 鍒犻櫎缁勬墭妗�
-                    if (!agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",agvWaitPakin.getSuppCode()).eq("matnr",agvWaitPakin.getMatnr()).eq("three_code",agvWaitPakin.getThreeCode()))) {
-                        throw new CoolException("鍏ュ簱閫氱煡妗e彇娑堝け璐�");
-                    }
-                }
-
-
-            }
-
-
-            // 绉诲簱鍙栨秷
-        } else if( wrkMast.getIoType() == 11 || wrkMast.getIoType() == 12) {
-            //婧愬簱浣�
-            String locNo = wrkMast.getSourceLocNo();
-
-            // 鐩爣搴撲綅
-            String targetLocNo = wrkMast.getLocNo();
-            agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
-            agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
-            AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", targetLocNo));
-            // 褰撳墠浠诲姟鏄法灞傜Щ搴�  涓旂洰鏍囨ゼ灞傛槸1妤肩殑 鍥炴粴璋冩嫧鍗�
-            if (wrkMast.getIoType() == 12 && locMast.getFloor() == 1) {
-                List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
-                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("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
-                    }
-                }
-            }
-            // 鑷姩璋冩嫧鍑哄簱鍙栨秷
-        } else if(wrkMast.getIoType() == 108 || wrkMast.getIoType() == 111) {
-            // 婧愬簱浣�
-            String locNo = wrkMast.getSourceLocNo();
-            // 鐩爣搴撲綅
-            String targetLocNo = wrkMast.getLocNo();
-            agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo),"",(short)0);
-            if (wrkMast.getIoType() == 108) {
-                if (wrkMast.getWrkSts() != 22) {
-                    agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
-                }
-            } else {
-                if (wrkMast.getWrkSts() != 22) {
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo,"O","",wrkMast.getWhsType().shortValue());
-                }
-            }
-
-            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
-            // 鏇存柊璁㈠崟
-            for (AgvLocDetl agvLocDetl : agvLocDetls) {
-                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
-                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
-                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no","DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
-                    throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
-                }
-            }
-            //鍑哄簱鍙栨秷
-        } else {
-            //婧愬簱浣�
-            String locNo = wrkMast.getSourceLocNo();
-            //鐩爣绔欑偣
-            String devNo = wrkMast.getLocNo();
-            if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 109) {
-                agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
-            } else {
+                // 鐩爣搴撲綅
+                String targetLocNo = wrkMast.getLocNo();
                 agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
-            }
-            if (wrkMast.getIoType() == 109){
-                if (Cools.isEmpty(wrkMast.getLocNo())) {
+                agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
 
+                wrkMast.setModiUser(userId);
+                wrkMast.setModiTime(new Date());
+                if (type == 2) {
+                    wrkMast.setManuType("鎵嬪姩鍙栨秷锛坅gv锛�");
                 } else {
-                    agvLocMastService.updateLocStsByLocNo(devNo,"O","",(short)getContainerTypeByloc(devNo));
+                    wrkMast.setManuType("鎵嬪姩鍙栨秷");
                 }
 
+
+                //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
+                agvWrkMastLogService.save(wrkMast);
+                agvWrkDetlLogService.save(wrkMast.getWrkNo());
+
+
+                //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
+                if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+                    throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
+                }
+
+                if (type == 2) {
+                    //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
+                    agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
+                }
             }else {
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null);
+                throw new CoolException("褰撳墠浠诲姟姝e湪鎵ц锛屼笉鍙彇娑�");
             }
-        }
+        }else {
+            //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
+            if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
+                throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
+            }
 
-        if(wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12){
-            //璁㈠崟鍥炴粴
-            //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-            List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-            agvWrkDetlList1.forEach(agvWrkDetl -> {
+            //鍏ュ簱鍙栨秷
+            if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 58){
+                //婧愮珯鐐�
+                String devNo = wrkMast.getSourceLocNo();
+                //鐩爣搴撲綅
+                String locNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"O","",null);
+                if (wrkMast.getIoType() == 58) {
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+                } else {
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",wrkMast.getWhsType().shortValue());
+                }
 
-                if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
-                    String orderNo = agvWrkDetl.getOrderNo();
-                    if(orderNo.contains("{")){
-                        JSONArray orderArray = JSON.parseArray(orderNo);
-                        for (Object o : orderArray){
-                            JSONObject jsonobject = (JSONObject) o;
-                            OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
-                            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
-                            orderDetlService.updateById(orderDetl);
+                if (wrkMast.getIoType() == 1) {
+                    List<AgvWaitPakin> agvWaitPakins = agvWaitPakinService.selectByContainerCode2(wrkMast.getBarcode());
+
+                    for (AgvWaitPakin agvWaitPakin : agvWaitPakins) {
+                        // 鍥炴粴鍏ュ簱璁㈠崟
+                        OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvWaitPakin.getThreeCode()).eq("matnr", agvWaitPakin.getMatnr()).eq("order_no", agvWaitPakin.getOrderNo()));
+                        orderDetl.setQty(orderDetl.getQty() - agvWaitPakin.getAnfme());
+                        if (!orderDetlService.updateById(orderDetl)) {
+                            throw new CoolException("璁㈠崟鍥炴粴澶辫触");
+                        }
+                        // 鍒犻櫎缁勬墭妗�
+                        if (!agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",agvWaitPakin.getSuppCode()).eq("matnr",agvWaitPakin.getMatnr()).eq("three_code",agvWaitPakin.getThreeCode()))) {
+                            throw new CoolException("鍏ュ簱閫氱煡妗e彇娑堝け璐�");
+                        }
+                    }
+
+
+                }
+
+
+                // 绉诲簱鍙栨秷
+            } else if( wrkMast.getIoType() == 11 || wrkMast.getIoType() == 12) {
+                //婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
+
+                // 鐩爣搴撲綅
+                String targetLocNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
+                agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
+                AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", targetLocNo));
+                // 褰撳墠浠诲姟鏄法灞傜Щ搴�  涓旂洰鏍囨ゼ灞傛槸1妤肩殑 鍥炴粴璋冩嫧鍗�
+                if (wrkMast.getIoType() == 12 && locMast.getFloor() == 1) {
+                    List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
+                    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("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+                        }
+                    }
+                }
+                // 鑷姩璋冩嫧鍑哄簱鍙栨秷
+            } else if(wrkMast.getIoType() == 108 || wrkMast.getIoType() == 111 || wrkMast.getIoType() == 112) {
+                if (wrkMast.getIoType() == 112) {
+                    throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+                }
+                // 婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
+                // 鐩爣搴撲綅
+                String targetLocNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo),"",(short)0);
+                if (wrkMast.getIoType() == 108) {
+                    if (wrkMast.getWrkSts() != 22) {
+                        agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
+                    }
+                } else {
+                    if (wrkMast.getWrkSts() != 207L && wrkMast.getWrkSts() != 205L) {
+                        if (wrkMast.getWrkSts() != 22) {
+                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo,"O","",wrkMast.getWhsType().shortValue());
+                        }
+                    } else {
+                        throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+                    }
+
+
+                }
+
+                List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
+                // 鏇存柊璁㈠崟
+                for (AgvLocDetl agvLocDetl : agvLocDetls) {
+                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
+                    orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
+                    if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no","DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
+                        throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
+                    }
+                }
+                //鍑哄簱鍙栨秷
+            } else {
+                //婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
+                //鐩爣绔欑偣
+                String devNo = wrkMast.getLocNo();
+                if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 109) {
+                    if (wrkMast.getIoType() == 109){
+                        // 婧愬簱浣嶆槸绔欑偣
+                        if ("DB".equals(locNo.substring(0,2))) {
+                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+                            agvLocMastService.updateLocStsByLocNo(devNo,"O","",null);
+                            // 婧愬簱浣嶆槸搴撲綅 鐩爣搴撲綅鏄珯鐐�
+                        } else if ("DB".equals(devNo.substring(0,2))) {
+                            agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"O","",null);
+                            // 婧愬簱浣嶆槸搴撲綅
+                        } else {
+                            agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+                            agvLocMastService.updateLocStsByLocNo(devNo,"O","",null);
                         }
 
                     }else {
-                        OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
-                        orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
-                        orderDetlService.updateById(orderDetl);
+                        agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null);
                     }
+                } else if (wrkMast.getIoType() == 113) {
+                    if (wrkMast.getWrkSts() == 212 || wrkMast.getWrkSts() == 213) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
+                    } else {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
+                        if (!Cools.isEmpty(devNo)) {
+                            agvLocMastService.updateLocStsByLocNo(devNo,"0","",null);
+                        }
+                    }
+
+                } else  {
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null);
+                    agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
                 }
-            });
+
+            }
+
+            if(wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12){
+                //璁㈠崟鍥炴粴
+                //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+                List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                agvWrkDetlList1.forEach(agvWrkDetl -> {
+
+                    if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
+                        String orderNo = agvWrkDetl.getOrderNo();
+                        if(orderNo.contains("{")){
+                            JSONArray orderArray = JSON.parseArray(orderNo);
+                            for (Object o : orderArray){
+                                JSONObject jsonobject = (JSONObject) o;
+                                OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                                orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                                orderDetlService.updateById(orderDetl);
+                            }
+
+                        }else {
+                            OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                            orderDetlService.updateById(orderDetl);
+                        }
+                    }
+                });
+            }
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(new Date());
+            if (type == 2) {
+                wrkMast.setManuType("鎵嬪姩鍙栨秷锛坅gv锛�");
+            } else {
+                wrkMast.setManuType("鎵嬪姩鍙栨秷");
+            }
+
+
+            //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
+            agvWrkMastLogService.save(wrkMast);
+            agvWrkDetlLogService.save(wrkMast.getWrkNo());
+
+
+            //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
+            if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+                throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+
+            if (type == 2) {
+                //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
+                agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
+            }
         }
-        wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(new Date());
-        if (type == 2) {
-            wrkMast.setManuType("鎵嬪姩鍙栨秷锛坅gv锛�");
-        } else {
-            wrkMast.setManuType("鎵嬪姩鍙栨秷");
-        }
-
-
-        //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
-        agvWrkMastLogService.save(wrkMast);
-        agvWrkDetlLogService.save(wrkMast.getWrkNo());
-
-
-
-        //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
-        if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
-            throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
-        }
-        if (type == 2) {
-            //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
-            agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
-        }
-
-
     }
 
     /*
@@ -752,6 +989,7 @@
      */
     private void updateAgvLocMast(AgvLocMast locMast, String locSts){
         locMast.setLocSts(locSts);
+        locMast.setModiTime(new Date());
         agvLocMastService.updateById(locMast);
     }
 
@@ -761,6 +999,7 @@
     private void updateAgvLocMast(AgvLocMast locMast, String locSts, short type){
         locMast.setLocSts(locSts);
         locMast.setLocType2(type);
+        locMast.setModiTime(new Date());
         agvLocMastService.updateById(locMast);
     }
 
@@ -797,7 +1036,7 @@
     /*
     鐢熸垚宸ヤ綔妗f槑缁�
      */
-    private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq){
+    private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq,Integer processSts){
         Mat mat = matService.selectByMatnr(matnr);
         if (Cools.isEmpty(mat)) {
             throw new CoolException(matnr + "鍟嗗搧缁存姢澶辫触");
@@ -810,11 +1049,11 @@
         wrkDetl.setBatch(batch);
         wrkDetl.setAnfme(anfme); // 鏁伴噺
         wrkDetl.setSuppCode(zpallet); // 璐ф灦鏉$爜
+        wrkDetl.setProcessSts(processSts);
         wrkDetl.setAppeUser(userId);
         wrkDetl.setAppeTime(now);
         wrkDetl.setModiUser(userId);
         wrkDetl.setModiTime(now);
-
         wrkDetl.setThreeCode(csocode);
         wrkDetl.setDeadTime(isoseq);
         if (!agvWrkDetlService.insert(wrkDetl)) {
@@ -876,6 +1115,7 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
+        wrkMast.setLogErrMemo("createWaitPainWrkMastStart");
 
         if (!agvWrkMastService.insertByIncrease(wrkMast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -949,6 +1189,27 @@
         }
     }
 
+    @Override
+    @Transactional
+    public void changeType(String workNo, Long userId) {
+        AgvWrkMast wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException("鏆傛棤\n" + workNo + "\n宸ヤ綔");
+        }
+        if (wrkMast.getWrkSts() != 22) {
+            throw new CoolException("褰撳墠浠诲姟宸插垎閰嶇洰鏍囧簱浣嶏紝鏆備笉鏀寔璋冩暣");
+        }
+        if (wrkMast.getIoType() == 108) {
+            wrkMast.setIoType(111);
+            agvWrkMastService.update(wrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
+        } else if(wrkMast.getIoType() == 111) {
+            wrkMast.setIoType(108);
+            agvWrkMastService.update(wrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
+        }
+
+
+    }
+
     private void addInQty(String devno){
         AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devno);
         if(!Cools.isEmpty(agvBasDevp)){
@@ -966,4 +1227,4 @@
 
     }
 
-}
+}
\ No newline at end of file

--
Gitblit v1.9.1