From d0226747665355acecd5b4f2b5c0beb020586729 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 17 一月 2025 15:37:32 +0800
Subject: [PATCH] # 23. PDA拣货单据,勾选或点击确认按钮后,完成当前单据 (已完成) 24. PDA出库成功后,界面数据重置,避免重复操作  (已修复) 25. PDA接口请求,添加一个Loading遮档  (已修复) 27. 非平库单据,在平库可做入库操作  (已修复) 28. 平库已组拖数据,组拖完成后依然可组拖  (已修复) 29. 平库入库后,订单明细没有添加(已修复) 30. 平库入库后,单据类型没有修改(已修复) 31. 没有绑定播种位,不能进行播种,前后端都需加判定(已修复) 33. 平库入库未修改入库已完成数量(已修复) 34. cacheSite缓存站点逻辑需重新梳理,入库生成波次时(已完成) 35. PDA添加发货确认,默认全选 (已修复) 36. 大屏获取任务时,是由容器到达的拖盘码确认通知 (已修复) 37. 拣货单序号不显示 问题修复 (已修复) 42. pda发货确认,添加不同颜色区分是否全部完成拣货,绿色全部拣货完成,红色完成部分拣货(已修复) 43. CTU入库完成后,订单明细没有删除,执行中数量清空(已修复) 44. 平库入库完成后,历史档明细完成数量没有更新 (已修复) 45. PDA料号不显示  (已修复) 46. 发货完成后,波次管理数据未加入历史档 (已修复)

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java |  344 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 210 insertions(+), 134 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java
index 35bf696..7fe3bc7 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java
@@ -1,37 +1,21 @@
 package com.zy.asrs.wms.apis.wcs.schedule;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.zy.asrs.framework.exception.CoolException;
-import com.zy.asrs.wms.apis.wcs.entity.domain.Constant;
-import com.zy.asrs.wms.apis.wcs.entity.request.ConveyorStarParam;
-import com.zy.asrs.wms.apis.wcs.entity.request.PublishTasksParam;
-import com.zy.asrs.wms.apis.wcs.entity.request.TaskDescribe;
-import com.zy.asrs.wms.apis.wcs.entity.request.TaskParam;
-import com.zy.asrs.wms.apis.wcs.entity.response.CommonReponse;
 import com.zy.asrs.wms.asrs.entity.Task;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
 import com.zy.asrs.wms.asrs.service.TaskService;
 import com.zy.asrs.wms.asrs.service.WorkService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-import org.springframework.transaction.TransactionDefinition;
-import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.support.DefaultTransactionDefinition;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
-import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -42,55 +26,56 @@
 
     @Autowired
     private DataSourceTransactionManager transactionManager;
-
     @Autowired
     private TaskService taskService;
-
     @Autowired
     private RestTemplate restTemplate;
-
     @Autowired
     private WorkService workService;
 
 
     /***
-     * 閫氱煡ESS杈撻�佺嚎娴佸姩
+     * 鍏ュ簱浠诲姟---閫氱煡ESS杈撻�佺嚎娴佸姩
      */
