From 25e115da7815430fdc5d078d4a01d76edacb4e6f Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期二, 06 五月 2025 16:39:04 +0800
Subject: [PATCH] 质量监督添加被监督人签名

---
 cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java |   67 ++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 14 deletions(-)

diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
index 52044aa..27ceb0c 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
@@ -1,10 +1,12 @@
 package com.ruoyi.process.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -52,6 +54,7 @@
 import java.net.URLEncoder;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -355,24 +358,60 @@
 
         // 鏌ヨ涓婁竴涓湀绗竴鏉$殑璁板綍淇℃伅, 鍒ゆ柇琚洃鐫d汉鍘诲彟澶栦竴涓�
         if (detailsRecord == null) {
-
             // 鏌ヨ璇︽儏淇℃伅
             QualitySuperviseDetails qualitySuperviseDetails = qualitySuperviseDetailsMapper.selectById(superviseDetailsId);
             // 鏌ヨ涓婁竴涓湀绗竴鏉$殑璁板綍淇℃伅, 鍒ゆ柇琚洃鐫d汉鍘诲彟澶栦竴涓�
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.M");
+            YearMonth yearMonth = YearMonth.parse(qualitySuperviseDetails.getSuperviseTime(), formatter);
+            YearMonth previousYearMonth = yearMonth.minusMonths(1);
+
+            LocalDate startDate = previousYearMonth.atDay(1);
+            LocalDate endDate = previousYearMonth.atEndOfMonth();
+
+            LocalDateTime startDateTime = startDate.atStartOfDay();
+            LocalDateTime endDateTime = endDate.atTime(23, 59, 59);
+
+            DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+            // 鑾峰彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+            String startDateTimeStr = startDateTime.format(outputFormatter);
+            String endDateTimeStr = endDateTime.format(outputFormatter);
 
             QualitySuperviseDetailsRecord laseRecord = qualitySuperviseDetailsRecordMapper.selectOne(Wrappers.<QualitySuperviseDetailsRecord>lambdaQuery()
+                    .between(QualitySuperviseDetailsRecord::getCreateTime, startDateTimeStr, endDateTimeStr)
+                    .isNotNull(QualitySuperviseDetailsRecord::getSupervisor)
                     .last("limit 1"));
 
+            String supervisor = null;
+
+            if (laseRecord != null) {
+                // 鏌ヨ璁″垝鑾峰彇鍙︿竴涓洃鐫e憳
+                QualitySupervise qualitySupervise = baseMapper.selectById(qualitySuperviseDetails.getSuperviseId());
+                if (StringUtils.isNotBlank(qualitySupervise.getRecordUserIds())) {
+                    List<String> recordUserIds = StrUtil.split(qualitySupervise.getRecordUserIds(), ',');
+                    List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery()
+                            .in(User::getId, recordUserIds));
+                    if (CollectionUtils.isNotEmpty(users) && users.size() == 2) {
+                        // 鍒ゆ柇鏄惁涓�鏍�, 涓�鏍疯幏鍙栧彟澶栦竴涓�
+                        if (users.get(0).getName().equals(laseRecord.getSupervisor())) {
+                            supervisor = users.get(1).getName();
+                        } else {
+                            supervisor = users.get(0).getName();
+                        }
+
+                    }
+                }
+            }
 
             detailsRecord = new QualitySuperviseDetailsRecord();
             detailsRecord.setSuperviseDetailsId(superviseDetailsId);
             detailsRecord.setTestMember(qualitySuperviseDetails.getSupervisee());
-            detailsRecord.setSupervisor(null);
+            detailsRecord.setSupervisor(supervisor);
 
-            detailsRecord.setPersonnel("()鏈夌浉搴旀娴嬪憳鐨勪笂宀楄瘉");
+            detailsRecord.setPersonnel(SecurityUtils.getLoginUser().getUser().getNickName() + "鏈夌浉搴旀娴嬪憳鐨勪笂宀楄瘉");
             detailsRecord.setEnvironment("娓╁害锛�()鈩� 婀垮害锛�()%");
-            detailsRecord.setInspectionRecord("妫�娴嬩汉鍛�()杩涜妫�娴嬭褰曪紝璁板綍鍐呭鐪熷疄鏈夋晥");
-            detailsRecord.setExaminingReport("鐢�()榛勭瀹炲嚭绀虹殑妫�娴嬫姤鍛婄鍚堣鑼冭姹�");
+            detailsRecord.setInspectionRecord("妫�娴嬩汉鍛�" + SecurityUtils.getLoginUser().getUser().getNickName() + "杩涜妫�娴嬭褰曪紝璁板綍鍐呭鐪熷疄鏈夋晥");
+            detailsRecord.setExaminingReport("鐢�" + SecurityUtils.getLoginUser().getUser().getNickName() + "鍑虹ず鐨勬娴嬫姤鍛婄鍚堣鑼冭姹�");
             detailsRecord.setSupervisionEvaluation("妫�娴嬫寜鐓ц姹傝繘琛岋紝鍒ゅ畾涓烘弧鎰�");
             detailsRecord.setHandlingAdvice("/");
 
@@ -485,25 +524,25 @@
     public void exportSuperviseDetailRecord(Integer superviseDetailsId, HttpServletResponse response) {
         QualitySuperviseDetailsRecord recordDto = qualitySuperviseDetailsRecordMapper.selectSuperviseDetailRecord(superviseDetailsId);
 
-        //鑾峰彇鎶�鏈礋璐d汉鐨勭鍚嶅湴鍧�
-        String ratifyUrl = null;
-        if (recordDto.getRatifyUserId() != null) {
-            ratifyUrl = userMapper.selectById(recordDto.getRatifyUserId()).getSignatureUrl();
-            if (StringUtils.isBlank(ratifyUrl)) {
-                throw new ErrorException("鎵句笉鍒版妧鏈礋璐d汉鐨勭鍚�");
-            }
+        // 鏌ヨ妫�娴嬩汉鍛�
+        User tserUser = new User();
+        if (StringUtils.isNotBlank(recordDto.getTestMember())) {
+            tserUser = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+                    .eq(User::getName, recordDto.getTestMember())
+                    .last("limit 1"));
         }
 
         // 鑾峰彇璺緞
         InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-detail-record.docx");
         ConfigureBuilder builder = Configure.builder();
         builder.useSpringEL(true);
-        String finalRatifyUrl = ratifyUrl;
+        User finalTserUser = tserUser;
         XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                 new HashMap<String, Object>() {{
                     put("supervision", recordDto);
+                    put("testMemberUrl", UserUtils.getFinalUserSignatureUrl(finalTserUser.getId()));
                     put("supervisoruUrl", UserUtils.getFinalUserSignatureUrl(recordDto.getSupervisor()));
-                    put("technicalDirectorUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
+                    put("technicalDirectorUrl", UserUtils.getFinalUserSignatureUrl(recordDto.getRatifyUserId()));
                     put("technicalDirectorDateUrl", recordDto.getRatifyTime() != null ?
                             Pictures.ofStream(DateImageUtil.createDateImage(recordDto.getRatifyTime())).create() : null);
                 }});

--
Gitblit v1.9.3