Blame view

src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java 15.2 KB
mahuandong authored
1
2
3
package com.huaheng.pc.task.taskHeader.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
mahuandong authored
5
import com.baomidou.mybatisplus.core.metadata.IPage;
周鸿 authored
6
import com.huaheng.api.acs.service.AcsService;
周鸿 authored
7
import com.huaheng.common.utils.Wrappers;
mahuandong authored
8
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
9
10
import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
import com.huaheng.common.constant.QuantityConstant;
11
import com.huaheng.common.exception.service.ServiceException;
mahuandong authored
12
13
14
import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
15
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
mahuandong authored
16
17
18
19
20
21
22
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;
23
24
25
import com.huaheng.framework.web.service.ConfigService;
import com.huaheng.pc.config.configValue.domain.ConfigValue;
import com.huaheng.pc.config.configValue.service.ConfigValueService;
26
27
28
29
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;
30
import com.huaheng.pc.config.location.domain.Location;
mahuandong authored
31
32
33
34
35
36
37
38
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.warehouse.domain.Warehouse;
import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
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.mapper.TaskHeaderMapper;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
39
import com.huaheng.pc.task.taskHeader.service.WorkTaskService;
40
import io.swagger.annotations.ApiOperation;
mahuandong authored
41
42
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
43
import org.apache.shiro.session.Session;
mahuandong authored
44
import org.springframework.stereotype.Controller;
45
import org.springframework.ui.Model;
mahuandong authored
46
47
48
49
50
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
51
52
import java.util.AbstractList;
import java.util.ArrayList;
53
import java.util.Collections;
mahuandong authored
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.List;


@Controller
@RequestMapping("/task/taskHeader")


public class TaskHeaderController extends BaseController {


    @Resource
    private TaskHeaderService taskHeaderService;
66
67
    @Resource
    private WorkTaskService workTaskService;
68
69
70
71
    @Resource
    private TaskCancelService taskCancelService;
    @Resource
    private ConfigService configService;
72
73
74
75
    @Resource
    private ContainerService containerService;
    @Resource
    private ContainerTypeService containerTypeService;
周鸿 authored
76
77
    @Resource
    private AcsService acsService;
78
mahuandong authored
79
80
81
82
83
84
85
86
87
88
89

    private String prefix = "task/taskHeader";

