From 3fbde4dd7e79fdb11f1fd140de0d5ada1f16d04d Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 11 二月 2025 08:15:58 +0800
Subject: [PATCH] 兼容四期

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  800 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 612 insertions(+), 188 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 e70c16b..f3158bd 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -5,11 +5,14 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
+import com.zy.asrs.constant.AsrsConstants;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.OrderUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.OrderDto;
@@ -30,6 +33,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 
 /**
  * Created by vincent on 2020/6/11
@@ -73,6 +77,12 @@
     private WrkMastExecuteService wrkMastExecuteService;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private FlowLogService flowLogService;
+    @Autowired
+    private LocDetlServiceImpl locDetlService;
 
 
     /*
@@ -85,30 +95,30 @@
         Date now = new Date();
 
         agvBasDevpList.forEach(agvBasDevp -> {
-            if(Cools.isEmpty(agvBasDevp.getBarcode())){
+            if (Cools.isEmpty(agvBasDevp.getBarcode())) {
                 throw new CoolException("閫変腑鐨勭珯鐐逛腑鍚湁鏈粦瀹氳揣鏋剁殑绔欑偣锛岃閲嶆柊閫夋嫨");
             }
 
-            if(!"F".equals(agvBasDevp.getLocSts())){
+            if (!"F".equals(agvBasDevp.getLocSts())) {
                 throw new CoolException("閫変腑鐨勭珯鐐逛腑鍚湁璐т綅鐘舵�佷笉涓篎.鍦ㄥ簱鐨勭珯鐐癸紝璇烽噸鏂伴�夋嫨");
             }
 
             List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
 
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(),agvBasDevp.getFloor(),false,false);
+            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(),agvLocMast.getPltType());
+            AgvWrkMast wrkMast = createWrkMast(1, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), agvBasDevp.getBarcode(), now, userId, agvBasDevp.getLocType2(), agvLocMast.getPltType());
             //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
             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(),wp.getProcessSts());
+                createWrkDetlReWrite(wp.getMatnr(), wrkMast.getWrkNo(), wp.getOrderNo(), wp.getBatch(), wp.getAnfme(), wp.getSuppCode(), now, userId, wp.getThreeCode(), wp.getDeadTime(), wp.getProcessSts());
             });
             //鏇存柊婧愮珯鐐逛俊鎭�
-            updateAgvBasDevp(agvBasDevp,"R");
+            updateAgvBasDevp(agvBasDevp, "R");
             //鏇存柊鐩爣搴撲綅鐘舵��
-            updateAgvLocMast(agvLocMast,"S");
+            updateAgvLocMast(agvLocMast, "S");
 
         });
 
@@ -137,12 +147,13 @@
             //String barcode = agvLocDetls.get(0).getSuppCode();
             String containerCode = taskDto.getLocDtos().get(0).getContainerCode();
 
-
+            AgvLocMast agvLocMast = agvLocMastService.selectById(sourceLocNo);
             //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
-            int ioType = isPakOut(sourceLocNo,taskDto) ?  101 : 103;
+            int ioType = isPakOut(sourceLocNo, taskDto) ? 101 : 103;
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,Short.valueOf(containerCode.substring(0,2)),null);
+            AgvWrkMast wrkMast = createWrkMast(ioType, wrkSts, sourceLocNo, targetLocNo, containerCode, now, userId, Short.valueOf(containerCode.substring(0, 2)), agvLocMast.getPltType());
             //鐢熸垚宸ヤ綔妗f槑缁�
+            long flowId = snowflakeIdWorker.nextId();
             taskDto.getLocDtos().forEach(locDto -> {
                 if (!BaseController.isJSON(locDto.getOrderNo())) {
                     //鏄庣粏妗f墍闇�鍙傛暟
@@ -157,7 +168,37 @@
                             locDto.getCsocode(),
                             locDto.getIsoseq(),
                             locDto.getProcessSts());
-                }else {
+                    OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+                    AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+                    // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
+//                    FlowLog flowLog = new FlowLog();
+//                    flowLog.setFid(String.valueOf(flowId));
+//                    flowLog.setSpare2(wrkMast.getWrkNo().toString());
+//                    flowLog.setLocNo(wrkMast.getSourceLocNo());
+//                    flowLog.setSpare1(containerCode);
+//                    flowLog.setOpType(4L);
+//                    flowLog.setOrderNo(locDto.getOrderNo());
+//                    flowLog.setThreeCode(locDto.getCsocode());
+//                    flowLog.setMatnr(locDto.getMatnr());
+//                    flowLog.setMaktx(locDto.getMaktx());
+//                    flowLog.setOrderPrevious(orderDetl.getAnfme());
+//                    flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                    flowLog.setOrderChanged(0.0);
+//
+//                    flowLog.setQtyPrevious(orderDetl.getQty());
+//                    flowLog.setQtyCurrent(orderDetl.getQty() + locDto.getAnfme());
+//                    flowLog.setQtyChanged(locDto.getAnfme());
+//
+//                    flowLog.setLocPrevious(locDetl.getAnfme());
+//                    flowLog.setLocCurrent(locDetl.getAnfme() - locDto.getAnfme());
+//                    flowLog.setLocChanged(locDto.getAnfme());
+//                    flowLog.setUserId(userId);
+//                    flowLog.setAppeTime(now);
+//                    if (!flowLogService.insert(flowLog)) {
+//                        throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                    }
+
+                } else {
                     List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                     orderDtoList.forEach(orderDto -> {
                         //鏄庣粏妗f墍闇�鍙傛暟
@@ -175,6 +216,7 @@
                     });
                 }
 
+
                 //淇敼璁㈠崟淇℃伅
                 modifyOrderDetl(locDto, userId);
             });
@@ -182,10 +224,10 @@
 //            modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
             //鏇存柊婧愮珯鐐逛俊鎭�
             String locSts = ioType == 101 ? "R" : "P";
-            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
+            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo), locSts);
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
-            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S");
+            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo), "S");
 
         });
     }
@@ -211,12 +253,13 @@
             //String barcode = agvLocDetls.get(0).getSuppCode();
             String containerCode = taskDto.getLocDtos().get(0).getContainerCode();
 
-
+            AgvLocMast agvLocMast = agvLocMastService.selectById(sourceLocNo);
             //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
             int ioType = 107;
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,Short.valueOf(containerCode.substring(0,2)),null);
+            AgvWrkMast wrkMast = createWrkMast(ioType, wrkSts, sourceLocNo, targetLocNo, containerCode, now, userId, Short.valueOf(containerCode.substring(0, 2)), agvLocMast.getPltType());
             //鐢熸垚宸ヤ綔妗f槑缁�
+            long flowId = snowflakeIdWorker.nextId();
             taskDto.getLocDtos().forEach(locDto -> {
                 if (!BaseController.isJSON(locDto.getOrderNo())) {
                     //鏄庣粏妗f墍闇�鍙傛暟
@@ -231,7 +274,36 @@
                             locDto.getCsocode(),
                             locDto.getIsoseq(),
                             locDto.getProcessSts());
-                }else {
+                    OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+                    AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+
+//                    FlowLog flowLog = new FlowLog();
+//                    flowLog.setFid(String.valueOf(flowId));
+//                    flowLog.setSpare2(wrkMast.getWrkNo().toString());
+//                    flowLog.setLocNo(wrkMast.getSourceLocNo());
+//                    flowLog.setSpare1(containerCode);
+//                    flowLog.setOpType(6L);
+//                    flowLog.setOrderNo(locDto.getOrderNo());
+//                    flowLog.setThreeCode(locDto.getCsocode());
+//                    flowLog.setMatnr(locDto.getMatnr());
+//                    flowLog.setMaktx(locDto.getMaktx());
+//                    flowLog.setOrderPrevious(orderDetl.getAnfme());
+//                    flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                    flowLog.setOrderChanged(0.0);
+//
+//                    flowLog.setQtyPrevious(orderDetl.getQty());
+//                    flowLog.setQtyCurrent(orderDetl.getQty() + locDto.getAnfme());
+//                    flowLog.setQtyChanged(locDto.getAnfme());
+//
+//                    flowLog.setLocPrevious(locDetl.getAnfme());
+//                    flowLog.setLocCurrent(locDetl.getAnfme() - locDto.getAnfme());
+//                    flowLog.setLocChanged(locDto.getAnfme());
+//                    flowLog.setUserId(userId);
+//                    flowLog.setAppeTime(now);
+//                    if (!flowLogService.insert(flowLog)) {
+//                        throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                    }
+                } else {
                     List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                     orderDtoList.forEach(orderDto -> {
                         //鏄庣粏妗f墍闇�鍙傛暟
@@ -256,17 +328,17 @@
 //            modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
             //鏇存柊婧愮珯鐐逛俊鎭�
             String locSts = "R";
-            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
+            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo), locSts);
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
-            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S",Short.valueOf(containerCode.substring(0,2)),containerCode);
+            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo), "S", Short.valueOf(containerCode.substring(0, 2)), containerCode);
 
         });
     }
 
     //鎷f枡鍏ュ簱
     @Transactional
-    public void pickIn(List<AgvWrkMast> agvWrkMastList){
+    public void pickIn(List<AgvWrkMast> agvWrkMastList) {
         Date now = new Date();
         agvWrkMastList.forEach(agvWrkMast -> {
 
@@ -284,12 +356,21 @@
             String locNo = agvWrkMast.getLocNo();
             agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
             agvWrkMast.setSourceLocNo(locNo);
-            agvWrkMast.setModiTime(new Date());
+            agvWrkMast.setModiTime(now);
             agvWrkMast.setIoTime(now);
             agvWrkMast.setLogErrMemo("createWaitPainWrkMastStart");
             agvWrkMastService.updateById(agvWrkMast);
 
             List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+            for (AgvWrkDetl agvWrkDetl : agvWrkDetlList) {
+                agvWrkDetl.setIoTime(now);
+                boolean bl = agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>()
+                        .eq("wrk_no", agvWrkDetl.getWrkNo())
+                        .eq("matnr", agvWrkDetl.getMatnr())
+                        .eq("order_no", agvWrkDetl.getOrderNo())
+                        .eq("three_code", agvWrkDetl.getThreeCode()));
+//                        .eq("dead_time",agvWrkDetl.getDeadTime()));
+            }
             AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
             //List<AgvLocDetl> agvLocDetlList = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
             AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo());
@@ -309,9 +390,9 @@
             //    });
             //}
             //淇敼搴撲綅淇℃伅
-            updateAgvLocMast(agvLocMast,"Q");
+            updateAgvLocMast(agvLocMast, "Q");
             //淇敼绔欑偣淇℃伅
-            updateAgvBasDevp(agvBasDevp,"R");
+            updateAgvBasDevp(agvBasDevp, "R");
 
         });
     }
@@ -325,11 +406,11 @@
 
         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(), locDetl.getProcessSts());
-            TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto);
-            if(TaskDto.has(taskDtos,taskDto)){
-                TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto);
-            }else {
+            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);
+            } else {
                 taskDtos.add(taskDto);
             }
         });
@@ -339,14 +420,14 @@
 
             //鍒ゆ柇鏄惁鏈夐噸澶嶆枡鎯崇殑宸ヤ綔褰�
             AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode());
-            if(!Cools.isEmpty(agvWrkMastList)){
+            if (!Cools.isEmpty(agvWrkMastList)) {
                 return;
             }
 
             int containerType = getContainerTypeByloc(taskDto.getLocNo());
 
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,containerType,null);
+            AgvWrkMast wrkMast = createWrkMast(107, 21L, taskDto.getLocNo(), taskDto.getAgvStaNo(), taskDto.getLocDtos().get(0).getContainerCode(), now, userId, containerType, null);
             //鐢熸垚宸ヤ綔妗f槑缁�
             taskDto.getLocDtos().forEach(locDto -> {
                 //鏄庣粏妗f墍闇�鍙傛暟
@@ -362,10 +443,10 @@
                         locDto.getIsoseq(),
                         locDto.getProcessSts());
             });
-            updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P");
+            updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()), "P");
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
-            updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S");
+            updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()), "S");
         });
 
     }
@@ -379,42 +460,30 @@
         AgvLocMast targetLocMast = agvLocMastService.selectById(targetLocNo);
         AgvLocDetl sourceLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocMast.getLocNo()));
 
-        if(!sourceLocMast.getLocSts().equals("F")){
-            throw new CoolException(sourceLocMast.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLocMast.getLocSts$());
+        if (!sourceLocMast.getLocSts().equals("F")) {
+            throw new CoolException(sourceLocMast.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLocMast.getLocSts$());
         }
-        if(!targetLocMast.getLocSts().equals("O")){
-            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+targetLocMast.getLocSts$());
+        if (!targetLocMast.getLocSts().equals("O")) {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + targetLocMast.getLocSts$());
         }
 
         Date now = new Date();
 
         //鐢熸垚绉诲簱宸ヤ綔妗�
-        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo),targetLocMast.getPltType());
+        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId, getContainerTypeByloc(sourceLocNo), targetLocMast.getPltType());
         //鐢熸垚宸ヤ綔鍏氭槑缁�
-        createWrkDetlReWrite(
-                sourceLocDetl.getMatnr(),
-                wrkMast.getWrkNo(),
-                null,
-                sourceLocDetl.getBatch(),
-                sourceLocDetl.getAnfme(),
-                sourceLocDetl.getZpallet(),
-                now,
-                userId,
-                sourceLocDetl.getThreeCode(),
-                sourceLocDetl.getDeadTime(),
-                sourceLocDetl.getProcessSts()
-        );
+        createWrkDetlReWrite(sourceLocDetl.getMatnr(), wrkMast.getWrkNo(), null, sourceLocDetl.getBatch(), sourceLocDetl.getAnfme(), sourceLocDetl.getZpallet(), now, userId, sourceLocDetl.getThreeCode(), sourceLocDetl.getDeadTime(), sourceLocDetl.getProcessSts());
         //淇敼鐩爣搴撲綅鐘舵��
-        updateAgvLocMast(targetLocMast,"S");
+        updateAgvLocMast(targetLocMast, "S");
         //淇敼鍘熷簱浣嶇姸鎬�
-        updateAgvLocMast(sourceLocMast,"R");
+        updateAgvLocMast(sourceLocMast, "R");
     }
 
     /*
     鍏ュ簱
      */
     @Transactional
