src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java
@@ -264,7 +264,7 @@ private boolean isEnterpriseNewsNotice(SysNotice sysNotice) { return sysNotice != null && sysNotice.getJumpPath() != null && sysNotice.getJumpPath().startsWith("/enterpriseNews?id="); && sysNotice.getJumpPath().contains("/enterpriseNews?id="); } private void syncEnterpriseNewsReadCount(List<SysNotice> notices) { src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -31,6 +31,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.Date; import java.util.List; /** @@ -246,7 +247,7 @@ @Operation(summary = "生成采购序列号") @GetMapping("/createPurchaseNo") @Log(title = "生成采购序列号", businessType = BusinessType.OTHER) public AjaxResult createPurchaseNo() { return AjaxResult.success("生成成功",purchaseLedgerService.getPurchaseNo()); public AjaxResult createPurchaseNo(@RequestParam Date entryDate) { return AjaxResult.success("生成成功",purchaseLedgerService.getPurchaseNo(entryDate)); } } src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -9,6 +9,7 @@ import com.ruoyi.sales.pojo.SalesLedgerProduct; import org.springframework.web.multipart.MultipartFile; import java.util.Date; import java.util.List; /** @@ -39,7 +40,7 @@ IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedgerDto purchaseLedger); String getPurchaseNo(); String getPurchaseNo(Date entryDate); AjaxResult importData(MultipartFile file); src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -455,12 +455,13 @@ } @Override public String getPurchaseNo() { public String getPurchaseNo(Date entryDate) { LocalDate localDate = entryDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // 生成日期前缀(例如:CG20250405) String purchaseNo = "CG" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String purchaseNo = "CG" + localDate.format(DateTimeFormatter.ofPattern("yyyyMMdd")); // 构建 Redis Key(按天分隔) String redisKey = "purchase_no:" + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE); String redisKey = "purchase_no:" + localDate.format(DateTimeFormatter.ISO_LOCAL_DATE); // 获取当前序号并递增(原子操作) Long sequence = redisTemplate.opsForValue().increment(redisKey); src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -575,7 +575,7 @@ if (salesLedger.getId() == null) { String contractNo = salesLedger.getSalesContractNo(); if (StringUtils.isEmpty(contractNo)) { contractNo = generateSalesContractNo(); contractNo = generateSalesContractNo(salesLedgerDto.getEntryDate()); } salesLedger.setSalesContractNo(contractNo); salesLedgerMapper.insert(salesLedger); @@ -638,8 +638,8 @@ } @Transactional(readOnly = true) public String generateSalesContractNo() { LocalDate currentDate = LocalDate.now(); public String generateSalesContractNo(Date entryDate) { LocalDate currentDate = entryDate != null ? DateUtils.toLocalDate(entryDate) : LocalDate.now(); String datePart = currentDate.format(DateTimeFormatter.BASIC_ISO_DATE); String lockKey = LOCK_PREFIX + datePart; String lockValue = Thread.currentThread().getId() + "-" + System.nanoTime(); // 唯一标识锁持有者