| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.mes.TransArrivalStation; |
| | | import com.zy.asrs.entity.mes.TransParent; |
| | | import com.zy.asrs.entity.mes.*; |
| | | import com.zy.asrs.entity.rcs.*; |
| | | import com.zy.asrs.enums.RcsRetMethodEnum; |
| | | import com.zy.asrs.mapper.BlockStationMapper; |
| | |
| | | import java.net.URL; |
| | | import java.net.URLConnection; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | |
| | | @Value("${mes.defaultUserId}") |
| | | public long defaultUserId; |
| | | |
| | | @Value("${dj.url}") |
| | | public String DJ_URL; |
| | | |
| | | @Resource |
| | | private BasStationService basStationService; |
| | | |
| | |
| | | private TaskDetlServiceImpl taskDetlService; |
| | | @Resource |
| | | private WrkMastService wrkMastService; |
| | | |
| | | @Resource |
| | | private WrkDetlService wrkDetlService; |
| | | |
| | | @Resource |
| | | private OrderPakoutService orderPakoutService; |
| | | |
| | | |
| | | // region 封锁区逻辑,目前只有一个大封锁区,任务全部转到滑块库处理,或直接写到滑块库 |
| | |
| | | String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit"; |
| | | String response = ""; |
| | | try { |
| | | // 模拟返回 |
| | | // rcsReturn.setCode("SUCCESS"); |
| | | // success = true; |
| | | |
| | | response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit)); |
| | | if (!StringUtils.isEmpty(response) && response.contains("code")) { |
| | | rcsReturn = JSONObject.parseObject(response, RcsReturn.class); |
| | | if ("SUCCESS".equals(rcsReturn.getCode())) { |
| | | // 模拟返回 |
| | | // rcsReturn.setCode("SUCCESS"); |
| | | // JSONObject jsonObject = new JSONObject(); |
| | | // jsonObject.put("robotTaskCode","2025121301"); |
| | | // rcsReturn.setData(jsonObject); |
| | | success = true; |
| | | |
| | | log.info("呼叫agv搬运成功!url:{};request:{};response:{}", url, JSON.toJSONString(rcsTaskSubmit), response); |
| | | } else { |
| | | log.error("呼叫agv搬运失败!url:{};request:{};response:{}", url, JSON.toJSONString(rcsTaskSubmit), response); |
| | | } |
| | | } else { |
| | | log.error("呼叫agv搬运失败,response:{}",response); |
| | | rcsReturn.setCode("ERROR"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("呼叫agv搬运异常", e); |
| | |
| | | switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) { |
| | | case TASK_START: { |
| | | if (ioType == 1 || ioType == 10 || ioType == 53) { |
| | | wrkMast.setCrnStrTime(now); |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | } else if (ioType == 101 || ioType == 110 || ioType == 103) { |
| | | |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | } else { |
| | | log.error("{}ioType{}不在end反馈处理中", wrkMast.getWrkNo(), ioType); |
| | | } |
| | |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | } else if (ioType == 101 || ioType == 110 || ioType == 103) { |
| | | wrkMast.setWrkSts(14L); |
| | | wrkMast.setCrnEndTime(now); |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | // 给TMS反馈出库货物信息 |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); |
| | | if(!wrkDetls.isEmpty()) { |
| | | WrkDetl wrkDetl = wrkDetls.get(0); |
| | | String orderNo = wrkDetl.getOrderNo(); |
| | | if(!Cools.isEmpty(orderNo)) { |
| | | OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo); |
| | | if (orderPakout != null) { |
| | | MesInApply mesOutFeedback = new MesInApply(); |
| | | mesOutFeedback.setBillType(String.valueOf(orderPakout.getDocType())); |
| | | mesOutFeedback.setOrderNo(orderNo); |
| | | mesOutFeedback.setCreateTime( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now)); |
| | | List<MesItemDetails> details = new ArrayList<>(); |
| | | for(WrkDetl detl:wrkDetls) { |
| | | MesItemDetails detail = new MesItemDetails(); |
| | | detail.setItemNo(detl.getMatnr()); |
| | | detail.setAnfme(detl.getAnfme()); |
| | | details.add(detail); |
| | | } |
| | | mesOutFeedback.setDetails(details); |
| | | String url = DJ_URL + "api/OutboundOrder/WmsOutFinish"; |
| | | String request = JSONObject.toJSONString(mesOutFeedback); |
| | | String response = RcsServiceImpl.sendPost(url, request); |
| | | if (!StringUtils.isEmpty(response) && response.contains("Success")){ |
| | | MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class); |
| | | if("1".equals(mesReturn.getSuccess())) { |
| | | log.info("CTU出库反馈end,上报TMS成功,工作号:{},明细:{}",wrkMast.getWrkNo(),request); |
| | | } else { |
| | | log.error("CTU出库反馈end,上报TMS失败!,工作号:{},明细:{}",wrkMast.getWrkNo(),request); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | log.error("{}ioType{}不在end反馈处理中", wrkMast.getWrkNo(), ioType); |
| | |
| | | task.setModiUser(defaultUserId); |
| | | taskService.updateById(task); |
| | | // 任务完成 |
| | | mesService.reporterTask(rcsReporterTask); |
| | | // mesService.reporterTask(rcsReporterTask); |
| | | |
| | | // 更新接驳位置状态 |
| | | |
| | |
| | | mesService.applyOutStation(apply); |
| | | } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) { |
| | | mesService.outStation(apply); |
| | | // agv继续执行 |
| | | // 源站点是产线,离站完成后给rcs反馈继续执行 |
| | | if(task.getSourceStaNo().contains("TOOL")) { |
| | | TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow(); |
| | | inOutStationAllow.setTaskno(robotTaskCode); |
| | | inOutStationAllow.setStatus("Y"); |
| | | inOutStationAllow.setAgvCode(singleRobotCode); |
| | | mesService.allowOutStation(inOutStationAllow); |
| | | } |
| | | } |
| | | } break; |
| | | case ARRIVE_ON_STATION: { |