AssignTaskController.java
7.45 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
199
200
201
202
203
package com.huaheng.api.wcs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.wcs.domain.AssignTask;
import com.huaheng.api.wcs.domain.WmsTask;
import com.huaheng.api.wcs.service.assignTask.AssignTaskService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.domain.RetCode;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.config.station.domain.Station;
import com.huaheng.pc.config.station.service.StationService;
import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
import com.huaheng.pc.system.config.service.IConfigService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.spi.http.HttpContext;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**任务完成
* wcs向wms传递数据
* @author ricard
* @date 2019/10/11
*
*/
@RestController
@RequestMapping("/API/WMS/v2")
public class AssignTaskController extends BaseController {
@Resource
private AssignTaskService assignTaskService;
@Resource
private InventoryHeaderService inventoryHeaderService;
@Resource
private AddressService addressService;
@Resource
private IConfigService iConfigService;
@Resource
private StationService stationService;
@Resource
private IConfigService configService;
@PostMapping("/assignTask")
@ApiOperation(value = "cwms任务下发", notes = "cwms任务下发")
@ApiLogger(apiName = "cwms任务下发")
@ResponseBody
public AjaxResult assignTask(@RequestBody AssignTask assignTask) {
//System.out.println("调用接口的ip:"+request.getRemoteAddr());
//String ip=configService.selectConfigByKey(QuantityConstant.APIIPLIMIT);
String ipflag=configService.selectConfigByKey(QuantityConstant.APIIPLIMITBUTTON);
AjaxResult ajaxResult=null;
if (ipflag.equals("1")){
//if(ip.equals(request.getRemoteAddr())){
ajaxResult=assignTaskService.assignTaskByWIS(assignTask);
// }else{
// return AjaxResult.error("此ip访问受限制!");
// }
}else{
ajaxResult=assignTaskService.assignTaskByWIS(assignTask);
}
return ajaxResult;
}
@Log(title = "站台呼叫空托盘", action = BusinessType.INSERT)
@PostMapping("/emptyContainerOutWcs")
@ApiOperation("站台呼叫空托盘")
@ResponseBody
public AjaxResult emptyContainerOutWcs(){
String containercode="";
AjaxResult result=inventoryHeaderService.emptyContainerOutWcs(containercode);
return result;
}
@Log(title = "空托盘校验", action = BusinessType.INSERT)
@PostMapping("/wmsPltCheck")
@ApiOperation("空托盘校验")
@ResponseBody
public AjaxResult wmsPltCheck(@RequestBody WmsTask wmsTask){
wmsTask.setReqID("123");
wmsTask.setRequestTime("2021.11.18");
String JsonParam = JSON.toJSONString(wmsTask);
System.out.println(JsonParam);
String url="";
String result = HttpUtils.bodypost(url, JsonParam);
if (StringUtils.isEmpty(result)) {
throw new ServiceException("接口地址错误或返回为空");
}
return null;
}
@PostMapping("/StationInfos")
@ResponseBody
public AjaxResult StationInfos() {
JSONObject json=new JSONObject();
String port []= {"P1001","P1004","P1005","P1008"};
json.put("stations",port);
String url="http://10.20.137.43:8124/api/WCSTask/StationInfos";
//String url = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_TASK_ASSIGN, warehouseCode, area);
String result = HttpUtils.bodypost(url, json.toJSONString());
json=JSONObject.parseObject(result);
String data=json.getString("data");
List<JSONObject>jsonlist=JSON.parseArray(data,JSONObject.class);
for(JSONObject ob:jsonlist){
System.out.println(ob.getString("station"));
System.out.println(ob.getString("state"));
if(ob.getString("state")=="0"){
result=ob.getString("station");
break;
}
}
return AjaxResult.success(result);
}
@PostMapping("/getTaskNo")
@ResponseBody
public AjaxResult getTaskNo(@RequestBody WmsTask wmsTask){
String code= getPort(wmsTask.getTaskNo(),wmsTask.getContainerCode(), wmsTask.getTaskStatus());
JSONObject data=new JSONObject();
data.put("code",code);
data.put("message","分拣任务下发成功");
return AjaxResult.success(data);
}
public String getOptimalPort (String port []){
JSONObject json=new JSONObject();
json.put("stations",port);
String station="";
String url = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_STATION_INFOS, "ZH0001", "1");
try {
String result = HttpUtils.bodypost(url, json.toJSONString());
json=JSONObject.parseObject(result);
String data=json.getString("data");
if(StringUtils.isEmpty(data)){
station="";
}else{
List<JSONObject>jsonlist= JSON.parseArray(data,JSONObject.class);
for(JSONObject ob:jsonlist){
if(ob.getString("state").equals("0")){
station=ob.getString("station");
break; }
}
}
}catch(Exception e){
e.printStackTrace();
station="";
}
return station;
}
/**
* 方法描述 根据区域,类型,巷道确认获取最优出站口
* @param: [area, type, roadway]
* @return: java.lang.String
* @author: chenao
* @date: 2021/11/27
*/
public String getPort(String area,String type,Integer roadway){
String port="";
if (roadway==1){
roadway=2;
}else{
roadway=1;
}
LambdaQueryWrapper<Station> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(Station::getStationGroup, area)
.eq(Station::getType,type)
.ne(roadway!=0,Station::getRoadway,roadway);
List<Station> list = stationService.list(lambdaQueryWrapper);
String ports []= new String[list.size()];
int i=0;
for (Station sa:list){
ports[i]=sa.getCode();
i++;
}
port=getOptimalPort(ports);
if(StringUtils.isEmpty(port)){//当没有空闲库位时,默认给查询的第一个库位
int index = (int) (Math.random() * list.size());
port = list.get(index).getCode();
}
return port;
}
}