From 2cf6f25ee51dea59dbd1e2183a06796961bb8644 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 23 十二月 2024 19:38:09 +0800 Subject: [PATCH] 添加出库流程 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java | 170 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 125 insertions(+), 45 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..d7f4602 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 @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -42,21 +43,19 @@ @Autowired private DataSourceTransactionManager transactionManager; - @Autowired private TaskService taskService; - @Autowired private RestTemplate restTemplate; - @Autowired private WorkService workService; /*** - * 閫氱煡ESS杈撻�佺嚎娴佸姩 + * 鍏ュ簱浠诲姟---閫氱煡ESS杈撻�佺嚎娴佸姩 */ // @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)); @@ -74,13 +73,16 @@ 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); + 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::getTaskType, TaskStsType.WCS_CONVEYOR_START.id)); log.info(task.getTaskNo() + "涓嬪彂娴佸姩閫氱煡" + commonReponse.getMsg()); } else { throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒"); @@ -98,40 +100,7 @@ /*** - * 姣忛殧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 * * * * ? ") @@ -165,18 +134,17 @@ }); 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)); + 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_PUTAWAY, HttpMethod.POST, httpEntity, String.class); + 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("涓嬪彂浠诲姟澶辫触锛侊紒"); @@ -196,10 +164,122 @@ } } - /*** - * 姣忛殧10绉掓墽琛岋紝鍒锋柊褰撳墠浠诲姟鍒楄〃锛屼笅鍙戜换鍔″埌ESS + + /** + * 鍑哄簱浠诲姟--- 姣忛殧3绉掞紝鑾峰彇褰撳墠鍑哄簱浠诲姟鍒楄〃鐘舵�佷负WCS_EXECUTE_OUT_TASK_DONE鐨勪换鍔★紝骞堕�氱煡ESS娴佸姩杈撻�佺嚎 + * */ +// @Scheduled(cron = "0/3 * * * * ? ") + @Transactional(rollbackFor = Exception.class) + public void conveyorToNotify() { + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() + .eq(Task::getTaskSts, TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id).eq(Task::getStatus, 0)); + 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.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::getTaskType, TaskStsType.WCS_EXECUTE_OUT_CONVEYOR.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) + .set(Task::getUpdateTime, new Date()) + .eq(Task::getId, task.getId())); + } + }); + } + + + /** + * 鍑哄簱浠诲姟--- 姣忛殧3绉掞紝鑾峰彇褰撳墠鍑哄簱浠诲姟鍒楄〃鐘舵�佷负GENERATE_OUT鐨勪换鍔★紝涓嬪彂浠诲姟鑷矱SS + * //TODO 鍑哄簱浠诲姟鍒嗕袱绉嶏細 + * //TODO 1. 姝e父鍑哄簱鍚庯紝娓呴櫎浠诲姟锛� + * //TODO 2. 鍑哄簱鍚庤繕鏈夊簱瀛橈紝闇�瑕佹坊鍔犲鍣ㄥ洖搴撴搷浣� */ - public void flowNotify() { + // @Scheduled(cron = "0/3 * * * * ? ") + @Transactional(rollbackFor = Exception.class) + public void waveToTask() { + //鑾峰彇褰撳墠浠诲姟妗d腑锛屾墍鏈変负寰呭嚭搴撶姸鎬佺殑浠诲姟妗o紝鎸夋椂闂村崌搴忔帓鍒� + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() + .eq(Task::getTaskType, 101) //TODO 濡備綍纭鏄�101锛岃繕鏄�103 + .eq(Task::getTaskSts, TaskStsType.GENERATE_OUT)) + .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::getBarcode, task.getBarcode())); + }); + } else { + // TODO 璇锋眰澶辫触闇�纭鏄惁瀛樺湪閮ㄥ垎鎴愬姛鐨勬儏鍐碉紝閮ㄥ垎鎴愬姛闇�瑕佸崟鐙埛鏂版垚鍔熺殑浠诲姟妗g姸鎬� + throw new CoolException(reponse.getMsg()); + } + } } } -- Gitblit v1.9.1