    @RequiresPermissions("task:taskHeader:view")
    @GetMapping()
    public String taskHeader(HttpServletRequest request, ModelMap mmap) {
        String InternalTaskType= request.getParameter("InternalTaskType");
        mmap.put("InternalTaskType",InternalTaskType);
        return prefix + "/taskHeader";
    }
周鸿 authored
90
91
92
93
94
95
    @RequiresPermissions("task:taskHeader:view")
    @GetMapping("taskHeaderV")
    public String taskHeaderV( ModelMap mmap) {
        return prefix + "/taskHeaderV";
    }
mahuandong authored
96
97
98
99
100
101
102
    /**
     * 查询任务列表
     */
    @RequiresPermissions("task:taskHeader:list")
    @Log(title = "任务-上架任务", operating = "查看任务列表", action = BusinessType.GRANT)
    @PostMapping("/list")
    @ResponseBody
103
    public TableDataInfo list(TaskHeader taskHeader,@ApiParam(name="internalTaskType",value="类型") Integer internalTaskType,
104
                              @ApiParam(name="createdBegin",value="类型") String createdBegin,@ApiParam(name="createdEnd",value="类型") String createdEnd) {
105
106
        if(internalTaskType!=null&&internalTaskType==0){
            internalTaskType=null;
周鸿 authored
107
        }
mahuandong authored
108
109
        LambdaQueryWrapper<TaskHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
110
                .eq(StringUtils.isNotNull(internalTaskType),TaskHeader::getInternalTaskType,internalTaskType)
111
112
113
                .eq(StringUtils.isNotNull(taskHeader.getId()),TaskHeader::getId,taskHeader.getId())
                .eq(StringUtils.isNotEmpty(taskHeader.getContainerCode()),TaskHeader::getContainerCode,taskHeader.getContainerCode())
                .eq(StringUtils.isNotEmpty(taskHeader.getToLocation()),TaskHeader::getToLocation,taskHeader.getToLocation())
114
                .eq(StringUtils.isNotEmpty(taskHeader.getFromLocation()),TaskHeader::getFromLocation,taskHeader.getFromLocation())
115
116
117
118
                .eq(StringUtils.isNotEmpty(taskHeader.getZoneCode()),TaskHeader::getZoneCode,taskHeader.getZoneCode())
                .eq(StringUtils.isNotNull(taskHeader.getPriority()),TaskHeader::getPriority,taskHeader.getPriority())
                .gt(StringUtils.isNotEmpty(createdBegin),TaskHeader::getCreated,createdBegin)
                .lt(StringUtils.isNotEmpty(createdEnd),TaskHeader::getCreated,createdEnd)
tongzhonghao authored
119
                .eq(StringUtils.isNotNull(taskHeader.getIsReturn()),TaskHeader::getIsReturn,taskHeader.getIsReturn())
120
121
                .orderByAsc(TaskHeader::getStatus)
                .orderByDesc(TaskHeader::getId);
mahuandong authored
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

        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        /**
         * 使用分页查询
         */
        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
            Page<TaskHeader> page = new Page<>(pageNum, pageSize);
            IPage<TaskHeader> iPage = taskHeaderService.page(page, lambdaQueryWrapper);
            List<TaskHeader> iPages = iPage.getRecords();
            return getMpDataTable(iPages, iPage.getTotal());
        } else {
            List<TaskHeader> list = taskHeaderService.list(lambdaQueryWrapper);
            return getDataTable(list);
        }
    }

    /**
     * 下发任务
     */
    @RequiresPermissions("task:taskHeader:execute")
    @Log(title = "任务-任务管理", operating = "下发立库任务", action = BusinessType.UPDATE)
    @PostMapping( "/execute")
    @ResponseBody
    public AjaxResult execute(String taskId)
    {
xqs authored
149
        if (StringUtils.isEmpty(taskId)){
mahuandong authored
150
            return AjaxResult.error("taskId不能为空");
xqs authored
151
        }
tongzhonghao authored
152
153
154
155
156
157
158
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult = taskHeaderService.sendTaskToWcs(Convert.toIntArray(taskId));
                return ajaxResult;
            }
        });
mahuandong authored
159
160
        return ajaxResult;
    }
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
204
205
206
    /**
     * 修改最大优先级
     */
    @ApiOperation(value = "最大优先级", notes = "最大优先级", httpMethod = "POST")
    @PostMapping("/prioritymax")
    @ResponseBody
    public AjaxResult editBatchSave (String ids) {
        return toAjax(taskHeaderService.prioritymax(ids));
    }
    /**
     * 修改最小优先级
     */
    @ApiOperation(value = "最小优先级", notes = "最小优先级", httpMethod = "POST")
    @PostMapping("/prioritymin")
    @ResponseBody
    public AjaxResult prioritymin (String ids) {
        return  toAjax( taskHeaderService.prioritymin(ids));
    }


