From 0a3a59432a0ff8d4169ad7484250a0a0d5bed1f9 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 09 一月 2025 19:50:58 +0800
Subject: [PATCH] # 1. 波次预览重复问题     2. PDA组拖超过3个物料后,组拖按钮被遮挡     3. 平库入库物料ID为空     4. PDA出库成功后,界面数据重置,避免重复操作    5. 入库单历史档,按时间倒序排列

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java  |    3 
 zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue                |   16 +++--
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java               |   65 ++++++++++-----------
 zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml                   |   17 ++++-
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java |   38 ++++++++++++
 5 files changed, 92 insertions(+), 47 deletions(-)

diff --git a/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue b/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue
index c40dcfe..5e20cc2 100644
--- a/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue
+++ b/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue
@@ -212,8 +212,8 @@
                     dataTmp.locNo = null;
                     dataTmp.locDetlId = null;
                     dataTmp.anfme = item.anfme;
-                    dataTmp.typeId = val.typeId;
-                    dataTmp.workQty = val.workQty;
+                    dataTmp.typeId = item.typeId;
+                    dataTmp.workQty = item.workQty;
                     dataTmp.key = idx;
                     dataTmp.operationPort = defaultOperationPort;
 
@@ -248,8 +248,8 @@
                         dataTmp.locId = null;
                         dataTmp.locNo = null;
                         dataTmp.locDetlId = null;
-                        dataTmp.typeId = val.typeId;
-                        dataTmp.workQty = val.workQty;
+                        dataTmp.typeId = item.typeId;
+                        dataTmp.workQty = item.workQty;
                         dataTmp.anfme = isused;
                         dataTmp.key = idx;
                         dataTmp.operationPort = defaultOperationPort;
@@ -344,10 +344,12 @@
                 <template #bodyCell="{ column, text, record, index }">
                     <template v-if="column.dataIndex === 'locNo'">
                         <div v-if="record.locId != null && record.anfme > 0">
-                            <!-- <a-tag color="green">{{ record.locNo }}</a-tag> -->
-                            <a-select v-model:value="record.locId" :options="record.otherLocs"
+<!--                             <a-tag color="green">{{ record.locNo }}</a-tag>-->
+                            <a-select v-model:value="record.locNo" :options="record.otherLocs"
                                 :fieldNames="{ label: 'locNo', value: 'locId' }"
-                                @change="handleOtherLocChange(index, record)"></a-select>
+                                @change="handleOtherLocChange(index, record)">
+
+                            </a-select>
                         </div>
                         <div v-else>
                             <a-tag color="red">搴撳瓨涓嶈冻</a-tag>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
index 2a9ac23..9c037ec 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
@@ -53,7 +53,6 @@
         String condition = map.getOrDefault("condition", "").toString();
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<OrderLog, BaseParam> pageParam = new PageParam<>(baseParam, OrderLog.class);
-//        QueryWrapper<OrderLog> wrapper = pageParam.buildWrapper(true);
         QueryWrapper<OrderLog> wrapper = new QueryWrapper<>();
 
         ArrayList<Long> types = new ArrayList<>();
@@ -81,7 +80,7 @@
                 }
             }
         }
-
+        wrapper.orderByDesc("create_time");
         return R.ok().add(orderLogService.page(pageParam, wrapper));
     }
 
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 6a4b7d9..2a97b80 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
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mysql.cj.util.StringUtils;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.dto.*;
 import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto;
@@ -24,6 +25,7 @@
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 鍑哄簱绠$悊
@@ -551,7 +553,7 @@
         sortParams.add(sortParam);
 
         List<MergePreviewResultDto> resultDtos = new ArrayList<>();
-
+        //浼樺厛鏌ヨ骞冲簱鏁版嵁
         param.forEach(pars -> {
             List<MergePreviewResultLocDto> locDtos = new ArrayList<>();
             MergePreviewResultDto resultDto = new MergePreviewResultDto();
@@ -600,15 +602,9 @@
 
                 resultDtos.add(resultDto);
 
-            } else {
-                resultDto.sync(pars);
-                resultDto.setLocs(new ArrayList<>());
-                resultDto.setOrderIds(pars.getOrderIds());
-                resultDto.setAnfme(pars.getAnfme());
-                resultDtos.add(resultDto);
             }
         });
