From 4fb06a58ed5df46f29af1e9fa65cfd40335263ad Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期六, 18 一月 2025 17:06:18 +0800
Subject: [PATCH] # 6. 大屏添加作业类型 (全盘,还是分拣  IOType) 10.平库出库时,当前平库ID是写死在Sql里,需修改 11.平库出库没有判断是否预约出库,且生成拣货单时没有锁定库存,需确认是否考虑回库问题 26. 已拣过货的任务明细,可以再次拣货,拣货明细需添加一个拣货状态 47. 确认发货前,需判断是否已绑定至集货区 48. CTU出库后,库位103不再删除原有库位信息

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java                  |    2 
 zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml                                     |    4 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java          |   57 +++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java            |   60 +++++--
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java |   18 +-
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/LargeScreenTaskDto.java             |   10 +
 zy-asrs-admin/src/components/orderDetl/edit.vue                                               |    9 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java       |   10 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java              |  115 +++++++------
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java                        |    4 
 zy-asrs-admin/src/views/out/order/index.vue                                                   |    4 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java         |   15 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java            |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java                          |   38 +++-
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java            |    6 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java                           |   65 ++++----
 zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml                              |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java           |    5 
 18 files changed, 279 insertions(+), 147 deletions(-)

diff --git a/zy-asrs-admin/src/components/orderDetl/edit.vue b/zy-asrs-admin/src/components/orderDetl/edit.vue
index cc22e0a..ef4ac13 100644
--- a/zy-asrs-admin/src/components/orderDetl/edit.vue
+++ b/zy-asrs-admin/src/components/orderDetl/edit.vue
@@ -156,6 +156,7 @@
 const matChecked = ref([]);
 const matQueryList = ref(null);
 const matFetching = ref(false);
+const searchText = ref('')
 const matSelectList = ref([]);
 const addDetl = () => {
     openAddDetl.value = true;
@@ -193,6 +194,7 @@
 }
 
 const handleSearch = debounce(val => {
+    searchText.value = val
     matQuery(val);
 }, 600)
 
@@ -221,6 +223,7 @@
 }
 
 matQuery(null);
+
 function matQuery(condition) {
     matFetching.value = true;
     post('/api/mat/page', {
@@ -334,10 +337,10 @@
 
         <a-modal v-model:open="openAddDetl" :title="formatMessage('component.orderDetl.edit.addDetl', '娣诲姞鏄庣粏')"
             @ok="handleAddDetlOk" @cancel="handleAddDetlCancel">
-            <a-select v-model:value="matChecked" :options="matQueryList" mode="multiple"
+            <a-select v-model:value="matChecked" :options="matQueryList" mode="multiple" :searchValue="searchText"
                 :placeholder="formatMessage('component.orderDetl.edit.selectMat', '璇烽�夋嫨鐗╂枡')" @search="handleSearch"
-                :filter-option="false" :not-found-content="matFetching ? undefined : null" @select="handleSelect"
-                @deselect="handleDeselect"></a-select>
+                :filter-option="false" :not-found-content="matFetching ? undefined : null"  @select="handleSelect" allowClear
+                @deselect="handleDeselect" ></a-select>
         </a-modal>
     </div>
 </template>
diff --git a/zy-asrs-admin/src/views/out/order/index.vue b/zy-asrs-admin/src/views/out/order/index.vue
index 1512140..d59c519 100644
--- a/zy-asrs-admin/src/views/out/order/index.vue
+++ b/zy-asrs-admin/src/views/out/order/index.vue
@@ -25,7 +25,5 @@
 </script>
 
 <style>
-    .col {
-        color: ;
-    }
+
 </style>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
index 0da930a..d595118 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.wms.apis.wcs.entity.request.RfidSingalRequest;
 import com.zy.asrs.wms.apis.wcs.entity.request.TasksStatusCallbackParam;
 import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
+import com.zy.asrs.wms.asrs.entity.param.BindPlatformParam;
 import com.zy.asrs.wms.asrs.service.PlatformService;
 import com.zy.asrs.wms.system.controller.BaseController;
 import io.netty.util.internal.StringUtil;
@@ -24,6 +25,9 @@
 
     @Autowired
     private WcsApiService wcsApiService;
+
+    @Autowired
+    private PlatformService platformService;
 
 
     /**
@@ -137,7 +141,16 @@
         return  wcsApiService.getPlatforms();
     }
 
-
+//    /**
+//     * 缁戝畾璁㈠崟涓庨泦璐у尯鍏崇郴
+//     * @param platform
+//     * @return
+//     */
+//    @PostMapping("/bind/shipping/platform")
+//    public R bindShippingAndPlatform(@RequestBody BindPlatformParam platform) {
+//        return platformService.bindShippingPlatform(platform);
+//    }
+//
 
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java
index 0bf1ef7..517fd88 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/WaveTaskDetl.java
@@ -43,6 +43,8 @@
      */
     private String batch;
 
+
+
     /**
      * 搴撳瓨
      */
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
index 8940c76..b59a34e 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
@@ -7,18 +7,12 @@
 import com.zy.asrs.wms.apis.wcs.entity.domain.WaveTaskDetl;
 import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds;
 import com.zy.asrs.wms.apis.wcs.services.WaveManagentService;
-import com.zy.asrs.wms.asrs.entity.CacheSite;
-import com.zy.asrs.wms.asrs.entity.Order;
-import com.zy.asrs.wms.asrs.entity.OrderDetl;
-import com.zy.asrs.wms.asrs.entity.Task;
+import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.entity.dto.LargeScreenTaskDto;
 import com.zy.asrs.wms.asrs.entity.enums.OrderPickStatus;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
 import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam;
-import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
-import com.zy.asrs.wms.asrs.mapper.OrderDetlMapper;
-import com.zy.asrs.wms.asrs.mapper.OrderMapper;
-import com.zy.asrs.wms.asrs.mapper.TaskMapper;
+import com.zy.asrs.wms.asrs.mapper.*;
 import com.zy.asrs.wms.asrs.service.TaskService;
 import com.zy.asrs.wms.asrs.service.WaveSeedService;
 import org.aspectj.weaver.ast.Or;
@@ -39,6 +33,9 @@
     private TaskService taskService;
     @Autowired
     private TaskMapper taskMapper;
+
+    @Autowired
+    private TaskTypeMapper taskTypeMapper;
     @Autowired
     private OrderMapper orderMapper;
     @Autowired
@@ -69,8 +66,9 @@
 
     @Override
     public R getTask() {
-         List<LargeScreenTaskDto> taskDtos =  taskMapper.getTaskIntegrateByTaskNo(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WAVE_SEED.id));
-        return R.ok(taskDtos);
+         List<LargeScreenTaskDto> taskDtos =  taskMapper.getTaskIntegrateByTaskNo(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WAVE_SEED.id).orderByAsc(Task::getUpdateTime).last("limit 1"));
+
+         return R.ok(taskDtos);
     }
 
     @Override
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
index 9d767e8..c3eb626 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
@@ -169,8 +169,7 @@
                     }
                 } else { //鍑哄簱浠诲姟
                     if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_LOAD.event)) { //涓婃姤鍙栫鐘舵��
-                        //TODO 瀹氭椂鍣ㄥ紑鍚悗锛岃鍒犻櫎 || task.getTaskType() == TaskStsType.GENERATE_OUT.id
-                        if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT.id || task.getTaskSts() == TaskStsType.GENERATE_OUT.id) {
+                        if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT.id ) {
                             taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD;
                         } else {
                             String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.desc + "浠诲姟";
@@ -197,7 +196,7 @@
                     }
 
                     //鏇存柊鍑哄簱鐘舵�佸強鐩稿叧瀛楁
