自动化立体仓库 - WMS系统
pang.jiabao
19 小时以前 f2d4fd6447ceb34b0c02c749f4f9b762a2fed10b
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -16,7 +16,10 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
@@ -55,6 +58,9 @@
    private TaskDetlServiceImpl taskDetlService;
    @Resource
    private WrkMastService wrkMastService;
    @Resource
    private ApiLogService apiLogService;
    // region 封锁区逻辑,目前只有一个大封锁区,任务全部转到滑块库处理,或直接写到滑块库
@@ -168,8 +174,54 @@
     */
    public int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/submit";
        String response = sendPost(url, rcsTaskSubmit.toString());
//        String response = "";
//        boolean success = false;
//        Map<String,Object> headers = new HashMap<>();
//        headers.put("Content-Type","application/json");
//        headers.put("Content-Length","<calculated when request is sent>");
//        headers.put("Host","<calculated when request is sent>");
////        headers.put("Connection","keep-alive");
////        headers.put("Accept","*/*");
////        headers.put("Accept-Encoding","gzip, deflate, br");
//        headers.put("X-lr-request-id","123");
//        headers.put("X-lr-version","4.3");
//        try {
//            response = new HttpHandler.Builder()
//                    .setUri(HIK_URL)
//                    .setPath("api/robot/controller/task/submit")
//                    .setHeaders(headers)
//                    .setJson(JSON.toJSONString(rcsTaskSubmit))
//                    .build()
//                    .doPost();
//            JSONObject jsonObject = JSON.parseObject(response);
//            if (jsonObject.getBoolean("success")) {
//                success = true;
//            } else {
//                log.error("下发agv任务失败!url:{};request:{};response:{}", HIK_URL + "api/robot/controller/task/submit", JSON.toJSONString(rcsTaskSubmit), response);
//            }
//        } catch (Exception e) {
//            log.error("下发agv任务异常", e);
//        } finally {
//            try {
//                // 保存接口日志
//                apiLogService.save(
//                        "下发agv任务",
//                        HIK_URL + "api/robot/controller/task/submit",
//                        null,
//                        "127.0.0.1",
//                        JSON.toJSONString(rcsTaskSubmit),
//                        response,
//                        success
//                );
//            } catch (Exception e) {
//                log.error("下发agv任务保存接口日志异常", e);
//            }
//        }
//        return success ? 1 : 0;
        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/submit";
        String response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
        if (!StringUtils.isEmpty(response) && response.contains("code")){
            RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
            if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -193,8 +245,8 @@
     */
    public int continueTask(RcsTaskContinue rcsTaskContinue, int rcsFactory){
        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/extend/continue";
        String response = sendPost(url, rcsTaskContinue.toString());
        String url = rcsFactory == 2 ? HX_URL :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())) {
@@ -218,7 +270,7 @@
     */
    public int cancelTask(RcsTaskCancel rcsTaskCancel, int rcsFactory){
        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/cancel";
        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/cancel";
        String response = sendPost(url, rcsTaskCancel.toString());
        if (!StringUtils.isEmpty(response) && response.contains("code")){
            RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
@@ -243,7 +295,7 @@
     */
    private int notifyEqpt(RcsEqptNotify rcsEqptNotify, int rcsFactory){
        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/wcs/robot/eqpt/notify";
        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/wcs/robot/eqpt/notify";
        String response = sendPost(url, rcsEqptNotify.toString());
        if (!StringUtils.isEmpty(response) && response.contains("code")){
            RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
@@ -280,7 +332,8 @@
        String slotCode = values.getString("slotCode");
        try {
            if ("Q3".equals(carrierType) || "Q8".equals(carrierType)) {    //AGV
            // q3,q8=1
            if ("1".equals(carrierType)) {    //AGV
                EntityWrapper<Task> wrapper = new EntityWrapper<>();
                wrapper.eq("task_no", robotTaskCode);
                Task task = taskService.selectOne(wrapper);
@@ -303,8 +356,8 @@
                    } break;
                    case TASK_OUT_BIN: {
                        // TODO:立库出库一托,AGV开始运输后,给MES发送出库完成(一托发一次)
                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
//                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
//                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
                    } break;
                    case TASK_END: {
                        // 更新任务状态等内部逻辑
@@ -389,53 +442,54 @@
                    } break;
                    default: {} break;
                }
            } else if ("CTU".equals(carrierType)) { //CTU
                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
                wrapper.eq("task_no", robotTaskCode);
                WrkMast task = wrkMastService.selectOne(wrapper);
                if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
                    rcsReturn.setCode("Err_RobotCodeNotMatch");
                    rcsReturn.setMessage("");
                    JSONObject data = new JSONObject();
                    data.put("robotTaskCode", robotTaskCode);
                    rcsReturn.setData(data);
                    return rcsReturn;
                }
//                JSONObject memo = JSONObject.parseObject(task.getMemo());
                switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
                    case TASK_START: {
//                        task.setWrkSts(302L);   // 301 任务下发、302 任务执行、303 任务中断、304 任务结束
//            else if ("CTU".equals(carrierType)) { //CTU
//                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
//                wrapper.eq("task_no", robotTaskCode);
//                WrkMast task = wrkMastService.selectOne(wrapper);
//                if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
//                    rcsReturn.setCode("Err_RobotCodeNotMatch");
//                    rcsReturn.setMessage("");
//                    JSONObject data = new JSONObject();
//                    data.put("robotTaskCode", robotTaskCode);
//                    rcsReturn.setData(data);
//                    return rcsReturn;
//                }
////                JSONObject memo = JSONObject.parseObject(task.getMemo());
//
//                switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
//                    case TASK_START: {
////                        task.setWrkSts(302L);   // 301 任务下发、302 任务执行、303 任务中断、304 任务结束
////                        task.setModiTime(new Date());
////                        task.setModiUser(defaultUserId);
////                        taskService.updateById(task);
//                    } break;
////                    case TASK_OUT_BIN: {} break;
//                    case TASK_END: {
//                        // 更新任务状态等内部逻辑
//                        long wrkSts = task.getWrkSts(); // 1.入库;101.出库;
//                        if (task.getIoType() == 1) {
//                            wrkSts = 4L;
//                        } else if (task.getIoType() == 101) {
//                            wrkSts = 14L;
//                        }
//
//                        task.setWrkSts(wrkSts); // 4.入库完成;14.已出库未确认;
//                        task.setModiTime(new Date());
//                        task.setModiUser(defaultUserId);
//                        taskService.updateById(task);
                    } break;
//                    case TASK_OUT_BIN: {} break;
                    case TASK_END: {
                        // 更新任务状态等内部逻辑
                        long wrkSts = task.getWrkSts(); // 1.入库;101.出库;
                        if (task.getIoType() == 1) {
                            wrkSts = 4L;
                        } else if (task.getIoType() == 101) {
                            wrkSts = 14L;
                        }
                        task.setWrkSts(wrkSts); // 4.入库完成;14.已出库未确认;
                        task.setModiTime(new Date());
                        task.setModiUser(defaultUserId);
                        wrkMastService.updateById(task);
                        // TODO:任务完成触发出入库变更操作
//                        // 入库完成
//                        mesService.inFeedback(memo.getString("OrderNo"));
//                        // 出库完成
//                        mesService.outFeedback(memo.getString("OrderNo"));
                    } break;
                    default: {} break;
                }
            }
//                        wrkMastService.updateById(task);
//
//                        // TODO:任务完成触发出入库变更操作
//
//
////                        // 入库完成
////                        mesService.inFeedback(memo.getString("OrderNo"));
////                        // 出库完成
////                        mesService.outFeedback(memo.getString("OrderNo"));
//                    } break;
//                    default: {} break;
//                }
//            }
            // 返回RCS
            rcsReturn.setCode("SUCCESS");
@@ -563,11 +617,16 @@
            log.info("sendPost - {} - {}", url, param);
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("Content-Length", "<calculated when request is sent>");
            conn.setRequestProperty("Host", "<calculated when request is sent>");
            conn.setRequestProperty("Accept", "*/*");
            conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
            conn.setRequestProperty("Connection", "keep-alive");
            conn.setRequestProperty("X-lr-request-id", String.valueOf(new Date().getTime()));
            conn.setRequestProperty("X-lr-version", "4.3");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            conn.setDoOutput(true);