-    //    @Scheduled(cron = "0/3 * * * * ? ")
+    @Scheduled(cron = "0/3 * * * * ? ")
+    @Transactional(rollbackFor = Exception.class)
     public void conveyorStart() {
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
-                .eq(Task::getTaskSts, TaskStsType.WCS_CONTAINER_RECEIVE.id).eq(Task::getStatus, 0));
+                .eq(Task::getTaskSts, TaskStsType.WCS_CONTAINER_RECEIVE.id).eq(Task::getStatus, 1));
         tasks.forEach(task -> {
             try {
-                ConveyorStarParam conveyorStarParam = new ConveyorStarParam();
-                conveyorStarParam.setSlotCode(task.getOriginLoc())
-                        .setContainerCode(task.getBarcode());
-                //璋冪敤涓夋柟鎺ュ彛锛屽皢浠诲姟鎺ㄩ�佽嚦ESS骞冲彴
-                MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
-                // 璁剧疆璇锋眰鍙傛暟
-                params.add("params", JSONObject.toJSONString(conveyorStarParam));
-                log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", Constant.CONVEYOR_START, JSONObject.toJSONString(conveyorStarParam));
-                HttpHeaders headers = new HttpHeaders();
-                headers.add("Content-Type", "application/json");
-                HttpEntity httpEntity = new HttpEntity<>(params, headers);
-                // 璇锋眰
-                ResponseEntity<String> exchange = restTemplate.exchange(Constant.ISSUE_TASK_OF_PUTAWAY, HttpMethod.POST, httpEntity, String.class);
-                log.info("涓嬪彂娴佸姩閫氱煡 杩斿洖缁撴灉锛歿}", exchange);
-                if (exchange.getBody() == null) {
-                    throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
-                } else {
-                    CommonReponse commonReponse = JSON.toJavaObject(JSON.parseObject(exchange.getBody()), CommonReponse.class);
-                    if (commonReponse.getCode() == 0) {
-                        log.info(task.getTaskNo() + "涓嬪彂娴佸姩閫氱煡"  + commonReponse.getMsg());
-                    } else {
-                        throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
-                    }
-                }
+//                ConveyorStarParam conveyorStarParam = new ConveyorStarParam();
+//                conveyorStarParam.setSlotCode(task.getOriginLoc())
+//                        .setContainerCode(task.getBarcode());
+//                //璋冪敤涓夋柟鎺ュ彛锛屽皢浠诲姟鎺ㄩ�佽嚦ESS骞冲彴
+//                MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+//                // 璁剧疆璇锋眰鍙傛暟
+//                params.add("params", JSONObject.toJSONString(conveyorStarParam));
+//                log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", Constant.CONVEYOR_START, JSONObject.toJSONString(conveyorStarParam));
+//                HttpHeaders headers = new HttpHeaders();
+//                headers.add("Content-Type", "application/json");
+//                HttpEntity httpEntity = new HttpEntity<>(params, headers);
+//                // 璇锋眰
+//                ResponseEntity<String> exchange = restTemplate.exchange(Constant.CONVEYOR_START, HttpMethod.POST, httpEntity, String.class);
+//                log.info("涓嬪彂娴佸姩閫氱煡 杩斿洖缁撴灉锛歿}", exchange);
+//                if (exchange.getBody() == null) {
+//                    throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
+//                } else {
+//                    CommonReponse commonReponse = JSON.toJavaObject(JSON.parseObject(exchange.getBody()), CommonReponse.class);
+//                    if (commonReponse.getCode() == 0) {
+                        taskService.update(new LambdaUpdateWrapper<Task>()
+                                .eq(Task::getId, task.getId())
+                                .set(Task::getTaskSts, TaskStsType.WCS_CONVEYOR_START.id));
+//                        log.info(task.getTaskNo() + "涓嬪彂娴佸姩閫氱煡" + commonReponse.getMsg());
+//                    } else {
+//                        throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
+//                    }
+//                }
             } catch (Exception ex) {
                 log.error(ex.getMessage());
             } finally {
                 //濡傛灉寮傚父淇敼绂佺敤鐘舵��
-                taskService.update(new LambdaUpdateWrapper<Task>().set(Task::getStatus, 1).eq(Task::getId, task.getId()));
+//                taskService.update(new LambdaUpdateWrapper<Task>().set(Task::getStatus, 0).eq(Task::getId, task.getId()));
             }
         });
 
@@ -98,108 +83,199 @@
 
 
     /***
-     * 姣忛殧3绉掞紝鑾峰彇搴撲腑鐘舵�佷负銆庝换鍔″畬鎴愩�忎笖鐘舵�併�巗ucess銆忕殑璁㈠崟
-     * 骞跺皢浠诲姟鍙樹负鍘嗗彶妗�
-     */
-    //    @Scheduled(cron = "0/3 * * * * ? ")
-    @Transactional
-    public void completeTaskSchedule() {
-        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
-                        .eq(Task::getTaskType, 1)
-                        .eq(Task::getTaskSts, TaskStsType.WCS_PUTAWAY_SUCESS)
-                        .eq(Task::getExcudeStatus, "sucess"))
-                .stream().sorted(Comparator.comparing(Task::getTaskSts))
-                .collect(Collectors.toList());
-
-        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
-        // TODO 鍗曚釜鎵ц澶辫触鍚庯紝 鍔犲叆澶辫触鍒楄〃锛屾坊鍔犲け璐ュ鐞嗗瓧娈碉紝閬垮厤閲嶅鏌ヨ璋冪敤
-//        def.setName("SomeTxName");
-        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
-        TransactionStatus status = transactionManager.getTransaction(def);
-        try {
-            tasks.forEach(task -> {
-                workService.completeTask(task.getId());
-            });
-            // execute your business logic here
-            //db operation
-        } catch (Exception ex) {
-            transactionManager.rollback(status);
-            throw ex;
-        }
-
-    }
-
-
-    /***
-     * 姣忛殧10绉掞紝鍒锋柊褰撳墠閫氱煡妗e垪琛紝涓嬪彂寰呭叆搴撹鍗曡嚦ESS
+     * 鍏ュ簱浠诲姟---涓嬪彂鍏ュ簱浠诲姟
+     * 姣忛殧3绉掞紝鍒锋柊褰撳墠閫氱煡妗e垪琛紝涓嬪彂寰呭叆搴撹鍗曡嚦ESS
      * 鏌ヨ褰撳墠浠诲姟鍒楄〃锛�
      */
