diff --git a/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java b/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java index e900c41..03ce855 100644 --- a/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java +++ b/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java @@ -3,9 +3,11 @@ package com.fundplatform.receipt; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableDiscoveryClient +@EnableScheduling public class ReceiptApplication { public static void main(String[] args) { diff --git a/fund-receipt/src/main/java/com/fundplatform/receipt/controller/ReceivableController.java b/fund-receipt/src/main/java/com/fundplatform/receipt/controller/ReceivableController.java index 11d8028..e666efe 100644 --- a/fund-receipt/src/main/java/com/fundplatform/receipt/controller/ReceivableController.java +++ b/fund-receipt/src/main/java/com/fundplatform/receipt/controller/ReceivableController.java @@ -151,6 +151,16 @@ public class ReceivableController { return Result.success(receivableService.getOverdueCount()); } + /** + * 获取即将到期的应收款列表 + * @param daysWithin 未来多少天内到期(默认7天) + */ + @GetMapping("/upcoming-due") + public Result> getUpcomingDue( + @RequestParam(defaultValue = "7") int daysWithin) { + return Result.success(receivableService.getUpcomingDueList(daysWithin)); + } + /** * 导出应收款明细Excel */ @@ -167,11 +177,11 @@ public class ReceivableController { excel.setReceivableCode(vo.getReceivableCode()); excel.setProjectName(vo.getProjectName()); excel.setCustomerName(vo.getCustomerName()); - excel.setTotalAmount(vo.getTotalAmount()); + excel.setTotalAmount(vo.getReceivableAmount()); excel.setReceivedAmount(vo.getReceivedAmount()); - excel.setRemainingAmount(vo.getRemainingAmount()); - excel.setDueDate(vo.getDueDate()); - excel.setReceiptStatus(vo.getReceiptStatus()); + excel.setRemainingAmount(vo.getUnpaidAmount()); + excel.setDueDate(vo.getPaymentDueDate()); + excel.setReceiptStatus(vo.getStatus()); excel.setConfirmStatus(vo.getConfirmStatus()); excel.setRemark(vo.getRemark()); excel.setCreatedTime(vo.getCreatedTime()); diff --git a/fund-receipt/src/main/java/com/fundplatform/receipt/service/ReceivableService.java b/fund-receipt/src/main/java/com/fundplatform/receipt/service/ReceivableService.java index 6312bbc..47fe69c 100644 --- a/fund-receipt/src/main/java/com/fundplatform/receipt/service/ReceivableService.java +++ b/fund-receipt/src/main/java/com/fundplatform/receipt/service/ReceivableService.java @@ -84,4 +84,10 @@ public interface ReceivableService { * 获取逾期应收款数量 */ Integer getOverdueCount(); + + /** + * 获取即将到期的应收款列表 + * @param daysWithin 未来多少天内到期 + */ + List getUpcomingDueList(int daysWithin); } diff --git a/fund-receipt/src/main/java/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.java b/fund-receipt/src/main/java/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.java index 99e68fb..71becb3 100644 --- a/fund-receipt/src/main/java/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.java +++ b/fund-receipt/src/main/java/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.java @@ -403,4 +403,21 @@ public class ReceivableServiceImpl implements ReceivableService { .eq(Receivable::getStatus, STATUS_OVERDUE); return (int) receivableDataService.count(wrapper); } + + @Override + public List getUpcomingDueList(int daysWithin) { + LocalDate today = LocalDate.now(); + LocalDate endDate = today.plusDays(daysWithin); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Receivable::getDeleted, 0) + .eq(Receivable::getConfirmStatus, CONFIRM_CONFIRMED) + .ne(Receivable::getStatus, STATUS_RECEIVED) + .isNotNull(Receivable::getPaymentDueDate) + .between(Receivable::getPaymentDueDate, today, endDate) + .orderByAsc(Receivable::getPaymentDueDate); + + List list = receivableDataService.list(wrapper); + return list.stream().map(this::convertToVO).toList(); + } } diff --git a/fund-receipt/src/main/java/com/fundplatform/receipt/task/ReceivableScheduledTask.java b/fund-receipt/src/main/java/com/fundplatform/receipt/task/ReceivableScheduledTask.java new file mode 100644 index 0000000..7f72086 --- /dev/null +++ b/fund-receipt/src/main/java/com/fundplatform/receipt/task/ReceivableScheduledTask.java @@ -0,0 +1,74 @@ +package com.fundplatform.receipt.task; + +import com.fundplatform.receipt.service.ReceivableService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * 应收款定时任务 + * 执行逾期状态更新和提醒 + */ +@Component +@ConditionalOnProperty(name = "fund.schedule.enabled", havingValue = "true", matchIfMissing = true) +public class ReceivableScheduledTask { + + private static final Logger log = LoggerFactory.getLogger(ReceivableScheduledTask.class); + + private final ReceivableService receivableService; + + public ReceivableScheduledTask(ReceivableService receivableService) { + this.receivableService = receivableService; + } + + /** + * 每天凌晨1点执行逾期状态更新 + * cron表达式: 秒 分 时 日 月 周 + */ + @Scheduled(cron = "0 0 1 * * ?") + public void updateOverdueStatus() { + log.info("开始执行逾期状态更新定时任务..."); + try { + receivableService.updateOverdueStatus(); + log.info("逾期状态更新定时任务执行完成"); + } catch (Exception e) { + log.error("逾期状态更新定时任务执行失败", e); + } + } + + /** + * 每天上午9点执行逾期提醒 + * 发送逾期预警通知 + */ + @Scheduled(cron = "0 0 9 * * ?") + public void sendOverdueReminder() { + log.info("开始执行逾期提醒定时任务..."); + try { + // TODO: 集成消息通知服务后实现 + // Integer overdueCount = receivableService.getOverdueCount(); + // notificationService.sendOverdueAlert(overdueCount); + log.info("逾期提醒定时任务执行完成(待集成消息通知服务)"); + } catch (Exception e) { + log.error("逾期提醒定时任务执行失败", e); + } + } + + /** + * 每周一上午10点执行账期预警 + * 提醒即将到期的应收款 + */ + @Scheduled(cron = "0 0 10 ? * MON") + public void sendDueDateWarning() { + log.info("开始执行账期预警定时任务..."); + try { + // TODO: 集成消息通知服务后实现 + // List upcomingDue = receivableService.getUpcomingDueList(7); + // notificationService.sendDueDateWarning(upcomingDue); + log.info("账期预警定时任务执行完成(待集成消息通知服务)"); + } catch (Exception e) { + log.error("账期预警定时任务执行失败", e); + } + } +} diff --git a/fund-receipt/src/main/resources/application.yml b/fund-receipt/src/main/resources/application.yml index eec0f9a..6baaf51 100644 --- a/fund-receipt/src/main/resources/application.yml +++ b/fund-receipt/src/main/resources/application.yml @@ -53,3 +53,14 @@ tenant: tenant-header: X-Tenant-Id default-tenant-id: "1" fallback-to-shared: true + +# 定时任务配置 +fund: + schedule: + enabled: true + # 逾期状态更新:每天凌晨1点 + overdue-update-cron: "0 0 1 * * ?" + # 逾期提醒:每天上午9点 + overdue-reminder-cron: "0 0 9 * * ?" + # 账期预警:每周一上午10点 + due-date-warning-cron: "0 0 10 ? * MON" diff --git a/fund-receipt/target/classes/application.yml b/fund-receipt/target/classes/application.yml index eec0f9a..6baaf51 100644 --- a/fund-receipt/target/classes/application.yml +++ b/fund-receipt/target/classes/application.yml @@ -53,3 +53,14 @@ tenant: tenant-header: X-Tenant-Id default-tenant-id: "1" fallback-to-shared: true + +# 定时任务配置 +fund: + schedule: + enabled: true + # 逾期状态更新:每天凌晨1点 + overdue-update-cron: "0 0 1 * * ?" + # 逾期提醒:每天上午9点 + overdue-reminder-cron: "0 0 9 * * ?" + # 账期预警:每周一上午10点 + due-date-warning-cron: "0 0 10 ? * MON" diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/ReceiptApplication.class b/fund-receipt/target/classes/com/fundplatform/receipt/ReceiptApplication.class index b9ef138..a769e31 100644 Binary files a/fund-receipt/target/classes/com/fundplatform/receipt/ReceiptApplication.class and b/fund-receipt/target/classes/com/fundplatform/receipt/ReceiptApplication.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/controller/FundReceiptController.class b/fund-receipt/target/classes/com/fundplatform/receipt/controller/FundReceiptController.class new file mode 100644 index 0000000..46c754f Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/controller/FundReceiptController.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/controller/HealthController.class b/fund-receipt/target/classes/com/fundplatform/receipt/controller/HealthController.class new file mode 100644 index 0000000..aea1165 Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/controller/HealthController.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/controller/ReceivableController.class b/fund-receipt/target/classes/com/fundplatform/receipt/controller/ReceivableController.class new file mode 100644 index 0000000..e6dbab4 Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/controller/ReceivableController.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/service/FundReceiptService.class b/fund-receipt/target/classes/com/fundplatform/receipt/service/FundReceiptService.class new file mode 100644 index 0000000..b3ddfd8 Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/service/FundReceiptService.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/service/ReceivableService.class b/fund-receipt/target/classes/com/fundplatform/receipt/service/ReceivableService.class index aa2a2db..4d1a7e9 100644 Binary files a/fund-receipt/target/classes/com/fundplatform/receipt/service/ReceivableService.class and b/fund-receipt/target/classes/com/fundplatform/receipt/service/ReceivableService.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/service/impl/FundReceiptServiceImpl.class b/fund-receipt/target/classes/com/fundplatform/receipt/service/impl/FundReceiptServiceImpl.class new file mode 100644 index 0000000..ab2e516 Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/service/impl/FundReceiptServiceImpl.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.class b/fund-receipt/target/classes/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.class new file mode 100644 index 0000000..4675f07 Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/service/impl/ReceivableServiceImpl.class differ diff --git a/fund-receipt/target/classes/com/fundplatform/receipt/task/ReceivableScheduledTask.class b/fund-receipt/target/classes/com/fundplatform/receipt/task/ReceivableScheduledTask.class new file mode 100644 index 0000000..84981b7 Binary files /dev/null and b/fund-receipt/target/classes/com/fundplatform/receipt/task/ReceivableScheduledTask.class differ diff --git a/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index e999d68..f3572d1 100644 --- a/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,13 +1,17 @@ com/fundplatform/receipt/data/entity/Receivable.class com/fundplatform/receipt/dto/FundReceiptDTO.class +com/fundplatform/receipt/controller/FundReceiptController.class com/fundplatform/receipt/data/mapper/ReceivableMapper.class +com/fundplatform/receipt/service/impl/FundReceiptServiceImpl.class com/fundplatform/receipt/vo/ReceivableVO.class com/fundplatform/receipt/vo/FundReceiptVO.class com/fundplatform/receipt/data/service/FundReceiptDataService.class +com/fundplatform/receipt/controller/HealthController.class com/fundplatform/receipt/data/service/ReceivableDataService.class com/fundplatform/receipt/data/mapper/FundReceiptMapper.class com/fundplatform/receipt/data/entity/FundReceipt.class com/fundplatform/receipt/ReceiptApplication.class +com/fundplatform/receipt/service/FundReceiptService.class com/fundplatform/receipt/aop/ApiLogAspect.class com/fundplatform/receipt/dto/ReceivableDTO.class com/fundplatform/receipt/service/ReceivableService.class diff --git a/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 0714ec0..2b73cd1 100644 --- a/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/fund-receipt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,6 +1,7 @@ /home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/data/mapper/FundReceiptMapper.java /home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/aop/ApiLogAspect.java /home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/data/mapper/ReceivableMapper.java +/home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/task/ReceivableScheduledTask.java /home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java /home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/data/service/FundReceiptDataService.java /home/along/MyCode/wanjiabuluo/fundplatform/fund-receipt/src/main/java/com/fundplatform/receipt/dto/ReceivableDTO.java