-    public String emptyPlateIn(String station,String containerCode,Short containerType, Long userId, boolean emptyAutoIn) {
+    public String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn) {
 
         Date now = new Date();
 
@@ -422,7 +491,7 @@
 
         AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
         if (Cools.isEmpty(agvBasDevp)) {
-            throw new CoolException("鏆傛棤"+ station + "绔欑偣");
+            throw new CoolException("鏆傛棤" + station + "绔欑偣");
         }
         int br = 0;
         if (containerType == 21 && agvBasDevp.getFloor() == 2) {
@@ -441,6 +510,9 @@
             case 30:
                 br = 3;
                 break;
+            case 31:
+                br = 6;
+                break;
             case 40:
                 br = 5;
                 break;
@@ -449,8 +521,9 @@
             br = 2;
         }
         if (agvBasDevp.getLocType1() != br) {
-            throw new CoolException("绔欑偣寮傚父锛�");
+            throw new CoolException("绔欑偣绫诲瀷鍜岃揣鏋剁被鍨嬩笉绗︼紒");
         }
+        AtomicReference<String> factory = new AtomicReference<>();
         if (containerType == 40) {
             locType = 5;
         } else if (containerType == 21 && agvBasDevp.getFloor() == 3) {
@@ -459,17 +532,19 @@
             locType = 2;
         } else if (containerType == 30) {
             locType = 3;
+        } else if (containerType == 31) {
+            locType = 6;
         } else {
             locType = agvBasDevp.getLocType1();
         }
 
-        if(!Cools.eq(agvBasDevp.getBarcode(),containerCode) && !agvBasDevp.getLocSts().equals("O") && !emptyAutoIn){
-            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜鍏ュ簱");
+        if (!Cools.eq(agvBasDevp.getBarcode(), containerCode) && !agvBasDevp.getLocSts().equals("O") && !emptyAutoIn) {
+            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts() + ",鏃犳硶杩涜鍏ュ簱");
         }
 
         //鏌ヨ宸ヤ綔妗�
         AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
-        if(!Cools.isEmpty(agvWrkMast) && !emptyAutoIn){
+        if (!Cools.isEmpty(agvWrkMast) && !emptyAutoIn) {
             throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
         }
 
@@ -484,9 +559,10 @@
 
         //鏌ヨ鍏ュ簱閫氱煡妗�
         List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode);
-        if(!Cools.isEmpty(agvWaitPakinList)){
+        if (!Cools.isEmpty(agvWaitPakinList)) {
             AtomicBoolean isCurrLev = new AtomicBoolean(false);
             agvWaitPakinList.forEach(agvWaitPakin -> {
+                factory.set(OrderUtils.getFactory(agvWaitPakin.getThreeCode()));
                 if (!Cools.isEmpty(agvWaitPakin.getProcessSts())) {
                     if (agvWaitPakin.getProcessSts() == 1) {
                         isCurrLev.set(true);
@@ -498,19 +574,19 @@
             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);
+                    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);
                 }
             } 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);
+                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
                 } else {
                     if (isCurrLev.get()) {
-                        agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,true);
+                        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);
                     }
                     //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
                 }
