From 08915b05c42b2ba97a8bb0809aeb48802ae63b46 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期五, 27 三月 2026 20:42:32 +0800
Subject: [PATCH] no message

---
 src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java   |   31 +
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java         |  659 ++++++++++++++++-------------
 src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java    |  101 ++++
 src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java       |    2 
 src/main/java/com/zy/asrs/task/WorkMastScheduler.java               |   25 
 src/main/java/com/zy/common/model/TaskDto.java                      |   25 +
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java              |   77 ++-
 src/main/resources/mapper/TaskMapper.xml                            |    2 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java          |   47 +
 src/main/java/com/zy/common/model/LocDto.java                       |    2 
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java         |   12 
 src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java         |   43 +
 src/main/java/com/zy/common/constant/MesConstant.java               |    6 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java        |  223 ++++++---
 src/main/resources/mapper/OrderDetlPakoutMapper.xml                 |    6 
 src/main/java/com/zy/common/service/CommonService.java              |   20 
 17 files changed, 824 insertions(+), 459 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java b/src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java
new file mode 100644
index 0000000..f517eba
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java
@@ -0,0 +1,101 @@
+package com.zy.asrs.entity.param;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "CheckOrderDetlParams", description = "鐩樼偣璋冩暣鍙傛暟")
+public class CheckOrderDetlParams implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 鍗曟嵁缂栧彿
+     */
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @TableField("order_no")
+    private String orderNo;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private BigDecimal anfme;
+
+    @ApiModelProperty(value= "")
+    @TableField("diff_qty")
+    private BigDecimal diffQty;
+
+    /**
+     * 鍟嗗搧缂栫爜
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栫爜")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 涓夋柟缂栫爜
+     */
+    @ApiModelProperty(value= "涓夋柟缂栫爜")
+    @TableField("three_code")
+    private String threeCode;
+
+    /**
+     * 渚涘簲鍟�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supp;
+
+    /**
+     * 渚涘簲鍟嗙紪鐮�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+    @TableField("supp_code")
+    private String suppCode;
+
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value= "澶囩敤1")
+    private String standby1 = "";
+
+
+
+    /**
+     * 澶囩敤1
+     */
+    @ApiModelProperty(value= "澶囩敤1")
+    @TableField("box_type1")
+    private String boxType1 = "1";
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index a99385e..46203c1 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -133,7 +133,7 @@
         locMast.setLocSts("Q");
         locMast.setModiTime(now);
         locMast.setModiUser(userId);
-        if (!locCacheService.updateById(locMast)) {
+        if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) {
             throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
         }
     }
@@ -174,7 +174,7 @@
                 locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
                 locMast.setModiTime(now);
                 locMast.setModiUser(userId);
-                locCacheService.updateById(locMast);
+                locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
             }
 
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
@@ -189,7 +189,7 @@
                 throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐ワ紝鐩爣搴撲綅鐘舵�侊細" + station.getLocSts());
             }
             // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
-        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() < 14) {
+        } else if (wrkMast.getWrkSts() > 300 && wrkMast.getWrkSts() < 304) {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -208,7 +208,8 @@
                 locMast.setLocSts("O");
                 locMast.setModiTime(now);
                 locMast.setModiUser(userId);
-                locCacheService.updateById(locMast);
+                locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
+//                locCacheService.updateById(locMast);
             }
 
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
@@ -334,7 +335,8 @@
         locMast.setLocSts(locSts);
         locMast.setModiTime(now);
         locMast.setModiUser(userId);
-        boolean locMastRes = locCacheService.updateById(locMast);
+
+        boolean locMastRes = locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
         if (!wrkMastRes || !locMastRes) {
             throw new CoolException("淇濆瓨鏁版嵁澶辫触");
         }
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index ae8e6bd..aa3be9f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -517,7 +517,8 @@
     @Transactional(rollbackFor = Exception.class)
     public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
         Date now = new Date();
-        List<LocDto> locDtos = taskDto.getLocDtos();
+        List<LocDto> locDtos = taskDto.getLocDtos().stream().distinct().collect(Collectors.toList());
+//        Map<String, List<LocDto>> collect = taskDto.getLocDtos().stream().collect(Collectors.groupingBy(LocDto::getLocNo));
         for (LocDto locDto : locDtos) {
             if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
                 throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
@@ -554,25 +555,24 @@
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
-        for (LocDto locDto : taskDto.getLocDtos()) {
+        for (LocDto locDto : locDtos) {
             if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                 continue;
             }
 
-            List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>()
+            CheckOrderDetl checkOrderDetls = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                     .eq("loc_no", locDto.getLocNo())
                     .eq("matnr", locDto.getMatnr())
-                    .eq(!Cools.isEmpty(locDto.getBatch()),"batch", locDto.getBatch())
-                    .eq("order_no", locDto.getOrderNo())
-            );
+                    .eq("supp_code", locDto.getSuppCode())
+                    .eq("order_no", locDto.getOrderNo()));
 
-            if (checkOrderDetls.size() > 1) {
+            if (Objects.isNull(checkOrderDetls)) {
                 throw new CoolException("鏁版嵁澶т簬1,璇锋鏌ユ暟鎹�");
             }
 
             WrkDetl wrkDetl = new WrkDetl();
-            wrkDetl.sync(checkOrderDetls.get(0));
-            wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
+            wrkDetl.sync(checkOrderDetls);
+            wrkDetl.setOrderId(checkOrderDetls.getId());
             wrkDetl.setZpallet(wrkMast.getBarcode());
             wrkDetl.setIoTime(now);
             wrkDetl.setWrkNo(workNo);
@@ -587,8 +587,8 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
             // 淇敼璁㈠崟鏄庣粏
-            checkOrderDetls.get(0).setStatus(2);
-            if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))) {
+            checkOrderDetls.setStatus(2);
+            if (!checkOrderDetlService.updateById(checkOrderDetls)) {
                 throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
             }
         }
@@ -618,9 +618,9 @@
         }
         // 鑾峰彇搴撲綅
         LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
-        int ioType = (taskDto.isAll() ? 101 : 103);
+        int ioType = 103;
         // 鐢熸垚宸ヤ綔鍙�
-        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+        int workNo = commonService.getWorkNo(4);
 
         Task task = new Task();
         task.setWrkNo(workNo)
@@ -690,7 +690,7 @@
             locCache.setLocSts(ioType == 101 ? "R" : "P");
             locCache.setModiUser(userId);
             locCache.setModiTime(now);
-            if (!locCacheService.updateById(locCache)) {
+            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
                 throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
             }
         } else {
@@ -1388,8 +1388,7 @@
 
         if (wrkMast.getIoType() == 107) {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-            if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
-
+            if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) {
                 for (WrkDetl wrkDetl : wrkDetls) {
                     CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                             .eq("loc_no", wrkMast.getSourceLocNo())
@@ -1397,8 +1396,10 @@
                             .eq("batch", wrkDetl.getBatch())
                             .eq("order_no", wrkDetl.getOrderNo())
                     );
-                    checkOrderDetl.setStatus(1);
-                    checkOrderDetlService.updateById(checkOrderDetl);
+                    if (!Objects.isNull(checkOrderDetl)) {
+                        checkOrderDetl.setStatus(1);
+                        checkOrderDetlService.updateById(checkOrderDetl);
+                    }
                 }
                 CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", wrkDetls.get(0).getOrderNo()));
                 List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
@@ -1406,8 +1407,10 @@
                 checkOrder.setSettle(is ? 1L : 12L);
                 checkOrderService.updateById(checkOrder);
             }
-
-
+//            if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
+//
+//
+//            }
         }
 
 //        // 璁㈠崟鍏宠仈
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
index 69f5ead..ddfb52f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
@@ -1,20 +1,49 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.WrkDetl;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastLog;
 import com.zy.asrs.mapper.WrkDetlLogMapper;
 import com.zy.asrs.entity.WrkDetlLog;
 import com.zy.asrs.service.WrkDetlLogService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.service.WrkDetlService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
