zhang
2025-07-23 b3814333d786324bb81cca7d1bcf5ac8f2f1a7cf
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -96,6 +96,10 @@
    private LaneService laneService;
    @Autowired
    private ActionSorter actionSorter;
    @Autowired
    private TaskReportService taskReportService;
    @Autowired
    private AgvDurationService agvDurationService;
    @SuppressWarnings("all")
    @Transactional
@@ -286,7 +290,9 @@
     */
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void buildMajorTask(Long agvId, List<Task> taskList) {
        if (Cools.isEmpty(agvId, taskList)) { return; }
        if (Cools.isEmpty(agvId, taskList)) {
            return;
        }
        try {
            // valid -----------------------------------------------
            Agv agv = agvService.getById(agvId);
@@ -334,8 +340,10 @@
                backpackLev ++;
                Code startCode = null;
                Code endCode = null;
                Loc oriLoc = null; Loc destLoc = null;
                Sta oriSta = null; Sta destSta = null;
                Loc oriLoc = null;
                Loc destLoc = null;
                Sta oriSta = null;
                Sta destSta = null;
                switch (Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()))) {
                    case LOC_TO_LOC:
                        oriLoc = locService.getById(task.getOriLoc());
@@ -532,9 +540,12 @@
    /**
     * 充电 回待机位任务
     */
    @Transactional(propagation = Propagation.REQUIRES_NEW) // although there is a Transactional here that the lock is isolated, but we can't join the caller's Transactional
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    // although there is a Transactional here that the lock is isolated, but we can't join the caller's Transactional
    public boolean buildMinorTask(Long agvId, TaskTypeType taskType, String destination, Jam jam) {
        if (Cools.isEmpty(agvId, taskType)) { return false; }
        if (Cools.isEmpty(agvId, taskType)) {
            return false;
        }
        try {
            String agvNo = agvService.getAgvNo(agvId);
            if (!agvService.judgeEnable(agvId)) {
@@ -598,6 +609,7 @@
                throw new BusinessException(task.getSeqNum() + " failed to save");
            }
            // generate travel
            Travel travel = new Travel();
            travel.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
@@ -611,13 +623,20 @@
            }
            // generate segment
            int segSerial = 0;     segSerial ++;
            int segSerial = 0;
            segSerial++;
            List<Segment> segmentList = new ArrayList<>();
            String posType = "";
            switch (taskType){
                case TO_CHARGE:
                    posType = TaskPosDto.PosType.TO_CHARGE.toString();
                    //插入充电任务
                    AgvDuration agvDuration = new AgvDuration();
                    agvDuration.setHappenTime(now);
                    agvDuration.setAgvId(agvId);
                    agvDuration.setTaskNo(task.getId());
                    agvDurationService.save(agvDuration);
                    break;
                case TO_STANDBY:
                    posType = TaskPosDto.PosType.TO_STANDBY.toString();
@@ -687,7 +706,9 @@
    @Transactional
    public synchronized void generateAction(Long agvId, List<Segment> segmentList, List<String> pathList, Date algoStartTime) {
        try {
            if (Cools.isEmpty(agvId, segmentList)) { return; }
            if (Cools.isEmpty(agvId, segmentList)) {
                return;
            }
            Date now = new Date();
            long actionPrepareSts = ActionStsType.PREPARE.val();
//            JSONObject storeDirection = configService.getVal("storeDirection", JSONObject.class);
@@ -729,7 +750,9 @@
                    List<String> pathListPart = pathList.subList(pathList.indexOf(lastCode.getData()), pathList.indexOf(code.getData()) + 1);
                    for (int i = 0; i < pathListPart.size(); i++) {
                        if (i == 0) { continue; }
                        if (i == 0) {
                            continue;
                        }
                        String next = pathListPart.get(i);
@@ -1471,8 +1494,10 @@
        for (Segment segment : segmentList) {
            boolean taskComplete = false;
            Task task = taskService.getById(segment.getTaskId());   assert null != task;
            TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());     assert null != typeType;
            Task task = taskService.getById(segment.getTaskId());
            assert null != task;
            TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());
            assert null != typeType;
            TaskPosDto.PosType posType = TaskPosDto.queryPosType(segment.getPosType());
            switch (Objects.requireNonNull(posType)) {
@@ -1508,6 +1533,21 @@
                    log.error("Task [{}] 更新失败 !!!", task.getSeqNum());
                } else {
                    log.info("Task [{}] 作业完毕 ==========>> ", task.getSeqNum());
                    // TODO 插入一条上报记录
                    TaskReport taskReport = new TaskReport();
                    taskReport.setAgvId(task.getAgvId());
                    taskReport.setBusNo(task.getBusId$());
                    taskReport.setCreateTime(new Date());
                    taskReport.setDestLoc(task.getDestLoc());
                    taskReport.setDestSta(task.getDestSta());
                    taskReport.setSeqNum(task.getSeqNum());
                    taskReport.setTaskSts(task.getTaskSts());
                    taskReport.setOriLoc(task.getOriLoc());
                    taskReport.setOriSta(task.getOriSta());
                    taskReport.setZpallet(task.getZpallet());
                    if (!taskReportService.save(taskReport)) {
                        log.info("TaskReport [{}] 插入失败 ==========>> ", JSON.toJSONString(taskReport));
                    }
                }
            }