@@ -519,31 +595,188 @@
             String devNo = agvBasDevp.getDevNo();
             String locNo = agvLocMast.getLocNo();
 
+
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(1,201L,devNo,locNo,containerCode,now,userId, containerType,agvLocMast.getPltType());
+            AgvWrkMast wrkMast = createWrkMast(1, 201L, devNo, locNo, containerCode, now, userId, containerType, agvLocMast.getPltType());
             //鐢熸垚宸ヤ綔妗f槑缁�
+            long flowId = snowflakeIdWorker.nextId();
             agvWaitPakinList.forEach(wp -> {
-                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProcessSts());
+                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");
+            agvWaitPakinService.updateIoStatus(containerCode, "Y");
             //鏇存柊婧愮珯鐐圭姸鎬�
-            updateAgvBasDevp(agvBasDevp,"R",containerType);
-        }else {
+            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);
+            agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), true, true);
             // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
-            createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,containerType,agvLocMast.getPltType());
+            createWrkMast(10, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), containerCode, now, userId, containerType, agvLocMast.getPltType());
             //鏇存柊婧愮珯鐐圭姸鎬�
-            updateAgvBasDevp(agvBasDevp,"R",containerType,containerCode);
+            updateAgvBasDevp(agvBasDevp, "R", containerType, containerCode);
         }
 
         //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅
-        updateAgvLocMast(agvLocMast,"S");
+        updateAgvLocMast(agvLocMast, "S");
+        return agvLocMast.getLocNo();
+    }
+
+    /*
+   鍏ュ簱
+    */
+    @Transactional
+    public String emptyPlateInV2(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn, String code) {
+
+        Date now = new Date();
+
+        Short locType = 0;
+
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
+        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 31:
+                br = 6;
+                break;
+            case 40:
+                br = 5;
+                break;
+        }
+        if (br == 4 && agvBasDevp.getLocType1() == 2) {
+            br = 2;
+        }
+        if (agvBasDevp.getLocType1() != br) {
+            throw new CoolException("绔欑偣绫诲瀷鍜岃揣鏋剁被鍨嬩笉绗︼紒");
+        }
+        AtomicReference<String> factory = new AtomicReference<>();
+        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 if (containerType == 31) {
+            locType = 6;
+        } else {
+            locType = agvBasDevp.getLocType1();
+        }
+
+        if (!Cools.eq(agvBasDevp.getBarcode(), containerCode) && !agvBasDevp.getLocSts().equals("O") && !emptyAutoIn) {
+            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts() + ",鏃犳硶杩涜鍏ュ簱");
+        }
+
+        //鏌ヨ宸ヤ綔妗�
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
+        if (!Cools.isEmpty(agvWrkMast) && !emptyAutoIn) {
+            throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+        }
+
+        //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
+        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 -> {
+                factory.set(OrderUtils.getFactory(agvWaitPakin.getThreeCode()));
+                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);
+//                }
+//            }
+            agvLocMast = agvCommonService.getLocByLocRule(3, 1, code);
+
+
+            String devNo = agvBasDevp.getDevNo();
+            String locNo = agvLocMast.getLocNo();
+            String ctnNo = null;
+            // 鎵撴爣璁帮紝鑻ュ簱浣嶄笉澶燂紝鍏ュ簱鍒板埆鐨勬ゼ灞傦紝閭d箞闇�瑕佽法灞傜Щ搴�
+            if (!Cools.isEmpty(code)) {
+                if (agvLocMast.getLev1() == 1 && !code.equals(AsrsConstants.SANCHANG)) {
+                    ctnNo = "1";
+                } else if (agvLocMast.getLev1() == 2 && !code.equals(AsrsConstants.ERCHANG)) {
+                    ctnNo = "1";
+                }
+            }
+            //鐢熸垚宸ヤ綔妗�
+            AgvWrkMast wrkMast = createWrkMastV2(1, 201L, devNo, locNo, containerCode, now, userId, containerType, agvLocMast.getPltType(), ctnNo);
+            //鐢熸垚宸ヤ綔妗f槑缁�
+            long flowId = snowflakeIdWorker.nextId();
+            agvWaitPakinList.forEach(wp -> {
+                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, agvLocMast.getPltType());
+            //鏇存柊婧愮珯鐐圭姸鎬�
+            updateAgvBasDevp(agvBasDevp, "R", containerType, containerCode);
+        }
+
+        //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅
+        updateAgvLocMast(agvLocMast, "S");
         return agvLocMast.getLocNo();
     }
 
@@ -556,13 +789,24 @@
 
         // 绔欑偣妫�娴�
         AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
-        if(!agvBasDevp.getLocSts().equals("O")){
-            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜绌烘澘鍑哄簱");
+        if (Cools.isEmpty(agvBasDevp)) {
+            throw new CoolException("绔欑偣淇℃伅涓嶅瓨鍦�");
+        }
+        if (!agvBasDevp.getLocSts().equals("O")) {
+            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts() + ",鏃犳硶杩涜绌烘澘鍑哄簱");
+        }
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvBasDevp.getDevNo()));
+        if (!Cools.isEmpty(agvWrkMast)) {
+            throw new CoolException("鏈夎揣鏋跺湪寰�绔欑偣鎼繍" + agvBasDevp.getDevNo() + ",鏃犳硶杩涜绌烘澘鍑哄簱");
         }
 
         //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
-        AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType,agvBasDevp.getFloor());
-        if(containerType == 0){
+        Integer floor = agvBasDevp.getFloor();
+        if (floor == 4) {
+            floor = 1;
+        }
+        AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
+        if (containerType == 0) {
             //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
             agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
 
@@ -572,13 +816,13 @@
             throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖璐ф灦锛�");
         }
         //鐢熸垚宸ヤ綔妗�
-        createWrkMast(110,21L,agvLocMast.getLocNo(),agvBasDevp.getDevNo(),agvLocMast.getBarcode(),now,userId,containerType,agvLocMast.getPltType());
+        createWrkMast(110, 21L, agvLocMast.getLocNo(), agvBasDevp.getDevNo(), agvLocMast.getBarcode(), now, userId, containerType, agvLocMast.getPltType());
 
         //淇敼婧愬簱浣嶇姸鎬�
-        updateAgvLocMast(agvLocMast,"R");
+        updateAgvLocMast(agvLocMast, "R");
 
         //淇敼绔欑偣鐘舵��
-        updateAgvBasDevp(agvBasDevp,"S",(short)containerType,agvLocMast.getBarcode());
+        updateAgvBasDevp(agvBasDevp, "S", (short) containerType, agvLocMast.getBarcode());
 
     }
 