+@Slf4j
 @Service("wrkDetlLogService")
 public class WrkDetlLogServiceImpl extends ServiceImpl<WrkDetlLogMapper, WrkDetlLog> implements WrkDetlLogService {
 
+    @Autowired
+    private WrkDetlService wrkDetlService;
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean save(Integer workNo) {
-        return this.baseMapper.save(workNo) > 0;
+        List<WrkDetl> detlLogs = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+        if (Objects.isNull(detlLogs) || detlLogs.isEmpty()) {
+            log.error("鏁版嵁閿欒锛氫换鍔′笉瀛樺湪锛侊紒");
+//            throw new CoolException("鏁版嵁閿欒锛氫换鍔′笉瀛樺湪锛侊紒");
+        } else {
+            detlLogs.forEach(WrkDetl -> {
+                WrkDetlLog detlLog = new WrkDetlLog();
+                BeanUtils.copyProperties(WrkDetl, detlLog);
+                if (!this.insert(detlLog)) {
+                    throw new CoolException("浠诲姟鏃ュ織淇濆瓨澶辫触锛侊紒");
+                }
+            });
+        }
+        return true;
     }
 
     @Override
diff --git a/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java b/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
index c2a7f49..b83a77e 100644
--- a/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
@@ -14,7 +14,7 @@
     /**
      * 灏嗗凡瀹屾垚order鍜宱rderDetl绉诲姩鍒發og琛�
      */
-    @Scheduled(cron = "0/30 * * * * ?")
+    @Scheduled(cron = "0 0 04 * * ?")
     public void execute(){
         orderMoveHistoryHandler.start();
     }
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index fd63a1e..87e9e24 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,11 +1,15 @@
 package com.zy.asrs.task;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.zy.asrs.entity.CheckOrder;
 import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderPakout;
 import com.zy.asrs.enums.OrderTypeEnum;
 import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.OrderPakoutService;
 import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.OrderSyncHandler;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -17,6 +21,7 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -35,6 +40,8 @@
 
     @Value("${erp.switch.ErpReportOld}")
     private boolean ErpReportOld;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
 
     @Scheduled(cron = "0 0 1 * * ? ")
     public void clearApiLog() {
@@ -53,9 +60,9 @@
             try {
                 ReturnT<String> result = orderSyncHandler.startOrderIssuedOnceMore(order);
                 if (!result.isSuccess()) {
-                    log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触:{}", order.getOrderNo(),result.getMsg());
+                    log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触:{}", order.getOrderNo(), result.getMsg());
                 }
-            } catch (Exception e){
+            } catch (Exception e) {
                 log.error(e.getMessage());
                 log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触", order.getOrderNo());
             }
@@ -67,19 +74,19 @@
     public void completeAndReportOrderIssued() {
 //        String erpReport = Parameter.get().getErpReport();
 //        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
-            List<Order> orderList = orderService.selectComplete1();
+        List<Order> orderList = orderService.selectComplete1();
 //            List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).eq("status", 1).orderBy("create_time", true));
-            for (Order order : orderList) {
-                try {
-                    ReturnT<String> result = orderSyncHandler.startOrderIssued(order);
-                    if (!result.isSuccess()) {
-                        log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
-                    }
-                } catch (Exception e){
-                    log.error(e.getMessage());
+        for (Order order : orderList) {
+            try {
+                ReturnT<String> result = orderSyncHandler.startOrderIssued(order);
+                if (!result.isSuccess()) {
                     log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
                 }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
             }
+        }
 //        }
     }
 
@@ -88,25 +95,46 @@
     public void completeAndReportOrderInAndOutUtil() {
 //        String erpReport = Parameter.get().getErpReport();
 //        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
-            List<Order> orders = OrderInAndOutUtil.selectComplete(null);
-            for (Order order : orders) {
-                try {
-                    ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order);
-                    if (!result.isSuccess()) {
-                        log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", order.getOrderNo());
-                    }
-                } catch (Exception e){
-                    log.error(e.getMessage());
+        List<Order> orders = OrderInAndOutUtil.selectComplete(null);
+        for (Order order : orders) {
+            try {
+                ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order);
+                if (!result.isSuccess()) {
                     log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", order.getOrderNo());
                 }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", order.getOrderNo());
             }
+        }
 //        }
+    }
+
+//    @Scheduled(cron = "0/5 * * * * ? ")
+    @Async("orderThreadPool")
+    public void completePakoutOrder() {
+        List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>()
+                .in("doc_type", Arrays.asList(2))
+                .eq("settle", 4));
+        if (orderPakouts != null && orderPakouts.size() > 0) {
+            for (OrderPakout orderPakout : orderPakouts) {
+                try {
+                    ReturnT<String> result = orderSyncHandler.startConvertOrders(orderPakout);
+                    if (!result.isSuccess()) {
+                        log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", orderPakout.getOrderNo());
+                    }
+                } catch (Exception e) {
+                    log.error(e.getMessage());
+                    log.error("鍗曟嵁[orderNo={}]杞笂鎶ヨ〃澶辫触", orderPakout.getOrderNo());
+                }
+            }
+        }
     }
 
     @Scheduled(cron = "0/30 * * * * ? ")
     @Async("orderThreadPool")
     public void completeAndReportOrderReport() {
-        if (!ErpReportOld){
+        if (!ErpReportOld) {
             return;
         }
         String erpReport = Parameter.get().getErpReport();
@@ -118,7 +146,6 @@
                     if (!result.isSuccess()) {
                         log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
                     }
-
                 } catch (Exception e) {
                     log.error(e.getMessage());
                     log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
@@ -127,11 +154,13 @@
         }
     }
 
-    /**鎹熸孩鍗曞畬缁撲笂鎶� */
+    /**
+     * 鎹熸孩鍗曞畬缁撲笂鎶�
+     */
     @Scheduled(cron = "0/15 * * * * ?")
     @Async("orderThreadPool")
     public void completeCheckOrderReport() {
-        if (!ErpReportOld){
+        if (!ErpReportOld) {
             return;
         }
         String erpReport = Parameter.get().getErpReport();
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index f9522b8..62b4d8c 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -89,7 +89,9 @@
      */
     @Scheduled(cron = "0/5 * * * * ? ")
     private void autoPubTasks() {
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(11L, 1L)));
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                .in("wrk_sts", Arrays.asList(11L, 1L))
+                .orderDesc(Arrays.asList("io_pri")));
         if (wrkMasts.isEmpty()) {
             return;
         }
@@ -97,8 +99,7 @@
         listMap.keySet().forEach(key -> {
             List<WrkMast> wrkMasts1 = listMap.get(key);
             Collections.shuffle(wrkMasts1);
-            Integer crnNos = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", key));
-            if (crnNos < 6) {
+            try {
                 wrkMasts1.forEach(wrkMast -> {
                     WorkTaskParams params = new WorkTaskParams();
                     if (wrkMast.getIoType().equals(11)) {
@@ -117,6 +118,8 @@
                         wcsApiService.pubWrkToWcs(params);
                     }
                 });
+            } catch (Exception e) {
+                log.error(e.getMessage());
             }
         });
     }
@@ -173,11 +176,17 @@
         Collections.shuffle(tasks);
         tasks.forEach(wrkMast -> {
             CallAgvParams param = new CallAgvParams();
-            if (wrkMast.getIoType() == 1) {
-                param.setWrkNo(wrkMast.getWrkNo() + "");
-                param.setOrgSite(wrkMast.getSourceStaNo());
-                param.setTarSite(wrkMast.getLocNo());
-            } else if (wrkMast.getIoType() == 110 ||wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103){
+            if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53) {
+                if (wrkMast.getIsNewIn().equals("XM1")) {
+                    param.setWrkNo(wrkMast.getWrkNo() + "");
+                    param.setOrgSite(wrkMast.getSourceStaNo());
+                    param.setTarSite(wrkMast.getStaNo());
+                } else {
+                    param.setWrkNo(wrkMast.getWrkNo() + "");
+                    param.setOrgSite(wrkMast.getSourceStaNo());
+                    param.setTarSite(wrkMast.getLocNo());
+                }
+            } else if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103){
                 param.setWrkNo(wrkMast.getWrkNo() + "");
                 param.setOrgSite(wrkMast.getSourceLocNo());
                 param.setTarSite(wrkMast.getStaNo());
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
index 11c0b25..6c744cf 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
@@ -68,7 +68,7 @@
                 orderDetl.setUpdateTime(now);
 //                orderDetlService.addToLogTable(orderDetl);
                 OrderInAndOutUtil.addToLogTableOrderDetl(order.getPakinPakoutStatus$(),orderDetl);
-                if (order.getPakinPakoutStatus() == 1){
+                if (order.getPakinPakoutStatus() == 1) {
                     orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>()
                             .eq("id",orderDetl.getId()));
                 } else {
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index 3286885..a2970cd 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.task.handler;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
@@ -19,9 +20,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.enums.OrderTypeEnum;
 import com.zy.asrs.service.*;
-import com.zy.asrs.service.impl.TaskDetlLogServiceImpl;
-import com.zy.asrs.service.impl.TaskDetlServiceImpl;
-import com.zy.asrs.service.impl.WrkDetlLogServiceImpl;
+import com.zy.asrs.service.impl.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -75,7 +74,13 @@
     @Autowired
     private TaskDetlLogService taskDetlLogService;
     @Autowired
-    private WrkDetlLogServiceImpl wrkDetlLogService;
+    private WrkDetlLogService wrkDetlLogService;
+    @Autowired
+    private WaitPakinService waitPakinService;
+    @Autowired
+    private OrderDetlPakoutService orderDetlPakoutService;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
 
 
     @Transactional
@@ -279,15 +284,15 @@
             orderDetls.forEach(detl -> {
                 Mat material = matService.selectByMatnr(detl.getMatnr());
                 if (Objects.isNull(material)) {
-                    throw new CoolException(material.getMatnr() +  "鐗╂枡涓嶅瓨鍦�");
+                    throw new CoolException(material.getMatnr() + "鐗╂枡涓嶅瓨鍦�");
                 }
-                ReportOrderParams itemParam = new ReportOrderParams();
-
-                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                List<WrkDetlLog> wrkDetls = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>()
                         .eq("matnr", detl.getMatnr())
+                        .eq("three_code", detl.getThreeCode())
                         .eq("supp_code", detl.getSuppCode())
                         .eq("order_no", detl.getOrderNo()));
-                if (Objects.isNull(locDetl)) {
+                if (Objects.isNull(wrkDetls) || wrkDetls.isEmpty()) {
+                    ReportOrderParams itemParam = new ReportOrderParams();
                     // BS Code
                     itemParam.setTotal_serial(detl.getThreeCode())
                             // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
@@ -307,30 +312,34 @@
                             .setDamage_qty(0)
                             // 涓婃姤鏃讹紝榛樿宸紓鏁伴噺鏄�0
                             .setDiff_qty(0);
+                    reportOrderParams.add(itemParam);
                 } else {
-                    // BS Code
-                    itemParam.setTotal_serial(detl.getThreeCode())
-                            // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
-                            .setPro_type(material.getProType())
-                            // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
-                            .setPro_komcode(detl.getMatnr())
-                            // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
-                            .setPro_id(detl.getSuppCode())
-                            .setLocation_no(locDetl.getZpallet())
-                            .setSj_emp(locDetl.getModiUser$())
-                            .setLocation_type(MatLocType.getMatTag(material.getTagId() + ""))
-                            // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
-                            .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
-                            // 涓婃姤鏃讹紝榛樿涓婃姤鏁伴噺鏄鍗曟暟閲�
-                            .setPick_qty(locDetl.getAnfme().intValue())
-                            // 涓婃姤鏃讹紝榛樿鎹熷潖鏁伴噺鏄�0
-                            .setDamage_qty(0)
-                            // 涓婃姤鏃讹紝榛樿宸紓鏁伴噺鏄�0
-                            .setDiff_qty(0);
+                    wrkDetls.forEach(wrkDetl -> {
+                        ReportOrderParams itemParam = new ReportOrderParams();
+                        // BS Code
+                        itemParam.setTotal_serial(detl.getThreeCode())
+                                // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
+                                .setPro_type(material.getProType())
+                                // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
+                                .setPro_komcode(detl.getMatnr())
+                                // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
+                                .setPro_id(detl.getSuppCode())
+                                .setLocation_no(wrkDetl.getZpallet())
+                                .setSj_emp(wrkDetl.getModiUser$())
+                                .setLocation_type(MatLocType.getMatTag(material.getTagId() + ""))
+                                // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
+                                .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
+                                // 涓婃姤鏃讹紝榛樿涓婃姤鏁伴噺鏄鍗曟暟閲�
+                                .setPick_qty(wrkDetl.getAnfme().intValue())
+//                                .setPick_qty(detl.getQty().intValue())
+                                // 涓婃姤鏃讹紝榛樿鎹熷潖鏁伴噺鏄�0
+                                .setDamage_qty(0)
+                                // 涓婃姤鏃讹紝榛樿宸紓鏁伴噺鏄�0
+                                .setDiff_qty(0);
+                        reportOrderParams.add(itemParam);
+                    });
                 }
-                reportOrderParams.add(itemParam);
             });
-
             orderParam.setDetails(reportOrderParams);
 
             XSR response = null;
@@ -389,41 +398,48 @@
             orderDetls.forEach(detl -> {
                 Mat material = matService.selectByMatnr(detl.getMatnr());
                 if (Objects.isNull(material)) {
-                    throw new CoolException(material.getMatnr() +  "鐗╂枡涓嶅瓨鍦�");
+                    throw new CoolException(material.getMatnr() + "鐗╂枡涓嶅瓨鍦�");
                 }
-                TaskDetlLog detlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>()
+                TaskDetlLog taskDetlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>()
                         .eq("matnr", detl.getMatnr())
                         .eq("supp_code", detl.getStandby1())
                         .eq("order_no", detl.getOrderNo()));
-                if (Objects.isNull(detlLog)) {
-                    throw new CoolException("鏁版嵁閿欒 锛岃妫�鏌GV浠诲姟妗f槸鍚﹀凡瀹屾垚锛侊紒");
+                if (Objects.isNull(taskDetlLog) || Objects.isNull(taskDetlLog.getAreaType())) {
+                    orderParam.setTarget_location("2");
+//                    throw new CoolException("鏁版嵁閿欒 锛岃妫�鏌GV浠诲姟妗f槸鍚﹀凡瀹屾垚锛侊紒");
+                } else {
+                    orderParam.setTarget_location(taskDetlLog.getAreaType());
                 }
-/*                WrkDetlLog detlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>()
+                List<WrkDetlLog> detlLog = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>()
                         .eq("matnr", detl.getMatnr())
                         .eq("supp_code", detl.getStandby1())
                         .eq("order_no", detl.getOrderNo()));
-                if (Objects.isNull(detlLog)) {
-                    throw new CoolException("鐗╂枡缂栫爜锛�" + detl.getMatnr() + "鏁版嵁閿欒 锛岃妫�鏌ュ爢鍨涙満浠诲姟妗f槸鍚﹀凡瀹屾垚锛侊紒");
-                }*/
-                //鐩爣搴撳尯
-//                orderParam.setTarget_location("2");
-                orderParam.setTarget_location(detlLog.getAreaType());
-                OrderItemsParam itemParam = new OrderItemsParam();
-                // BS Code
-                itemParam
-                        // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
-                        .setPro_type(material.getProType())
-                        // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
-                        .setPro_komcode(detl.getMatnr())
-                        // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
-                        .setPro_id(detl.getSuppCode())
+                detlLog.forEach(item -> {
+                    OrderItemsParam itemParam = new OrderItemsParam();
+                    if (Objects.isNull(item)) {
+                        itemParam.setLocation_no("LX99999999");
+                    } else {
+                        itemParam.setLocation_no(item.getZpallet());
+                    }
+                    itemParam
+                            // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
+                            .setPro_type(material.getProType())
+                            // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
+                            .setPro_komcode(detl.getMatnr())
+                            // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
+                            .setPro_id(detl.getSuppCode())
 //                        // 涓婃姤鏃讹紝榛樿鏉ユ簮浣嶇疆鏄痭ull
-                        .setLocation_no(detlLog.getZpallet())
-                        // 涓婃姤鏃讹紝榛樿涓婃姤鏁伴噺鏄鍗曟暟閲�
-                        .setPick_qty(Objects.isNull(detl.getQty()) ? 0 : detl.getQty().intValue());
-                reportOrderParams.add(itemParam);
+//                              .setLocation_no(detlLog.getZpallet())
+                            // 涓婃姤鏃讹紝榛樿涓婃姤鏁伴噺鏄鍗曟暟閲�
+                            .setPick_qty(item.getAnfme().intValue());
+//                            .setPick_qty(Objects.isNull(detl.getQty()) ? 0 : detl.getQty().intValue());
+                    reportOrderParams.add(itemParam);
+                });
             });
 
+            //鐩爣搴撳尯
+//          orderParam.setTarget_location("2");
+            // BS Code
             if (orderParam.getTarget_location().equals("2")) {
                 orderParam.setType("11");
             } else if (orderParam.getTarget_location().equals("3")) {
@@ -438,26 +454,29 @@
             try {
                 List<ReportOrderParam> orderParams = new ArrayList<>();
                 orderParams.add(orderParam);
+                log.info("娲惧伐鍗曞叆鍙�---------->{}", JSONArray.toJSONString(orderParams));
                 if (order.getReportOnce() < 4) {
                     response = kopenApiService.reportOutDetailsResult(orderParams, order);
-                } else {
-                    return FAIL;
-                }
-                if (response.getSuccess()) {
-                    success = true;
-                    // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-                    if (!orderService.updateSettle(order.getId(), settle, null)) {
-                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                    if (!Objects.isNull(response)) {
+                        if (response.getSuccess()) {
+                            success = true;
+                            // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+                            if (!orderService.updateSettle(order.getId(), settle, null)) {
+                                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                            }
+                        } else {
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
+                                    MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
+                                    JSON.toJSONString(orderParams), JSON.toJSONString(response));
+                            throw new CoolException("涓婃姤KOPEN绯荤粺澶辫触");
+                        }
+                    } else {
+//                            return SUCCESS;
                     }
-                } else {
-                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
-                            MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
-                            JSON.toJSONString(orderParams), JSON.toJSONString(response));
-                    throw new CoolException("涓婃姤KOPEN绯荤粺澶辫触");
                 }
             } catch (Exception e) {
                 log.error("fail", e);
-                return FAIL.setMsg(e.getMessage());
+//                        return FAIL.setMsg(e.getMessage());
             } finally {
                 try {
                     // 淇濆瓨鎺ュ彛鏃ュ織
@@ -490,28 +509,30 @@
             orderDetls.forEach(detl -> {
                 Mat material = matService.selectByMatnr(detl.getMatnr());
                 if (Objects.isNull(material)) {
-                    throw new CoolException(material.getMatnr() +  "鐗╂枡涓嶅瓨鍦�");
+                    throw new CoolException(material.getMatnr() + "鐗╂枡涓嶅瓨鍦�");
                 }
-                TaskDetlLog detlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>()
+                List<TaskDetlLog> detlLogs = taskDetlLogService.selectList(new EntityWrapper<TaskDetlLog>()
                         .eq("matnr", detl.getMatnr())
                         .eq("supp_code", detl.getStandby1())
                         .eq("order_no", detl.getOrderNo()));
-                if (Objects.isNull(detlLog)) {
+                if (Objects.isNull(detlLogs) || detlLogs.isEmpty()) {
                     throw new CoolException("鏁版嵁閿欒 锛岃妫�鏌GV浠诲姟妗f槸鍚﹀凡瀹屾垚锛侊紒");
                 }
-                OrderItemsParam itemParam = new OrderItemsParam();
-                // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
-                itemParam.setPro_type(material.getProType());
-                // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
-                itemParam.setPro_komcode(material.getMatnr());
-                // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
-                itemParam.setPro_id(detl.getSuppCode());
-                //todo 鍙拌溅缂栫爜
-                itemParam.setTruck_no(detlLog.getZpallet());
-                // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
-                itemParam.setPick_qty(detl.getQty().intValue());
+                detlLogs.forEach(detlLog -> {
+                    OrderItemsParam itemParam = new OrderItemsParam();
+                    // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
+                    itemParam.setPro_type(material.getProType());
+                    // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
+                    itemParam.setPro_komcode(material.getMatnr());
+                    // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
+                    itemParam.setPro_id(detl.getSuppCode());
+                    //todo 鍙拌溅缂栫爜
+                    itemParam.setTruck_no(detlLog.getZpallet());
+                    // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
+                    itemParam.setPick_qty(detlLog.getAnfme().intValue());
 
-                reportOrderParams.add(itemParam);
+                    reportOrderParams.add(itemParam);
+                });
             });
             pubOrderParams.setPartList(reportOrderParams);
 
@@ -606,7 +627,7 @@
         detls.forEach(detl -> {
             Mat material = matService.selectByMatnr(detl.getMatnr());
             if (Objects.isNull(material)) {
-                throw new CoolException(material.getMatnr() +  "鐗╂枡涓嶅瓨鍦�");
+                throw new CoolException(material.getMatnr() + "鐗╂枡涓嶅瓨鍦�");
             }
             OrderItemsParam itemParam = new OrderItemsParam();
             itemParam.setLocation_no(detl.getZpallet())
@@ -633,4 +654,38 @@
 
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public ReturnT<String> startConvertOrders(OrderPakout orderPakout) {
+        if (orderPakout.getSettle() != 4) {
+            return FAIL;
+        }
+        List<OrderDetlPakout> detlPakins = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_no", orderPakout.getOrderNo()));
+        if (!Objects.isNull(detlPakins) && !detlPakins.isEmpty()) {
+            detlPakins.forEach(detl -> {
+                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>()
+                        .eq("matnr", detl.getMatnr())
+                        .eq("supp_code", detl.getSuppCode())
+                        .eq("order_no", detl.getOrderNo()));
+                if (!Objects.isNull(orderDetl)) {
+                    orderDetl.setQty(detl.getQty());
+                    orderDetl.setWorkQty(detl.getWorkQty());
+                    if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>()
+                            .eq("matnr", detl.getMatnr())
+                            .eq("supp_code", detl.getSuppCode())
+                            .eq("order_no", detl.getOrderNo()))) {
+                        throw new CoolException("璁㈠崟淇℃伅鏇存柊澶辫触锛侊紒");
+                    }
+                }
+            });
+
+            Order orderNo = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderPakout.getOrderNo()));
+            if (!Objects.isNull(orderNo)) {
+                orderNo.setSettle(4L);
+                if (!orderService.update(orderNo, new EntityWrapper<Order>().eq("order_no", orderPakout.getOrderNo()))) {
+                    throw new CoolException("鍗曟嵁鐘舵�佹洿鏂板け璐ワ紒锛�");
+                }
+            }
+        }
+        return SUCCESS;
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 9308366..1fbf211 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -5,6 +5,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.enums.TaskStatusType;
 import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.OrderPakinServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -17,6 +18,7 @@
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Created by vincent on 2020/7/6
@@ -47,6 +49,8 @@
     private TaskDetlService taskDetlService;
     @Autowired
     private TaskDetlLogService taskDetlLogService;
+    @Autowired
+    private OrderPakinService orderPakinService;
 
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> start(WrkMast wrkMast) {
@@ -59,10 +63,18 @@
                     WrkDetl wrkDetl = iterator.next();
                     if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
 //                        orderService.checkComplete(wrkDetl.getOrderNo());
-                        if (wrkMast.getIoType() ==  1 || wrkMast.getIoType() == 8 ||  wrkMast.getIoType() == 54 ||  wrkMast.getIoType() == 104){
-                            OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo());
+                        if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 8 || wrkMast.getIoType() == 54 || wrkMast.getIoType() == 104) {
+                            OrderInAndOutUtil.checkComplete(Boolean.TRUE, wrkDetl.getOrderNo());
                         } else {
-                            OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo());
+
+                            OrderInAndOutUtil.checkComplete(Boolean.FALSE, wrkDetl.getOrderNo());
+
+                            OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>()
+                                    .eq("order_no", wrkDetl.getOrderNo())
+                                    .in("doc_type", 7));
+                            if (!Objects.isNull(orderPakin)) {
+                                OrderInAndOutUtil.checkComplete(Boolean.TRUE, orderPakin.getOrderNo());
+                            }
                         }
                         iterator.remove();
                     }
@@ -90,7 +102,7 @@
 //                            exceptionHandle("鐢熸垚鎵嬪姩鍏ュ簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
 //                        }
 //                    }
-                // 鎷f枡鍐嶅叆搴�
+                    // 鎷f枡鍐嶅叆搴�
                 } else if (wrkMast.getIoType() == 53) {
 //                    //
 //                    if (!Cools.isEmpty(wrkDetls)) {
@@ -100,7 +112,7 @@
 //                    }
                 }
 
-            // 鍑哄簱 --------------------------------------------------------------------------------
+                // 鍑哄簱 --------------------------------------------------------------------------------
             } else if (wrkMast.getWrkSts() == 15) {
 //                if (!Cools.isEmpty(wrkDetls)) {
 //                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
@@ -119,10 +131,13 @@
             }
             // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
             if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+                log.error("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
 //                exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
             }
             // 鍒犻櫎宸ヤ綔鏄庣粏妗�
             if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