-                    taskService.update(new LambdaUpdateWrapper<Task>()
+                    boolean update = taskService.update(new LambdaUpdateWrapper<Task>()
                             .set(Task::getRobotCode, callbackParam.getRobotCode())
                             .set(Task::getSysTaskCode, callbackParam.getSysTaskCode())
                             .set(Task::getTaskSts, taskStsType.id)
@@ -205,6 +204,10 @@
                             .set(Task::getTaskDesc, callbackParam.getMessage())
                             .eq(Task::getBarcode, callbackParam.getContainerCode())
                             .eq(Task::getTaskNo, callbackParam.getTaskCode()));
+
+                    if (!update) {
+                        throw new CoolException("浠诲姟鏇存柊澶辫触锛侊紒");
+                    }
 
                 }
 
@@ -300,6 +303,7 @@
      * @param request
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void slapLightLogic(Map<String, Object> request) {
         String taskNo = request.get("taskNo").toString();
         String orderNo = request.get("orderNo").toString();
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/LargeScreenTaskDto.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/LargeScreenTaskDto.java
index 46d1613..916cd6f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/LargeScreenTaskDto.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/LargeScreenTaskDto.java
@@ -18,6 +18,11 @@
      */
     private String waveNo;
 
+    /**
+     * 浠诲姟绫诲瀷
+     */
+    private String title;
+
     private Long id;
     /**
      * 鎷栫洏鐮�
@@ -28,6 +33,11 @@
      */
     private String taskNo;
     /**
+     * 浠诲姟绫诲瀷
+     */
+    private String taskType;
+
+    /**
      * 浠诲姟鐘舵��
      */
     private Integer taskSts;
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java
index 1e42a5e..add36d7 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java
@@ -7,8 +7,10 @@
 
     private Long platformId;
 
-    private String siteNo;
+    private String waveId;
 
-    private String orderNo;
+    private String orderId;
+
+    private String siteNo;
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
index e5e77a4..709c6a1 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -1015,7 +1015,7 @@
         List<OrderOutMergeParam> mergeParam = params.stream().filter(par -> {
             return !StringUtils.isNullOrEmpty(par.getLocNo());
         }).collect(Collectors.toList());
-        //鏁版嵁鍒嗙被 1.骞冲簱鏁版嵁  2. TUC鏁版嵁
+        //鏁版嵁鍒嗙被 1.骞冲簱鏁版嵁  2. CTU鏁版嵁
         Map<Long, List<OrderOutMergeParam>> listMap = mergeParam.stream().collect(Collectors.groupingBy(OrderOutMergeParam::getTypeId));
 
         listMap.keySet().forEach(key -> {
@@ -1198,6 +1198,10 @@
                 //閿佸畾搴撳瓨閲�
                 locDetl.setWorkQty(locDetl.getWorkQty() + outOder.getAnfme());
 
+                if (!locDetlService.updateById(locDetl)) {
+                    throw new CoolException("搴撳瓨鍔犻攣澶辫触锛侊紒");
+                }
+
             });
 
         });
@@ -1338,7 +1342,7 @@
 
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void cancelWave(List<Long> waveIds) {
         if (waveIds == null) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
@@ -1361,6 +1365,14 @@
                     throw new CoolException("宸插瓨鍦ㄤ换鍔★紝绂佹鍙栨秷娉㈡");
                 }
 
+                List<PickSheet> pickSheets = pickSheetService.list(new LambdaQueryWrapper<PickSheet>()
+                        .eq(PickSheet::getWaveNo, wave.getWaveNo())
+                        .eq(PickSheet::getDeleted, 0)
+                        .eq(PickSheet::getStatus, 1));
+                if (!pickSheets.isEmpty()) {
+                    throw new CoolException("褰撳墠娉㈡鏈夋嫞璐у崟瀛樺湪锛侊紒");
+                }
+
                 List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, wave.getId()));
                 for (Order order : orders) {
                     order.setWaveId(null);
@@ -1373,17 +1385,17 @@
                         throw new CoolException("璁㈠崟鍙嶅啓澶辫触");
                     }
 
