| src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/utils/OrderUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -92,14 +92,10 @@ if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("审核用户不存在"); if (sysDept == null) throw new RuntimeException("部门不存在"); if (sysUser == null) throw new RuntimeException("申请人不存在"); String today = LocalDate.now().format(DATE_FORMAT); Long approveId = dailyRedisCounter.incrementAndGetByDb(); String formattedCount = String.format("%03d", approveId); //流程 ID String approveID = today + formattedCount; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ApproveProcess approveProcess = new ApproveProcess(); approveProcess.setApproveId(approveID); String s = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id"); approveProcess.setApproveId(s); approveProcess.setApproveUser(approveProcessVO.getApproveUser()); approveProcess.setApproveUserName(sysUser.getNickName()); approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId()); @@ -133,7 +129,7 @@ } save(approveProcess); //初始化审批节点 approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(), approveID, approveProcessVO.getApproveDeptId()); approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(), s, approveProcessVO.getApproveDeptId()); // 附件绑定 tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue()); /*消息通知*/ src/main/java/com/ruoyi/common/utils/OrderUtils.java
@@ -100,6 +100,56 @@ 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字段)的记录数量