+                log.error("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+
 //                exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", wrkMast.getWrkNo());
             }
         } catch (Exception e) {
@@ -145,10 +160,10 @@
                     TaskDetl taskDetl = iterator.next();
                     if (!Cools.isEmpty(taskDetl.getOrderNo())) {
 //                        orderService.checkComplete(wrkDetl.getOrderNo());
-                        if (task.getIoType() ==  1 || task.getIoType() == 8 ||  task.getIoType() == 54 ||  task.getIoType() == 104){
-                            OrderInAndOutUtil.checkComplete(Boolean.TRUE,taskDetl.getOrderNo());
+                        if (task.getIoType() == 1 || task.getIoType() == 8 || task.getIoType() == 54 || task.getIoType() == 104) {
+                            OrderInAndOutUtil.checkComplete(Boolean.TRUE, taskDetl.getOrderNo());
                         } else {
-                            OrderInAndOutUtil.checkComplete(Boolean.FALSE,taskDetl.getOrderNo());
+                            OrderInAndOutUtil.checkComplete(Boolean.FALSE, taskDetl.getOrderNo());
                         }
                         iterator.remove();
                     }
@@ -205,22 +220,26 @@
             if (!taskService.deleteById(task)) {
                 exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", task.getWrkNo());
             }
+
+
             List<TaskDetl> taskDetls2 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
-            for (TaskDetl taskDetl :taskDetls2){
+            for (TaskDetl taskDetl : taskDetls2) {
                 TaskDetlLog taskDetlLog = new TaskDetlLog();
                 BeanUtils.copyProperties(taskDetl, taskDetlLog);
                 taskDetlLog.setLogId(taskLog.getId());
                 taskDetlLog.setId(null);
                 // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
                 if (!taskDetlLogService.insert(taskDetlLog)) {
-                exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", task.getWrkNo());
+                    log.error("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", task.getWrkNo());
+//                    exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", task.getWrkNo());
                 }
-                // 鍒犻櫎宸ヤ綔鏄庣粏妗�
-                if (!taskDetlService.deleteById(taskDetl)) {
-                exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", task.getWrkNo());
-                }
+                // 鍒犻櫎宸ヤ綔鏄庣粏
             }
+            if (!taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()))) {
+                log.error("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", task.getWrkNo());
 
+//                exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", task.getWrkNo());
+            }
 
         } catch (Exception e) {
             log.error("fail", e);
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 4078f98..7afbf9d 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -68,6 +68,8 @@
     private BasAreasService basAreasService;
     @Autowired
     private CommonService commonService;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -152,9 +154,13 @@
                             locDetl = new LocDetl();
                             locDetl.sync(wrkDetl);
                             locDetl.setAreaId(locMast.getAreaId());
-                            locMast.setAreaName(locMast.getAreaName());
+                            locDetl.setAreaName(locMast.getAreaName());
                             locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
                             locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                            locDetl.setBoxType1(wrkDetl.getBoxType1());
+                            locDetl.setSuppCode(wrkDetl.getSuppCode());
+                            locDetl.setThreeCode(wrkDetl.getThreeCode());
+                            locDetl.setStandby1(wrkDetl.getSuppCode());
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
@@ -244,7 +250,11 @@
                             locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
                             locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
                             locDetl.setAreaId(locMast.getAreaId());
-                            locMast.setAreaName(locMast.getAreaName());
+                            locDetl.setAreaName(locMast.getAreaName());
+                            locDetl.setBoxType1(wrkDetl.getBoxType1());
+                            locDetl.setSuppCode(wrkDetl.getSuppCode());
+                            locDetl.setThreeCode(wrkDetl.getThreeCode());
+                            locDetl.setStandby1(wrkDetl.getSuppCode());
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
@@ -350,102 +360,83 @@
                             .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                     if (wrkDetls54.isEmpty()) {
                         // exceptionHandle("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                                + wrkMast.getLocNo() + "]");
-                    }
-                    // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
-                    for (WrkDetl wrkDetl : wrkDetls54) {
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(),
-                                wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
-                                wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
-                                wrkDetl.getBoxType3());
-                        if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(),
-                                    wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
-                                    wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
-                                // exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]",
-                                // wrkMast.getWrkNo(), wrkDetl.getMatnr());
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                                        + wrkMast.getLocNo() + "]");
-                            }
-                        } else {
-                            locDetl = new LocDetl();
-                            locDetl.sync(wrkDetl);
-                            locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
-                            locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                            locDetl.setAreaId(locMast.getAreaId());
-                            locMast.setAreaName(locMast.getAreaName());
-                            locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
-                            locDetl.setModiTime(now);
-                            locDetl.setAppeTime(now);
-                            if (!locDetlService.insert(locDetl)) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                                        + wrkMast.getLocNo() + "]");
-                            }
-                        }
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                        return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+//                                + wrkMast.getLocNo() + "]");
+                    } else {
+                        // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
+                        for (WrkDetl wrkDetl : wrkDetls54) {
+                            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                                    .eq("supp_code", wrkDetl.getSuppCode())
+                                    .eq("matnr", wrkDetl.getMatnr())
+                                    .eq("loc_no", locMast.getLocNo()));
 
+                            if (null != locDetl) {
+                                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                                OrderDetlPakin detlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
+//                                                .eq("three_code", wrkDetl.getThreeCode()) //TODO 骞舵澘鏃堕渶瑕佷慨鏀笲SCODE涓鸿鍗昩scode
+                                        .eq("supp_code", wrkDetl.getSuppCode())
+                                        .eq("matnr", wrkDetl.getMatnr())
+                                        .eq("order_no", wrkDetl.getOrderNo()));
+                                try {
+                                    if (!Cools.isEmpty(detlPakin)) {
+                                        double v = Math.round((wrkDetl.getAnfme() - locDetl.getAnfme()) * 10000) / 10000.0;
+                                        double v1 = Math.round((detlPakin.getQty() + v) * 10000) / 10000.0;
+                                        detlPakin.setQty(v1);
+                                        detlPakin.setWorkQty(v1);
+                                        detlPakin.setAdjustQty(wrkDetl.getAdjustQty());
+                                        detlPakin.setSplusQty(wrkDetl.getSplusQty());
+                                        if (!orderDetlPakinService.update(detlPakin, new EntityWrapper<OrderDetlPakin>()
+                                                .eq("matnr", detlPakin.getMatnr())
+                                                .eq("supp_code", detlPakin.getSuppCode())
+                                                .eq("order_no", detlPakin.getOrderNo()))) {
+                                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                            return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
+                                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                        }
+                                    }
+                                } catch (Exception e) {
+                                    log.error(e.getMessage());
+                                }
 
-//                        OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
-//                        if (Objects.isNull(orderPakin)) {
-//                            throw new CoolException("鏁版嵁閿欒锛岃鍗曚俊鎭笉瀛樺湪锛侊紒");
-//                        }
-//
-//                        if (!orderPakin.getDocType().equals(0)) {
-//                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-//                            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
-//                                    pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
-//                                    pakin.getStandby2(), pakin.getStandby3(),
-//                                    pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
-//                            if (orderDetlPakin == null) {
-//                                orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
-//                                        pakin.getBatch(),
-//                                        pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
-//                                        pakin.getStandby3(),
-//                                        pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
-//                            }
-//                            try {
-//                                if (!Cools.isEmpty(orderDetlPakin)) {
-//                                    if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
-//                                            pakin.getMatnr(),
-//                                            orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
-//                                            pakin.getStandby2(), pakin.getStandby3(),
-//                                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
-//                                            pakin.getAnfme())) {
-//                                        throw new CoolException("AGV鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
-//                                                + "],[locNo=" + wrkMast.getLocNo() + "]");
-//                                    }
-//                                }
-//                            } catch (Exception ignore) {
-//
-//                            }
-//                        }
+                                LocDetl detl = new LocDetl();
+                                detl.setAnfme(wrkDetl.getAnfme());
+                                detl.setStandby1(wrkDetl.getSuppCode());
+                                detl.setBoxType1(locDetl.getBoxType1());
+                                detl.setOrderNo(wrkDetl.getOrderNo());
 
-                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(),
-                                wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                                wrkDetl.getStandby2(), wrkDetl.getStandby3(), "1",
-                                wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                        try {
-                            if (!Cools.isEmpty(orderDetlPakin)) {
-                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
-                                        wrkDetl.getMatnr(),
-                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                                        "1", wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
-                                        wrkDetl.getAnfme())) {
+                                if (!locDetlService.update(detl, new EntityWrapper<LocDetl>()
+                                        .eq("loc_no", locMast.getLocNo())
+                                        .eq("matnr", wrkDetl.getMatnr())
+                                        .eq("supp_code", wrkDetl.getSuppCode()))) {
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
-                                            + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                    return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                                            + wrkMast.getLocNo() + "]");
+                                }
+
+                            } else {
+                                locDetl = new LocDetl();
+                                locDetl.sync(wrkDetl);
+                                locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+                                locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                                locDetl.setAreaId(locMast.getAreaId());
+                                locDetl.setAreaName(locMast.getAreaName());
+                                locDetl.setBoxType1(wrkDetl.getBoxType1());
+                                locDetl.setSuppCode(wrkDetl.getSuppCode());
+                                locDetl.setThreeCode(wrkDetl.getThreeCode());
+                                locDetl.setStandby1(wrkDetl.getSuppCode());
+                                locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                                locDetl.setModiTime(now);
+                                locDetl.setAppeTime(now);
+                                if (!locDetlService.insert(locDetl)) {
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                    return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                                            + wrkMast.getLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore) {
-
                         }
                     }