-
+        //骞冲簱鏌ヨ瀹屾垚鍚庯紝鍐嶆煡璇CU
         for (MergePreviewDto dto : param) {
             Double anfme = dto.getAnfme() - dto.getWorkQty();
             //鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞�
@@ -647,7 +643,7 @@
                 locDto.setLocId(locDetl.getLocId());
                 locDto.setLocNo(locDetl.getLocNo());
                 locDto.setLocDetlId(locDetl.getId());
-
+                locDto.setTypeId(LocAreaTypeSts.LOC_AREA_TYPE_UTC.id);
                 locDtos.add(locDto);
                 if (anfme - locDetl.getAnfme() < 0) {
                     locDto.setAnfme(anfme);
@@ -671,6 +667,7 @@
                 MergePreviewResultLocDto locDto = new MergePreviewResultLocDto();
                 locDto.setLocId(locDetl.getLocId());
                 locDto.setLocNo(locDetl.getLocNo());
+                locDto.setTypeId(LocAreaTypeSts.LOC_AREA_TYPE_UTC.id);
                 locDto.setLocDetlId(locDetl.getId());
                 locDto.setAnfme(locDetl.getAnfme());
                 otherLocDtos.add(locDto);
@@ -1014,9 +1011,13 @@
         //TUC鏁版嵁婧�
         List<OrderOutMergeParam> tucOrders = new ArrayList<>();//listMap.get(LocAreaTypeSts.LOC_AREA_TYPE_UTC);
         //鎸夊簱浣嶇被鍨嬪垎绫�
-        Map<Long, List<OrderOutMergeParam>> listMap = params.stream().collect(Collectors.groupingBy(OrderOutMergeParam::getTypeId));
-
+        //fixme 濡傛灉搴撳瓨涓嶈冻鏃讹紝鐢熸垚浠诲姟妗� 杩囨护鎺夋病鏈夊簱浣嶄俊鎭殑鏁版嵁銆傛壘鍚涙澃纭
+        List<OrderOutMergeParam> mergeParam = params.stream().filter(par -> {
+            return !StringUtils.isNullOrEmpty(par.getLocNo());
+        }).collect(Collectors.toList());
         //鏁版嵁鍒嗙被 1.骞冲簱鏁版嵁  2. TUC鏁版嵁
+        Map<Long, List<OrderOutMergeParam>> listMap = mergeParam.stream().collect(Collectors.groupingBy(OrderOutMergeParam::getTypeId));
+
         listMap.keySet().forEach(key -> {
             if (key == LocAreaTypeSts.LOC_AREA_TYPE_FLAT.id) {
                 flatOrders.addAll(listMap.get(key));
@@ -1045,9 +1046,7 @@
      */
     private void outStockByTUC(List<OrderOutMergeParam> tucOrders, Wave wave) {//123
         Map<Long, List<OrderOutMergeDto>> map = checkLoc(tucOrders, wave);
-        if (!Objects.isNull(map)) {
-            return;
-        }
+
         for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) {
             Long locId = entry.getKey();
             List<OrderOutMergeDto> list = entry.getValue();
@@ -1232,12 +1231,12 @@
             throw new CoolException("閫氶亾鍙傛暟涓嶈兘涓虹┖");
         }
 
-        for (String channel : channels) {
-            long count = cacheSiteService.count(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getChannel, channel).ne(CacheSite::getSiteStatus, 0));
-            if (count > 0) {
-                throw new CoolException(channel + "閫氶亾宸茬粡鍒嗛厤娉㈡");
-            }
-        }
+//        for (String channel : channels) {
+//            long count = cacheSiteService.count(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getChannel, channel).ne(CacheSite::getSiteStatus, 0));
+//            if (count > 0) {
+//                throw new CoolException(channel + "閫氶亾宸茬粡鍒嗛厤娉㈡");
+//            }
+//        }
 
 
         List<Long> orderIds = param.getOrderIds();
@@ -1290,19 +1289,19 @@
                 throw new CoolException("璁㈠崟鍙嶅啓娉㈡澶辫触");
             }
 
-            List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).in(CacheSite::getChannel, channels).orderBy(true, true, CacheSite::getChannel));
-            if (cacheSites.isEmpty()) {
-                throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�");
-            }
-
-            CacheSite cacheSite = cacheSites.get(0);
-            cacheSite.setOrderId(order.getId());
-            cacheSite.setOrderNo(order.getOrderNo());
-            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
-            cacheSite.setUpdateTime(new Date());
-            if (!cacheSiteService.updateById(cacheSite)) {
-                throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
-            }
+//            List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).in(CacheSite::getChannel, channels).orderBy(true, true, CacheSite::getChannel));
+//            if (cacheSites.isEmpty()) {
+//                throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�");
+//            }
+//
+//            CacheSite cacheSite = cacheSites.get(0);
+//            cacheSite.setOrderId(order.getId());
+//            cacheSite.setOrderNo(order.getOrderNo());
+//            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
+//            cacheSite.setUpdateTime(new Date());
+//            if (!cacheSiteService.updateById(cacheSite)) {
+//                throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
+//            }
         }
 
         for (Map.Entry<String, List<OrderDetl>> entry : map.entrySet()) {
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 0c66545..e0194db 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
@@ -39,6 +39,8 @@
     @Autowired
     private OrderService orderService;
     @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
     private OrderLogService orderLogService;
     @Autowired
     private LocService locService;
@@ -52,6 +54,12 @@
     private PickSheetService pickSheetService;
     @Autowired
     private PickSheetDetlService pickSheetDetlService;
+    @Autowired
+    private MatService matService;
+    @Autowired
+    private WaveService waveService;
+    @Autowired
+    private WaveDetlService waveDetlService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -140,12 +148,16 @@
             locDetl.setAnfme(pakin.getAnfme());
             locDetl.setBatch(pakin.getBatch());
             locDetl.setMatId(pakin.getMatnrId$());
-            ;
             locDetl.setCreateTime(new Date());
             locDetl.setOrderNo(pakin.getOrderNo());
             locDetl.setLocNo(loc.getLocNo());
             locDetl.setLocId(loc.getId());
             locDetl.setMatnr(pakin.getMatnr());
+            Mat one = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, pakin.getMatnr()));
+            if (!Objects.isNull(one)) {
+                throw new CoolException("褰撳墠鐗╂枡涓嶅瓨鍦紒锛�");
+            }
+            locDetl.setMatId(one.getId());
             locDetl.setMemo(pakin.getMemo());
             locDetl.setUpdateTime(new Date());
             if (!locDetlService.saveOrUpdate(locDetl)) {
@@ -167,6 +179,7 @@
         if (!waitPakinService.removeBatchByIds(waitPakins)) {
             throw new CoolException("缁勬嫋妗e垹闄ゅけ璐ワ紒锛�");
         }
+
         //閫氳繃缁勬嫋璁㈠崟ID鑾峰彇璁㈠崟锛屽苟鍒犻櫎鍘熷崟鎹紝鍔犲叆鍗曟嵁鍘嗗彶妗�
         List<Long> list = waitPakins.stream().map(WaitPakin::getOrderId).collect(Collectors.toList());
         List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getId, list));
