From 0877a9313cfcccbf59f86215cf75d922e4f786d7 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期三, 07 五月 2025 15:15:12 +0800
Subject: [PATCH] 添加监督质量评审功能

---
 cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java |   80 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 78 insertions(+), 2 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
index 0c35317..4d48dd4 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java
@@ -1,23 +1,33 @@
 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 {
@@ -27,9 +37,13 @@
     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鍙锋墽琛�
@@ -63,4 +77,66 @@
         }
     }
 
+
+    /**
+     * 姣忔湀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