ZarApiService.java
6.55 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
package com.huaheng.api.sap.service;
import java.util.List;
import javax.annotation.Resource;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
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.exception.service.ServiceException;
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.domain.Zarsi;
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;
/**
* @param zarDomain 入库出库单
*/
public AjaxResult saveSapData(ZarDomain zarDomain) {
if (StringUtils.isNull(zarDomain)) {
throw new ServiceException("参数为空");
}
List<Zarsi> zarsiList = zarDomain.getZarsiList();
Zarsh zarsh = zarDomain.getZarsh();
if (zarsh == null) {
throw new ServiceException("zarsh参数为空");
}
if (StringUtils.isEmpty(zarsh.getUniqueId())) {
throw new ServiceException("唯一号uniqueId参数为空");
}
AjaxResult ajaxResult = zarshService.saveSapDataByApi(zarDomain);
if (ajaxResult == null || ajaxResult.hasErr()) {
String msg = ajaxResult.getMsg();
// 调用sap的api,传递任务状态
backSapStatusService.saveBackSapStatus(zarsh.getUniqueId(), zarsh.getLgnum(), null, 1, "C", null, msg);
}
return ajaxResult;
}
/**
* 上游系统取消任务,入库已组盘不能取消;出库已下发任务不能取消
* 取消任务删除入库单据,组盘,任务
* 取消任务删除出库单据,组盘,任务
* @param zarsh
*/
public AjaxResult cancelTaskBySap(Zarsh zarsh) {
Integer mflag = zarsh.getMFlag();
String uniqueId = zarsh.getUniqueId();
Zarsh zarsh1 = zarshService.checkZarshByUniqueId(zarsh.getUniqueId());
if (zarsh1 == null) {
throw new ServiceException("找不到该任务," + uniqueId);
}
// 查询任务
LambdaQueryWrapper<TaskHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(TaskHeader::getUniqueIds, uniqueId);
TaskHeader taskHeader = taskHeaderService.getOne(lambdaQueryWrapper);
if (taskHeader == null){
throw new ServiceException("查询任务失败!");
}
if (taskHeader.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYRECEIPT) || taskHeader.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT)){
mflag = 3;
}
AjaxResult ajaxResult = null;
switch (mflag) {
case 2:
case 8:
receiptContainerHeaderService.removeReceiptContainerByUnique(uniqueId);
ReceiptHeader receiptHeader = receiptHeaderService.getReceiptByReferCode(uniqueId);
if (receiptHeader == null) {
throw new ServiceException("找不到该任务," + uniqueId);
}
if (receiptHeader.getFirstStatus() > QuantityConstant.RECEIPT_HEADER_RECEIVING) {
throw new ServiceException("任务已经在执行,不能取消");
}
ajaxResult = receiptHeaderService.removeById(receiptHeader.getId().toString());
break;
case 1:
case 3:
// 取消任务
List<TaskDetail> list = taskHeaderService.getTaskByUnique(uniqueId);
String ids = "";
for (TaskDetail detail : list) {
Integer taskId = detail.getTaskId();
// TaskHeader taskHeader = taskHeaderService.getById(taskId);
if (taskHeader.getStatus().intValue() <= QuantityConstant.TASK_STATUS_BUILD) {
continue;
}
String containerCode = taskHeader.getContainerCode();
if (StringUtils.isEmpty(containerCode)) {
return AjaxResult.error("空托盘");
}
// 获取任务库区,调用该库区wcs
Integer area = ZoneAreaUtils.getAreaByZoneCode(taskHeader.getZoneCode());
AjaxResult ajaxResult1 = taskCancelService.cancelTask(String.valueOf(taskId), taskHeader.getWarehouseCode(), area.toString());
if (ajaxResult1.hasErr()) {
return ajaxResult1;
}
ids = taskId + ",";
}
ajaxResult = taskHeaderService.cancelTask(Convert.toIntArray(ids), false);
break;
default:
break;
}
if (ajaxResult == null || ajaxResult.hasErr()) {
return ajaxResult;
}
// 删除zarsh表
zarsh1.setCFlag("D");
zarshService.removeByZarshId(zarsh1.getUniqueId(), zarsh1.getId());
return ajaxResult;
}
}