#
LSH
2023-09-13 dfa7f7999a16fadf1bccfab37d41bb859403ea3b
#
5个文件已修改
1个文件已添加
251 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskWrkController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/WMSAndAGVInterfaceParam.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/taskCreateParam.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,16 +1,18 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam;
import com.zy.asrs.entity.param.taskCreateParam;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.OpenService;
import com.zy.asrs.service.TaskWrkService;
import com.zy.asrs.service.*;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +33,10 @@
    private TaskWrkService taskWrkService;
    @Autowired
    private CommandInfoService commandInfoService;
    @Autowired
    private TaskWrkController taskWrkController;
    @Autowired
    private BasDevpService basDevpService;
    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
        add("ea1f0459efc02a79f046f982767939ae");
@@ -97,4 +103,151 @@
        }
    }
    //AGV请求入库码头接口
    @PostMapping("/targetWharfApply")
    public R targetWharfApply(@RequestHeader String appkey,
                              @RequestBody WMSAndAGVInterfaceParam param,
                              HttpServletRequest request) {
        if (Cools.isEmpty(param)){
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getTaskNo())){
            return R.error("工作号为空!");
        } else if (Cools.isEmpty(param.getContainerCode())){
            return R.error("托盘编码为空!");
        } else if (Cools.isEmpty(param.getWharfSource())){
            return R.error("源码头为空!");
        } else if (Cools.isEmpty(param.getFreeWharfs()) || param.getFreeWharfs().size()==0){
            return R.error("空闲的入库码头(AGV)为空!");
        }
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
        return R.ok(taskWrk.getStartPoint());
    }
    //AGV请求动作接口
    @PostMapping("/agvTaskRequest")
    public R agvTaskRequest(@RequestHeader String appkey,
                              @RequestBody WMSAndAGVInterfaceParam param,
                              HttpServletRequest request) {
        if (Cools.isEmpty(param)){
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getRequestType())){
            return R.error("请求类型为空!");
        } else if (Cools.isEmpty(param.getWharfCode())){
            return R.error("码头编号为空!");
        }
        BasDevp basDevp = basDevpService.selectById(param.getWharfCode());
        if (basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N")){
            return R.ok();
        }else {
            return R.error();
        }
    }
    //任务下发接口
    @PostMapping("/outboundTaskSend")
    public R outboundTaskSend(@RequestHeader String appkey,
                              @RequestBody WMSAndAGVInterfaceParam param,
                              HttpServletRequest request) {
        try {
            if (Cools.isEmpty(param)){
                return R.error("参数为空!");
            } else if (Cools.isEmpty(param.getTaskNo())){
                return R.error("任务号为空!");
            } else if (Cools.isEmpty(param.getTaskType())){
                return R.error("任务类型为空!");
            } else if (Cools.isEmpty(param.getWarehouseId())){
                return R.error("仓库标识为空!");
            }
            if (Cools.isEmpty(param.getTaskPriority())){
                param.setTaskPriority(1);
            }
            if (Cools.isEmpty(param.getContainerCode())){
                return R.error("容器编码(托盘码)为空!");
            }
            if (Cools.isEmpty(param.getEmptyContainer())){
                return R.error("是否空托盘信号为空!");
            }
//        if (Cools.isEmpty(param.getTaskTunnel())){
//            return R.error("任务巷道为空!");
//        }
//        if (Cools.isEmpty(param.getGroupNo())){
//            return R.error("任务组为空!");
//        }
//        if (Cools.isEmpty(param.getTaskSerialNo())){
//            return R.error("任务执行顺序为空!");
//        }
            if (Cools.isEmpty(param.getTargetWharf())){
                return R.error("目标码头区域为空!");//G开头=7车间,H开头=8层,J开头=9车间
            }
            openService.taskCreate(new taskCreateParam(param));
            return R.ok(param);
        }catch (Exception e){
            String errorMsg = Cools.isEmpty(e.getLocalizedMessage()) ? "" : e.getLocalizedMessage();
            return R.ok("生成任务失败,请联系管理员!"+ errorMsg);
        }
    }
    //任务取消接口
    @PostMapping("/taskCancel")
    public R taskCancel(@RequestHeader String appkey,
                               @RequestBody WMSAndAGVInterfaceParam param,
                               HttpServletRequest request) {
        if (Cools.isEmpty(param)){
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getTaskNo())){
            return R.error("工作号为空!");
        } else if (Cools.isEmpty(param.getTaskStatus())){
            return R.error("操作类型为空!");
        }