@@ -606,12 +850,14 @@
             Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
             while (iterator1.hasNext()) {
                 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 (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()) || !locDetl.getProcessSts().equals(adjust.getProcessSts())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!agvLocDetlService.updateAnfmeProcess(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),adjust.getProcessSts())) {
+                        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() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -619,6 +865,7 @@
                         adjDetl.setLocNo(locDetl.getLocNo());
                         adjDetl.setMatnr(locDetl.getMatnr());
                         adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setMaktx(locDetl.getMaktx());
                         adjDetl.setOriQty(locDetl.getAnfme());
                         adjDetl.setAdjQty(adjust.getCount());
                         adjDetl.setModiTime(now);
@@ -642,7 +889,7 @@
         // 鍒犻櫎搴撳瓨
         for (AgvLocDetl locDetl : locDetls) {
             // todo 鐩樼偣璁板綍
-            if (!agvLocDetlService.updateAnfmeProcess(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getProcessSts())) {
+            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() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
             // 淇濆瓨璋冩暣璁板綍
@@ -650,6 +897,7 @@
             adjDetl.setLocNo(locDetl.getLocNo());
             adjDetl.setMatnr(locDetl.getMatnr());
             adjDetl.setBatch(locDetl.getBatch());
+            adjDetl.setMaktx(locDetl.getMaktx());
             adjDetl.setOriQty(locDetl.getAnfme());
             adjDetl.setAdjQty(0.0D);
             adjDetl.setModiTime(now);
@@ -663,7 +911,9 @@
 
         // 娣诲姞搴撳瓨
         for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
-            if (adjust.getCount() == 0.0D) { continue; }
+            if (adjust.getCount() == 0.0D) {
+                continue;
+            }
             Mat mat = matService.selectByMatnr(adjust.getMatnr());
             AgvLocDetl locDetl = new AgvLocDetl();
             locDetl.sync(mat);
@@ -686,6 +936,7 @@
             adjDetl.setLocNo(locMast.getLocNo());
             adjDetl.setMatnr(adjust.getMatnr());
             adjDetl.setBatch(adjust.getBatch());
+            adjDetl.setMaktx(locDetl.getMaktx());
             adjDetl.setOriQty(0.0D);
             adjDetl.setAdjQty(adjust.getCount());
             adjDetl.setModiTime(now);
@@ -722,17 +973,17 @@
     @Transactional
     public void completeWrkMast(String workNo, Long userId) {
         AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         if (wrkMast.getIoType() == 113 && (wrkMast.getWrkSts() != 212L || wrkMast.getWrkSts() != 213L || wrkMast.getWrkSts() != 214L)) {
-            throw new CoolException(workNo+"涓嶆敮鎸佹墜鍔ㄧ淮鎶�");
+            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);
+        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);
 
                 WrkMastExecute wrkMastExecute = wrkMastExecuteService.selectOne(new EntityWrapper<WrkMastExecute>().eq("wrk_no", workNo));
                 wrkMastExecute.setWrkSts(3L);
@@ -741,46 +992,47 @@
             }
             return;
 
-        } else  {
-            if(wrkMast.getIoType() == 110){
-                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),206,"鎵嬪姩瀹屾垚",userId);
+        } else {
+            if (wrkMast.getIoType() == 110) {
+                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(), 206, "鎵嬪姩瀹屾垚", userId);
             } else {
-                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205,"鎵嬪姩瀹屾垚",userId);
+                agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(), 205, "鎵嬪姩瀹屾垚", userId);
             }
         }
 
         //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
-        if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 111){
+        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 111) {
             //淇敼鍑哄簱绔欑偣鐘舵��
-            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(), "F", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
         }
-        if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53 ){
+        if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53) {
             //淇敼鍑哄簱绔欑偣鐘舵��
-            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"O","",wrkMast.getWhsType().shortValue());
+            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(), "O", "", wrkMast.getWhsType().shortValue());
         }
         //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
 
         if (wrkMast.getIoType() == 10) {
-            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"O",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+            agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(), "O", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
         }
 
     }
 
     @Transactional
-    public void cancelWrkMast(String workNo, Long userId,Integer type) {
+    public void cancelWrkMast(String workNo, Long userId, Integer type) {
         AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        long flowId = snowflakeIdWorker.nextId();
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
-        if (wrkMast.getIoType()==121){
-            if (wrkMast.getWrkSts()<12L){
+        if (wrkMast.getIoType() == 121) {
+            if (wrkMast.getWrkSts() < 12L) {
                 //婧愬簱浣�
                 String locNo = wrkMast.getSourceLocNo();
 
                 // 鐩爣搴撲綅
                 String targetLocNo = wrkMast.getLocNo();
-                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
-                agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
+                agvLocMastService.updateLocStsByLocNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo));
+                agvLocMastService.updateLocStsByLocNo(targetLocNo, "O", "", null);
 
                 wrkMast.setModiUser(userId);
                 wrkMast.setModiTime(new Date());
@@ -797,7 +1049,7 @@
 
 
                 //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
-                if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+                if (!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())) {
                     throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
                 }
 
@@ -805,26 +1057,26 @@
                     //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
                     agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
                 }
-            }else {
+            } else {
                 throw new CoolException("褰撳墠浠诲姟姝e湪鎵ц锛屼笉鍙彇娑�");
             }
-        }else {
+        } else {
             //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
-            if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
+            if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) {
                 throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
             }
 
             //鍏ュ簱鍙栨秷
