From 3849263b31a16a91ff08acaa42786ecfde76f33c Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期四, 27 十一月 2025 20:18:08 +0800
Subject: [PATCH] 提交

---
 tms/src/main/java/com/ruoyi/tms/task/ContractExpireNotifyTask.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 105 insertions(+), 0 deletions(-)

diff --git a/tms/src/main/java/com/ruoyi/tms/task/ContractExpireNotifyTask.java b/tms/src/main/java/com/ruoyi/tms/task/ContractExpireNotifyTask.java
new file mode 100644
index 0000000..3845f5c
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/task/ContractExpireNotifyTask.java
@@ -0,0 +1,105 @@
+package com.ruoyi.tms.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.ruoyi.tms.domain.TmsContract;
+import com.ruoyi.tms.domain.TmsMessageNotify;
+import com.ruoyi.tms.service.ITmsContractService;
+import com.ruoyi.tms.service.ITmsMessageNotifyService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.util.List;
+import java.util.stream.Collectors;
+@Slf4j
+@Component("contractExpireNotifyTask")
+public class ContractExpireNotifyTask {
+
+    @Autowired
+    ITmsContractService tmsContractService;
+
+    @Autowired
+    ITmsMessageNotifyService tmsMessageNotifyService;
+
+    /**
+     * 妫�鏌ュ悎鍚屽嵆灏嗗埌鏈�
+     */
+    public void checkContractExpire() {
+        LocalDate today = LocalDate.now();
+        LocalDate targetDate = today.plusDays(90);
+
+        List<TmsContract> tmsContracts = tmsContractService.getBaseMapper().selectList(new LambdaQueryWrapper<TmsContract>()
+                        .eq(TmsContract::getContractStatus, 0)
+                .between(TmsContract::getContractEndDate, today, targetDate)
+        );
+        if (tmsContracts.isEmpty()){
+            return;
+        }
+        log.info("鍗冲皢鍒版湡鐨勫悎鍚屾湁{}涓�", tmsContracts.size());
+        // 鎻愬彇鍚堝悓ID
+        List<Integer> ids = tmsContracts.stream()
+                .map(TmsContract::getId)
+                .collect(Collectors.toList());
+
+        // 鎵归噺鏇存柊涓衡�滀复鏈熲��
+        tmsContractService.getBaseMapper().update(
+                new LambdaUpdateWrapper<TmsContract>()
+                        .in(TmsContract::getId, ids)
+                        .set(TmsContract::getContractStatus, 1)  // 1 = 涓存湡
+        );
+
+        List<TmsMessageNotify> messageNotifies = tmsContracts.stream().map(item -> {
+            TmsMessageNotify notify = new TmsMessageNotify();
+            notify.setTitle("鍚堝悓鍒版湡鎻愰啋");
+            notify.setContent("銆愬悎鍚岀紪鍙�" + item.getContractCode() + "銆戝嵆灏嗗埌鏈�");
+            notify.setType(0);
+            notify.setStatus(0);
+            notify.setReadStatus(0);
+            notify.setExtraData("{\"contactStatus\":1,\"contractId\":\"" + item.getId() + "\"}");
+            return notify;
+        }).collect(Collectors.toList());
+        tmsMessageNotifyService.insertTmsMessageNotifyBatch(messageNotifies);
+    }
+    /**
+     * 妫�鏌ュ悎鍚屽凡鍒版湡
+     */
+    public void handleExpiredContracts() {
+        LocalDate today = LocalDate.now();
+
+        List<TmsContract> tmsContracts = tmsContractService.getBaseMapper().selectList(new LambdaQueryWrapper<TmsContract>()
+                .ne(TmsContract::getContractStatus, 2)
+                .le(TmsContract::getContractEndDate, today)
+        );
+        if (tmsContracts.isEmpty()){
+            return;
+        }
+        log.info("宸插埌鏈熺殑鍚堝悓鏈墈}涓�", tmsContracts.size());
+        // 鎻愬彇鍚堝悓ID
+        List<Integer> ids = tmsContracts.stream()
+                .map(TmsContract::getId)
+                .collect(Collectors.toList());
+
+        // 鎵归噺鏇存柊涓衡�滀复鏈熲��
+        tmsContractService.getBaseMapper().update(
+                new LambdaUpdateWrapper<TmsContract>()
+                        .in(TmsContract::getId, ids)
+                        .set(TmsContract::getContractStatus, 2)  // 1 = 涓存湡
+        );
+
+        List<TmsMessageNotify> messageNotifies = tmsContracts.stream().map(item -> {
+            TmsMessageNotify notify = new TmsMessageNotify();
+            notify.setTitle("鍚堝悓鍒版湡鎻愰啋");
+            notify.setContent("銆愬悎鍚岀紪鍙�" + item.getContractCode() + "銆戝凡鍒版湡");
+            notify.setType(0);
+            notify.setStatus(0);
+            notify.setReadStatus(0);
+            notify.setExtraData("{\"contactStatus\":2, \"contractId\":\"" + item.getId() + "\"}");
+            return notify;
+        }).collect(Collectors.toList());
+        tmsMessageNotifyService.insertTmsMessageNotifyBatch(messageNotifies);
+    }
+
+
+}

--
Gitblit v1.8.0