+
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
                         locMast.setLocSts("F");
@@ -462,20 +453,24 @@
                     }
 
                     String agvSta = null;
-                    if (wrkMast.getIoType() == TaskIOType.MERGE_IN.type) {
+                    if (wrkMast.getIoType().equals(TaskIOType.MERGE_IN.type)) {
                         agvSta = wrkMast.getPauseMk();
                     }
-                    // . 鍒犻櫎缂撳瓨绔欑偣鏄庣粏
-                    if (!Objects.isNull(agvSta)) {
-                        // 淇敼鐩爣绔欑偣淇℃伅
-                        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta));
-                        if (Objects.isNull(station)) {
-                            throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
-                        }
-                        basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
-                        station.setLocSts(LocStsType.LOC_STS_TYPE_D.type);
-                        if (!basStationService.updateById(station)) {
-                            throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+                    List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", agvSta));
+                    if (Objects.isNull(basStationDetls) || basStationDetls.isEmpty()) {
+                        // . 鍒犻櫎缂撳瓨绔欑偣鏄庣粏
+                        if (!Objects.isNull(agvSta)) {
+                            // 淇敼鐩爣绔欑偣淇℃伅
+                            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta));
+                            if (Objects.isNull(station)) {
+                                throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+                            }
+                            basStationDetlService.delete(new EntityWrapper<BasStationDetl>()
+                                    .eq("dev_no", station.getDevNo()));
+                            station.setLocSts(LocStsType.LOC_STS_TYPE_D.type);
+                            if (!basStationService.updateById(station)) {
+                                throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+                            }
                         }
                     }
                     break;