-//    @Scheduled(cron = "0/3 * * * * ? ")
+    @Scheduled(cron = "0/3 * * * * ? ")
     @Transactional(rollbackFor = Exception.class)
     public void waitPakinSchedule() {
         //鑾峰彇褰撳墠浠诲姟妗d腑锛屾墍鏈変负寰呭叆搴撶姸鎬佺殑浠诲姟妗o紝鎸夋椂闂村崌搴忔帓鍒�
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
-                        .eq(Task::getTaskType, 1)
-                        .eq(Task::getTaskSts, TaskStsType.GENERATE_IN))
+//                        .eq(Task::getTaskType, 1)
+                        .eq(Task::getTaskSts, TaskStsType.GENERATE_IN.id))
                 .stream().sorted(Comparator.comparing(Task::getTaskSts))
                 .collect(Collectors.toList());
 
         // 鏁版嵁缁勮
-        PublishTasksParam tasksParam = new PublishTasksParam();
-        //TODO 纭鏄惁闇�瑕佸崟浠诲姟澶氬鍣ㄧ爜鐨勯渶姹傦紝鐩墠绯荤粺閮芥槸鍗曞鍣ㄧ爜鐢熸垚鍗曚换鍔★紝澶氫换鍔℃槑缁嗭紙鐗╂枡娣疯锛�
-        tasks.forEach(task -> {
-            List<TaskParam> params = new ArrayList<>();
-            TaskParam param = new TaskParam();
-            //璁剧疆瀹瑰櫒缂栫爜
-            param.setTaskCode(task.getTaskNo());
-            List<TaskDescribe> taskDescribes = new ArrayList<>();
-            TaskDescribe describe = new TaskDescribe();
-            //璁剧疆鐩爣搴撲綅锛岀珯鐐�
-            describe.setContainerCode(task.getBarcode())
-                    .setToLocationCode(task.getTargetLoc())
-                    .setToStationCode(task.getTargetSite());
-            taskDescribes.add(describe);
-            param.setTaskDescribe(taskDescribes);
-            params.add(param);
-            tasksParam.setTasks(params);
-        });
-
-        tasksParam.setTaskType("putaway");
-
-        // TODO 澶氫换鍔″璁㈠崟锛岀粺涓�璋冨害锛屾槸鍚︿細鍑虹幇閮ㄥ垎鎴愬姛锛岄儴鍒嗗け璐ョ殑鎯呭喌
-        //璋冪敤涓夋柟鎺ュ彛锛屽皢浠诲姟鎺ㄩ�佽嚦ESS骞冲彴
-        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
-        // 璁剧疆璇锋眰鍙傛暟
-        params.add("params", JSONObject.toJSONString(tasksParam));
-        log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", Constant.ISSUE_TASK_OF_PUTAWAY, JSONObject.toJSONString(tasksParam));
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("Content-Type", "application/json");
-        HttpEntity httpEntity = new HttpEntity<>(params, headers);
-        // 璇锋眰
-        ResponseEntity<String> exchange = restTemplate.exchange(Constant.ISSUE_TASK_OF_PUTAWAY, HttpMethod.POST, httpEntity, String.class);
-        log.info("涓嬪彂浠诲姟 杩斿洖缁撴灉锛歿}", exchange);
-        if (exchange.getBody() == null) {
-            throw new CoolException("涓嬪彂浠诲姟澶辫触锛侊紒");
-        } else {
-            CommonReponse reponse = (CommonReponse) JSON.parse(exchange.getBody());
-            if (reponse.getCode() == 0) {
+//        PublishTasksParam tasksParam = new PublishTasksParam();
+//        //TODO 纭鏄惁闇�瑕佸崟浠诲姟澶氬鍣ㄧ爜鐨勯渶姹傦紝鐩墠绯荤粺閮芥槸鍗曞鍣ㄧ爜鐢熸垚鍗曚换鍔★紝澶氫换鍔℃槑缁嗭紙鐗╂枡娣疯锛�
+//        tasks.forEach(task -> {
+//            List<TaskParam> params = new ArrayList<>();
+//            TaskParam param = new TaskParam();
+//            //璁剧疆瀹瑰櫒缂栫爜
+//            param.setTaskCode(task.getTaskNo());
+//            List<TaskDescribe> taskDescribes = new ArrayList<>();
+//            TaskDescribe describe = new TaskDescribe();
+//            //璁剧疆鐩爣搴撲綅锛岀珯鐐�
+//            describe.setContainerCode(task.getBarcode())
+//                    .setToLocationCode(task.getTargetLoc())
+//                    .setToStationCode(task.getTargetSite());
+//            taskDescribes.add(describe);
+//            param.setTaskDescribe(taskDescribes);
+//            params.add(param);
+//            tasksParam.setTasks(params);
+//        });
+//
+//        tasksParam.setTaskType("putaway");
+//        // TODO 澶氫换鍔″璁㈠崟锛岀粺涓�璋冨害锛屾槸鍚︿細鍑虹幇閮ㄥ垎鎴愬姛锛岄儴鍒嗗け璐ョ殑鎯呭喌
+//        //璋冪敤涓夋柟鎺ュ彛锛屽皢浠诲姟鎺ㄩ�佽嚦ESS骞冲彴
+//        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+//        // 璁剧疆璇锋眰鍙傛暟
+//        params.add("params", JSONObject.toJSONString(tasksParam));
+//        log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", Constant.ISSUE_TASK_OF_EVENT, JSONObject.toJSONString(tasksParam));
+//        HttpHeaders headers = new HttpHeaders();
+//        headers.add("Content-Type", "application/json");
+//        HttpEntity httpEntity = new HttpEntity<>(params, headers);
+//        // 璇锋眰
+//        ResponseEntity<String> exchange = restTemplate.exchange(Constant.ISSUE_TASK_OF_EVENT, HttpMethod.POST, httpEntity, String.class);
+//        log.info("涓嬪彂浠诲姟 杩斿洖缁撴灉锛歿}", exchange);
+//        if (exchange.getBody() == null) {
+//            throw new CoolException("涓嬪彂浠诲姟澶辫触锛侊紒");
+//        } else {
+//            CommonReponse reponse = (CommonReponse) JSON.parse(exchange.getBody());
+//            if (reponse.getCode() == 0) {
                 //璇锋眰鎴愬姛鍚庯紝缁熶竴淇敼鎵�鏈変换鍔℃。鐘舵�佷负鍏ュ簱鎵ц涓��
                 tasks.forEach(task -> {
                     taskService.update(new LambdaUpdateWrapper<Task>()
                             .set(Task::getTaskSts, TaskStsType.WCS_EXECUTE_IN.id)
                             .eq(Task::getBarcode, task.getBarcode()));
                 });
-            } else {
-                // TODO 璇锋眰澶辫触闇�纭鏄惁瀛樺湪閮ㄥ垎鎴愬姛鐨勬儏鍐碉紝閮ㄥ垎鎴愬姛闇�瑕佸崟鐙埛鏂版垚鍔熺殑浠诲姟妗g姸鎬�
-                throw new CoolException(reponse.getMsg());
-            }
-        }
+//            } else {
+//                // TODO 璇锋眰澶辫触闇�纭鏄惁瀛樺湪閮ㄥ垎鎴愬姛鐨勬儏鍐碉紝閮ㄥ垎鎴愬姛闇�瑕佸崟鐙埛鏂版垚鍔熺殑浠诲姟妗g姸鎬�
+//                throw new CoolException(reponse.getMsg());
+//            }
+//        }
     }
 
