自动化立体仓库 - WMS系统
zyh
16 小时以前 701542ac0a90cf0e3a0a81ec2bb8066b5de68e75
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -5,13 +5,16 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.mes.MesReturn;
import com.zy.asrs.entity.mes.TransArrivalStation;
import com.zy.asrs.entity.mes.TransInOutStationAllow;
import com.zy.asrs.entity.mes.TransParent;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.enums.RcsRetMethodEnum;
import com.zy.asrs.mapper.BlockStationMapper;
import com.zy.asrs.mapper.BlockTaskMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -26,10 +29,7 @@
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -51,6 +51,8 @@
    private String inOk;
    @Value("${mes.defaultUserId}")
    public long defaultUserId;
    @Value("${mes.url}")
    private String url;
    @Resource
@@ -232,11 +234,7 @@
        if (!StringUtils.isEmpty(response) && response.contains("code")){
            RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
            if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) {
                JSONObject data = rcsReturn.getData();
                String robotTaskCode = data.getString("robotTaskCode");
                if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){
                    return 1;
                }
                return 1;
            }
        }
@@ -253,10 +251,11 @@
    public int continueTask(Object rcsTaskContinue, int rcsFactory){
        String url = rcsFactory == 2 ? HX_URL+inOk :HIK_URL + "api/robot/controller/task/extend/continue";
        String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
        if (!StringUtils.isEmpty(response) && response.contains("code")){
            RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
            if("200".equals(rcsReturn.getCode())) {
            if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) {
                return 1;
            }
        }
@@ -264,6 +263,20 @@
        return 0;
    }
    public int applyIn(JSONObject rcsTaskContinue, int rcsFactory){
        String url = rcsFactory == 2 ? HX_URL+"eqpt/notify/traffic" :HIK_URL + "api/robot/controller/task/extend/continue";
        String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
        if (!StringUtils.isEmpty(response) && response.contains("code")){
            RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
            if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) {
                return 1;
            }
        }
        return 0;
    }
    /**
     * 2.1.4任务取消接口
     *
@@ -324,11 +337,13 @@
    public RcsReturn reporterTask(RcsReporterTask rcsReporterTask) {
        RcsReturn rcsReturn = new RcsReturn();
        String robotTaskCode = rcsReporterTask.getRobotTaskCode();
        String singleRobotCode = rcsReporterTask.getSingleRobotCode();
        String[] split = robotTaskCode.split("-");
        robotTaskCode = split[0];
        // 修改后的逻辑:有"-"则去掉最后一个"-"及后面内容,没有则保持原样
        String robotTaskCode = rcsReporterTask.getRobotTaskCode();
        if (robotTaskCode.contains("-")) {
            robotTaskCode = robotTaskCode.substring(0, robotTaskCode.lastIndexOf("-"));
        }
        //华晓AGV状态反馈,及申请
        if(Cools.isEmpty(rcsReporterTask.getExtra())){
            if(Cools.isEmpty(rcsReporterTask.getMethod())){
@@ -365,11 +380,33 @@
                            rcsReturn.setData(data);
                            return rcsReturn;
                        }
                        // 更新任务状态等内部逻辑
                        task.setWrkSts(304L);   // 301 任务下发、302 任务执行、303 任务中断、304 任务结束
                        task.setModiTime(new Date());
                        task.setModiUser(defaultUserId);
                        taskService.updateById(task);
                        HashMap<String,Object> map = new HashMap<>();
                        map.put("taskno", task.getTaskNo());
                        map.put("agvFactory", "2");
                        String mesUrl = url+"AGVArrivalCompletedFit";
                        String response = RcsServiceImpl.sendPost(mesUrl, JSONObject.toJSONString(map));
                        if (!StringUtils.isEmpty(response) && response.contains("Success")){
                            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                            if("1".equals(mesReturn.getSuccess())) {
                                task.setWrkSts(305L);//任务状态从304--》305
                                task.setModiTime(new Date());
                                taskService.updateById(task);
                            }else {
                                rcsReturn.setCode("Err_RobotCodeNotMatch");
                                rcsReturn.setMessage("");
                                JSONObject data = new JSONObject();
                                data.put("robotTaskCode", robotTaskCode);
                                rcsReturn.setData(data);
                                return rcsReturn;
                            }
                        }else {
                            rcsReturn.setCode("Err_RobotCodeNotMatch");
                            rcsReturn.setMessage("");
                            JSONObject data = new JSONObject();
                            data.put("robotTaskCode", robotTaskCode);
                            rcsReturn.setData(data);
                            return rcsReturn;
                        }
                    } break;
                    case "APPLY_IN_STATION":
                    case "APPLY_OFF_STATION":
@@ -380,6 +417,7 @@
                        apply.setAgvCode(singleRobotCode);
                        String transType = memo.getString("TransType");
                        apply.setTransType(transType);
                        apply.setAgvFactory(1);
                        apply.setProductLineId(memo.getString("ProductLineId"));
                        apply.setStationId(task.getSourceStaNo());
                        //agv入站申请
@@ -447,7 +485,7 @@
            String slotCode = values.getString("slotCode");
            try {
                // q3,q8=1
                if ("1".equals(carrierType)) {    //AGV
                    EntityWrapper<Task> wrapper = new EntityWrapper<>();
                    wrapper.eq("task_no", robotTaskCode);
                    Task task = taskService.selectOne(wrapper);
@@ -563,7 +601,7 @@
                        }
                        break;
                    }
                }
                // 返回RCS
                rcsReturn.setCode("SUCCESS");
                rcsReturn.setMessage("");
@@ -660,11 +698,13 @@
     * @return
     */
    public RcsReturn hxApplyInLine(TransParent apply) {
        RcsReturn rcsReturn = new RcsReturn();
        String robotTaskCode = apply.getTaskno();
        String singleRobotCode = apply.getAgvCode();
        apply.setAgvCode("1");
        apply.setAgvFactory(2);
        String fullEmptyEnex = apply.getFullEmptyEnex();
        int allowInOrOut = 0;
        //华晓AGV申请
            if(Cools.isEmpty(apply.getMethod())){
                log.error("华晓AGV上报状态Method为空!");
@@ -704,10 +744,55 @@
            data.put("robotTaskCode", robotTaskCode);
            rcsReturn.setData(data);
            //海康AGV状态反馈,及申请
        return rcsReturn;
    }
    public RcsReturn hxOutStation(TransParent param) {
        RcsReturn rcsReturn = new RcsReturn();
        String robotTaskCode = param.getTaskno();
        if (Cools.isEmpty(param.getMethod())) {
            log.error("华晓AGV上报状态Method为空!");
            rcsReturn.setCode("Err_Internal");
            rcsReturn.setMessage("华晓AGV上报状态Method为空");
            JSONObject data = new JSONObject();
            data.put("robotTaskCode", robotTaskCode);
            rcsReturn.setData(data);
        } else {
            String method = param.getMethod();
            param.setStationId(param.getAreaNo());
            param.setAgvCode("1");
            if (method.equals("APPLY_OUT_STATION")) {
                if (mesService.outStation(param) == 1) {
                    // 返回RCS
                    rcsReturn.setCode("SUCCESS");
                    rcsReturn.setMessage("华晓AGV上报状态成功");
                    JSONObject data = new JSONObject();
                    data.put("robotTaskCode", robotTaskCode);
                    rcsReturn.setData(data);
                    return rcsReturn;
                }
            }else if (method.equals("APPLY_IN_STATION")) {
                if (mesService.applyInStation(param) == 1) {
                    // 返回RCS
                    rcsReturn.setCode("SUCCESS");
                    rcsReturn.setMessage("华晓AGV上报状态成功");
                    JSONObject data = new JSONObject();
                    data.put("robotTaskCode", robotTaskCode);
                    rcsReturn.setData(data);
                    return rcsReturn;
                }
            }
        }
        log.error("华晓AGV上报状态失败!");
        rcsReturn.setCode("Err_Internal");
        rcsReturn.setMessage("华晓AGV上报状态Method失败");
        JSONObject data = new JSONObject();
        data.put("robotTaskCode", robotTaskCode);
        rcsReturn.setData(data);
        return rcsReturn;
    }
    // endregion
    // region httpUtil