@@ -484,34 +479,35 @@
                     // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
                     List<WrkDetl> wrkDetls57 = wrkDetlService
                             .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-                    if (wrkDetls57.isEmpty()) {
+                    if (!wrkDetls57.isEmpty()) {
                         // exceptionHandle("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                                + wrkMast.getLocNo() + "]");
-                    }
-                    for (WrkDetl wrkDetl : wrkDetls57) {
-                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
-                            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
-                            BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme());
-                            locDetl.setAnfme(checkOrderDetl.getDiffQty()
-                                    .compareTo(BigDecimal.ZERO) == 0
-                                    || checkOrderDetl.getDiffQty()
-                                    .compareTo(BigDecimal.ZERO) > 0
-                                    ? oriAnfme.doubleValue()
-                                    : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
-                            locDetl.setBookQty(oriAnfme);
-                            locDetl.setDiffQty(checkOrderDetl.getDiffQty());
-                            if (!locDetlService.updateById(locDetl)) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 淇敼搴撳瓨宸紓鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                                        + wrkMast.getLocNo() + "]");
+                        for (WrkDetl wrkDetl : wrkDetls57) {
+                            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+                                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                                CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
+                                if (!Objects.isNull(checkOrderDetl)) {
+                                    LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
+                                    if (!Objects.isNull(locDetl)) {
+                                        BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme());
+                                        locDetl.setAnfme(checkOrderDetl.getDiffQty()
+                                                .compareTo(BigDecimal.ZERO) == 0
+                                                || checkOrderDetl.getDiffQty()
+                                                .compareTo(BigDecimal.ZERO) > 0
+                                                ? oriAnfme.doubleValue()
+                                                : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
+                                        locDetl.setBookQty(oriAnfme);
+                                        locDetl.setDiffQty(checkOrderDetl.getDiffQty());
+                                        if (!locDetlService.updateById(locDetl)) {
+                                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                            return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 淇敼搴撳瓨宸紓鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                                                    + wrkMast.getLocNo() + "]");
+                                        }
+                                    }
+                                }
                             }
