Commit 202c573e582e58ece14de456db99179e3fe49bcf
Merge branch 'develop' of http://www.huahengrobot.com:90/wms/wms4.git into develop
Showing
12 changed files
with
193 additions
and
81 deletions
ant-design-vue-jeecg/src/api/api.js
... | ... | @@ -198,7 +198,11 @@ export const completeAgv = (params) => postAction('/task/agvTask/complete?ids=' |
198 | 198 | //取消AGV任务 |
199 | 199 | export const cancelAgv = (params) => postAction('/task/agvTask/cancel?ids=' + params, params); |
200 | 200 | //修复空出数据 |
201 | -export const handleEmptyOut = (params) => postAction('/task/taskHeader/handleEmptyOut?ids=' + params, params); | |
201 | +export const handleEmptyOut = (params) => postAction('/task/taskHeader/handleEmptyOut?id=' + params, params); | |
202 | +//修复取货错数据 | |
203 | +export const handlePickupError = (params) => postAction('/task/taskHeader/handlePickupError?id=' + params, params); | |
204 | +//修复重入数据 | |
205 | +export const handleDoubleIn = (params) => postAction('/task/taskHeader/handleDoubleIn?id=' + params, params); | |
202 | 206 | // 中转HTTP请求 |
203 | 207 | export const transitRESTful = { |
204 | 208 | get: (url, parameter) => getAction(getTransitURL(url), parameter), |
... | ... |
ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
... | ... | @@ -153,6 +153,12 @@ |
153 | 153 | |
154 | 154 | <span slot="action" slot-scope="text, record"> |
155 | 155 | <a v-if="record.status == 1" v-has="'taskHeader:executeTask'" @click="executeTask(record)">执行<a-divider type="vertical"/></a> |
156 | + <a v-if="record.isEmptyOut == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handleEmptyOutTask(record)">修复空出数据 | |
157 | + <a-divider type="vertical"/></a> | |
158 | + <a v-if="record.isPickupError == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handlePickupErrorTask(record)">修复取货错数据 | |
159 | + <a-divider type="vertical"/></a> | |
160 | + <a v-if="record.isDoubleIn == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handleDoubleInTask(record)">修复重入数据 | |
161 | + <a-divider type="vertical"/></a> | |
156 | 162 | <a v-if="record.status < 100" v-has="'taskHeader:cancelTask'" @click="cancelTask(record)">取消<a-divider type="vertical"/></a> |
157 | 163 | <a v-if="record.status < 100" v-has="'taskHeader:completeTask'" @click="completeTask(record)">完成<a-divider type="vertical"/></a> |
158 | 164 | <a-dropdown> |
... | ... | @@ -195,7 +201,7 @@ import {initDictOptions, filterMultiDictText} from '@/components/dict/JDictSelec |
195 | 201 | import '@/assets/less/TableExpand.less' |
196 | 202 | import {completeTaskByWMS, cancelTask} from '@/api/api' |
197 | 203 | import {execute} from '@/api/api' |
198 | -import {getZoneList} from '@/api/api' | |
204 | +import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/api/api' | |
199 | 205 | import EmptyInTaskModal from './modules/EmptyInTaskModal' |
200 | 206 | import ManyEmptyInTaskModal from "./modules/ManyEmptyInTaskModal"; |
201 | 207 | |
... | ... | @@ -444,6 +450,45 @@ export default { |
444 | 450 | this.searchQuery(); |
445 | 451 | }); |
446 | 452 | }, |
453 | + handleEmptyOutTask(record) { | |
454 | + this.loading = true; | |
455 | + this.model = Object.assign({}, record); | |
456 | + handleEmptyOut(this.model.id).then((res) => { | |
457 | + this.loading = false; | |
458 | + if (res.success) { | |
459 | + this.$message.success(res.message); | |
460 | + } else { | |
461 | + this.$message.error(res.message); | |
462 | + } | |
463 | + this.searchQuery(); | |
464 | + }); | |
465 | + }, | |
466 | + handlePickupErrorTask(record) { | |
467 | + this.loading = true; | |
468 | + this.model = Object.assign({}, record); | |
469 | + handlePickupError(this.model.id).then((res) => { | |
470 | + this.loading = false; | |
471 | + if (res.success) { | |
472 | + this.$message.success(res.message); | |
473 | + } else { | |
474 | + this.$message.error(res.message); | |
475 | + } | |
476 | + this.searchQuery(); | |
477 | + }); | |
478 | + }, | |
479 | + handleDoubleInTask(record) { | |
480 | + this.loading = true; | |
481 | + this.model = Object.assign({}, record); | |
482 | + handleDoubleIn(this.model.id).then((res) => { | |
483 | + this.loading = false; | |
484 | + if (res.success) { | |
485 | + this.$message.success(res.message); | |
486 | + } else { | |
487 | + this.$message.error(res.message); | |
488 | + } | |
489 | + this.searchQuery(); | |
490 | + }); | |
491 | + }, | |
447 | 492 | getSuperFieldList() { |
448 | 493 | let fieldList = []; |
449 | 494 | fieldList.push({type: 'int', value: 'taskType', text: '任务类型', dictCode: 'task_type'}) |
... | ... |
ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
... | ... | @@ -155,7 +155,11 @@ |
155 | 155 | <span slot="action" slot-scope="text, record"> |
156 | 156 | <a v-if="record.status == 1" v-has="'taskHeader:executeTask'" @click="executeTask(record)">执行 |
157 | 157 | <a-divider type="vertical"/></a> |
158 | - <a v-if="record.isEmptyOut == 1 && record.exceptionState == 0" v-has="'taskHeader:executeTask'" @click="handleEmptyOutTask(record)">修复空出数据 | |
158 | + <a v-if="record.isEmptyOut == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handleEmptyOutTask(record)">修复空出数据 | |
159 | + <a-divider type="vertical"/></a> | |
160 | + <a v-if="record.isPickupError == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handlePickupErrorTask(record)">修复取货错数据 | |
161 | + <a-divider type="vertical"/></a> | |
162 | + <a v-if="record.isDoubleIn == 1 && record.exceptionState == 1" v-has="'taskHeader:executeTask'" @click="handleDoubleInTask(record)">修复重入数据 | |
159 | 163 | <a-divider type="vertical"/></a> |
160 | 164 | <a v-if="record.status < 100" v-has="'taskHeader:cancelTask'" @click="cancelTask(record)">取消 |
161 | 165 | <a-divider type="vertical"/></a> |
... | ... | @@ -202,7 +206,7 @@ import {initDictOptions, filterMultiDictText} from '@/components/dict/JDictSelec |
202 | 206 | import '@/assets/less/TableExpand.less' |
203 | 207 | import {completeTaskByWMS, cancelTask} from '@/api/api' |
204 | 208 | import {execute} from '@/api/api' |
205 | -import {getZoneList, handleEmptyOut} from '@/api/api' | |
209 | +import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/api/api' | |
206 | 210 | import EmptyOutTaskModal from './modules/EmptyOutTaskModal' |
207 | 211 | import ManyEmptyOutTaskModal from "./modules/ManyEmptyOutTaskModal"; |
208 | 212 | |
... | ... | @@ -462,6 +466,32 @@ export default { |
462 | 466 | this.searchQuery(); |
463 | 467 | }); |
464 | 468 | }, |
469 | + handlePickupErrorTask(record) { | |
470 | + this.loading = true; | |
471 | + this.model = Object.assign({}, record); | |
472 | + handlePickupError(this.model.id).then((res) => { | |
473 | + this.loading = false; | |
474 | + if (res.success) { | |
475 | + this.$message.success(res.message); | |
476 | + } else { | |
477 | + this.$message.error(res.message); | |
478 | + } | |
479 | + this.searchQuery(); | |
480 | + }); | |
481 | + }, | |
482 | + handleDoubleInTask(record) { | |
483 | + this.loading = true; | |
484 | + this.model = Object.assign({}, record); | |
485 | + handleDoubleIn(this.model.id).then((res) => { | |
486 | + this.loading = false; | |
487 | + if (res.success) { | |
488 | + this.$message.success(res.message); | |
489 | + } else { | |
490 | + this.$message.error(res.message); | |
491 | + } | |
492 | + this.searchQuery(); | |
493 | + }); | |
494 | + }, | |
465 | 495 | getSuperFieldList() { |
466 | 496 | let fieldList = []; |
467 | 497 | fieldList.push({type: 'int', value: 'taskType', text: '任务类型', dictCode: 'task_type'}) |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java
... | ... | @@ -108,24 +108,24 @@ public class WcsController extends HuahengBaseController { |
108 | 108 | @ResponseBody |
109 | 109 | @ApiOperation("申请空托盘组出库") |
110 | 110 | @ApiLogger(apiName = "申请空托盘组出库", from = "WCS") |
111 | - public Result manyEmptyOut(@RequestBody ManyEmptyDomain manyEmptyDomain) { | |
112 | - String containerCode = manyEmptyDomain.getContainerCode(); | |
113 | - String toPortCode = manyEmptyDomain.getPort(); | |
114 | - String warehouseCode = manyEmptyDomain.getWarehouseCode(); | |
111 | + public Result manyEmptyOut(@RequestBody ManyEmptyOutDomain manyEmptyOutDomain) { | |
112 | + String toPortCode = manyEmptyOutDomain.getPort(); | |
113 | + String warehouseCode = manyEmptyOutDomain.getWarehouseCode(); | |
114 | + String zoneCode = manyEmptyOutDomain.getZoneCode(); | |
115 | 115 | if (StringUtils.isEmpty(warehouseCode)) { |
116 | 116 | return Result.error("申请空托盘组出库, 仓库号为空"); |
117 | 117 | } |
118 | 118 | if (StringUtils.isEmpty(toPortCode)) { |
119 | 119 | return Result.error("申请空托盘组出库, 出库口为空"); |
120 | 120 | } |
121 | - if (StringUtils.isEmpty(containerCode)) { | |
122 | - return Result.error("申请空托盘组出库, 托盘号为空"); | |
121 | + if (StringUtils.isEmpty(zoneCode)) { | |
122 | + return Result.error("申请空托盘组出库, 库区为空"); | |
123 | 123 | } |
124 | - String lockKey = warehouseCode + containerCode; | |
124 | + String lockKey = warehouseCode + zoneCode; | |
125 | 125 | Result result = handleMultiProcess("manyEmptyOut", lockKey, new MultiProcessListener() { |
126 | 126 | @Override |
127 | 127 | public Result<?> doProcess() { |
128 | - Result result = taskHeaderService.createManyEmptyOutTask(containerCode, toPortCode, warehouseCode); | |
128 | + Result result = wcsService.manyEmptyOut(zoneCode, toPortCode, warehouseCode); | |
129 | 129 | return result; |
130 | 130 | } |
131 | 131 | }); |
... | ... | @@ -230,7 +230,7 @@ public class WcsController extends HuahengBaseController { |
230 | 230 | String taskNo = taskEntity.getTaskNo(); |
231 | 231 | String warehouseCode = taskEntity.getWarehouseCode(); |
232 | 232 | String lockKey = warehouseCode; |
233 | - Result result = handleMultiProcess("pickupErrorHandle", warehouseCode, new MultiProcessListener() { | |
233 | + Result result = handleMultiProcess("pickupErrorHandle", lockKey, new MultiProcessListener() { | |
234 | 234 | @Override |
235 | 235 | public Result<?> doProcess() { |
236 | 236 | Result result = wcsService.pickupErrorHandle(taskNo); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/entity/ManyEmptyDomain.java
... | ... | @@ -21,8 +21,8 @@ public class ManyEmptyDomain { |
21 | 21 | /** 重量 */ |
22 | 22 | @ApiModelProperty(value = "重量") |
23 | 23 | private String weight; |
24 | - /** 重量 */ | |
25 | - @ApiModelProperty(value = "重量") | |
24 | + /** 仓库编码 */ | |
25 | + @ApiModelProperty(value = "仓库编码") | |
26 | 26 | private String warehouseCode; |
27 | 27 | /** 巷道 */ |
28 | 28 | @ApiModelProperty(value = "巷道") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/entity/ManyEmptyOutDomain.java
0 → 100644
1 | +package org.jeecg.modules.wms.api.wcs.entity; | |
2 | + | |
3 | +import io.swagger.annotations.ApiModelProperty; | |
4 | +import lombok.Data; | |
5 | + | |
6 | +/** | |
7 | + * @author 游杰 | |
8 | + */ | |
9 | +@Data | |
10 | +public class ManyEmptyOutDomain { | |
11 | + | |
12 | + /** 仓库编码 */ | |
13 | + @ApiModelProperty(value = "仓库编码", required = true) | |
14 | + private String warehouseCode; | |
15 | + /** 库区 */ | |
16 | + @ApiModelProperty(value = "库区", required = true) | |
17 | + private String zoneCode; | |
18 | + /** 分拣口 */ | |
19 | + @ApiModelProperty(value = "分拣口", required = true) | |
20 | + private String port; | |
21 | + | |
22 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
... | ... | @@ -485,6 +485,7 @@ public class WcsServiceImpl implements WcsService { |
485 | 485 | } |
486 | 486 | |
487 | 487 | @Override |
488 | + @Transactional(rollbackFor = Exception.class) | |
488 | 489 | public Result reentryHandle(String taskNo) { |
489 | 490 | // 1、判断非空字段 |
490 | 491 | if (StringUtils.isEmpty(taskNo)) { |
... | ... | @@ -585,6 +586,7 @@ public class WcsServiceImpl implements WcsService { |
585 | 586 | } |
586 | 587 | |
587 | 588 | @Override |
589 | + @Transactional(rollbackFor = Exception.class) | |
588 | 590 | public Result pickupErrorHandle(String taskNo) { |
589 | 591 | // 1、判断非空字段 |
590 | 592 | if (StringUtils.isEmpty(taskNo)) { |
... | ... | @@ -599,7 +601,8 @@ public class WcsServiceImpl implements WcsService { |
599 | 601 | if (taskHeader.getStatus() == QuantityConstant.TASK_STATUS_COMPLETED) { |
600 | 602 | return Result.OK("取货错处理失败, 任务已完成"); |
601 | 603 | } |
602 | - // 3、修改该任务为取货错,过后处理 | |
604 | + // 4、修改该任务为取货错,过后处理 | |
605 | + taskHeader.setIsPickupError(QuantityConstant.PICK_UP_ERROR); | |
603 | 606 | taskHeader.setExceptionName("取货错误"); |
604 | 607 | taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_ERROR); |
605 | 608 | boolean success = taskHeaderService.updateById(taskHeader); |
... | ... | @@ -610,6 +613,7 @@ public class WcsServiceImpl implements WcsService { |
610 | 613 | } |
611 | 614 | |
612 | 615 | @Override |
616 | + @Transactional(rollbackFor = Exception.class) | |
613 | 617 | public Result arrivedNotice(String taskNo, String port) { |
614 | 618 | TaskHeader taskHeader = taskHeaderService.getById(taskNo); |
615 | 619 | if (taskHeader == null) { |
... | ... | @@ -628,4 +632,33 @@ public class WcsServiceImpl implements WcsService { |
628 | 632 | return Result.ok("更新到达站台成功"); |
629 | 633 | } |
630 | 634 | |
635 | + @Override | |
636 | + @Transactional(rollbackFor = Exception.class) | |
637 | + public Result manyEmptyOut(String zoneCode, String port, String warehouseCode) { | |
638 | + LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
639 | + containerLambdaQueryWrapper.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_MANY).eq(Container::getWarehouseCode, warehouseCode); | |
640 | + List<Container> containerList = containerService.list(containerLambdaQueryWrapper); | |
641 | + List<Container> removeContainerList = new ArrayList<>(); | |
642 | + if (containerList != null && containerList.size() > 0) { | |
643 | + for (Container container : containerList) { | |
644 | + String locationCode = container.getLocationCode(); | |
645 | + Location location = locationService.getLocationByCode(locationCode, warehouseCode); | |
646 | + if (!location.getZoneCode().equals(zoneCode)) { | |
647 | + removeContainerList.add(container); | |
648 | + } | |
649 | + } | |
650 | + } | |
651 | + containerList.removeAll(removeContainerList); | |
652 | + if (!(containerList != null && containerList.size() > 0)) { | |
653 | + return Result.error("没有找到合适的空托盘组!"); | |
654 | + } | |
655 | + String containerCode = containerList.get(0).getCode(); | |
656 | + Container container = containerService.getContainerByCode(containerCode, warehouseCode); | |
657 | + if (container == null) { | |
658 | + return Result.error("没有找到托盘, 托盘号:" + containerCode); | |
659 | + } | |
660 | + Result result = taskHeaderService.createManyEmptyOut(containerCode, port, warehouseCode); | |
661 | + return result; | |
662 | + } | |
663 | + | |
631 | 664 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java
... | ... | @@ -658,8 +658,8 @@ public class TaskHeaderController extends HuahengBaseController { |
658 | 658 | @ApiOperation("修复空出的数据") |
659 | 659 | @ResponseBody |
660 | 660 | @ApiLogger(apiName = "修复空出的数据", from = "WMS") |
661 | - public Result handleEmptyOut(@RequestParam(name = "ids", required = true) String ids) { | |
662 | - Result result = taskHeaderService.handleEmptyOut(ids); | |
661 | + public Result handleEmptyOut(@RequestParam(name = "id", required = true) String id) { | |
662 | + Result result = taskHeaderService.handleEmptyOut(id); | |
663 | 663 | return result; |
664 | 664 | } |
665 | 665 | |
... | ... | @@ -672,8 +672,8 @@ public class TaskHeaderController extends HuahengBaseController { |
672 | 672 | @ApiOperation("修复重入的数据") |
673 | 673 | @ResponseBody |
674 | 674 | @ApiLogger(apiName = "修复重入的数据", from = "WMS") |
675 | - public Result handleDoubleIn(@RequestBody String taskNo) { | |
676 | - Result result = taskHeaderService.handleDoubleIn(taskNo); | |
675 | + public Result handleDoubleIn(@RequestParam(name = "id", required = true) String id) { | |
676 | + Result result = taskHeaderService.handleDoubleIn(id); | |
677 | 677 | return result; |
678 | 678 | } |
679 | 679 | |
... | ... | @@ -686,8 +686,8 @@ public class TaskHeaderController extends HuahengBaseController { |
686 | 686 | @ApiOperation("修复取货错的数据") |
687 | 687 | @ResponseBody |
688 | 688 | @ApiLogger(apiName = "修复取货错的数据", from = "WMS") |
689 | - public Result handlePickupError(@RequestBody String taskNo) { | |
690 | - Result result = taskHeaderService.handlePickupError(taskNo); | |
689 | + public Result handlePickupError(@RequestParam(name = "id", required = true) String id) { | |
690 | + Result result = taskHeaderService.handlePickupError(id); | |
691 | 691 | return result; |
692 | 692 | } |
693 | 693 | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
... | ... | @@ -169,15 +169,6 @@ public interface ITaskHeaderService extends IService<TaskHeader> { |
169 | 169 | Result createManyEmptyIn(String containerCode, String toLocationCode, String warehouseCode); |
170 | 170 | |
171 | 171 | /** |
172 | - * WCS申请空托盘组出库 | |
173 | - * @param zoneCode | |
174 | - * @param toPortCode | |
175 | - * @param warehouseCode | |
176 | - * @return | |
177 | - */ | |
178 | - Result createManyEmptyOutTask(String zoneCode, String toPortCode, String warehouseCode); | |
179 | - | |
180 | - /** | |
181 | 172 | * 创建空托盘组出库 |
182 | 173 | * @param containerCode |
183 | 174 | * @param toPortCode |
... | ... | @@ -214,8 +205,18 @@ public interface ITaskHeaderService extends IService<TaskHeader> { |
214 | 205 | */ |
215 | 206 | Result handlePickupError(String taskNo); |
216 | 207 | |
208 | + /** | |
209 | + * 完成入库 | |
210 | + * @param taskHeader | |
211 | + * @return | |
212 | + */ | |
217 | 213 | Result completeReceiptTask(TaskHeader taskHeader); |
218 | 214 | |
215 | + /** | |
216 | + * 完成出库 | |
217 | + * @param taskHeader | |
218 | + * @return | |
219 | + */ | |
219 | 220 | Result completeShipmentTask(TaskHeader taskHeader); |
220 | 221 | |
221 | 222 | Result completeCycleCountTask(TaskHeader taskHeader); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
... | ... | @@ -485,7 +485,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
485 | 485 | if (StringUtils.isEmpty(toLocationCode)) { |
486 | 486 | throw new ServiceException("创建空托盘组入库任务时,目标库位为空"); |
487 | 487 | } |
488 | - Result result = createManyEmptyIn(containerCode, toLocationCode, warehouseCode); | |
488 | + Result result = taskHeaderService.createManyEmptyIn(containerCode, toLocationCode, warehouseCode); | |
489 | 489 | if (!result.isSuccess()) { |
490 | 490 | throw new ServiceException(result.getMessage()); |
491 | 491 | } |
... | ... | @@ -501,6 +501,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
501 | 501 | if (StringUtils.isEmpty(warehouseCode)) { |
502 | 502 | return Result.error("创建空托盘组入库任务时,仓库编码为空"); |
503 | 503 | } |
504 | + String zoneCode = null; | |
504 | 505 | Container container = containerService.getContainerByCode(containerCode, warehouseCode); |
505 | 506 | if (container == null) { |
506 | 507 | return Result.error("创建空托盘组入库任务时,没有找到容器"); |
... | ... | @@ -520,13 +521,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
520 | 521 | if (toLocation == null) { |
521 | 522 | return Result.error("创建空托盘组入库任务时,没有找到目标库位"); |
522 | 523 | } |
523 | - if (toLocation.getStatus() != QuantityConstant.STATUS_LOCATION_EMPTY) { | |
524 | + if (!toLocation.getStatus().equals(QuantityConstant.STATUS_LOCATION_EMPTY)) { | |
524 | 525 | return Result.error("创建空托盘组入库任务时,目标库位状态不是空闲"); |
525 | 526 | } |
526 | 527 | success = locationService.updateStatus(toLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); |
527 | 528 | if (!success) { |
528 | 529 | throw new ServiceException("创建空托盘组入库任务时, 更新库位状态失败"); |
529 | 530 | } |
531 | + zoneCode = toLocation.getZoneCode(); | |
530 | 532 | } |
531 | 533 | TaskHeader taskHeader = new TaskHeader(); |
532 | 534 | taskHeader.setWarehouseCode(warehouseCode); |
... | ... | @@ -534,6 +536,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
534 | 536 | taskHeader.setTaskType(QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT); |
535 | 537 | taskHeader.setInnernalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); |
536 | 538 | taskHeader.setToLocationCode(toLocationCode); |
539 | + taskHeader.setZoneCode(zoneCode); | |
537 | 540 | taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); |
538 | 541 | success = taskHeaderService.save(taskHeader); |
539 | 542 | if (!success) { |
... | ... | @@ -544,51 +547,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
544 | 547 | |
545 | 548 | @Override |
546 | 549 | @Transactional(rollbackFor = Exception.class) |
547 | - public Result createManyEmptyOutTask(String zoneCode, String toPortCode, String warehouseCode) { | |
548 | - if (StringUtils.isEmpty(toPortCode)) { | |
549 | - return Result.error("创建空托盘组出库任务时,目标出入口为空"); | |
550 | - } | |
551 | - if (StringUtils.isEmpty(zoneCode)) { | |
552 | - return Result.error("创建空托盘组出库任务时,库区编码为空"); | |
553 | - } | |
554 | - if (StringUtils.isEmpty(warehouseCode)) { | |
555 | - return Result.error("创建空托盘组出库任务时,仓库编码为空"); | |
556 | - } | |
557 | - List<Container> containerList = containerService.getContainerListByStatus(QuantityConstant.STATUS_CONTAINER_MANY, warehouseCode); | |
558 | - if (containerList.size() == 0) { | |
559 | - return Result.error("创建空托盘组出库任务时,没有找到空托盘组"); | |
560 | - } | |
561 | - List<Container> removeContainerList = new ArrayList<>(); | |
562 | - if (containerList.size() > 0) { | |
563 | - for (Container container : containerList) { | |
564 | - String locationCode = container.getLocationCode(); | |
565 | - Location location = locationService.getLocationByCode(locationCode, warehouseCode); | |
566 | - if (!location.getZoneCode().equals(zoneCode)) { | |
567 | - removeContainerList.add(container); | |
568 | - } | |
569 | - } | |
570 | - } | |
571 | - boolean success = containerList.removeAll(removeContainerList); | |
572 | - if (!success) { | |
573 | - throw new ServiceException("创建空托盘组出库任务时,删除不符合的空托盘组失败"); | |
574 | - } | |
575 | - if (containerList.size() <= 0) { | |
576 | - throw new ServiceException("没有找到合适的空托盘组!"); | |
577 | - } | |
578 | - String containerCode = containerList.get(0).getCode(); | |
579 | - TaskHeader taskHeader = taskHeaderService.getUnCompleteTaskByContainerCode(containerCode, warehouseCode); | |
580 | - if (taskHeader != null) { | |
581 | - return Result.ok("创建空托盘组出库任务时, 已经生成空托盘组出库任务"); | |
582 | - } | |
583 | - Result result = createManyEmptyOut(containerCode, toPortCode, warehouseCode); | |
584 | - if (!result.isSuccess()) { | |
585 | - throw new ServiceException(result.getMessage()); | |
586 | - } | |
587 | - return Result.ok("创建空托盘组出库任务成功"); | |
588 | - } | |
589 | - | |
590 | - @Override | |
591 | - @Transactional(rollbackFor = Exception.class) | |
592 | 550 | public Result createManyEmptyOut(String containerCode, String toPortCode, String warehouseCode) { |
593 | 551 | if (StringUtils.isEmpty(containerCode)) { |
594 | 552 | return Result.error("创建空托盘组出库任务时,托盘号为空"); |
... | ... | @@ -720,6 +678,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
720 | 678 | throw new ServiceException("处理空出失败, 删除库存详情失败"); |
721 | 679 | } |
722 | 680 | } |
681 | + // 9 更新单据 | |
682 | + taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); | |
683 | + success = taskHeaderService.updateById(taskHeader); | |
684 | + if (!success) { | |
685 | + throw new ServiceException("处理空出失败,更新任务失败"); | |
686 | + } | |
723 | 687 | return Result.ok("处理空出成功"); |
724 | 688 | } |
725 | 689 | |
... | ... | @@ -768,7 +732,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
768 | 732 | throw new ServiceException("处理重入失败,更新库位失败"); |
769 | 733 | } |
770 | 734 | } |
771 | - | |
735 | + taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); | |
736 | + boolean success = taskHeaderService.updateById(taskHeader); | |
737 | + if (!success) { | |
738 | + throw new ServiceException("处理重入失败,更新任务失败"); | |
739 | + } | |
772 | 740 | return Result.ok("处理重入成功"); |
773 | 741 | } |
774 | 742 | |
... | ... | @@ -784,11 +752,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
784 | 752 | return Result.error("处理取货错失败,没有找到该任务"); |
785 | 753 | } |
786 | 754 | // 3、已经完成的任务,不需要在处理 |
787 | - if (taskHeader.getStatus() != QuantityConstant.TASK_STATUS_COMPLETED) { | |
788 | - return Result.OK("处理取货错失败, 任务没有完成"); | |
755 | + if (taskHeader.getStatus() == QuantityConstant.TASK_STATUS_COMPLETED) { | |
756 | + return Result.OK("处理取货错失败, 任务已经完成"); | |
789 | 757 | } |
790 | 758 | |
791 | 759 | taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); |
760 | + taskHeader.setExceptionState(QuantityConstant.EXCEPTION_TASK_HANDLE); | |
792 | 761 | boolean success = taskHeaderService.updateById(taskHeader); |
793 | 762 | if (!success) { |
794 | 763 | throw new ServiceException("处理取货错失败,更新任务失败"); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
... | ... | @@ -492,6 +492,9 @@ public class QuantityConstant { |
492 | 492 | public static final int EMPTY_OUT_PROSESS = 2; |
493 | 493 | public static final int NORMAL_OUT = 0; |
494 | 494 | |
495 | + // 取货错 | |
496 | + public static final int PICK_UP_ERROR = 1; | |
497 | + | |
495 | 498 | public static final int PORT_TYPE_IN = 1; |
496 | 499 | public static final int PORT_TYPE_OUT = 2; |
497 | 500 | public static final int PORT_TYPE_PICK = 3; |
... | ... |