package com.ruoyi.system.utils; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.mapper.SysTaskMapper; /** * 任务编号生成器 * * @author ruoyi */ @Component public class TaskCodeGenerator { @Autowired private SysTaskMapper sysTaskMapper; /** * 生成任务编号 * 格式:TASK + YYYYMMDD + 4位序号 * * @return 任务编号 */ public String generateTaskCode() { String dateStr = DateUtils.dateTimeNow("yyyyMMdd"); return generateTaskCode(dateStr); } /** * 根据日期生成任务编号 * * @param date 日期 * @return 任务编号 */ public String generateTaskCode(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dateStr = sdf.format(date); return generateTaskCode(dateStr); } /** * 根据日期字符串生成任务编号 * * @param dateStr 日期字符串(格式:yyyyMMdd) * @return 任务编号 */ private String generateTaskCode(String dateStr) { String datePrefix = "TASK" + dateStr; // 查询当日最大编号 String maxTaskCode = sysTaskMapper.selectMaxTaskCodeByDatePrefix(datePrefix); int sequence = 1; if (maxTaskCode != null && maxTaskCode.startsWith(datePrefix)) { // 提取序号部分 String sequenceStr = maxTaskCode.substring(datePrefix.length()); try { sequence = Integer.parseInt(sequenceStr) + 1; } catch (NumberFormatException e) { sequence = 1; } } // 格式化为4位序号 return datePrefix + String.format("%04d", sequence); } }