//    @ApiOperation(value = "最大优先级", notes = "最大优先级", httpMethod = "POST")
//    @PostMapping("/priorityedit")
//    @ResponseBody
//    public AjaxResult editBatchSave (String ids) {
//        System.out.println(taskHeaderService.editBatchSave(ids));
//        return toAjax(1);
//    }
//
//    @ApiOperation(value = "最小优先级", notes = "最小优先级", httpMethod = "POST")
//    @PostMapping("/upmin")
//    @ResponseBody
//    public AjaxResult upmin (String ids) {
//        System.out.println(taskHeaderService.editmin(ids));
//        return toAjax(1);
//    }
//
//    @ApiOperation(value = "单个优先级", notes = "单个优先级", httpMethod = "POST")
//    @PostMapping("/updateid")
//    @ResponseBody
//    public AjaxResult editBatchSave (String id, String priority) {
//        System.out.println("-------------------------------------------"+id);
//        System.out.println("-------------------------------------------"+priority);
//        System.out.println(taskHeaderService.editID(id,priority));
//        return toAjax(1);
//    }
mahuandong authored
207
208
209
210
211
212
213
214

    /**
     * 完成任务
     */
    @RequiresPermissions("task:taskHeader:complete")
    @Log(title = "任务-任务管理", operating = "PC完成立库任务", action = BusinessType.UPDATE)
    @PostMapping( "/completeTaskByWMS")
    @ResponseBody
215
    @ApiLogger(apiName = "wcs任务完成", from="PC")
mahuandong authored
216
    public AjaxResult completeTaskByWMS(String taskId){
xqs authored
217
        if (StringUtils.isEmpty(taskId)){
mahuandong authored
218
            return AjaxResult.error("taskId不能为空");
xqs authored
219
        }
mahuandong authored
220
221
222
223
224
225
226
227
228
229
230
231
        return taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskId), null);
    }

    /**
     * 删除立库任务
     */
    @RequiresPermissions("task:taskHeader:remove")
    @Log(title = "任务-任务管理", operating = "删除立库任务", action = BusinessType.DELETE)
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids)
    {
mahuandong authored
232
        if (StringUtils.isEmpty(ids)) {
mahuandong authored
233
            return AjaxResult.error("taskId不能为空");
mahuandong authored
234
        }
235
236
237
238
239
240
241
242
243
244
245
246
        Integer[] idList = Convert.toIntArray(ids);
        for (int id : idList) {
            TaskHeader taskHeader = taskHeaderService.getById(id);
            if(taskHeader.getStatus().intValue()  <= QuantityConstant.TASK_STATUS_BUILD) {
                continue;
            }
            String containerCode = taskHeader.getContainerCode();
            if (StringUtils.isEmpty(containerCode)) {
                return AjaxResult.error("空托盘");
            }
            Container container = containerService.getContainerByCode(
                        containerCode, taskHeader.getWarehouseCode());
周鸿 authored
247
           /* LambdaQueryWrapper<ContainerType> containerTypeLambdaQueryWrapper = Wrappers.lambdaQuery();
248
249
            containerTypeLambdaQueryWrapper.eq(ContainerType::getCode, container.getContainerType());
            ContainerType containerType = containerTypeService.getContainerTypeByCode(
周鸿 authored
250
                                    container.getContainerType(), container.getWarehouseCode());*/
周鸿 authored
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
            AjaxResult ajaxResult =null;
            switch (taskHeader.getWarehouseCode()){
                case "CS0001":
                    ajaxResult = taskCancelService.cancelTask(String.valueOf(id),
                            taskHeader.getWarehouseCode(), container.getNumber());
                    if (ajaxResult.hasErr()) {
                        return ajaxResult;
                    }
                    break;
                case "KS0001":
                    if(taskHeader.getZoneCode().equals("LK") || taskHeader.getZoneCode().equals("XC")){
                        ajaxResult = taskCancelService.cancelTask(String.valueOf(id),
                                taskHeader.getWarehouseCode(), container.getNumber());
                    }
                    if(taskHeader.getZoneCode().equals("AGV")){
                        ajaxResult = acsService.taskCancel("取消");
                    }
                    if(ajaxResult.hasErr()){
周鸿 authored
269
                        return ajaxResult;
周鸿 authored
270
271
                    }
                    break;
272
            }
周鸿 authored
273
274
275
        }
276
mahuandong authored
277
        return taskHeaderService.cancelTask(Convert.toIntArray(ids));
mahuandong authored
278
279
    }
