Commit 1bdab777e6523924ea3f3077262ff8939237cb3b

Authored by xumiao
1 parent 71906267

AGV定时任务

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&lt;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  
... ...