-            if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 58){
+            if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 58) {
                 //婧愮珯鐐�
                 String devNo = wrkMast.getSourceLocNo();
                 //鐩爣搴撲綅
                 String locNo = wrkMast.getLocNo();
-                agvLocMastService.updateLocStsByLocNo(locNo,"O","",null);
+                agvLocMastService.updateLocStsByLocNo(locNo, "O", "", null);
                 if (wrkMast.getIoType() == 58) {
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo, "F", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
                 } else {
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",wrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo, "O", "", wrkMast.getWhsType().shortValue());
                 }
 
                 if (wrkMast.getIoType() == 1) {
@@ -834,11 +1086,39 @@
                         // 鍥炴粴鍏ュ簱璁㈠崟
                         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("璁㈠崟鍥炴粴澶辫触");
                         }
+//                        FlowLog flowLog = new FlowLog();
+//                        flowLog.setFid(String.valueOf(flowId));
+//                        flowLog.setSpare2(wrkMast.getWrkNo().toString());
+//                        flowLog.setLocNo(locNo);
+//                        flowLog.setSpare1(wrkMast.getBarcode());
+//                        flowLog.setOpType(3L);
+//                        flowLog.setOrderNo(agvWaitPakin.getOrderNo());
+//                        flowLog.setThreeCode(agvWaitPakin.getThreeCode());
+//                        flowLog.setMatnr(agvWaitPakin.getMatnr());
+//                        flowLog.setMaktx(agvWaitPakin.getMaktx());
+//                        flowLog.setOrderPrevious(orderDetl.getAnfme());
+//                        flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                        flowLog.setOrderChanged(0.0);
+//
+//                        flowLog.setQtyPrevious(orderDetl.getQty());
+//                        flowLog.setQtyCurrent(orderDetl.getQty()-agvWaitPakin.getAnfme());
+//                        flowLog.setQtyChanged(-agvWaitPakin.getAnfme());
+//
+//                        flowLog.setLocPrevious(0.0);
+//                        flowLog.setLocCurrent(0.0);
+//                        flowLog.setLocChanged(-agvWaitPakin.getAnfme());
+//
+//                        flowLog.setUserId(userId);
+//                        flowLog.setAppeTime(new Date());
+//                        if (!flowLogService.insert(flowLog)) {
+//                            throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                        }
                         // 鍒犻櫎缁勬墭妗�
-                        if (!agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",agvWaitPakin.getSuppCode()).eq("matnr",agvWaitPakin.getMatnr()).eq("three_code",agvWaitPakin.getThreeCode()))) {
+                        if (!agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvWaitPakin.getSuppCode()).eq("matnr", agvWaitPakin.getMatnr()).eq("three_code", agvWaitPakin.getThreeCode()))) {
                             throw new CoolException("鍏ュ簱閫氱煡妗e彇娑堝け璐�");
                         }
                     }
@@ -848,14 +1128,14 @@
 
 
                 // 绉诲簱鍙栨秷
-            } else if( wrkMast.getIoType() == 11 || wrkMast.getIoType() == 12) {
+            } 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);
+                agvLocMastService.updateLocStsByLocNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo));
+                agvLocMastService.updateLocStsByLocNo(targetLocNo, "O", "", null);
                 // 婧愬簱浣� 搴撲綅涓绘。
                 AgvLocMast sourceLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
                 AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", targetLocNo));
@@ -866,12 +1146,42 @@
                         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("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+                            throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
                         }
+//                        FlowLog flowLog = new FlowLog();
+//                        flowLog.setFid(String.valueOf(flowId));
+//                        flowLog.setSpare2(wrkMast.getWrkNo().toString());
+//                        flowLog.setLocNo(locNo);
+//                        flowLog.setSpare1(wrkMast.getBarcode());
+//                        flowLog.setOpType(8L);
+//                        flowLog.setOrderNo(agvLocDetl.getOrderNo());
+//                        flowLog.setThreeCode(agvLocDetl.getThreeCode());
+//                        flowLog.setMatnr(agvLocDetl.getMatnr());
+//                        flowLog.setMaktx(agvLocDetl.getMaktx());
+//                        flowLog.setOrderPrevious(orderDetl.getAnfme());
+//                        flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                        flowLog.setOrderChanged(0.0);
+//
+//                        flowLog.setQtyPrevious(orderDetl.getQty());
+//                        flowLog.setQtyCurrent(orderDetl.getQty() + agvLocDetl.getAnfme());
+//                        flowLog.setQtyChanged(-agvLocDetl.getAnfme());
+//
+//                        flowLog.setLocPrevious(0.0);
+//                        flowLog.setLocCurrent(agvLocDetl.getAnfme());
+//                        flowLog.setLocChanged(agvLocDetl.getAnfme());
+//
+//                        flowLog.setUserId(userId);
+//                        flowLog.setAppeTime(new Date());
+//                        if (!flowLogService.insert(flowLog)) {
+//                            throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                        }
                     }
+                } else {
+
                 }
+
                 // 鑷姩璋冩嫧鍑哄簱鍙栨秷
-            } else if(wrkMast.getIoType() == 108 || wrkMast.getIoType() == 111 || wrkMast.getIoType() == 112) {
+            } else if (wrkMast.getIoType() == 108 || wrkMast.getIoType() == 111 || wrkMast.getIoType() == 112) {
                 if (wrkMast.getIoType() == 112) {
                     throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
                 }
@@ -879,15 +1189,15 @@
                 String locNo = wrkMast.getSourceLocNo();
                 // 鐩爣搴撲綅
                 String targetLocNo = wrkMast.getLocNo();
-                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo),"",(short)0);
+                agvLocMastService.updateLocStsByLocNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo), "", (short) 0);
                 if (wrkMast.getIoType() == 108) {
                     if (wrkMast.getWrkSts() != 22) {
-                        agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
+                        agvLocMastService.updateLocStsByLocNo(targetLocNo, "O", "", null);
                     }
                 } else {
                     if (wrkMast.getWrkSts() != 207L && wrkMast.getWrkSts() != 205L) {
                         if (wrkMast.getWrkSts() != 22) {
-                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo,"O","",wrkMast.getWhsType().shortValue());
+                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo, "O", "", wrkMast.getWhsType().shortValue());
                         }
                     } else {
                         throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
@@ -899,10 +1209,60 @@
                 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 orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()));
