From 83b51a5a0774ea8ecb9a06304af3b956a21307c8 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期六, 08 三月 2025 09:06:55 +0800
Subject: [PATCH] CUT库条码T开头,截取后10位

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java |  182 ++++++++++++++++++++++++--------------------
 1 files changed, 99 insertions(+), 83 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
index f41b1c5..7ddd363 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
@@ -20,10 +20,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 @Component
 public class TaskWaveTimer {
@@ -45,8 +42,13 @@
     @Autowired
     private DictService dictService;
 
-//    @Scheduled(cron = "0/3 * * * * ? ")
-    @Transactional
+    /**
+     * modifty锛�
+     * original : fetch datasource of task type on WCS_EXECUTE_OUT_TASK_DONE
+     * now: Fetch datasource of task type  on WCS_EXECUTE_OUT_ARRIVED, After completing the task and for setting  the task type equal to GENERATE_WAVE_SEED
+     */
+    @Scheduled(cron = "0/15 * * * * ? ")
+    @Transactional(rollbackFor = Exception.class)
     public void taskWave() {
         InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
         try {
@@ -58,90 +60,104 @@
             if (!autoCreateWaveSeed.equals("true")) {
                 return;
             }
+            //鏌ヨ鐘舵�佷负RCS浠诲姟瀹屾垚鎵�鏈変换鍔″崟鎹�
+//            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WAVE_SEED.id));
+            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id));
+            HashSet<String> sycMatnrs = new HashSet<>();
+            if (taskList.isEmpty()) {
+//                throw new CoolException("娌℃湁鍙挱绉嶄换鍔★紒锛�");
+            } else {
+                for (Task task : taskList) {
+                    Long hostId = task.getHostId();
 
-            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WAVE_SEED.id));
-            for (Task task : taskList) {
-                Long hostId = task.getHostId();
-
-                List<TaskDetl> taskDetls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, task.getId()).eq(TaskDetl::getHostId, hostId));
-                if (taskDetls.isEmpty()) {
-                    continue;
-                }
-
-                for (TaskDetl taskDetl : taskDetls) {
-                    //鍒嗛厤璁㈠崟
-                    Long waveId = taskDetl.getWaveId();
-                    List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, waveId));
-                    if (list.isEmpty()) {
+                    List<TaskDetl> taskDetls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, task.getId()).eq(TaskDetl::getHostId, hostId));
+                    if (taskDetls.isEmpty()) {
                         continue;
                     }
 
-                    ArrayList<Long> orderIds = new ArrayList<>();
-                    for (Order order : list) {
-                        orderIds.add(order.getId());
+                    for (TaskDetl taskDetl : taskDetls) {
+                        //鍒嗛厤璁㈠崟
+                        Long waveId = taskDetl.getWaveId();
+                        //鍚屼竴涓墿鏂欏彧娣诲姞涓�娆℃挱绉嶄换鍔�
+                        if(sycMatnrs.contains(taskDetl.getMatnr())) {
+                            continue;
+                        }
+                        sycMatnrs.add(taskDetl.getMatnr());
+
+                        List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, waveId));
+                        if (list.isEmpty()) {
+                            continue;
+                        }
+
+                        ArrayList<Long> orderIds = new ArrayList<>();
+                        for (Order order : list) {
+                            orderIds.add(order.getId());
+                        }
+
+                        String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
+                        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>()
+                                .in(OrderDetl::getOrderId, orderIds)
+                                .eq(OrderDetl::getStockIndex, matUniqueKey)
+                                .eq(OrderDetl::getHostId, hostId));
+                        if(orderDetls.isEmpty()){
+                            throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+                        }
+
+                        Double anfme = taskDetl.getAnfme();
+                        for (OrderDetl orderDetl : orderDetls) {
+                            //fixme 浣滀笟涓暟閲忚皟鏁存斁鑷筹紝鐢熸垚鍑哄簱浠诲姟鎴愬姛鍚�
+                            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D);
+                            if (issued <= 0.0D) { continue; }
+                            if (anfme <= 0.0D) { break; }
+
+                            double workQty = issued;
+                            if(anfme - issued < 0){
+                                workQty = anfme;
+                            }
+                            anfme -= workQty;
+
+                            orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
+//
+                            //fixme 鐢熸垚娉㈡鎾鏁版嵁鏃讹紝涓嶈嚜鍔ㄦ坊鍔犵珯鐐圭粦瀹氾紝绔欑偣缁戝畾璋冩暣鑷冲嚭搴撶粦瀹氭挱绉嶅簱浣嶆椂鏇存柊
+//                            CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
+//                            if (cacheSite == null) {
+//                                throw new CoolException("缂撳瓨绔欑┖闂翠笉瀛樺湪");
+//                            }
+
+                            WaveSeed waveSeed = new WaveSeed();
+//                            waveSeed.setSiteId(cacheSite.getId());
+//                            waveSeed.setSiteNo(cacheSite.getSiteNo());
+                            waveSeed.setOrderNo(orderDetl.getOrderNo());
+                            waveSeed.setOrderId(orderDetl.getOrderId());
+                            waveSeed.setOrderDetlId(orderDetl.getId());
+                            waveSeed.setWaveId(taskDetl.getWaveId()).setWaveNo(taskDetl.getWaveNo());
+                            waveSeed.setTaskDetlId(taskDetl.getId());
+                            //涓烘弧瓒冲綋鍓嶉渶姹傦紝缁忕‘璁わ紝鏀规垚璁㈠崟鏁伴噺
+                            waveSeed.setAnfme(orderDetl.getAnfme());
+                            waveSeed.setWorkQty(0D);
+                            waveSeed.setMatnr(taskDetl.getMatnr());
+                            waveSeed.setBatch(taskDetl.getBatch());
+                            waveSeed.setFieldParams(JSON.toJSONString(taskDetl.getUniqueField()));
+                            waveSeed.setHostId(hostId);
+                            if (!waveSeedService.save(waveSeed)) {
+                                throw new CoolException("娉㈡鎾鍒涘缓澶辫触");
+                            }
+//                            cacheSite.setOrderId(orderDetl.getOrderId());
+//                            cacheSite.setOrderNo(orderDetl.getOrderNo());
+//                            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
+//                            cacheSite.setUpdateTime(new Date());
+//                            if (!cacheSiteService.updateById(cacheSite)) {
+//                                throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
+//                            }
+
+                        }
                     }
 
