From dcaa739b0c28e0ea4628a4d08e0683001ced273a Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 10 十一月 2023 18:16:05 +0800
Subject: [PATCH] agv物料混载更改 新增根据物料频率查找库位

---
 src/main/java/com/zy/asrs/controller/OrderController.java         |   12 +
 src/main/java/com/zy/asrs/utils/MatExcelListener.java             |    6 
 src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java |   38 ++++
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java             |   16 +
 src/main/webapp/views/mat/mat.html                                |    7 
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java  |    4 
 src/main/java/com/zy/common/model/TaskDto.java                    |    6 
 src/main/resources/mapper/OrderDetlMapper.xml                     |   70 ++++++++
 src/main/java/com/zy/asrs/service/AgvLocDetlService.java          |    9 +
 src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java            |    3 
 src/main/java/com/zy/common/service/AgvCommonService.java         |   44 ++---
 src/main/java/com/zy/asrs/service/OrderDetlService.java           |   10 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java      |    2 
 src/main/java/com/zy/asrs/controller/AgvMobileController.java     |    2 
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java  |   26 +-
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java       |   16 +-
 src/main/java/com/zy/asrs/entity/Mat.java                         |   53 +++---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java    |   97 +++++++----
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java     |    8 
 src/main/webapp/static/js/common.js                               |    3 
 src/main/java/com/zy/asrs/controller/OutController.java           |   22 ++
 src/main/resources/application.yml                                |    6 
 22 files changed, 319 insertions(+), 141 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
index d1bd0b8..dd32cc8 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -8,6 +8,7 @@
 import com.zy.asrs.service.AgvWorkService;
 import com.zy.asrs.service.OrderDetlService;
 import com.zy.common.web.BaseController;
+import lombok.Synchronized;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -72,6 +73,7 @@
     鍚姩鍏ュ簱锛岀敓鎴愬伐浣滄。
      */
     @PostMapping("/pakin/auth")
+    @Synchronized
     public R pakin(@RequestBody Map<String,Object> map){
         List<String> devNos = (List<String>) map.get("devNo");
 
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index bccf4af..7db8719 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -156,7 +156,7 @@
         for (OrderDetl orderDetl : param.getOrderDetlList()) {
             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
             if (DetlDto.has(list, dto)) {
-                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
+                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                 if (!orderDetlService.updateById(item)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
@@ -209,7 +209,7 @@
         for (OrderDetl orderDetl : param.getOrderDetlList()) {
             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
             if (DetlDto.has(list, dto)) {
-                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
+                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                 if (!orderDetlService.updateById(item)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
@@ -449,6 +449,10 @@
             Double anfme = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(3)));
             // 涓嬪崟鏃堕棿
             String timeStr = dataFormatter.formatCellValue(row.getCell(4));
+            // 閿�鍞鍗曞彿
+            String csocode = dataFormatter.formatCellValue(row.getCell(5));
+            // 閿�鍞鍗曡鍙�
+            String isocode = dataFormatter.formatCellValue(row.getCell(6));
             Date time = null;
             try {
                 time = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss_F);
@@ -508,7 +512,7 @@
                 }
             }
 
-            OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), matnr, null);
+            OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), matnr, null,csocode,isocode);
             if (orderDetl == null) {
                 orderDetl = new OrderDetl();
                 orderDetl.sync(mat);
@@ -526,7 +530,7 @@
                     throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
                 }
             } else {
-                if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme)) {
+                if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme,csocode,isocode)) {
                     throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
                 }
             }
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 67c8fe2..9fc1c53 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -266,19 +266,33 @@
         if(!Cools.isEmpty(agvLocMast) && !agvLocMast.getLocSts().equals("F")){
             throw new CoolException("搴撲綅鍙烽潪鍦ㄥ簱鐘舵�侊紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅===>>" + locDto.getLocNo());
         }
+        TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+        if (TaskDto.has(agvTaskDtos, taskDto)) {
+            TaskDto dto = TaskDto.find(agvTaskDtos, taskDto);
+            assert dto != null;
+            dto.getLocDtos().addAll(taskDto.getLocDtos());
+            return;
+        } else {
+            agvTaskDtos.add(taskDto);
+        }
+
         //瀵绘壘绌虹珯鐐逛綅缃�
         AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(locDto.getAgvStaNo());
         if(Cools.isEmpty(agvBasDevp)){
             //濡傛灉娌℃湁鎵惧埌绌虹珯鐐癸紝鍒欑敓鎴愬噯澶囦换鍔�
-            TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
-            agvTaskDtos.add(taskDto);
+            //TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+            //agvTaskDtos.add(taskDto);
+            //濡傛灉搴撲綅瀛樺湪娣疯浇
+
             return;
         }
 //        agvBasDevp.setLocSts("S");
 //        agvBasDevpService.updateById(agvBasDevp);
         agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
