package com.zy.asrs.task.handler; import com.zy.asrs.entity.Task; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.rcs.RcsTaskSubmit; import com.zy.asrs.entity.rcs.RcsTaskTargetRoute; import com.zy.asrs.service.RcsService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Slf4j @Service @Transactional public class AGVTaskReportHandler extends AbstractHandler { @Resource private RcsService rcsService; public ReturnT start(Task task) { String SourceStaNoType = "SITE"; String TargetStaNoType = "SITE"; //给agv下发的任务类型,默认站到站 //任务类型 4.站到区域 if(task.getIoType()==4){ TargetStaNoType = "ZONE"; //任务类型 5.区域到站 }else if(task.getIoType()==5){ SourceStaNoType = "ZONE"; } String taskType = "PP"; Boolean flag1 = false; Boolean flag2 = false; if(task.getStaNo().equals("401")|| task.getStaNo().equals("402")|| task.getStaNo().equals("307")){ taskType = "YLIN"; flag1 = true; } if (task.getSourceStaNo().equals("401")|| task.getSourceStaNo().equals("402")|| task.getSourceStaNo().equals("307")){ taskType = "YLOUT"; flag2 = true; } if(flag1&&flag2){ taskType = "YLBOTH"; } //AGV区域中无法用- String StaNo = task.getStaNo(); String SourceStaNo = task.getSourceStaNo(); if (task.getStaNo().split("-")[0].equals("Q")) { String[] split = task.getStaNo().split("-"); StaNo = split[0]+split[1]; } if (task.getSourceStaNo().split("-")[0].equals("Q")) { String[] split = task.getSourceStaNo().split("-"); SourceStaNo = split[0]+split[1]; } // 下发给RCS RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit(); rcsTaskSubmit.setTaskType(taskType); rcsTaskSubmit.setRobotTaskCode(task.getTaskNo()+"-"+task.getCtnType()); rcsTaskSubmit.setInitPriority(10); //默认10 List targetRouteList = new ArrayList<>(); RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute(); startRoute.setSeq(0); startRoute.setType(SourceStaNoType); startRoute.setCode(SourceStaNo); startRoute.setOperation("COLLECT"); targetRouteList.add(startRoute); RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute(); endRoute.setSeq(1); endRoute.setType(TargetStaNoType); endRoute.setCode(StaNo); endRoute.setOperation("DELIVERY"); targetRouteList.add(endRoute); rcsTaskSubmit.setTargetRoute(targetRouteList); // 转发给海康或华晓RCS int success = rcsService.submitTask(rcsTaskSubmit, task.getPltType()); if (success == 0){ return FAIL; } return SUCCESS; } }