1
2
3
4
5
6
package com . huaheng . api . acs . controller ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
import com.baomidou.mybatisplus.core.toolkit.Wrappers ;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
周鸿
authored
about a year ago
7
8
import com.huaheng.api.acs.domain.AcsStatus ;
import com.huaheng.api.acs.domain.AcsWeightHeight ;
周鸿
authored
about a year ago
9
import com.huaheng.api.acs.domain.AgvTaskCS ;
周鸿
authored
about a year ago
10
import com.huaheng.api.acs.service.AcsCSService ;
周鸿
authored
about a year ago
11
import com.huaheng.api.acs.service.AgvTaskCSService ;
12
13
14
import com.huaheng.common.constant.QuantityConstant ;
import com.huaheng.common.support.Convert ;
import com.huaheng.common.utils.StringUtils ;
周鸿
authored
about a year ago
15
import com.huaheng.common.utils.security.ShiroUtils ;
16
17
18
19
20
21
22
23
24
25
26
27
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.page.PageDomain ;
import com.huaheng.framework.web.page.TableDataInfo ;
import com.huaheng.framework.web.page.TableSupport ;
import com.huaheng.pc.config.container.domain.Container ;
import com.huaheng.pc.config.container.service.ContainerService ;
import com.huaheng.pc.config.containerType.domain.ContainerType ;
import com.huaheng.pc.config.containerType.service.ContainerTypeService ;
周鸿
authored
about a year ago
28
29
import com.huaheng.pc.config.location.domain.Location ;
import com.huaheng.pc.config.location.service.LocationService ;
周鸿
authored
about a year ago
30
31
import com.huaheng.pc.config.station.domain.Station ;
import com.huaheng.pc.config.station.service.StationService ;
周鸿
authored
about a year ago
32
33
import com.huaheng.pc.task.taskHeader.domain.TaskHeader ;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService ;
34
35
36
37
38
39
40
41
42
43
import io.swagger.annotations.ApiOperation ;
import io.swagger.annotations.ApiParam ;
import org.apache.shiro.authz.annotation.RequiresPermissions ;
import org.springframework.stereotype.Controller ;
import org.springframework.ui.ModelMap ;
import org.springframework.web.bind.annotation.* ;
import javax.annotation.Resource ;
import javax.servlet.http.HttpServletRequest ;
import java.util.Date ;
xumiao
authored
about a year ago
44
import java.util.HashMap ;
45
46
47
48
49
50
51
52
import java.util.List ;
import java.util.Map ;
/**
* @author dell
*/
@Controller ( "AgvTaskController1" )
@RequestMapping ( "/agv" )
周鸿
authored
about a year ago
53
public class AgvTaskCSController extends BaseController {
54
55
56
57
private String prefix = "task/taskHeader" ;
@Resource
周鸿
authored
about a year ago
58
private AgvTaskCSService agvTaskService ;
59
60
61
62
@Resource
private ContainerService containerService ;
@Resource
private ContainerTypeService containerTypeService ;
周鸿
authored
about a year ago
63
64
@Resource
private TaskHeaderService taskHeaderService ;
周鸿
authored
about a year ago
65
66
67
68
@Resource
private AcsCSService acsCSService ;
@Resource
private LocationService locationService ;
周鸿
authored
about a year ago
69
70
@Resource
private StationService stationService ;
周鸿
authored
about a year ago
71
周鸿
authored
about a year ago
72
73
74
75
76
77
78
79
80
81
@RequiresPermissions ( "task:taskHeader:agvCsView" )
@GetMapping ()
public String taskHeader ( HttpServletRequest request , ModelMap mmap ) {
String InternalTaskType = request . getParameter ( "InternalTaskType" );
mmap . put ( "InternalTaskType" , InternalTaskType );
return prefix + "/agvHeader" ;
}
周鸿
authored
about a year ago
82
83
84
85
86
87
88
89
90
91
92
93
94
95
@GetMapping ( "/lookAgvTask/{taskNo}" )
public String taskDetail ( @PathVariable ( "taskNo" ) String taskNo , ModelMap mmap ) {
mmap . put ( "taskNo" , taskNo );
return prefix + "/agvHeader" ;
}
@RequiresPermissions ( "task:taskHeader:agvCsView" )
@GetMapping ( "/setPort/{taskId}" )
public String setPort ( @PathVariable ( "taskId" ) Integer taskId , ModelMap mmap ) {
TaskHeader taskHeader = taskHeaderService . getById ( taskId );
mmap . put ( "taskHeader" , taskHeader );
String containerCode = taskHeader . getContainerCode ();
List < Location > list = locationService . getLocationListByContainerCode ( taskHeader . getWarehouseCode (), containerCode , taskHeader . getToLocation ());
mmap . put ( "locationList" , list );
周鸿
authored
about a year ago
96
List < Station > stationList = stationService . getStationByContainers ( taskHeader . getContainerCode (), "3" , taskHeader . getWarehouseCode ());
周鸿
authored
about a year ago
97
mmap . put ( "stationList" , stationList );
周鸿
authored
about a year ago
98
99
100
return prefix + "/agvSetPort" ;
}
101
102
103
104
@RequiresPermissions ( "task:taskHeader:list" )
@Log ( title = "任务-上架任务" , operating = "查看任务列表" , action = BusinessType . GRANT )
@PostMapping ( "/list" )
@ResponseBody
周鸿
authored
about a year ago
105
public TableDataInfo list ( AgvTaskCS agvTask , @ApiParam ( name = "createdBegin" , value = "起止时间" ) String createdBegin ,
106
107
108
109
110
111
112
@ApiParam ( name = "createdEnd" , value = "结束时间" ) String createdEnd ,
@ApiParam ( name = "taskComplete" , value = "完成" ) String taskComplete ) {
PageDomain pageDomain = TableSupport . buildPageRequest ();
Integer pageNum = pageDomain . getPageNum ();
Integer pageSize = pageDomain . getPageSize ();
String isAsc = pageDomain . getIsAsc ();
String orderByColumn = pageDomain . getOrderByColumn ();
周鸿
authored
about a year ago
113
LambdaQueryWrapper < AgvTaskCS > lambdaQueryWrapper = new LambdaQueryWrapper <>();
周鸿
authored
about a year ago
114
lambdaQueryWrapper . eq ( AgvTaskCS: : getWarehouseCode , ShiroUtils . getWarehouseCode ())
周鸿
authored
about a year ago
115
116
. eq ( StringUtils . isNotNull ( agvTask . getId ()), AgvTaskCS: : getId , agvTask . getId ())
. eq ( StringUtils . isNotEmpty ( agvTask . getContainerCode ()), AgvTaskCS: : getContainerCode , agvTask . getContainerCode ())
周鸿
authored
about a year ago
117
. eq ( StringUtils . isNotNull ( agvTask . getTaskHeaderId ()), AgvTaskCS: : getTaskHeaderId , agvTask . getTaskHeaderId ())
周鸿
authored
about a year ago
118
119
120
121
. eq ( StringUtils . isNotEmpty ( agvTask . getFromPort ()), AgvTaskCS: : getFromPort , agvTask . getFromPort ())
. eq ( StringUtils . isNotEmpty ( agvTask . getToPort ()), AgvTaskCS: : getToPort , agvTask . getToPort ())
. eq ( StringUtils . isNotNull ( agvTask . getPriority ()), AgvTaskCS: : getPriority , agvTask . getPriority ())
. eq ( StringUtils . isNotEmpty ( agvTask . getCarNo ()), AgvTaskCS: : getCarNo , agvTask . getCarNo ())
周鸿
authored
about a year ago
122
. eq ( StringUtils . isNotNull ( agvTask . getStatus ()), AgvTaskCS: : getStatus , agvTask . getStatus ())
周鸿
authored
about a year ago
123
124
125
. ge ( StringUtils . isNotEmpty ( createdBegin ), AgvTaskCS: : getCreatedTime , createdBegin )
. le ( StringUtils . isNotEmpty ( createdEnd ), AgvTaskCS: : getCreatedTime , createdEnd )
. le ( StringUtils . isNotEmpty ( taskComplete ), AgvTaskCS: : getStatus , taskComplete )
126
127
128
129
130
131
. last (! StringUtils . isAnyEmpty ( isAsc , orderByColumn ), "order by" + " " + orderByColumn + " " + isAsc )
. last ( StringUtils . isAnyEmpty ( isAsc , orderByColumn ), "order by id desc" );
/**
* 使用分页查询
*/
if ( StringUtils . isNotNull ( pageNum ) && StringUtils . isNotNull ( pageSize )) {
周鸿
authored
about a year ago
132
133
134
Page < AgvTaskCS > page = new Page <>( pageNum , pageSize );
IPage < AgvTaskCS > iPage = agvTaskService . page ( page , lambdaQueryWrapper );
List < AgvTaskCS > iPages = iPage . getRecords ();
135
136
return getMpDataTable ( iPages , iPage . getTotal ());
} else {
周鸿
authored
about a year ago
137
List < AgvTaskCS > list = agvTaskService . list ( lambdaQueryWrapper );
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
return getDataTable ( list );
}
}
@GetMapping ( "/createAGVTask" )
public String create ( ) {
return prefix + "/agvCreate" ;
}
@ApiOperation ( value = "AGV创建任务" , httpMethod = "POST" )
@PostMapping ( "/createAGVTask" )
@ResponseBody
public AjaxResult createAGVTask ( String priority , String sourceLocation , String destinationLocation , String containerCode , String taskType ) {
AjaxResult ajaxResult = handleMultiProcess ( new MultiProcessListener () {
@Override
public AjaxResult doProcess ( ) {
周鸿
authored
about a year ago
155
AgvTaskCS agvTask = new AgvTaskCS ();
156
157
158
159
160
161
162
163
164
165
agvTask . setFromPort ( sourceLocation );
agvTask . setToPort ( destinationLocation );
agvTask . setContainerCode ( containerCode );
agvTask . setWarehouseCode ( "CS0001" );
return agvTaskService . createAGVTask ( agvTask );
}
});
return ajaxResult ;
}
周鸿
authored
about a year ago
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
@RequiresPermissions ( "task:agvtask:createAGVTaskJLK" )
@GetMapping ( "/createAGVTaskJLK" )
public String createAGVTaskJLK ( ) {
return prefix + "/agvCreateJLK" ;
}
@RequiresPermissions ( "task:agvtask:createAGVTaskJLK" )
@ApiOperation ( value = "AGV创建任务" , httpMethod = "POST" )
@PostMapping ( "/createAGVTaskJLK" )
@ResponseBody
public AjaxResult createAGVTaskJLK ( String sourceLocation , String destinationLocation , String containerCode ) {
AjaxResult ajaxResult = handleMultiProcess ( new MultiProcessListener () {
@Override
public AjaxResult doProcess ( ) {
AgvTaskCS agvTask = new AgvTaskCS ();
agvTask . setFromPort ( sourceLocation );
agvTask . setToPort ( destinationLocation );
agvTask . setContainerCode ( containerCode );
周鸿
authored
about a year ago
183
return agvTaskService . createAGVTaskJLK ( agvTask );
周鸿
authored
about a year ago
184
185
186
187
188
189
}
});
return ajaxResult ;
}
190
191
192
193
194
195
196
197
@Log ( title = "任务-任务管理" , operating = "下发AGV任务" , action = BusinessType . UPDATE )
@PostMapping ( "/execute" )
@ResponseBody
public AjaxResult execute ( String taskId ) {
if ( StringUtils . isEmpty ( taskId )) {
return AjaxResult . error ( "taskId不能为空" );
}
周鸿
authored
about a year ago
198
AjaxResult < AgvTaskCS > ajaxResult = agvTaskService . sendTaskToAGV ( Convert . toIntArray ( taskId ), false );
199
200
201
202
return ajaxResult ;
}
周鸿
authored
about a year ago
203
204
205
206
207
@GetMapping ( "/editagv/{id}" )
public String edit ( @PathVariable ( "id" ) Integer id , ModelMap mmap ) {
周鸿
authored
about a year ago
208
AgvTaskCS agvTask = agvTaskService . getById ( id );
209
210
211
212
213
214
215
216
mmap . put ( "agvTask" , agvTask );
return prefix + "/editagv" ;
}
@RequiresPermissions ( "task:taskHeader:edit" )
@PostMapping ( "/editagv" )
@ResponseBody
@Log ( title = "任务-任务管理" , operating = "编辑agv任务" , action = BusinessType . UPDATE )
周鸿
authored
about a year ago
217
218
public AjaxResult edit ( AgvTaskCS agvTask ) {
AgvTaskCS agvTaskResult = agvTaskService . getById ( agvTask . getId ());
219
220
221
222
223
224
225
226
227
228
229
if ( agvTaskResult . getStatus () >= QuantityConstant . TASK_STATUS_RELEASE ) {
return AjaxResult . error ( "任务已经下发了,不允许修改" );
}
agvTask . setUpdated ( new Date ());
// PointPosition pointPosition = pointPositionService.getOne(new LambdaQueryWrapper<PointPosition>().eq(PointPosition::getPositionName, agvTask.getToPort()));
// if (pointPosition == null) {
// return AjaxResult.error("目标点位不存在");
// }
// if (pointPosition != null && StringUtils.isNotEmpty(pointPosition.getContainerCode())) {
// return AjaxResult.error("目标点位有托盘,请选择其他点位");
// }
周鸿
authored
about a year ago
230
AgvTaskCS one = agvTaskService . getOne ( new LambdaQueryWrapper < AgvTaskCS >(). eq ( AgvTaskCS: : getToPort , agvTask . getToPort ()). lt ( AgvTaskCS: : getStatus , QuantityConstant . TASK_STATUS_COMPLETED ));
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
if ( one != null ) {
return AjaxResult . error ( "目标点位存在未完成的任务" );
}
return toAjax ( agvTaskService . updateById ( agvTask ));
}
@Log ( title = "任务-任务管理" , operating = "取消AGV任务" , action = BusinessType . DELETE )
@PostMapping ( "/cancelAGVTask" )
@ResponseBody
@RequiresPermissions ( "task:agvTask:remove" )
@ApiLogger ( apiName = "删除AGV任务" )
public AjaxResult cancelAGVTask ( String ids ) {
if ( StringUtils . isEmpty ( ids )) {
return AjaxResult . error ( "taskId不能为空" );
}
Integer [] idList = Convert . toIntArray ( ids );
for ( int id : idList ) {
周鸿
authored
about a year ago
249
AgvTaskCS agvTask = agvTaskService . getById ( id );
250
if ( agvTask . getStatus (). intValue () <= QuantityConstant . TASK_STATUS_BUILD ) {
周鸿
authored
about a year ago
251
// continue;
252
}
周鸿
authored
about a year ago
253
if ( agvTask . getStatus (). intValue ()>= QuantityConstant . TASK_STATUS_RELEASE ){
周鸿
authored
about a year ago
254
// return AjaxResult.error("任务已经下发,不能删除");
周鸿
authored
about a year ago
255
256
257
258
259
260
261
}
if ( StringUtils . isNotNull ( agvTask . getPreTaskNo ())){
AgvTaskCS agvTaskPre = agvTaskService . getById ( agvTask . getPreTaskNo ());
if ( agvTaskPre != null ){
return AjaxResult . error ( "AGV前置任务还存在,不能删除" );
}
}
262
263
264
if ( agvTask . getStatus (). intValue () == QuantityConstant . TASK_STATUS_COMPLETED ) {
return AjaxResult . error ( "任务已经完成" );
}
周鸿
authored
about a year ago
265
266
267
268
//判断任务id不为空,则将taskheader表状态改成10
if ( StringUtils . isNotNull ( agvTask . getTaskHeaderId ())){
TaskHeader taskHeader = taskHeaderService . getById ( agvTask . getTaskHeaderId ());
if ( taskHeader != null ){
周鸿
authored
12 months ago
269
270
271
272
273
274
275
if ( taskHeader . getStatus (). intValue ()< QuantityConstant . TASK_STATUS_COMPLETED ){
TaskHeader taskHeader1 = new TaskHeader ();
taskHeader1 . setId ( taskHeader . getId ());
taskHeader1 . setStatus ( 10 );
taskHeaderService . updateById ( taskHeader1 );
}
周鸿
authored
about a year ago
276
}
277
}
周鸿
authored
about a year ago
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
//将agvtask任务删除
agvTaskService . removeById ( id );
// String containerCode = agvTask.getContainerCode();
// if (StringUtils.isEmpty(containerCode)) {
// return AjaxResult.error("空托盘");
// }
// Container container = containerService.getContainerByCode(
// containerCode, agvTask.getWarehouseCode());
// LambdaQueryWrapper<ContainerType> containerTypeLambdaQueryWrapper = Wrappers.lambdaQuery();
// containerTypeLambdaQueryWrapper.eq(ContainerType::getCode, container.getContainerType());
// ContainerType containerType = containerTypeService.getContainerTypeByCode(
// container.getContainerType(), container.getWarehouseCode());
// AjaxResult ajaxResult = agvTaskService.cancelTask(id,
// agvTask.getWarehouseCode(), containerType.getArea());
// if (ajaxResult.hasErr()) {
// return ajaxResult;
// }
296
}
周鸿
authored
about a year ago
297
298
return AjaxResult . success ( "取消成功" );
// return agvTaskService.cancelAGVTask(Convert.toIntArray(ids));
299
300
301
302
303
304
}
@Log ( title = "任务-任务管理" , operating = "AGV任务状态通知" , action = BusinessType . UPDATE )
@PostMapping ( "/notifyAGVTask" )
@ResponseBody
@ApiLogger ( apiName = "更新AGV任务状态" , from = "AGV" )
周鸿
authored
about a year ago
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
public AjaxResult notifyAGVTask ( @RequestBody AcsStatus acsStatus ) {
if ( acsStatus == null ) {
return AjaxResult . error ( "入库组盘信息为空" );
}
String taskNo = acsStatus . getTaskNo ();
String carNo = acsStatus . getCarNo ();
int status = acsStatus . getStatus ();
String updateBy = acsStatus . getUpdateBy ();
updateBy = "acs" ;
if ( StringUtils . isEmpty ( taskNo ) ) {
return AjaxResult . error ( "更新AGV状态,任务号为空" );
}
/* if ( StringUtils . isEmpty ( carNo )) {
return AjaxResult . error ( "更新AGV状态,车辆编号为空" );
}*/
周鸿
authored
about a year ago
320
if ( StringUtils . isEmpty ( acsStatus . getWarehouseCode ())){
周鸿
authored
about a year ago
321
// return AjaxResult.error("更新AGV状态,仓库为空");
周鸿
authored
about a year ago
322
}
周鸿
authored
about a year ago
323
324
325
326
327
328
329
330
if ( status == 0 ) {
return AjaxResult . error ( "更新AGV状态,状态信息为空" );
}
if ( StringUtils . isEmpty ( updateBy )) {
return AjaxResult . error ( "更新AGV状态,更新者信息为空" );
}
String finalUpdateBy = updateBy ;
AjaxResult ajaxResult = handleMultiProcessV1 ( "notifyAGVTask" , new BaseController . MultiProcessListener () {
331
332
@Override
public AjaxResult doProcess ( ) {
周鸿
authored
about a year ago
333
AjaxResult ajaxResult = acsCSService . notifyAGVTask ( taskNo , carNo , status , finalUpdateBy );
334
335
336
337
338
339
return ajaxResult ;
}
});
return ajaxResult ;
}
xumiao
authored
about a year ago
340
341
342
@Log ( title = "任务-任务管理" , operating = "AGV任务完成" , action = BusinessType . UPDATE )
@PostMapping ( "/completeTaskByWMS" )
@ResponseBody
周鸿
authored
about a year ago
343
@ApiLogger ( apiName = "AGV任务完成" , from = "WMSS" )
xumiao
authored
about a year ago
344
345
346
347
348
349
350
public AjaxResult completeTaskByWMS ( String taskId ) {
AjaxResult ajaxResult = handleMultiProcess ( new MultiProcessListener () {
@Override
public AjaxResult doProcess ( ) {
Map map = new HashMap ();
map . put ( "taskNo" , taskId );
map . put ( "status" , "100" );
周鸿
authored
about a year ago
351
AjaxResult ajaxResult = acsCSService . notifyAGVTask ( taskId , "" , 100 , "qq" );
xumiao
authored
about a year ago
352
353
354
355
356
357
return ajaxResult ;
}
});
return ajaxResult ;
}
周鸿
authored
about a year ago
358
@PostMapping ( "/weightAndHeightByContainer" )
周鸿
authored
about a year ago
359
@ApiOperation ( "agv请求库位" )
周鸿
authored
about a year ago
360
@ResponseBody
周鸿
authored
about a year ago
361
@ApiLogger ( apiName = "agv请求库位" , from = "acs" )
周鸿
authored
about a year ago
362
public AjaxResult weightAndHeightByContainer ( @RequestBody AcsWeightHeight acsWeightHeight ) {
xumiao
authored
about a year ago
363
周鸿
authored
about a year ago
364
365
366
367
368
369
370
371
372
AjaxResult ajaxResult = handleMultiProcessV1 ( "weightAndHeightByContainer" , new MultiProcessListener () {
@Override
public AjaxResult doProcess ( ) {
AjaxResult ajaxResult = acsCSService . weightAndHeightByContainer ( acsWeightHeight );
return ajaxResult ;
}
});
return ajaxResult ;
}
周鸿
authored
about a year ago
373
周鸿
authored
about a year ago
374
375
376
377
378
379
380
381
382
383
384
385
@ApiOperation ( value = "AGV设置站台库位" , httpMethod = "POST" )
@PostMapping ( "/setAgvPort" )
@ResponseBody
public AjaxResult setAgvPort ( TaskHeader taskHeader ) {
AjaxResult ajaxResult = handleMultiProcessV1 ( "setAgvPort" , new MultiProcessListener () {
@Override
public AjaxResult doProcess ( ) {
return agvTaskService . setAgvPort ( taskHeader );
}
});
return ajaxResult ;
}
周鸿
authored
about a year ago
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
@Log ( title = "任务-任务管理" , operating = "下发AGV任务" , action = BusinessType . UPDATE )
@PostMapping ( "/executeByContainerCode" )
@ResponseBody
public AjaxResult executeByContainerCode ( @RequestBody AcsWeightHeight acsWeightHeight ) {
if ( StringUtils . isNull ( acsWeightHeight )) {
return AjaxResult . error ( "数据不能为空" );
}
String containerCode = acsWeightHeight . getContainerCode ();
if ( StringUtils . isEmpty ( containerCode )) {
return AjaxResult . error ( "容器号不能为空" );
}
AjaxResult ajaxResult = handleMultiProcessV1 ( "executeByContainerCode" , new MultiProcessListener () {
@Override
public AjaxResult doProcess ( ) {
return agvTaskService . excuteAgvContainer ( containerCode );
}
});
return ajaxResult ;
}
407
408
}