-        TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
-        agvTaskDtos.add(taskDto);
+        //TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
+        taskDto.setAgvStaNo(agvBasDevp.getDevNo());
+
+        //agvTaskDtos.add(taskDto);
 
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java
index 9bd9f90..84cf369 100644
--- a/src/main/java/com/zy/asrs/entity/Mat.java
+++ b/src/main/java/com/zy/asrs/entity/Mat.java
@@ -74,91 +74,91 @@
      * 绉诲姩绫诲瀷
      */
     @ApiModelProperty(value= "绉诲姩绫诲瀷")
-    @ExcelProperty(value = "绉诲姩绫诲瀷")
+    //@ExcelProperty(value = "绉诲姩绫诲瀷")
     private String name;
 
     /**
      * 瑙勬牸
      */
     @ApiModelProperty(value= "瑙勬牸")
-    @ExcelProperty(value = "瑙勬牸")
+    @ExcelProperty(value = "瑙勬牸鍨嬪彿")
     private String specs;
 
     /**
      * 鎵规
      */
     @ApiModelProperty(value= "鎵规")
-    @ExcelProperty(value = "鎵规")
+    @ExcelProperty(value = "閫氱敤鍨嬪彿")
     private String model;
 
     /**
      * 棰滆壊
      */
     @ApiModelProperty(value= "棰滆壊")
-    @ExcelProperty(value = "棰滆壊")
+    @ExcelProperty(value = "瀛樿揣鍒嗙被鍚嶇О")
     private String color;
 
     /**
      * 鍝佺墝
      */
     @ApiModelProperty(value= "鍝佺墝")
-    @ExcelProperty(value = "鍝佺墝")
+    @ExcelProperty(value = "瀛樿揣鍒嗙被缂栫爜")
     private String brand;
 
     /**
      * 鍗曚綅
      */
     @ApiModelProperty(value= "鍗曚綅")
-    @ExcelProperty(value = "鍗曚綅")
+    @ExcelProperty(value = "璁¢噺鍗曚綅")
     private String unit;
 
     /**
      * 鍗曚环
      */
     @ApiModelProperty(value= "鍗曚环")
-    @ExcelProperty(value = "鍗曚环")
+    @ExcelProperty(value = "杩涢」绋�")
     private Double price;
 
     /**
      * sku
      */
     @ApiModelProperty(value= "sku")
-    @ExcelProperty(value = "sku")
+    //@ExcelProperty(value = "sku")
     private String sku;
 
     /**
      * 鍖呮暟
      */
     @ApiModelProperty(value= "鍖呮暟")
-    @ExcelProperty(value = "鍖呮暟")
+    @ExcelProperty(value = "閿�椤圭◣")
     private Double units;
 
     /**
      * 鏉$爜
      */
     @ApiModelProperty(value= "鏉$爜")
-    @ExcelProperty(value = "鏉$爜")
+    //@ExcelProperty(value = "鏉$爜")
     private String barcode;
 
     /**
      * 鐗╂枡鐘舵��
      */
     @ApiModelProperty(value= "鐗╂枡鐘舵��")
-    @ExcelProperty(value = "鐗╂枡鐘舵��")
+    //@ExcelProperty(value = "鐗╂枡鐘舵��")
     private String origin;
 
     /**
      * 鍘傚
      */
     @ApiModelProperty(value= "鍘傚")
-    @ExcelProperty(value = "鍘傚")
+    //@ExcelProperty(value = "鍘傚")
     private String manu;
 
     /**
      * 鍗曟嵁鏃堕棿
      */
     @ApiModelProperty(value= "鍗曟嵁鏃堕棿")
-    @ExcelProperty(value = "鍗曟嵁鏃堕棿")
+    //@ExcelProperty(value = "鍗曟嵁鏃堕棿")
     @TableField("manu_date")
     private String manuDate;
 
@@ -166,7 +166,7 @@
      * 鍝侀」鏁�
      */
     @ApiModelProperty(value= "鍝侀」鏁�")
-    @ExcelProperty(value = "鍝侀」鏁�")
+    //@ExcelProperty(value = "鍝侀」鏁�")
     @TableField("item_num")
     private String itemNum;
 
@@ -182,28 +182,28 @@
      * 閲嶉噺
      */
     @ApiModelProperty(value= "閲嶉噺")
-    @ExcelProperty(value = "閲嶉噺")
+    //@ExcelProperty(value = "閲嶉噺")
     private Double weight;
 
     /**
      * 闀垮害
      */
     @ApiModelProperty(value= "闀垮害")
-    @ExcelProperty(value = "闀垮害")
+    //@ExcelProperty(value = "闀垮害")
     private Double length;
 
     /**
      * 浣撶Н
      */
     @ApiModelProperty(value= "浣撶Н")
-    @ExcelProperty(value = "浣撶Н")
+    //@ExcelProperty(value = "浣撶Н")
     private Double volume;
 
     /**
      * 涓夋柟缂栫爜
      */
     @ApiModelProperty(value= "涓夋柟缂栫爜")