游杰 authored
280
281
282
283
284
285
286
287
288
289
    /**
     * 自动分配任务库位
     * WCS
     * @param taskId
     * @param high
     * @return
     */
    @PostMapping("/setLocationCode")
    @ResponseBody
    public AjaxResult setLocationCode( Integer taskId, Integer high){
xqs authored
290
        if (taskId == null){
游杰 authored
291
            return AjaxResult.error("任务id不能为空");
xqs authored
292
293
        }
        if (high == null){
游杰 authored
294
            return AjaxResult.error("高库位标识不能为空");
xqs authored
295
        }
游杰 authored
296
297
        return taskHeaderService.setLocationCode(taskId, high);
    }
mahuandong authored
298
299
300
301
    @Log(title = "库位监控-出库查看", operating = "出库查看", action = BusinessType.GRANT)
    @PostMapping("/checkLocationCode")
    @ResponseBody
游杰 authored
302
303
    public AjaxResult checkLocationCode (String locationCode) {
        if (StringUtils.isEmpty(locationCode)) {
304
305
            return AjaxResult.error("库位不能为空!");
        }
306
307
        List<String> list = new ArrayList<>();
        list.add(locationCode);
游杰 authored
308
        return workTaskService.createCheckOutTask(list, null);
309
310
    }
游杰 authored
311
    /**
游杰 authored
312
     * 选择出库口
游杰 authored
313
314
315
316
317
318
319
     */
    @GetMapping("/chooseStation/{taskId}")
    public String chooseStation(@PathVariable("taskId")String taskId, ModelMap mmap) {
        TaskHeader taskHeader = taskHeaderService.getById(taskId);
        String containerCode = taskHeader.getContainerCode();
        mmap.put("containerCode", containerCode);
        mmap.put("id", taskId);
320
321
        int taskType = taskHeader.getTaskType().intValue();
        if(taskType == QuantityConstant.TASK_TYPE_WHOLESHIPMENT ||
322
                taskType == QuantityConstant.TASK_TYPE_EMPTYSHIPMENT)  {
323
324
325
326
327
328
329
330
331
            mmap.put("type", QuantityConstant.STATION_OUT);
        } else if(taskType == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT ||
                taskType == QuantityConstant.TASK_TYPE_SORTINGSHIPMENT ||
                taskType == QuantityConstant.TASK_TYPE_VIEW ||
                taskType == QuantityConstant.TASK_TYPE_CYCLECOUNT) {
            mmap.put("type", QuantityConstant.STATION_PICK);
        } else {
            throw new ServiceException("任务类型不需要选站台");
        }
游杰 authored
332
333
334
335
336
337
338
339
340
341
342
        return prefix + "/chooseStation";
    }

    @Log(title = "设置站台", operating = "设置站台", action = BusinessType.GRANT)
    @PostMapping("/setStation")
    @ResponseBody
    public AjaxResult setStation (TaskHeader taskHeader){
        Integer taskiId = taskHeader.getId();
        LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
        taskHeaderLambdaQueryWrapper.eq(TaskHeader::getId, taskiId);
        TaskHeader taskHeader1 = taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
游杰 authored
343
        taskHeader1.setPort(taskHeader.getPort());
游杰 authored
344
        taskHeaderService.update(taskHeader1, taskHeaderLambdaQueryWrapper);
tongzhonghao authored
345
346
347
348
349
350
351
        AjaxResult execute = execute(String.valueOf(taskiId));
        if(execute.hasErr()){
            return execute;
        }
        taskHeader1.setStatus(QuantityConstant.TASK_STATUS_RELEASE);
        taskHeaderService.updateById(taskHeader1);
        return AjaxResult.success();
游杰 authored
352
    }
353
354
355
356
357
358
359
360
361

    @Log(title = "手动回传", operating = "手动回传", action = BusinessType.GRANT)
    @PostMapping("/handleBack")
    @ResponseBody
    public AjaxResult handleBack (Integer taskId){
        taskHeaderService.handleBack(taskId);
        return AjaxResult.success();
    }
mahuandong authored
362
}