-                    CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, order.getId()));
-                    if (cacheSite == null) {
-                        throw new CoolException("缂撳瓨绔欎笉瀛樺湪");
-                    }
-                    cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
-                    cacheSite.setOrderId(null);
-                    cacheSite.setOrderNo(null);
-                    cacheSite.setUpdateTime(new Date());
-                    if (!cacheSiteService.updateById(cacheSite)) {
-                        throw new CoolException("缂撳瓨绔欐竻绌哄け璐�");
-                    }
+//                    CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, order.getId()));
+//                    if (cacheSite == null) {
+//                        throw new CoolException("缂撳瓨绔欎笉瀛樺湪");
+//                    }
+//                    cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
+//                    cacheSite.setOrderId(null);
+//                    cacheSite.setOrderNo(null);
+//                    cacheSite.setUpdateTime(new Date());
+//                    if (!cacheSiteService.updateById(cacheSite)) {
+//                        throw new CoolException("缂撳瓨绔欐竻绌哄け璐�");
+//                    }
                 }
 
                 waveDetlService.removeById(waveDetl.getId());
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
index 12ff1e0..80e3d44 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
@@ -26,5 +26,5 @@
 
     List<Map<String,Object>> listSuitableMat( @Param("param") List<FieldParam> param, @Param("sortParam") List<FieldSortParam> sortParam);
 
-    List<Map<String, Object>> queryFlatStock(@Param("matnr") String matnr, @Param("batch") String batch,@Param("params") List<FieldParam> params);
+    List<Map<String, Object>> queryFlatStock(@Param("matnr") String matnr, @Param("batch") String batch, @Param("params") List<FieldParam> params, @Param("typeId") Long id);
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
index 1b35fc6..6e726af 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.LocAreaTypeSts;
 import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
 import com.zy.asrs.wms.asrs.entity.param.FieldParam;
 import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
@@ -183,7 +184,7 @@
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void locDetlFreeze(LocDetlFreezeParam param) {
         if (param == null) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
@@ -230,7 +231,7 @@
     @Override
     public List<LocDetl> queryFlatStock(String matnr, String batch, List<FieldParam> params) {
         //鑾峰彇骞冲簱涓鍚堟潯浠剁殑搴撲綅
-        List<Map<String, Object>> list = viewLocDetlMapper.queryFlatStock(matnr, batch, params);
+        List<Map<String, Object>> list = viewLocDetlMapper.queryFlatStock(matnr, batch, params, LocAreaTypeSts.LOC_AREA_TYPE_FLAT.id);
         List<LocDetl> detls = new ArrayList<>();
         list.forEach(action -> {
             LocDetl parseObject = JSONObject.parseObject(JSON.toJSONString(action), LocDetl.class);
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index 16e47ac..dc72f46 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
@@ -17,7 +18,6 @@
 import com.zy.asrs.wms.system.entity.Host;
 import com.zy.asrs.wms.system.service.HostService;
 import io.netty.util.internal.StringUtil;
-import org.aspectj.weaver.ast.Or;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -81,6 +81,12 @@
     private WaveSeedLogService waveSeedLogService;
     @Autowired
     private OrderDetlLogService orderDetlLogService;
+
+    @Autowired
+    private PlatformDetlService platformDetlService;
+    @Autowired
+    private PlatformDetlLogService platformDetlLogService;
+
 
 
     @Override
@@ -257,10 +263,11 @@
                 .eq(PickSheet::getDeleted, 0)
                 .eq(PickSheet::getStatus, 1)
         );
-        BeanUtils.copyProperties(pickSheet, pickDetlDto);
-        if (Objects.isNull(pickDetlDto)) {
-            throw new CoolException("瀵硅薄澶嶅埗澶辫触锛侊紒");
+        if (Objects.isNull(pickSheet)) {
+            throw new CoolException("鎷h揣鍗曚笉瀛樺湪锛侊紒");
         }
+        BeanUtils.copyProperties(pickSheet, pickDetlDto);
+
         List<PickSheetDetl> sheetDetls = pickSheetDetlService.list(new LambdaQueryWrapper<PickSheetDetl>()
                 .eq(PickSheetDetl::getPickId, pickSheet.getId())
                 .eq(PickSheetDetl::getStatus, 1)
@@ -300,8 +307,8 @@
                     throw new CoolException("鏁版嵁閿欒锛侊紒");
                 }
                 //鏇存柊閿佸畾搴撳瓨
-                BigDecimal workQty = BigDecimal.valueOf(detl.getAnfme()).subtract(pickDetl.getAnfme());
-                detl.setWorkQty(workQty.doubleValue());
+//                BigDecimal workQty = BigDecimal.valueOf(detl.getAnfme()).subtract(pickDetl.getAnfme());
+                detl.setWorkQty(0.0);
                 //璁$畻缁撴灉灏忎簬绛変簬闆讹紝绉诲嚭搴撳瓨鏄庣粏
                 BigDecimal qty = BigDecimal.valueOf(detl.getAnfme()).subtract(pickDetl.getAnfme());
                 detl.setAnfme(qty.doubleValue());
@@ -324,7 +331,7 @@
                         .set(Loc::getBarcode, null)
                         .set(Loc::getUpdateTime, new Date())
                         .set(Loc::getLocStsId, LocStsType.O.val()));
-                if (update) {
+                if (!update) {
                     throw new CoolException("搴撳瓨鏇存柊澶辫触锛侊紒 ");
                 }
             }
@@ -442,6 +449,18 @@
         if (params.isEmpty()) {
             throw new CoolException("鍙戣揣鍗曟嵁鏄庣粏涓虹┖锛屼笉鍙墽琛屽彂璐ф搷浣滐紒锛�");
         }
+
+        //鑾峰彇褰撳墠涓婁紶鎵�鏈夎鍗曞彿
+        Set<String> orderNoSet = params.stream().map(ShippingOrderDetlDto::getOrderNo).collect(Collectors.toSet());
+        if (orderNoSet.isEmpty()) {
+            throw new CoolException("涓诲崟淇℃伅涓嶅瓨鍦紝璇锋牳瀵瑰嚭搴撹鍗曪紒锛�");
+        }
+
+        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getOrderNo, orderNoSet));
+        if (orderList.isEmpty()) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+        }
+
         params.forEach(order -> {
             OrderDetl byId = orderDetlService.getById(order.getId());
             if (Objects.isNull(byId)) {
@@ -489,16 +508,6 @@
             }
         });
 
