| | |
| | | |
| | | 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; |
| | | |
| | | /** |
| | | * 任务编号生成器 |
| | |
| | | @Component |
| | | public class TaskCodeGenerator { |
| | | |
| | | @Autowired |
| | | private SysTaskMapper sysTaskMapper; |
| | | |
| | | /** |
| | | * 生成任务编号 |
| | | * 格式:TASK + YYYYMMDD + 4位序号 |
| | | * 生成任务编号(使用默认前缀) |
| | | * 格式:T + YYYYMMDD + 4位序号 |
| | | * |
| | | * @return 任务编号 |
| | | * @deprecated 建议使用 {@link #generateTaskCode(String)} 指定单据类型前缀 |
| | | */ |
| | | @Deprecated |
| | | public String generateTaskCode() { |
| | | return generateTaskCode("T"); |
| | | } |
| | | |
| | | /** |
| | | * 生成任务编号 |
| | | * 格式:单据类型前缀 + YYYYMMDD + 4位序号 |
| | | * |
| | | * @param serviceOrdClass 单据类型(如:BF、JZ等) |
| | | * @return 任务编号 |
| | | */ |
| | | public String generateTaskCode(String serviceOrdClass) { |
| | | String dateStr = DateUtils.dateTimeNow("yyyyMMdd"); |
| | | return "TASK" + dateStr + "0001"; |
| | | return generateTaskCode(serviceOrdClass, dateStr); |
| | | } |
| | | |
| | | /** |
| | | * 根据日期生成任务编号 |
| | | * |
| | | * @param serviceOrdClass 单据类型(如:BF、JZ等) |
| | | * @param date 日期 |
| | | * @return 任务编号 |
| | | */ |
| | | public String generateTaskCode(Date date) { |
| | | public String generateTaskCode(String serviceOrdClass, Date date) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
| | | String dateStr = sdf.format(date); |
| | | return "TASK" + dateStr + "0001"; |
| | | return generateTaskCode(serviceOrdClass, dateStr); |
| | | } |
| | | |
| | | /** |
| | | * 根据日期字符串生成任务编号 |
| | | * |
| | | * @param serviceOrdClass 单据类型(如:BF、JZ等) |
| | | * @param dateStr 日期字符串(格式:yyyyMMdd) |
| | | * @return 任务编号 |
| | | */ |
| | | private String generateTaskCode(String serviceOrdClass, String dateStr) { |
| | | // 确保单据类型前缀不为空,默认使用"T" |
| | | String prefix = (serviceOrdClass != null && !serviceOrdClass.trim().isEmpty()) |
| | | ? serviceOrdClass.trim() : "T"; |
| | | |
| | | String datePrefix = prefix + 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); |
| | | } |
| | | } |