自动化立体仓库 - WCS系统
Junjie
2023-11-29 8b71bde8d68d5d2bb11fa51a297990cd1474e9c6
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,26 +1,31 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.*;
import com.zy.asrs.entity.param.TaskOverParam;
import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam;
import com.zy.asrs.entity.param.taskCreateParam;
import com.zy.asrs.service.*;
import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@@ -38,9 +43,31 @@
    @Autowired
    private BasDevpService basDevpService;
    @Value("${wms.url}")
    private String wmsUrl;
    private static final boolean auth = true;
    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
        add("ea1f0459efc02a79f046f982767939ae");
    }};
    @PostMapping("/toAgvTaskOver")
    public R getAgvTaskOver(@RequestHeader String appkey,
                           @RequestBody TaskOverParam param,
                           HttpServletRequest request){
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        if (Cools.isEmpty(param.getWharfCode())){
            return R.error("码头[wharfCode]不能为空");
        }
        if (Cools.isEmpty(param.getStatus())){
            return R.error("完成标记[status]不能为空");
        }
        openService.getAgvTaskOver(param);
        return R.ok();
    }
    //创建任务
    @PostMapping("/taskCreate")
@@ -107,7 +134,9 @@
    @PostMapping("/targetWharfApply")
    public R targetWharfApply(@RequestHeader String appkey,
                              @RequestBody WMSAndAGVInterfaceParam param,
                              HttpServletRequest request) {
                              HttpServletRequest request) throws IOException {
        auth(appkey,param,request);
        if (Cools.isEmpty(param)){
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getTaskNo())){
@@ -119,9 +148,8 @@
        } 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());
        R r = openService.AgvToWCSToWms(param);
        return r;
    }
    //AGV请求动作接口
@@ -129,6 +157,7 @@
    public R agvTaskRequest(@RequestHeader String appkey,
                              @RequestBody WMSAndAGVInterfaceParam param,
                              HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param)){
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getRequestType())){
@@ -136,38 +165,49 @@
        } 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();
        try{
            BasDevp basDevp = basDevpService.selectById(param.getWharfCode());
            if (basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N")){
                return R.ok();
            }else {
                return R.error();
            }
        }catch (Exception e){
            log.error("AGV请求动作接口报错:"+e);
            return R.error("程序报错,未查询到站点");
        }
    }
    //任务下发接口
    @PostMapping("/outboundTaskSend")
    @Transactional
    public R outboundTaskSend(@RequestHeader String appkey,
                              @RequestBody WMSAndAGVInterfaceParam param,
                              @RequestBody List<WMSAndAGVInterfaceParam> params,
                              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("是否空托盘信号为空!");
            }
        auth(appkey, params, request);
        List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>();
        for (WMSAndAGVInterfaceParam param:params){
            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("任务巷道为空!");
//        }
@@ -177,17 +217,20 @@
//        if (Cools.isEmpty(param.getTaskSerialNo())){
//            return R.error("任务执行顺序为空!");
//        }
            if (Cools.isEmpty(param.getTargetWharf())){
                return R.error("目标码头区域为空!");//G开头=7车间,H开头=8层,J开头=9车间
                if (Cools.isEmpty(param.getTargetWharf())){
                    return R.error("目标码头区域为空!");//G开头=7车间,H开头=8层,J开头=9车间
                }
                openService.taskCreate(new taskCreateParam(param));
                params1.add(param);
//                return R.ok(param);
            }catch (Exception e){
                String errorMsg = Cools.isEmpty(e.getLocalizedMessage()) ? "" : e.getLocalizedMessage();
                return R.error("生成任务失败,请联系管理员!"+ errorMsg);
            }
            openService.taskCreate(new taskCreateParam(param));
            return R.ok(param);
        }catch (Exception e){
            String errorMsg = Cools.isEmpty(e.getLocalizedMessage()) ? "" : e.getLocalizedMessage();
            return R.ok("生成任务失败,请联系管理员!"+ errorMsg);
        }
        return R.ok(params1);
    }
    //任务取消接口
@@ -212,20 +255,20 @@
        }
        boolean sign =false;
        switch (param.getTaskStatus()){
            case "1"://正常取消
            case 1://正常取消
                if (taskWrk.getWrkSts()>1){
                    return R.error("任务已开始执行");
                }
            case "2"://强制取消
            case 2://强制取消
                if (taskWrk.getWrkSts()>3){
                    return R.error("任务已执行完成");
                }
                break;
            case "3"://正常完成
            case 3://正常完成
                if (taskWrk.getWrkSts()>11){
                    return R.error("任务已开始执行");
                }
            case "4"://强制完成
            case 4://强制完成
                if (taskWrk.getWrkSts()>14){
                    return R.error("任务已执行完成");
                }
@@ -250,4 +293,6 @@
        }
    }
}