-    @ExcelProperty(value = "涓夋柟缂栫爜")
+    //@ExcelProperty(value = "涓夋柟缂栫爜")
     @TableField("three_code")
     private String threeCode;
 
@@ -211,14 +211,14 @@
      * 渚涘簲鍟�
      */
     @ApiModelProperty(value= "渚涘簲鍟�")
-    @ExcelProperty(value = "渚涘簲鍟�")
+    @ExcelProperty(value = "寤烘。浜�")
     private String supp;
 
     /**
      * 渚涘簲鍟嗙紪鐮�
      */
     @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
-    @ExcelProperty(value = "渚涘簲鍟嗙紪鐮�")
+    //@ExcelProperty(value = "渚涘簲鍟嗙紪鐮�")
     @TableField("supp_code")
     private String suppCode;
 
@@ -227,6 +227,7 @@
      */
     @ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
     @TableField("be_batch")
+    @ExcelProperty(value = "鐗╂枡棰戠巼")
     private Integer beBatch;
 
     /**
@@ -234,7 +235,7 @@
      */
     @ApiModelProperty(value= "淇濊川鏈�")
     @TableField("dead_time")
-    @ExcelProperty(value = "淇濊川鏈�")
+    //@ExcelProperty(value = "淇濊川鏈�")
     private String deadTime;
 
     /**
@@ -242,7 +243,7 @@
      */
     @ApiModelProperty(value= "棰勮澶╂暟")
     @TableField("dead_warn")
-    @ExcelProperty(value = "棰勮澶╂暟")
+    //@ExcelProperty(value = "棰勮澶╂暟")
     private Integer deadWarn;
 
     /**
@@ -326,10 +327,12 @@
 
     //鍚姩鏃ユ湡
     @TableField("ds_date")
+    @ExcelProperty(value = "鍚敤鏃ユ湡")
     private Date dsDate;
 
     //寤烘。鏃ユ湡
     @TableField("d_inv_create_datetime")
+    @ExcelProperty(value = "寤烘。鏃ユ湡")
     private Date dInvCreateDatetime;
 
     public Mat() {}
@@ -430,11 +433,11 @@
         if (null == this.beBatch){ return null; }
         switch (this.beBatch){
             case 1:
-                return "鏄�";
+                return "楂�";
             case 0:
-                return "鍚�";
+                return "浣�";
             default:
-                return String.valueOf(this.beBatch);
+                return "浣�";
         }
     }
 
diff --git a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
index 21a8dbc..fdeb592 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
@@ -34,4 +34,7 @@
             "        group by a.matnr")
     List<AgvLocDetl> getStockStatisExcel();
 
+    @Select("SELECT SUM(anfme) FROM agv_loc_detl WHERE loc_no = #{locNo}")
+    Double sumByLocNo(@Param("locNo")String locNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 3e7d1ba..4aa30a4 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -13,9 +13,15 @@
 @Repository
 public interface OrderDetlMapper extends BaseMapper<OrderDetl> {
 
-    OrderDetl selectItem(@Param("orderId") Long orderId, @Param("matnr") String matnr, @Param("batch") String batch);
+    /*
+    濡傛灉batch銆乧socode銆乮socode涓虹┖锛屽垯鏌ヨ缁撴灉涓璪atch銆乧socode銆乮socode鐨勫�间负绌�
+     */
+    OrderDetl selectItem(@Param("orderId") Long orderId, @Param("matnr") String matnr, @Param("batch") String batch, @Param("csocode")String csocode, @Param("isocode")String isocode);
 
-    OrderDetl selectItemByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch);
+    /*
+    濡傛灉batch銆乧socode銆乮socode涓虹┖锛屽垯鏌ヨ缁撴灉涓笉鑰冭檻batch銆乧socode銆乮socode鐨勫��
+     */
+    OrderDetl selectItemByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("csocode")String csocode, @Param("isocode")String isocode);
 
     OrderDetl selectItemNoneOfBatch(@Param("orderNo")String orderNo, @Param("matnr")String matnr);
 
@@ -27,11 +33,11 @@
 
     Integer getPakoutPageCount(Map<String, Object> map);
 
