From 2cf6f25ee51dea59dbd1e2183a06796961bb8644 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 23 十二月 2024 19:38:09 +0800
Subject: [PATCH] 添加出库流程
---
zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/R.java | 6
zy-asrs-admin/src/components/order/order/index.vue | 60 +++-
zy-asrs-admin/src/components/order/order/order.vue | 1
zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/BaseRes.java | 2
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java | 12
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java | 4
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java | 11
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/InStockController.java | 25 -
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java | 170 ++++++++++---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/TaskStsType.java | 22 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java | 192 +++++++++------
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java | 2
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java | 2
zy-asrs-admin/src/views/out/order/index.vue | 34 +-
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/Constant.java | 2
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java | 147 +++++------
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 7
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java | 5
zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml | 4
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java | 2
zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java | 8
21 files changed, 432 insertions(+), 286 deletions(-)
diff --git a/zy-asrs-admin/src/components/order/order/index.vue b/zy-asrs-admin/src/components/order/order/index.vue
index fc71163..1c2bb72 100644
--- a/zy-asrs-admin/src/components/order/order/index.vue
+++ b/zy-asrs-admin/src/components/order/order/index.vue
@@ -1,30 +1,44 @@
+<template>
+ <div v-if="props.ioModel === 'in'">
+ <OrderInView ioModel="in"/>
+ </div>
+ <div v-else-if="props.ioModel === 'out'">
+ <OrderOutView ioModel="out"/>
+ </div>
+ <div v-else>
+ <OrderView/>
+ </div>
+</template>
<script setup>
-import { defineProps } from 'vue';
-import OrderView from './order.vue'
-import OrderInView from './orderIn.vue'
-import OrderOutView from './orderOut.vue'
-
-const props = defineProps({
- ioModel: null
-})
+ const props = defineProps({
+ ioModel: null
+ })
</script>
<script>
-export default {
- name: '璁㈠崟'
-}
+ import {defineProps} from 'vue';
+ import OrderView from './order.vue'
+ import OrderInView from './orderIn.vue'
+ import OrderOutView from './orderOut.vue'
+ export default {
+ name: '璁㈠崟',
+ // props: {
+ // ioModel: null,
+ // },
+ data() {
+ return {}
+ },
+ created() {
+
+ },
+ components: {
+ OrderInView,
+ OrderOutView,
+ OrderView
+ }
+ }
</script>
+<style>
-<template>
- <div v-if="props.ioModel === 'in'">
- <OrderInView ioModel="in" />
- </div>
- <div v-else-if="props.ioModel === 'out'">
- <OrderOutView ioModel="out" />
- </div>
- <div v-else>
- <OrderView />
- </div>
-</template>
-<style></style>
+</style>
diff --git a/zy-asrs-admin/src/components/order/order/order.vue b/zy-asrs-admin/src/components/order/order/order.vue
index d23db87..b5f3a32 100644
--- a/zy-asrs-admin/src/components/order/order/order.vue
+++ b/zy-asrs-admin/src/components/order/order/order.vue
@@ -161,6 +161,7 @@
}).then((resp) => {
let result = resp.data;
if (result.code == 200) {
+ console.log('--------->')
let data = result.data;
tableData.value = data;
diff --git a/zy-asrs-admin/src/views/out/order/index.vue b/zy-asrs-admin/src/views/out/order/index.vue
index 05ec222..f8c1bc4 100644
--- a/zy-asrs-admin/src/views/out/order/index.vue
+++ b/zy-asrs-admin/src/views/out/order/index.vue
@@ -1,17 +1,27 @@
-<script setup>
-import OrderView from '@/components/order/order/index.vue';
-</script>
+<template>
+ <div>
+ <OrderView ioModel="out"/>
+ </div>
+</template>
<script>
-export default {
- name: '鍑哄簱璁㈠崟'
-}
-</script>
+ import OrderView from '@/components/order/order/index.vue';
+ export default {
+ name: 'OutOrder',
+ data() {
+ return {}
+ },
+ components: {
+ OrderView,
+ },
+ created() {
-<template>
- <div>
- <OrderView ioModel="out" />
- </div>
-</template>
+ },
+ mounted() {
+
+ },
+ methods: {}
+ }
+</script>
<style></style>
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/BaseRes.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/BaseRes.java
index 02bf681..4243541 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/BaseRes.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/BaseRes.java
@@ -3,7 +3,7 @@
public interface BaseRes {
String OK = "200-鎿嶄綔鎴愬姛";
- String SUCESS = "0";
+ String SUCESS = "sucess";
String EMPTY = "201-鏆傛棤鏁版嵁";
String LIMIT = "202-鏃犳潈闄�";
String PARAM = "401-鍙傛暟涓虹┖";
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/R.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/R.java
index b8357b8..3efe873 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/R.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/R.java
@@ -22,12 +22,10 @@
return parse(BaseRes.OK);
}
- public static R success(){return parse(BaseRes.SUCESS);}
+ public static R success(){return success(BaseRes.SUCESS);}
public static R success(String msg){
- R r = success();
- r.put(MSG, msg);
- return r;
+ return new R(0, msg);
}
public static R ok(String msg){
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WcsApiController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/InStockController.java
similarity index 76%
rename from zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WcsApiController.java
rename to zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/InStockController.java
index 4dee651..dbf995b 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WcsApiController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/InStockController.java
@@ -2,7 +2,6 @@
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wms.apis.wcs.entity.request.ContainerArrivedParam;
-import com.zy.asrs.wms.apis.wcs.entity.request.ConveyorStarParam;
import com.zy.asrs.wms.apis.wcs.entity.request.TasksStatusCallbackParam;
import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
import io.netty.util.internal.StringUtil;
@@ -12,9 +11,9 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-@RequestMapping("/openapi/")
+@RequestMapping("/in/stock/")
@RestController
-public class WcsApiController {
+public class InStockController {
@Autowired
private WcsApiService wcsApiService;
@@ -35,7 +34,7 @@
return R.error("杈撻�佺嚎鑺傜偣缂栫爜涓嶈兘涓虹┖锛侊紒");
}
- return wcsApiService.containerArrivedNotify(arrivedParam);
+ return wcsApiService.containerArrivedNotify(arrivedParam, "inStock");
}
@@ -54,28 +53,12 @@
if (StringUtil.isNullOrEmpty(callbackParam.getTaskCode())) {
return R.error("浠诲姟缂栫爜涓嶈兘涓虹┖锛侊紒");
}
- boolean result = wcsApiService.receiveTaskStatus(callbackParam);
+ wcsApiService.receiveTaskStatus(callbackParam, "inStock");
} else {
return R.error("涓婃姤浜嬩欢绫诲瀷涓嶈兘涓虹┖锛侊紒");
}
return R.success();
}
-
-
-// /**
-// * 涓嬪彂鐐瑰鐐规惉杩愪换鍔�
-// * @param
-// * @return
-// */
-// @PostMapping("/carry")
-// public R publishTaskOfCarry() {
-// PublishTasksReponse reponse = wcsApiService.publishTaskOfCarry();
-// if (reponse.getCode() == 0) {
-// return R.ok(reponse.getData());
-// } else {
-// return R.error(reponse.getMsg());
-// }
-// }
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WcsApiController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
similarity index 75%
copy from zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WcsApiController.java
copy to zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
index 4dee651..46cfc43 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/WcsApiController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
@@ -1,81 +1,66 @@
-package com.zy.asrs.wms.apis.wcs.controller;
-
-import com.zy.asrs.framework.common.R;
-import com.zy.asrs.wms.apis.wcs.entity.request.ContainerArrivedParam;
-import com.zy.asrs.wms.apis.wcs.entity.request.ConveyorStarParam;
-import com.zy.asrs.wms.apis.wcs.entity.request.TasksStatusCallbackParam;
-import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
-import io.netty.util.internal.StringUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RequestMapping("/openapi/")
-@RestController
-public class WcsApiController {
-
- @Autowired
- private WcsApiService wcsApiService;
-
-
- /***
- * 瀹瑰櫒鍒拌揪鎺ユ敹
- * @param arrivedParam
- * @return
- */
- @PostMapping("/container/arrived")
- public R containerArrivedNotify(@RequestBody ContainerArrivedParam arrivedParam) {
-
- if (StringUtil.isNullOrEmpty(arrivedParam.getContainerCode())) {
- return R.error("瀹瑰櫒缂栫爜涓嶈兘涓虹┖锛侊紒");
- }
- if (StringUtil.isNullOrEmpty(arrivedParam.getSlotCode())) {
- return R.error("杈撻�佺嚎鑺傜偣缂栫爜涓嶈兘涓虹┖锛侊紒");
- }
-
- return wcsApiService.containerArrivedNotify(arrivedParam);
-
- }
-
-
- /**
- * ESS涓婃姤浠诲姟鐘舵�佹帴鍙�
- * @param callbackParam
- * @return
- */
- @PostMapping("/receive/tasks/status")
- public R receiveTaskStatus(@RequestBody TasksStatusCallbackParam callbackParam) {
- if (!StringUtil.isNullOrEmpty(callbackParam.getEventType())) {
- if (StringUtil.isNullOrEmpty(callbackParam.getContainerCode())) {
- return R.error("瀹瑰櫒缂栫爜涓嶈兘涓虹┖锛侊紒");
- }
- if (StringUtil.isNullOrEmpty(callbackParam.getTaskCode())) {
- return R.error("浠诲姟缂栫爜涓嶈兘涓虹┖锛侊紒");
- }
- boolean result = wcsApiService.receiveTaskStatus(callbackParam);
- } else {
- return R.error("涓婃姤浜嬩欢绫诲瀷涓嶈兘涓虹┖锛侊紒");
- }
-
- return R.success();
- }
-
-
-// /**
-// * 涓嬪彂鐐瑰鐐规惉杩愪换鍔�
-// * @param
-// * @return
-// */
-// @PostMapping("/carry")
-// public R publishTaskOfCarry() {
-// PublishTasksReponse reponse = wcsApiService.publishTaskOfCarry();
-// if (reponse.getCode() == 0) {
-// return R.ok(reponse.getData());
-// } else {
-// return R.error(reponse.getMsg());
-// }
-// }
-
-}
+package com.zy.asrs.wms.apis.wcs.controller;
+
+
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wms.apis.wcs.entity.request.ContainerArrivedParam;
+import com.zy.asrs.wms.apis.wcs.entity.request.TasksStatusCallbackParam;
+import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
+import io.netty.util.internal.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@RestController
+@RequestMapping("/out/stock/")
+public class OutStockController {
+
+ @Autowired
+ private WcsApiService wcsApiService;
+
+ /**
+ * 鍑哄簱浠诲姟-鎺ユ敹鍥炶皟鐘舵�佹帴鍙�
+ * @param callbackParam
+ * @return
+ */
+ @PostMapping("/receive/tasks/status")
+ public R receiveTaskStatus(@RequestBody TasksStatusCallbackParam callbackParam) {
+ if (!StringUtil.isNullOrEmpty(callbackParam.getEventType())) {
+ if (StringUtil.isNullOrEmpty(callbackParam.getContainerCode())) {
+ return R.error("瀹瑰櫒缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ if (StringUtil.isNullOrEmpty(callbackParam.getTaskCode())) {
+ return R.error("浠诲姟缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ wcsApiService.receiveTaskStatus(callbackParam, "outStock");
+ } else {
+ return R.error("涓婃姤浜嬩欢绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ }
+
+ return R.success();
+ }
+
+ /***
+ * 瀹瑰櫒鍒拌揪鎺ユ敹
+ * @param arrivedParam
+ * @return
+ */
+ @PostMapping("/container/arrived")
+ public R containerArrivedNotify(@RequestBody ContainerArrivedParam arrivedParam) {
+
+ if (StringUtil.isNullOrEmpty(arrivedParam.getContainerCode())) {
+ return R.error("瀹瑰櫒缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ if (StringUtil.isNullOrEmpty(arrivedParam.getSlotCode())) {
+ return R.error("杈撻�佺嚎鑺傜偣缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+
+ return wcsApiService.containerArrivedNotify(arrivedParam, "outStock");
+
+ }
+
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/Constant.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/Constant.java
index bbbf15c..36295fd 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/Constant.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/entity/domain/Constant.java
@@ -5,7 +5,7 @@
private static String HOST = "http://localhost:8080";
- public static String ISSUE_TASK_OF_PUTAWAY = HOST + "/task/create";
+ public static String ISSUE_TASK_OF_EVENT = HOST + "/task/create";
public static String CONVEYOR_START = HOST + "/conveyor/moveContainer";
}
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());
+ }
+ }
}
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
index 5d9e718..1113821 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.apis.wcs.entity.domain.EssTaskStatus;
import com.zy.asrs.wms.apis.wcs.entity.request.*;
import com.zy.asrs.wms.apis.wcs.entity.response.CommonReponse;
@@ -14,6 +15,7 @@
import com.zy.asrs.wms.asrs.service.WaitPakinService;
import com.zy.asrs.wms.asrs.service.WorkService;
import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -23,6 +25,7 @@
import java.util.Map;
import java.util.stream.Collectors;
+@Slf4j
@Service
public class WcsApiServiceImpl implements WcsApiService {
@@ -33,104 +36,141 @@
@Autowired
private TaskService taskService;
- @Override
- public CommonReponse publishTaskOfCarry() {
- //鑾峰彇缁勬嫋閫氱煡妗d腑锛岀姸鎬佷负姝e父锛岀粍鎵樼姸鎬佷负寰呭叆搴撲笖鏈垹闄ょ殑WaitPakins
- List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
- .eq(WaitPakin::getStatus, 1)
- .eq(WaitPakin::getIoStatus, 0)
- .eq(WaitPakin::getDeleted, 0));
- if (!list.isEmpty()) {
- return publishTaskOfCarry(list);
- }
- return new CommonReponse();
- }
-
- /**
- * 涓嬪彂鏂欑锛堝鍣級婊氬姩鑷虫壂鐮佸尯
- * //TODO 宸茶垂寮�
- *
- * @param pakins
- * @return
- */
- @Override
- public CommonReponse publishTaskOfCarry(List<WaitPakin> pakins) {
- PublishTasksParam tasksParam = new PublishTasksParam();
- tasksParam.setTaskType("carry");
- List<TaskParam> tasks = new ArrayList<>();
- Map<String, List<WaitPakin>> barcodes = pakins.stream().collect(Collectors.groupingBy(WaitPakin::getBarcode));
- /**
- * 褰撳墠闂锛�
- * //TODO 1. 鐩墠浠诲姟涓嬪彂鎺ュ彛娌熼�氫笅鏉ワ紝鏄渶瑕佺洰鏍囦綅缃殑锛岃繖閲屾垜浠彧鏄垰缁勬嫋瀹屾垚锛屽苟涓嶆槸閫氱煡娴佸姩锛屾病鏈夌洰鏍囦綅缃�
- * //TODO 2. 鏂囨。涓婄殑鎼繍浠诲姟涓嬪彂鎸囩殑閮芥槸澶氫换鍔★紝澶氬鍣ㄦ惉杩愶紝鑰屼笉鏄垜浠渶瑕佺墿鏂欎俊鎭悓姝ュ姛鑳�
- * //TODO 3. 娴佺▼璧颁笉閫氭殏鏃跺厛璺宠繃锛岀‘璁ゆ槸鍚﹂渶瑕乄MS瑙﹀彂鏂欑婊氬姩鑷虫壂鐮佸尯
- * */
- barcodes.keySet().forEach(actionKey -> {
- List<TaskDescribe> taskDescribes = new ArrayList<>();
- barcodes.get(actionKey).forEach(action -> {
- TaskDescribe taskDescribe = new TaskDescribe();
- taskDescribe.setContainerCode(action.getBarcode());
- taskDescribes.add(taskDescribe);
- });
- });
-
- if (!pakins.isEmpty()) {
- pakins.forEach(waitPakin -> {
-
- });
- }
- tasksParam.setTasks(tasks);
-
- return null;
- }
/**
* 瀹瑰櫒鍒拌揪鎺ユ敹
* 鏍规嵁ESS杩斿洖鐨勫鍣ㄧ紪鐮佷慨鏀逛换鍔℃。涓殑杈撻�佺嚎璧峰浣嶇疆鑺傜偣锛屽強浠诲姟妗f墽琛岀姸鎬�
+ * * 褰撳墠闂锛�
+ * * //TODO 1. 鐩墠浠诲姟涓嬪彂鎺ュ彛娌熼�氫笅鏉ワ紝鏄渶瑕佺洰鏍囦綅缃殑锛岃繖閲屾垜浠彧鏄垰缁勬嫋瀹屾垚锛屽苟涓嶆槸閫氱煡娴佸姩锛屾病鏈夌洰鏍囦綅缃�
+ * * //TODO 2. 鏂囨。涓婄殑鎼繍浠诲姟涓嬪彂鎸囩殑閮芥槸澶氫换鍔★紝澶氬鍣ㄦ惉杩愶紝鑰屼笉鏄垜浠渶瑕佺墿鏂欎俊鎭悓姝ュ姛鑳�
+ * * //TODO 3. 娴佺▼璧颁笉閫氭殏鏃跺厛璺宠繃锛岀‘璁ゆ槸鍚﹂渶瑕乄MS瑙﹀彂鏂欑婊氬姩鑷虫壂鐮佸尯
* @param arrivedParam
* @return
*/
@Override
- @Transactional
- public R containerArrivedNotify(ContainerArrivedParam arrivedParam) {
+ @Transactional(rollbackFor = Exception.class)
+ public R containerArrivedNotify(ContainerArrivedParam arrivedParam, String taskType) {
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, arrivedParam.getContainerCode()));
if (Collections.isEmpty(tasks)) {
return R.error("浠诲姟涓嶅瓨鍦紒锛�");
-// throw new CoolException("浠诲姟涓嶅瓨鍦紒锛�");
}
- //DONE 鏍规嵁ESS杩斿洖鐨勫鍣ㄧ紪鐮佷慨鏀逛换鍔℃。涓殑杈撻�佺嚎璧峰浣嶇疆鑺傜偣锛屽強浠诲姟妗e鍣ㄥ埌杈剧姸鎬�
- taskService.update(new LambdaUpdateWrapper<Task>()
- .set(Task::getTaskSts, TaskStsType.WCS_CONTAINER_RECEIVE.id)
- .set(Task::getOriginLoc, arrivedParam.getSlotCode())
- .eq(Task::getBarcode, arrivedParam.getContainerCode()));
+ if (taskType.equals("inStock")) {
+ //DONE 鏍规嵁ESS杩斿洖鐨勫鍣ㄧ紪鐮佷慨鏀逛换鍔℃。涓殑杈撻�佺嚎璧峰浣嶇疆鑺傜偣锛屽強浠诲姟妗e鍣ㄥ埌杈剧姸鎬�
+ taskService.update(new LambdaUpdateWrapper<Task>()
+ .set(Task::getTaskSts, TaskStsType.WCS_CONTAINER_RECEIVE.id)
+ .set(Task::getOriginLoc, arrivedParam.getSlotCode())
+ .eq(Task::getBarcode, arrivedParam.getContainerCode()));
+ } else {
+ taskService.update(new LambdaUpdateWrapper<Task>()
+ .set(Task::getTaskSts, TaskStsType.WCS_EXECUTE_OUT_ARRIVED.id)
+ .set(Task::getOriginLoc, arrivedParam.getSlotCode())
+ .eq(Task::getBarcode, arrivedParam.getContainerCode()));
+ }
return R.success("success");
}
@Override
@Transactional(rollbackFor = Exception.class)
- public boolean receiveTaskStatus(TasksStatusCallbackParam callbackParam) {
- TaskStsType taskStsType = TaskStsType.WCS_CONTAINER_RECEIVE;
-
- if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_LOAD.event)) { //涓婃姤鍙栫鐘舵��
- taskStsType = TaskStsType.WCS_TOTE_LOAD;
- } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_UNLOAD.event)) { //涓婃姤鏀剧鐘舵��
- taskStsType = TaskStsType.WCS_TOTE_UNLOAD;
- } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event)) { //TODO 闇�纭涓婃姤浠诲姟涓紝浠诲姟瀹屾垚鏄摢涓簨浠讹紝鐩墠鏆傚畾task浜嬩欢
- taskStsType = TaskStsType.WCS_PUTAWAY_SUCESS;
- }
-
- return taskService.update(new LambdaUpdateWrapper<Task>()
- .set(Task::getRobotCode, callbackParam.getRobotCode())
- .set(Task::getSysTaskCode, callbackParam.getSysTaskCode())
- .set(Task::getTaskSts, taskStsType.id)
- .set(Task::getExcudeStatus, callbackParam.getStatus())
- .set(Task::getTaskDesc, callbackParam.getMessage())
+ public void receiveTaskStatus(TasksStatusCallbackParam callbackParam, String stockType) {
+ Long type = 1L;
+ if (stockType.equals("outStock")) { //鍑哄簱浠诲姟
+ type = 101L;
+ }
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>()
.eq(Task::getBarcode, callbackParam.getContainerCode())
+ .eq(Task::getTaskType, type)
.eq(Task::getTaskNo, callbackParam.getTaskCode()));
- }
+ if (!Collections.isEmpty(list)) {
+ Long finalType = type;
+ list.forEach(task -> {
+ TaskStsType taskStsType = null;
+ if (stockType.equals("inStock")) { //鍏ュ簱浠诲姟
+ if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_LOAD.event)) { //涓婃姤鍙栫鐘舵��
+ if (task.getTaskType() == TaskStsType.WCS_CONTAINER_RECEIVE.id) {
+ taskStsType = TaskStsType.WCS_TOTE_LOAD;
+ } else {
+ String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_TOTE_LOAD.desc + "浠诲姟";
+ log.error(errMsg);
+ throw new CoolException(errMsg);
+ }
+ } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_UNLOAD.event)) { //涓婃姤鏀剧鐘舵��
+ if (task.getTaskType() == TaskStsType.WCS_TOTE_LOAD.id) {
+ taskStsType = TaskStsType.WCS_TOTE_UNLOAD;
+ } else {
+ String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_TOTE_UNLOAD.desc + "浠诲姟";
+ log.error(errMsg);
+ throw new CoolException(errMsg);
+ }
+ } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event)) { //TODO 闇�纭涓婃姤浠诲姟涓紝浠诲姟瀹屾垚鏄摢涓簨浠讹紝鐩墠鏆傚畾task浜嬩欢
+ if (task.getTaskType() == TaskStsType.WCS_TOTE_UNLOAD.id) {
+ taskStsType = TaskStsType.WCS_PUTAWAY_SUCESS;
+ } else {
+ String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_PUTAWAY_SUCESS.desc + "浠诲姟";
+ log.error(errMsg);
+ throw new CoolException(errMsg);
+ }
+ }
+ boolean result = taskService.update(new LambdaUpdateWrapper<Task>()
+ .set(Task::getRobotCode, callbackParam.getRobotCode())
+ .set(Task::getSysTaskCode, callbackParam.getSysTaskCode())
+ .set(Task::getTaskSts, taskStsType.id)
+ .set(Task::getExcudeStatus, callbackParam.getStatus())
+ .set(Task::getTaskDesc, callbackParam.getMessage())
+ .eq(Task::getBarcode, callbackParam.getContainerCode())
+ .eq(Task::getTaskType, finalType)
+ .eq(Task::getTaskNo, callbackParam.getTaskCode()));
+ if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event) && result) {
+ workService.completeTask(task.getId());
+ }
+ } else { //鍑哄簱浠诲姟
+ if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_LOAD.event)) { //涓婃姤鍙栫鐘舵��
+ if (task.getTaskType() == TaskStsType.WCS_EXECUTE_OUT.id) {
+ taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD;
+ } else {
+ String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.desc + "浠诲姟";
+ log.error(errMsg);
+ throw new CoolException(errMsg);
+ }
+ } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_TOTE_UNLOAD.event)) { //涓婃姤鏀剧鐘舵��
+ if (task.getTaskType() == TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.id) {
+ taskStsType = TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD;
+ } else {
+ String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD.desc + "浠诲姟";
+ log.error(errMsg);
+ throw new CoolException(errMsg);
+ }
+ } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event)) { //涓婃姤瀹屾垚鐘舵��
+ if (task.getTaskType() == TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD.id) {
+ taskStsType = TaskStsType.WCS_EXECUTE_OUT_TASK_DONE;
+ } else {
+ String errMsg = "浠诲姟缂栧彿锛�" + task.getTaskNo() + "鐘舵�佷负涓嶅尮閰嶏紝" + "涓嶈兘鎵ц锛�" + TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.desc + "浠诲姟";
+ log.error(errMsg);
+ throw new CoolException(errMsg);
+ }
+ }
+
+ //鏇存柊鍑哄簱鐘舵�佸強鐩稿叧瀛楁
+ taskService.update(new LambdaUpdateWrapper<Task>()
+ .set(Task::getRobotCode, callbackParam.getRobotCode())
+ .set(Task::getSysTaskCode, callbackParam.getSysTaskCode())
+ .set(Task::getTaskSts, taskStsType.id)
+ .set(Task::getExcudeStatus, callbackParam.getStatus())
+ .set(Task::getTaskDesc, callbackParam.getMessage())
+ .eq(Task::getTaskType, finalType)
+ .eq(Task::getBarcode, callbackParam.getContainerCode())
+ .eq(Task::getTaskNo, callbackParam.getTaskCode()));
+
+// if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event) && result) {
+//// workService.completeTask(task.getId());
+// }
+ }
+
+ });
+ }
+ }
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
index 1bf7421..cafed21 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
@@ -11,12 +11,8 @@
public interface WcsApiService {
- CommonReponse publishTaskOfCarry();
+ R containerArrivedNotify(ContainerArrivedParam arrivedParam, String taskType);
- CommonReponse publishTaskOfCarry(List<WaitPakin> pakins);
-
- R containerArrivedNotify(ContainerArrivedParam arrivedParam);
-
- boolean receiveTaskStatus(TasksStatusCallbackParam callbackParam);
+ void receiveTaskStatus(TasksStatusCallbackParam callbackParam, String stockType);
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
index cb1c1dc..aafec91 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
@@ -12,8 +12,10 @@
import com.zy.asrs.wms.asrs.service.MobileService;
import com.zy.asrs.wms.asrs.service.OrderService;
import com.zy.asrs.wms.system.controller.BaseController;
+import com.zy.asrs.wms.system.entity.Host;
import com.zy.asrs.wms.system.entity.User;
import com.zy.asrs.wms.system.entity.UserLogin;
+import com.zy.asrs.wms.system.service.HostService;
import com.zy.asrs.wms.system.service.UserLoginService;
import com.zy.asrs.wms.system.service.UserService;
import io.jsonwebtoken.lang.Collections;
@@ -30,7 +32,6 @@
@Value("${super.pwd}")
private String superPwd;
-
@Autowired
private UserService userService;
@Autowired
@@ -40,6 +41,15 @@
@Autowired
private MobileService mobileService;
+ /**
+ * 鑾峰彇鐢ㄦ埛鏈烘瀯
+ * @return
+ */
+ @GetMapping("/current/host")
+ public R getUserHost() {
+ List<Host> hosts = mobileService.getHosts();
+ return R.ok(hosts);
+ }
/**
* 鍏ュ簱鍗曟嵁--鎵爜鑾峰彇璁㈠崟鏄庣粏鍒楄〃
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
index 4612928..40a8429 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
@@ -94,7 +94,7 @@
@PreAuthorize("hasAuthority('asrs:order:list')")
@PostMapping("/order/out/page")
- @CacheData(tableName = {"man_order", "man_order_type"})
+// @CacheData(tableName = {"man_order", "man_order_type"})
public R pageOut(@RequestBody Map<String, Object> map) {
String condition = map.getOrDefault("condition", "").toString();
BaseParam baseParam = buildParam(map, BaseParam.class);
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/TaskStsType.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/TaskStsType.java
index 07b4d92..e3c42c1 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/TaskStsType.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/TaskStsType.java
@@ -3,14 +3,14 @@
public enum TaskStsType {
GENERATE_IN(1L, "鐢熸垚鍏ュ簱浠诲姟"),
- WCS_EXECUTE_IN(2L, "WCS鎵ц涓�"),
- WCS_CONTAINER_RECEIVE(3L, "WCS瀹瑰櫒鍒拌揪鎵弿鍖�"),
+ WCS_EXECUTE_IN(2L, "鍏ュ簱鎵ц涓�"),
+ WCS_CONTAINER_RECEIVE(3L, "瀹瑰櫒鍒拌揪鎵弿鍖�"),
WCS_CONVEYOR_START(14L, "閫氱煡瀹瑰櫒娴佸姩"),
- WCS_TOTE_LOAD(4L, "WCS鏈哄櫒浜哄彇绠�"),
+ WCS_TOTE_LOAD(4L, "鏈哄櫒浜哄彇绠�"),
- WCS_TOTE_UNLOAD(5L, "WCS鏈哄櫒浜烘斁绠�"),
+ WCS_TOTE_UNLOAD(5L, "鏈哄櫒浜烘斁绠�"),
WCS_PUTAWAY_SUCESS(10L, "浠诲姟鎴愬姛"),
@@ -24,7 +24,19 @@
UPDATED_IN(100L, "搴撳瓨鏇存柊瀹屾垚"),
GENERATE_OUT(101L, "鐢熸垚鍑哄簱浠诲姟"),
- WCS_EXECUTE_OUT(102L, "WCS鎵ц涓�"),
+
+ WCS_EXECUTE_OUT(102L, "鍑哄簱鎵ц涓�"),
+
+ WCS_EXECUTE_OUT_TOTE_LOAD(113L, "鏈哄櫒浜哄彇绠�"),
+
+ WCS_EXECUTE_OUT_TOTE_UNLOAD(114L, "鏈哄櫒浜烘斁绠�"),
+
+ WCS_EXECUTE_OUT_TASK_DONE(115L, "浠诲姟鐘舵�佸洖璋冨畬鎴�"),
+
+ WCS_EXECUTE_OUT_ARRIVED(116L, "瀹瑰櫒鍒拌揪鎵爜鍖�"),
+
+ WCS_EXECUTE_OUT_CONVEYOR(117L, "閫氱煡瀹瑰櫒娴佸姩"),
+
WAVE_SEED(198L, "鎾涓�"),
COMPLETE_OUT(199L, "鍑哄簱瀹屾垚"),
UPDATED_OUT(200L, "搴撳瓨鏇存柊瀹屾垚"),
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 e71501d..eb495cf 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
@@ -778,7 +778,7 @@
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void orderOutMergeWave(OrderOutMergeParamDto dto) {
if(dto == null){
throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
@@ -929,8 +929,10 @@
}
}
+ //TODO 纭鍚庯紝闇�灏嗘敞閲婃墦寮�
String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
- WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
+// WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
+ WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, waveId));
if (waveDetl == null) {
throw new CoolException("娉㈡鏁版嵁涓嶅瓨鍦�");
}
@@ -939,7 +941,6 @@
if (!waveDetlService.updateById(waveDetl)) {
throw new CoolException("娉㈡鏁版嵁鏇存柊澶辫触");
}
-
}
//搴撲綅F => R
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java
index 6208965..197fb2f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java
@@ -1,10 +1,14 @@
package com.zy.asrs.wms.asrs.service;
import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
+import com.zy.asrs.wms.system.entity.Host;
+import java.util.List;
public interface MobileService {
boolean batchMergeOrders(BatchMergeOrdersParam ordersParam);
+
+ List<Host> getHosts();
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index 1cfb59d..2b4fb39 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -8,20 +8,24 @@
import com.zy.asrs.wms.asrs.service.MobileService;
import com.zy.asrs.wms.asrs.service.WaitPakinService;
import com.zy.asrs.wms.asrs.service.WorkService;
+import com.zy.asrs.wms.system.entity.Host;
+import com.zy.asrs.wms.system.service.HostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
+import java.util.List;
@Service
public class MobileServiceImpl implements MobileService {
@Autowired
private WaitPakinService waitPakinService;
-
@Autowired
private WorkService workService;
+ @Autowired
+ private HostService hostService;
@Override
@Transactional
@@ -51,4 +55,9 @@
}
return false;
}
+
+ @Override
+ public List<Host> getHosts() {
+ return hostService.list();
+ }
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
index 984ff14..9ca41cb 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
@@ -430,7 +430,7 @@
task.setTaskSts(TaskStsType.COMPLETE_IN.id);//99.鍏ュ簱瀹屾垚
}else {
//鍑哄簱
- TaskDetl taskDetl = taskDetls.get(0);
+ TaskDetl taskDetl = taskDetls.get(0); //TODO 鍑哄簱娴佺▼寰呯‘璁わ紝ESS鍙栬揣鍚庯紝杈撻�佺嚎娴佽浆鍒版壂鐮佸鐘舵��
if (taskDetl.getWaveId() == null) {
task.setTaskSts(TaskStsType.COMPLETE_OUT.id);//199.鍑哄簱瀹屾垚
}else {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
index 8c62e0c..f76ea3a 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -44,7 +44,7 @@
@Autowired
private WaveService waveService;
-// @Scheduled(cron = "0/3 * * * * ? ")
+ @Scheduled(cron = "0/30 * * * * ? ")
@Transactional
public void inExecute() {
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
index fb9cc2e..ca3385f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -8,6 +8,7 @@
import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
import com.zy.asrs.wms.asrs.service.*;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -17,6 +18,7 @@
import java.util.Date;
import java.util.List;
+@Slf4j
@Component
public class TaskTimer {
@@ -57,7 +59,7 @@
private OrderDetlService orderDetlService;
-// @Scheduled(cron = "0/3 * * * * ? ")
+ @Scheduled(cron = "0/30 * * * * ? ")
@Transactional
public void inExecute() {
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
@@ -141,6 +143,7 @@
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
if (loc == null) {
+ log.info("搴撲綅涓嶅瓨鍦�" + "=======>" + task.getTargetLoc());
throw new CoolException("搴撲綅涓嶅瓨鍦�");
}
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
index 05e8e9e..08238a8 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
@@ -6,12 +6,12 @@
select * from view_man_loc_detl ld
where matnr = #{matnr}
and freeze = 0
- <if test="batch!=null">
+ <if test="batch != null and batch != ''">
and batch = #{batch}
</if>
<if test="param!=null and param.size()>0">
<foreach item="item" collection="param" index="index">
- <if test="item.value!=null">
+ <if test="item.value!=null and item.value != ''">
and ${item.name} = #{item.value}
</if>
</foreach>
--
Gitblit v1.9.1