From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 01 八月 2025 13:27:59 +0800
Subject: [PATCH] yys 密码已重置

---
 cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java |  142 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java b/cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java
new file mode 100644
index 0000000..4d48dd4
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java
@@ -0,0 +1,142 @@
+package com.ruoyi.process.task;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.utils.WxCpUtils;
+import com.ruoyi.process.mapper.QualitySuperviseDetailsMapper;
+import com.ruoyi.process.mapper.QualitySuperviseDetailsRecordMapper;
+import com.ruoyi.process.mapper.QualitySuperviseManagementReviewMapper;
+import com.ruoyi.process.pojo.QualitySuperviseDetails;
+import com.ruoyi.process.pojo.QualitySuperviseDetailsRecord;
+import com.ruoyi.process.pojo.QualitySuperviseManagementReview;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 璐ㄩ噺鐩戠潱濉啓鎻愰啋
+ */
+@Component
+public class QualitySuperviseSchedule {
+    @Resource
+    private QualitySuperviseDetailsMapper qualitySuperviseDetailsMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+    @Resource
+    private QualitySuperviseManagementReviewMapper qualitySuperviseManagementReviewMapper;
+    @Resource
+    private QualitySuperviseDetailsRecordMapper qualitySuperviseDetailsRecordMapper;
+
+    /**
+     * 璐ㄩ噺鐩戠潱濉啓鎻愰啋
+     */
+//    @Scheduled(cron = "0/5 * * * * *")
+    @Scheduled(cron = "0 0 9 1 * *") // 姣忔湀1鍙锋墽琛�
+    public void task1() {
+        // 鏌ヨ褰撴湀鐩戠潱璁″垝
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.M");
+        String format = LocalDateTime.now().format(formatter);
+        List<QualitySuperviseDetails> qualitySuperviseDetails = qualitySuperviseDetailsMapper.selectList(Wrappers.<QualitySuperviseDetails>lambdaQuery()
+                .eq(QualitySuperviseDetails::getSuperviseTime, format));
+
+        for (QualitySuperviseDetails qualitySuperviseDetail : qualitySuperviseDetails) {
+            threadPoolTaskExecutor.execute(() -> {
+                // 鏌ヨ琚洃鐫d汉淇℃伅
+                User user = userMapper.selectById(qualitySuperviseDetail.getSupervisedUserId());
+                // 浼佷笟寰俊閫氱煡鍩硅
+                String message = "";
+                message += "璐ㄩ噺鐩戠潱璁″垝鎻愰啋閫氱煡";
+                message += "\n鐩戠潱鏃ユ湡: " + qualitySuperviseDetail.getSuperviseTime();
+                message += "\n鐩戠潱鐩殑: " + qualitySuperviseDetail.getSupervisePurpose();
+                message += "\n鐩戠潱椤圭洰: " + qualitySuperviseDetail.getSuperviseProject();
+                message += "\n琚洃鐫d汉: " + qualitySuperviseDetail.getSupervisee();
+                message += "\n璁″垝褰撴湀杩涜鐩戠潱璁″垝";
+
+                //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+                try {
+                    WxCpUtils.inform(user.getAccount(), message, null);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            });
+        }
+    }
+
+
+    /**
+     * 姣忔湀28鍙疯嚜鍔ㄧ敓鎴愯川閲忕洃鐫f�荤粨
+     */
+//    @Scheduled(cron = "0/5 * * * * *")
+    @Scheduled(cron = "0 0 9 28 * *") // 姣忔湀28鍙锋墽琛�
+    public void task2() {
+        LocalDateTime now = LocalDateTime.now();
+        // 鏌ヨ褰撴湀鐩戠潱璁″垝
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.M");
+        String format = now.format(formatter);
+        List<QualitySuperviseDetails> qualitySuperviseDetails = qualitySuperviseDetailsMapper.selectList(Wrappers.<QualitySuperviseDetails>lambdaQuery()
+                .eq(QualitySuperviseDetails::getSuperviseTime, format));
+
+        // 鏍规嵁瀹氭湡鐩戠潱鍜屽姩鎬佺洃鐫e尯鍒�
+        Map<String, List<QualitySuperviseDetails>> superviseReasonMap = qualitySuperviseDetails.stream().collect(Collectors.groupingBy(QualitySuperviseDetails::getSuperviseReason));
+
+        // 鑾峰彇褰撴湀鏃ユ湡
+        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy骞碝M鏈�");
+        String format2 = now.format(formatter2);
+
+        // 鑾峰彇璁″垝鍐呭
+        String implementationSupervisee = "";
+                List<QualitySuperviseDetails> implementationList = superviseReasonMap.get("瀹氭湡鐩戠潱");
+        if (CollectionUtils.isNotEmpty(implementationList)) {
+            // 鑾峰彇瀹氭湡鐩戠潱浜哄憳淇℃伅
+            List<String> collect = implementationList.stream().map(QualitySuperviseDetails::getSupervisee).collect(Collectors.toList());
+            implementationSupervisee = CollUtil.join(collect, ",");
+        }
+        String implementationContent = "宸ヤ綔涓弗鏍兼寜鐓у勾搴﹁川閲忕洃鐫e伐浣滆鍒掕繘琛屾墽琛屻�倇}瀵箋}杩涜涓�娆″畾鏈熺洃鐫c�傚湪鐩戠潱杩囩▼涓紝娌℃湁鍙戠幇涓嶇鍚堢殑鐜拌薄銆傛楠屽憳鑳界啛缁冪殑鎸夌収瑙勫畾鐨勮姹傝繘琛岃澶囩殑鎿嶄綔锛屽浜庢爣鍑嗚兘鐔熻锛屾墍浣跨敤鐨勮澶囧潎鍦ㄦ牎鍑嗗懆鏈熷唴锛岃兘娓呮瀹屾暣鐨勭殑璁板綍鍘熷鏁版嵁骞跺嚭鍏锋姤鍛婏紱鍦ㄨ瘯楠岀幆澧冩柟闈紝鑳藉涓ユ牸鐨勬寜鐓ф爣鍑嗘墽琛屻��";
+        String formatImplementationContent = StrUtil.format(implementationContent, format2, implementationSupervisee);
+
+        //鑾峰彇鍔ㄦ�佸唴瀹�
+        String dynamicSupervisee = "";
+        List<QualitySuperviseDetails> dynamicList = superviseReasonMap.get("鍔ㄦ�佺洃鐫�");
+        if (CollectionUtils.isNotEmpty(dynamicList)) {
+            List<String> collect = dynamicList.stream()
+                    .map(details ->  StrUtil.format("瀵箋}鍔ㄦ�佺洃鐫�1娆″湪鐩戠潱杩囩▼涓�", details.getSupervisee())).collect(Collectors.toList());
+            dynamicSupervisee = CollUtil.join(collect, "锛�");
+        }
+        String dynamicContent = "鍦ㄤ繚璇佽川閲忕洃鐫h鍒掔殑鍚屾椂锛屼篃鍧氭寔鎸夌収棰嗗瑕佹眰鍔犲己涓嶅畾鏈熺洃鐫e姩浣溿�倇}浠絳}锛屾病鏈夊彂鐜颁笉绗﹀悎鐨勭幇璞°�傛楠屽憳鑳界啛缁冪殑鎸夌収瑙勫畾鐨勮姹傝繘琛岃澶囩殑鎿嶄綔锛屽浜庢爣鍑嗚兘鐔熻锛屾墍浣跨敤鐨勮澶囧潎鍦ㄦ牎鍑嗗懆鏈熷唴锛岃兘娓呮瀹屾暣鐨勭殑璁板綍鍘熷鏁版嵁骞跺嚭鍏锋姤鍛婏紱鍦ㄨ瘯楠岀幆澧冩柟闈紝鑳藉涓ユ牸鐨勬寜鐓ф爣鍑嗘墽琛屻��";
+        String formatdynamicContent = StrUtil.format(dynamicContent, format2, dynamicSupervisee);
+
+        // 鑾峰彇鐩戠潱鍛樹俊鎭�
+        QualitySuperviseDetails superviseDetails = qualitySuperviseDetails.get(0);
+        QualitySuperviseDetailsRecord detailsRecord = qualitySuperviseDetailsRecordMapper.selectOne(Wrappers.<QualitySuperviseDetailsRecord>lambdaQuery()
+                .eq(QualitySuperviseDetailsRecord::getSuperviseDetailsId, superviseDetails.getSuperviseDetailsId())
+                .last("limit 1"));
+        String supervisor = detailsRecord.getSupervisor();
+
+        // 鍒涘缓璇勫瀵硅薄
+        QualitySuperviseManagementReview managementReview = new QualitySuperviseManagementReview();
+        String yearDate = now.format(DateTimeFormatter.ofPattern("yyyy骞�"));
+        String monthDate = now.format(DateTimeFormatter.ofPattern("MM鏈�"));
+        managementReview.setFileName(StrUtil.format("{}绠$悊璇勫杈撳叆鏉愭枡锛坽}锛塤{}", yearDate, supervisor, monthDate));
+        managementReview.setImplementationContent(formatImplementationContent);
+        managementReview.setDynamicContent(formatdynamicContent);
+        managementReview.setSupervisor(supervisor);
+        managementReview.setSuperviseDate(LocalDate.now());
+        qualitySuperviseManagementReviewMapper.insert(managementReview);
+    }
+
+}

--
Gitblit v1.9.3