-    int increaseAnfme(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
+    int increaseAnfme(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty, @Param("csocode")String csocode, @Param("isocode")String isocode);
 
-    int increase(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
+    int increase(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty, @Param("csocode")String csocode, @Param("isocode")String isocode);
 
-    int decrease(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
+    int decrease(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty, @Param("csocode")String csocode, @Param("isocode")String isocode);
 
     int modifyStatus(@Param("orderId") Long orderId, @Param("status")Integer status);
 
diff --git a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
index d0b67a4..dc3a97a 100644
--- a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.service.IService;
 import com.zy.asrs.entity.AgvLocDetl;
 import com.zy.common.model.LocDto;
+import com.zy.common.model.TaskDto;
 
 import java.util.List;
 
@@ -26,8 +27,14 @@
     /**
      * 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏋滄暟閲忎负0锛屽垯鍒犻櫎璁板綍
      */
-    boolean updateAnfme(Double anfme, String locNo, String matnr, String batch);
+    boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, String csocode, String isocode);
 
     public AgvLocDetl selectByLocNo(String locNo);
 
+    public List<AgvLocDetl> selectByTaskDto(TaskDto taskDto);
+
+    public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode(String matnr, String batch, String csocode, String isocode);
+
+    public Double selectSumAnfmeByLocNo(String locNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 6f8be15..2fd0459 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -12,9 +12,9 @@
 
     Page<OrderDetl> getPakoutPage(Page<OrderDetl> page);
 
-    OrderDetl selectItem(Long orderId, String matnr, String batch);
+    OrderDetl selectItem(Long orderId, String matnr, String batch, String csocode, String isoCode);
 
-    OrderDetl selectItem(String orderNo, String matnr, String batch);
+    OrderDetl selectItem(String orderNo, String matnr, String batch, String csocode, String isoCode);
 
     OrderDetl selectItemNoneOfBatch(String orderNo, String matnr);
 
@@ -22,11 +22,11 @@
 
     OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch);
 
-    boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty);
+    boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty, String csocode, String isoCode);
 
-    boolean increase(Long orderId, String matnr, String batch, Double qty);
+    boolean increase(Long orderId, String matnr, String batch, Double qty, String csocode, String isoCode);
 
-    boolean decrease(String orderNo, String matnr, String batch, Double qty);
+    boolean decrease(String orderNo, String matnr, String batch, Double qty, String csocode, String isoCode);
 
     boolean modifyStatus(Long orderId, Integer status);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
index 7e212d6..6b13866 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -13,7 +13,9 @@
 import com.zy.asrs.service.AgvLocDetlService;
 import com.zy.asrs.service.AgvLocMastService;
 import com.zy.asrs.service.AgvWrkDetlService;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.model.LocDto;
+import com.zy.common.model.TaskDto;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -133,13 +135,16 @@
         return this.selectList(wrapper);
     }
 
-    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) {
+    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, String csocode, String isocode) {
+        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
+        Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode);
+        wrapper.eq("loc_no", locNo);
         if (anfme <= 0) {
-            return this.delete(new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).eq("loc_no", locNo));
+            return this.delete(wrapper);
         } else {
-            AgvLocDetl agvLocDetl = this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", matnr));
+            AgvLocDetl agvLocDetl = this.selectOne(wrapper);
             agvLocDetl.setAnfme(anfme);
-            return this.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", matnr));
+            return this.update(agvLocDetl,wrapper);
             //return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0;
         }
     }
@@ -170,4 +175,29 @@
     public AgvLocDetl selectByLocNo(String locNo){
         return this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",locNo));
     }
+
+    @Override
+    public List<AgvLocDetl> selectByTaskDto(TaskDto taskDto) {
+        List<AgvLocDetl> agvLocDetls = new ArrayList<>();
+
+        taskDto.getLocDtos().forEach(locDto -> {
+            AgvLocDetl agvLocDetl = this.selectByMatnrAndBatchAndCsocodeAndisoCode(locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+            agvLocDetls.add(agvLocDetl);
+        });
+        return agvLocDetls;
+    }
+
+    @Override
+    public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode(String matnr, String batch, String csocode, String isocode) {
+        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
+        Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode);
+        return this.selectOne(wrapper);
+    }
+
+    @Override
+    public Double selectSumAnfmeByLocNo(String locNo) {
+        return this.baseMapper.sumByLocNo(locNo);
+    }
+
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index c110227..92dda9f 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -148,7 +148,7 @@
      */
     private void checkOrderQty(Order order, CombParam.CombMat combMat){
         // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙锛屽鏋滀綔涓氭暟閲忓ぇ浜庡崟鎹暟閲忓垯鎶涘嚭寮傚父
-        OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
+        OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getCsocode(),combMat.getIsoseq());
         if(Cools.isEmpty(orderDetl)){
             throw new CoolException("鏈尮閰嶅埌璇ュ崟鎹笅鐨勭墿鏂�");
         }
@@ -156,7 +156,7 @@
             throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
         }
         // 淇敼璁㈠崟鏄庣粏鏁伴噺