-
                         }
                     }
+
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
                         locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D");
@@ -620,6 +616,7 @@
                         return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                 + wrkMast.getSourceLocNo() + "]");
                     }
+
                     for (WrkDetl wrkDetl : wrkDetls101) {
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
                         OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
@@ -668,6 +665,10 @@
                         }
                     }
                     break;
+
+                case 104:
+
+                    break;
                 case 103:
 //                    List<WrkDetl> wrkDetls103 = wrkDetlService
 //                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
@@ -677,7 +678,7 @@
 //                        return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
 //                                + wrkMast.getSourceLocNo() + "]");
 //                    }
-
+//
 //                    for (WrkDetl wrkDetl : wrkDetls103) {
 //                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
 //                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
@@ -819,14 +820,13 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> agvDoOut(Task task) {
+        Date now = new Date();
         LocCache locMast = locCacheService
                 .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
-        Date now = new Date();
-
+        if (Objects.isNull(locMast)) {
+            throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
+        }
         if (task.getIoType().equals(101)) {
-            if (Objects.isNull(locMast)) {
-                throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
-            }
             List<TaskDetl> wrkDetls101 = taskDetlService
                     .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
             if (wrkDetls101.isEmpty()) {
@@ -834,6 +834,7 @@
                 return FAIL.setMsg(
                         "鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
             }
+
             BasStation devNo = basStationService
                     .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
             if (Objects.isNull(devNo)) {
@@ -847,31 +848,24 @@
             }
 
             for (TaskDetl wrkDetl : wrkDetls101) {
-                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
-                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                if (orderDetlPakout == null) {
-                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
-                            wrkDetl.getStandby3(),
-                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                }
-                try {
-                    if (!Cools.isEmpty(orderDetlPakout)) {
-                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
-                                wrkDetl.getAnfme())) {
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo() + "],[locNo="
-                                    + task.getSourceLocNo() + "]");
+                // 鏇存柊澶囪揣鍑哄簱鍗曞畬鎴愭暟閲�
+                OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>().eq("order_no", wrkDetl.getOrderNo()));
+                if (!Objects.isNull(orderPakout) && orderPakout.getDocType() == 5) {
+                    try {
+                        if (!Cools.isEmpty(orderPakout)) {
+                            if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                    "1", wrkDetl.getBrand(), wrkDetl.getStandby1(),
+                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+                                    wrkDetl.getAnfme())) {
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("澶囪揣鍑哄簱鍗� ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo() + "],[locNo="
+                                        + task.getSourceLocNo() + "]");
+                            }
                         }
+                    } catch (Exception ignore) {
+                        log.error(ignore.getMessage(), ignore);
                     }
-                } catch (Exception ignore) {
-
                 }
 
                 BasStationDetl stationDetl = new BasStationDetl();
@@ -882,6 +876,42 @@
                     throw new CoolException("绔欑偣鏄庣粏淇濆瓨澶辫触锛侊紒");
                 }
             }
+//            for (TaskDetl wrkDetl : wrkDetls101) {
+//                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+//                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+//                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+//                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+//                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+//                if (orderDetlPakout == null) {
+//                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+//                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
+//                            wrkDetl.getStandby3(),
+//                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+//                }
+//                try {
+//                    if (!Cools.isEmpty(orderDetlPakout)) {
+//                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+//                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+//                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+//                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+//                                wrkDetl.getAnfme())) {
+//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                            return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo() + "],[locNo="
+//                                    + task.getSourceLocNo() + "]");
+//                        }
+//                    }
+//                } catch (Exception ignore) {
+//
+//                }
+//
+//                BasStationDetl stationDetl = new BasStationDetl();
+//                BeanUtils.copyProperties(wrkDetl, stationDetl);
+//                stationDetl.setDevNo(devNo.getDevNo())
+//                        .setOrderNo(wrkDetl.getOrderNo());
+//                if (!basStationDetlService.insert(stationDetl)) {
+//                    throw new CoolException("绔欑偣鏄庣粏淇濆瓨澶辫触锛侊紒");
+//                }
+//            }
             // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
             if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", task.getSourceLocNo()))) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -889,12 +919,12 @@
                         "鍏ㄦ澘鍑哄簱 ===>> 鍒犻櫎搴撳瓨鏄庣粏澶辫触; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
             }
             // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
-            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type) || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type)) {
                 locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                 locMast.setBarcode("");
                 locMast.setModiTime(now);
                 locMast.setIoTime(now);
-                if (!locCacheService.updateById(locMast)) {
+                if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
                             + task.getSourceLocNo() + "]");
@@ -908,24 +938,19 @@
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
         } else if (task.getIoType().equals(110)) {
-            if (Objects.isNull(locMast)) {
-                throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
-            }
             // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
             if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
                 locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                 locMast.setBarcode("");
                 locMast.setModiTime(now);
                 locMast.setIoTime(now);
-                if (!locCacheService.updateById(locMast)) {
+
+                if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
                             + task.getSourceLocNo() + "]");
                 }
-            } else {
-                throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
             }