//        else if (Cools.isEmpty(param.getWarehouseId())){
//            return R.error("仓库标识为空!");
//        }
        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", param.getTaskNo()));
        if (Cools.isEmpty(taskWrk)){
            return R.error("未查到当前任务");
        }
        boolean sign =false;
        switch (param.getTaskStatus()){
            case "1"://正常取消
                if (taskWrk.getWrkSts()>1){
                    return R.error("任务已开始执行");
                }
            case "2"://强制取消
                if (taskWrk.getWrkSts()>3){
                    return R.error("任务已执行完成");
                }
                break;
            case "3"://正常完成
                if (taskWrk.getWrkSts()>11){
                    return R.error("任务已开始执行");
                }
            case "4"://强制完成
                if (taskWrk.getWrkSts()>14){
                    return R.error("任务已执行完成");
                }
                sign=true;
                break;
            default:
                return R.error("未知操作");
        }
        return taskWrkOperate(taskWrk,sign);
    }
    //任务操作
    private R taskWrkOperate(TaskWrk taskWrk,boolean sign){
        try{
            if (sign){//完成
                return taskWrkController.complete(taskWrk.getTaskNo());
            }else {//取消
                return taskWrkController.cancel(taskWrk.getTaskNo());
            }
        }catch (Exception e){
            return R.error();
        }
    }
}
src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -134,7 +134,7 @@
        if (taskWrk == null) {
            return R.error();
        }
        if (taskWrk.getStatus() == TaskStatusType.COMPLETE.id) {
        if (taskWrk.getStatus().equals(TaskStatusType.COMPLETE.id)) {
            return R.error(taskWrk.getTaskNo() + "已完结");
        }
        Date now = new Date();
@@ -153,7 +153,7 @@
        if (taskWrk == null) {
            return R.error();
        }
        if (taskWrk.getStatus() == TaskStatusType.CANCEL.id) {
        if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) {
            return R.error(taskWrk.getTaskNo() + "已被取消");
        }
        Date now = new Date();
src/main/java/com/zy/asrs/entity/param/WMSAndAGVInterfaceParam.java
New file
@@ -0,0 +1,46 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.List;
@Data
public class WMSAndAGVInterfaceParam {
    private String taskNo;              //任务号
    private String warehouseId;         //仓库标识
    //wms出库任务下发接口
    private String taskType;            //任务类型             CK、YK、RK、PD
    private int taskPriority;           //优先级
    private String containerCode;       //容器编码
    private String containerTypeCode;   //容器类型
    private String emptyContainer;      //是否空托盘            Y:是 N:否
    private int taskTunnel;             //任务巷道
    private String sourceLocationCode;  //起始货位
    private String targetLocationCode;  //目标货位
    private String groupNo;             //任务组               标识着哪些任务属于同一组
    private int taskSerialNo;           //任务执行顺序          同一任务组的任务,按任务执行顺序执行任务
    private String createTime;          //创建时间             YYYY-MM-DD HH24:MI:SS
    private String targetWharf;         //目标码头区域          数据字典,G开头=7车间,H开头=8层,J开头=9车间
    //任务取消接口
    /*操作类型:
    * 1.正常取消--只能取消未执行的任务,货物处在未执行任务状态
    * 2.强制取消--可取消已执行未完成的任务,货物处在未执行任务状态
    * 3.正常完成--只能完成未执行的任务,货物处于任务执行完成状态
    * 4.强制完成--可完成已执行未完成的任务,货物处于任务执行完成状态
    * */
    private String taskStatus;          //操作类型
    //AGV请求入库码头接口
//    private String containerCode;     //托盘编码
    private String wharfSource;         //源码头
    private List<String> freeWharfs;
    //AGV请求动作接口
    private String requestType;         //请求类型:         1=取货;2=放货
    private String wharfCode;           //码头编号
}
src/main/java/com/zy/asrs/entity/param/taskCreateParam.java
@@ -14,8 +14,14 @@
    //起点
    private String startPoint;
    //优先级
    private Double taskPriority;
    //终点
    private String targetPoint;
    //是否空托盘            Y:是 N:否
    private String emptyContainer;
    //条码
    private String barcode;
@@ -23,4 +29,33 @@
    //备注
    private String memo;
    public taskCreateParam(){};
    public taskCreateParam(WMSAndAGVInterfaceParam param){
        this.taskNo = param.getTaskNo();
        this.ioType = convertParamIoType(param.getTaskType());
        this.barcode = param.getContainerCode();
        this.taskPriority = (double) param.getTaskPriority();
        this.startPoint = param.getSourceLocationCode();
        this.targetPoint = param.getTargetLocationCode();
        this.emptyContainer = param.getEmptyContainer();
    };
    public static Integer convertParamIoType(String paramIoType){
        switch (paramIoType){
            case "RK":
                return 1;
            case "CK":
                return 2;
            case "YK":
                return 3;
            case "PD":
                return 4;
            default:
                return 0;
        }
    }
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -24,6 +24,9 @@
        if (taskWrk != null) {
            throw new CoolException(param.getTaskNo() + "任务已存在,请勿重复提交");
        }
        if (param.getIoType().equals(0)){
            throw new CoolException("生成任务失败,任务类型不存在!");
        }
        Date now = new Date();
        taskWrk = new TaskWrk();
@@ -31,7 +34,7 @@
        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
        taskWrk.setCreateTime(now);
        taskWrk.setIoType(param.getIoType());//任务类型
        taskWrk.setIoPri(13D);//优先级
        taskWrk.setIoPri(param.getTaskPriority());//优先级
        taskWrk.setBarcode(param.getBarcode());//条码
        if (!Cools.isEmpty(param.getStartPoint())) {
            taskWrk.setStartPoint(param.getStartPoint());//起点
src/main/resources/application.yml
@@ -8,7 +8,7 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=wcs_dev
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=ghtzasrs
    username: sa
    password: sa@123
  mvc: