自动化立体仓库 - WCS系统
#
zjj
2023-12-17 f1b1ba2ea0373b9b74884b57f5cc5d6408f12345
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -194,90 +194,93 @@
            // 复位信号
            if (crnProtocol.getTaskFinish() == 0) {
                if (resetFlag) {
                    //堆垛机任务完成后访问wms请求任务完成 locationDone 货位处理完成
                    TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
                    TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()));
                    String tasktype = null;
                    switch (taskWrk.getIoType()){
                        case 1:
                            tasktype= "RK";
                            break;
                        case 2:
                            tasktype= "CK";
                            break;
                        case 3:
                            tasktype= "YK";
                            break;
                        default:
                            tasktype= "未知";
                    }
                    Map<String, Object> map = new HashMap<>();
                    map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
                    TaskOverToWms taskOverToWms = new TaskOverToWms();
                    taskOverToWms.setFeedbackFrom("WCS"); //来源
                    taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识
                    taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号
                    taskOverToWms.setTaskType(tasktype); // 任务类型
                    taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码
                    if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){
                        taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码
                        taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位
                    }else if (taskWrk.getIoType() ==2){
                        Map<Integer,String> map1 = new HashMap<>();
                        map1.put(102,"J-1101");
                        map1.put(106,"J-1103");
                        map1.put(110,"J-1105");
                        map1.put(114,"J-1107");
                        map1.put(118,"J-1109");
                        map1.put(122,"J-1111");
                        map1.put(305,"H-1101");
                        map1.put(405,"G-1101");
                        taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码
                        taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位
                    }
                    taskOverToWms.setTaskStatus("location_done"); //任务状态
                    String response = null;
                    try {
                        response = new HttpHandler.Builder()
                                .setHeaders(map)
                                .setUri("10.32.53.195:8080")
                                .setPath("wcsManager/wcsInterface/taskStatusFeedback")
                                .setJson(JSON.toJSONString(taskOverToWms))
                                .build()
                                .doPost();
                    }catch (Exception e){
                       log.error("堆垛机任务完成,请求wms任务完成接口失败");
                    }
                    ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
                    apiLogService.save("Wms任务完成接口"
                            ,"10.32.53.195:8080"+"/wcsManager/wcsInterface/taskStatusFeedback"
                            ,null
                            ,"127.0.0.1"
                            ,JSON.toJSONString(taskOverToWms)
                            ,response
                            ,true
                    );
                    JSONObject jsonObject = JSON.parseObject(response);
                    if (jsonObject.getInteger("code").equals(200)){
                        if (taskWrk.getIoType() == 3){
                            taskWrk.setWrkSts(4);
                        }
                        taskWrk.setStatus(5);
                        if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){
                            log.error("堆垛机任务完成,改变任务状态失败");
                        }
                        log.info("堆垛机任务完成,请求wms任务完成接口成功");
                    }else {
                        log.error("堆垛机任务完成,请求wms任务完成接口完成,但返回失败");
                    }
                    CrnCommand crnCommand = new CrnCommand();
                    crnCommand.setAckFinish((short)1);
                    if (write(crnCommand)) {
                        resetFlag = false;
                        //堆垛机任务完成后访问wms请求任务完成 locationDone 货位处理完成
                        TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
                        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()));
                        String tasktype = null;
                        switch (taskWrk.getIoType()){
                            case 1:
                                tasktype= "RK";
                                break;
                            case 2:
                                tasktype= "CK";
                                break;
                            case 3:
                                tasktype= "YK";
                                break;
                            default:
                                tasktype= "未知";
                        }
                        Map<String, Object> map = new HashMap<>();
                        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
                        TaskOverToWms taskOverToWms = new TaskOverToWms();
                        taskOverToWms.setFeedbackFrom("WCS"); //来源
                        taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识
                        taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号
                        taskOverToWms.setTaskType(tasktype); // 任务类型
                        taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码
                        if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){
                            taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码
                            taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位
                        }else if (taskWrk.getIoType() ==2){
                            Map<Integer,String> map1 = new HashMap<>();
                            map1.put(102,"J-1101");
                            map1.put(106,"J-1103");
                            map1.put(110,"J-1105");
                            map1.put(114,"J-1107");
                            map1.put(118,"J-1109");
                            map1.put(122,"J-1111");
                            map1.put(305,"H-1101");
                            map1.put(405,"G-1101");
                            taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码
                            taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位
                        }
                        taskOverToWms.setTaskStatus("location_done"); //任务状态
                        String response = null;
                        try {
                            response = new HttpHandler.Builder()
                                    .setHeaders(map)
                                    .setUri("10.32.53.195:8080")
                                    .setPath("wcsManager/wcsInterface/taskStatusFeedback")
                                    .setJson(JSON.toJSONString(taskOverToWms))
                                    .build()
                                    .doPost();
                        }catch (Exception e){
                            log.error("堆垛机任务完成,请求wms任务完成接口失败");
                        }
                        ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
                        apiLogService.save("Wms任务完成接口"
                                ,"10.32.53.195:8080"+"/wcsManager/wcsInterface/taskStatusFeedback"
                                ,null
                                ,"127.0.0.1"
                                ,JSON.toJSONString(taskOverToWms)
                                ,response
                                ,true
                        );
                        JSONObject jsonObject = JSON.parseObject(response);
                        if (jsonObject.getInteger("code").equals(200)){
                            if (taskWrk.getIoType() == 3){
                                taskWrk.setWrkSts(4);
                            }
                            taskWrk.setStatus(5);
                            if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){
                                log.error("堆垛机任务完成,改变任务状态失败");
                            }
                            log.info("堆垛机任务完成,请求wms任务完成接口成功");
                        }else {
                            log.error("堆垛机任务完成,请求wms任务完成接口完成,但返回失败");
                        }
                    }
                }
            }
@@ -426,6 +429,11 @@
        CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
        CommandInfo commandInfo = commandInfoService.selectById(command.getCommandId());
        if (Cools.isEmpty(commandInfo)){
            commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>()
                    .eq("wrk_no",crnProtocol.getTaskNo())
                    .eq("device","Crn"));
        }
        CommandInfoLog commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
        commandInfoLog.setId(null);
//        CommandInfoLog commandInfoLog = new CommandInfoLog();
@@ -507,6 +515,9 @@
        }else if (command.getOnlineWrk4() != 0){
            array[0] = command.getOnlineWrk4();
            result = siemensNet.Write("DB103.8", array);
        } else if (command.getReset() != 0) {
            array[0] = command.getReset();
            result = siemensNet.Write("DB103.10", array);
        }