-
             BasStation devNo = basStationService
                     .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
             if (Objects.isNull(devNo)) {
@@ -948,75 +973,122 @@
                 return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + task.getWrkNo() + "],[locNo="
                         + task.getSourceLocNo() + "]");
             }
-            for (TaskDetl wrkDetl : wrkDetls103) {
-                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.
-                        selectOne(new EntityWrapper<OrderDetlPakout>()
-                                .eq("matnr", wrkDetl.getMatnr())
-                                .eq("supp_code", wrkDetl.getSuppCode())
-                                .eq("order_no", wrkDetl.getOrderNo()));
-                try {
-                    if (!Cools.isEmpty(orderDetlPakout)) {
-                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
-                                wrkDetl.getMatnr(),
-                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
-                                wrkDetl.getAnfme())) {
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo()
-                                    + "],[locNo=" + task.getSourceLocNo() + "]");
-                        }
-                    }
-                    //TODO 淇敼绔欑偣鐘舵�侀绾︾洰鏍囧簱浣�,浠ュ強绔欑偣搴撲綅淇℃伅
-                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
-                            .eq("matnr", wrkDetl.getMatnr())
-                            .eq("supp_code", wrkDetl.getSuppCode())
-                            .eq("loc_no", task.getSourceLocNo()));
-                    if (Objects.isNull(locDetl) ) {
-                        throw new CoolException("搴撳瓨鏁版嵁閿欒锛岃鑱旂郴绠$悊鍛橈紒锛�");
-                    }
-                    Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
-                    locDetl.setAnfme(sulp);
-                    if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo())
-                            .eq("matnr", locDetl.getMatnr())
-                            .eq("supp_code", locDetl.getSuppCode()))) {
-                        return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo()
-                                + "],[locNo=" + task.getSourceLocNo() + "]");
-                    }
-                } catch (Exception ignore) {
-                    log.error(ignore.getMessage());
-                }
-            }
+//            for (TaskDetl wrkDetl : wrkDetls103) {
+//                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+//                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.
+//                        selectOne(new EntityWrapper<OrderDetlPakout>()
+//                                .eq("matnr", wrkDetl.getMatnr())
+//                                .eq("supp_code", wrkDetl.getSuppCode())
+//                                .eq("order_no", wrkDetl.getOrderNo()));
+//                try {
+//                    if (!Cools.isEmpty(orderDetlPakout)) {
+//                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+//                                wrkDetl.getMatnr(),
+//                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+//                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+//                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+//                                wrkDetl.getAnfme())) {
+//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                            return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo()
+//                                    + "],[locNo=" + task.getSourceLocNo() + "]");
+//                        }
+//                    }
+//                    //TODO 淇敼绔欑偣鐘舵�侀绾︾洰鏍囧簱浣�,浠ュ強绔欑偣搴撲綅淇℃伅
+//                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+//                            .eq("matnr", wrkDetl.getMatnr())
+//                            .eq("supp_code", wrkDetl.getSuppCode())
+//                            .eq("loc_no", task.getSourceLocNo()));
+//                    if (Objects.isNull(locDetl) ) {
+//                        throw new CoolException("搴撳瓨鏁版嵁閿欒锛岃鑱旂郴绠$悊鍛橈紒锛�");
+//                    }
+//                    Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
+//                    locDetl.setAnfme(sulp);
+//                    if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo())
+//                            .eq("matnr", locDetl.getMatnr())
+//                            .eq("supp_code", locDetl.getSuppCode()))) {
+//                        return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo()
+//                                + "],[locNo=" + task.getSourceLocNo() + "]");
+//                    }
+//                } catch (Exception ignore) {
+//                    log.error(ignore.getMessage());
+//                }
+//            }
+
+//            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type) || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+//                locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
+//                locMast.setBarcode("");
+//                locMast.setModiTime(now);
+//                locMast.setIoTime(now);
+//                if (!locCacheService.updateById(locMast)) {
+//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                    return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
+//                            + task.getSourceLocNo() + "]");
+//                }
+//            } else {
+//                throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
+//            }
+//
+//            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
+//            // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+//            if (basStation.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type) || basStation.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type)) {
+//                basStation.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
+//                basStation.setBarcode("");
+//                basStation.setModiTime(now);
+//                basStation.setIoTime(now);
+//                if (!basStationService.updateById(basStation)) {
+//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                    return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
+//                            + task.getSourceLocNo() + "]");
+//                }
+//            } else {
+//                throw new CoolException("褰撳墠搴撲綅鐘舵��" + basStation.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
+//            }
+//            Task task1 = new Task();
 //            int workNo = commonService.getWorkNo(0);
-            task.setIoType(task.getIoType() - 50);
-            task.setLocNo(task.getSourceLocNo());
-            task.setWrkSts(TaskStatusType.AGV_IN_START.type);
-
-            if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", task.getWrkNo()))) {
-                throw new CoolException("浠诲姟鎷h揣瀹屾垚鐘舵�佹洿鏂板け璐ワ紒锛�");
-            }
-
-            // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
-            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
-                locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
-                locMast.setBarcode("");
-                locMast.setModiTime(now);
-                locMast.setIoTime(now);
-                if (!locCacheService.updateById(locMast)) {
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
-                            + task.getSourceLocNo() + "]");
-                }
-            } else {
-                throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
-            }
+//            task1.setWrkNo(workNo);
+//            task1.setIoType(task.getIoType() - 50);
+//            task1.setLocNo(task.getSourceLocNo());
+//            task1.setIsNewIn("M1");
+//            task1.setSourceStaNo(task.getStaNo());
+//            task1.setWrkSts(TaskStatusType.AGV_IN_START.type);
+//
+//            if (!taskService.insert(task1)) {
+//                throw new CoolException("鎷h揣鍏ュ簱浠诲姟鐢熸垚澶辫触锛侊紒");
+//            }
+//
+//            List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+//            taskDetls.forEach(detl -> {
+//                detl.setWrkNo(task1.getWrkNo());
+//                if (!taskDetlService.update(detl, new EntityWrapper<TaskDetl>().eq("wrk_no", detl.getWrkNo()))) {
+//                    throw new CoolException("浠诲姟鏄庣粏淇敼澶辫触锛侊紒");
+//                }
+//            });
+//            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
+//            if (!taskService.updateById(task)) {
+//                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+//            }
         }
         return SUCCESS;
     }
 
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> agvDoIn(Task wrkMast) {
+        if (wrkMast.getIsNewIn().equals("XM1")) {
+            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
+            wrkMast.setModiTime(new Date());
+            if (!taskService.updateById(wrkMast)) {
+                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+            return SUCCESS;
+        }
+        if (wrkMast.getTaskType().equals("agv_back")) {
+            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
+            wrkMast.setModiTime(new Date());
+            if (!taskService.updateById(wrkMast)) {
+                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+            return SUCCESS;
+        }
         LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
         if (!Objects.isNull(wrkMast.getSourceStaNo())) {
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
@@ -1028,8 +1100,10 @@
                 }
                 station.setBarcode("");
                 if (!basStationService.updateById(station)) {
-                    basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
+                    throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
                 }
+
+                basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
             }
         }
 
@@ -1110,7 +1184,8 @@
             locCache.setBarcode(wrkMast.getBarcode());
             locCache.setModiTime(new Date());
             locCache.setIoTime(new Date());
-            if (!locCacheService.updateById(locCache)) {
+
+            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
                 throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
             }
             wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
@@ -1137,81 +1212,89 @@
             // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
             List<TaskDetl> wrkDetls53 = taskDetlService
                     .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-            if (wrkDetls53.isEmpty()) {
-                // exceptionHandle("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                        + wrkMast.getLocNo() + "]");
-            }
+
             for (TaskDetl wrkDetl : wrkDetls53) {
-                LocDetl locDetl = locDetlService.selectItem(locCache.getLocNo(), wrkDetl.getMatnr(),
-                        wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
-                        wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
-                        wrkDetl.getBoxType3());
+                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                        .eq("supp_code", wrkDetl.getSuppCode())
+                        .eq("matnr", wrkDetl.getMatnr())
+                        .eq("loc_no", wrkMast.getLocNo()));
+
                 if (null != locDetl) {
-                    if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locCache.getLocNo(),
-                            wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                            wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
-                            wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
-                        // exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
-                        // wrkMast.getWrkNo(), wrkMast.getLocNo());
+                    Double v = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
+                    locDetl.setBoxType1(wrkDetl.getBoxType1());
+                    locDetl.setOrderNo(wrkDetl.getOrderNo());
+                    locDetl.setStandby1(wrkDetl.getSuppCode());
+                    locDetl.setAnfme(v);
+
+                    if (v.compareTo(0.0) == 0) {
+                        if (!locDetlService.delete(new EntityWrapper<LocDetl>()
+                                .eq("supp_code", wrkDetl.getSuppCode())
+                                .eq("matnr", wrkDetl.getMatnr())
+                                .eq("loc_no", wrkMast.getLocNo()))) {
+                            return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                                    + wrkMast.getLocNo() + "]");
+                        }
+                    } else {
+                        if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+                                .eq("supp_code", wrkDetl.getSuppCode())
+                                .eq("matnr", wrkDetl.getMatnr())
+                                .eq("loc_no", wrkMast.getLocNo()))) {
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                                    + wrkMast.getLocNo() + "]");
+                        }
+                    }
+                }
+
+                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                OrderDetlPakout orderDetlPakout = orderDetlPakoutService
+                        .selectOne(new EntityWrapper<OrderDetlPakout>()
+                                .eq("order_no", wrkDetl.getOrderNo())
+                                .eq("supp_code", wrkDetl.getSuppCode())
+                                .eq("matnr", wrkDetl.getMatnr()));
+
+                if (!Cools.isEmpty(orderDetlPakout)) {
+                    double v = Math.round((orderDetlPakout.getQty() + wrkDetl.getAnfme()) * 10000) / 10000.0;
+                    orderDetlPakout.setQty(v);
+
+                    if (!orderDetlPakoutService.update(orderDetlPakout, new EntityWrapper<OrderDetlPakout>()
+                            .eq("order_no", wrkDetl.getOrderNo())
+                            .eq("supp_code", wrkDetl.getSuppCode())
+                            .eq("matnr", wrkDetl.getMatnr()))) {
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                 + wrkMast.getLocNo() + "]");
                     }
                 }
