From a1a7c03eae40f4b0344fce652e1a240cf5283624 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 13 九月 2024 16:37:42 +0800
Subject: [PATCH] #合并订单出库,统一转波次出库前最新代码

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java |  170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 165 insertions(+), 5 deletions(-)

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 faa4b8d..d6be710 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
@@ -4,8 +4,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.dto.*;
+import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto;
+import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType;
 import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
-import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
 import com.zy.asrs.wms.asrs.entity.param.*;
 import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.service.*;
@@ -52,7 +53,16 @@
     private OperationPortService operationPortService;
     @Autowired
     private OrderUtils orderUtils;
-
+    @Autowired
+    private OrderNoRuleService orderNoRuleService;
+    @Autowired
+    private WaveService waveService;
+    @Autowired
+    private WaveDetlService waveDetlService;
+    @Autowired
+    private CacheSiteService cacheSiteService;
+    @Autowired
+    private WaveSeedService waveSeedService;
 
     /**
      * 鍑哄簱
@@ -330,6 +340,8 @@
             Long locId = entry.getKey();
             List<OrderOutBatchPreviewDto> previewDtos = entry.getValue();
             Boolean all = outUtils.isAllForPreview(locId, previewDtos);
+            OrderOutBatchPreviewDto previewDto = previewDtos.get(0);
+            Long operationPortId = previewDto.getOperationPort();
 
             Loc loc = locService.getById(locId);
             if (loc == null) {
@@ -338,6 +350,11 @@
 
             if (!loc.getLocStsId().equals(LocStsType.F.val())) {
                 continue;
+            }
+
+            OperationPort operationPort = operationPortService.getById(operationPortId);
+            if (operationPort == null) {
+                throw new CoolException("浣滀笟鍙d笉瀛樺湪");
             }
 
 
@@ -349,7 +366,7 @@
             task.setTaskType(taskType);
             task.setIoPri(workService.generateIoPri(taskType));
             task.setOriginLoc(loc.getLocNo());
-            task.setTargetSite("A");
+            task.setTargetSite(operationPort.getFlag());
             task.setBarcode(loc.getBarcode());
             boolean res = taskService.save(task);
             if (!res) {
@@ -523,10 +540,12 @@
     }
 
     @Transactional
-    public void orderOutMerge(List<OrderOutMergeParam> params) {
-        if(params == null){
+    public void orderOutMerge(OrderOutMergeParamDto dto) {
+        if(dto == null){
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
         }
+
+        List<OrderOutMergeParam> params = dto.getList();
 
         if (params.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
@@ -633,6 +652,7 @@
             map.put(orderOutMergeDto.getLocId(), list);
         }
 
+        List<TaskDetl> taskDetls = new ArrayList<>();
         for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) {
             Long locId = entry.getKey();
             List<OrderOutMergeDto> list = entry.getValue();
@@ -704,6 +724,8 @@
                         throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
                     }
                 }
+
+                taskDetls.add(taskDetl);
             }
 
             //搴撲綅F => R
@@ -716,6 +738,144 @@
 
         }
 
+        if (dto.getWaveId() != null) {
+            HashMap<Long, List<TaskDetl>> orderMap = new HashMap<>();
+            for (TaskDetl taskDetl : taskDetls) {
+                Long orderId = taskDetl.getOrderId();
+
+                List<TaskDetl> list = orderMap.get(orderId);
+                if (list == null) {
+                    list = new ArrayList<>();
+                }
+
+                list.add(taskDetl);
+                orderMap.put(orderId, list);
+            }
+
+            for (Map.Entry<Long, List<TaskDetl>> entry : orderMap.entrySet()) {
+                List<TaskDetl> list = entry.getValue();
+
+                List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id));
+                if (cacheSites.isEmpty()) {
+                    throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�");
+                }
+                CacheSite cacheSite = cacheSites.get(0);
+
+                Long orderId = null;
+                String orderNo = null;
+                for (TaskDetl taskDetl : list) {
+                    orderId = taskDetl.getOrderId();
+                    orderNo = taskDetl.getOrderNo();
+                    Long orderDetlId = taskDetl.getDetlId();
+
+                    WaveSeed waveSeed = new WaveSeed();
+                    waveSeed.setSiteId(cacheSite.getId());
+                    waveSeed.setSiteNo(cacheSite.getSiteNo());
+                    waveSeed.setOrderDetlId(orderDetlId);
+                    waveSeed.setTaskDetlId(taskDetl.getId());
+                    waveSeed.setAnfme(taskDetl.getAnfme());
+                    waveSeed.setWorkQty(0D);
+                    if (!waveSeedService.save(waveSeed)) {
+                        throw new CoolException("娉㈡鎾鍒涘缓澶辫触");
+                    }
+                }
+
+                if(orderId == null){
+                    continue;
+                }
+
+                cacheSite.setOrderId(orderId);
+                cacheSite.setOrderNo(orderNo);
+                cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
+                cacheSite.setUpdateTime(new Date());
+                if (!cacheSiteService.updateById(cacheSite)) {
+                    throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
+                }
+
+            }
+        }
+
+    }
+
+    @Transactional
+    public void generateWave(List<Long> orderIds) {
+        if (orderIds == null) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        if (orderIds.isEmpty()) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        List<Order> orderList = orderService.listByIds(orderIds);
+        if (orderList.isEmpty()) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+        }
+
+        for (Order order : orderList) {
+            if (order.getWaveId() != null) {
+                throw new CoolException("褰撳墠璁㈠崟涓凡缁忕敓鎴愭尝娆�");
+            }
+        }
+
+        String waveNo = orderNoRuleService.getOrderNo(3);
+        Wave wave = new Wave();
+        wave.setWaveNo(waveNo);
+        wave.setWaveType(0);
+        if (!waveService.save(wave)) {
+            throw new CoolException("娉㈡鐢熸垚澶辫触");
+        }
+
+        for (Order order : orderList) {
+            WaveDetl waveDetl = new WaveDetl();
+            waveDetl.setWaveNo(waveNo);
+            waveDetl.setWaveId(wave.getId());
+            waveDetl.setOrderId(order.getId());
+            waveDetl.setOrderNo(order.getOrderNo());
+            if (!waveDetlService.save(waveDetl)) {
+                throw new CoolException("娉㈡鏄庣粏鐢熸垚澶辫触");
+            }
+
+            order.setWaveId(wave.getId());
+            order.setWaveNo(waveNo);
+            order.setUpdateTime(new Date());
+            if (!orderService.updateById(order)) {
+                throw new CoolException("璁㈠崟鍙嶅啓娉㈡澶辫触");
+            }
+        }
+
+    }
+
+    @Transactional
+    public void cancelWave(List<Long> waveIds) {
+        if (waveIds == null) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        if (waveIds.isEmpty()) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        List<Wave> waves = waveService.listByIds(waveIds);
+        if (waves.isEmpty()) {
+            throw new CoolException("娉㈡涓嶅瓨鍦�");
+        }
+
+        for (Wave wave : waves) {
+            List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId()));
+            for (WaveDetl waveDetl : waveDetls) {
+                Order order = orderService.getById(waveDetl.getOrderId());
+                order.setWaveId(null);
+                order.setWaveNo(null);
+                if (!orderService.updateById(order)) {
+                    throw new CoolException("璁㈠崟鍙嶅啓澶辫触");
+                }
+
+                waveDetlService.removeById(waveDetl.getId());
+            }
+
+            waveService.removeById(wave.getId());
+        }
 
     }
 

--
Gitblit v1.9.1