-    /***
-     * 姣忛殧10绉掓墽琛岋紝鍒锋柊褰撳墠浠诲姟鍒楄〃锛屼笅鍙戜换鍔″埌ESS
-     */
-    public void flowNotify() {
 
+    /**
+     * //fixme 寮冪敤
+     * 鍑哄簱浠诲姟---閫氱煡瀹瑰櫒娴佸姩
+     * 姣忛殧3绉掞紝鑾峰彇褰撳墠鍑哄簱浠诲姟鍒楄〃鐘舵�佷负COMPLETE_OUT鐨勪换鍔★紝骞堕�氱煡ESS娴佸姩杈撻�佺嚎
+     */
+//    @Scheduled(cron = "0/5 * * * * ? ")
+    @Transactional(rollbackFor = Exception.class)
+    public void conveyorToNotify() {
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
+                .eq(Task::getTaskSts, TaskStsType.WCS_EXECUTE_OUT_CONVEYOR.id).eq(Task::getStatus, 1));
+
+        // 杩橀渶瑕佸啀淇敼
+        tasks.forEach(task -> {
+//            try {
+//                ConveyorStarParam conveyorStarParam = new ConveyorStarParam();
+//                conveyorStarParam.setSlotCode(task.getOriginLoc())
+//                        .setContainerCode(task.getBarcode());
+//                if (task.getTaskType() == 101) { //浠诲姟绫诲瀷涓�101鍏ㄧ洏鍑哄簱锛岀洿鎺ュ彇涓嬪鍣紝浼�200
+//                    conveyorStarParam.setDirection("200");
+//                } else if (task.getTaskType() == 103) { //濡傛灉涓轰换鍔$被鍨嬩负103锛岄渶璧板洖搴撴搷浣滐紝浼�100
+//                    conveyorStarParam.setDirection("100");
+//                }
+//                //璋冪敤涓夋柟鎺ュ彛锛屽皢浠诲姟鎺ㄩ�佽嚦ESS骞冲彴
+//                MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+//                // 璁剧疆璇锋眰鍙傛暟
+//                params.add("params", JSONObject.toJSONString(conveyorStarParam));
+//                log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", Constant.CONVEYOR_START, JSONObject.toJSONString(conveyorStarParam));
+//                HttpHeaders headers = new HttpHeaders();
+//                headers.add("Content-Type", "application/json");
+//                HttpEntity httpEntity = new HttpEntity<>(params, headers);
+//                // 璇锋眰
+//                ResponseEntity<String> exchange = restTemplate.exchange(Constant.CONVEYOR_START, HttpMethod.POST, httpEntity, String.class);
+//                log.info("涓嬪彂娴佸姩閫氱煡 杩斿洖缁撴灉锛歿}", exchange);
+//                if (exchange.getBody() == null) {
+//                    throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
+//                } else {
+//                    CommonReponse commonReponse = JSON.toJavaObject(JSON.parseObject(exchange.getBody()), CommonReponse.class);
+//                    if (commonReponse.getCode() == 0) {
+                        //娴佸姩閫氱煡涓嬪彂瀹屾垚鍚庯紝淇敼浠诲姟鐘舵�佷负杈撻�佺嚎娴佸姩涓�傘��
+//                        taskService.update(new LambdaUpdateWrapper<Task>()
+//                                .eq(Task::getId, task.getId())
+//                                .set(Task::getTaskSts, TaskStsType.COMPLETE_OUT.id));
+
+//                        log.info(task.getTaskNo() + "涓嬪彂娴佸姩閫氱煡" + commonReponse.getMsg());
+//                    } else {
+//                        throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
+//                    }
+//                }
+//            } catch (Exception ex) {
+//                log.error(ex.getMessage());
+//            } finally {
+//                //濡傛灉寮傚父淇敼绂佺敤鐘舵��
+//                taskService.update(new LambdaUpdateWrapper<Task>().set(Task::getStatus, 0)
+//                        .set(Task::getUpdateTime, new Date())
+//                        .eq(Task::getId, task.getId()));
+//            }
+        });
+    }
+
+
+    /**
+     * 鍑哄簱浠诲姟--- 姣忛殧3绉掞紝鑾峰彇褰撳墠鍑哄簱浠诲姟鍒楄〃鐘舵�佷负GENERATE_OUT鐨勪换鍔★紝涓嬪彂浠诲姟鑷矱SS
+     * //TODO  鍑哄簱浠诲姟鍒嗕袱绉嶏細
+     * //TODO 1. 姝e父鍑哄簱鍚庯紝娓呴櫎浠诲姟锛�
+     * //TODO 2. 鍑哄簱鍚庤繕鏈夊簱瀛橈紝闇�瑕佹坊鍔犲鍣ㄥ洖搴撴搷浣�
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    @Transactional(rollbackFor = Exception.class)
+    public void waveToTask() {
+        //鑾峰彇褰撳墠浠诲姟妗d腑锛屾墍鏈変负寰呭嚭搴撶姸鎬佺殑浠诲姟妗o紝鎸夋椂闂村崌搴忔帓鍒�
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
+                        .ge(Task::getTaskType, 101) //TODO 濡備綍纭鏄�101锛岃繕鏄�103
+                        .eq(Task::getTaskSts, TaskStsType.GENERATE_OUT.id));
+        if (tasks.isEmpty()) {
+            return;
+        }
+        tasks.stream().sorted(Comparator.comparing(Task::getTaskSts))
+                .collect(Collectors.toList());
+
+        // 鏁版嵁缁勮
+//        PublishTasksParam tasksParam = new PublishTasksParam();
+//        //TODO 纭鏄惁闇�瑕佸崟浠诲姟澶氬鍣ㄧ爜鐨勯渶姹傦紝鐩墠绯荤粺閮芥槸鍗曞鍣ㄧ爜鐢熸垚鍗曚换鍔★紝澶氫换鍔℃槑缁嗭紙鐗╂枡娣疯锛�
+//        tasks.forEach(task -> {
+//            List<TaskParam> params = new ArrayList<>();
+//            TaskParam param = new TaskParam();
+//            //璁剧疆瀹瑰櫒缂栫爜
+//            param.setTaskCode(task.getTaskNo());
+//            List<TaskDescribe> taskDescribes = new ArrayList<>();
+//            TaskDescribe describe = new TaskDescribe();
+//            //璁剧疆鐩爣搴撲綅锛岀珯鐐�
+//            describe.setContainerCode(task.getBarcode())
+//                    .setToLocationCode(task.getTargetLoc())
+//                    .setToStationCode(task.getTargetSite());
+//            taskDescribes.add(describe);
+//            param.setTaskDescribe(taskDescribes);
+//            params.add(param);
+//            tasksParam.setTasks(params);
+//        });
+//
+//        tasksParam.setTaskType("carry");
+//        // TODO 澶氫换鍔″璁㈠崟锛岀粺涓�璋冨害锛屾槸鍚︿細鍑虹幇閮ㄥ垎鎴愬姛锛岄儴鍒嗗け璐ョ殑鎯呭喌
+//        //璋冪敤涓夋柟鎺ュ彛锛屽皢浠诲姟鎺ㄩ�佽嚦ESS骞冲彴
+//        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+//        // 璁剧疆璇锋眰鍙傛暟
+//        params.add("params", JSONObject.toJSONString(tasksParam));
+//        log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", Constant.ISSUE_TASK_OF_EVENT, JSONObject.toJSONString(tasksParam));
+//        HttpHeaders headers = new HttpHeaders();
+//        headers.add("Content-Type", "application/json");
+//        HttpEntity httpEntity = new HttpEntity<>(params, headers);
+//        // 璇锋眰
+//        ResponseEntity<String> exchange = restTemplate.exchange(Constant.ISSUE_TASK_OF_EVENT, HttpMethod.POST, httpEntity, String.class);
+//        log.info("涓嬪彂浠诲姟 杩斿洖缁撴灉锛歿}", exchange);
+//        if (exchange.getBody() == null) {
+//            throw new CoolException("涓嬪彂浠诲姟澶辫触锛侊紒");
+//        } else {
+//            CommonReponse reponse = (CommonReponse) JSON.parse(exchange.getBody());
+//            if (reponse.getCode() == 0) {
+                //璇锋眰鎴愬姛鍚庯紝缁熶竴淇敼鎵�鏈変换鍔℃。鐘舵�佷负鍏ュ簱鎵ц涓��
+                tasks.forEach(task -> {
+                    taskService.update(new LambdaUpdateWrapper<Task>()
+                            .set(Task::getTaskSts, TaskStsType.WCS_EXECUTE_OUT.id)
+                            .eq(Task::getId, task.getId()));
+                });
+//            } else {
+//                // TODO 璇锋眰澶辫触闇�纭鏄惁瀛樺湪閮ㄥ垎鎴愬姛鐨勬儏鍐碉紝閮ㄥ垎鎴愬姛闇�瑕佸崟鐙埛鏂版垚鍔熺殑浠诲姟妗g姸鎬�
+//                throw new CoolException(reponse.getMsg());
+//            }
+//        }
     }
 }

--
Gitblit v1.9.1