| | |
| | | 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"); |
| | | String robotTaskCode = data.getString("robotTaskCode"); |
| | | if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){ |
| | | return 1; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | |
| | | String robotTaskCode = rcsReporterTask.getRobotTaskCode(); |
| | | String singleRobotCode = rcsReporterTask.getSingleRobotCode(); |
| | | String[] split = robotTaskCode.split("-"); |
| | | robotTaskCode = split[0]; |
| | | //华晓AGV状态反馈,及申请 |
| | | if(Cools.isEmpty(rcsReporterTask.getExtra())){ |
| | | if(Cools.isEmpty(rcsReporterTask.getMethod())){ |
| | |
| | | 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); |
| | | 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: { |
| | | // TODO:立库出库一托,AGV开始运输后,给MES发送出库完成(一托发一次) |
| | | EntityWrapper<Task> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("task_no", robotTaskCode); |
| | | Task task = taskService.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: { |
| | | // TODO:立库出库一托,AGV开始运输后,给MES发送出库完成(一托发一次) |
| | | // JSONObject taskMemo = JSONObject.parseObject(task.getMemo()); |
| | | // mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task); |
| | | } |
| | | break; |
| | | case TASK_END: { |
| | | // 更新任务状态等内部逻辑 |
| | | task.setWrkSts(304L); // 301 任务下发、302 任务执行、303 任务中断、304 任务结束 |
| | | task.setModiTime(new Date()); |
| | | task.setModiUser(defaultUserId); |
| | | taskService.updateById(task); |
| | | // 任务完成 |
| | | } |
| | | break; |
| | | case TASK_END: { |
| | | // 更新任务状态等内部逻辑 |
| | | task.setWrkSts(304L); // 301 任务下发、302 任务执行、303 任务中断、304 任务结束 |
| | | task.setModiTime(new Date()); |
| | | task.setModiUser(defaultUserId); |
| | | taskService.updateById(task); |
| | | // 任务完成 |
| | | // mesService.reporterTask(rcsReporterTask); |
| | | |
| | | // EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>(); |
| | |
| | | // taskService.completeWrkMast(); |
| | | // taskDetlService. |
| | | |
| | | } |
| | | break; |
| | | case APPLY_IN_STATION: |
| | | case APPLY_OFF_STATION: |
| | | case ARRIVE_OFF_STATION: { |
| | | TransParent apply = new TransParent(); |
| | | apply.setTaskno(robotTaskCode); |
| | | apply.setTaskname(memo.getString("taskName")); |
| | | apply.setAgvCode(singleRobotCode); |
| | | String transType = memo.getString("TransType"); |
| | | apply.setTransType(transType); |
| | | apply.setProductLineId(memo.getString("ProductLineId")); |
| | | if (transType.equals("02") || transType.equals("04") || transType.equals("06")) { |
| | | apply.setStationId(task.getSourceStaNo()); |
| | | } else { |
| | | apply.setStationId(task.getStaNo()); |
| | | } |
| | | |
| | | if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) { |
| | | mesService.applyInStation(apply); |
| | | } else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) { |
| | | mesService.applyOutStation(apply); |
| | | } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) { |
| | | mesService.outStation(apply); |
| | | } |
| | | } |
| | | break; |
| | | case ARRIVE_ON_STATION: { |
| | | // TODO: 如果产线是运输起点,则不发送到站完成,暂时调试使用lG,未实现判断 |
| | | if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) { |
| | | break; |
| | | } |
| | | |
| | | EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>(); |
| | | wapper2.eq("wrk_no", task.getWrkNo()) |
| | | .eq("matnr", memo.getString("Itemno")) |
| | | .eq("order_no", memo.getString("OrderNo")); |
| | | TaskDetl taskDetl = taskDetlService.selectOne(wapper2); |
| | | TransArrivalStation arrivalStation = new TransArrivalStation(); |
| | | arrivalStation.setTaskno(robotTaskCode); |
| | | arrivalStation.setTaskname(memo.getString("taskName")); |
| | | arrivalStation.setTuoPanId(taskDetl.getZpallet()); // memo.getString("TuoPanId") |
| | | arrivalStation.setProductLineId(memo.getString("ProductLineId")); |
| | | String transType = memo.getString("TransType"); |
| | | arrivalStation.setDaotype(transType); |
| | | if (transType.equals("02") || transType.equals("04") || transType.equals("06")) { |
| | | arrivalStation.setStationID(task.getSourceStaNo()); |
| | | } else { |
| | | arrivalStation.setStationID(task.getStaNo()); |
| | | } |
| | | arrivalStation.setOrderNo(memo.getString("OrderNo")); |
| | | arrivalStation.setAgvCode(singleRobotCode); |
| | | arrivalStation.setItemno(memo.getString("Itemno")); |
| | | String memo2 = taskDetl.getMemo(); |
| | | List<String> itemBarCode = new ArrayList<>(); |
| | | Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2); |
| | | while (matcher.find()) { |
| | | itemBarCode.add(matcher.group(1)); |
| | | } |
| | | arrivalStation.setItemBarcode(itemBarCode); |
| | | mesService.arriveOnStation(arrivalStation); |
| | | } |
| | | break; |
| | | default: { |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case APPLY_IN_STATION: |
| | | case APPLY_OFF_STATION: |
| | | case ARRIVE_OFF_STATION: { |
| | | TransParent apply = new TransParent(); |
| | | apply.setTaskno(robotTaskCode); |
| | | apply.setTaskname(memo.getString("taskName")); |
| | | apply.setAgvCode(singleRobotCode); |
| | | String transType = memo.getString("TransType"); |
| | | apply.setTransType(transType); |
| | | apply.setProductLineId(memo.getString("ProductLineId")); |
| | | if (transType.equals("02") || transType.equals("04") || transType.equals("06")) { |
| | | apply.setStationId(task.getSourceStaNo()); |
| | | } else { |
| | | apply.setStationId(task.getStaNo()); |
| | | } |
| | | |
| | | if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) { |
| | | mesService.applyInStation(apply); |
| | | } else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) { |
| | | mesService.applyOutStation(apply); |
| | | } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) { |
| | | mesService.outStation(apply); |
| | | } |
| | | } |
| | | break; |
| | | case ARRIVE_ON_STATION: { |
| | | // TODO: 如果产线是运输起点,则不发送到站完成,暂时调试使用lG,未实现判断 |
| | | if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) { |
| | | break; |
| | | } |
| | | |
| | | EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>(); |
| | | wapper2.eq("wrk_no", task.getWrkNo()) |
| | | .eq("matnr", memo.getString("Itemno")) |
| | | .eq("order_no", memo.getString("OrderNo")); |
| | | TaskDetl taskDetl = taskDetlService.selectOne(wapper2); |
| | | TransArrivalStation arrivalStation = new TransArrivalStation(); |
| | | arrivalStation.setTaskno(robotTaskCode); |
| | | arrivalStation.setTaskname(memo.getString("taskName")); |
| | | arrivalStation.setTuoPanId(taskDetl.getZpallet()); // memo.getString("TuoPanId") |
| | | arrivalStation.setProductLineId(memo.getString("ProductLineId")); |
| | | String transType = memo.getString("TransType"); |
| | | arrivalStation.setDaotype(transType); |
| | | if (transType.equals("02") || transType.equals("04") || transType.equals("06")) { |
| | | arrivalStation.setStationID(task.getSourceStaNo()); |
| | | } else { |
| | | arrivalStation.setStationID(task.getStaNo()); |
| | | } |
| | | arrivalStation.setOrderNo(memo.getString("OrderNo")); |
| | | arrivalStation.setAgvCode(singleRobotCode); |
| | | arrivalStation.setItemno(memo.getString("Itemno")); |
| | | String memo2 = taskDetl.getMemo(); |
| | | List<String> itemBarCode = new ArrayList<>(); |
| | | Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2); |
| | | while (matcher.find()) { |
| | | itemBarCode.add(matcher.group(1)); |
| | | } |
| | | arrivalStation.setItemBarcode(itemBarCode); |
| | | mesService.arriveOnStation(arrivalStation); |
| | | } |
| | | break; |
| | | default: { |
| | | } |
| | | break; |
| | | } |
| | | |
| | | // 返回RCS |
| | | rcsReturn.setCode("SUCCESS"); |
| | | rcsReturn.setMessage(""); |
| | |
| | | String robotTaskCode = apply.getTaskno(); |
| | | String singleRobotCode = apply.getAgvCode(); |
| | | //华晓AGV申请 |
| | | if(Cools.isEmpty(apply.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 { |
| | | EntityWrapper<Task> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("task_no", robotTaskCode); |
| | | Task task = taskService.selectOne(wrapper); |
| | | String method = apply.getMethod(); |
| | | JSONObject memo = Cools.isEmpty(task) ? null : JSONObject.parseObject(task.getMemo()); |
| | | switch (method) { |
| | | case "APPLY_IN_STATION": |
| | | case "APPLY_OFF_STATION": |
| | | case "ARRIVE_OFF_STATION": { |
| | | //agv入站申请 |
| | | if ("APPLY_IN_STATION".equals(method)) { |
| | | mesService.applyInStation(apply); |
| | | //agv离站请求 |
| | | } else if ("APPLY_OFF_STATION".equals(method)) { |
| | | mesService.applyOutStation(apply); |
| | | //agv离站完成 |
| | | } else { |
| | | mesService.outStation(apply); |
| | | } |
| | | } break; |
| | | default: {} break; |
| | | } |
| | | } |
| | | // 返回RCS |
| | | rcsReturn.setCode("SUCCESS"); |
| | | rcsReturn.setMessage(""); |
| | | if(Cools.isEmpty(apply.getMethod())){ |
| | | log.error("华晓AGV上报状态Method为空!"); |
| | | rcsReturn.setCode("Err_Internal"); |
| | | rcsReturn.setMessage("华晓AGV上报状态Method为空"); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("robotTaskCode", robotTaskCode); |
| | | rcsReturn.setData(data); |
| | | //海康AGV状态反馈,及申请 |
| | | }else { |
| | | EntityWrapper<Task> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("task_no", robotTaskCode); |
| | | Task task = taskService.selectOne(wrapper); |
| | | String method = apply.getMethod(); |
| | | JSONObject memo = Cools.isEmpty(task) ? null : JSONObject.parseObject(task.getMemo()); |
| | | switch (method) { |
| | | case "APPLY_IN_STATION": |
| | | case "APPLY_OFF_STATION": |
| | | case "ARRIVE_OFF_STATION": { |
| | | //agv入站申请 |
| | | if ("APPLY_IN_STATION".equals(method)) { |
| | | mesService.applyInStation(apply); |
| | | //agv离站请求 |
| | | } else if ("APPLY_OFF_STATION".equals(method)) { |
| | | mesService.applyOutStation(apply); |
| | | //agv离站完成 |
| | | } else { |
| | | mesService.outStation(apply); |
| | | } |
| | | } break; |
| | | default: {} break; |
| | | } |
| | | } |
| | | // 返回RCS |
| | | rcsReturn.setCode("SUCCESS"); |
| | | rcsReturn.setMessage(""); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("robotTaskCode", robotTaskCode); |
| | | rcsReturn.setData(data); |
| | | //海康AGV状态反馈,及申请 |
| | | |
| | | return rcsReturn; |
| | | } |
| | |
| | | { |
| | | result.append(line); |
| | | } |
| | | log.info("recv - {}", result); |
| | | log.info("rec - {}", result); |
| | | } |
| | | catch (ConnectException e) |
| | | { |