TrussRobotController.java
7.49 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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
package com.huaheng.api.acs.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.acs.domain.pickContainer.ContainerPositionDomain;
import com.huaheng.api.acs.service.AcsService;
import com.huaheng.api.sap.domain.ZarDomain;
import com.huaheng.api.sap.service.ZarApiService;
import com.huaheng.api.wcs.service.warecellAllocation.LocationAllocationService;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.service.ConfigService;
import com.huaheng.pc.sap.domain.Zarsh;
import com.huaheng.pc.sap.domain.Zarsi;
import com.huaheng.pc.sap.service.SapTaskLogService;
import com.huaheng.pc.sap.service.ZarshService;
import com.huaheng.pc.sap.service.ZarsiService;
import com.huaheng.pc.task.agvTask.domain.AgvTask;
import com.huaheng.pc.task.agvTask.service.AgvTaskService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/***
* 商片二楼包装 自动行架抓取
* @author tongzonghao
*
*/
@RestController
@RequestMapping("/API/WMS/v2")
public class TrussRobotController {
@Resource
private AgvTaskService agvTaskService;
@Resource
private ZarshService zarshService;
@Resource
private ZarsiService zarsiService;
@Resource
private AcsService acsService;
@Resource
private LocationAllocationService locationAllocationService;
@Resource
private ZarApiService zarApiService;
@Resource
private SapTaskLogService sapTaskLogService;
@PostMapping("/pickContainerPosition")
@ApiOperation("商片分拣物料")
@ResponseBody
@ApiLogger(apiName = "商片分拣物料", from = "acs")
public AjaxResult pickContainerPosition(@RequestBody ContainerPositionDomain domain) {
if(StringUtils.isNull(domain)){
AjaxResult.error("请求内容未空");
}
String containerCode = domain.getContainerCode();
String port = domain.getStationCode();
if(StringUtils.isEmpty(containerCode)){
return AjaxResult.error("容器号不能为空");
}
if(!"P2026".equals(port)){
return AjaxResult.error("不是指定站台P2026");
}
//AGV任务
AgvTask agvTask = agvTaskService.getOne(new LambdaQueryWrapper<AgvTask>()
.eq(AgvTask::getPalletNo,containerCode)
.eq(AgvTask::getState,60)
.eq(AgvTask::getIsEmpty,1)
);
if(agvTask == null){
return AjaxResult.error("未找到到位托盘");
}
String uniqueId = agvTask.getUniqueId();
List<Zarsi> zarsis = zarsiService.getListByUniq(uniqueId);
if(zarsis.isEmpty()){
return AjaxResult.error("未找到库存记录");
}
List<Zarsi> unPickInventories = zarsis.stream().filter(e -> "X".equals(e.getUseFlag())).collect(Collectors.toList());
JSONObject jsonObject = new JSONObject();
if(unPickInventories.isEmpty()){
acsService.busTaskFinish(agvTask);
jsonObject.put("back",1);
//生成回库任务
int allInventories = zarsis.size();
//分拣库存
List<Zarsi> pickInventory = zarsis.stream().filter(e -> "XX".equals(e.getUseFlag())).collect(Collectors.toList());
int pickInventories = pickInventory.size();
//1.step 判断是否 是空托盘
boolean isEmptyContainer = pickInventories == allInventories;
//2.step 判断去缓存架 还是中间仓
//获取缓存区空库位
String locationCode = locationAllocationService.agvAllocation("DX", null, null, null);
//SAP 仓库号
String lgnum = null;
String lgort = null;
uniqueId = uniqueId+"BACK";
Zarsh zarsh = zarshService.getZarshByUnique(agvTask.getUniqueId());
if(locationCode == null){
lgnum = "PPC";
lgort = "SF22";
}else{
lgnum = "XBK";
lgort = "SF21";
}
zarsh.setLocation(null);
zarsh.setLgnum(lgnum);
zarsh.setLgort(lgort);
zarsh.setToPos(null);
zarsh.setFromPos(null);
zarsh.setUniqueId(uniqueId);
zarsh.setMFlag("2");
zarsh.setFromPos("2D10");
zarsh.setCFlag(null);
zarsh.setId(null);
List<Zarsi> zarsiList = new ArrayList<>();
ZarDomain zarDomain = new ZarDomain();
if(!isEmptyContainer){
zarsis.removeAll(pickInventory);
for (Zarsi zarsi : zarsis) {
zarsi.setId(null);
zarsi.setUseFlag(null);
zarsi.setUniqueId(uniqueId);
zarsiList.add(zarsi);
}
zarDomain.setZarsh(zarsh);
zarDomain.setZarsiList(zarsiList);
}else{
zarsh.setInKind(0);
zarDomain.setZarsh(zarsh);
}
AjaxResult ajaxResult = zarApiService.saveSapData(zarDomain);
sapTaskLogService.addSapTaskLog(zarDomain, ajaxResult.getMsg(), 0);
return AjaxResult.success(jsonObject);
}
zarsis = zarsis.stream().sorted(Comparator.comparing(Zarsi::getPosnr)).collect(Collectors.toList());
Zarsi zarsi = zarsis.stream().findFirst().get();
jsonObject.put("back",0);
jsonObject.put("rollNumber",zarsi.getCharg());
jsonObject.put("position",zarsi.getPosnr());
return AjaxResult.success(jsonObject);
}
@PostMapping("/leavedContainerPosition")
@ApiOperation("离开托盘位置")
@ResponseBody
@ApiLogger(apiName = "离开托盘位置", from = "acs")
public AjaxResult leavedContainerPosition(@RequestBody ContainerPositionDomain domain) {
String containerCode = domain.getContainerCode();
Integer position = domain.getPosition();
String rollNumber = domain.getRollNumber();
if(StringUtils.isEmpty(containerCode)){
return AjaxResult.error("抓取容器号不能为空");
}
if(StringUtils.isNull(position)){
return AjaxResult.error("抓取位置号不能为空");
}
if(StringUtils.isEmpty(rollNumber)){
return AjaxResult.error("抓取批次不能为空");
}
AgvTask agvTask = agvTaskService.getOne(new LambdaQueryWrapper<AgvTask>()
.eq(AgvTask::getPalletNo,containerCode)
.eq(AgvTask::getState,60)
.eq(AgvTask::getIsEmpty,1)
.isNotNull(AgvTask::getUniqueId));
if(agvTask == null){
return AjaxResult.error("未找到到达容器");
}
String uniqueId = agvTask.getUniqueId();
List<Zarsi> zarsis = zarsiService.getListByUniq(uniqueId);
for (Zarsi zarsi : zarsis) {
if(zarsi.getCharg().equals(rollNumber)){
zarsi.setUseFlag("XX");
zarsiService.updateById(zarsi);
return AjaxResult.success(zarsi);
}
}
return AjaxResult.success();
}
}