+                    if (orderDetl != null) {
+                        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());
+                        }
+                    }
+//                    FlowLog flowLog = new FlowLog();
+//                    flowLog.setFid(String.valueOf(flowId));
+//                    flowLog.setSpare2(wrkMast.getWrkNo().toString());
+//                    flowLog.setLocNo(locNo);
+//                    flowLog.setSpare1(wrkMast.getBarcode());
+//                    flowLog.setOpType(9L);
+//                    flowLog.setOrderNo(agvLocDetl.getOrderNo());
+//                    flowLog.setThreeCode(agvLocDetl.getThreeCode());
+//                    flowLog.setMatnr(agvLocDetl.getMatnr());
+//                    flowLog.setMaktx(agvLocDetl.getMaktx());
+//                    flowLog.setOrderPrevious(orderDetl.getAnfme());
+//                    flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                    flowLog.setOrderChanged(0.0);
+//
+//                    flowLog.setQtyPrevious(orderDetl.getQty());
+//                    flowLog.setQtyCurrent(orderDetl.getQty() - agvLocDetl.getAnfme());
+//                    flowLog.setQtyChanged(- agvLocDetl.getAnfme());
+//
+//                    flowLog.setLocPrevious(0.0);
+//                    flowLog.setLocCurrent(agvLocDetl.getAnfme());
+//                    flowLog.setLocChanged(agvLocDetl.getAnfme());
+//
+//                    flowLog.setUserId(userId);
+//                    flowLog.setAppeTime(new Date());
+//                    if (!flowLogService.insert(flowLog)) {
+//                        throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                    }
+                }
+
+                // 鍥炴祦鍗曞彇娑�
+            } else if (wrkMast.getIoType() == 114) {
+                //婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
+                // 鐩爣搴撲綅
+                String targetLocNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo));
+                agvLocMastService.updateLocStsByLocNo(targetLocNo, "O", "", null);
+                // 婧愬簱浣� 搴撲綅涓绘。
+                AgvLocMast sourceLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
+                AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", targetLocNo));
+                // 褰撳墠浠诲姟鏄法灞傜Щ搴�  涓旂洰鏍囨ゼ灞傛槸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("source", 17));
                     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());
+                    if (!orderDetlService.updateById(orderDetl)) {
+                        throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
                     }
                 }
                 //鍑哄簱鍙栨秷
@@ -912,61 +1272,61 @@
                 //鐩爣绔欑偣
                 String devNo = wrkMast.getLocNo();
                 if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 109) {
-                    if (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);
+                        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 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);
+                            agvLocMastService.updateLocStsByLocNo(locNo, "D", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
+                            agvLocMastService.updateLocStsByLocNo(devNo, "O", "", null);
                         }
 
-                    }else {
-                        agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null);
+                    } else {
+                        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));
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo));
                     } else {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo));
                         if (!Cools.isEmpty(devNo)) {
-                            agvLocMastService.updateLocStsByLocNo(devNo,"0","",null);
+                            agvLocMastService.updateLocStsByLocNo(devNo, "0", "", null);
                         }
                     }
 