@@ -210,6 +223,9 @@
     @Transactional(rollbackFor = Exception.class)
     public boolean confirmFlatSheet(String code) {
         PickSheet pickSheet = pickSheetService.getOne(new LambdaQueryWrapper<PickSheet>().eq(PickSheet::getPickNo, code));
+        if (Objects.isNull(pickSheet)) {
+            throw new CoolException("鎷h揣鍗曚笉瀛樺湪锛侊紒");
+        }
         if (pickSheet.getStatus() == 1) {
             //鐘舵�佷慨鏀逛负锛� 宸茶浆鍘嗗彶妗�
             pickSheet.setStatus(3);
@@ -262,6 +278,26 @@
                 }
             }
         });
+
+        //鍒犻櫎娉㈡鍙婂搴旀槑缁嗕俊鎭�
+        if (!waveService.remove(new LambdaQueryWrapper<Wave>().eq(Wave::getId, pickSheet.getWaveId()))) {
+            throw new CoolException("娉㈡鍒楄〃鍗曟嵁鍒犻櫎澶辫触锛侊紒");
+        }
+
+        if (!waveDetlService.remove(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, pickSheet.getWaveId()))) {
+            throw new CoolException("娉㈡鏄庣粏鍒楄〃鍒犻櫎澶辫触锛侊紒");
+        }
+
+        List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, pickSheet.getWaveId()));
+        List<Long> list = orders.stream().map(Order::getId).collect(Collectors.toList());
+        boolean remove = orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, list));
+        if (!remove) {
+            throw new CoolException("鍘熷璁㈠崟鏄庣粏鍒犻櫎澶辫触锛侊紒");
+        }
+        if (orderService.remove(new LambdaQueryWrapper<Order>().in(Order::getId, list))) {
+            throw new CoolException("鍘熷璁㈠崟鍒犻櫎澶辫触锛侊紒");
+        }
+
         return true;
     }
 
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 149b56b..d9f8a0c 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
@@ -3,10 +3,19 @@
 <mapper namespace="com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper">
 
     <select id="queryStock" resultType="map">
-        select * from view_man_loc_detl ld
-        where matnr = #{matnr}
-        and freeze = 0
-        and batch = #{batch}
+        SELECT * FROM
+        (
+        SELECT id, loc_id, loc_no, mat_id, IFNULL(type_id, 4) AS type_id, work_qty, matnr, order_no, batch, anfme, host_id, memo,deleted, freeze
+        FROM
+        view_man_loc_detl
+        ) t
+        WHERE t.deleted = 0 AND t.freeze = 0
+        <if test="matnr != null and matnr != ''">
+            AND t.matnr = #{matnr}
+        </if>
+        <if test="batch != null and batch != ''">
+            AND t.batch = #{batch}
+        </if>
         <if test="param!=null and param.size()>0">
             <foreach item="item" collection="param" index="index">
                 <if test="item.value!=null and item.value != ''">

--
Gitblit v1.9.1