自动化立体仓库 - WMS系统
#
1
2 天以前 b1ab4be395a104f6e1bb25249e0b93c520080053
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -18,6 +18,7 @@
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.constant.AgvConstant;
import com.zy.common.constant.ArmConstant;
import com.zy.common.model.DetlDto;
import com.zy.common.service.CommonService;
@@ -807,6 +808,8 @@
        basAgvMast.setStaNo(param.getStaNo());
        basAgvMast.setSourceLocNo(param.getSourceLocNo());
        basAgvMast.setLocNo(param.getLocNo());
        String locNo = null;
        String staNo = null;
        // 默认值
        basAgvMast.setPriority(1L);          // 默认优先级
        basAgvMast.setStatus(0);             // 初始状态
@@ -814,11 +817,33 @@
        basAgvMast.setModiTime(new Date());  // 修改时间
        basAgvMast.setIoType(param.getIoType());// 任务类型
        basAgvMast.setFloorNo(param.getFloorNo()); //楼层
        switch (basAgvMast.getIoType()){
            // AGV库位==》输送线站点  0
            // AGV库位==》AGV库位  1
            // 输送线站点==》AGV库位  2
            // 输送线站点==》输送线站点  3
            case 0:
            case 1:
                locNo = param.getSourceLocNo();
                break;
            case 2:
            case 3:
                staNo = param.getSourceStaNo().toString();
                break;
        }
        // 插入数据库
        basAgvMastService.insert(basAgvMast);
        return true;
        bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam();
        bindParam.setBarcode(basAgvMast.getTimestamp().toString());
        bindParam.setIndBind("1");
        bindParam.setFloorNo(basAgvMast.getFloorNo());
        bindParam.setLocNo(locNo);
        bindParam.setStaNo(staNo);
        if(bindCtnrAndBin(bindParam)){
            return true;
        }else{
            throw new CoolException("未能绑定");
        }
    }
    @Override
@@ -865,51 +890,53 @@
        if (param == null) {
            throw new CoolException("参数不能为空");
        }
        AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
        BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
        BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo()));
        BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("sta_no", param.getStaNo()));
        agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis()));
        agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode());
        agvBindCtnrAndBinParam.setCtnrTyp("1");
        if(basAgvLocNoEnd != null && basAgvLocNoEnd.getAgvLocNo() != null){
            agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
        }
        if(basAgvLocNoSou != null && basAgvLocNoSou.getAgvLocNo() != null){
            agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoSou.getAgvLocNo());
        }
        agvBindCtnrAndBinParam.setIndBind(param.getIndBind());
        try {
            String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV接口地址
            String mesPath = "bindCtnrAndBin"; // 接口路径
            String response = "";
            boolean success = false;
        if (param.getFloorNo()==1){
            AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
            BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
            BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo()));
            BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("sta_no", param.getStaNo()));
            agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis()));
            agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode());
            agvBindCtnrAndBinParam.setCtnrTyp("1");
            if(basAgvLocNoEnd != null && basAgvLocNoEnd.getAgvLocNo() != null){
                agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
            }
            if(basAgvLocNoSou != null && basAgvLocNoSou.getAgvLocNo() != null){
                agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoSou.getAgvLocNo());
            }
            agvBindCtnrAndBinParam.setIndBind(param.getIndBind());
            try {
                log.info("AGV绑定容器接口请求参数: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
                String URL = AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService; // AGV接口地址
                String mesPath = AgvConstant.getAGVADAPTOR(param.getFloorNo()); // 接口路径
                String response = "";
                boolean success = false;
                try {
                    log.info("AGV绑定容器接口请求参数: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
                response = new HttpHandler.Builder()
                        .setUri(URL)
                        .setPath(mesPath)
                        .setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
                        .build()
                        .doPost();
                    response = new HttpHandler.Builder()
                            .setUri(URL)
                            .setPath(mesPath)
                            .setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
                            .build()
                            .doPost();
                log.info("AGV绑定容器接口响应: {}", response);
                JSONObject jsonObject = JSON.parseObject(response);
                    log.info("AGV绑定容器接口响应: {}", response);
                    JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code").equals(0)) {
                    success = true;
                } else {
                    log.error("AGV绑定容器失败!!!url:{};request:{};response:{}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response);
                    throw new CoolException("AGV绑定容器失败: " + jsonObject.getString("msg"));
                    if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code").equals(0)) {
                        success = true;
                    } else {
                        log.error("AGV绑定容器失败!!!url:{};request:{};response:{}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response);
                        throw new CoolException("AGV绑定容器失败: " + jsonObject.getString("msg"));
                    }
                } catch (Exception e) {
                    log.error("AGV绑定容器接口调用异常!!!url:{};request:{};response:{}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response, e);
                    throw new CoolException("AGV绑定容器接口调用异常: " + e.getMessage());
                }
            } catch (Exception e) {
                log.error("AGV绑定容器接口调用异常!!!url:{};request:{};response:{}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response, e);
                throw new CoolException("AGV绑定容器接口调用异常: " + e.getMessage());
                throw new CoolException(e.getMessage());
            }
        } catch (Exception e) {
            throw new CoolException(e.getMessage());
        }
        } else {}
        return true;
    }
@@ -933,7 +960,7 @@
        agvGoParam.setCode("0");
        agvGoParam.setMessage("继续执行");
        agvGoParam.setReqCode(param.getReqCode());
        ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("光栅下发后继续任务:", URL, AGVPath, param);
        ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("光栅下发后继续任务:", URL, AGVPath, agvGoParam);
        if (result.getCode()==200){
            return true;
        }
@@ -946,21 +973,49 @@
        String URL = "http://10.10.10.200:8181/"; // AGV接口地址
        String AGVPath = "rcms/services/rest/hikRpcService/bindCtnrAndBin"; // 接口路径
        BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no",taskNo));
        BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
        BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(
                new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo())
        );
        AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
        agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp());
        agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
        agvBindCtnrAndBinParam.setCtnrTyp("1");
        agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
        agvBindCtnrAndBinParam.setIndBind("0");
        ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", URL,AGVPath, agvBindCtnrAndBinParam);
        if (resultBind.getCode()!=200){
            return true;
        if (Cools.isEmpty(basAgvMast)){
            return false;
        }
        if (basAgvMast.getFloorNo()==1){
            BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
            BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(
                    new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo())
            );
            if (Cools.isEmpty(basAgvMast)){
                return false;
            }
            AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
            agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp());
            agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
            agvBindCtnrAndBinParam.setCtnrTyp("1");
            agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
            agvBindCtnrAndBinParam.setIndBind("0");
            ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", URL,AGVPath, agvBindCtnrAndBinParam);
            if (resultBind.getCode()!=200){
                basAgvMast.setStatus(4);
                basAgvMastService.updateById(basAgvMast);
                return true;
            }
            return false;
        }else {
            if (basAgvMast.getIoType()==0 && basAgvMast.getStaNo()==2034){
                AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam();
                agvBindCtnrAndBinTwoParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp());
                agvBindCtnrAndBinTwoParam.setPodCode(basAgvMast.getBarcode());
                agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getStaNo().toString());
                agvBindCtnrAndBinTwoParam.setIndBind("0");;
                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑",
                        AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam);
                if (resultBind.getCode()!=200){
                    basAgvMast.setStatus(4);
                    basAgvMastService.updateById(basAgvMast);
                    return true;
                }
            }
        }
        return false;
    }