| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | private String inOk; |
| | | @Value("${mes.defaultUserId}") |
| | | public long defaultUserId; |
| | | @Value("${mes.url}") |
| | | private String url; |
| | | |
| | | |
| | | @Resource |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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任务取消接口 |
| | | * |
| | |
| | | public RcsReturn reporterTask(RcsReporterTask rcsReporterTask) { |
| | | |
| | | RcsReturn rcsReturn = new RcsReturn(); |
| | | |
| | | String robotTaskCode = rcsReporterTask.getRobotTaskCode(); |
| | | String singleRobotCode = rcsReporterTask.getSingleRobotCode(); |
| | | // 修改后的逻辑:有"-"则去掉最后一个"-"及后面内容,没有则保持原样 |
| | | String robotTaskCode = rcsReporterTask.getRobotTaskCode(); |
| | | if (robotTaskCode.contains("-")) { |
| | | robotTaskCode = robotTaskCode.substring(0, robotTaskCode.lastIndexOf("-")); |
| | | } |
| | | |
| | | //华晓AGV状态反馈,及申请 |
| | | if(Cools.isEmpty(rcsReporterTask.getExtra())){ |
| | | if(Cools.isEmpty(rcsReporterTask.getMethod())){ |
| | |
| | | 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": |
| | |
| | | apply.setAgvCode(singleRobotCode); |
| | | String transType = memo.getString("TransType"); |
| | | apply.setTransType(transType); |
| | | apply.setAgvFactory(1); |
| | | apply.setProductLineId(memo.getString("ProductLineId")); |
| | | apply.setStationId(task.getSourceStaNo()); |
| | | //agv入站申请 |
| | |
| | | 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); |
| | |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 返回RCS |
| | | rcsReturn.setCode("SUCCESS"); |
| | | rcsReturn.setMessage(""); |
| | |
| | | * @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为空!"); |
| | |
| | | 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 |