From c477dcc0ab4fe679f682f342d1ac8725fcb4d852 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 10 九月 2024 13:37:50 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 106 insertions(+), 8 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 295462d..ba2a50e 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
@@ -52,7 +52,12 @@
     private OperationPortService operationPortService;
     @Autowired
     private OrderUtils orderUtils;
-
+    @Autowired
+    private OrderNoRuleService orderNoRuleService;
+    @Autowired
+    private WaveService waveService;
+    @Autowired
+    private WaveDetlService waveDetlService;
 
     /**
      * 鍑哄簱
@@ -330,6 +335,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 +345,11 @@
 
             if (!loc.getLocStsId().equals(LocStsType.F.val())) {
                 continue;
+            }
+
+            OperationPort operationPort = operationPortService.getById(operationPortId);
+            if (operationPort == null) {
+                throw new CoolException("浣滀笟鍙d笉瀛樺湪");
             }
 
 
@@ -349,7 +361,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) {
@@ -370,6 +382,7 @@
 
                 TaskDetl taskDetl = new TaskDetl();
                 taskDetl.sync(locDetl);
+                taskDetl.setId(null);
                 taskDetl.setTaskId(task.getId());
                 taskDetl.setAnfme(dto.getAnfme());
                 taskDetl.setStock(locDetl.getAnfme());
@@ -384,6 +397,7 @@
                 for (LocDetlField locDetlField : locDetlFields) {
                     TaskDetlField taskDetlField = new TaskDetlField();
                     taskDetlField.sync(locDetlField);
+                    taskDetlField.setId(null);
                     taskDetlField.setDetlId(taskDetl.getId());
                     boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
                     if(!taskDetlFieldSave){
@@ -588,6 +602,7 @@
 
             List<OrderDetl> orderDetlList = detlMap.get(matUniqueKey);
             for (OrderDetl orderDetl : orderDetlList) {
+                orderDetl = orderDetlService.getById(orderDetl);
                 double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D);
                 if (issued <= 0D) {
                     continue;
@@ -597,19 +612,18 @@
                 orderOutMergeDto.sync(param);
                 orderOutMergeDto.setOrderDetlId(orderDetl.getId());
 
-                Double anfme = orderDetl.getAnfme();
                 Double updateWorkQty = null;
 
-                double diffAnfme = requireAnfme - anfme;
-                if (diffAnfme >= 0) {
-                    orderOutMergeDto.setAnfme(anfme);
-                    updateWorkQty = anfme;
-                    requireAnfme -= anfme;
+                if (requireAnfme > issued) {
+                    orderOutMergeDto.setAnfme(issued);
+                    updateWorkQty = issued;
+                    requireAnfme -= issued;
                 }else {
                     orderOutMergeDto.setAnfme(requireAnfme);
                     updateWorkQty = requireAnfme;
                     requireAnfme -= requireAnfme;
                 }
+
                 orderOutMergeDtos.add(orderOutMergeDto);
 
                 orderUtils.updateWorkQty(orderDetl.getId(), updateWorkQty);
@@ -680,6 +694,7 @@
 
                 TaskDetl taskDetl = new TaskDetl();
                 taskDetl.sync(locDetl);
+                taskDetl.setId(null);
                 taskDetl.setTaskId(task.getId());
                 taskDetl.setAnfme(merge.getAnfme());
                 taskDetl.setStock(locDetl.getAnfme());
@@ -694,6 +709,7 @@
                 for (LocDetlField locDetlField : locDetlFields) {
                     TaskDetlField taskDetlField = new TaskDetlField();
                     taskDetlField.sync(locDetlField);
+                    taskDetlField.setId(null);
                     taskDetlField.setDetlId(taskDetl.getId());
                     boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
                     if(!taskDetlFieldSave){
@@ -715,4 +731,86 @@
 
     }
 
+    @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