| | |
| | | return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1)) + "-" + new Date().getTime(); |
| | | } |
| | | |
| | | /** |
| | | * 查询当天基于 create_time 的最新编号,并生成下一个编号 |
| | | * @param mapper mapper |
| | | * @param preFix 编号前缀 |
| | | * @param code 编号字段 |
| | | * @param <T> 实体类型 |
| | | * @return 订单编号 |
| | | */ |
| | | public static <T> String countTodayByCreateTime(BaseMapper<T> mapper,String preFix,String code) { |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDateTime todayStart = today.atStartOfDay(); |
| | | LocalDateTime tomorrowStart = today.plusDays(1).atStartOfDay(); |
| | | String dateStr = today.format(DateTimeFormatter.BASIC_ISO_DATE); |
| | | String codePrefix = preFix + dateStr; |
| | | |
| | | QueryWrapper<T> wrapper = new QueryWrapper<>(); |
| | | wrapper.select(code) |
| | | .ge("create_time", todayStart) |
| | | .lt("create_time", tomorrowStart) |
| | | .likeRight(code, codePrefix) |
| | | .orderByDesc(code) |
| | | .last("LIMIT 1"); |
| | | |
| | | long nextSeq = 1; |
| | | List<Map<String, Object>> records = mapper.selectMaps(wrapper); |
| | | if (!records.isEmpty()) { |
| | | Object lastCode = records.get(0).get(code); |
| | | if (lastCode != null) { |
| | | nextSeq = extractSequence(lastCode.toString(), codePrefix) + 1; |
| | | } |
| | | } |
| | | |
| | | return preFix + dateStr + String.format("%03d", nextSeq); |
| | | } |
| | | |
| | | private static long extractSequence(String fullCode, String codePrefix) { |
| | | if (!fullCode.startsWith(codePrefix)) { |
| | | return 0; |
| | | } |
| | | String seqStr = fullCode.substring(codePrefix.length()).trim(); |
| | | if (seqStr.isEmpty()) { |
| | | return 0; |
| | | } |
| | | try { |
| | | return Long.parseLong(seqStr); |
| | | } catch (NumberFormatException e) { |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询当天(基于createTime字段)的记录数量 |