AgvMoveService.java
5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.huaheng.api.pda.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.general.domain.ReceiptDomain;
import com.huaheng.api.general.service.ReceiptApiService;
import com.huaheng.api.pda.domain.AgvMoveDetailDomain;
import com.huaheng.api.pda.domain.AgvMoveDomain;
import com.huaheng.api.pda.domain.AgvMoveHeaderDomain;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.BusinessException;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import com.huaheng.pc.task.taskHeader.service.TaskSendService;
import javafx.concurrent.Task;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Component
@Transactional
public class AgvMoveService {
@Resource
private TaskSendService taskSendService;
@Resource
private LocationService locationService;
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private TaskDetailService taskDetailService;
/**
* agv搬运任务
* @param agvMoveDomain
*/
@Transactional
public AjaxResult agvMove(AgvMoveDomain agvMoveDomain){
//创建主任务
if(agvMoveDomain==null){
return AjaxResult.error("接收数据为空");
}
AgvMoveHeaderDomain headerDomain=agvMoveDomain.getHeaderDomain();
List<AgvMoveDetailDomain> detailDomains=agvMoveDomain.getMoveDetailDomains();
if(StringUtils.isEmpty(headerDomain.getFromPort())&&StringUtils.isEmpty(headerDomain.getToPort())){
return AjaxResult.error("请填写起点或终点");
}
//保存taskheader和taskdetail
TaskHeader task=createTaskHeaderForMove(headerDomain,detailDomains);
//agv搬运任务
taskSendService.createTaskSendWcs(task,null);
return AjaxResult.success();
}
public TaskHeader createTaskHeaderForMove(AgvMoveHeaderDomain headerDomain,List<AgvMoveDetailDomain> detailDomains){
TaskHeader taskHeader=new TaskHeader();
taskHeader.setWarehouseCode(QuantityConstant.WAREHOUSECODE);
taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
taskHeader.setZoneCode(headerDomain.getZoneCode());
Location location=null;
if(StringUtils.isNotEmpty(headerDomain.getFromPort())){
taskHeader.setPort(headerDomain.getFromPort());
taskHeader.setTaskType(QuantityConstant.TASK_TYPE_AGV_MOVE_RECEIPT);
location= locationService.getLocationCodeByWorkCode(headerDomain.getZoneCode(),headerDomain.getFromPort());
}
if(StringUtils.isNotEmpty(headerDomain.getToPort())){
taskHeader.setPort(headerDomain.getToPort());
taskHeader.setTaskType(QuantityConstant.TASK_TYPE_AGV_MOVE_SHIPMENT);
location= locationService.getLocationCodeByWorkCode(headerDomain.getZoneCode(),headerDomain.getFromPort());
}
if(location==null){
throw new ServiceException("没有库位可分配");
}
taskHeader.setFromLocation(location.getCode());
taskHeader.setToLocation(location.getCode());
if(!taskHeaderService.save(taskHeader)){
throw new BusinessException("创建主任务失败");
}
//保存明细
createTaskDetailForMove(detailDomains,taskHeader);
return taskHeader;
}
public void createTaskDetailForMove(List<AgvMoveDetailDomain> detailDomains,TaskHeader task){
for (AgvMoveDetailDomain detailDomain:detailDomains){
TaskDetail taskDetail=new TaskDetail();
taskDetail.setTaskId(task.getId());
taskDetail.setMaterialCode(detailDomain.getMaterialCode());
taskDetail.setQty(detailDomain.getQyt());
if(!taskDetailService.save(taskDetail)){
throw new BusinessException("创建任务明细失败");
}
}
}
}