From f0afb2b17f2f6e13925ffe1b6fd8c8ae724aec0e Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期四, 13 三月 2025 10:46:24 +0800
Subject: [PATCH] 分支合并冲突解决

---
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java |    2 
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java          |    7 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportApproveConfigController.java         |   39 ++
 cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java               |   12 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java                       |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java                      |  203 +++++++++++
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java              |    3 
 cnas-device/src/main/resources/templates/device_qr_show.html                                            |  173 +++++++++
 cnas-device/src/main/resources/templates/word_qr_show.html                                              |   93 +++++
 performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml                                 |    7 
 inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportApproveConfigService.java               |   24 +
 inspect-server/pom.xml                                                                                  |    6 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportApproveConfigServiceImpl.java      |   92 +++++
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java         |    5 
 basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java             |   14 
 cnas-personnel/src/main/java/com/ruoyi/personnel/controller/SuperVisePlanController.java                |    5 
 ruoyi-common/src/main/java/com/ruoyi/common/config/MinioConfig.java                                     |    1 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java                                     |    4 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/InsOrderPlanServiceImpl.java                  |    1 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java              |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/pojo/AttachmentTable.java                                   |   36 ++
 cnas-device/src/main/resources/templates/sample_qr_show.html                                            |   46 ++
 /dev/null                                                                                               |   82 ----
 cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java    |    2 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java        |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java                            |   10 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java                 |   10 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java           |    3 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java                    |    5 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java                   |   97 ----
 ruoyi-system/src/main/resources/mapper/system/UserMapper.xml                                            |   29 +
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java               |   12 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java            |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java                                      |    2 
 34 files changed, 820 insertions(+), 215 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
index 8d220be..bb8b583 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
@@ -16,6 +16,7 @@
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.basic.service.StandardProductListService;
+import com.ruoyi.common.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -54,7 +55,7 @@
     @Override
     public List<StandardProductList> selectStandardProductList(InsSample1 insSample) {
         String[] models = insSample.getModel().split("-(?=[^-]*$)");//鎷嗗垎鏈�鍚庝竴涓��-銆�
-        String[] splits = insSample.getFactory().split(" - ");
+        String[] splits = StringUtils.isNotEmpty(insSample.getFactory())?insSample.getFactory().split(" - "):new String[0];
         List<StandardProductList> list = new ArrayList<>();
         if(splits.length<4){
             list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, models[0],"","");
@@ -77,13 +78,12 @@
                 }
             }
         }
-        String[] split1 = insSample.getFactory().split(" - ");
         //鍒ゆ柇闀垮害
