Commit 1bdab777e6523924ea3f3077262ff8939237cb3b
1 parent
71906267
AGV定时任务
Showing
7 changed files
with
114 additions
and
41 deletions
src/main/java/com/huaheng/api/acs/service/AgvTaskServiceImpl.java
... | ... | @@ -217,7 +217,7 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskCsMapper, AgvTask> im |
217 | 217 | if (StringUtils.isNull(o3)) { |
218 | 218 | return AjaxResult.error("任务状态为空"); |
219 | 219 | } |
220 | - String status = o3.toString(); | |
220 | + Integer status = Integer.valueOf(o3.toString()); | |
221 | 221 | agvTask.setId(taskNo); |
222 | 222 | agvTaskStatusNowStart(status, agvTask); |
223 | 223 | return AjaxResult.success(); |
... | ... | @@ -257,12 +257,12 @@ public class AgvTaskServiceImpl extends ServiceImpl<AgvTaskCsMapper, AgvTask> im |
257 | 257 | } |
258 | 258 | |
259 | 259 | //根据agv的任务状态来判断 |
260 | - private AjaxResult agvTaskStatusNowStart(String o3, AgvTask agvTask) { | |
260 | + private AjaxResult agvTaskStatusNowStart(Integer o3, AgvTask agvTask) { | |
261 | 261 | AgvTask task = getById(agvTask.getId()); |
262 | 262 | if (task == null) { |
263 | 263 | return AjaxResult.error("任务号" + agvTask.getId() + "不存在"); |
264 | 264 | } |
265 | - if (task.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) { | |
265 | + if (task.getStatus()==QuantityConstant.TASK_STATUS_COMPLETED) { | |
266 | 266 | return AjaxResult.error("任务" + agvTask.getId() + "已经完成"); |
267 | 267 | } |
268 | 268 | if (o3.equals(QuantityConstant.STATUS_TASK_AGV_START)) { |
... | ... |
src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java
... | ... | @@ -85,10 +85,6 @@ public class TaskFinishServiceImpl implements TaskFinishService { |
85 | 85 | locationService.updateContainerCodeAndStatus(locationCode, "", |
86 | 86 | QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode); |
87 | 87 | } |
88 | - if(taskHeader.getWarehouseCode().equals("CS0001")&&taskHeader.getTaskType()==QuantityConstant.TASK_TYPE_EMPTYSHIPMENT&&taskHeader.getPort().equals("P1016-1")) { | |
89 | - taskHeader.setUserDef1("空托出库完成"); | |
90 | - taskHeaderService.updateById(taskHeader); | |
91 | - } | |
92 | - return ajaxResult; | |
88 | + return ajaxResult; | |
93 | 89 | } |
94 | 90 | } |
... | ... |
src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
... | ... | @@ -119,8 +119,8 @@ public class LocationAllocationServiceImpl implements LocationAllocationService |
119 | 119 | .ge(Location::getHigh, high) |
120 | 120 | // .eq(StringUtils.isNotEmpty(materialAreaCode), Location::getMaterialAreaCode, materialAreaCode) |
121 | 121 | .in(!warehouseCode.equalsIgnoreCase("KS0001"),Location::getLocationType, locationTypeCodeList) |
122 | - .eq(Location::getContainerCode, ""); | |
123 | - locationLambdaQueryWrapper.orderByAsc(Location::getHigh); | |
122 | + .eq(Location::getContainerCode, "") | |
123 | + .last(warehouseCode.equalsIgnoreCase("KS0001"),"ORDER BY CASE WHEN iRow=3 THEN 0 WHEN iRow=1 THEN 1 WHEN iRow=2 THEN 2 END,high ASC"); | |
124 | 124 | List<Location> totalLocationList = locationService.list(locationLambdaQueryWrapper); |
125 | 125 | if (totalLocationList.size() <= reserveNumber) { |
126 | 126 | removeRoadWays.add(roadWay); |
... | ... | @@ -137,8 +137,8 @@ public class LocationAllocationServiceImpl implements LocationAllocationService |
137 | 137 | // .eq(StringUtils.isNotEmpty(materialAreaCode), Location::getMaterialAreaCode, materialAreaCode) |
138 | 138 | .eq(Location::getRowFlag, QuantityConstant.ROW_OUT) |
139 | 139 | .in(!warehouseCode.equalsIgnoreCase("KS0001"),Location::getLocationType, locationTypeCodeList) |
140 | - .eq(Location::getContainerCode, ""); | |
141 | - locationLambda.orderByAsc(Location::getHigh); | |
140 | + .eq(Location::getContainerCode, "") | |
141 | + .last(warehouseCode.equalsIgnoreCase("KS0001"),"ORDER BY CASE WHEN iRow=3 THEN 0 WHEN iRow=1 THEN 1 WHEN iRow=2 THEN 2 END,high ASC"); | |
142 | 142 | List<Location> locationList = locationService.list(locationLambda); |
143 | 143 | List<Location> removeLocaationList = new ArrayList<>(); |
144 | 144 | if(locationList != null && locationList.size() > 0) { |
... | ... | @@ -167,8 +167,8 @@ public class LocationAllocationServiceImpl implements LocationAllocationService |
167 | 167 | // .eq(StringUtils.isNotEmpty(materialAreaCode), Location::getMaterialAreaCode, materialAreaCode) |
168 | 168 | .eq(Location::getRowFlag, QuantityConstant.ROW_IN) |
169 | 169 | .in(!warehouseCode.equalsIgnoreCase("KS0001"),Location::getLocationType, locationTypeCodeList) |
170 | - .eq(Location::getContainerCode, ""); | |
171 | - locationLambda.orderByAsc(Location::getHigh); | |
170 | + .eq(Location::getContainerCode, "") | |
171 | + .last(warehouseCode.equalsIgnoreCase("KS0001"),"ORDER BY CASE WHEN iRow=3 THEN 0 WHEN iRow=1 THEN 1 WHEN iRow=2 THEN 2 END,high ASC"); | |
172 | 172 | locationList = locationService.list(locationLambda); |
173 | 173 | removeLocaationList = new ArrayList<>(); |
174 | 174 | if(locationList != null && locationList.size() > 0) { |
... | ... |
src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
... | ... | @@ -7,6 +7,7 @@ import com.huaheng.api.SSP.service.OrderAssignApiService; |
7 | 7 | import com.huaheng.api.acs.domain.AgvTask; |
8 | 8 | import com.huaheng.api.acs.service.AgvTaskService; |
9 | 9 | import com.huaheng.api.wcs.service.taskAssignService.TaskAssignService; |
10 | +import com.huaheng.common.exception.service.ServiceException; | |
10 | 11 | import com.huaheng.common.utils.StringUtils; |
11 | 12 | import com.huaheng.common.utils.Wrappers; |
12 | 13 | import com.fasterxml.jackson.databind.ser.Serializers; |
... | ... | @@ -50,6 +51,7 @@ import com.huaheng.pc.receipt.receiptHeaderHistory.service.ReceiptHeaderHistoryS |
50 | 51 | import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; |
51 | 52 | import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; |
52 | 53 | import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; |
54 | +import com.huaheng.pc.task.taskDetail.domain.TaskDetail; | |
53 | 55 | import com.huaheng.pc.task.taskDetail.service.TaskDetailService; |
54 | 56 | import com.huaheng.pc.task.taskHeader.domain.TaskHeader; |
55 | 57 | import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper; |
... | ... | @@ -440,22 +442,88 @@ public class RyTask extends BaseController { |
440 | 442 | lambdaQueryWrapper.eq(TaskHeader::getUserDef1,"空托出库完成"); |
441 | 443 | List<TaskHeader> list = taskHeaderService.list(lambdaQueryWrapper); |
442 | 444 | if(CollectionUtils.isNotEmpty(list)){ |
443 | - com.huaheng.api.acs.domain.AgvTask agvTask = new AgvTask(); | |
444 | - agvTask.setFromPort("P1016"); | |
445 | - if(atomicInteger.get()==1){ | |
446 | - agvTask.setToPort("P1001"); | |
447 | - atomicInteger.set(0); | |
448 | - }else { | |
449 | - agvTask.setToPort("P1009"); | |
450 | - atomicInteger.set(1); | |
445 | + atomicInteger.set(2); | |
446 | + } | |
447 | + if(atomicInteger.get()==1){ | |
448 | + List<TaskHeader> taskHeaders = taskHeaderService.list(new LambdaQueryWrapper<TaskHeader>() | |
449 | + .ge(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_BUILD) | |
450 | + .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED) | |
451 | + .eq(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_EMPTYSHIPMENT) | |
452 | + .eq(TaskHeader::getPort, "P1016-1") | |
453 | + .eq(TaskHeader::getWarehouseCode, "CS0001") | |
454 | + ); | |
455 | + if(CollectionUtils.isNotEmpty(taskHeaders)){ | |
456 | + for (TaskHeader taskHeader : taskHeaders) { | |
457 | + if(taskHeader.getStatus()==QuantityConstant.TASK_STATUS_BUILD){ | |
458 | + taskHeaderService.sendTaskToWcs(Convert.toIntArray(taskHeader.getId().toString())); | |
459 | + return; | |
460 | + } | |
461 | + } | |
462 | + if(taskHeaders.size()>2){ | |
463 | + return; | |
464 | + } | |
451 | 465 | } |
452 | - agvTask.setContainerCode(list.get(0).getContainerCode()); | |
453 | - agvTask.setWarehouseCode("CS0001"); | |
454 | - if(!agvTaskService.createAGVTask(agvTask).hasErr()){ | |
455 | - TaskHeader taskHeader = list.get(0); | |
456 | - taskHeader.setUserDef1("AGV搬运任务生成"); | |
457 | - taskHeaderService.updateById(taskHeader); | |
466 | + List<Container> lk = containerService.list(new LambdaQueryWrapper<Container>() | |
467 | + .eq(Container::getWarehouseCode, "CS0001") | |
468 | + .and(i -> i.ne(Container::getLocationCode, "").isNotNull(Container::getLocationCode)) | |
469 | + .eq(Container::getZoneCode, "LK") | |
470 | + .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY) | |
471 | + .last("and containerType in ('B','L')") | |
472 | + ); | |
473 | + if(CollectionUtils.isNotEmpty(lk)){ | |
474 | + Container container = lk.get(0); | |
475 | +// AjaxResult emptyOut = inventoryHeaderService.createEmptyOut(container.getCode(), container.getLocationCode(), "P1016-1"); | |
476 | + TaskHeader taskHeader = new TaskHeader(); | |
477 | + taskHeader.setWarehouseCode("CS0001"); | |
478 | + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT); | |
479 | + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT); | |
480 | + taskHeader.setContainerCode(container.getCode()); | |
481 | + taskHeader.setZoneCode(container.getZoneCode()); | |
482 | + taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); | |
483 | + taskHeader.setPriority(200); | |
484 | + taskHeader.setFromLocation(container.getLocationCode()); | |
485 | + taskHeader.setToLocation(""); | |
486 | + taskHeader.setPort("P1016-1"); | |
487 | + if(taskHeaderService.save(taskHeader)){ | |
488 | + //锁定库位状态 | |
489 | + locationService.updateStatus(container.getLocationCode(),QuantityConstant.STATUS_LOCATION_LOCK,container.getWarehouseCode()); | |
490 | + containerService.updateStatus(container.getCode(),QuantityConstant.STATUS_CONTAINER_LOCK,container.getWarehouseCode()); | |
491 | + } else { | |
492 | + throw new ServiceException("空托出库主表生成失败!"); | |
493 | + } | |
494 | + //写入任务细表 | |
495 | + TaskDetail taskDetail = new TaskDetail(); | |
496 | + taskDetail.setTaskId(taskHeader.getId()); | |
497 | + taskDetail.setTaskType(taskHeader.getTaskType()); | |
498 | + taskDetail.setInternalTaskType(taskHeader.getInternalTaskType()); | |
499 | + taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); | |
500 | + taskDetail.setFromLocation(taskHeader.getFromLocation()); | |
501 | + taskDetail.setToLocation(taskHeader.getToLocation()); | |
502 | + taskDetail.setContainerCode(taskHeader.getContainerCode()); | |
503 | + if(!taskDetailService.save(taskDetail)){ | |
504 | + throw new ServiceException("空托出库任务明细生成失败!"); | |
505 | + } | |
506 | + } | |
507 | + atomicInteger.set(2); | |
508 | + }else if(atomicInteger.get()==2){ | |
509 | + if(CollectionUtils.isNotEmpty(list)){ | |
510 | + com.huaheng.api.acs.domain.AgvTask agvTask = new AgvTask(); | |
511 | + agvTask.setFromPort("P1016"); | |
512 | + AgvTask one = agvTaskService.getOne(new LambdaQueryWrapper<AgvTask>().orderByDesc(AgvTask::getId).last("limit 1")); | |
513 | + if(one.getToPort().equals("P1001")){ | |
514 | + agvTask.setToPort("P1009"); | |
515 | + }else { | |
516 | + agvTask.setToPort("P1001"); | |
517 | + } | |
518 | + agvTask.setContainerCode(list.get(0).getContainerCode()); | |
519 | + agvTask.setWarehouseCode("CS0001"); | |
520 | + if(!agvTaskService.createAGVTask(agvTask).hasErr()){ | |
521 | + TaskHeader taskHeader = list.get(0); | |
522 | + taskHeader.setUserDef1("AGV搬运任务生成"); | |
523 | + taskHeaderService.updateById(taskHeader); | |
524 | + } | |
458 | 525 | } |
526 | + atomicInteger.set(1); | |
459 | 527 | } |
460 | 528 | } |
461 | 529 | |
... | ... |
src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java
... | ... | @@ -209,11 +209,18 @@ public class ReceiptHeaderController extends BaseController { |
209 | 209 | @Log(title = "入库-入库单 ",operating = "修改入库单 ", action = BusinessType.UPDATE) |
210 | 210 | @PostMapping("/edit") |
211 | 211 | @ResponseBody |
212 | + @Transactional | |
212 | 213 | public AjaxResult editSave(ReceiptHeader receiptHeader) { |
213 | -// ReceiptHeader receiptHeader1 = receiptHeaderService.getById(receiptHeader.getId()); | |
214 | - if (!QuantityConstant.RECEIPT_TYPE_PPI.equals(receiptHeader.getReceiptType())&&!QuantityConstant.MES_RECEIPT_TYPE_SI.equals(receiptHeader.getReceiptType())){ | |
214 | + ReceiptHeader receiptHeader1 = receiptHeaderService.getById(receiptHeader.getId()); | |
215 | + if (!QuantityConstant.RECEIPT_TYPE_PPI.equals(receiptHeader1.getReceiptType())&&!QuantityConstant.MES_RECEIPT_TYPE_SI.equals(receiptHeader1.getReceiptType())){ | |
215 | 216 | return AjaxResult.error("只有手持入库单和產成品入庫可修改"); |
216 | 217 | } |
218 | + List<ReceiptDetail> list = receiptDetailService.list(new LambdaQueryWrapper<ReceiptDetail>().eq(ReceiptDetail::getReceiptId, receiptHeader1.getId())); | |
219 | + list.forEach(l->{ | |
220 | + l.setCompanyCode(receiptHeader.getCompanyCode()); | |
221 | + l.setUWarehouseCode(receiptHeader.getUWarehouseCode()); | |
222 | + }); | |
223 | + receiptDetailService.updateBatchById(list); | |
217 | 224 | receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); |
218 | 225 | return toAjax(receiptHeaderService.updateById(receiptHeader)); |
219 | 226 | } |
... | ... |
src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
... | ... | @@ -1015,15 +1015,15 @@ public class TaskHeaderService extends ServiceImpl<TaskHeaderMapper, TaskHeader |
1015 | 1015 | taskHeaderLambdaQueryWrapper.eq(TaskHeader::getToLocation, locationCode) |
1016 | 1016 | .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED); |
1017 | 1017 | List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); |
1018 | - if (taskHeaderList == null || taskHeaderList.size() == 0) { | |
1019 | - taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
1020 | - taskHeaderLambdaQueryWrapper.eq(TaskHeader::getFromLocation, locationCode) | |
1021 | - .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED); | |
1022 | - taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); | |
1023 | - if (taskHeaderList == null || taskHeaderList.size() == 0) { | |
1024 | - return 0; | |
1025 | - } | |
1026 | - } | |
1018 | +// if (taskHeaderList == null || taskHeaderList.size() == 0) { | |
1019 | +// taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
1020 | +// taskHeaderLambdaQueryWrapper.eq(TaskHeader::getFromLocation, locationCode) | |
1021 | +// .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED); | |
1022 | +// taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); | |
1023 | +// if (taskHeaderList == null || taskHeaderList.size() == 0) { | |
1024 | +// return 0; | |
1025 | +// } | |
1026 | +// } | |
1027 | 1027 | return taskHeaderList.size(); |
1028 | 1028 | } |
1029 | 1029 | |
... | ... |
src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java
... | ... | @@ -651,8 +651,10 @@ public class WorkTaskService { |
651 | 651 | "", QuantityConstant.STATUS_CONTAINER_EMPTY, taskHeader.getWarehouseCode()); //解锁库位,更新容器 |
652 | 652 | locationService.updateContainerCodeAndStatus(taskHeader.getFromLocation(), |
653 | 653 | "", QuantityConstant.STATUS_LOCATION_EMPTY, taskHeader.getWarehouseCode()); |
654 | - //生成AGV搬运任务 | |
655 | - | |
654 | + if(taskHeader.getWarehouseCode().equals("CS0001")&&taskHeader.getTaskType()==QuantityConstant.TASK_TYPE_EMPTYSHIPMENT&&taskHeader.getPort().equals("P1016-1")) { | |
655 | + taskHeader.setUserDef1("空托出库完成"); | |
656 | + taskHeaderService.updateById(taskHeader); | |
657 | + } | |
656 | 658 | return AjaxResult.success(); |
657 | 659 | } |
658 | 660 | |
... | ... |