AgvTaskController.java 7.31 KB
package com.huaheng.pc.task.agvTask.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.Wrappers;
import com.huaheng.common.utils.security.ShiroUtils;
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.task.agvTask.domain.AgvTask;
import com.huaheng.pc.task.agvTask.service.IAgvTaskService;
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping("/task/agvTask")
public class AgvTaskController extends BaseController {
    private String prefix="task/agvTask";

    @Resource
    private IAgvTaskService agvTaskService;

    @RequiresPermissions("task:agvTask:view")
    @GetMapping()
    public String agvTask() {

        return prefix + "/agvTask";
    }
    /**
     * 查询任务列表
     */
    @RequiresPermissions("task:agvTask:list")
    @Log(title = "任务-上架任务", operating = "查看任务列表", action = BusinessType.GRANT)
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(AgvTask agvTask,@ApiParam(name="taskType",value="类型") Integer taskType,
                              @ApiParam(name="createdBegin",value="类型") String createdBegin, @ApiParam(name="createdEnd",value="类型") String createdEnd) {
        LambdaQueryWrapper<AgvTask> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(AgvTask::getWarehouseCode, ShiroUtils.getWarehouseCode())
                .eq(StringUtils.isNotNull(taskType),AgvTask::getTaskType,taskType)
                .eq(StringUtils.isNotNull(agvTask.getId()),AgvTask::getId,agvTask.getId())
                .eq(StringUtils.isNotEmpty(agvTask.getContainerCode()),AgvTask::getContainerCode,agvTask.getContainerCode())
                .eq(StringUtils.isNotEmpty(agvTask.getFromPort()),AgvTask::getFromPort,agvTask.getFromPort())
                .eq(StringUtils.isNotEmpty(agvTask.getToPort()),AgvTask::getToPort,agvTask.getToPort())
                .eq(StringUtils.isNotNull(agvTask.getPriority()),AgvTask::getPriority,agvTask.getPriority())
                .gt(StringUtils.isNotEmpty(createdBegin),AgvTask::getCreatedTime,createdBegin)
                .lt(StringUtils.isNotEmpty(createdEnd),AgvTask::getCreatedTime,createdEnd)
                .orderByAsc(AgvTask::getStatus)
                .orderByDesc(AgvTask::getId);

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

    @RequiresPermissions("task:agvTask:execute")
    @Log(title = "任务-任务管理", operating = "下发立库任务", action = BusinessType.INSERT)
    @PostMapping( "/execute")
    @ResponseBody
    public AjaxResult execute(String ids)
    {
        if (StringUtils.isEmpty(ids)){
            return AjaxResult.error("ids不能为空");
        }
        String[] idList = ids.split(",");
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult1 = agvTaskService.executeAGVTask(idList);
                return ajaxResult1;
            }
        });
        return ajaxResult;
    }

    @RequiresPermissions("task:agvTask:cancels")
    @Log(title = "AGV任务-任务批量取消", operating = "批量取消AGV任务", action = BusinessType.DELETE)
    @PostMapping( "/cancels")
    @ResponseBody
    public AjaxResult cancels(String ids)
    {
        if (StringUtils.isEmpty(ids)){
            return AjaxResult.error("ids不能为空");
        }
        String[] idList = ids.split(",");
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult1 = agvTaskService.cancelAGVTasks(idList);
                return ajaxResult1;
            }
        });
        return ajaxResult;
    }

    @RequiresPermissions("task:agvTask:cancel")
    @Log(title = "AGV任务-任务取消", operating = "取消AGV任务", action = BusinessType.INSERT)
    @PostMapping( "/cancel")
    @ResponseBody
    public AjaxResult cancel(String id)
    {
        if (StringUtils.isEmpty(id)){
            return AjaxResult.error("id不能为空");
        }
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult1 = agvTaskService.cancelAGVTask(id);
                return ajaxResult1;
            }
        });
        return ajaxResult;
    }
    @RequiresPermissions("task:agvTask:complete")
    @Log(title = "AGV任务-任务完成", operating = "完成AGV任务", action = BusinessType.INSERT)
    @PostMapping( "/complete")
    @ResponseBody
    public AjaxResult complete(String id)
    {
        if (StringUtils.isEmpty(id)){
            return AjaxResult.error("id不能为空");
        }

        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult1 = agvTaskService.cancelAGVTask(id);
                return ajaxResult1;
            }
        });
        return ajaxResult;
    }

    @RequiresPermissions("task:agvTask:completes")
    @Log(title = "AGV任务-批量任务完成", operating = "批量完成AGV任务", action = BusinessType.DELETE)
    @PostMapping( "/completes")
    @ResponseBody
    public AjaxResult completes(String ids)
    {
        if (StringUtils.isEmpty(ids)){
            return AjaxResult.error("id不能为空");
        }
        String[] idList = ids.split(",");
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult1 = agvTaskService.completeAGVTask(idList);
                return ajaxResult1;
            }
        });
        return ajaxResult;
    }


}