package com.zy.asrs.task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zy.asrs.entity.WrkCyclePlan; import com.zy.asrs.service.WrkCyclePlanService; import com.zy.asrs.mapper.WrkCyclePlanMapper; import com.zy.core.enums.CyclePlanStatus; import com.zy.core.task.MainProcessTaskSubmitter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; @Component @Slf4j public class CyclePlanScheduler { private static final String LANE_PREFIX = "cycle-plan-"; @Autowired private WrkCyclePlanMapper wrkCyclePlanMapper; @Autowired private MainProcessTaskSubmitter mainProcessTaskSubmitter; @Autowired private WrkCyclePlanService wrkCyclePlanService; @Scheduled(cron = "0/1 * * * * ?") public void advanceRunningPlans() { List plans = wrkCyclePlanMapper.selectList( new QueryWrapper().eq("plan_sts", CyclePlanStatus.RUNNING.id) ); for (WrkCyclePlan plan : plans) { boolean submitted = mainProcessTaskSubmitter.submitKeyedSerialTask( LANE_PREFIX, plan.getId(), "cycle-advance-" + plan.getId(), 0, () -> wrkCyclePlanService.advancePlan(plan.getId()) ); if (!submitted) { log.error("CyclePlanScheduler提交失败, planId={}", plan.getId()); } } } }