-                    String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
-                    List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>()
-                            .in(OrderDetl::getOrderId, orderIds)
-                            .eq(OrderDetl::getStockIndex, matUniqueKey)
-                            .eq(OrderDetl::getHostId, hostId));
-                    if(orderDetls.isEmpty()){
-                        throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+                    task.setTaskSts(TaskStsType.GENERATE_WAVE_SEED.id);
+                    task.setUpdateTime(new Date());
+                    if (!taskService.updateById(task)) {
+                        throw new CoolException("浠诲姟鏇存柊澶辫触");
                     }
-
-                    Double anfme = taskDetl.getAnfme();
-                    for (OrderDetl orderDetl : orderDetls) {
-                        double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D);
-                        if (issued <= 0.0D) { continue; }
-                        if (anfme <= 0.0D) { break; }
-
-                        double workQty = issued;
-                        if(anfme - issued < 0){
-                            workQty = anfme;
-                        }
-                        anfme -= workQty;
-
-                        orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
-
-                        CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
-                        if (cacheSite == null) {
-                            throw new CoolException("缂撳瓨绔欑┖闂翠笉瀛樺湪");
-                        }
-
-                        WaveSeed waveSeed = new WaveSeed();
-                        waveSeed.setSiteId(cacheSite.getId());
-                        waveSeed.setSiteNo(cacheSite.getSiteNo());
-                        waveSeed.setOrderNo(orderDetl.getOrderNo());
-                        waveSeed.setOrderId(orderDetl.getOrderId());
-                        waveSeed.setOrderDetlId(orderDetl.getId());
-                        waveSeed.setTaskDetlId(taskDetl.getId());
-                        waveSeed.setAnfme(taskDetl.getAnfme());
-                        waveSeed.setWorkQty(0D);
-                        waveSeed.setMatnr(taskDetl.getMatnr());
-                        waveSeed.setBatch(taskDetl.getBatch());
-                        waveSeed.setFieldParams(JSON.toJSONString(taskDetl.getUniqueField()));
-                        waveSeed.setHostId(hostId);
-                        if (!waveSeedService.save(waveSeed)) {
-                            throw new CoolException("娉㈡鎾鍒涘缓澶辫触");
-                        }
-
-                        cacheSite.setOrderId(orderDetl.getOrderId());
-                        cacheSite.setOrderNo(orderDetl.getOrderNo());
-                        cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
-                        cacheSite.setUpdateTime(new Date());
-                        if (!cacheSiteService.updateById(cacheSite)) {
-                            throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
-                        }
-
-                    }
-
-                }
-
-                task.setTaskSts(TaskStsType.COMPLETE_OUT.id);
-                task.setUpdateTime(new Date());
-                if (!taskService.updateById(task)) {
-                    throw new CoolException("浠诲姟鏇存柊澶辫触");
                 }
             }
         } catch (Exception e) {

--
Gitblit v1.9.1