-        if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
+        if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(),combMat.getIsoseq())) {
             throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
         }
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 764889e..5d02d6a 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -118,31 +118,41 @@
 
         agvTaskDtos.forEach(taskDto -> {
 
-            AgvLocMast agvLocMast = agvLocMastService.selectById(taskDto.getLocNo());
-            AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
+            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectByTaskDto(taskDto);
+
+            //AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
 
             //宸ヤ綔妗f墍闇�鍙傛暟
-            double anfme = taskDto.getLocDtos().get(0).getAnfme();
+
             long wrkSts = 21L;
             String sourceLocNo = taskDto.getLocNo();
             String targetLocNo = taskDto.getAgvStaNo();
-            String barcode = agvLocDetl.getSuppCode();
-            //鏄庣粏妗f墍闇�鍙傛暟
-            String mantr = taskDto.getLocDtos().get(0).getMatnr();
-            String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
-            String batch = taskDto.getLocDtos().get(0).getBatch();
+            String barcode = agvLocDetls.get(0).getSuppCode();
 
-            String csocode = agvLocDetl.getThreeCode();
-            String isoseq = agvLocDetl.getDeadTime();
 
             //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
-            int ioType = isPakOut(sourceLocNo,anfme) ?  101 : 103;
+            int ioType = isPakOut(sourceLocNo,taskDto) ?  101 : 103;
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId,false);
             //鐢熸垚宸ヤ綔妗f槑缁�
-            createWrkDetlReWrite(mantr,wrkMast.getWrkNo(),orderNo,batch,anfme,barcode,now,userId,csocode,isoseq);
-            //淇敼璁㈠崟淇℃伅
-            modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
+            taskDto.getLocDtos().forEach(locDto -> {
+                //鏄庣粏妗f墍闇�鍙傛暟
+                createWrkDetlReWrite(locDto.getMatnr(),
+                        wrkMast.getWrkNo(),
+                        locDto.getOrderNo(),
+                        locDto.getBatch(),
+                        locDto.getAnfme(),
+                        locDto.getContainerCode(),
+                        now,
+                        userId,
+                        locDto.getCsocode(),
+                        locDto.getIsoseq());
+
+                //淇敼璁㈠崟淇℃伅
+                modifyOrderDetl(locDto, userId);
+            });
+//            //淇敼璁㈠崟淇℃伅
+//            modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
             //鏇存柊婧愮珯鐐逛俊鎭�
             String locSts = ioType == 101 ? "R" : "P";
             updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
@@ -171,9 +181,9 @@
             agvWrkMast.setIoTime(now);
             agvWrkMastService.updateById(agvWrkMast);
 
-            AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+            List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
             AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
-            AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
+            //List<AgvLocDetl> agvLocDetlList = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
             AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo());
 
             //鎷f枡鍏ュ簱
@@ -182,8 +192,11 @@
                 //agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
                 //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
                 //淇敼搴撳瓨淇℃伅
-                agvLocDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
-                agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
+                agvWrkDetlList.forEach(agvWrkDetl -> {
+                    AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+                    double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+                    agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
+                });
             }
             //淇敼搴撲綅淇℃伅
             updateAgvLocMast(agvLocMast,"Q");
@@ -337,7 +350,7 @@
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                        if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
                             throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -368,7 +381,7 @@
         // 鍒犻櫎搴撳瓨
         for (AgvLocDetl locDetl : locDetls) {
             // todo 鐩樼偣璁板綍
-            if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+            if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
                 throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
             // 淇濆瓨璋冩暣璁板綍
@@ -497,18 +510,25 @@
                 //鐩爣绔欑偣
                 String devNo = wrkMast.getLocNo();
                 agvLocMastService.updateLocStsByLocNo(locNo,"F");
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
+                if(devNo.contains("@")){
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
+                }
             }
 
         }
 
         //璁㈠崟鍥炴粴
-        AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).get(0);
-        if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
-            OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
-            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
-            orderDetlService.updateById(orderDetl);
-        }
+        //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+        List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        agvWrkDetlList1.forEach(agvWrkDetl -> {
+
+            if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
+                OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                orderDetlService.updateById(orderDetl);
+            }
+        });
+
 
         //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
         agvWrkMastLogService.save(wrkMast);
@@ -668,9 +688,14 @@
         return wrkMast;
     }
 