-                } else  {
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null);
-                    agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
+                } 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 && wrkMast.getIoType() != 11){
+            if (wrkMast.getIoType() != 114 && wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType() != 111 && wrkMast.getIoType() != 108 && wrkMast.getIoType() != 12 && wrkMast.getIoType() != 11) {
                 //璁㈠崟鍥炴粴
                 //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())){
+                    if (!Cools.isEmpty(agvWrkDetl.getOrderNo())) {
                         String orderNo = agvWrkDetl.getOrderNo();
-                        if(orderNo.contains("{")){
+                        if (orderNo.contains("{")) {
                             JSONArray orderArray = JSON.parseArray(orderNo);
-                            for (Object o : orderArray){
+                            for (Object o : orderArray) {
                                 JSONObject jsonobject = (JSONObject) o;
-                                OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                                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());
+                        } else {
+                            OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
                             orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
                             orderDetlService.updateById(orderDetl);
                         }
@@ -988,7 +1348,7 @@
 
 
             //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
-            if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+            if (!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())) {
                 throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
 
@@ -1002,7 +1362,7 @@
     /*
     鏇存柊鐩爣搴撲綅淇℃伅
      */
-    private void updateAgvLocMast(AgvLocMast locMast, String locSts){
+    private void updateAgvLocMast(AgvLocMast locMast, String locSts) {
         locMast.setLocSts(locSts);
         locMast.setModiTime(new Date());
         agvLocMastService.updateById(locMast);
@@ -1011,7 +1371,7 @@
     /*
     鏇存柊鐩爣搴撲綅淇℃伅鍜屽簱浣嶈揣鏋剁被鍨�
      */
-    private void updateAgvLocMast(AgvLocMast locMast, String locSts, short type){
+    private void updateAgvLocMast(AgvLocMast locMast, String locSts, short type) {
         locMast.setLocSts(locSts);
         locMast.setLocType2(type);
         locMast.setModiTime(new Date());
@@ -1021,8 +1381,8 @@
     /*
     鏇存柊婧愮珯鐐逛俊鎭�
      */
-    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){
-        if(!Cools.isEmpty(agvBasDevp)){
+    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts) {
+        if (!Cools.isEmpty(agvBasDevp)) {
             agvBasDevp.setLocSts(locSts);
             agvBasDevpService.updateById(agvBasDevp);
         }
@@ -1031,16 +1391,16 @@
     /*
     鏇存柊婧愮珯鐐逛俊鎭拰搴撲綅璐ф灦绫诲瀷
      */
-    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType){
-        if(!Cools.isEmpty(agvBasDevp)){
+    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType) {
+        if (!Cools.isEmpty(agvBasDevp)) {
             agvBasDevp.setLocSts(locSts);
             agvBasDevp.setLocType2(continerType);
             agvBasDevpService.updateById(agvBasDevp);
         }
     }
 
-    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){
-        if(!Cools.isEmpty(agvBasDevp)){
+    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode) {
+        if (!Cools.isEmpty(agvBasDevp)) {
             agvBasDevp.setLocSts(locSts);
             agvBasDevp.setLocType2(continerType);
             agvBasDevp.setBarcode(containerCode);
@@ -1051,13 +1411,21 @@
     /*
     鐢熸垚宸ヤ綔妗f槑缁�
      */
-    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){
+    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 + "鍟嗗搧缁存姢澶辫触");
         }
+        OrderDetl orderDetl = orderDetlService.selectItem(orderNo, mat.getMatnr(), batch, csocode);
+        if (orderDetl == null) {
+            throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+        }
         AgvWrkDetl wrkDetl = new AgvWrkDetl();
         wrkDetl.sync(mat);
+        if (orderDetl != null) {
+            wrkDetl.setWeight(orderDetl.getWeight());
+            wrkDetl.setVolume(orderDetl.getVolume());
+        }
         wrkDetl.setWrkNo(wrkNo);
         wrkDetl.setOrderNo(orderNo);
         wrkDetl.setIoTime(now);
@@ -1081,7 +1449,7 @@
     鐢熸垚宸ヤ綔妗f槑缁�
      */
     @Deprecated
-    private void createWrkDetlReWrite(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){
+    private void createWrkDetlReWrite(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId) {
         Date now = new Date();
         agvWaitPakinList.stream().forEach(agvWaitPakin -> {
             Mat mat = matService.selectByMatnr(agvWaitPakin.getMatnr());
@@ -1090,6 +1458,9 @@
             }
             AgvWrkDetl wrkDetl = new AgvWrkDetl();
             wrkDetl.sync(mat);
+            wrkDetl.setWeight(agvWaitPakin.getWeight());
+            wrkDetl.setVolume(agvWaitPakin.getVolume());
+
             wrkDetl.setWrkNo(wrkMast.getWrkNo());
             wrkDetl.setOrderNo(agvWaitPakin.getOrderNo());
             wrkDetl.setIoTime(now);
@@ -1109,7 +1480,7 @@
     /*
     鐢熸垚宸ヤ綔妗�
      */
-    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, int containerType,Integer pltType){
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, Integer pltType) {
         AgvWrkMast wrkMast = new AgvWrkMast();
         //宸ヤ綔鐘舵��
         wrkMast.setWrkSts(wrkSts);
@@ -1131,8 +1502,14 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
+        if (!Cools.isEmpty(locNo) && Cools.isEmpty(pltType)) {
+            AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
+            pltType = agvLocMast.getPltType();
+        }
         wrkMast.setPltType(pltType);
         wrkMast.setLogErrMemo("createWaitPainWrkMastStart");
+
+
         if (!agvWrkMastService.insertByIncrease(wrkMast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
@@ -1140,19 +1517,66 @@
         //鏆傚瓨浣嶄换鍔�+1
         addInQty(locNo);
 
-        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo));
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo));
 
         return wrkMast;
     }
 
-    private boolean isPakOut(String locNo, TaskDto taskDto){
+    /*
+   鐢熸垚宸ヤ綔妗�
+    */
+    private AgvWrkMast createWrkMastV2(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, Integer pltType, String ctnNo) {
+        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.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        if (!Cools.isEmpty(locNo) && Cools.isEmpty(pltType)) {
+            AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
+            pltType = agvLocMast.getPltType();
+        }
+        wrkMast.setPltType(pltType);
+        wrkMast.setLogErrMemo("createWaitPainWrkMastStart");
+        wrkMast.setCtnNo(ctnNo);
+
+
+        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+
+        //鏆傚瓨浣嶄换鍔�+1
+        addInQty(locNo);
+
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo));
+
+        return wrkMast;
+    }
+
+
+    private boolean isPakOut(String locNo, TaskDto taskDto) {
         Double allAnfme = agvLocDetlService.selectSumAnfmeByLocNo(locNo);
         Double pakOutAnfme = 0.0;
-        for (LocDto locDto : taskDto.getLocDtos()){
+        for (LocDto locDto : taskDto.getLocDtos()) {
             pakOutAnfme += locDto.getAnfme();
         }
 
-        if(allAnfme > pakOutAnfme){
+        if (allAnfme > pakOutAnfme) {
             return false;
         }
         return true;
@@ -1162,19 +1586,19 @@
     AGV鐢熸垚鍑哄簱宸ヤ綔妗e悗淇敼璁㈠崟淇℃伅
     TODO 涓庡洓椤瑰簱鐢熸垚鍑哄簱宸ヤ綔妗e悗淇敼璁㈠崟淇℃伅鏁村悎鍒颁竴璧�
      */
-    private void modifyOrderDetl(LocDto locDto, Long userId){
+    private void modifyOrderDetl(LocDto locDto, Long userId) {
 
         if (!BaseController.isJSON(locDto.getOrderNo())) {
             //闈炲悎骞跺嚭搴�
-            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
+            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
             if (orderDetl == null) {
-                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null, locDto.getCsocode(), locDto.getIsoseq());
             }
-            if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
+            if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(), locDto.getCsocode(), locDto.getIsoseq())) {
                 throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
             }
             orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
-        }else {
+        } else {
             //鍚堝苟鍑哄簱
             List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
 
@@ -1184,20 +1608,20 @@
             Double orderAnfme;
 
             for (OrderDto orderDto : orderDtoList) {
-                OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
+                OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
                 if (orderDetl == null) {
-                    orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+                    orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null, locDto.getCsocode(), locDto.getIsoseq());
                 }
 
                 orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
 
-                if(locAnfme > orderAnfme){
+                if (locAnfme > orderAnfme) {
                     locAnfme -= orderAnfme;
-                }else {
+                } else {
                     orderAnfme = locAnfme;
                 }
 
-                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
+                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme, orderDetl.getThreeCode(), orderDetl.getDeadTime())) {
                     throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                 }
                 orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -1218,30 +1642,30 @@
         if (wrkMast.getIoType() == 108) {
             wrkMast.setIoType(111);
             wrkMast.setModiTime(new Date());
-            agvWrkMastService.update(wrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
-        } else if(wrkMast.getIoType() == 111) {
+            agvWrkMastService.update(wrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
+        } else if (wrkMast.getIoType() == 111) {
             wrkMast.setIoType(108);
             wrkMast.setModiTime(new Date());
-            agvWrkMastService.update(wrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
+            agvWrkMastService.update(wrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", workNo));
         }
 
 
     }
 
-    private void addInQty(String devno){
+    private void addInQty(String devno) {
         AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devno);
-        if(!Cools.isEmpty(agvBasDevp)){
-            if(Cools.isEmpty(agvBasDevp.getInQty())){
+        if (!Cools.isEmpty(agvBasDevp)) {
+            if (Cools.isEmpty(agvBasDevp.getInQty())) {
                 agvBasDevp.setInQty(1);
-            }else {
+            } else {
                 agvBasDevp.setInQty(agvBasDevp.getInQty() + 1);
             }
         }
     }
 
-    private int getContainerTypeByloc(String locNo){
+    private int getContainerTypeByloc(String locNo) {
 
-        return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no",locNo)).getLocType2();
+        return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo)).getLocType2();
 
     }
 

--
Gitblit v1.9.1