-        //鑾峰彇褰撳墠涓婁紶鎵�鏈夎鍗曞彿
-        Set<String> orderNoSet = params.stream().map(ShippingOrderDetlDto::getOrderNo).collect(Collectors.toSet());
-        if (orderNoSet.isEmpty()) {
-            throw new CoolException("涓诲崟淇℃伅涓嶅瓨鍦紝璇锋牳瀵瑰嚭搴撹鍗曪紒锛�");
-        }
-
-        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getOrderNo, orderNoSet));
-        if (orderList.isEmpty()) {
-            throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
-        }
         orderList.forEach(one -> {
             OrderLog orderLog = new OrderLog();
             BeanUtils.copyProperties(one, orderLog);
@@ -553,6 +562,23 @@
             }
         }
 
+        Set<Long> ordersSet = orderList.stream().map(Order::getId).collect(Collectors.toSet());
+        List<PlatformDetl> platDetls = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().in(PlatformDetl::getOrderId, ordersSet));
+        if (platDetls.isEmpty()) {
+            throw new CoolException("璁㈠崟淇℃伅鏈繘闆嗚揣鍖猴紒锛�");
+        }
+        ArrayList<PlatformDetlLog> platformDetls = new ArrayList<>();
+        platDetls.forEach(plat -> {
+            PlatformDetlLog detl = new PlatformDetlLog();
+            BeanUtils.copyProperties(plat, detl);
+            detl.setId(null);
+            platformDetls.add(detl);
+        });
+        //闆嗚揣鍖鸿浆鍘嗗彶妗�
+        if (!platformDetlLogService.saveBatch(platformDetls)) {
+            throw new CoolException("闆嗚揣鍖鸿鍗曡浆鍘嗗彶妗eけ璐ワ紒锛�");
+        }
+
         return R.ok("鍙戣揣瀹屾垚锛侊紒");
     }
 
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
index 98eba09..0e3f61e 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.wms.asrs.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
@@ -11,6 +12,7 @@
 import com.zy.asrs.wms.asrs.mapper.PlatformMapper;
 import com.zy.asrs.wms.asrs.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -18,6 +20,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @Service("platformService")
 public class PlatformServiceImpl extends ServiceImpl<PlatformMapper, Platform> implements PlatformService {
@@ -42,6 +45,8 @@
     private WaveLogService waveLogService;
     @Autowired
     private WaveDetlLogService waveDetlLogService;
+    @Autowired
+    private WaveSeedService waveSeedService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -169,7 +174,57 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R bindShippingPlatform(BindPlatformParam platform) {
-        return null;
+        if (Objects.isNull(platform.getPlatformId())) {
+            throw new CoolException("闆嗚揣鍖烘爣璇嗕笉鑳戒负绌猴紒锛�");
+        }
+        if (Objects.isNull(platform.getOrderId())) {
+            throw new CoolException("璁㈠崟缂栫爜涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(platform.getWaveId())) {
+            throw new CoolException("娉㈡ID涓嶈兘涓虹┖锛侊紒");
+        }
+        Platform pl = this.getById(platform.getPlatformId());
+        if (Objects.isNull(pl)) {
+            throw new CoolException("闆嗚揣鍖轰笉瀛樺湪锛侊紒");
+        }
+        List<WaveSeed> waveSeeds = waveSeedService.list(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getWaveId, platform.getWaveId()).eq(WaveSeed::getOrderId, platform.getOrderId()));
+        if (waveSeeds.isEmpty()) {
+            throw new CoolException("鍒嗘嫞鏄庣粏淇℃伅涓嶅瓨鍦紝鏁版嵁閿欒锛侊紒");
+        }
+        ArrayList<PlatformDetl> detls = new ArrayList<>();
+        waveSeeds.forEach(waveSeed -> {
+            PlatformDetl platformDetl = new PlatformDetl();
+            BeanUtils.copyProperties(waveSeed, platformDetl);
+            platformDetl.setPlatformId(pl.getId());
+            platformDetl.setPlatformNo(pl.getPlatformNo());
+
+            List<PlatformDetl> list = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().eq(PlatformDetl::getTaskDetlId, waveSeed.getTaskDetlId()).eq(PlatformDetl::getOrderDetlId, waveSeed.getOrderDetlId()).eq(PlatformDetl::getMatnr, waveSeed.getMatnr()));
+            if (!list.isEmpty()) {
+                throw new CoolException("璁㈠崟宸插叆闆嗚揣鍖猴紒锛�");
+            }
+            detls.add(platformDetl);
+        });
+
+        if (!platformDetlService.saveOrUpdateBatch(detls)) {
+            throw new CoolException("闆嗚揣鍖烘槑缁嗕繚瀛樺け璐ワ紒锛�");
+        }
+
+        List<CacheSite> list = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, platform.getOrderId()));
+        if (list.isEmpty()) {
+            throw new CoolException("璁㈠崟鏈粦瀹氭挱绉嶅簱浣嶏紝璇峰畬鎴愭嫞璐у悗锛屽啀鎵撳嵃璁㈠崟锛侊紒");
+        }
+
+        boolean update = cacheSiteService.update(new LambdaUpdateWrapper<CacheSite>()
+                .eq(CacheSite::getOrderId, platform.getOrderId())
+                .set(CacheSite::getPlatformId, pl.getId())
+                .set(CacheSite::getPlatformNo, pl.getPlatformNo()));
+
+        if (!update) {
+            throw new CoolException("鎾澧欑珯鐐圭粦瀹氶泦璐у尯澶辫触锛侊紒");
+        }
+
+        return R.ok("缁戝畾鎴愬姛锛侊紒");
     }
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
index 190b579..b801644 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
@@ -90,7 +90,7 @@
     @Override
     public Loc generateEmptyLoc(Long taskType, Integer locTypeHeight) {
         List<ShelvesRule> shelvesRules = shelvesRuleService.list(new LambdaQueryWrapper<ShelvesRule>().eq(ShelvesRule::getStatus, 1).orderByDesc(ShelvesRule::getCreateTime));
-        if(shelvesRules.isEmpty()) {
+        if (shelvesRules.isEmpty()) {
             throw new CoolException("鏈厤缃笂鏋惰鍒�");
         }
         ShelvesRule shelvesRule = shelvesRules.get(0);
@@ -114,7 +114,7 @@
         }
 
         List<ShelvesRuleDetl> ruleDetls = shelvesRule.getRuleDetl$();
-        if(ruleDetls.isEmpty()) {
+        if (ruleDetls.isEmpty()) {
             throw new CoolException("鏈厤缃笂鏋惰鍒欐槑缁�");
         }
 
@@ -135,7 +135,7 @@
                 //鑾峰彇搴撲綅
                 if (!suggestLoc.isEmpty()) {
                     defaultLoc = locUtils.filterLoc(taskType, suggestLoc);
-                    if(defaultLoc != null) {
+                    if (defaultLoc != null) {
                         return defaultLoc;
                     }
                 }
@@ -147,7 +147,7 @@
                 //鑾峰彇搴撲綅
                 if (!globalLoc.isEmpty()) {
                     defaultLoc = locUtils.filterAllLoc(globalLoc);
-                    if(defaultLoc != null) {
+                    if (defaultLoc != null) {
                         return defaultLoc;
                     }
                 }
@@ -274,7 +274,7 @@
 
         //鐢熸垚搴撲綅
         Loc loc = this.generateLoc(param.getTaskType(), param.getBarcode(), param.getLocTypeHeight());
-        if(loc == null) {
+        if (loc == null) {
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
 
@@ -316,7 +316,7 @@
             taskDetl.setMatId(waitPakin.getDetl$().getMatId());
             taskDetl.setMatnr(waitPakin.getDetl$().getMat$().getMatnr());
             boolean taskDetlSave = taskDetlService.save(taskDetl);
-            if(!taskDetlSave){
+            if (!taskDetlSave) {
                 throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触");
             }
 
@@ -329,7 +329,7 @@
                 taskDetlField.setDetlId(taskDetl.getId());
                 taskDetlField.setValue(orderDetlField.getValue());
                 boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
-                if(!taskDetlFieldSave){
+                if (!taskDetlFieldSave) {
                     throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
                 }
             }
@@ -338,26 +338,26 @@
             waitPakin.setIoStatus(1);
             waitPakin.setUpdateTime(new Date());
             boolean waitPakinUpdate = waitPakinService.updateById(waitPakin);
-            if(!waitPakinUpdate){
+            if (!waitPakinUpdate) {
                 throw new CoolException("缁勬墭閫氱煡妗f洿鏂板け璐�");
             }
 
             //鏇存柊璁㈠崟鏄庣粏鏁版嵁
             OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
-            if(orderDetl == null){
+            if (orderDetl == null) {
                 throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
             }
 
             orderDetl.setWorkQty(orderDetl.getWorkQty() + taskDetl.getAnfme());
             orderDetl.setUpdateTime(new Date());
             boolean orderDetlUpdate = orderDetlService.updateById(orderDetl);
-            if(!orderDetlUpdate){
+            if (!orderDetlUpdate) {
                 throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触");
             }
 
             //鑾峰彇璁㈠崟
             Order order = orderService.getById(taskDetl.getOrderId());
-            if(order == null){
+            if (order == null) {
                 throw new CoolException("璁㈠崟涓嶅瓨鍦�");
             }
 
@@ -375,7 +375,7 @@
         loc.setLocStsId(LocStsType.S.val());
         loc.setUpdateTime(new Date());
         boolean locUpdate = locService.updateById(loc);
-        if(!locUpdate){
+        if (!locUpdate) {
             throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
         }
 
@@ -391,7 +391,7 @@
 
         //鐢熸垚搴撲綅
         Loc loc = this.generateEmptyLoc(param.getTaskType(), param.getLocTypeHeight());
-        if(loc == null) {
+        if (loc == null) {
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
 
@@ -414,7 +414,7 @@
         loc.setLocStsId(LocStsType.S.val());
         loc.setUpdateTime(new Date());
         boolean locUpdate = locService.updateById(loc);
-        if(!locUpdate){
+        if (!locUpdate) {
             throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
         }
 
@@ -424,7 +424,7 @@
     @Override
     public boolean completeTask(Long taskId) {
         Task task = taskService.getById(taskId);
-        if(task == null){
+        if (task == null) {
             throw new CoolException("浠诲姟涓嶅瓨鍦�");
         }
 
@@ -436,12 +436,12 @@
         if (task.getTaskType() < 100) {
             //鍏ュ簱
             task.setTaskSts(TaskStsType.COMPLETE_IN.id);//99.鍏ュ簱瀹屾垚
-        }else {
+        } else {
             //鍑哄簱
             TaskDetl taskDetl = taskDetls.get(0); //TODO  鍑哄簱娴佺▼寰呯‘璁わ紝ESS鍙栬揣鍚庯紝杈撻�佺嚎娴佽浆鍒版壂鐮佸鐘舵��
             if (taskDetl.getWaveId() == null) {
                 task.setTaskSts(TaskStsType.COMPLETE_OUT.id);//199.鍑哄簱瀹屾垚
-            }else {
+            } else {
                 task.setTaskSts(TaskStsType.WAVE_SEED.id);//198.鎾涓�
             }
         }
@@ -458,7 +458,7 @@
     @Transactional(rollbackFor = Exception.class)
     public boolean cancelTask(Long taskId) {
         Task task = taskService.getById(taskId);
-        if(task == null){
+        if (task == null) {
             throw new CoolException("浠诲姟涓嶅瓨鍦�");
         }
 
@@ -471,15 +471,15 @@
             case 54://骞舵澘
             case 57://鐩樼偣
                 loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()));
-                if(loc == null){
+                if (loc == null) {
                     throw new CoolException("搴撲綅涓嶅瓨鍦�");
                 }
-                if(loc.getLocStsId() != LocStsType.S.val()){
+                if (loc.getLocStsId() != LocStsType.S.val()) {
                     throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
                 }
                 loc.setLocStsId(LocStsType.O.val());
                 loc.setUpdateTime(new Date());
-                if(!locService.updateById(loc)){
+                if (!locService.updateById(loc)) {
                     throw new CoolException("搴撲綅鐘舵�佸彉鏇村け璐�");
                 }
                 break;
@@ -489,15 +489,15 @@
             case 107://鐩樼偣
             case 110://绌烘澘
                 loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()));
-                if(loc == null){
+                if (loc == null) {
                     throw new CoolException("搴撲綅涓嶅瓨鍦�");
                 }
-                if(loc.getLocStsId() != LocStsType.R.val()){
+                if (loc.getLocStsId() != LocStsType.R.val()) {
                     throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
                 }
                 loc.setLocStsId(LocStsType.F.val());
                 loc.setUpdateTime(new Date());
-                if(!locService.updateById(loc)){
+                if (!locService.updateById(loc)) {
                     throw new CoolException("搴撲綅鐘舵�佸彉鏇村け璐�");
                 }
 
@@ -509,7 +509,7 @@
 
                     String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
                     WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, taskDetl.getWaveId()));
-                    if(waveDetl == null){
+                    if (waveDetl == null) {
                         continue;
                     }
                     waveDetl.setWorkQty(waveDetl.getWorkQty() - taskDetl.getAnfme());
@@ -521,7 +521,7 @@
                 break;
             case 11://搴撲綅绉昏浆
                 Loc originLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()));
-                if(originLoc == null){
+                if (originLoc == null) {
                     throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
                 }
                 if (originLoc.getLocStsId() != LocStsType.R.val()) {
@@ -529,22 +529,22 @@
                 }
 
                 loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()));
-                if(loc == null){
+                if (loc == null) {
                     throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
                 }
-                if(loc.getLocStsId() != LocStsType.S.val()){
+                if (loc.getLocStsId() != LocStsType.S.val()) {
                     throw new CoolException("鐩爣搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
                 }
 
                 originLoc.setLocStsId(LocStsType.F.val());
                 originLoc.setUpdateTime(new Date());
-                if(!locService.updateById(originLoc)){
+                if (!locService.updateById(originLoc)) {
                     throw new CoolException("搴撲綅鐘舵�佸彉鏇村け璐�");
                 }
 
                 loc.setLocStsId(LocStsType.O.val());
                 loc.setUpdateTime(new Date());
-                if(!locService.updateById(loc)){
+                if (!locService.updateById(loc)) {
                     throw new CoolException("搴撲綅鐘舵�佸彉鏇村け璐�");
                 }
                 break;
@@ -560,7 +560,7 @@
 
         //鍒犻櫎浠诲姟
         boolean removeTask = taskService.removeById(taskId);
-        if(!removeTask){
+        if (!removeTask) {
             throw new CoolException("鍥炴粴浠诲姟澶辫触");
         }
 
@@ -579,14 +579,14 @@
                 //鍏ュ簱鍥炴粴缁勬墭閫氱煡妗�
                 if (task.getTaskType() == 1) {
                     WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getDetlId, taskDetl.getDetlId()).eq(WaitPakin::getBarcode, task.getBarcode()));
-                    if(waitPakin == null){
+                    if (waitPakin == null) {
                         throw new CoolException("缁勬墭閫氱煡妗d笉瀛樺湪");
                     }
 
                     waitPakin.setIoStatus(0);
                     waitPakin.setUpdateTime(new Date());
                     boolean updateWaitPakin = waitPakinService.updateById(waitPakin);
-                    if(!updateWaitPakin){
+                    if (!updateWaitPakin) {
                         throw new CoolException("缁勬墭閫氱煡妗e洖婊氬け璐�");
                     }
                 }
@@ -602,7 +602,7 @@
 
                 //鍒犻櫎鏄庣粏
                 boolean removeDetl = taskDetlService.removeById(taskDetl.getId());
-                if(!removeDetl){
+                if (!removeDetl) {
                     throw new CoolException("鍥炴粴鏄庣粏澶辫触");
                 }
 
@@ -619,7 +619,7 @@
 
                     //鍒犻櫎鏄庣粏鎵╁睍
                     boolean removeField = taskDetlFieldService.removeById(detlField.getId());
-                    if(!removeField){
+                    if (!removeField) {
                         throw new CoolException("鍥炴粴鎵╁睍鏄庣粏澶辫触");
                     }
                 }
@@ -633,7 +633,7 @@
     @Transactional(rollbackFor = Exception.class)
     public boolean pickTask(Long taskId) {
         Task task = taskService.getById(taskId);
-        if(task == null){
+        if (task == null) {
             throw new CoolException("浠诲姟涓嶅瓨鍦�");
         }
 
@@ -647,21 +647,23 @@
 
         //鑾峰彇婧愬簱浣�
         Loc originLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()));
-        if(originLoc == null){
+        if (originLoc == null) {
             throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
         }
 
         //鑾峰彇婧愬簱浣嶉珮搴�
         LocTypeBind locTypeBind = locTypeBindService.getOne(new LambdaQueryWrapper<LocTypeBind>().eq(LocTypeBind::getLocId, originLoc.getId()).in(LocTypeBind::getTypeId, LocBindType.HEIGHT.list()));
-        if(locTypeBind == null){
+        if (locTypeBind == null) {
             throw new CoolException("搴撲綅绫诲瀷涓嶅瓨鍦�");
         }
         LocType locType = locTypeService.getById(locTypeBind.getTypeId());
-        if(locType == null){
+
+        if (locType == null) {
             throw new CoolException("搴撲綅绫诲瀷涓嶅瓨鍦�");
         }
         LocTypeHeightType locTypeHeightType = LocTypeHeightType.get(locType.getFlag());
-        if(locTypeHeightType == null){
+
+        if (locTypeHeightType == null) {
             throw new CoolException("楂樹綆搴撲綅绫诲瀷涓嶅瓨鍦�");
         }
 
@@ -672,27 +674,30 @@
             throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
         }
         TaskDetl taskDetl = taskDetls.get(0);
-
         //鐢熸垚鏂扮殑搴撲綅 !important
-        Loc loc = this.generateLoc(taskType, taskDetl.getMatId(), taskDetl.getBatch(), taskDetl.getUniqueField(), locTypeHeightType.id);
-
-        if(loc == null) {
+//        Loc loc = this.generateLoc(taskType, taskDetl.getMatId(), taskDetl.getBatch(), taskDetl.getUniqueField(), locTypeHeightType.id);
+//        if(loc == null) {
+//            throw new CoolException("娌℃湁绌哄簱浣�");
+//        }
+        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()));
+        if (loc == null) {
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
         //102鎷f枡姝ゅ闇�淇敼涓篧CS_CONTAINER_RECEIVE,瀹氭椂浠诲姟鏌ヨ鍚庯紝鑷姩涓嬪彂鍏ュ簱浠诲姟鑷矱SS
         task.setTaskSts(TaskStsType.WCS_CONTAINER_RECEIVE.id);//1.鐢熸垚鍏ュ簱浠诲姟
         task.setTaskType(taskType);
-        task.setTargetLoc(loc.getLocNo());
+        //鍘熷簱浣嶅彉鐩爣搴撲綅, 鍘熺珯鐐瑰彉鐩爣绔欑偣
+        //todo 闇�纭鍘熺珯鐐逛负绌猴紝璇ユ�庝箞澶勭悊
+        task.setTargetLoc(task.getOriginLoc());
         task.setUpdateTime(new Date());
         if (!taskService.updateById(task)) {
             throw new CoolException("鎷f枡澶辫触");
         }
-
-        //搴撲綅O => S
+        //搴撲綅鐘舵�佹敼涓洪绾﹀叆搴� R => S
         loc.setLocStsId(LocStsType.S.val());
         loc.setUpdateTime(new Date());
         boolean locUpdate = locService.updateById(loc);
-        if(!locUpdate){
+        if (!locUpdate) {
             throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
         }
 
@@ -700,7 +705,7 @@
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public boolean locAdjust(LocAdjustParam param) {
         if (param == null) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
@@ -792,7 +797,7 @@
             throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
         }
 
-        if(targetLoc.getLocStsId() != LocStsType.O.val()){
+        if (targetLoc.getLocStsId() != LocStsType.O.val()) {
             throw new CoolException("鐩爣搴撲綅闈炵┖鐘舵��");
         }
 
@@ -817,7 +822,7 @@
         }
 
         List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, sourceLoc.getId()));
-        if(locDetls.isEmpty()){
+        if (locDetls.isEmpty()) {
             throw new CoolException("婧愬簱浣嶆槑缁嗕笉瀛樺湪");
         }
 
@@ -833,7 +838,7 @@
             taskDetl.setMatId(locDetl.getMatId());
             taskDetl.setMatnr(locDetl.getMatnr());
             boolean taskDetlSave = taskDetlService.save(taskDetl);
-            if(!taskDetlSave){
+            if (!taskDetlSave) {
                 throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触");
             }
 
@@ -846,7 +851,7 @@
                 taskDetlField.setDetlId(taskDetl.getId());
                 taskDetlField.setValue(locDetlField.getValue());
                 boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
-                if(!taskDetlFieldSave){
+                if (!taskDetlFieldSave) {
                     throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
                 }
             }
@@ -856,7 +861,7 @@
         sourceLoc.setLocStsId(LocStsType.R.val());
         sourceLoc.setUpdateTime(new Date());
         boolean sourceLocUpdate = locService.updateById(sourceLoc);
-        if(!sourceLocUpdate){
+        if (!sourceLocUpdate) {
             throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
         }
 
@@ -864,7 +869,7 @@
         targetLoc.setLocStsId(LocStsType.S.val());
         targetLoc.setUpdateTime(new Date());
         boolean targetLocUpdate = locService.updateById(targetLoc);
-        if(!targetLocUpdate){
+        if (!targetLocUpdate) {
             throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
         }
 
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
index 07f0f35..f86ad18 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -73,7 +73,7 @@
 
                 if (taskDetls.isEmpty()) {
                     throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
-                } else { //TODO 鍏堟洿鏂拌鍗曪紝鍚庡垹闄や换鍔℃槑缁嗐�備换鍔′负53鏃讹紝闇�鏇存柊鏄庣粏銆�
+                } else {
                         //浠诲姟绫诲瀷涓�53锛屾牴鎹甒aveId淇敼璁㈠崟鏄庣粏
                         for (TaskDetl taskDetl : taskDetls) {
                             if (taskDetl.getDetlId() == null) {
@@ -214,7 +214,7 @@
                 taskLog.setId(null);
                 if (!taskLogService.save(taskLog)) {
                     throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�");
-                } else { //fixme 鍘嗗彶浠诲姟妗d繚瀛樺悗锛屼慨鏀硅鍗曠姸鎬佷俊鎭悗锛屽啀鍒犻櫎浠诲姟妗�
+                } else {
                     //鏇存柊璁㈠崟淇℃伅
                     taskDetls.forEach(taskDetl -> {
                         if (taskDetl.getDetlId() != null) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
index 953f7f6..fb292e4 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -9,7 +9,6 @@
 import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
 import com.zy.asrs.wms.asrs.service.*;
-import io.jsonwebtoken.lang.Collections;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -17,11 +16,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.Collection;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 @Slf4j
 @Component
@@ -113,11 +109,12 @@
 
 
     /**
+     * // fixme 鑸嶅純
      * 1. 瀹氭椂鎷夊彇闇�瑕佹墽琛屽洖搴撲换鍔″垪琛ㄦ暟鎹紝
      * 2. 鍒犻櫎鍘熷搴撲綅鏄庣粏锛屽師濮嬪簱浣嶇姸鎬佺疆鎴怬.绌哄簱
      * 3.
      */
-    @Scheduled(cron = "0/3 * * * * ? ")
+//    @Scheduled(cron = "0/3 * * * * ? ")
     @Transactional(rollbackFor = Exception.class)
     public void rollbackStock() {
         //鑾峰彇闇�瑕佹墽琛屽洖搴撶殑浠诲姟锛屾洿鏂板簱瀛樹俊鎭�
@@ -328,7 +325,6 @@
     //鎷f枡鍐嶅叆搴�
     private void executeTask53(Task task) {
         Long hostId = task.getHostId();
-        //fixme 灏嗕换鍔″綋鍓�
         Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
         if (loc == null) {
             throw new CoolException("搴撲綅涓嶅瓨鍦�");
@@ -351,37 +347,35 @@
             throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
         }
 
-        //娣诲姞搴撳瓨鏄庣粏
+        //淇敼搴撳瓨鏄庣粏
         for (TaskDetl taskDetl : taskDetls) {
             double anfme = taskDetl.getStock() - taskDetl.getAnfme();
             if (anfme <= 0) {
-                continue;
-            }
+                LocDetl  locdetl =  locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
+                        .eq(LocDetl::getLocId, loc.getId())
+                        .eq(LocDetl::getBatch, taskDetl.getBatch())
+                        .eq(LocDetl::getMatId, taskDetl.getMatId()));
 
-            LocDetl locDetl = new LocDetl();
-            locDetl.setLocId(loc.getId());
-            locDetl.setLocNo(loc.getLocNo());
-            locDetl.setMatId(taskDetl.getMatId());
-            locDetl.setMatnr(taskDetl.getMat$().getMatnr());
-            locDetl.setOrderNo(taskDetl.getOrderNo());
-            locDetl.setBatch(taskDetl.getBatch());
-            locDetl.setAnfme(anfme);
-            locDetl.setHostId(hostId);
-            if (!locDetlService.save(locDetl)) {
-                throw new CoolException("鎻掑叆搴撳瓨鏄庣粏澶辫触");
-            }
+                List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locdetl.getId()).eq(LocDetlField::getHostId, hostId));
+                if (!detlFields.isEmpty()) {
+                    if (!locDetlFieldService.removeBatchByIds(detlFields)) {
+                        throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+                    }
+                }
 
-            //娣诲姞搴撳瓨鏄庣粏鎵╁睍瀛楁
-            List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId));
-            for (TaskDetlField detlField : detlFields) {
-                LocDetlField locDetlField = new LocDetlField();
-                locDetlField.setDetlId(locDetl.getId());
-                locDetlField.setFieldId(detlField.getFieldId());
-                locDetlField.setName(detlField.getName());
-                locDetlField.setValue(detlField.getValue());
-                locDetlField.setHostId(hostId);
-                if (!locDetlFieldService.save(locDetlField)) {
-                    throw new CoolException("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
+                if (!locDetlService.removeById(locdetl)) {
+                    throw new CoolException("搴撳瓨鏄庣粏鍒犻櫎澶辫触!!");
+                }
+            } else {
+                LocDetl  locdetl =  locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
+                        .eq(LocDetl::getLocId, loc.getId())
+                        .eq(LocDetl::getBatch, taskDetl.getBatch())
+                        .eq(LocDetl::getMatId, taskDetl.getMatId()));
+                locdetl.setWorkQty(0.0);
+                locdetl.setAnfme(anfme);
+
+                if (!locDetlService.updateById(locdetl)) {
+                    throw new CoolException("搴撳瓨鏄庣粏鏇存柊澶辫触锛侊紒");
                 }
             }
         }
@@ -423,6 +417,11 @@
         }
     }
 
+    /**
+     * 灏嗗師鏈夊簱瀛樻槑缁嗗垹闄�
+     * 搴撳瓨鐘舵�佽缃负绌哄簱鐘舵��
+     * @param task
+     */
     //鎷f枡鍑哄簱
     private void executeTask103(Task task) {
         Long hostId = task.getHostId();
@@ -432,7 +431,7 @@
         if (loc == null) {
             throw new CoolException("搴撲綅涓嶅瓨鍦�");
         }
-        if (loc.getLocStsId() != LocStsType.R.val()) {
+        if (loc.getLocStsId() != LocStsType.S.val()) {
             throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
         }
         List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml
index 3a0916c..ca5b588 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/TaskMapper.xml
@@ -54,6 +54,9 @@
             SELECT
                 mt.task_no,
                 mt.barcode,
+                mt.task_type,
+                mtt.title,
+                mt.update_time,
                 mtd.wave_no,
                 SUM( mtd.anfme ) anfme,
                 mt.id,
@@ -61,6 +64,7 @@
             FROM
                 man_task mt
                 INNER JOIN man_task_detl mtd ON mt.id = mtd.task_id
+                INNER JOIN man_task_type mtt ON mt.task_type = mtt.id
             GROUP BY
                 mt.task_no,
                 mtd.wave_no
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
index d9f8a0c..ddae67c 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
@@ -92,7 +92,7 @@
             view_man_loc_detl
             WHERE
             deleted = 0
-            AND type_id IN ( SELECT type_id FROM man_loc_area_type WHERE parent_id = 7 OR id = 7 )
+            AND type_id IN ( SELECT type_id FROM man_loc_area_type WHERE parent_id = #{typeId} OR id = #{typeId} )
         ) t
         WHERE 1 = 1
         <if test="matnr != null and matnr != ''">

--
Gitblit v1.9.1