Commit 1d7059e0408a6b658d2b5149317aea74dfc5ca29
1 parent
959f49b6
模拟工位叫料
Showing
10 changed files
with
252 additions
and
44 deletions
ant-design-vue-jeecg/src/api/api.js
... | ... | @@ -275,7 +275,7 @@ export const qualityInventoryDetail = (params) => postAction('/inventory/invento |
275 | 275 | //质检登记 |
276 | 276 | export const qualityRegister = (params) => postAction('/task/taskHeader/qualityRegister', params); |
277 | 277 | //创建出库任务,AGV去接 |
278 | -export const createShipmentTaskByAgv = (params) => postAction('/shipment/shipmentCombination/createShipmentTask', params); | |
278 | +export const createShipmentTaskByAgv = (params) => postAction('/shipment/shipmentCombination/createShipmentTaskByAgv', params); | |
279 | 279 | |
280 | 280 | // 中转HTTP请求 |
281 | 281 | export const transitRESTful = { |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
... | ... | @@ -122,8 +122,8 @@ |
122 | 122 | </span> |
123 | 123 | |
124 | 124 | <span slot="action" slot-scope="text, record"> |
125 | - <a v-if="record.status == 0 && record.zoneType =='A'" @click="createShipmentTaskByAgv(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a> | |
126 | - <a v-if="record.status == 0 && record.zoneType !='A'" @click="selectPort(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a> | |
125 | +<!-- <a v-if="record.status == 0 && record.zoneType =='A'" @click="selectPort(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a>--> | |
126 | + <a v-if="record.status == 0 && record.zoneType =='L'" @click="selectPort(record)"><a-button type="primary">生成任务</a-button><a-divider type="vertical"/></a> | |
127 | 127 | <a-popconfirm v-if="record.status == 0" v-has="'shipmentContainerHeader:delete'" title="确定取消配盘吗?" @confirm="() => handleDelete(record.id)"> |
128 | 128 | <a><a-button type="danger">取消配盘</a-button> <a-divider type="vertical"/></a> |
129 | 129 | </a-popconfirm> |
... | ... | @@ -140,6 +140,7 @@ |
140 | 140 | |
141 | 141 | <shipmentContainerHeader-modal ref="modalForm" @ok="modalFormOk"></shipmentContainerHeader-modal> |
142 | 142 | <shipmentContainerSelect-modal ref="modalForm2" @ok="modalFormOk"></shipmentContainerSelect-modal> |
143 | + <createShipmentTaskByAgv-modal ref="modalForm3" @ok="modalFormOk"></createShipmentTaskByAgv-modal> | |
143 | 144 | </a-card> |
144 | 145 | </template> |
145 | 146 | |
... | ... | @@ -154,11 +155,13 @@ import '@/assets/less/TableExpand.less' |
154 | 155 | import {createShipmentTask, execute, getCompanyList, getCustomerList, getShipmentTypeList, getZoneList} from '@/api/api' |
155 | 156 | import {selectSortingPort, createShipmentTaskByAgv} from '@/api/api' |
156 | 157 | import ShipmentContainerSelectModal from "./modules/ShipmentContainerSelectModal"; |
158 | +import CreateShipmentTaskByAgvModal from "./modules/CreateShipmentTaskByAgvModal"; | |
157 | 159 | |
158 | 160 | export default { |
159 | 161 | name: "ShipmentContainerHeaderList", |
160 | 162 | mixins: [JeecgListMixin], |
161 | 163 | components: { |
164 | + CreateShipmentTaskByAgvModal, | |
162 | 165 | ShipmentContainerSelectModal, |
163 | 166 | ShipmentContainerDetailList, |
164 | 167 | ShipmentContainerHeaderModal |
... | ... | @@ -341,6 +344,10 @@ export default { |
341 | 344 | this.$refs.modalForm2.edit(record); |
342 | 345 | this.$refs.modalForm2.title = "选择出库口"; |
343 | 346 | }, |
347 | + openCreateShipmentTaskAgv(record) { | |
348 | + this.$refs.modalForm3.edit(record); | |
349 | + this.$refs.modalForm3.title = "选择出库口"; | |
350 | + }, | |
344 | 351 | createShipmentTaskByAgv(record) { |
345 | 352 | this.loading = true; |
346 | 353 | createShipmentTaskByAgv(record).then((res) => { |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/modules/CreateShipmentTaskByAgvModal.vue
0 → 100644
1 | +<template> | |
2 | + <j-modal | |
3 | + :title="title" | |
4 | + :width="width" | |
5 | + :visible="visible" | |
6 | + :confirmLoading="confirmLoading" | |
7 | + switchFullscreen | |
8 | + @ok="handleOk" | |
9 | + @cancel="handleCancel" | |
10 | + cancelText="关闭"> | |
11 | + <a-spin :spinning="confirmLoading"> | |
12 | + <a-form-model ref="form" :model="model" :rules="validatorRules"> | |
13 | + <a-row> | |
14 | + <a-col :span="24"> | |
15 | + <a-form-model-item label="出库口" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="toPort"> | |
16 | + <a-select | |
17 | + show-search | |
18 | + placeholder="请选择出库口" | |
19 | + option-filter-prop="children" | |
20 | + v-model="model.toPort"> | |
21 | + <a-select-option v-for="item in portList" :key="item.name" :value="item.code">{{ | |
22 | + item.name | |
23 | + }} | |
24 | + </a-select-option> | |
25 | + </a-select> | |
26 | + </a-form-model-item> | |
27 | + <a-col :span="24"> | |
28 | + <a-form-model-item label="去向工位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="toAgvPort"> | |
29 | + <a-input v-model="model.toAgvPort" placeholder="请输入去向工位" style="width: 100%"/> | |
30 | + </a-form-model-item> | |
31 | + </a-col> | |
32 | + </a-col> | |
33 | + </a-row> | |
34 | + </a-form-model> | |
35 | + </a-spin> | |
36 | + </j-modal> | |
37 | +</template> | |
38 | + | |
39 | +<script> | |
40 | + | |
41 | +import {httpAction} from '@/api/manage' | |
42 | +import {validateDuplicateValue} from '@/utils/util' | |
43 | +import {createShipmentTask, createShipmentTaskByAgv, createShipmentBatchTask} from '@/api/api' | |
44 | +import {selectSortingPort} from '@/api/api' | |
45 | + | |
46 | +export default { | |
47 | + name: "CreateShipmentTaskByAgvModal", | |
48 | + components: {}, | |
49 | + props: { | |
50 | + mainId: { | |
51 | + type: String, | |
52 | + required: false, | |
53 | + default: '' | |
54 | + } | |
55 | + }, | |
56 | + data() { | |
57 | + return { | |
58 | + portList: [], | |
59 | + flag:'0', | |
60 | + shipmentContainerHeaderList:[], | |
61 | + title: "操作", | |
62 | + width: 500, | |
63 | + visible: false, | |
64 | + model: {}, | |
65 | + labelCol: { | |
66 | + xs: {span: 24}, | |
67 | + sm: {span: 5}, | |
68 | + }, | |
69 | + wrapperCol: { | |
70 | + xs: {span: 24}, | |
71 | + sm: {span: 16}, | |
72 | + }, | |
73 | + | |
74 | + confirmLoading: false, | |
75 | + validatorRules: {}, | |
76 | + url: { | |
77 | + createTask: "/shipment/shipmentContainerHeader/createShipmentTask", | |
78 | + } | |
79 | + | |
80 | + } | |
81 | + }, | |
82 | + created() { | |
83 | + //备份model原始值 | |
84 | + this.modelDefault = JSON.parse(JSON.stringify(this.model)); | |
85 | + }, | |
86 | + methods: { | |
87 | + add() { | |
88 | + this.edit(this.modelDefault); | |
89 | + }, | |
90 | + edit(record) { | |
91 | + this.flag='0'; | |
92 | + this.getPortList(record); | |
93 | + }, | |
94 | + batchEdit(record) { | |
95 | + this.visible = true; | |
96 | + this.flag='1'; | |
97 | + this.getPortList(record[0]) | |
98 | + this.shipmentContainerHeaderList=record; | |
99 | + }, | |
100 | + close() { | |
101 | + this.$emit('close'); | |
102 | + this.visible = false; | |
103 | + this.$refs.form.clearValidate(); | |
104 | + }, | |
105 | + handleOk() { | |
106 | + const that = this; | |
107 | + if (this.flag=='1'){ | |
108 | + this.$refs.form.validate(valid => { | |
109 | + if (valid) { | |
110 | + this.shipmentContainerHeaderList.forEach(x=>{ | |
111 | + x["toPort"]=that.model.toPort; | |
112 | + x["toAgvPort"]=that.model.toAgvPort; | |
113 | + }) | |
114 | + createShipmentBatchTask(this.shipmentContainerHeaderList).then((res) => { | |
115 | + if (res.success) { | |
116 | + that.$message.success(res.message); | |
117 | + that.$emit('ok'); | |
118 | + } else { | |
119 | + that.$message.warning(res.message); | |
120 | + } | |
121 | + }).finally(() => { | |
122 | + that.confirmLoading = false; | |
123 | + that.close(); | |
124 | + }); | |
125 | + }else { | |
126 | + return false | |
127 | + } | |
128 | + }) | |
129 | + | |
130 | + }else{ | |
131 | + // 触发表单验证 | |
132 | + this.$refs.form.validate(valid => { | |
133 | + if (valid) { | |
134 | + that.confirmLoading = true; | |
135 | + createShipmentTaskByAgv(this.model).then((res) => { | |
136 | + if (res.success) { | |
137 | + that.$message.success(res.message); | |
138 | + that.$emit('ok'); | |
139 | + } else { | |
140 | + that.$message.warning(res.message); | |
141 | + } | |
142 | + }).finally(() => { | |
143 | + that.confirmLoading = false; | |
144 | + that.close(); | |
145 | + }); | |
146 | + } else { | |
147 | + return false | |
148 | + } | |
149 | + }) | |
150 | + } | |
151 | + | |
152 | + | |
153 | + }, | |
154 | + handleCancel() { | |
155 | + this.close() | |
156 | + }, | |
157 | + getPortList(record) { | |
158 | + console.log("getPortList"); | |
159 | + selectSortingPort(record).then((res) => { | |
160 | + if (res.success) { | |
161 | + this.portList = res.result; | |
162 | + console.log("getPortList11"); | |
163 | + this.model = Object.assign({}, record); | |
164 | + this.visible = true; | |
165 | + } | |
166 | + }); | |
167 | + } | |
168 | + | |
169 | + } | |
170 | +} | |
171 | +</script> | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/AutoCreateAgvTask.java
... | ... | @@ -36,18 +36,18 @@ public class AutoCreateAgvTask implements Job { |
36 | 36 | |
37 | 37 | @Override |
38 | 38 | public void execute(JobExecutionContext context) throws JobExecutionException { |
39 | - log.info(String.format("AutoSendAgvTask 下发AGV任务开始执行,时间:" + DateUtils.getTimestamp())); | |
39 | + log.info(String.format("AutoCreateAgvTask 生成AGV任务开始执行,时间:" + DateUtils.getTimestamp())); | |
40 | 40 | LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); |
41 | - taskHeaderLambdaQueryWrapper.eq(TaskHeader::getSendAgv, QuantityConstant.AGV_NEED_SEND).le(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_RELEASE) | |
42 | - .eq(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLESHIPMENT).ge(TaskHeader::getCreateTime, DateUtil.offsetDay(new Date(), -180)) | |
43 | - .orderByAsc(TaskHeader::getCreateTime); | |
41 | + taskHeaderLambdaQueryWrapper.eq(TaskHeader::getCreateAgvTask, QuantityConstant.AGV_CREATE_NEED) | |
42 | + .eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED).eq(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLESHIPMENT) | |
43 | + .ge(TaskHeader::getCreateTime, DateUtil.offsetDay(new Date(), -180)).orderByAsc(TaskHeader::getCreateTime); | |
44 | 44 | List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); |
45 | 45 | for (TaskHeader taskHeader : taskHeaderList) { |
46 | 46 | String containerCode = taskHeader.getContainerCode(); |
47 | 47 | String warehouseCode = taskHeader.getWarehouseCode(); |
48 | 48 | String zoneCode = taskHeader.getZoneCode(); |
49 | - String fromPortCode = taskHeader.getFromLocationCode(); | |
50 | - String toPortCode = taskHeader.getToPortCode(); | |
49 | + String fromPortCode = taskHeader.getToPortCode(); | |
50 | + String toPortCode = taskHeader.getToAgvPort(); | |
51 | 51 | AgvTask agvTask = new AgvTask(); |
52 | 52 | agvTask.setWarehouseCode(warehouseCode); |
53 | 53 | agvTask.setZoneCode(zoneCode); |
... | ... | @@ -63,7 +63,7 @@ public class AutoCreateAgvTask implements Job { |
63 | 63 | taskHeader = new TaskHeader(); |
64 | 64 | taskHeader.setId(taskHeaderId); |
65 | 65 | taskHeader.setAgvTaskId(agvTask.getId()); |
66 | - taskHeader.setSendAgv(QuantityConstant.AGV_SEND_OK); | |
66 | + taskHeader.setCreateAgvTask(QuantityConstant.AGV_CREATE_OK); | |
67 | 67 | if (!taskHeaderService.updateById(taskHeader)) { |
68 | 68 | throw new JeecgBootException("更新下发任务状态失败"); |
69 | 69 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java
... | ... | @@ -240,10 +240,11 @@ public class ShipmentCombinationController { |
240 | 240 | } |
241 | 241 | |
242 | 242 | /** |
243 | - * 创建出库任务,AGV去接 | |
243 | + * 立库区 | |
244 | + * 创建出库任务, 出库任务完成以后,AGV去接 | |
244 | 245 | * @return |
245 | 246 | */ |
246 | - @ApiOperation(value = "创建出库任务,AGV去接", notes = "创建出库任务,AGV去接") | |
247 | + @ApiOperation(value = "创建出库任务, 出库任务完成以后,AGV去接", notes = "创建出库任务, 出库任务完成以后,AGV去接") | |
247 | 248 | @PostMapping("/createShipmentTaskByAgv") |
248 | 249 | @ResponseBody |
249 | 250 | public Result createShipmentTaskByAgv(@RequestBody ShipmentContainerHeader shipmentContainerHeader, HttpServletRequest req) { |
... | ... | @@ -251,4 +252,19 @@ public class ShipmentCombinationController { |
251 | 252 | Result result = shipmentCombinationService.createShipmentTask(shipmentContainerHeader, QuantityConstant.TASK_TYPE_WHOLESHIPMENT, warehouseCode, 0, 0, 0); |
252 | 253 | return result; |
253 | 254 | } |
255 | + | |
256 | + /** | |
257 | + * AGV库区 | |
258 | + * 同时创建出库任务和AGV任务 | |
259 | + * @return | |
260 | + */ | |
261 | + @ApiOperation(value = "同时创建出库任务和AGV任务", notes = "同时创建出库任务和AGV任务") | |
262 | + @PostMapping("/createShipmentTaskAndAgvTask") | |
263 | + @ResponseBody | |
264 | + public Result createShipmentTaskAndAgvTask(@RequestBody ShipmentContainerHeader shipmentContainerHeader, HttpServletRequest req) { | |
265 | + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); | |
266 | + Result result = shipmentCombinationService.createShipmentTask(shipmentContainerHeader, QuantityConstant.TASK_TYPE_WHOLESHIPMENT, warehouseCode, 0, 0, 0); | |
267 | + | |
268 | + return result; | |
269 | + } | |
254 | 270 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
... | ... | @@ -852,6 +852,8 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
852 | 852 | int sequenceNumber) { |
853 | 853 | Integer preTaskNo = 0; |
854 | 854 | boolean success = false; |
855 | + String toPort = shipmentContainerHeader.getToPort(); | |
856 | + String toAgvPort = shipmentContainerHeader.getToAgvPort(); | |
855 | 857 | shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerHeader.getId()); |
856 | 858 | if (shipmentContainerHeader == null) { |
857 | 859 | return Result.error("生成出库任务时, 出库组盘头" + "未找到,操作中止"); |
... | ... | @@ -871,7 +873,6 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
871 | 873 | String fromLocationCode = shipmentContainerHeader.getFromLocationCode(); |
872 | 874 | String toLocationCode = shipmentContainerHeader.getToLocationCode(); |
873 | 875 | String containerCode = shipmentContainerHeader.getContainerCode(); |
874 | - String toPort = shipmentContainerHeader.getToPort(); | |
875 | 876 | if (StringUtils.isEmpty(fromLocationCode)) { |
876 | 877 | return Result.error("生成出库任务时, 出库组盘头没有起始库位编码"); |
877 | 878 | } |
... | ... | @@ -936,13 +937,16 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
936 | 937 | taskHeader.setInnernalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT); |
937 | 938 | taskHeader.setZoneCode(zoneCode); |
938 | 939 | taskHeader.setShipmentOrder(shipmentOrder); |
939 | - taskHeader.setToAgvPort(shipmentContainerHeader.getToAgvPort()); | |
940 | + if (StringUtils.isNotEmpty(toAgvPort)) { | |
941 | + taskHeader.setToAgvPort(toAgvPort); | |
942 | + taskHeader.setCreateAgvTask(QuantityConstant.AGV_CREATE_NEED); | |
943 | + } | |
940 | 944 | taskHeader.setSequence(sequence); |
941 | 945 | taskHeader.setSequenceNumber(sequenceNumber); |
942 | 946 | taskHeader.setWarehouseCode(warehouseCode); |
943 | 947 | taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); |
944 | 948 | taskHeader.setContainerCode(containerCode); |
945 | - taskHeader.setToPortCode(shipmentContainerHeader.getToPort()); | |
949 | + taskHeader.setToPortCode(toPort); | |
946 | 950 | taskHeader.setFromLocationCode(fromLocationCode); |
947 | 951 | if (taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT) { |
948 | 952 | taskHeader.setToLocationCode(toLocationCode); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/agvTask/service/IAgvTaskService.java
... | ... | @@ -16,30 +16,32 @@ public interface IAgvTaskService extends IService<AgvTask> { |
16 | 16 | /** |
17 | 17 | * 新建AGV任务 |
18 | 18 | */ |
19 | - public Result addAgvTask(AgvTask agvTask, String warehouseCode); | |
19 | + Result addAgvTask(AgvTask agvTask, String warehouseCode); | |
20 | 20 | |
21 | 21 | /** |
22 | 22 | * 下发AGV任务给ACS系统 |
23 | 23 | */ |
24 | - public Result sendAgvTaskToAcs(Integer taskId); | |
24 | + Result sendAgvTaskToAcs(Integer taskId); | |
25 | 25 | |
26 | 26 | /** |
27 | 27 | * 完成AGV任务 |
28 | 28 | */ |
29 | - public Result completeAgvTask(Integer taskId); | |
29 | + Result completeAgvTask(Integer taskId); | |
30 | 30 | |
31 | 31 | /** |
32 | 32 | * 取消AGV任务 |
33 | 33 | */ |
34 | - public Result cancelAgvTask(Integer taskId); | |
34 | + Result cancelAgvTask(Integer taskId); | |
35 | 35 | |
36 | - public AgvTask getAgvTaskByPort(String portCode, String warehouseCode); | |
36 | + AgvTask getAgvTaskByPort(String portCode, String warehouseCode); | |
37 | 37 | |
38 | - public AgvTask getAgvTaskBuFromPort(String fromPortCode, String warehouseCode); | |
38 | + AgvTask getAgvTaskBuContainerCode(String containerCode, String warehouseCode); | |
39 | 39 | |
40 | - public AgvTask getAgvTaskBuToPort(String toPortCode, String warehouseCode); | |
40 | + AgvTask getAgvTaskBuFromPort(String fromPortCode, String warehouseCode); | |
41 | 41 | |
42 | - public AgvTask getAgvTaskById(Integer agvTaskId, String warehouseCode); | |
42 | + AgvTask getAgvTaskBuToPort(String toPortCode, String warehouseCode); | |
43 | 43 | |
44 | - public Result editAgvTask(AgvTask agvTask,String warehouseCode); | |
44 | + AgvTask getAgvTaskById(Integer agvTaskId, String warehouseCode); | |
45 | + | |
46 | + Result editAgvTask(AgvTask agvTask, String warehouseCode); | |
45 | 47 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/agvTask/service/impl/AgvTaskServiceImpl.java
... | ... | @@ -43,6 +43,8 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskMapper, AgvTask> impl |
43 | 43 | private ITaskHeaderService taskHeaderService; |
44 | 44 | @Resource |
45 | 45 | private IInventoryDetailService inventoryDetailService; |
46 | + @Resource | |
47 | + private IAgvTaskService agvTaskService; | |
46 | 48 | |
47 | 49 | @Override |
48 | 50 | public Result addAgvTask(AgvTask agvTask, String warehouseCode) { |
... | ... | @@ -54,16 +56,19 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskMapper, AgvTask> impl |
54 | 56 | if (container == null) { |
55 | 57 | return Result.error("生成AGV任务,容器号:" + containerCode + "未找到"); |
56 | 58 | } |
57 | - if (!container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) { | |
58 | - if (!containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode)) { | |
59 | - throw new JeecgBootException("生成AGV任务,锁定容器失败:" + containerCode); | |
60 | - } | |
59 | +// if (!container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) { | |
60 | +// if (!containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode)) { | |
61 | +// throw new JeecgBootException("生成AGV任务,锁定容器失败:" + containerCode); | |
62 | +// } | |
63 | +// } | |
64 | + if (agvTaskService.getAgvTaskBuContainerCode(containerCode, warehouseCode) != null) { | |
65 | + return Result.error("生成AGV任务失败,已经生成AGV任务"); | |
61 | 66 | } |
62 | 67 | agvTask.setWarehouseCode(warehouseCode); |
63 | 68 | agvTask.setTaskType(QuantityConstant.AGV_TYPE_TAKE_AND_RELEASE); |
64 | 69 | agvTask.setStatus(QuantityConstant.AGV_TASK_STATUS_BUILD); |
65 | 70 | agvTask.setPriority(10); |
66 | - boolean success = save(agvTask); | |
71 | + boolean success = agvTaskService.save(agvTask); | |
67 | 72 | if (!success) { |
68 | 73 | return Result.OK("添加失败"); |
69 | 74 | } |
... | ... | @@ -182,20 +187,12 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskMapper, AgvTask> impl |
182 | 187 | throw new JeecgBootException("取消AGV任务。 更新终点库位状态失败"); |
183 | 188 | } |
184 | 189 | } |
185 | - Container container = containerService.getContainerByCode(containerCode, warehouseCode); | |
186 | - if (container == null) { | |
187 | - throw new JeecgBootException("取消AGV任务。 根据容器编码没有找到容器"); | |
188 | - } | |
189 | 190 | // 2023-04-11 托盘状态与填充状态分离 |
190 | 191 | // String containerStatus = QuantityConstant.STATUS_CONTAINER_EMPTY; |
191 | 192 | // List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByContainerCode(containerCode, warehouseCode); |
192 | 193 | // if (inventoryDetailList.size() != 0) { |
193 | 194 | // containerStatus = QuantityConstant.STATUS_CONTAINER_SOME; |
194 | 195 | // } |
195 | - success = containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode); | |
196 | - if (!success) { | |
197 | - throw new JeecgBootException("取消AGV任务。 更新容器状态失败"); | |
198 | - } | |
199 | 196 | int status = agvTask.getStatus(); |
200 | 197 | if (status != QuantityConstant.AGV_TASK_STATUS_BUILD) { |
201 | 198 | Result result = acsService.cancelAGVTask(agvTask); |
... | ... | @@ -220,9 +217,19 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskMapper, AgvTask> impl |
220 | 217 | } |
221 | 218 | |
222 | 219 | @Override |
220 | + public AgvTask getAgvTaskBuContainerCode(String containerCode, String warehouseCode) { | |
221 | + LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
222 | + agvTaskLambdaQueryWrapper.eq(AgvTask::getContainerCode, containerCode).eq(AgvTask::getWarehouseCode, warehouseCode).lt(AgvTask::getStatus, | |
223 | + QuantityConstant.AGV_TASK_STATUS_COMPLETED); | |
224 | + AgvTask agvTask = getOne(agvTaskLambdaQueryWrapper); | |
225 | + return agvTask; | |
226 | + } | |
227 | + | |
228 | + @Override | |
223 | 229 | public AgvTask getAgvTaskBuFromPort(String fromPortCode, String warehouseCode) { |
224 | 230 | LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper = Wrappers.lambdaQuery(); |
225 | - agvTaskLambdaQueryWrapper.eq(AgvTask::getFromPort, fromPortCode).eq(AgvTask::getWarehouseCode, warehouseCode); | |
231 | + agvTaskLambdaQueryWrapper.eq(AgvTask::getFromPort, fromPortCode).eq(AgvTask::getWarehouseCode, warehouseCode).lt(AgvTask::getStatus, | |
232 | + QuantityConstant.AGV_TASK_STATUS_COMPLETED); | |
226 | 233 | AgvTask agvTask = getOne(agvTaskLambdaQueryWrapper); |
227 | 234 | return agvTask; |
228 | 235 | } |
... | ... | @@ -230,7 +237,8 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskMapper, AgvTask> impl |
230 | 237 | @Override |
231 | 238 | public AgvTask getAgvTaskBuToPort(String toPortCode, String warehouseCode) { |
232 | 239 | LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper = Wrappers.lambdaQuery(); |
233 | - agvTaskLambdaQueryWrapper.eq(AgvTask::getToPort, toPortCode).eq(AgvTask::getWarehouseCode, warehouseCode); | |
240 | + agvTaskLambdaQueryWrapper.eq(AgvTask::getToPort, toPortCode).eq(AgvTask::getWarehouseCode, warehouseCode).lt(AgvTask::getStatus, | |
241 | + QuantityConstant.AGV_TASK_STATUS_COMPLETED); | |
234 | 242 | AgvTask agvTask = getOne(agvTaskLambdaQueryWrapper); |
235 | 243 | return agvTask; |
236 | 244 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
... | ... | @@ -123,7 +123,7 @@ public class TaskHeader implements Serializable { |
123 | 123 | @ApiModelProperty(value = "AGV关联任务ID") |
124 | 124 | private Integer agvTaskId; |
125 | 125 | @ApiModelProperty(value = "生成agv任务") |
126 | - private Integer sendAgv; | |
126 | + private Integer createAgvTask; | |
127 | 127 | @ApiModelProperty(value = "回传MES信息") |
128 | 128 | private Integer backMes; |
129 | 129 | @ApiModelProperty(value = "MES提交次数") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
... | ... | @@ -487,12 +487,12 @@ public class QuantityConstant { |
487 | 487 | // 待确认 |
488 | 488 | public static final String QUALITY_DISUSSED = "discussed"; |
489 | 489 | |
490 | + // 需要发送AGV任务成功 | |
491 | + public static final int AGV_CREATE_NEED = 1; | |
490 | 492 | // 发送AGV任务成功 |
491 | - public static final int AGV_NEED_SEND = 0; | |
492 | - // 发送AGV任务成功 | |
493 | - public static final int AGV_SEND_OK = 1; | |
493 | + public static final int AGV_CREATE_OK = 2; | |
494 | 494 | // 发送AGV任务异常 |
495 | - public static final int AGV_SEND_ERROR = 2; | |
495 | + public static final int AGV_CREATE_ERROR = 3; | |
496 | 496 | // 回传MES成功 |
497 | 497 | public static final int MES_SEND_OK = 1; |
498 | 498 | // 回传MES异常 |
... | ... |