-    private boolean isPakOut(String locNo, double anfme){
-        AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
-        if(agvLocDetl.getAnfme() > anfme){
+    private boolean isPakOut(String locNo, TaskDto taskDto){
+        Double allAnfme = agvLocDetlService.selectSumAnfmeByLocNo(locNo);
+        Double pakOutAnfme = 0.0;
+        for (LocDto locDto : taskDto.getLocDtos()){
+            pakOutAnfme += locDto.getAnfme();
+        }
+
+        if(allAnfme > pakOutAnfme){
             return false;
         }
         return true;
@@ -684,11 +709,11 @@
 
         if (!BaseController.isJSON(locDto.getOrderNo())) {
             //闈炲悎骞跺嚭搴�
-            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
             if (orderDetl == null) {
-                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
             }
-            if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+            if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
                 throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
             }
             orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -702,9 +727,9 @@
             Double orderAnfme;
 
             for (OrderDto orderDto : orderDtoList) {
-                OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
                 if (orderDetl == null) {
-                    orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
+                    orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
                 }
 
                 if(locAnfme > orderDetl.getAnfme()){
@@ -714,7 +739,7 @@
                     orderAnfme = locAnfme;
                 }
 
-                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
+                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
                     throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                 }
                 orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 5de7f20..9ddf167 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -149,12 +149,12 @@
             param.getCombMats().forEach(elem -> {
 
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch(),elem.getCsocode(),elem.getIsoseq());
                 if (elem.getAnfme() > orderDetl.getEnableQty()) {
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
                 // 淇敼璁㈠崟鏄庣粏鏁伴噺
-                if (!orderDetlService.increase(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+                if (!orderDetlService.increase(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
 
@@ -393,12 +393,12 @@
 
                 // 淇敼浣滀笟鏁伴噺 ----------------------------------------
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq());
                 if (detlDto.getAnfme() > orderDetl.getEnableQty()) {
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
                 // 淇敼璁㈠崟鏄庣粏鏁伴噺
-                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) {
+                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme(),detlDto.getCsocode(),detlDto.getIsoseq())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 46f1a15..0f8c4b7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -31,13 +31,13 @@
     }
 
     @Override
-    public OrderDetl selectItem(Long orderId, String matnr, String batch) {
-        return this.baseMapper.selectItem(orderId, matnr, batch);
+    public OrderDetl selectItem(Long orderId, String matnr, String batch, String csocode, String isoCode) {
+        return this.baseMapper.selectItem(orderId,matnr,batch,csocode,isoCode);
     }
 
     @Override
-    public OrderDetl selectItem(String orderNo, String matnr, String batch) {
-        return this.baseMapper.selectItemByOrderNo(orderNo, matnr, batch);
+    public OrderDetl selectItem(String orderNo, String matnr, String batch, String csocode, String isoCode) {
+        return this.baseMapper.selectItemByOrderNo(orderNo, matnr, batch,csocode,isoCode);
     }
 
     @Override
@@ -63,20 +63,20 @@
     }
 
     @Override
-    public boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty) {
-        return this.baseMapper.increaseAnfme(orderId, matnr, batch, qty) > 0;
+    public boolean increaseAnfme(Long orderId, String matnr, String batch, Double qty, String csocode, String isoCode) {
+        return this.baseMapper.increaseAnfme(orderId, matnr, batch, qty, csocode, isoCode) > 0;
     }
 
     @Override
-    public boolean increase(Long orderId, String matnr, String batch, Double qty) {
-        return this.baseMapper.increase(orderId, matnr, batch, qty) > 0;
+    public boolean increase(Long orderId, String matnr, String batch, Double qty, String csocode, String isoCode) {
+        return this.baseMapper.increase(orderId, matnr, batch, qty, csocode, isoCode) > 0;
     }
 
     @Override
-    public boolean decrease(String orderNo, String matnr, String batch, Double qty) {
-        int decrease = this.baseMapper.decrease(orderNo, matnr, batch, qty);
+    public boolean decrease(String orderNo, String matnr, String batch, Double qty, String csocode, String isoCode) {
+        int decrease = this.baseMapper.decrease(orderNo, matnr, batch, qty, csocode, isoCode);
         if (decrease == 0) {
-            return this.baseMapper.decrease(orderNo, matnr, null, qty) > 0;
+            return this.baseMapper.decrease(orderNo, matnr, null, qty, csocode, isoCode) > 0;
         } else {
             return true;
         }
@@ -109,8 +109,8 @@
     @Override
     public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq) {
         Wrapper<OrderDetl> wrapper = new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("matnr", matnr);
-        Utils.wapperSetCondition(wrapper,"csocode",csocode);
-        Utils.wapperSetCondition(wrapper,"isoseq",isoseq);
+        Utils.wapperSetCondition(wrapper,"three_code",csocode);
+        Utils.wapperSetCondition(wrapper,"dead_time",isoseq);
 
         return this.selectOne(wrapper);
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 1d66c6e..dba14a3 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -175,7 +175,7 @@
             }
             for (DetlDto detlDto : detlDtos) {
                 // 淇敼璁㈠崟鏄庣粏鏁伴噺
-                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) {
+                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme(),detlDto.getCsocode(),detlDto.getIsoseq())) {
                     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 36fe8aa..87a71e8 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -478,11 +478,11 @@
 
             // 淇敼璁㈠崟鏄庣粏
             if (!BaseController.isJSON(locDto.getOrderNo())) {
-                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
                 if (orderDetl == null) {
-                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
                 }
-                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
                     throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                 }
                 orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -496,9 +496,9 @@
                 Double orderAnfme;
 
                 for (OrderDto orderDto : orderDtoList) {
-                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
                     if (orderDetl == null) {
-                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
+                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
                     }
 
                     if(locAnfme > orderDetl.getAnfme()){
@@ -508,7 +508,7 @@
                         orderAnfme = locAnfme;
                     }
 
-                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
+                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
                         throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                     }
                     orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -1023,7 +1023,7 @@
         for (WrkDetl wrkDetl : wrkDetls) {
             if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                 if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
-                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme(),wrkDetl.getThreeCode(),wrkDetl.getDeadTime())) {
                         throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
                     }
                 } else {
@@ -1044,7 +1044,7 @@
                             orderAnfme = wrkDetlAnfme;
                         }
 
-                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
+                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme,wrkDetl.getThreeCode(),wrkDetl.getDeadTime())) {
                             throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
                         }
                     }
diff --git a/src/main/java/com/zy/asrs/utils/MatExcelListener.java b/src/main/java/com/zy/asrs/utils/MatExcelListener.java
index a16e06d..6f29fc9 100644
--- a/src/main/java/com/zy/asrs/utils/MatExcelListener.java
+++ b/src/main/java/com/zy/asrs/utils/MatExcelListener.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
@@ -135,6 +136,11 @@
                 throw new CoolException("淇濆瓨鍟嗗搧淇℃伅澶辫触锛岀墿鏂欏彿锛�" + excel.getMatnr());
             }
             total++;
+        }else {
+            mat = excel;
+            mat.setTagId(tagId);
+            matService.update(mat,new EntityWrapper<Mat>().eq("matnr",mat.getMatnr()));
+            total++;
         }
     }
 
diff --git a/src/main/java/com/zy/common/model/TaskDto.java b/src/main/java/com/zy/common/model/TaskDto.java
index beb8394..adbd14e 100644
--- a/src/main/java/com/zy/common/model/TaskDto.java
+++ b/src/main/java/com/zy/common/model/TaskDto.java
@@ -56,6 +56,9 @@
             return false;
         }
         for (TaskDto taskDto : list) {
+            if(Cools.isEmpty(taskDto.getStaNo()) && dto.getLocNo().equals(taskDto.getLocNo())){
+                return true;
+            }
             if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getStaNo().equals(dto.getStaNo())) {
                 return true;
             }
@@ -68,6 +71,9 @@
             return null;
         }
         for (TaskDto taskDto : list) {
+            if(Cools.isEmpty(taskDto.getStaNo()) && dto.getLocNo().equals(taskDto.getLocNo())){
+                return taskDto;
+            }
             if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getStaNo().equals(dto.getStaNo())) {
                 return taskDto;
             }
