ZarApiService.java
7.39 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
package com.huaheng.api.sap.service;
import java.util.List;
import javax.annotation.Resource;
import com.huaheng.api.acs.service.AcsService;
import com.huaheng.api.utils.SAPUtils;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.task.agvTask.domain.AgvTask;
import com.huaheng.pc.task.agvTask.service.AgvTaskService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.sap.domain.ZarDomain;
import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.ZoneAreaUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.sap.domain.Zarsh;
import com.huaheng.pc.sap.service.BackSapStatusService;
import com.huaheng.pc.sap.service.ZarshService;
import com.huaheng.pc.sap.service.ZarsiService;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
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;
@Component
@Transactional
public class ZarApiService {
@Resource
private ZarshService zarshService;
@Resource
private ZarsiService zarsiService;
@Resource
private BackSapStatusService backSapStatusService;
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ShipmentHeaderService shipmentHeaderService;
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private TaskDetailService taskDetailService;
@Resource
private TaskCancelService taskCancelService;
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
@Resource
private ContainerService containerService;
@Resource
private ZoneService zoneService;
@Resource
private AgvTaskService agvTaskService;
@Resource
private AcsService acsService;
/**
* @param zarDomain 入库出库单
*/
public AjaxResult saveSapData(ZarDomain zarDomain) {
Zarsh zarsh = zarDomain.getZarsh();
AjaxResult ajaxResult = zarshService.saveSapDataByApi(zarDomain);
return ajaxResult;
}
/**
* 上游系统取消任务,入库已组盘不能取消;出库已下发任务不能取消
* 取消任务删除入库单据,组盘,任务
* 取消任务删除出库单据,组盘,任务
* @param zarsh
*/
public AjaxResult cancelTaskBySap(Zarsh zarsh) {
String mflag = zarsh.getMFlag();
String cFlag = zarsh.getCFlag();
String uniqueId = zarsh.getUniqueId();
/**
* 没有找到 唯一id 直接成功
*/
Zarsh zarsh1 = zarshService.checkZarshByUniqueId(zarsh.getUniqueId());
if (zarsh1 == null) {
return AjaxResult.success();
}
String drumId = zarsh.getDrumId();
Integer inKind = zarsh.getInKind();
Container container = containerService.getContainerByCode(drumId, QuantityConstant.WAREHOUSECODE);
List<TaskHeader> taskHeaders = taskHeaderService.list(new LambdaQueryWrapper<TaskHeader>()
.eq(TaskHeader::getUniqueIds, uniqueId));
String zoneCode = SAPUtils.getZoneCode(zarsh);
String area = zoneService.getZoneAreaByCode(zoneCode);
if(container == null){
if(StringUtils.isNotEmpty(zarsh.getLocation())){
return AjaxResult.error("任务取消失败");
}
//组盘情况 和 空托盘出库 玻璃布agv任务等
switch (inKind){
case 1:
if(!taskHeaders.isEmpty()){
return AjaxResult.error("任务已经生成无法取消");
}
List<ReceiptContainerHeader> list = receiptContainerHeaderService.list(new LambdaQueryWrapper<ReceiptContainerHeader>()
.eq(ReceiptContainerHeader::getUniqueIds, uniqueId));
if(!list.isEmpty()){
return AjaxResult.error();
}
break;
case 0:
if(taskHeaders.size() == 1){
TaskHeader taskHeader = taskHeaders.get(0);
AjaxResult ajaxResult = taskCancelService.cancelTask(taskHeader.getId() + "", QuantityConstant.WAREHOUSECODE, area);
if(ajaxResult.hasErr()){
return AjaxResult.error("任务取消失败");
}
AjaxResult ajaxResult1 = taskHeaderService.cancelTask(Convert.toIntArray(taskHeader.getId() + ""), true);
}else {
return AjaxResult.error("任务已经生成无法取消");
}
break;
default:
throw new ServiceException("IN_KIND类型不合理");
}
}else{
switch (inKind){
case 1:
case 0:
if(taskHeaders.size() == 1){
TaskHeader taskHeader = taskHeaders.get(0);
AjaxResult ajaxResult = taskCancelService.cancelTask(taskHeader.getId() + "", QuantityConstant.WAREHOUSECODE, area);
if(ajaxResult.hasErr()){
return AjaxResult.error("任务取消失败");
}
taskHeaderService.cancelTask(Convert.toIntArray(taskHeader.getId()+""), true);
}
if(taskHeaders.isEmpty()){
AgvTask agvTask = agvTaskService.getOne(new LambdaQueryWrapper<AgvTask>()
.eq(AgvTask::getUniqueId, uniqueId));
if(agvTask!=null){
Integer state = agvTask.getState();
if(state >= 10){
return AjaxResult.error("任务已下发执行 取消失败");
}
AjaxResult ajaxResult = acsService.TaskCancel(agvTask);
if(ajaxResult.hasErr()){
return ajaxResult;
}
}
}
break;
default:
throw new ServiceException("IN_KIND类型不合理");
}
}
// 删除zarsh表
// zarsh1.setCFlag("D");
// zarshService.removeByZarshId(zarsh1.getUniqueId(), zarsh1.getId());
return AjaxResult.success();
}
}