-        if (split1.length > 4) {
-            if (ObjectUtils.isNotEmpty(split1[3])) {
-                list = list.stream().filter(list1 -> Objects.nonNull(list1.getSample())&&Objects.equals(list1.getSample(),split1[3])).collect(Collectors.toList());
-            }else if (split1[3].isEmpty()) {
-                list = list.stream().filter(list1 ->  Objects.nonNull(list1.getSampleType())&&Objects.equals(list1.getSampleType(),split1[2])).collect(Collectors.toList());
+        if (splits.length > 4) {
+            if (ObjectUtils.isNotEmpty(splits[3])) {
+                list = list.stream().filter(list1 -> Objects.nonNull(list1.getSample())&&Objects.equals(list1.getSample(),splits[3])).collect(Collectors.toList());
+            }else if (splits[3].isEmpty()) {
+                list = list.stream().filter(list1 ->  Objects.nonNull(list1.getSampleType())&&Objects.equals(list1.getSampleType(),splits[2])).collect(Collectors.toList());
             }
         }
         list = list.stream().filter(a -> {
diff --git a/cnas-device/src/main/resources/templates/device_qr_show.html b/cnas-device/src/main/resources/templates/device_qr_show.html
new file mode 100644
index 0000000..ba5567b
--- /dev/null
+++ b/cnas-device/src/main/resources/templates/device_qr_show.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>璁惧杩愯鎬昏</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
+    <style>
+        *{
+            margin: 0;
+            padding: 0;
+        }
+        body {
+            -webkit-text-size-adjust: 100%!important;
+            text-size-adjust: 100%!important;
+            -moz-text-size-adjust: 100%!important;
+        }
+        .main{
+            width: 100%;
+            background-color: #f5f7fa;
+            padding:10px 0;
+        }
+        .chartContainer{
+            width:92%;
+            margin-left:4%;
+            height:200px;
+            background-color: #fff;
+            border-radius: 5px;
+        }
+        .info{
+            width:92%;
+            margin-left:4%;
+            height:calc(100% - 230px);
+            background-color: #fff;
+            margin-top: 10px;
+            padding-bottom: 10px;
+            border-radius: 5px;
+        }
+        .info div{
+            display: flex;
+            width: 92%;
+            margin-left: 4%;
+            border-bottom: 1px solid #dddddd;
+            height: 40px;
+        }
+        .info div span{
+            width:100px;
+            color: #797979;
+            font-size: clamp(0.563rem, -2.813rem + 15vw, 0.75rem) !important;
+            line-height: 40px;
+        }
+        .info div p{
+            width:calc(100% - 100px);
+            height:40px;
+            font-size: clamp(0.563rem, -2.813rem + 15vw, 0.75rem) !important;
+            font-weight: bold;
+            line-height: 40px;
+            text-align: right;
+        }
+        .success{
+            color:#21a700
+        }
+        .failed{
+            color:#d80000
+        }
+        .other{
+            color: #e8a849;
+        }
+        .stop{
+            color: lightgray;
+        }
+        .download-link{
+            text-decoration:none;
+            width:80px;
+            height:25px;
+            margin:7.5px 10px;
+            background-color: #0066ff;
+            color:#fff;
+            font-size:clamp(0.563rem, -2.813rem + 15vw, 0.75rem) !important;
+            border:none;
+            border-radius: 3px;
+            line-height: 25px;
+            text-align: center;
+        }
+        .insProduct{
+            overflow-x: scroll;
+            overflow-y: hidden;
+            display: inline-block
+        }
+        .info div:last-child{
+            white-space: nowrap;
+        }
+    </style>
+</head>
+<body>
+    <input type="hidden" id="progress" th:value="${progress}">
+    <div class="main">
+        <div class="chartContainer" id="chartContainer" ></div>
+        <div class="info">
+            <div>
+                <span>璁惧鍚嶇О</span>
+                <p th:text="${deviceName}"></p>
+            </div>
+            <div>
+                <span>璁惧缂栧彿</span>
+                <p th:text="${deviceCode}"></p>
+            </div>
+            <div>
+                <span>鍚敤鏃堕暱(骞�)</span>
+                <p th:text="${usedYears}"></p>
+            </div>
+            <div>
+                <span>璁惧杩愯鐘舵��</span>
+                <p th:if="${runStatus==0}" class="success">姝e父</p>
+                <p th:if="${runStatus==1}" class="other">缁翠慨</p>
+                <p th:if="${runStatus==2}" class="stop">鍋滅敤</p>
+                <p th:if="${runStatus==3}" class="failed">鎶ュ簾</p>
+            </div>
+            <div>
+                <span>
+                    鏈�杩戞牎鍑嗘棩鏈�
+                </span>
+                <input type="hidden" id="downloadUrl" th:value="${downloadUrl}">
+                <a th:href="${downloadUrl}" onclick="return hasDownload()" th:download="${fileName}" rel="noopener noreferrer" class="download-link">璇佷功涓嬭浇</a>
+                <p th:text="${lastCalibrationDate}"></p>
+            </div>
+            <div>
+                <span>涓嬫鏍″噯鏃ユ湡</span>
+                <p th:text="${nextCalibrationDate}"></p>
+            </div>
+            <div>
+                <span>鏍″噯鎬荤粨璁�</span>
+                <p th:if="${calibrateStatus=='鍚堟牸'}" class="success" th:text="${calibrateStatus}"></p>
+                <p th:if="${calibrateStatus=='涓嶅悎鏍�'}" class="failed" th:text="${calibrateStatus}"></p>
+                <p th:if="${calibrateStatus=='鍏朵粬'}" class="other" th:text="${calibrateStatus}"></p>
+            </div>
+            <div>
+                <span>鏈�杩戞牳鏌ユ棩鏈�</span>
+                <p th:text="${lastExamineDate}"></p>
+            </div>
+            <div>
+                <span>涓嬫鏍告煡鏃ユ湡</span>
+                <p th:text="${nextExamineDate}"></p>
+            </div>
+            <div>
+                <span>鏍告煡鎬荤粨璁�</span>
+                <p th:if="${examineStatus=='鍚堟牸'}" class="success" th:text="${examineStatus}"></p>
+                <p th:if="${examineStatus=='涓嶅悎鏍�'}" class="failed" th:text="${examineStatus}"></p>
+                <p th:if="${examineStatus=='鍏朵粬'}" class="other" th:text="${examineStatus}"></p>
+            </div>
+            <div>
+                <span>鏈�杩戠淮鎶ゆ棩鏈�</span>
+                <p th:text="${maintenanceDate}"></p>
+            </div>
+            <div>
+                <span>涓嬫缁存姢鏃ユ湡</span>
+                <p th:text="${nextMaintenanceDate}"></p>
+            </div>
+            <div>
+                <span>缁存姢绫诲瀷</span>
+                <p th:text="${maintenanceType}"></p>
+            </div>
+            <div>
+                <span>娴嬮噺椤圭洰</span>
+                <p th:text="${insProduct}" class="insProduct"></p>
+            </div>
+        </div>
+    </div>
+
+</body>
+<script  th:src="@{/static/js/echarts.js}"></script>
+<script th:src="@{/static/js/device_qr_show.js}"></script>
+</html>
\ No newline at end of file
diff --git a/cnas-device/src/main/resources/templates/sample_qr_show.html b/cnas-device/src/main/resources/templates/sample_qr_show.html
new file mode 100644
index 0000000..b470f18
--- /dev/null
+++ b/cnas-device/src/main/resources/templates/sample_qr_show.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
+    <title>鏍峰搧淇℃伅</title>
+    <style>
+
+    </style>
+</head>
+<body>
+<p>
+    <span style="font-weight: bold">鏍峰搧缂栧彿锛�</span>
+    <span th:text="${sampleCode}"></span>
+</p>
+<p>
+    <span  style="font-weight: bold">濮旀墭鍗曞彿锛�</span>
+    <span th:text="${entrustCode}"></span>
+</p>
+<p>
+    <span  style="font-weight: bold">瑙勬牸鍨嬪彿锛�</span>
+    <span th:text="${model}"></span>
+</p>
+<p>
+    <span  style="font-weight: bold">鏍峰搧鍚嶇О锛�</span>
+    <span th:text="${sample}"></span>
+</p>
+<p>
+    <span  style="font-weight: bold">妫�娴嬮」鐩細</span>
+    <span th:text="${inspectionItem}"></span>
+</p>
+<p>
+    <span  style="font-weight: bold">鏍峰搧鐘舵�侊細</span>
+    <input type="checkbox" disabled name="insState" value="0" th:checked="${insState == 0}">
+    <label>寰呮</label>
+    <input type="checkbox" disabled name="insState" value="1" th:checked="${insState == 1}">
+    <label>鍦ㄦ</label>
+    <input type="checkbox" disabled name="insState" value="2" th:checked="${insState == 2}">
+    <label>宸叉</label>
+    <input type="checkbox" disabled name="isLeave" value="1" th:checked="${isLeave == 1}">
+    <label>鐣欐牱</label>
+
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/cnas-device/src/main/resources/templates/word_qr_show.html b/cnas-device/src/main/resources/templates/word_qr_show.html
new file mode 100644
index 0000000..ebaa864
--- /dev/null
+++ b/cnas-device/src/main/resources/templates/word_qr_show.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>妫�娴嬫姤鍛�</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <style>
+        .descriptions {
+            width: 65%;
+            text-align: left;
+        }
+        .descriptions-title {
+            width: 35%;
+            text-align: center;
+        }
+        .table {
+            font-size: 1em;
+            color: #1c2023;
+            border-collapse: collapse;
+            width: 100%;
+        }
+        .table tr {
+            height: 3em;
+        }
+        table tr:nth-child(odd) .descriptions-title{
+            background-color: #dddddd;
+        }
+        table tr:nth-child(odd) .descriptions{
+            background-color: #f0f0f0;
+        }
+    </style>
+</head>
+<body>
+<h4 th:text="'鎶ュ憡缂栧彿锛�' + ${entrustCode}"></h4>
+<table class="table">
+    <tr>
+        <td class="descriptions-title">璇� 鏍� 鍚� 绉�<br/>Name of Product</td>
+        <td class="descriptions">
+            <p>
+                <span th:text="${productName}"></span>
+                <br/>
+                <span th:text="${productNameEn}"></span>
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td class="descriptions-title">鍨� 鍙�<br/>Type and Size</td>
+        <td class="descriptions" th:text="${insOrderModel}"></td>
+    </tr>
+    <tr>
+        <td class="descriptions-title">濮� 鎵� 鍗� 浣�<br/>Client</td>
+        <td class="descriptions">
+            <p>
+                <span th:text="${company}"></span>
+                <br/>
+                <span th:text="${companyEn}"></span>
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td class="descriptions-title">妫� 楠� 绫� 鍒�<br/>Kind of Test</td>
+        <td class="descriptions">
+            <p>
+                <span th:text="${orderType}"></span>
+                <br/>
+                <span th:text="${orderTypeEn}"></span>
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td class="descriptions-title">鏀� 鏍� 鏃� 鏈�<br/>Received date</td>
+        <td class="descriptions">
+            <p>
+                <span th:text="${getTime}"></span>
+                <br/>
+                <span th:text="${getTimeEn}"></span>
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td class="descriptions-title">绛� 鍙� 鏃� 鏈�<br/>Date of issue</td>
+        <td class="descriptions">
+            <p>
+                <span th:text="${issuingDate}"></span>
+                <br/>
+                <span th:text="${issuingDateEn}"></span>
+            </p>
+        </td>
+    </tr>
+</table>
+</body>
+</html>
\ No newline at end of file
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java
index e9838af..1a824e1 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java
@@ -44,7 +44,7 @@
 
     @ApiOperation(value = "鏌ヨ 宀椾綅鑱岃矗")
     @GetMapping("personJobResponsibilitiesSelect")
-    public Result<IPage<PersonJobResponsibilitiesDto>> personJobResponsibilitiesSelect(Page page, String userId, String departmentId, String userName) {
+    public Result<IPage<PersonJobResponsibilitiesDto>> personJobResponsibilitiesSelect(Page page, Integer userId, String departmentId, String userName) {
         IPage<PersonJobResponsibilitiesDto> iPage = personJobResponsibilitiesService.personJobResponsibilitiesSelect(page, userId, departmentId, userName);
         return Result.success(iPage);
     }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java
index f485096..77c1e1e 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java
@@ -25,10 +25,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * <p>
@@ -145,7 +142,7 @@
                                                                                    Integer departId,
                                                                                    Integer state) {
         Integer planId = 0;
-        if(id.equals("null") || StringUtils.isEmpty(id)) {
+        if(ObjectUtils.isNull(id) || StringUtils.isEmpty(id)) {
             planId = null;
         } else {
             planId = Integer.parseInt(id);
@@ -185,8 +182,9 @@
 
     @ApiOperation(value = "鍩硅涓庤�冩牳璁板綍 璁ら")
     @PostMapping("claimOfTrainingAndAssessmentRecords")
-    public Result<?> claimOfTrainingAndAssessmentRecords(@RequestParam("claimAndClaim") Boolean claimAndClaim,
-                                                         @RequestParam("courseId") Integer courseId) {
+    public Result<?> claimOfTrainingAndAssessmentRecords(@RequestBody Map<String,Object> map) {
+        Boolean claimAndClaim = (Boolean)map.get("claimAndClaim");
+        Integer courseId = (Integer)map.get("courseId");
         personTrainingRecordService.claimOfTrainingAndAssessmentRecords(claimAndClaim, courseId);
         return Result.success();
     }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/SuperVisePlanController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/SuperVisePlanController.java
index 1c63015..25f87bc 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/SuperVisePlanController.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/SuperVisePlanController.java
@@ -1,9 +1,11 @@
 package com.ruoyi.personnel.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.personnel.dto.PersonSupervisePlanDetailsDto;
 import com.ruoyi.personnel.dto.PersonSupervisePlanDto;
 import com.ruoyi.personnel.pojo.PersonSupervisePlan;
@@ -58,6 +60,9 @@
         PersonSupervisePlan byId = personSupervisePlanService.getById(id);
         // 閫氫俊鐨勪负璁稿啗 鐢靛姏鐨勬槸鍒樺缓寰�
         Integer approvalId = null;
+        if (ObjectUtils.isNull(byId.getDepartId())){
+            throw new ErrorException("璇ョ敤鎴锋病鏈夐厤缃浉鍏冲疄楠屽閮ㄩ棬淇℃伅!!");
+        }
         Integer departId = byId.getDepartId();
         if(departId.equals(18)) {
             approvalId = 11;
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java
index a46e3bf..487a81e 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.personnel.dto.PersonJobResponsibilitiesDto;
 import com.ruoyi.personnel.pojo.PersonJobResponsibilities;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,5 +17,5 @@
  */
 public interface PersonJobResponsibilitiesMapper extends BaseMapper<PersonJobResponsibilities> {
 
-    IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, String userId, String departmentId, String userName);
+    IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, @Param("userId") Integer userId, @Param("departmentId") String departmentId, @Param("userName") String userName);
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java
index b2bb671..9ced914 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java
@@ -18,7 +18,7 @@
  */
 public interface PersonPersonnelCapacityMapper extends BaseMapper<PersonPersonnelCapacity> {
 
-    IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName);
+    IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, @Param("departLimsId") Integer departLimsId, @Param("userId") Integer userId, @Param("userName") String userName);
 
     /**
      * 鏌ヨ浜哄憳鑳藉姏鎺ュ彛
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java
index 1121811..25e4906 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.personnel.dto.PersonPostAuthorizationRecordDto;
 import com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,5 +17,5 @@
  */
 public interface PersonPostAuthorizationRecordMapper extends BaseMapper<PersonPostAuthorizationRecord> {
 
-    IPage<PersonPostAuthorizationRecordDto> personPostAuthorizationRecordPage(Page page, Integer departLimsId, Integer userId, String userName);
+    IPage<PersonPostAuthorizationRecordDto> personPostAuthorizationRecordPage(Page page, @Param("departLimsId") Integer departLimsId, @Param("userId") Integer userId, @Param("userName") String userName);
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java
index a77cb79..ec67c20 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java
@@ -6,6 +6,7 @@
 import com.ruoyi.personnel.dto.PersonRewardPunishmentRecordDto;
 import com.ruoyi.personnel.excel.PersonRewardPunishmentRecordExcel;
 import com.ruoyi.personnel.pojo.PersonRewardPunishmentRecord;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
 import java.util.List;
@@ -20,7 +21,7 @@
  */
 public interface PersonRewardPunishmentRecordMapper extends BaseMapper<PersonRewardPunishmentRecord> {
 
-    IPage<PersonRewardPunishmentRecordDto> rewardPunishmentPage(Page page, Integer userId, String userName, Date startTime, Date endTime, Integer departmentId);
+    IPage<PersonRewardPunishmentRecordDto> rewardPunishmentPage(Page page, @Param("userId") Integer userId, @Param("userName") String userName, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("departmentId") Integer departmentId);
 
-    List<PersonRewardPunishmentRecordExcel> rewardPunishmentExport(Integer userId, Integer departmentId, String userName, Date startTime, Date endTime);
+    List<PersonRewardPunishmentRecordExcel> rewardPunishmentExport(@Param("userId") Integer userId, @Param("departmentId") Integer departmentId, @Param("userName") String userName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java
index 67fd119..8750f11 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java
@@ -5,6 +5,7 @@
 import com.ruoyi.framework.mybatis_config.MyBaseMapper;
 import com.ruoyi.personnel.dto.PersonSupervisePlanDetailsDto;
 import com.ruoyi.personnel.pojo.PersonSupervisePlanDetails;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,6 +17,6 @@
  */
 public interface PersonSupervisePlanDetailsMapper extends MyBaseMapper<PersonSupervisePlanDetails> {
 
-    IPage<PersonSupervisePlanDetailsDto> pageByDate(Page page, String date, String project, Integer planId);
+    IPage<PersonSupervisePlanDetailsDto> pageByDate(@Param("page") Page page, @Param("date") String date, @Param("project") String project, @Param("planId") Integer planId);
 
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java
index d49cbd0..f143527 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.personnel.dto.PersonSupervisionRecordDto;
 import com.ruoyi.personnel.pojo.PersonSupervisionRecord;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,7 +17,7 @@
  */
 public interface PersonSupervisionRecordMapper extends BaseMapper<PersonSupervisionRecord> {
 
-    IPage<PersonSupervisionRecordDto> personSupervisionRecordPage(Page page, Integer userId, Integer departLimsId, String userName);
+    IPage<PersonSupervisionRecordDto> personSupervisionRecordPage(Page page, @Param("userId") Integer userId, @Param("departLimsId") Integer departLimsId, @Param("userName") String userName);
 
     /**
      * 鏌ヨ鐩戠潱璁板綍璇︽儏
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java
index d631e0c..c633423 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.personnel.pojo.PersonTrackRecord;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -17,8 +18,8 @@
  */
 public interface PersonTrackRecordMapper extends BaseMapper<PersonTrackRecord> {
 
-    IPage<PersonTrackRecord> personTrackRecordSelect(Page page, String userId, String departLimsId);
+    IPage<PersonTrackRecord> personTrackRecordSelect(Page page, @Param("userId") String userId, @Param("departLimsId") String departLimsId);
 
-    List<PersonTrackRecord> personTrackRecordExport(String userId, String departLimsId);
+    List<PersonTrackRecord> personTrackRecordExport(@Param("userId") String userId, @Param("departLimsId") String departLimsId);
 
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java
index 1319c16..0298700 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java
@@ -20,12 +20,12 @@
 public interface PersonTrainingDetailedMapper extends MyBaseMapper<PersonTrainingDetailed> {
 
     IPage<PersonTrainingDetailedDto> queryTheAnnualPlanDetailsTable(Page page,
-                                                                    String trainingLecturerName,
-                                                                    String courseCode, String trainingDate,
-                                                                    Integer id,
-                                                                    Integer userId,
-                                                                    Integer loginUserId,
-                                                                    Integer state);
+                                                                    @Param("trainingLecturerName") String trainingLecturerName,
+                                                                    @Param("courseCode") String courseCode, @Param("trainingDate") String trainingDate,
+                                                                    @Param("id") Integer id,
+                                                                    @Param("userId") Integer userId,
+                                                                    @Param("loginUserId") Integer loginUserId,
+                                                                    @Param("state") Integer state);
 
     /**
      * 鏍规嵁涓昏〃id鏌ヨ璇︽儏
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java
index a10ed81..a0fe210 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java
@@ -21,9 +21,9 @@
  */
 public interface PersonTrainingRecordMapper extends BaseMapper<PersonTrainingRecord> {
 
-    List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(Integer trainingDetailedId, String userName);
+    List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(@Param("trainingDetailedId") Integer trainingDetailedId, @Param("userName") String userName);
 
-    IPage<PersonTrainingRecordListDto> personnelTrainingPersonnel(Page page, String userName, Integer userId, Integer departLimsId);
+    IPage<PersonTrainingRecordListDto> personnelTrainingPersonnel(Page page, @Param("userName") String userName, @Param("userId") Integer userId, @Param("departLimsId") Integer departLimsId);
 
     IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetails(Page page, Integer userId);
 
@@ -55,13 +55,13 @@
      * @param year
      * @return
      */
-    IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetailsOfUserIdAndYear(Page page, Integer userId, Integer year);
+    IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetailsOfUserIdAndYear(Page page, @Param("userId") Integer userId, @Param("year") Integer year);
 
     /**
      * 鏍规嵁鐢ㄦ埛id鍜屽勾浠芥煡璇汉鍛樻槑缁� 鍩硅璁板綍瀵煎嚭
      * @param userId
-     * @param trainingDate
+     * @param
      * @return
      */
-    List<TrainingRecordPersonDetailedDto> selectPersonDetailedDtosByTrainingDate(Integer userId, Integer year);
+    List<TrainingRecordPersonDetailedDto> selectPersonDetailedDtosByTrainingDate(@Param("userId") Integer userId, @Param("year") Integer year);
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java
index 2afa074..7ec0914 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.personnel.dto.PersonJobResponsibilitiesDto;
 import com.ruoyi.personnel.pojo.PersonJobResponsibilities;
+import org.apache.ibatis.annotations.Param;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -19,9 +20,9 @@
 public interface PersonJobResponsibilitiesService extends IService<PersonJobResponsibilities> {
 
     IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page,
-                                                                        String userId,
-                                                                        String departmentId,
-                                                                        String userName);
+                                                                        @Param("userId") Integer userId,
+                                                                        @Param("departmentId") String departmentId,
+                                                                        @Param("userName") String userName);
 
     void exportPersonJobResponsibilities(Integer id, HttpServletResponse response);
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java
index 4fd2df2..933f74d 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java
@@ -42,7 +42,7 @@
 
 
     @Override
-    public IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, String userId, String departmentId, String userName) {
+    public IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, Integer userId, String departmentId, String userName) {
         return baseMapper.personJobResponsibilitiesSelect(page, userId, departmentId, userName);
     }
 
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/InsOrderPlanServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InsOrderPlanServiceImpl.java
index ef9da0d..e75d5fa 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/impl/InsOrderPlanServiceImpl.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InsOrderPlanServiceImpl.java
@@ -57,6 +57,7 @@
 import com.ruoyi.inspect.service.InsUnPassService;
 import com.ruoyi.inspect.service.impl.InsOrderServiceImpl;
 import com.ruoyi.framework.util.SheetWriteHandlerUtil;
+import com.ruoyi.inspect.service.impl.InsReportServiceImpl;
 import com.ruoyi.inspect.vo.*;
 import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
 import com.ruoyi.performance.mapper.PerformanceShiftMapper;
diff --git a/inspect-server/pom.xml b/inspect-server/pom.xml
index ecadd7d..1da9deb 100644
--- a/inspect-server/pom.xml
+++ b/inspect-server/pom.xml
@@ -45,6 +45,12 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>performance-server</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>cnas-process</artifactId>
+        </dependency>
+
+
 
         <!-- poi-tl鍖呯敓鎴愭姤鍛� -->
         <dependency>
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
index 61a8a7b..44a6ab4 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -85,7 +85,7 @@
     @GetMapping("/selectOrderManDay")
     public Result<?> selectOrderManDay(Integer id) {
         int day = insProductService.selectOrderManDay(id);
-        return Result.success("鎴愬姛", LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        return Result.success(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),"鎴愬姛");
     }
 
     @ApiOperation(value = "鏌ヨ妫�楠屼笅鍗曞唴瀹硅鎯�")
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportApproveConfigController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportApproveConfigController.java
new file mode 100644
index 0000000..fbe24e2
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportApproveConfigController.java
@@ -0,0 +1,39 @@
+package com.ruoyi.inspect.controller;
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.ApproveConfigDTO;
+import com.ruoyi.inspect.service.InsReportApproveConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/approveConfig")
+@Api(tags = "鎶ュ憡瀹℃壒绛惧悕閰嶇疆")
+public class InsReportApproveConfigController {
+
+    @Autowired
+    private InsReportApproveConfigService insReportApproveConfigService;
+
+    @ApiOperation("瀹℃壒绛惧悕閰嶇疆鎸夐挳")
+    @GetMapping("/getApproveConfigList")
+    public Result getApproveConfigList(){
+        return Result.success(insReportApproveConfigService.getApproveConfigList());
+    }
+
+    @ApiOperation("鏌ヨ浜哄憳")
+    @GetMapping("/getUserList")
+    public Result getUserList(){
+        return Result.success(insReportApproveConfigService.getUserList());
+    }
+
+    @ApiOperation("鏇存柊瀹℃壒绛惧悕閰嶇疆")
+    @PostMapping("/updateApproveConfig")
+    public Result updateApproveConfig(@RequestBody ApproveConfigDTO approveConfigDTO){
+        return Result.success(insReportApproveConfigService.updateApproveConfig(approveConfigDTO));
+    }
+
+
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java
new file mode 100644
index 0000000..922213e
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java
@@ -0,0 +1,203 @@
+package com.ruoyi.inspect.controller;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.JackSonUtil;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.dto.BatchApprovalReportDTO;
+import com.ruoyi.inspect.dto.ReportPageDto;
+import com.ruoyi.inspect.pojo.InsReport;
+import com.ruoyi.inspect.service.InsReportService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.logging.log4j.util.Strings;
+import org.apache.poi.hssf.record.SSTRecord;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Scanner;
+
+@RestController
+@RequestMapping("/insReport")
+@Api(tags = "妫�楠屾姤鍛�")
+public class InsReportController {
+
+
+    @Resource
+    private InsReportService insReportService;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    @ApiOperation(value = "鏌ョ湅妫�楠屾姤鍛婂垪琛�")
+    @GetMapping("/pageInsReport")
+    public Result pageInsReport(Page page,ReportPageDto reportPageDto) throws Exception {
+        return Result.success(insReportService.pageInsReport(page, reportPageDto));
+    }
+
+
+    @ApiOperation(value = "涓�閿鎵规寜閽�")
+    @PostMapping("/batchApprovalReport")
+    public Result batchApprovalReport(@RequestBody BatchApprovalReportDTO batchApprovalReportDTO){
+        try {
+            insReportService.batchApprovalReport(batchApprovalReportDTO.getIds());
+        }catch (Exception e){
+            throw new RuntimeException(e);
+        }
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鑾峰彇瀹℃壒杩涘害")
+    @GetMapping("/getBatchApprovalProgress")
+    public Result getBatchApprovalProgress(){
+        return Result.success(insReportService.getBatchApprovalProgress());
+    }
+
+
+    @ApiOperation(value = "鏌ョ湅妫�楠屾姤鍛婃暟閲忎俊鎭�")
+    @GetMapping("/getReportCountInfo")
+    public Result getReportCountInfo(ReportPageDto reportPageDto) throws Exception {
+        return Result.success(insReportService.getReportCountInfo(reportPageDto));
+    }
+
+    @ApiOperation(value = "涓婁紶鎸夐挳")
+    @PostMapping("/inReport")
+    public Result inReport(MultipartFile file, Integer id) {
+        String urlString;
+        String pathName;
+        try {
+            String path = wordUrl;
+            File realpath = new File(path);
+            if (!realpath.exists()) {
+                realpath.mkdirs();
+            }
+            InsReport insReport = insReportService.getById(id);
+            // 濡傛灉URLS鏈夊�� 鍏堝皢璇ユ枃浠跺垹闄�
+            if(Strings.isNotEmpty(insReport.getUrlS())){
+                String url = wordUrl + File.separator + insReport.getUrlS().replace("/word/", "");
+                File file1 = new File(url);
+                if(file1.exists()) {
+                    file1.delete();
+                }
+            }
+            String code = insReport.getCode().replace("/", "") + ".docx";
+            pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + code;
+            urlString = realpath + "/" + pathName;
+            file.transferTo(new File(urlString));
+            return Result.success(insReportService.inReport("/word/" + pathName, id));
+        } catch (Exception e) {
+            throw new ErrorException("鏂囦欢涓婁紶澶辫触");
+        }
+    }
+    //涓嬭浇
+    @GetMapping("/downReport")
+    public void downReport(@RequestParam("id") Integer id,@RequestParam("type") Integer type,  HttpServletResponse response) {
+        insReportService.downReport(id,type, response);
+    }
+
+
+
+    @ApiOperation(value = "杩樺師鎸夐挳")
+    @PostMapping("/upReportUrl")
+    public Result upReportUrl(Integer id) {
+        return Result.success(insReportService.upReportUrl(id));
+    }
+
+    @ApiOperation(value = "缂栧埗鎸夐挳")
+    @GetMapping("/upReportFile")
+    public Result upReportFile() {
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鎻愪氦鎸夐挳")
+    @PostMapping("/writeReport")
+    public Result writeReport(Integer id) {
+
+        return Result.success(insReportService.writeReport(id));
+    }
+
+    @ApiOperation(value = "瀹℃牳鎸夐挳")
+    @PostMapping("/examineReport")
+    public Result examineReport(Integer id, Integer isExamine, String examineTell) {
+        return Result.success(insReportService.examineReport(id, isExamine, examineTell));
+    }
+
+    @ApiOperation(value = "鎵瑰噯鎸夐挳")
+    @PostMapping("/ratifyReport")
+    public Result ratifyReport(Integer id, Integer isRatify, String ratifyTell) {
+        return Result.success(insReportService.ratifyReport(id, isRatify, ratifyTell));
+    }
+
+    @RequestMapping("/onlyOffice/save")
+    public void saveFile(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
+        PrintWriter writer = null;
+        try {
+            writer = response.getWriter();
+            // 鑾峰彇浼犺緭鐨刯son鏁版嵁
+            Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
+            String body = scanner.hasNext() ? scanner.next() : "";
+            JSONObject jsonObject = JSONObject.parseObject(body);
+
+            if (jsonObject.containsKey("url")) {
+                String jsonArray = jsonObject.get("lastsave").toString(); // 鏇存柊鏃堕棿
+                String fileUrl = jsonObject.get("url").toString(); // 鏇存柊鏂囦欢url
+                HttpUtil.downloadFile(fileUrl, FileUtil.file(wordUrl + "/" + fileName));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            writer.write("{\"error\":-1}");
+            return;
+        }
+        /*
+         * status = 1锛屾垜浠粰onlyOffice鐨勬湇鍔¤繑鍥瀧"error":"0"}鐨勪俊鎭��
+         * 杩欐牱onlyOffice浼氳涓哄洖璋冩帴鍙f槸娌¢棶棰樼殑锛岃繖鏍峰氨鍙互鍦ㄧ嚎缂栬緫鏂囨。浜嗭紝鍚﹀垯鐨勮瘽浼氬脊鍑虹獥鍙h鏄�
+         */
+        if (Objects.nonNull(writer)) {
+            writer.write("{\"error\":0}");
+        }
+    }
+
+    @ApiOperation(value = "鎵归噺涓嬭浇鎸夐挳")
+    @GetMapping("/downAll")
+    public Result downAll(String ids) {
+        return Result.success(insReportService.downAll(ids));
+    }
+
+    @ApiOperation(value = "鎵归噺涓婁紶鎸夐挳")
+    @PostMapping("/upAll")
+    public Result upAll(MultipartFile file) throws IOException {
+        return Result.success(insReportService.upAll(file));
+    }
+
+    @ApiOperation(value = "鎾ゅ洖鎸夐挳")
+    @PostMapping("/withdraw")
+    public Result withdraw(@RequestBody Map<String,Object> map) {
+        insReportService.withdraw(map);
+        return  Result.success();
+    }
+
+    @GetMapping("/getLaboratoryByReportId")
+    public Result getLaboratoryByReportId(Integer id) {
+        return Result.success(insReportService.getLaboratoryByReportId(id));
+    }
+
+
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ProcessReport.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ProcessReport.java
deleted file mode 100644
index b88c923..0000000
--- a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ProcessReport.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.ruoyi.inspect.pojo;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
-/**
- * <p>
- * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃
- * </p>
- *
- * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
- * @since 2024-11-05 08:58:39
- */
-@Getter
-@Setter
-@TableName("cnas_process_report")
-@ApiModel(value = "ProcessReport瀵硅薄", description = "妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃")
-public class ProcessReport implements Serializable {
-
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty("妫�楠屾姤鍛婄紪鍙�")
-    private String insReportCode;
-
-    @ApiModelProperty("椤垫暟")
-    private String pages;
-
-    @ApiModelProperty("鍙戦�佷唤鏁�")
-    private String number;
-
-    @ApiModelProperty("鍙戝線浣曞")
-    private String send;
-
-    @ApiModelProperty("鍙戦�佹柟寮�")
-    private String method;
-
-    @ApiModelProperty("鍙戦�佹棩鏈�")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDate sendTime;
-
-    @ApiModelProperty("鍙戦�佷汉")
-    private Integer sendUser;
-
-    @ApiModelProperty("鍙戦�佷汉鍚嶇О")
-    @TableField(select = false,exist = false)
-    private String sendUserName;
-
-    @ApiModelProperty("绛炬敹浜�")
-    private String signatory;
-
-    @TableField(select = false,exist = false)
-    private String signatoryUrl;
-
-    @ApiModelProperty("绛炬敹浜哄悕绉�")
-    @TableField(select = false,exist = false)
-    private String signatoryName;
-
-    @ApiModelProperty("澶囨敞")
-    private String remark;
-
-    @TableField(fill = FieldFill.INSERT)
-    private Integer createUser;
-
-    @TableField(fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
-
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private Integer updateUser;
-
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
-}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportApproveConfigService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportApproveConfigService.java
new file mode 100644
index 0000000..ec87c5a
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportApproveConfigService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.dto.ApproveConfigDTO;
+import com.ruoyi.inspect.pojo.InsReportApproveConfig;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 27233
+ * @description 閽堝琛ㄣ�恑ns_report_approve_config(鎶ュ憡瀹℃壒绛惧悕閰嶇疆)銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2024-12-10 09:36:10
+ */
+public interface InsReportApproveConfigService extends IService<InsReportApproveConfig> {
+
+    List<InsReportApproveConfig> getApproveConfigList();
+
+    InsReportApproveConfig getApproveConfigByLaboratory(String laboratory);
+
+    Map<String, List<Map<String,Object>>> getUserList();
+
+    boolean updateApproveConfig(ApproveConfigDTO approveConfigDTO);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/InsReportService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java
similarity index 88%
rename from cnas-require/src/main/java/com/ruoyi/require/service/InsReportService.java
rename to inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java
index d20a231..1b1095c 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/InsReportService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java
@@ -1,4 +1,4 @@
-package com.ruoyi.require.service;
+package com.ruoyi.inspect.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,10 +13,10 @@
 import java.util.Map;
 
 /**
-* @author Administrator
-* @description 閽堝琛ㄣ�恑ns_report(妫�楠屾姤鍛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
-* @createDate 2024-03-17 22:10:02
-*/
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恑ns_report(妫�楠屾姤鍛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2024-03-17 22:10:02
+ */
 public interface InsReportService extends IService<InsReport> {
 
     IPage<ReportPageDto> pageInsReport(Page page, ReportPageDto reportPageDto);
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportApproveConfigServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportApproveConfigServiceImpl.java
new file mode 100644
index 0000000..8ccc3f3
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportApproveConfigServiceImpl.java
@@ -0,0 +1,92 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.inspect.dto.ApproveConfigDTO;
+import com.ruoyi.inspect.mapper.InsOrderMapper;
+import com.ruoyi.inspect.mapper.InsReportApproveConfigMapper;
+import com.ruoyi.inspect.pojo.InsReportApproveConfig;
+import com.ruoyi.inspect.service.InsReportApproveConfigService;
+import com.ruoyi.system.mapper.UserMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author 27233
+ * @description 閽堝琛ㄣ�恑ns_report_approve_config(鎶ュ憡瀹℃壒绛惧悕閰嶇疆)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2024-12-10 09:36:10
+ */
+@Service
+public class InsReportApproveConfigServiceImpl extends ServiceImpl<InsReportApproveConfigMapper, InsReportApproveConfig>
+        implements InsReportApproveConfigService {
+
+
+    @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
+    private InsOrderMapper insOrderMapper;
+
+    @Override
+    public List<InsReportApproveConfig> getApproveConfigList() {
+        Integer userId = Integer.parseInt(SecurityUtils.getUserId()+"");
+        User user = userMapper.selectById(userId);//褰撳墠鐧诲綍鐨勪汉
+        //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
+        String departLimsId = user.getDepartLimsId();
+        String laboratory = null;
+        if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.isEmpty()) {
+            String[] split = departLimsId.split(",");
+            //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
+            String departLims = insOrderMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
+            if (departLims.contains("瀹為獙瀹�")) {
+                laboratory = departLims;
+            }
+        }
+        return baseMapper.selectList(Wrappers.<InsReportApproveConfig>lambdaQuery()
+                .eq(StringUtils.isNotBlank(laboratory),InsReportApproveConfig::getLaboratory,laboratory));
+    }
+
+    @Override
+    public InsReportApproveConfig getApproveConfigByLaboratory(String laboratory) {
+        return baseMapper.selectOne(Wrappers.<InsReportApproveConfig>lambdaQuery()
+                .eq(StringUtils.isNotBlank(laboratory),InsReportApproveConfig::getLaboratory,laboratory));
+    }
+
+    @Override
+    public Map<String, List<Map<String,Object>>> getUserList() {
+        //鏌ヨ閫氫俊鍜岀數鍔涗笅鐨勪汉鍛樹俊鎭�
+        //鏌ヨ褰撳墠鐧诲綍浜哄憳鐨勬灦鏋�
+        Integer userId = Integer.parseInt(SecurityUtils.getUserId()+"");
+        //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄�
+        User user = userMapper.selectById(userId);//褰撳墠鐧诲綍鐨勪汉
+        //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
+        String laboratory = "";
+        String departLimsId = user.getDepartLimsId();
+        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(departLimsId)) {
+            String[] split = departLimsId.split(",");
+            //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
+            String departLims = userMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
+            if (departLims.contains("瀹為獙瀹�")) {
+                laboratory = departLims;
+            }
+        }
+        return userMapper.getPersonList(laboratory).stream().collect(Collectors.groupingBy(m->m.get("depName").toString()));
+    }
+
+    @Override
+    public boolean updateApproveConfig(ApproveConfigDTO approveConfigDTO) {
+        if(!approveConfigDTO.getConfigList().isEmpty()){
+            approveConfigDTO.getConfigList().forEach(config->baseMapper.updateById(config));
+            return true;
+        }
+        throw new RuntimeException("鏇存柊澶辫触");
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
similarity index 88%
rename from cnas-require/src/main/java/com/ruoyi/require/service/impl/InsReportServiceImpl.java
rename to inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
index f6aea28..e7a5ed2 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -1,10 +1,8 @@
-package com.ruoyi.require.service.impl;
+package com.ruoyi.inspect.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
-import com.aspose.words.Document;
-import com.aspose.words.License;
-import com.aspose.words.SaveFormat;
+import com.aspose.words.*;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -33,9 +31,9 @@
 import com.ruoyi.inspect.pojo.InsOrder;
 import com.ruoyi.inspect.pojo.InsOrderState;
 import com.ruoyi.inspect.pojo.InsReport;
+import com.ruoyi.inspect.service.InsReportService;
 import com.ruoyi.process.mapper.ProcessReportMapper;
 import com.ruoyi.process.pojo.ProcessReport;
-import com.ruoyi.require.service.InsReportService;
 import com.ruoyi.system.mapper.UserMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -64,6 +62,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Collectors;
@@ -80,6 +79,7 @@
 @Slf4j
 public class InsReportServiceImpl extends ServiceImpl<InsReportMapper, InsReport>
         implements InsReportService {
+
 
     @Resource
     private UserMapper userMapper;
@@ -118,7 +118,6 @@
 
     @Override
     public IPage<ReportPageDto> pageInsReport(Page page, ReportPageDto reportPageDto) {
-        Map<String, Object> map = new HashMap<>();
         User user = userMapper.selectById(SecurityUtils.getUserId());//褰撳墠鐧诲綍鐨勪汉
         //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
         String departLimsId = user.getDepartLimsId();
@@ -136,8 +135,10 @@
             wrapper.gt(reportPageDto.getCreateTimeRange().size()>1,"create_time",reportPageDto.getCreateTimeRange().get(0))
                     .lt(reportPageDto.getCreateTimeRange().size()>1,"create_time",reportPageDto.getCreateTimeRange().get(1));
         }
-        return insReportMapper.pageInsReport(page, wrapper ,laboratory);
+        IPage<ReportPageDto> iPage = insReportMapper.pageInsReport(page, wrapper, laboratory);
+        return iPage;
     }
+
 
     @Override
     public int inReport(String url, Integer id) {
@@ -168,7 +169,7 @@
         String url = "";
         // 0 涓嬭浇docx 1 涓嬭浇pdf
         if(type == 0) {
-          url  = Strings.isNotEmpty(insReport.getUrlS()) ? insReport.getUrlS() : insReport.getUrl();
+            url  = Strings.isNotEmpty(insReport.getUrlS()) ? insReport.getUrlS() : insReport.getUrl();
         }else {
             url = insReport.getTempUrlPdf();
         }
@@ -210,11 +211,11 @@
         insReport.setId(id);
         insReport.setState(1);
         insReport.setWriteTime(LocalDateTime.now());//鎻愪氦鏃堕棿
-        insReport.setWriteUserId(SecurityUtils.getUserId().intValue());//鎻愪氦浜�
+        insReport.setWriteUserId(Integer.getInteger(SecurityUtils.getUserId().toString()));//鎻愪氦浜�
         //鑾峰彇鎻愪氦浜虹殑绛惧悕鍦板潃
         String signatureUrl;
         try {
-            signatureUrl = userMapper.selectById(SecurityUtils.getUserId().intValue()).getSignatureUrl();
+            signatureUrl = userMapper.selectById(Integer.getInteger(SecurityUtils.getUserId().toString())).getSignatureUrl();
         } catch (Exception e) {
             throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
         }
@@ -239,7 +240,7 @@
         if (ObjectUtils.isNotEmpty(examineTell)) {
             insReport.setExamineTell(examineTell);
         }
-        insReport.setExamineUserId(SecurityUtils.getUserId().intValue());//瀹℃牳浜�
+        insReport.setExamineUserId(Integer.getInteger(SecurityUtils.getUserId().toString()));//瀹℃牳浜�
         insReport.setExamineTime(LocalDateTime.now());//瀹℃牳鏃堕棿
         if (isExamine == 0) {
             //濡傛灉瀹℃牳涓嶉�氳繃
@@ -275,7 +276,7 @@
         if (ObjectUtils.isNotEmpty(ratifyTell)) {
             insReport.setRatifyTell(ratifyTell);
         }
-        insReport.setRatifyUserId(SecurityUtils.getUserId().intValue());//鎵瑰噯浜�
+        insReport.setRatifyUserId(Integer.getInteger(SecurityUtils.getUserId().toString()));//鎵瑰噯浜�
         insReport.setRatifyTime(LocalDateTime.now());//鎵瑰噯鏃堕棿
         if (isRatify == 0) {
             //濡傛灉鎵瑰噯涓嶉�氳繃
@@ -415,70 +416,6 @@
             }
             inReport("/word/" + pathName, insReport.getId());
         }
-//        File tempFile = null;
-//        File unzipDir = null;
-//        try {
-//            tempFile = File.createTempFile(wordUrl, ".zip");
-//            file.transferTo(tempFile);
-//
-//            unzipDir = new File("uploaded_files");
-//            if (!unzipDir.exists()) {
-//                unzipDir.mkdir();
-//            }
-//            unzip(tempFile, unzipDir);
-//            // 澶勭悊瑙e帇鍚庣殑鏂囦欢
-//            File[] files = unzipDir.listFiles();
-//            if (files != null) {
-//                for (File f : files) {
-//                    // 鏍规嵁鏂囦欢鍚嶆煡璇d
-//                    String name = f.getName();
-//                    String code = f.getName().replace(".docx", "").replace("JCZX", "JCZX/");
-//                    if(f.getName().lastIndexOf("_") != -1) {
-//                        code = code.substring(f.getName().lastIndexOf("_") + 1);
-//                    }
-//                    //InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().eq(InsReport::getCode, f.getName().replace(".docx", "").replace("JCZX", "JCZX/")));
-//                    InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().eq(InsReport::getCode, code));
-//                    if (ObjectUtils.isEmpty(insReport)) {
-//                        throw new ErrorException("娌℃湁鎵惧埌 " + f.getName() + " 杩欎釜鏂囦欢瀵瑰簲鐨勬姤鍛婃暟鎹�");
-//                    }
-//                    // 濡傛灉UrlS鏈夊�� 鍏堝皢璇ユ枃浠跺垹闄�
-//                    if(Strings.isNotEmpty(insReport.getUrlS())) {
-//                        String url = wordUrl + File.separator + insReport.getUrlS().replace("/word/", "");
-//                        File file1 = new File(url);
-//                        if(file1.exists()) {
-//                            file1.delete();
-//                        }
-//                    }
-//                    String urlString;
-//                    String pathName;
-//                    try {
-//                        String path = wordUrl;
-//                        File realpath = new File(path);
-//                        if (!realpath.exists()) {
-//                            realpath.mkdirs();
-//                        }
-//                        pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + insReport.getCode().replace("/", "") + ".docx";
-//                        urlString = realpath + "/" + pathName;
-//                        // 澶嶅埗鏂囦欢鍒版寚瀹氳矾寰�
-//                        Files.copy(f.toPath(), new File(urlString).toPath(), StandardCopyOption.REPLACE_EXISTING);
-//                        inReport("/word/" + pathName, insReport.getId());
-//                    }
-//                    catch (IOException e) {
-//                        throw new ErrorException("鏂囦欢涓婁紶澶辫触");
-//                    }
-//                }
-//            }
-//        } catch (IOException e) {
-//            throw new ErrorException("鏂囦欢澶勭悊澶辫触");
-//        } finally {
-//            if (tempFile != null && tempFile.exists()) {
-//                tempFile.delete();
-//            }
-//            // 閫掑綊鍒犻櫎瑙e帇鐩綍鍙婂叾涓殑鏂囦欢
-//            if (unzipDir.exists()) {
-//                deleteDirectory(unzipDir); // 鍒犻櫎鏃х殑涓存椂鏂囦欢澶�
-//            }
-//        }
         return 0;
     }
 
@@ -506,7 +443,7 @@
         List<Map<String, Object>> list = new ArrayList<>();
         Integer insOrderId = insReportMapper.selectById(id).getInsOrderId();
         insOrderStateMapper.selectList(new LambdaQueryWrapper<InsOrderState>()
-                .eq(InsOrderState::getInsOrderId,insOrderId))
+                        .eq(InsOrderState::getInsOrderId,insOrderId))
                 .forEach(insOrderState -> {
                     Map<String, Object> map = new HashMap<>();
                     map.put("label",insOrderState.getLaboratory());
@@ -547,7 +484,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void batchApprovalReport(List<Integer> ids) {
         redisTemplate.setKeySerializer(new StringRedisSerializer());
-        Integer userId = SecurityUtils.getUserId().intValue();
+        Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
         String key = SYNC_REPORT_KEY_PREFIX+userId;
         //鎵ц鍓嶅垹闄や箣鍓嶇殑keys
         deleteRedisKeys(key);
@@ -676,7 +613,7 @@
 
     @Override
     public Map<String, Object> getBatchApprovalProgress() {
-        Integer userId = SecurityUtils.getUserId().intValue();
+        Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
         String key = SYNC_REPORT_KEY_PREFIX + userId;
         Map<String, Object> map = new HashMap<>();
         map.put("hasProgress",false);
@@ -790,7 +727,7 @@
             file = new File(pdfPath);
             os = new FileOutputStream(file);
             //瑕佽浆鎹㈢殑word鏂囦欢
-            Document doc = new Document(wordPath);
+            com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
             doc.save(os, SaveFormat.PDF);
             String name = file.getName();
             return file.getName();
diff --git a/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml b/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
index c8ff49e..55779b3 100644
--- a/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
+++ b/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
@@ -110,8 +110,9 @@
 
     <select id="performanceShiftList" resultMap="performanceShiftPageMap">
         SELECT
-        if(u.department is not null and u.department != '', CONCAT(u.name, '锛�', u.department, '锛�'), u.name) name,
-        GROUP_CONCAT(s.work_time, '锛�', s.shift, '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time, u.id user_id, u.department
+        <!--if(u.department is not null and u.department != '', CONCAT(u.name, '锛�', u.department, '锛�'), u.name) name,-->
+            u.name name,
+        GROUP_CONCAT(s.work_time, '锛�', s.shift, '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time, u.id user_id, u.dept_id
         FROM performance_shift s
         LEFT JOIN user u on u.id = s.user_id
         <where>
@@ -124,8 +125,8 @@
             <if test="laboratory != null and laboratory != ''">
             </if>
         </where>
-        order by s.create_time
         GROUP BY u.id
+        order by s.create_time
     </select>
 
     <select id="seldepLimsId" resultType="java.lang.String">
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/MinioConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/MinioConfig.java
index 28f489f..a573ff6 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/MinioConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/MinioConfig.java
@@ -17,6 +17,7 @@
     private String accessKey;
     private String secretKey;
     private Boolean secure;
+    private String bucketName;
 
     @Bean
     public MinioClient getMinioClient() {
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java
index 2703c59..7b6861d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java
@@ -54,6 +54,10 @@
         return restResult(data, FAIL, "鎿嶄綔澶辫触");
     }
 
+    public static <T> Result<T> fail(Integer code){
+        return restResult(null, code,"fail");
+    }
+
     public static <T> Result<T> fail(T data, String msg)
     {
         return restResult(data, FAIL, msg);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/pojo/AttachmentTable.java b/ruoyi-common/src/main/java/com/ruoyi/common/pojo/AttachmentTable.java
new file mode 100644
index 0000000..577c6cb
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/pojo/AttachmentTable.java
@@ -0,0 +1,36 @@
+package com.ruoyi.common.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@TableName("attachment_table")
+public class AttachmentTable {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鍏朵粬琛ㄧ粦瀹歩d")
+    private Integer subclassId;
+
+    @ApiModelProperty("鏂囦欢鍚嶇О")
+    private String fileName;
+
+    @ApiModelProperty("鏂囦欢绫诲瀷")
+    private String fileType;
+
+    @ApiModelProperty("鏂囦欢鍘熷悕绉�")
+    private String originalFileName;
+
+    @ApiModelProperty("妗跺悕")
+    private String bucketName;
+
+    @ApiModelProperty("鎵�鍦ㄦā鍧楀悕绉�")
+    private String moduleName;
+
+    @ApiModelProperty("鍏朵粬琛ㄥ悕")
+    private String otherTableName;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java
index a463ca3..5f7d242 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java
@@ -51,6 +51,8 @@
 
     String seldepLimsId(int depLimsId);
 
+    List<Map<String,Object>> getPersonList(String laboratory);
+
     List<Map<String, Object>> getLaboratoryPersonList(String laboratory);
 }
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
index d6d1d60..cc58d84 100644
--- a/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
@@ -83,11 +83,6 @@
         from user u left join custom c on u.company = c.id
         where u.id = #{userId}
     </select>
-    <select id="seldepLimsId" resultType="java.lang.String">
-        select name
-        from department_lims
-        where id = #{depLimsId}
-    </select>
     <select id="getLaboratoryPersonList" resultType="java.util.Map">
         select
         u.id,
@@ -107,4 +102,28 @@
             and dl.name = #{laboratory}
         </if>
     </select>
+    <select id="seldepLimsId" resultType="java.lang.String">
+        select name
+        from department_lims
+        where id = #{depLimsId}
+    </select>
+    <select id="getPersonList" resultType="java.util.Map">
+        select
+        u.id,
+        u.name,
+        dl.name as depName
+        from
+        user u
+        left join
+        department_lims dl
+        on
+        FIND_IN_SET(dl.id,u.depart_lims_id)
+        where
+        dl.name in('閫氫俊浜у搧瀹為獙瀹�','鐢靛姏浜у搧瀹為獙瀹�','妫�娴嬪姙')
+        and u.status = 1
+        and u.is_custom = 0
+        <if test="laboratory!='' and laboratory!=null">
+            and (dl.name = #{laboratory} or dl.name='妫�娴嬪姙')
+        </if>
+    </select>
 </mapper>

--
Gitblit v1.9.3