diff --git a/src/main/java/com/zy/common/service/AgvCommonService.java b/src/main/java/com/zy/common/service/AgvCommonService.java
index 9b2e5f1..8684a32 100644
--- a/src/main/java/com/zy/common/service/AgvCommonService.java
+++ b/src/main/java/com/zy/common/service/AgvCommonService.java
@@ -74,21 +74,21 @@
     public AgvLocMast getLocNo(List<AgvWaitPakin> agvWaitPakinList, int floor) {
         // 鐩爣搴撲綅
         AgvLocMast locMast = null;
-
-        //搴撲綅瑙勫垯
-        if(!Cools.isEmpty(agvWaitPakinList)){
-            locMast = getLocByLocRule(agvWaitPakinList.get(0),floor);
-            if(!Cools.isEmpty(locMast)){
-                return locMast;
-            }
+        if(Cools.isEmpty(agvWaitPakinList)){
+            return getLocNoRule(floor);
         }
 
+        //搴撲綅瑙勫垯
+        locMast = getLocByLocRule(agvWaitPakinList.get(0),floor);
+        if(!Cools.isEmpty(locMast)){
+            return locMast;
+        }
+
+
         //搴撲綅缂栫爜瑙勫垯
-        if(!Cools.isEmpty(agvWaitPakinList)){
-            locMast = getLocByLocCodeRule(agvWaitPakinList.get(0),floor);
-            if(!Cools.isEmpty(locMast)){
-                return locMast;
-            }
+        locMast = getLocByLocCodeRule(agvWaitPakinList.get(0),floor);
+        if(!Cools.isEmpty(locMast)){
+            return locMast;
         }
 
         // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
@@ -100,21 +100,15 @@
 
         //鏍规嵁鐗╂枡棰戠巼鎼滅储搴撲綅锛岄鐜囬珮鍒欐悳绱㈢缂撳瓨璐ф灦鏈�杩戝簱浣嶏紝棰戠巼浣庡垯鎼滅储鏈�杩滃簱浣�
         Mat mat = matService.selectByMatnr(agvWaitPakinList.get(0).getMatnr());
-        if(true){
-
-        }else {
-
+        if(Cools.isEmpty(mat.getBeBatch())){
+            mat.setBeBatch(0);
+        }
+        locMast = getLocByFre(mat.getBeBatch(), floor);
+        if (locMast != null) {
+            return locMast;
         }
 
-//
-//        // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
-//        locMast = getLocNoStep4(staDescId, locTypeDto);
-//        if (locMast != null) {
-//            //鎵惧埌搴撲綅锛岃繑鍥瀌to
-//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
-//        }
-//
-//        // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
+
         // 寮�濮嬫煡鎵惧簱浣� ==============================>>
         locMast = getLocNoRule(floor);
         if (locMast != null) {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 92e90ad..62d51e3 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -74,8 +74,10 @@
 
 agv:
 #  url: localhost:8080
-#  taskCreatePath: /test/task/create
-#  containerMoveInPath: /test/container/moveIn
+#  taskCreatePath: /agv/task/create
+#  containerMoveInPath: /agv/container/moveIn
+#  containerMoveOutPath: /agv/container/moveOut
+#  containerArrivedPath: /agv/containerArrived
   url: 10.10.10.182:9046
   taskCreatePath: /task/create
   containerMoveInPath: /expand/api/moveIn/container
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 4152d97..b1ffd1a 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -62,6 +62,22 @@
                 and (batch IS NULL OR batch = '')
             </otherwise>
         </choose>
+        <choose>
+            <when test="csocode != null and csocode != ''">
+                and three_code = #{csocode}
+            </when>
+            <otherwise>
+                and (three_code IS NULL OR three_code = '')
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="isocode != null and isocode != ''">
+                and dead_time = #{isocode}
+            </when>
+            <otherwise>
+                and (dead_time IS NULL OR dead_time = '')
+            </otherwise>
+        </choose>
     </select>
 
     <select id="selectItemByOrderNo" resultMap="BaseResultMap">
@@ -71,6 +87,12 @@
         and matnr = #{matnr}
         <if test="batch!=null and batch!='' ">
             and batch = #{batch}
+        </if>
+        <if test="csocode!=null and csocode!='' ">
+            and three_code = #{csocode}
+        </if>
+        <if test="isocode!=null and isocode!='' ">
+            and dead_time = #{isocode}
         </if>
     </select>
 
@@ -154,6 +176,22 @@
                 and (batch IS NULL OR batch = '')
             </otherwise>
         </choose>
+        <choose>
+            <when test="csocode != null and csocode != ''">
+                and three_code = #{csocode}
+            </when>
+            <otherwise>
+                and (three_code IS NULL OR three_code = '')
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="isocode != null and isocode != ''">
+                and dead_time = #{isocode}
+            </when>
+            <otherwise>
+                and (dead_time IS NULL OR dead_time = '')
+            </otherwise>
+        </choose>
     </update>
 
     <update id="increase">
@@ -170,6 +208,22 @@
                 and (batch IS NULL OR batch = '')
             </otherwise>
         </choose>
+        <choose>
+            <when test="csocode != null and csocode != ''">
+                and three_code = #{csocode}
+            </when>
+            <otherwise>
+                and (three_code IS NULL OR three_code = '')
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="isocode != null and isocode != ''">
+                and dead_time = #{isocode}
+            </when>
+            <otherwise>
+                and (dead_time IS NULL OR dead_time = '')
+            </otherwise>
+        </choose>
     </update>
 
     <update id="decrease">
@@ -186,6 +240,22 @@
                 and (batch IS NULL OR batch = '')
             </otherwise>
         </choose>
+        <choose>
+            <when test="csocode != null and csocode != ''">
+                and three_code = #{csocode}
+            </when>
+            <otherwise>
+                and (three_code IS NULL OR three_code = '')
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="isocode != null and isocode != ''">
+                and dead_time = #{isocode}
+            </when>
+            <otherwise>
+                and (dead_time IS NULL OR dead_time = '')
+            </otherwise>
+        </choose>
     </update>
 
     <update id="modifyStatus">
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index cd76d0d..b68a99d 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -185,7 +185,8 @@
     //,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true}
     ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О', width: 150}
     ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false}
-    ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false}
+    ,{field: 'beBatch$', align: 'center',title: '鐗╂枡棰戠巼', hide: false}
+    ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
     // ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: false}
     // ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: false}
     // ,{field: 'units', align: 'center',title: '鏀暟', hide: false}
diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html
index d42083c..933ceb3 100644
--- a/src/main/webapp/views/mat/mat.html
+++ b/src/main/webapp/views/mat/mat.html
@@ -286,13 +286,18 @@
                         <input name="supp" placeholder="璇疯緭鍏ュ缓妗d汉" class="layui-input">
                     </div>
                 </div>
-
                 <div class="layui-form-item">
                     <label class="layui-form-label">澶囨敞</label>
                     <div class="layui-input-block">
                         <input name="memo" placeholder="璇疯緭鍏ュ娉�" class="layui-input">
                     </div>
                 </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐗╂枡棰戠巼</label>
+                    <div class="layui-input-block">
+                        <input name="beBatch" type="number" placeholder="1涓洪珮棰戯紝鍏朵粬鍧囦负浣庨" class="layui-input">
+                    </div>
+                </div>
 
             </div>
         </div>

--
Gitblit v1.9.1