-
-                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
-                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
-                        wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                if (orderDetlPakout == null) {
-                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                            wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
-                }
-                try {
-                    if (!Cools.isEmpty(orderDetlPakout)) {
-                        if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
-                                wrkDetl.getMatnr(),
-                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
-                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
-                                wrkDetl.getAnfme())) {
-                            // exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
-                            // wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
-                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                } catch (Exception ignore) {
-                }
-
             }
             Date now = new Date();
-            // 淇敼搴撲綅鐘舵�� Q ====>> F
-            if (locCache.getLocSts().equals("Q")) {
-                locCache.setLocSts("F");
-                locCache.setBarcode(wrkMast.getBarcode());
-                locCache.setIoTime(now);
-                locCache.setModiTime(now);
-                if (!locCacheService.updateById(locCache)) {
-                    // exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]",
-                    // wrkMast.getWrkNo(), wrkMast.getLocNo());
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
-                            + wrkMast.getLocNo() + "]");
+            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                    .eq("loc_no", locCache.getLocNo()));
+            if (Objects.isNull(locDetls) || locDetls.isEmpty()) {
+                locCache.setLocSts("D");
+            } else {
+                Double sum = locDetls.stream().mapToDouble(LocDetl::getAnfme).sum();
+                if (sum.compareTo(0.0) == 0) {
+                    locCache.setLocSts("D");
+                } else {
+                    // 淇敼搴撲綅鐘舵�� Q ====>> F
+                    locCache.setLocSts("F");
                 }
             }
-
+            locCache.setBarcode(wrkMast.getBarcode());
+            locCache.setIoTime(now);
+            locCache.setModiTime(now);
+            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
+                // exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]",
+                // wrkMast.getWrkNo(), wrkMast.getLocNo());
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+                        + wrkMast.getLocNo() + "]");
+            }
             // 淇敼宸ヤ綔涓绘。鐘舵��
             wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
             wrkMast.setModiTime(now);
             if (!taskService.updateById(wrkMast)) {
-                // exceptionHandle("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL
                         .setMsg("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
diff --git a/src/main/java/com/zy/common/constant/MesConstant.java b/src/main/java/com/zy/common/constant/MesConstant.java
index bbc7967..bb44ee5 100644
--- a/src/main/java/com/zy/common/constant/MesConstant.java
+++ b/src/main/java/com/zy/common/constant/MesConstant.java
@@ -7,16 +7,16 @@
 
     //灏忕郴缁熸帴鍙e湴鍧�
 //    public static final String URL = "http://webservice.kopen.com.cn:1482/kc-api/api/wms/ ";
-    public static final String URL = "http://10.143.23.26:1482/kc-api/api/wms/ ";
+    public static final String URL = "http://10.143.23.25:1483/kc-api/api/wms/ ";
 
     //AGV鎷夊彛鍦板潃
     public static final String AGV_URL = "http://192.168.238.202/rcs/rtas/api/robot/controller";
 
     //WCS绯荤粺鎺ュ彛鍦板潃
-    public static final String WCS_URL = "http://192.168.238.32:9090/wcs";
-
 //    public static final String WCS_URL = "http://192.168.238.31:9090/wcs";
 
+    public static final String WCS_URL = "http://192.168.238.31:9090/wcs";
+
     //涓婃灦娲惧伐鍗曞弽棣�
     public static final String IN_DISPATCH_RESULT = "getInDispatchResult";
     //澶囪揣鎸囩ず娲惧伐鍗曞弽棣�
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index 244b9a1..a70fa6c 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -28,6 +28,8 @@
     private String boxType2 = "1";
     private String boxType3 = "1";
 
+    private String suppCode;
+
     private String orderNo;
 
     private Double anfme;
diff --git a/src/main/java/com/zy/common/model/TaskDto.java b/src/main/java/com/zy/common/model/TaskDto.java
index b85c000..f8dc606 100644
--- a/src/main/java/com/zy/common/model/TaskDto.java
+++ b/src/main/java/com/zy/common/model/TaskDto.java
@@ -65,6 +65,31 @@
         return false;
     }
 
+    public static boolean hasAgv(List<TaskDto> list, TaskDto dto) {
+        if (Cools.isEmpty(list)) {
+            return false;
+        }
+        for (TaskDto taskDto : list) {
+            if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    public static TaskDto findAgv(List<TaskDto> list, TaskDto dto) {
+        if (Cools.isEmpty(list)) {
+            return null;
+        }
+        for (TaskDto taskDto : list) {
+            if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) {
+                return taskDto;
+            }
+        }
+        return null;
+    }
+
     public static TaskDto find(List<TaskDto> list, TaskDto dto) {
         if (Cools.isEmpty(list)) {
             return null;
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 55cf2e3..0810c88 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -202,13 +202,27 @@
         }
 
         StartupDto startupDto = new StartupDto();
-        locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+
+//        new EntityWrapper<LocMast>(new EntityWrapper<LocMast>()
+//                .ge("row1", rowLastno.getsRow())
+//                .le("row1", rowLastno.geteRow())
+//                .eq("crn_no", crnNo)
+//                .eq("loc_type1", locTypeDto.getLocType1())
+//                .eq("loc_sts", "O")
+//                .orderAsc(Arrays.asList("lev1", "row1", "bay1")))
+
+        Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>()
                 .ge("row1", rowLastno.getsRow())
                 .le("row1", rowLastno.geteRow())
-                .eq("crn_no", crnNo)
                 .eq("loc_type1", locTypeDto.getLocType1())
                 .eq("loc_sts", "O")
-                .orderAsc(Arrays.asList("lev1", "row1", "bay1")));
+                .orderAsc(Arrays.asList( "row1", "lev1", "bay1"));
+
+        if (locTypeDto.getLocType1() != 2) {
+            wrapper.eq("crn_no", crnNo);
+        }
+
+        locMast = locMastService.selectOne(wrapper);
         // int crnCountO = wrkMastService.selectCount(new
         // EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100));
         // 鐢熸垚宸ヤ綔鍙�
diff --git a/src/main/resources/mapper/OrderDetlPakoutMapper.xml b/src/main/resources/mapper/OrderDetlPakoutMapper.xml
index bcbd878..06de570 100644
--- a/src/main/resources/mapper/OrderDetlPakoutMapper.xml
+++ b/src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -56,13 +56,7 @@
     </resultMap>
 
     <sql id="standbyAll">
-        and batch = #{batch}
-        and brand = #{brand}
         and standby1 = #{standby1}
-        and standby2 = #{standby2}
-        and standby3 = #{standby3}
-        and box_type2 = #{boxType2}
-        and box_type3 = #{boxType3}
     </sql>
     <sql id="standbyAllMemo">
         --         and line_number = #{lineNumber}
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
index 0006c2d..350da64 100644
--- a/src/main/resources/mapper/TaskMapper.xml
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -9,7 +9,7 @@
 
     </resultMap>
     <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task">
-        select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
+        select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 )  and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
     </select>
 
 

--
Gitblit v1.9.1