From 99755eea33cf009c36507df468c244f3be5b34c9 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期五, 28 二月 2025 17:27:31 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-after into dev_cr

---
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java                   |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java            |   32 +
 basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java                  |    2 
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java                       |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java                            |    6 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java               |   59 ++
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java            |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java                    |   26 -
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java                            |    5 
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java                 |    3 
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java           |   29 -
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java  |    1 
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java     |    1 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java                               |   23 
 basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java                   |    6 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java    |    3 
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java            |    1 
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java                       |   10 
 performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java    |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java             |  299 +++++++-------
 inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java                          |    7 
 ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java                                        |    6 
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java           |    1 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java                          |    7 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java           |    2 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java             |    2 
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java                         |   12 
 inspect-server/src/main/resources/mapper/InsProductMapper.xml                                        |    8 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java               |    4 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java       |    4 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java                |   10 
 ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java                                        |    9 
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java           |    1 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java                       |   15 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java        |    3 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java                   |    5 
 cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java        |    1 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java           |    8 
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java                     |    1 
 cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml                                    |   11 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java                       |   30 +
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                                          |  148 -------
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java                 |  100 ----
 inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java                     |   25 +
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java                 |   92 ++++
 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java                                 |   12 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java              |   14 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java               |   67 +-
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java                             |    3 
 /dev/null                                                                                            |   14 
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java          |    4 
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java                               |   72 +++
 53 files changed, 601 insertions(+), 617 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
index a18e4a1..3e84287 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
@@ -61,7 +61,7 @@
 
     @ApiOperation(value = "鑾峰彇椤圭洰妫�楠屽弬鏁板垪琛�")
     @GetMapping("/selectItemParameterList")
-    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) throws Exception {
+    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) {
         return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter));
     }
 
@@ -85,7 +85,7 @@
 
     @ApiOperation(value = "鑾峰彇妫�楠屽璞�")
     @GetMapping("/selectTestObjectList")
-    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) throws Exception {
+    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) {
         return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto));
     }
 
@@ -121,7 +121,7 @@
 
     @ApiOperation(value = "缁存姢妫�楠屽璞$殑浜у搧")
     @GetMapping("/selectProductListByObjectId")
-    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) throws Exception {
+    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) {
         return Result.success(productService.selectProductListByObjectId(page, productDTO));
     }
 
diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java
index 47dc8a2..27d106b 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java
@@ -22,7 +22,7 @@
 
     @ApiOperation(value = "鑾峰彇鏍囧噯鏂规硶鍒楄〃")
     @GetMapping("/selectStandardMethodList")
-    public Result selectStandardMethodList(Page page,StandardMethod standardMethod) throws Exception {
+    public Result selectStandardMethodList(Page page,StandardMethod standardMethod)  {
         return Result.success(standardMethodService.selectStandardMethodList(page, standardMethod));
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java
index 37aed61..8523011 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java
@@ -81,8 +81,8 @@
      * @return
      */
     @ApiOperation(value = "璁惧鏍″噯璁″垝鍒犻櫎")
-    @DeleteMapping("/delQualitySupervise")
-    public Result delQualitySupervise(Integer planId){
+    @DeleteMapping("/delDeviceCalibrationPlan")
+    public Result delDeviceCalibrationPlan(Integer planId){
         return Result.success(deviceCalibrationPlanService.removeById(planId));
     }
 
@@ -122,7 +122,7 @@
      * @return
      */
     @ApiOperation(value = "璁惧鏍″噯璁″垝璇︽儏鍒楄〃")
-    @PostMapping("/pageDeviceCalibrationPlanDetail")
+    @GetMapping("/pageDeviceCalibrationPlanDetail")
     public Result<IPage<DeviceCalibrationPlanDetail>> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) {
         return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlanDetail(page, deviceCalibrationPlanDetails));
     }
@@ -155,7 +155,7 @@
      * @return
      */
     @ApiOperation(value = "鍒犻櫎璁惧鏍″噯璁″垝璇︽儏")
-    @GetMapping("/delDeviceCalibrationPlanDetail")
+    @DeleteMapping("/delDeviceCalibrationPlanDetail")
     public Result delDeviceCalibrationPlanDetail(Integer planDetailsId){
         return Result.success(deviceCalibrationPlanDetailService.removeById(planDetailsId));
     }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java
new file mode 100644
index 0000000..6cfe1a7
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java
@@ -0,0 +1,92 @@
+package com.ruoyi.device.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.device.pojo.DeviceDocuments;
+import com.ruoyi.device.service.DeviceDocumentsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+
+/**
+ * 璁惧妗f鏂囨。
+ *
+ * @author zhuo
+ * @since 2025-02-28
+ */
+@RestController
+@Api(tags = "璁惧妗f鏂囨。")
+@RequestMapping("/deviceDocuments")
+public class DeviceDocumentsController {
+
+    @Resource
+    private DeviceDocumentsService deviceDocumentsService;
+
+
+    /**
+     * 鏂板璁惧妗f
+     * @param document
+     * @return
+     */
+    @ApiOperation(value = "鏂板璁惧妗f")
+    @PostMapping("/addDocument")
+    public Result addDocument(@RequestBody DeviceDocuments document) {
+        if (document.getDeviceId() == null) {
+            throw new RuntimeException("璁惧id涓虹┖");
+        }
+        deviceDocumentsService.save(document);
+        return Result.success();
+    }
+
+    /**
+     * 鏌ヨ璁惧妗f淇℃伅
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ璁惧妗f淇℃伅")
+    @GetMapping("/getDocumentById")
+    public Result getDocumentById(Integer id) {
+        return Result.success(deviceDocumentsService.getById(id));
+    }
+
+    /**
+     * 淇敼璁惧妗f
+     * @param document
+     * @return
+     */
+    @ApiOperation(value = "淇敼璁惧妗f")
+    @PostMapping("/updateDocument")
+    public Result updateDocument(@RequestBody DeviceDocuments document) {
+        return Result.success(deviceDocumentsService.updateById(document));
+    }
+
+    /**
+     * 鍒犻櫎璁惧妗f
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎璁惧妗f")
+    @DeleteMapping("/deleteDocumentById")
+    public Result deleteDocumentById(Integer id) {
+        return Result.success(deviceDocumentsService.removeById(id));
+    }
+
+    /**
+     * 鏌ヨ璁惧妗f鍒楄〃
+     * @param deviceId
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ璁惧妗f鍒楄〃")
+    @GetMapping("/getAllDocuments")
+    public Result getAllDocuments(Integer deviceId) {
+        LambdaQueryWrapper<DeviceDocuments> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(DeviceDocuments::getDeviceId, deviceId);
+        return Result.success(deviceDocumentsService.list(lambdaQueryWrapper));
+    }
+
+}
+
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
index b139e97..6e76125 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
@@ -90,8 +90,8 @@
      * @return
      */
     @ApiOperation(value = "璁惧鏍告煡璁″垝鍒犻櫎")
-    @DeleteMapping("/delQualitySupervise")
-    public Result delQualitySupervise(Integer planId){
+    @DeleteMapping("/delDeviceExaminePlan")
+    public Result delDeviceExaminePlan(Integer planId){
         return Result.success(deviceExaminePlanService.removeById(planId));
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java
index 88518a7..c52361d 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java
@@ -55,7 +55,7 @@
      * @return
      */
     @ApiOperation(value = "鍒犻櫎鍒╃敤澶栭儴璁惧鐢宠")
-    @GetMapping("/delDeviceExternalApply")
+    @DeleteMapping("/delDeviceExternalApply")
     public Result delDeviceExternalApply(Integer externalApplyId){
         return Result.success(deviceExternalApplyService.removeById(externalApplyId));
     }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
index 9420f41..a7bf0df 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -9,6 +9,7 @@
 import com.ruoyi.device.excel.DeviceMaintenanceExport;
 import com.ruoyi.device.pojo.DeviceMaintenance;
 import com.ruoyi.device.service.DeviceMaintenanceService;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.VerticalAlignment;
@@ -26,7 +27,8 @@
  * todo: 瀛欐渤婊�
  */
 @RestController
-@RequestMapping("/device-maintain")
+@Api(tags = "璁惧缁存姢淇濆吇")
+@RequestMapping("/deviceMaintain")
 public class DeviceMaintenanceController {
 
     @Autowired
@@ -34,9 +36,15 @@
 
     @Autowired
     private NumberGenerator<DeviceMaintenance> numberGenerator;
-    //澧�
-    @PostMapping()
-    public Result create(@RequestBody DeviceMaintenance deviceMaintenance){
+
+    /**
+     * 鏂板璁惧缁存姢淇濆吇
+     * @param deviceMaintenance
+     * @return
+     */
+    @ApiOperation(value = "鏂板璁惧缁存姢淇濆吇")
+    @PostMapping("/addDeviceMaintenance")
+    public Result addDeviceMaintenance(@RequestBody DeviceMaintenance deviceMaintenance){
         String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
         String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
         String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceMaintenance::getDeviceNumber);
@@ -44,32 +52,29 @@
         return Result.success(deviceMaintenanceService.save(deviceMaintenance));
     }
 
-    //閫氳繃deviceId鏌ヨ缁存姢鏁版嵁
+    /**
+     * 閫氳繃璁惧id鏌ヨ璁惧缁存姢淇濆吇淇℃伅
+     * @param deviceId
+     * @param page
+     * @param deviceNumber
+     * @return
+     */
+    @ApiOperation(value = "閫氳繃璁惧id鏌ヨ璁惧缁存姢淇濆吇淇℃伅")
     @GetMapping("/getDeviceMaintenancePage")
     public Result getDeviceMaintenancePage(@RequestParam("deviceId") Integer deviceId, Page page, String deviceNumber){
         return Result.success(deviceMaintenanceService.getDeviceMaintenancePage(page, deviceId, deviceNumber));
     }
 
-    //鍒�
-    @DeleteMapping("/delete/{id}")
-    public void deleteDeviceFault(@PathVariable Integer id) {
+    /**
+     * 鍒犻櫎璁惧缁存姢淇濆吇
+     * @param id
+     */
+    @ApiOperation(value = "鏂板璁惧缁存姢淇濆吇")
+    @DeleteMapping("/deleteDeviceMaintenance")
+    public void deleteDeviceMaintenance(@PathVariable Integer id) {
         deviceMaintenanceService.removeById(id);
     }
 
-    @GetMapping("/deviceMaintenanceExport")
-    public Result deviceMaintenanceExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws IOException {
-        List<DeviceMaintenanceExport> list = deviceMaintenanceService.deviceMaintenanceExport(deviceId);
-        response.setHeader("requestType","excel");
-        response.setHeader("Access-Control-Expose-Headers", "requestType");
-        // 璁剧疆鍗曞厓鏍兼牱寮�
-        // 淇濆瓨鍒扮涓�涓猻heet涓�
-        EasyExcel.write(response.getOutputStream())
-                .head(DeviceMaintenanceExport.class)
-                .registerWriteHandler(getHorizontalCellStyleStrategy((short) 12))
-                .sheet()
-                .doWrite(list);
-        return Result.success();
-    }
 
     @ApiOperation(value = "璁惧缁存姢璁板綍瀵煎嚭")
     @GetMapping("/exportMaintenanceRecord")
@@ -77,22 +82,4 @@
         deviceMaintenanceService.exportMaintenanceRecord(deviceId, response);
     }
 
-    /**
-     * 鍗曞厓鏍兼牱寮忕瓥鐣�
-     */
-    public static HorizontalCellStyleStrategy getHorizontalCellStyleStrategy(Short fontHeightInPoints) {
-        // 鍐呭鐨勭瓥鐣�
-        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
-
-        // 銆愭按骞冲眳涓渶瑕佷娇鐢ㄤ互涓嬩袱琛屻��
-        // 璁剧疆鏂囧瓧宸﹀彸灞呬腑
-        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
-        // 璁剧疆鏂囧瓧涓婁笅灞呬腑
-        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
-        // 璁剧疆 鑷姩鎹㈣
-        contentWriteCellStyle.setWrapped(true);
-
-        // 鏍峰紡绛栫暐
-        return new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
-    }
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
index 4052858..f7b9e83 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
@@ -36,7 +36,7 @@
      */
     @ApiOperation("鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝")
     @GetMapping("selectDeviceMaintenancePlanByPage")
-    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto itemParameter){
+    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto itemParameter){
         return deviceMaintenancePlanService.selectDeviceMaintenancePlanByPage(page, itemParameter);
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
index b506a92..be5fa5a 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.device.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
 import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
@@ -33,7 +34,7 @@
      */
     @ApiOperation("鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�")
     @GetMapping("selectDeviceTraceabilityManagementByPage")
-    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter){
+    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(Page page, DeviceTraceabilityManagementDto itemParameter){
         return deviceTraceabilityManagementService.selectDeviceTraceabilityManagementByPage(page, itemParameter);
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java
new file mode 100644
index 0000000..e786646
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java
@@ -0,0 +1,12 @@
+package com.ruoyi.device.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.device.pojo.DeviceDocuments;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 璁惧妗f
+ */
+@Mapper
+public interface DeviceDocumentsMapper extends BaseMapper<DeviceDocuments> {
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
index 0297885..b4cbdfb 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
@@ -13,8 +13,5 @@
  */
 @Mapper
 public interface DeviceMaintenanceMapper extends BaseMapper<DeviceMaintenance> {
-    List<DeviceMaintenance> getDeviceMaintenanceParam();
 
-
-    List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
index f790162..eb9cd0a 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
 import com.ruoyi.device.pojo.DeviceMaintenancePlan;
 import org.apache.ibatis.annotations.Param;
@@ -23,7 +24,7 @@
      * @param queryWrappers 鏌ヨ鏉′欢
      * @return
      */
-    IPage<DeviceMaintenancePlan> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
+    IPage<DeviceMaintenancePlan> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
 
     /**
      * 鏍规嵁淇濆吇璁″垝id鏌ヨ璁惧淇濆吇璁″垝
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
index f2a4e58..66e47cf 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.device.dto.DeviceRecordDto;
 import com.ruoyi.device.pojo.DeviceRecord;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -18,7 +19,7 @@
  */
 public interface DeviceRecordMapper extends BaseMapper<DeviceRecord> {
 
-    IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber, Integer userId);
+    IPage<DeviceRecordDto> deviceRecordPage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("sampleCode") String sampleCode, @Param("managementNumber") String managementNumber, @Param("userId") Integer userId);
 
 
     /**
@@ -33,5 +34,5 @@
      * @param exportDate
      * @return
      */
-    List<DeviceRecord> selectExportList(Integer deviceId, String exportDate);
+    List<DeviceRecord> selectExportList(@Param("deviceId") Integer deviceId, @Param("exportDate") String exportDate);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java
index db96d63..ea33e6b 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.device.dto.DeviceStateDto;
 import com.ruoyi.device.pojo.DeviceState;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,5 +17,5 @@
  */
 public interface DeviceStateMapper extends BaseMapper<DeviceState> {
 
-    IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber);
+    IPage<DeviceStateDto> getDeviceStatePage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("processNumber") String processNumber);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java
index 6153899..12b5fbb 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java
@@ -23,7 +23,7 @@
      * @param queryWrappers
      * @return
      */
-    IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> queryWrappers);
+    IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> ew);
 
     /**
      * 鏍规嵁id鏌ヨ璁惧閲忓�兼函婧愯鍒�
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DocumentMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DocumentMapper.java
deleted file mode 100644
index d2fc7d0..0000000
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DocumentMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.ruoyi.device.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.device.pojo.Document;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 璁惧妗f
- */
-@Mapper
-public interface DocumentMapper extends BaseMapper<Document> {
-}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/Document.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java
similarity index 88%
rename from cnas-device/src/main/java/com/ruoyi/device/pojo/Document.java
rename to cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java
index 25ab334..ae683e3 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/pojo/Document.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java
@@ -14,7 +14,7 @@
  */
 @Data
 @TableName(value = "device_documents")
-public class Document implements Serializable {
+public class DeviceDocuments implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -57,7 +57,6 @@
     /**
      * 鎻愪緵鏃ユ湡
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime provideDate;
 
     /**
@@ -68,18 +67,19 @@
     /**
      * 鍒涘缓鏃堕棿
      */
-
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime createdAt;
+    private LocalDateTime createTime;
 
     /**
      * 鏇存柊鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updatedAt;
+    private LocalDateTime updateTime;
 
-    private int deviceId;
+    @ApiModelProperty("璁惧id")
+    private Integer deviceId;
 
     @ApiModelProperty("璧勪骇缂栧彿")
     private String number;
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java
new file mode 100644
index 0000000..f6d91cf
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.device.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.device.pojo.DeviceDocuments;
+
+/**
+ * 璁惧妗f
+ */
+public interface DeviceDocumentsService extends IService<DeviceDocuments> {
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
index 3c7d1f0..46e50cf 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.device.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
@@ -24,7 +25,7 @@
      * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
      * @return
      */
-    Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+    Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
 
     /**
      * 鏂板璁惧淇濆吇璁″垝
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
index 4883178..6ba0be6 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
@@ -12,7 +12,6 @@
 public interface DeviceMaintenanceService extends IService<DeviceMaintenance> {
     IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber);
 
-    List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId);
 
     /**
      * 瀵煎嚭Word璁惧缁存姢璁板綍
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
index e05bb92..8b85cd0 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
@@ -1,10 +1,12 @@
 package com.ruoyi.device.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
 import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
+import org.apache.ibatis.annotations.Param;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -24,7 +26,7 @@
      * @param itemParameter 閲忓�兼函婧愯鍒�
      * @return
      */
-    Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter);
+    Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(@Param("page") Page page, @Param("itemParameter") DeviceTraceabilityManagementDto itemParameter);
 
     /**
      * 鏂板閲忓�兼函婧愯鍒�
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DocumentService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DocumentService.java
deleted file mode 100644
index bd9b275..0000000
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DocumentService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.ruoyi.device.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.device.pojo.Document;
-
-/**
- * 璁惧妗f
- */
-public interface DocumentService extends IService<Document> {
-}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/QrShowService.java b/cnas-device/src/main/java/com/ruoyi/device/service/QrShowService.java
deleted file mode 100644
index 8ed0bfd..0000000
--- a/cnas-device/src/main/java/com/ruoyi/device/service/QrShowService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.ruoyi.device.service;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.device.pojo.DeviceMetricRecord;
-import org.springframework.ui.Model;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.Objects;
-import java.util.Optional;
-
-public interface QrShowService {
-
-    /**
-     * 璁$畻鍚敤鏃堕暱
-     * @param activationDate
-     * @return
-     */
-    double calcUsedYears(LocalDateTime activationDate);
-
-    /**
-     * 璁$畻璺濈涓嬫鏍″噯鏃ユ湡鐨勫ぉ鏁扮櫨鍒嗘瘮
-     * @param startDate
-     * @param endDate
-     * @return
-     */
-    double calcDeviceNextCheckRatio(Date startDate, Date endDate);
-
-    /**
-     * 鏌ヨ璁惧鏍″噯/鏍告煡璁板綍
-     * @param deviceId
-     * @param type
-     * @return
-     */
-    DeviceMetricRecord getDeviceMetricRecord(int deviceId, String type);
-
-    /**
-     * 鏍煎紡鍖栨棩鏈�
-     * @return
-     */
-    String formatDate(Date date,String formatter);
-
-
-    /**
-     * 鏍煎紡鍖栨棩鏈�
-     * @return
-     */
-    String formatDate(LocalDate date, String formatter);
-}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java
new file mode 100644
index 0000000..2e24439
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.device.mapper.DeviceDocumentsMapper;
+import com.ruoyi.device.pojo.DeviceDocuments;
+import com.ruoyi.device.service.DeviceDocumentsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璁惧妗f
+ */
+@Service
+public class DeviceDocumentsServiceImpl extends ServiceImpl<DeviceDocumentsMapper, DeviceDocuments> implements DeviceDocumentsService {
+}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
index 3487fc2..5b0d72c 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
@@ -33,11 +33,6 @@
     }
 
     @Override
-    public List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId) {
-        return baseMapper.deviceMaintenanceExport(deviceId);
-    }
-
-    @Override
     public void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response) {
         // 鏌ヨcnas璁惧缁翠慨璁板綍
         List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
index 3a590a5..3b66ce8 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
@@ -68,7 +69,7 @@
      * @return
      */
     @Override
-    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
         IPage<DeviceMaintenancePlan> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceMaintenancePlanDto));
         return Result.success(iPage);
     }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index 2192576..fdb5a55 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -25,7 +25,7 @@
 import com.ruoyi.device.pojo.*;
 import com.ruoyi.device.service.DataConfigService;
 import com.ruoyi.device.service.DeviceService;
-import com.ruoyi.device.service.DocumentService;
+import com.ruoyi.device.service.DeviceDocumentsService;
 import com.ruoyi.device.utils.DataAcquisition;
 import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.mapper.InsSampleMapper;
@@ -35,7 +35,6 @@
 import lombok.AllArgsConstructor;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -65,11 +64,9 @@
 
     private DataConfigService dataConfigService;
 
-    private QrShowServiceImpl qrShowService;
-
     private InsSampleMapper insSampleMapper;
 
-    private DocumentService documentService;
+    private DeviceDocumentsService documentService;
 
     private DeviceMetricRecordMapper deviceMetricRecordMapper;
 
@@ -171,7 +168,7 @@
         }
         deviceDto.setAuthorizedPersonName(name);
         //鏌ヨ璁惧鏍″噯淇℃伅
-        DeviceMetricRecord calibrate = qrShowService.getDeviceMetricRecord(id, "calibrate");
+        DeviceMetricRecord calibrate = getDeviceMetricRecord(id, "calibrate");
         deviceDto.setCalibrateNo(calibrate.getCertificateSerialNumber());
 
         // 鍒颁簡鍋滅敤鏃ユ湡锛岃嚜鍔ㄥ皢鐘舵�佹敼涓哄仠鐢�
@@ -185,6 +182,21 @@
             }
         }
         return deviceDto;
+    }
+
+    /**
+     * 鏌ヨ璁惧鏍″噯/鏍告煡璁板綍
+     * @param deviceId
+     * @param type
+     * @return
+     */
+    public DeviceMetricRecord getDeviceMetricRecord(int deviceId, String type){
+        return Optional.ofNullable(
+                deviceMetricRecordMapper.selectOne(Wrappers.<DeviceMetricRecord>lambdaQuery()
+                        .eq(DeviceMetricRecord::getDeviceId, deviceId)
+                        .eq(DeviceMetricRecord::getType, type)
+                        .orderByDesc(DeviceMetricRecord::getCreateTime)
+                        .last("limit 1"))).orElse(new DeviceMetricRecord());
     }
 
     @Override
@@ -309,7 +321,7 @@
         // 璁惧淇℃伅
         Device device = baseMapper.selectById(deviceId);
         // 璁惧妗f
-        List<Document> documentList = documentService.list(Wrappers.<Document>lambdaQuery().eq(Document::getDeviceId, deviceId));
+        List<DeviceDocuments> documentList = documentService.list(Wrappers.<DeviceDocuments>lambdaQuery().eq(DeviceDocuments::getDeviceId, deviceId));
         // 璁惧鏍″噯琛�
         List<DeviceMetricRecord> deviceMetricRecordList = deviceMetricRecordMapper.selectList(Wrappers.<DeviceMetricRecord>lambdaQuery().eq(DeviceMetricRecord::getDeviceId, deviceId));
         // 璁惧缁翠慨琛�
@@ -411,13 +423,13 @@
      * @param documentList              妗f鍒楄〃
      * @param documentExportWordDtoList 杩斿洖缁檞ord鐨勬暟鎹垪琛�
      */
-    private static void extracted(List<Document> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
+    private static void extracted(List<DeviceDocuments> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
         // 缁欐。妗堝姞搴忓彿   骞朵笖鍒嗕负宸﹀彸涓や釜鍒楄〃鍦╳ord涓樉绀�
         for (int i = 0; i < documentList.size(); i++) {
             // 鍒涘缓word琛ㄦ牸涓竴琛岀殑鏁版嵁瀵硅薄
             DocumentExportWordDto documentExportWordDto = new DocumentExportWordDto();
             // 鑾峰彇妗f淇℃伅
-            Document document = documentList.get(i);
+            DeviceDocuments document = documentList.get(i);
             // 鏍煎紡鍖栨棩鏈�
             DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             // 鏍规嵁搴忓彿 鍒嗗埆鍔犲叆涓や釜鍒楄〃
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java
index e9cd9d9..843fa3f 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
@@ -70,7 +71,7 @@
      * @return
      */
     @Override
-    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(Page page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
         IPage<DeviceTraceabilityManagement> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceTraceabilityManagementDto));
         return Result.success(iPage);
     }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DocumentServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DocumentServiceImpl.java
deleted file mode 100644
index 0f905bc..0000000
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DocumentServiceImpl.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.ruoyi.device.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.device.mapper.DocumentMapper;
-import com.ruoyi.device.pojo.Document;
-import com.ruoyi.device.service.DocumentService;
-import org.springframework.stereotype.Service;
-
-/**
- * 璁惧妗f
- */
-@Service
-public class DocumentServiceImpl extends ServiceImpl<DocumentMapper, Document> implements DocumentService {
-}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/QrShowServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/QrShowServiceImpl.java
deleted file mode 100644
index bb26ed6..0000000
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/QrShowServiceImpl.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.ruoyi.device.service.impl;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.basic.mapper.StructureItemParameterMapper;
-import com.ruoyi.basic.service.ProductService;
-import com.ruoyi.device.mapper.DeviceMapper;
-import com.ruoyi.device.mapper.DeviceMetricRecordMapper;
-import com.ruoyi.device.pojo.DeviceMetricRecord;
-import com.ruoyi.device.service.QrShowService;
-import com.ruoyi.inspect.mapper.InsOrderMapper;
-import com.ruoyi.inspect.service.InsOrderService;
-import com.ruoyi.system.service.CustomService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.ui.Model;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.Objects;
-import java.util.Optional;
-
-@Service
-public class QrShowServiceImpl implements QrShowService {
-
-
-
-    @Autowired
-    private DeviceMetricRecordMapper deviceMetricRecordMapper;
-
-
-
-    /**
-     * 璁$畻鍚敤鏃堕暱
-     * @param activationDate
-     * @return
-     */
-    public double calcUsedYears(LocalDateTime activationDate) {
-        if(Objects.isNull(activationDate)){
-            return 0;
-        }
-        BigDecimal defDays = BigDecimal.valueOf(365);
-        BigDecimal usedDays = BigDecimal.valueOf(Duration.between(activationDate,LocalDateTime.now()).toDays());
-        return usedDays.divide(defDays,2,RoundingMode.HALF_UP).setScale(2,RoundingMode.HALF_UP).doubleValue();
-    }
-
-    /**
-     * 璁$畻璺濈涓嬫鏍″噯鏃ユ湡鐨勫ぉ鏁扮櫨鍒嗘瘮
-     * @param startDate
-     * @param endDate
-     * @return
-     */
-    public double calcDeviceNextCheckRatio(Date startDate, Date endDate){
-        if(Objects.isNull(startDate) || Objects.isNull(endDate)){
-            return 0;
-        }
-        LocalDateTime startLocalDate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-        LocalDateTime endLocalDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-        long totalDays = Duration.between(startLocalDate, endLocalDate).toDays();
-        long usedDays = Duration.between(startLocalDate, LocalDateTime.now()).toDays();
-        BigDecimal calcVal = BigDecimal.valueOf(usedDays).divide(BigDecimal.valueOf(totalDays),2,RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
-        if(calcVal.compareTo(BigDecimal.ZERO)<0){
-            calcVal = BigDecimal.ZERO;
-        }else if(calcVal.compareTo(BigDecimal.valueOf(100))>0){
-            calcVal = BigDecimal.valueOf(100);
-        }
-        return calcVal.doubleValue();
-    }
-
-    /**
-     * 鏌ヨ璁惧鏍″噯/鏍告煡璁板綍
-     * @param deviceId
-     * @param type
-     * @return
-     */
-    public DeviceMetricRecord getDeviceMetricRecord(int deviceId, String type){
-        return Optional.ofNullable(
-                deviceMetricRecordMapper.selectOne(Wrappers.<DeviceMetricRecord>lambdaQuery()
-                .eq(DeviceMetricRecord::getDeviceId, deviceId)
-                .eq(DeviceMetricRecord::getType, type)
-                .orderByDesc(DeviceMetricRecord::getCreateTime)
-                .last("limit 1"))).orElse(new DeviceMetricRecord());
-    }
-
-    /**
-     * 鏍煎紡鍖栨棩鏈�
-     * @return
-     */
-    public String formatDate(Date date,String formatter){
-        if(Objects.isNull(date)){
-            return "";
-        }
-        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-        return localDateTime.format(DateTimeFormatter.ofPattern(formatter));
-    }
-    /**
-     * 鏍煎紡鍖栨棩鏈�
-     * @return
-     */
-    public String formatDate(LocalDate date,String formatter){
-        if(Objects.isNull(date)){
-            return "";
-        }
-        return date.format(DateTimeFormatter.ofPattern(formatter));
-    }
-
-
-}
diff --git a/cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml b/cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml
index 79d1849..136b242 100644
--- a/cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml
+++ b/cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml
@@ -3,15 +3,4 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.device.mapper.DeviceMaintenanceMapper">
 
-    <select id="getDeviceMaintenanceParam" resultType="com.ruoyi.device.pojo.DeviceMaintenance">
-        select id,device_id,device_name, device_number,management_number,content,name
-        ,date from device_maintenance
-    </select>
-
-
-    <select id="deviceMaintenanceExport" resultType="com.ruoyi.device.excel.DeviceMaintenanceExport">
-        select id, device_id, device_name, device_number, management_number, content, date, if(maintenance_type = 1, '璁″垝涓淮鎶�', '浣跨敤鍓嶅悗缁存姢'), next_date, name, comments
-        from device_maintenance dm
-        where dm.device_id = #{deviceId}
-    </select>
 </mapper>
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
index 3aa6f7b..819a5b9 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
@@ -95,33 +95,4 @@
         saveBatch(list);
     }
 
-    public String wordToPdf(String wordPath, String pdfPath) {
-        FileOutputStream os = null;
-        try {
-            InputStream is = new ClassPathResource("/lib/license.xml").getInputStream();
-            License license = new License();
-            license.setLicense(is);
-            if (!license.getIsLicensed()) {
-                System.out.println("License楠岃瘉涓嶉�氳繃...");
-                return null;
-            }
-            //鐢熸垚涓�涓┖鐨凱DF鏂囦欢
-            File file = new File(pdfPath.replace(".pdf", ".pdf"));
-            os = new FileOutputStream(file);
-            //瑕佽浆鎹㈢殑word鏂囦欢
-            com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
-            doc.save(os, SaveFormat.PDF);
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (os != null) {
-                try {
-                    os.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return null;
-    }
 }
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java
index bd8155c..1f3a735 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java
@@ -430,7 +430,6 @@
                 for (int i = 1; i < rows.size(); i++) { // 浠庣浜岃寮�濮嬶紝璺宠繃琛ㄥご
                     XWPFTableRow row = rows.get(i);
                     if (row.getTableCells().size() != 10) {
-                        System.out.println("琛� " + (i + 1) + " 鐨勫垪鏁颁笉鍖归厤锛岃烦杩囪琛�");
                         continue;
                     }
                     if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java
index 9ffe421..47eda59 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java
@@ -421,7 +421,6 @@
                 for (int i = 1; i < rows.size(); i++) { // 浠庣浜岃寮�濮嬶紝璺宠繃琛ㄥご
                     XWPFTableRow row = rows.get(i);
                     if (row.getTableCells().size() != 9) {
-                        System.out.println("琛� " + (i + 1) + " 鐨勫垪鏁颁笉鍖归厤锛岃烦杩囪琛�");
                         continue;
                     }
                     if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java
index 4326aec..d1ce9ea 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java
@@ -448,7 +448,6 @@
                 for (int i = 1; i < rows.size(); i++) { // 浠庣浜岃寮�濮嬶紝璺宠繃琛ㄥご
                     XWPFTableRow row = rows.get(i);
                     if (row.getTableCells().size() != 7) {
-                        System.out.println("琛� " + (i + 1) + " 鐨勫垪鏁颁笉鍖归厤锛岃烦杩囪琛�");
                         continue;
                     }
                     if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java
index 4fb7805..109a595 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java
@@ -613,7 +613,6 @@
                 for (int i = 2; i < rows.size(); i++) { // 浠庣涓夎寮�濮嬶紝璺宠繃琛ㄥご
                     XWPFTableRow row = rows.get(i);
                     if (row.getTableCells().size() != 12) {
-                        System.out.println("琛� " + (i + 1) + " 鐨勫垪鏁颁笉鍖归厤锛岃烦杩囪琛�");
                         continue;
                     }
                     if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java
index de56b41..043e911 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java
@@ -117,7 +117,6 @@
                 for (int i = 1; i < rows.size(); i++) { // 浠庣浜岃寮�濮嬶紝璺宠繃琛ㄥご
                     XWPFTableRow row = rows.get(i);
                     if (row.getTableCells().size() != 8) {
-                        System.out.println("琛� " + (i + 1) + " 鐨勫垪鏁颁笉鍖归厤锛岃烦杩囪琛�");
                         continue;
                     }
                     if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
index 134e4ba..c02f6dc 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
@@ -58,7 +58,6 @@
         }
         standardSubstance.setState(0);
         feStandardSubstanceMapper.updateById(standardSubstance);
-        System.out.println(feStandardSubstanceRecord);
         baseMapper.update(feStandardSubstanceRecord, Wrappers.<FeStandardSubstanceRecord>lambdaUpdate()
                 .eq(FeStandardSubstanceRecord::getSubstanceId, feStandardSubstanceRecord.getSubstanceId())
                 .eq(FeStandardSubstanceRecord::getStatus, 0));
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 22d4748..2f95736 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
@@ -134,25 +134,6 @@
         return Result.success(insOrderService.selectSampleAndProductByOrderId(page, sampleProductDto));
     }
 
-    @ApiOperation(value = "璐圭敤缁熻")
-    @GetMapping("/costStatistics")
-    public Result<?> costStatistics(Page page, CostStatisticsDto costStatisticsDto){
-        return Result.success(insOrderService.costStatistics(page, costStatisticsDto));
-    }
-
-    @ApiOperation(value = "璐圭敤缁熻鑾峰彇鎬讳环")
-    @GetMapping("/costStatistics2")
-    public Result<?> costStatistics2(CostStatisticsDto costStatisticsDto){
-        return Result.success(insOrderService.costStatistics2(costStatisticsDto));
-    }
-
-
-    @ApiOperation(value = "鏍峰搧缂洪櫡鎸囨暟")
-    @GetMapping("/selectSampleDefects")
-    public Result selectSampleDefects(Integer size, Integer current, String inspectionItems, String orderNumber) {
-        return Result.success(insOrderService.selectSampleDefects(new Page<>(current, size),inspectionItems, orderNumber));
-    }
-
 
     @ApiOperation(value = "鎾ら攢")
     @PostMapping("/updateStatus")
@@ -193,13 +174,6 @@
         Integer state = (Integer) param.get("state");
         insProductService.checkUpdate(orderId,state);
         return Result.success();
-    }
-
-
-    @ApiOperation(value = "璐圭敤缁熻瀵煎嚭")
-    @GetMapping("/export")
-    public void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response) throws ServletException, IOException {
-       insOrderService.export(costStatisticsDto,response);
     }
 
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java
new file mode 100644
index 0000000..d34c041
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java
@@ -0,0 +1,59 @@
+package com.ruoyi.inspect.controller;
+
+
+
+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.inspect.dto.SampleOrderDto;
+import com.ruoyi.inspect.pojo.InsOrderRates;
+import com.ruoyi.inspect.service.InsOrderRatesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+
+/**
+ * 璁㈠崟璐圭敤琛�
+ *
+ * @author zhuo
+ * @since 2025-02-28
+ */
+@Api(tags = "璁㈠崟璐圭敤淇℃伅")
+@RestController
+@RequestMapping("/insOrderRates")
+public class InsOrderRatesController  {
+
+    @Resource
+    private InsOrderRatesService insOrderRatesService;
+
+
+    /**
+     * 鏌ヨ璁㈠崟鍒楄〃
+     * @param page
+     * @param sampleOrderDto
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ璁㈠崟鍒楄〃")
+    @GetMapping("/selectRatesPage")
+    public Result selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto) {
+        return Result.success(insOrderRatesService.selectInsOrderRates(page, sampleOrderDto));
+    }
+
+
+    /**
+     * 鏌ヨ璁㈠崟鍒楄〃
+     * @param insOrderId
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ璁㈠崟璐圭敤璇︽儏")
+    @GetMapping("/selectRatesDetail")
+    public Result selectRatesDetail(Integer insOrderId) {
+        return Result.success(insOrderRatesService.list(Wrappers.<InsOrderRates>lambdaQuery()
+                .eq(InsOrderRates::getInsOrderId, insOrderId)));
+    }
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
index 6712b95..6a51cca 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
@@ -66,7 +66,7 @@
     public String unqualifiedHandlerOACallback(String data){
         String msg = OAProcess.oaReturnMsg(0, "success");
         JSONObject json = JSONObject.parseObject(data);
-        System.out.println("========>" + json);
+        log.info("oa鍥炶皟鍙傛暟========>" + json);
         try {
             Long oaWorkId = json.getLong(REQUESTID);
             String checkResult = json.getString(CHECKRESULT);
@@ -77,7 +77,7 @@
             log.error("oa鍥炶皟澶辫触: " + e.getMessage());
             msg = OAProcess.oaReturnMsg(1, "oa鍥炶皟澶辫触: " + e.getMessage());
         }
-        System.out.println("oa鍥炶皟杩斿洖缁撴灉========>" + msg);
+        log.info("oa鍥炶皟杩斿洖缁撴灉========>" + msg);
         return msg;
     }
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnPassPageDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnPassPageDto.java
deleted file mode 100644
index 96111a8..0000000
--- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/UnPassPageDto.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.ruoyi.inspect.dto;
-
-import com.ruoyi.inspect.pojo.InsUnPass;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author 鏈变匠鍚�
- * @date 2024/5/8 12:38
- */
-@Data
-public class UnPassPageDto extends InsUnPass implements Serializable {
-
-}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
index 96a5ca8..449c56d 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
@@ -34,14 +34,8 @@
 
     IPage<SampleProductDto2> selectSampleAndProductByOrderId(@Param("page") IPage<SampleProductDto2> page, @Param("ew") QueryWrapper<SampleProductDto2> ew, @Param("id") Integer id);
 
-    IPage<CostStatisticsDto> selectCostStatistics(@Param("page") IPage<CostStatisticsDto> page, @Param("ew") QueryWrapper<CostStatisticsDto> ew);
-
-    List<CostStatisticsDto> selectCostStatistics2(@Param("ew") QueryWrapper<CostStatisticsDto> ew);
-
     List<Map<String, String>> selectDeviceList(@Param("managementNumbers") Set<String> managementNumbers);
     List<SampleDefectsFatherVo> selectSampleDefects(Page page, @Param("inspectionItems") String inspectionItems, @Param("orderNumber") String orderNumber);
-
-    Long getCount(@Param("inspectionItems") String inspectionItems, @Param("orderNumber") String orderNumber);
 
     String getStandardMethodCode(@Param("id") Integer id);
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java
new file mode 100644
index 0000000..9f7fef2
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.InsOrderRates;
+
+/**
+ * 璁㈠崟璐圭敤琛�
+ *
+ * @author zhuo
+ * @since 2025-02-28
+ */
+public interface InsOrderRatesMapper extends BaseMapper<InsOrderRates> {
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
index bfb7115..66334f8 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
@@ -60,6 +60,13 @@
      * @return
      */
     int selectNoJudge(@Param("orderId") Integer orderId);
+
+    /**
+     * 鏍规嵁璁㈠崟鏌ヨ浜у搧淇℃伅
+     * @param orderId
+     * @return
+     */
+    List<InsProduct> selectProductByOrderId(Integer orderId);
 }
 
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnPassMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnPassMapper.java
deleted file mode 100644
index 2e55796..0000000
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnPassMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.inspect.mapper;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.ruoyi.inspect.dto.UnPassPageDto;
-import com.ruoyi.inspect.pojo.InsUnPass;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * @author 鏈变匠鍚�
- * @date 2024/5/8 13:05
- */
-public interface InsUnPassMapper extends BaseMapper<InsUnPass> {
-    IPage<UnPassPageDto> pageInsUnPass(@Param("page") IPage<UnPassPageDto> page, @Param("ew") QueryWrapper<UnPassPageDto> ew);
-}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java
new file mode 100644
index 0000000..b52ab57
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java
@@ -0,0 +1,72 @@
+package com.ruoyi.inspect.pojo;
+
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璁㈠崟璐圭敤琛�
+ *
+ * @author zhuo
+ * @since 2025-02-28
+ */
+@Data
+@TableName("ins_order_rates")
+public class InsOrderRates {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("璁㈠崟id")
+    private Integer insOrderId;
+
+    @ApiModelProperty("鏍峰搧id")
+    private Integer insSampleId;
+
+    @ApiModelProperty("妫�楠岄」id")
+    private Integer insProductId;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    private String sampleCode;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    private String entrustCode;
+
+    @ApiModelProperty("妫�楠岄」鍒嗙被")
+    private String inspectionItemClass;
+
+    @ApiModelProperty("妫�娴嬮」鐩�")
+    private String inspectionItem;
+
+    @ApiModelProperty("妫�楠岄」瀛愮被")
+    private String inspectionItemSubclass;
+
+    @ApiModelProperty("鐢电紗鏍囪瘑")
+    private String cableTag;
+
+    @ApiModelProperty("鏍囧噯浠锋牸")
+    private String rates;
+
+    @ApiModelProperty("鍒嗙粍")
+    private String manHourGroup;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鍒涘缓浜篿d")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("淇敼浜篿d")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java
deleted file mode 100644
index 3dfa2c8..0000000
--- a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.ruoyi.inspect.pojo;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * @author 鏈变匠鍚�
- * @date 2024/5/8 14:11
- */
-@Data
-@TableName("ins_un_pass")
-public class InsUnPass implements Serializable {
-    /**
-     * 涓嶅悎鏍糹d
-     */
-    @ApiModelProperty(value = "涓婚敭")
-    @TableId(type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 瑙勬牸鍨嬪彿
-     */
-    @ApiModelProperty("瑙勬牸鍨嬪彿")
-    private String model;
-    /**
-     * 鏍峰搧鍚嶇О
-     */
-    @ApiModelProperty("鏍峰搧鍚嶇О")
-    private String sample;
-    /**
-     * 妫�娴嬮」
-     */
-    @ApiModelProperty("妫�娴嬮」")
-    private String inspectionItem;
-    /**
-     * 妫�娴嬪瓙椤�
-     */
-    @ApiModelProperty("妫�娴嬪瓙椤�")
-    private String inspectionItemSubclass;
-    /**
-     * 妫�娴嬬粨鏋�
-     */
-    @ApiModelProperty("妫�娴嬬粨鏋�")
-    @TableField("`last_value`")
-    private String lastValue;
-    /**
-     * 澶勭悊鎰忚
-     */
-    @ApiModelProperty("澶勭悊鎰忚")
-    private String handleSuggestion;
-    /**
-     * 濮旀墭缂栧彿
-     */
-    @ApiModelProperty("濮旀墭缂栧彿")
-    private String entrustCode;
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    @ApiModelProperty("妫�楠屼汉")
-    private String name;
-
-    @TableField(fill = FieldFill.INSERT)
-    private Integer createUser;
-
-    @ApiModelProperty("鍒涘缓鏃堕棿")
-    @TableField(fill = FieldFill.INSERT)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime createTime;
-
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private Integer updateUser;
-
-    @ApiModelProperty("淇敼鏃堕棿")
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime updateTime;
-
-}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java
new file mode 100644
index 0000000..8aa80fa
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java
@@ -0,0 +1,25 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.dto.SampleOrderDto;
+import com.ruoyi.inspect.pojo.InsOrderRates;
+
+/**
+ * 璁㈠崟璐圭敤琛�
+ *
+ * @author zhuo
+ * @since 2025-02-28
+ */
+public interface InsOrderRatesService extends IService<InsOrderRates> {
+
+    /**
+     *
+     * @param page
+     * @param sampleOrderDto
+     * @return
+     */
+    IPage<SampleOrderDto> selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto);
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
index e845236..e666245 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
@@ -39,16 +39,9 @@
 
     IPage<SampleProductDto2> selectSampleAndProductByOrderId(IPage<SampleProductDto2> page, SampleProductDto2 sampleProductDto);
 
-    IPage<CostStatisticsDto> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto);
-
-    Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto);
-
-    Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber);
 
     int updateStatus(Integer id);
 
-
-    void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response)throws IOException, ServletException;
 
     // 鑾峰彇ifs搴撳瓨淇℃伅
     void getIfsOrder();
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnPassService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnPassService.java
deleted file mode 100644
index fd63ba1..0000000
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnPassService.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.inspect.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.inspect.dto.UnPassPageDto;
-import com.ruoyi.inspect.pojo.InsUnPass;
-
-import java.util.Map;
-
-/**
- * @author 鏈变匠鍚�
- * @date 2024/5/8 13:00
- */
-public interface InsUnPassService extends IService<InsUnPass> {
-
-    IPage<UnPassPageDto> pageInsUnPass(Page page, UnPassPageDto unPassPageDto);
-}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index d366471..69d71dc 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -2,8 +2,6 @@
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
@@ -44,7 +42,6 @@
 import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
 import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo;
 import com.ruoyi.inspect.vo.InsOrderPlanVO;
-import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
 import com.ruoyi.performance.mapper.PerformanceShiftMapper;
 import com.ruoyi.performance.mapper.ShiftTimeMapper;
 import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
@@ -57,7 +54,6 @@
 import com.ruoyi.system.service.InformationNotificationService;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.xwpf.usermodel.*;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -71,13 +67,10 @@
 import java.math.RoundingMode;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
@@ -119,8 +112,6 @@
     @Resource
     private InsProductUserMapper insProductUserMapper;
     @Resource
-    private InsUnPassService insUnPassService;
-    @Resource
     private AuxiliaryOutputWorkingHoursService auxiliaryOutputWorkingHoursService;
     @Resource
     private AuxiliaryOutputWorkingHoursTemporaryService auxiliaryOutputWorkingHoursTemporaryService;
@@ -132,7 +123,6 @@
     private CustomMapper customMapper;
     @Value("${file.path}")
     private String imgUrl;
-
     @Resource
     private InsOrderFileMapper insOrderFileMapper;
     @Resource
@@ -163,7 +153,8 @@
     private InsOrderDeviceRecordService insOrderDeviceRecordService;
     @Resource
     private ISysDictTypeService iSysDictTypeService;
-
+    @Resource
+    private InsOrderRatesService insOrderRatesService;
 
     @Override
     public IPage<InsOrderPlanVO> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
@@ -752,7 +743,7 @@
     @Transactional(rollbackFor = Exception.class)
     public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode) {
         InsOrder order = insOrderMapper.selectById(orderId);
-        // 鍒ゆ柇鏄惁鏈夐噸澶嶇紪鍙�, 鏈夐噸澶嶇紪鍙峰仛鎻愰啋
+        // 1. 鍒ゆ柇鏄惁鏈夐噸澶嶇紪鍙�, 鏈夐噸澶嶇紪鍙峰仛鎻愰啋
         Long codeCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
                 .ne(InsOrder::getState, -1)
                 .ne(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
@@ -761,7 +752,7 @@
             throw new ErrorException("褰撳墠缂栧彿鏈夐噸澶�, 璇峰厛鍘讳慨鏀归噸澶嶇紪鍙�");
         }
 
-        // 鍒ゆ柇璇ヨ鍗曟槸鍚︽槸绗竴娆$敓浜�
+        // 2. 鍒ゆ柇璇ヨ鍗曟槸鍚︽槸绗竴娆$敓浜�(鍚庣画鎶ュ憡鐢熸垚鍙彇绗竴娆℃彁浜ゆ椂闂�)
         if (!(order.getIsFirstSubmit() != null && order.getIsFirstSubmit().equals(1))) {
             insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                     .eq(InsOrder::getId, orderId)
@@ -769,11 +760,12 @@
                     .set(InsOrder::getFirstSubmitDate, LocalDateTime.now()));
         }
 
+        // 3. 鍒ゆ柇鏄惁鏈夋湭妫�椤�
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                 .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
-        List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
+        List<Integer> InsSampleIds = insSamples.stream().map(InsSample::getId).collect(Collectors.toList());
         List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                .in(InsProduct::getInsSampleId, ids)
+                .in(InsProduct::getInsSampleId, InsSampleIds)
                 .eq(InsProduct::getSonLaboratory, laboratory)
                 .eq(InsProduct::getState, 1)
                 .and(wrapper -> wrapper
@@ -781,10 +773,8 @@
                         .or()
                         .eq(InsProduct::getInsResult, 2)
                 )
-                .isNull(InsProduct::getInsFiberId)
-                .isNull(InsProduct::getInsFibersId)
                 .ne(InsProduct::getIsBinding, 1));
-        insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory));
+        insProducts.addAll(insProductMapper.selectFiberInsProduct(InsSampleIds, laboratory));
         if (insProducts.size() > 0) {
             String str = "";
             int count = 0;
@@ -797,21 +787,21 @@
                 throw new ErrorException("<strong>瀛樺湪寰呮楠岀殑椤圭洰锛�</strong><br/>" + str);
             }
         }
+
+        // 4.淇敼妫�娴嬬粨鏋�
         insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId)
                 .eq(InsOrderState::getLaboratory, laboratory)
                 .set(InsOrderState::getInsTime, LocalDateTime.now())
                 .set(InsOrderState::getInsState, 3)
                 .set(InsOrderState::getVerifyUser, verifyUser));
 
-        // 鍙戦�佹秷鎭�
+
+        // 5.鍙戦�佹秷鎭�氱煡缁欏鏍镐汉
         // 鏌ヨ褰撳墠浜轰俊鎭�
         Integer userId = SecurityUtils.getUserId().intValue();
         String userName = insProductMapper.selectUserById(userId).get("name");
-
         // 鏌ヨ鍙戦�佷汉淇℃伅
         String sendUserAccount = insProductMapper.selectUserById(verifyUser).get("account");
-
-
         InformationNotification info = new InformationNotification();
         info.setCreateUser(userName);
         info.setMessageType("2");
@@ -823,15 +813,16 @@
         info.setJumpPath("b1-inspect-orderPlan-review");
         informationNotificationService.addInformationNotification(info);
 
-        //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
+        // 6.澶嶆牳浜�--鏂板妫�楠屽崟鐩稿叧璐熻矗浜�
         InsSampleUser insSampleUser = new InsSampleUser();
         insSampleUser.setUserId(verifyUser);
         insSampleUser.setInsSampleId(orderId);
         insSampleUser.setState(1);
         insSampleUser.setSonLaboratory(laboratory);
         insSampleUserMapper.insert(insSampleUser);
-        /*鏍¢獙涓�涓媟esult琛�*/
-        CompletableFuture.supplyAsync(() -> {
+
+        // 7.鏍¢獙涓�涓媟esult琛�(閬垮厤鍑虹幇澶氫釜妫�楠岄」缁撴灉)
+        threadPoolTaskExecutor.execute(() -> {
             List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
             for (Integer ip : ips) {
                 List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
@@ -842,26 +833,116 @@
                     }
                 }
             }
-            return null;
         });
 
-        // 鎻愪氦鐢熸垚鎶ュ憡
+        // 8.鎻愪氦鐢熸垚鎶ュ憡
         this.generateReport(orderId);
 
-        // 娣诲姞涓存椂pdf鐢熸垚鍦板潃
+        // 9.娣诲姞涓存椂pdf鐢熸垚鍦板潃
         InsReport report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
                 .eq(InsReport::getInsOrderId, orderId));
         String tempUrlPdf = this.wordToPdfTemp(report.getUrl().replace("/word", wordUrl));
         report.setTempUrlPdf("/word/" + tempUrlPdf);
         insReportMapper.updateById(report);
 
-        // 鏌ヨ璁㈠崟
+        // 10.鍘熷璁板綍妯℃澘澶嶅埗(娣诲姞澶囦唤, 閬垮厤淇敼鍘熷妯℃澘褰卞搷鍒板凡缁忓畬鎴愮殑鍗曞瓙)
+        this.templateCopy(orderId, InsSampleIds);
+
+        // 11.鎴愬搧鎶芥牱娣诲姞鍚堟牸鐘舵��
+        // 鍒ゆ柇鏄惁鏈夋娊鏍蜂俊鎭�
+        if (order.getQuarterItemId() != null) {
+            // 鍒ゆ柇鏄惁鏈変笉鍚堟牸
+            this.addProductSpotCheck(insSamples, order);
+        }
+
+        // 12.娣诲姞宸ユ椂
+        // 鍒犻櫎鍘熸湰璁㈠崟宸ユ椂
+        auxiliaryOutputWorkingHoursService.remove(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+                .eq(AuxiliaryOutputWorkingHours::getOrderId, orderId));
+        // 鏌ヨ宸ユ椂鏆傚瓨
+        List<AuxiliaryOutputWorkingHoursTemporary> hoursTemporaries = auxiliaryOutputWorkingHoursTemporaryService.list(Wrappers.<AuxiliaryOutputWorkingHoursTemporary>lambdaQuery()
+                .eq(AuxiliaryOutputWorkingHoursTemporary::getOrderId, orderId));
+        List<AuxiliaryOutputWorkingHours> outputWorkingHours = hoursTemporaries.stream().map(hoursTemporary -> {
+            AuxiliaryOutputWorkingHours workingHours = new AuxiliaryOutputWorkingHours();
+            BeanUtil.copyProperties(hoursTemporary, workingHours);
+            workingHours.setId(null);
+            return workingHours;
+        }).collect(Collectors.toList());
+        auxiliaryOutputWorkingHoursService.saveBatch(outputWorkingHours);
+
+        // 13.娣诲姞璁㈠崟璐圭敤缁熻淇℃伅
+        List<InsProduct> productList = insProductMapper.selectProductByOrderId(orderId);
+        // 鍒犻櫎鍘熸湰璐圭敤淇℃伅
+        insOrderRatesService.remove(Wrappers.<InsOrderRates>lambdaQuery()
+                .eq(InsOrderRates::getInsOrderId, orderId));
+        List<InsOrderRates> orderRatesList = productList.stream().map(insProduct -> {
+            InsOrderRates insOrderRates = new InsOrderRates();
+            insOrderRates.setInsOrderId(orderId);
+            insOrderRates.setInsSampleId(insProduct.getInsSampleId());
+            insOrderRates.setInsProductId(insProduct.getId());
+            insOrderRates.setSampleCode(insProduct.getSampleCode());
+            insOrderRates.setEntrustCode(order.getEntrustCode());
+            insOrderRates.setInspectionItemClass(insProduct.getInspectionItemClass());
+            insOrderRates.setInspectionItem(insProduct.getInspectionItem());
+            insOrderRates.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
+            insOrderRates.setCableTag(insProduct.getCableTag());
+            insOrderRates.setRates(insProduct.getRates());
+            insOrderRates.setManHourGroup(insProduct.getManHourGroup());
+            return insOrderRates;
+        }).collect(Collectors.toList());
+        insOrderRatesService.saveBatch(orderRatesList);
+
+
+        // 14.鍙戦�佷紒涓氬井淇¢�氱煡
+        // 鏌ヨ鍘熸潗鏂�
+        IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
+        // 鏌ヨ鏍峰搧淇℃伅
         InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery()
                 .eq(InsSample::getInsOrderId, orderId)
                 .last("limit 1"));
-        // 鏌ヨ鍘熸潗鏂�
-        IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
+        threadPoolTaskExecutor.execute(() -> {
+            String message = "";
+            message += "妫�楠屼换鍔″鏍搁�氱煡";
+            message += "\n鎻愪氦浜�: " + userName;
+            message += "\n濮旀墭缂栧彿: " + order.getEntrustCode();
+            message += "\n鏍峰搧鍚嶇О: " + insSample.getModel();
+            message += "\n瑙勬牸鍨嬪彿: " + order.getPartDetail();
+            if (ifsInventoryQuantity != null) {
+                message += "\n鎵规鍙�: " + ifsInventoryQuantity.getUpdateBatchNo();
+            }
+            //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡  鎻愪氦澶嶆牳
+            try {
+                WxCpUtils.inform(sendUserAccount, message, null);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        });
 
+        // 15.ifs绉诲簱(鍘熸潗鏂欓渶瑕佽繘琛岀Щ搴撴搷浣�) --> 鏈�鍚庢墽琛�,鍥犱负澶辫触鏃犳硶鍥炴粴
+        if (ifsInventoryQuantity != null) {
+            // 鐧昏妫�楠岀粨鏋�
+            // 鍒ゆ柇鏄惁鏈変笉鍚堟牸, 鏈変笉鍚堟牸涓嶈兘绉诲簱
+            // todo: ifs绉诲簱
+            insReportService.isRawMaterial(order);
+        } else {
+            // 淇敼鎴愬搧鐘舵��
+            // 鍒ゆ柇鏄惁鏈変笉鍚堟牸
+            Long unqualifiedCount = insReportService.getUnqualifiedCount(order);
+            if (unqualifiedCount.equals(0L)) {
+                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
+                        .eq(InsOrder::getId, order.getId())
+                        .set(InsOrder::getInsResult, 1));
+            } else {
+                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
+                        .eq(InsOrder::getId, order.getId())
+                        .set(InsOrder::getInsResult, 0));
+            }
+        }
+
+        return 1;
+    }
+
+    private void templateCopy(Integer orderId, List<Integer> ids) {
         // 鍒犻櫎鍘熸湰妯℃澘
         insOrderStandardTemplateService.remove(Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                 .eq(InsOrderStandardTemplate::getInsOrderId, orderId));
@@ -886,99 +967,6 @@
                 }
             }
         }
-
-        // 娣诲姞宸ユ椂
-        // 鍒犻櫎鍘熸湰璁㈠崟宸ユ椂
-        auxiliaryOutputWorkingHoursService.remove(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
-                .eq(AuxiliaryOutputWorkingHours::getOrderId, orderId));
-        // 鏌ヨ宸ユ椂鏆傚瓨
-        List<AuxiliaryOutputWorkingHoursTemporary> hoursTemporaries = auxiliaryOutputWorkingHoursTemporaryService.list(Wrappers.<AuxiliaryOutputWorkingHoursTemporary>lambdaQuery()
-                .eq(AuxiliaryOutputWorkingHoursTemporary::getOrderId, orderId));
-        List<AuxiliaryOutputWorkingHours> outputWorkingHours = hoursTemporaries.stream().map(hoursTemporary -> {
-            AuxiliaryOutputWorkingHours workingHours = new AuxiliaryOutputWorkingHours();
-            BeanUtil.copyProperties(hoursTemporary, workingHours);
-            workingHours.setId(null);
-            return workingHours;
-        }).collect(Collectors.toList());
-        auxiliaryOutputWorkingHoursService.saveBatch(outputWorkingHours);
-
-        // 鎴愬搧鎶芥牱娣诲姞鍚堟牸鐘舵��
-        // 鍒ゆ柇鏄惁鏈夋娊鏍蜂俊鎭�
-        if (order.getQuarterItemId() != null) {
-            // 鍒ゆ柇鏄惁鏈変笉鍚堟牸
-            Long unqualifiedCount = 0L;
-            if (CollectionUtils.isNotEmpty(insSamples)) {
-                unqualifiedCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
-                        .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
-                        .eq(InsProduct::getInsResult, 0));
-
-                // 鍒ゆ柇濡傛灉鏈変笉鍚堟牸鐨勬楠岄」, 鍒ゆ柇鏈夋病鏈夋楠岄」澶嶆祴, 澶嶆牳鍚堟牸涔熺畻鍚堟牸閫氳繃
-                if (!unqualifiedCount.equals(0L)) {
-                    List<InsProduct> productList = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                            .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
-                            .eq(InsProduct::getInsResult, 0));
-
-                    boolean flag = true;
-                    for (InsProduct insProduct : productList) {
-                        Long unqualifiedProductCount = insUnqualifiedRetestProductMapper.selectCount(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
-                                .eq(InsUnqualifiedRetestProduct::getInsProductId, insProduct.getId())
-                                .ne(InsUnqualifiedRetestProduct::getInsResult, 0));
-                        if (unqualifiedProductCount != 2) {
-                            flag = false;
-                        }
-                    }
-                    if (flag) {
-                        unqualifiedCount = 0L;
-                    }
-                }
-            }
-            spotCheckQuarterItemMapper.update(null, Wrappers.<SpotCheckQuarterItem>lambdaUpdate()
-                    .eq(SpotCheckQuarterItem::getQuarterItemId, order.getQuarterItemId())
-                    .set(SpotCheckQuarterItem::getResult, unqualifiedCount.equals(0L) ? "鍚堟牸" : "涓嶅悎鏍�"));
-
-        }
-
-        // 鍙戦�佷紒涓氬井淇¢�氱煡
-        threadPoolTaskExecutor.execute(() -> {
-            String message = "";
-            message += "妫�楠屼换鍔″鏍搁�氱煡";
-            message += "\n鎻愪氦浜�: " + userName;
-            message += "\n濮旀墭缂栧彿: " + order.getEntrustCode();
-            message += "\n鏍峰搧鍚嶇О: " + insSample.getModel();
-            message += "\n瑙勬牸鍨嬪彿: " + order.getPartDetail();
-            if (ifsInventoryQuantity != null) {
-                message += "\n鎵规鍙�: " + ifsInventoryQuantity.getUpdateBatchNo();
-            }
-            //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡  鎻愪氦澶嶆牳
-            try {
-                WxCpUtils.inform(sendUserAccount, message, null);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        });
-
-        // ifs绉诲簱
-        if (ifsInventoryQuantity != null) {
-            // 鐧昏妫�楠岀粨鏋�
-            // 鍒ゆ柇鏄惁鏈変笉鍚堟牸, 鏈変笉鍚堟牸涓嶈兘绉诲簱
-            // todo: ifs绉诲簱
-            insReportService.isRawMaterial(order);
-        } else {
-            // 淇敼鎴愬搧鐘舵��
-            // 鍒ゆ柇鏄惁鏈変笉鍚堟牸
-            Long unqualifiedCount = insReportService.getUnqualifiedCount(order);
-            if (unqualifiedCount.equals(0L)) {
-                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
-                        .eq(InsOrder::getId, order.getId())
-                        .set(InsOrder::getInsResult, 1));
-            } else {
-                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
-                        .eq(InsOrder::getId, order.getId())
-                        .set(InsOrder::getInsResult, 0));
-            }
-        }
-
-        return 1;
     }
 
 
@@ -1116,7 +1104,6 @@
      * @param orderId
      */
     private void generateReport(Integer orderId) {
-        List<InsUnPass> insUnPasses = new ArrayList<>();
         /*鏍峰搧涓嬬殑椤圭洰鍙鏈変竴涓」鐩笉鍚堟牸鍒欐楠岀粨鏋滀负0,鍚﹀垯涓�1*/
         //杩欓噷鐨刬nsSamples鏄鍗曚笅鐨勬墍鏈夋牱鍝佸寘鎷�("/")
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
@@ -1132,25 +1119,7 @@
                 insSample.setInsResult(1);
             }
             insSampleMapper.updateById(insSample);
-            /*澶嶆牳閫氳繃鍚庯紝灏嗕笉鍚堟牸鐨勯」鐩俊鎭坊鍔犲埌ins_un_pass琛ㄤ腑*/
-            for (InsProduct insProduct : insProducts) {
-                if (insProduct.getInsResult() == 0) {
-                    InsUnPass insUnPass = new InsUnPass();
-                    insUnPass.setId(null);
-                    insUnPass.setModel(insSample.getModel());
-                    insUnPass.setSample(insSample.getSample());
-                    insUnPass.setInspectionItem(insProduct.getInspectionItem());
-                    insUnPass.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
-                    insUnPass.setLastValue(insProduct.getLastValue());
-                    insUnPass.setEntrustCode(insOrderMapper.selectById(orderId).getEntrustCode());
-                    List<Integer> userIds = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery().eq(InsProductUser::getInsProductId, insProduct.getId())).stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
-                    String name = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
-                    insUnPass.setName(name);
-                    insUnPasses.add(insUnPass);
-                }
-            }
         }
-        insUnPassService.saveBatch(insUnPasses);
         InsOrder insOrder = insOrderMapper.selectById(orderId);
         // 鎶芥鍙樻垚濮旀墭妫�楠�
         if (insOrder.getOrderType().equals(InsOrderTypeConstants.SPOT_CHECK)) {
@@ -4062,7 +4031,7 @@
     }
 
     /**
-     * 淇濆瓨鍏冩闃块噷杩涜揣楠岃瘉鍘熷璁板綍
+     * *****淇濆瓨鍏冩闃块噷杩涜揣楠岃瘉鍘熷璁板綍*****
      * @param insOrderId 璁㈠崟Id
      * @param examineUserId  澶嶆牳浜篒d
      * @param writeUserId  妫�楠屽憳Id
@@ -4212,7 +4181,7 @@
 
 
     /**
-     * 鏍煎紡鍖栬繘鍘傞獙璇佸唴瀹�
+     * ***鏍煎紡鍖栬繘鍘傞獙璇佸唴瀹�****
      * @param basicType
      * @return
      */
@@ -4241,7 +4210,7 @@
     }
 
     /**
-     * word杞崲pdf
+     * ***word杞崲pdf***
      * @param path
      * @return
      */
@@ -4262,7 +4231,6 @@
             License license = new License();
             license.setLicense(is);
             if (!license.getIsLicensed()) {
-                System.out.println("License楠岃瘉涓嶉�氳繃...");
                 return null;
             }
             //鐢熸垚涓�涓┖鐨凱DF鏂囦欢
@@ -4289,4 +4257,41 @@
         return null;
     }
 
+    /**
+     * *****淇敼鎴愬搧鎶芥牱鐘舵��******
+     * @param insSamples
+     * @param order
+     */
+    private void addProductSpotCheck(List<InsSample> insSamples, InsOrder order) {
+        Long unqualifiedCount = 0L;
+        if (CollectionUtils.isNotEmpty(insSamples)) {
+            unqualifiedCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+                    .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
+                    .eq(InsProduct::getInsResult, 0));
+
+            // 鍒ゆ柇濡傛灉鏈変笉鍚堟牸鐨勬楠岄」, 鍒ゆ柇鏈夋病鏈夋楠岄」澶嶆祴, 澶嶆牳鍚堟牸涔熺畻鍚堟牸閫氳繃
+            if (!unqualifiedCount.equals(0L)) {
+                List<InsProduct> productList = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                        .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
+                        .eq(InsProduct::getInsResult, 0));
+
+                boolean flag = true;
+                for (InsProduct insProduct : productList) {
+                    Long unqualifiedProductCount = insUnqualifiedRetestProductMapper.selectCount(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
+                            .eq(InsUnqualifiedRetestProduct::getInsProductId, insProduct.getId())
+                            .ne(InsUnqualifiedRetestProduct::getInsResult, 0));
+                    if (unqualifiedProductCount != 2) {
+                        flag = false;
+                    }
+                }
+                if (flag) {
+                    unqualifiedCount = 0L;
+                }
+            }
+        }
+        spotCheckQuarterItemMapper.update(null, Wrappers.<SpotCheckQuarterItem>lambdaUpdate()
+                .eq(SpotCheckQuarterItem::getQuarterItemId, order.getQuarterItemId())
+                .set(SpotCheckQuarterItem::getResult, unqualifiedCount.equals(0L) ? "鍚堟牸" : "涓嶅悎鏍�"));
+    }
+
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java
new file mode 100644
index 0000000..592f6fb
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java
@@ -0,0 +1,32 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.inspect.dto.SampleOrderDto;
+import com.ruoyi.inspect.mapper.InsOrderRatesMapper;
+import com.ruoyi.inspect.pojo.InsOrderRates;
+import com.ruoyi.inspect.service.InsOrderRatesService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璁㈠崟璐圭敤琛�
+ *
+ * @author zhuo
+ * @since 2025-02-28
+ */
+@Service
+public class InsOrderRatesServiceImpl extends ServiceImpl<InsOrderRatesMapper, InsOrderRates> implements InsOrderRatesService {
+
+    /**
+     * 鏌ヨ璁㈠崟璐圭敤鍒楄〃
+     * @param page
+     * @param sampleOrderDto
+     * @return
+     */
+    @Override
+    public IPage<SampleOrderDto> selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto) {
+        return null;
+    }
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index ae86eed..28495bc 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -557,112 +557,12 @@
         return productDto2IPage;
     }
 
-    @Override
-    public IPage<CostStatisticsDto> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto) {
-        String dates = costStatisticsDto.getDates();
-        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-        costStatisticsDto.setDates(null);
-
-        //todo:浠呯湅鑷繁
-
-        IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-        List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> {
-            Set<String> uniqueTags = new HashSet<>();
-            if (dto.getInspectionItem().contains(",")) {
-                for (String s : dto.getInspectionItem().split(",")) {
-                    uniqueTags.add(s.split("@")[0]);
-                }
-            } else {
-                uniqueTags.add(dto.getInspectionItem().split("@")[0]);
-            }
-            dto.setInspectionItem(uniqueTags.toString());
-            return dto;
-        }).collect(Collectors.toList());
-        dtoIPage.setRecords(collect);
-        return dtoIPage;
-    }
-
-    @Override
-    public Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto) {
-        Map<String, Object> map = new HashMap<>();
-        String dates = costStatisticsDto.getDates();
-        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-        costStatisticsDto.setDates(null);
-        List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-        double totalPrice = costStatisticsDtos.stream()
-                .filter(dto -> dto.getPrice() != null) // 杩囨护鎺変环鏍间负 null 鐨勫璞�
-                .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum())
-                .sum();
-        map.put("total", totalPrice);
-        return map;
-    }
-
-    @Override
-    public Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber) {
-        List<SampleDefectsFatherVo> sampleDefectsFatherVos = insOrderMapper.selectSampleDefects(page, inspectionItems, orderNumber);
-        Map<String, Object> map = new HashMap<>();
-        map.put("records", sampleDefectsFatherVos);
-        Long aLong = insOrderMapper.getCount(inspectionItems, orderNumber);
-        map.put("total", aLong);
-        return map;
-    }
 
     @Override
     public int updateStatus(Integer id) {
         return insOrderMapper.updateStatus(id);
     }
 
-
-    @Override
-    public void export(CostStatisticsDto costStatisticsDto, HttpServletResponse response) throws IOException {
-        //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹�
-        String dates = costStatisticsDto.getDates();
-        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
-        costStatisticsDto.setDates(null);
-        List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
-        costStatisticsDtos = costStatisticsDtos.stream().map(dto -> {
-            Set<String> uniqueTags = new HashSet<>();
-            if (dto.getInspectionItem().contains(",")) {
-                for (String s : dto.getInspectionItem().split(",")) {
-                    uniqueTags.add(s.split("@")[0]);
-                }
-            } else {
-                uniqueTags.add(dto.getInspectionItem().split("@")[0]);
-            }
-            dto.setInspectionItem(uniqueTags.toString());
-            return dto;
-        }).collect(Collectors.toList());
-
-        response.setContentType("application/vnd.ms-excel");
-        response.setCharacterEncoding("UTF-8");
-        // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
-        String fileName = URLEncoder.encode("鏍峰搧璐圭敤缁熻瀵煎嚭", "UTF-8");
-        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
-        Map<String, List<CostStatisticsDto>> groupByCompany =
-                costStatisticsDtos.stream().filter(e -> StrUtil.isNotEmpty(e.getCompany()))
-                        .collect(Collectors.groupingBy(CostStatisticsDto::getCompany));
-        try {
-            // 鏂板缓ExcelWriter
-            // 鏂板缓ExcelWriter
-            ExcelWriter excelWriter =
-                    EasyExcel.write(response.getOutputStream())
-                            .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
-                            .build();
-            for (Map.Entry<String, List<CostStatisticsDto>> companyDataEntry : groupByCompany.entrySet()) {
-                String sheetName = companyDataEntry.getKey();
-                List<CostStatisticsDto> dataList = companyDataEntry.getValue();
-                WriteSheet mainSheet = EasyExcel.writerSheet(sheetName)
-                        .head(CostStatisticsDto.class)
-                        .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
-                        .build();
-                excelWriter.write(dataList, mainSheet);
-            }
-            // 鍏抽棴娴�
-            excelWriter.finish();
-        } catch (IOException e) {
-            throw new RuntimeException("瀵煎嚭澶辫触");
-        }
-    }
 
     /**
      * 鑾峰彇ifs搴撳瓨淇℃伅
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
index 742af90..7d61ac8 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -36,6 +36,7 @@
 import com.ruoyi.inspect.mapper.InsUnqualifiedHandlerMapper;
 import com.ruoyi.system.mapper.UserMapper;
 import com.ruoyi.system.service.InformationNotificationService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.xwpf.usermodel.*;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -65,6 +66,7 @@
  * @createDate 2024-03-17 22:10:02
  */
 @Service
+@Slf4j
 public class InsReportServiceImpl extends ServiceImpl<InsReportMapper, InsReport>
         implements InsReportService {
     @Resource
@@ -540,7 +542,6 @@
             // 娓呯悊涓存椂鏂囦欢澶�
             deleteDirectory(tempFolder);
 
-            System.out.println("ZIP鏂囦欢鍒涘缓瀹屾垚锛�");
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -675,13 +676,11 @@
         FileOutputStream os = null;
         try {
             //鍑瘉 涓嶇劧鍒囨崲鍚庢湁姘村嵃
-//            InputStream is = this.getClass().getResourceAsStream("/lib/license.xml");
-//            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("license.xml");
             InputStream is = Files.newInputStream(new File(licenseUrl).toPath());
             License license = new License();
             license.setLicense(is);
             if (!license.getIsLicensed()) {
-                System.out.println("License楠岃瘉涓嶉�氳繃...");
+                log.info("License楠岃瘉涓嶉�氳繃...");
                 return null;
             }
             //鐢熸垚涓�涓┖鐨凱DF鏂囦欢
@@ -1120,7 +1119,7 @@
             License license = new License();
             license.setLicense(is);
             if (!license.getIsLicensed()) {
-                System.out.println("License楠岃瘉涓嶉�氳繃...");
+                log.info("License楠岃瘉涓嶉�氳繃...");
                 return null;
             }
             //鐢熸垚涓�涓┖鐨凱DF鏂囦欢
@@ -1131,7 +1130,6 @@
             //瑕佽浆鎹㈢殑word鏂囦欢
             com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
             doc.save(os, SaveFormat.PDF);
-            String name = file.getName();
             return file.getName();
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnPassServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnPassServiceImpl.java
deleted file mode 100644
index 6c7dc54..0000000
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnPassServiceImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.inspect.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.QueryWrappers;
-import com.ruoyi.inspect.dto.UnPassPageDto;
-import com.ruoyi.inspect.mapper.InsUnPassMapper;
-import com.ruoyi.inspect.pojo.InsUnPass;
-import com.ruoyi.inspect.service.InsUnPassService;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author 鏈变匠鍚�
- * @date 2024/5/8 13:02
- */
-@Service
-public class InsUnPassServiceImpl extends ServiceImpl<InsUnPassMapper, InsUnPass> implements InsUnPassService {
-
-    @Resource
-    private InsUnPassMapper insUnPassMapper;
-
-    @Override
-    public IPage<UnPassPageDto> pageInsUnPass(Page page, UnPassPageDto unPassPageDto) {
-        return insUnPassMapper.pageInsUnPass(page, QueryWrappers.queryWrappers(unPassPageDto));
-    }
-}
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 2eb8e88..01a3ecf 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -178,60 +178,7 @@
             ${ew.customSqlSegment}
         </if>
     </select>
-    <select id="selectCostStatistics" resultType="com.ruoyi.inspect.dto.CostStatisticsDto">
-        select * from (
-        SELECT A.id,
-        A.entrust_code,
-        A.create_time,
-        A.sample,
-        A.model,
-        A.inspection_item,
-        A.company,
-        A.`name`,
-        COUNT(1) num,
-        SUM(A.price) price,
-        SUM(A.cost) cost
-        FROM
-        (SELECT
-        i.id,
-        i.entrust_code,
-        i.create_time,
-        isa.sample,
-        isa.sample_code,
-        isa.model,
-        c.price,
-        c.cost,
-        c.inspection_item,
-        i.company,
-        u.`name`,
-        i.create_user,
-        c.ins_sample_id
-        FROM
-        ins_order i
-        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
-        LEFT JOIN `user` u ON u.id = i.user_id
-        left join custom cus on cus.id = u.company
-        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
-        GROUP_CONCAT(b.inspection_item2
-        SEPARATOR ',')
-        inspection_item from (select * ,
-        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
-        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
-        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
-        GROUP BY
-        A.id,
-        A.entrust_code,
-        A.create_time,
-        A.sample,
-        A.model,
-        A.inspection_item,
-        A.company,
-        A.`name`
-        ) B
-        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
-            ${ew.customSqlSegment}
-        </if>
-    </select>
+
     <select id="selectDeviceList" resultType="java.util.Map">
         select device_name,
                en_device_name,
@@ -272,28 +219,6 @@
         </if>
     </select>
 
-    <select id="getCount" resultType="long">
-        select count(1)
-        from (
-        SELECT io.entrust_code,sam.sample,ip.inspection_item,u.name,b.create_time, sam.id
-        from ins_order io
-        left JOIN ins_sample sam on io.id=sam.ins_order_id
-        LEFT JOIN ins_product ip on ip.ins_sample_id=sam.id
-        LEFT JOIN
-        (SELECT create_time,create_user,ins_product_id FROM (select * FROM ins_product_user ORDER BY
-        ins_product_user.create_time DESC) a GROUP BY a.ins_product_id) b
-        on b.ins_product_id=ip.id
-        left JOIN `user` u on u.id=b.create_user
-        where (ip.ins_result=0 OR ip.state=0)
-        <if test="inspectionItems != null and inspectionItems != ''">
-            and inspection_item like concat('%', #{inspectionItems}, '%')
-        </if>
-        <if test="orderNumber != null and orderNumber != ''">
-            and io.entrust_code like concat('%', #{orderNumber}, '%')
-        </if>
-        ) temp
-    </select>
-
     <select id="getStandardMethodCode" resultType="java.lang.String">
         select code
         from standard_method
@@ -312,77 +237,6 @@
                      where son_laboratory = #{laboratory}
                        and ins_sample_id in
                            (select id from ins_sample where ins_order_id = #{id}))
-    </select>
-
-    <select id="selectCostStatistics2" resultType="com.ruoyi.inspect.dto.CostStatisticsDto">
-        select * from (
-        SELECT A.id,
-        A.entrust_code,
-        A.create_time,
-        A.sample,
-        A.model,
-        A.inspection_item,
-        A.company,
-        A.`name`,
-        production,
-        engineering,
-        COUNT(1) num,
-        SUM(A.price) price,
-        SUM(A.cost) cost
-        FROM
-        (SELECT
-        i.id,
-        i.entrust_code,
-        i.create_time,
-        isa.sample,
-        isa.sample_code,
-        isa.model,
-        c.price,
-        c.cost,
-        c.inspection_item,
-        i.company,
-        u.`name`,
-        i.create_user,
-        c.ins_sample_id,
-        production,
-        engineering
-        FROM
-        ins_order i
-        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
-        LEFT JOIN `user` u ON u.id = i.user_id
-        left join custom cus on cus.id = u.company
-        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
-        GROUP_CONCAT(b.inspection_item2
-        SEPARATOR ',')
-        inspection_item from (select * ,
-        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
-        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
-        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
-        GROUP BY
-        A.id,
-        A.entrust_code,
-        A.create_time,
-        A.sample,
-        A.model,
-        A.inspection_item,
-        A.company,
-        A.`name`,
-        production,
-        engineering
-        ORDER BY
-        A.id,
-        A.entrust_code,
-        A.create_time,
-        A.sample,
-        A.model,
-        A.inspection_item,
-        A.company,
-        A.`name`,
-        production,
-        engineering) B
-        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
-            ${ew.customSqlSegment}
-        </if>
     </select>
 
     <select id="seldepLimsId" resultType="java.lang.String">
diff --git a/inspect-server/src/main/resources/mapper/InsProductMapper.xml b/inspect-server/src/main/resources/mapper/InsProductMapper.xml
index 7d92da9..908cc0e 100644
--- a/inspect-server/src/main/resources/mapper/InsProductMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsProductMapper.xml
@@ -141,4 +141,12 @@
         where io2.id = #{orderId}
         and ip.is_binding != 1
     </select>
+
+    <!-- 鏍规嵁璁㈠崟鏌ヨ浜у搧id -->
+    <select id="selectProductByOrderId" resultType="com.ruoyi.inspect.pojo.InsProduct">
+        select ip.*, is2.sample_code
+        from ins_product ip
+                 left join ins_sample is2 on is2.id = ip.ins_sample_id
+        where is2.ins_order_id = #{orderId}
+    </select>
 </mapper>
diff --git a/inspect-server/src/main/resources/mapper/InsUnPassMapper.xml b/inspect-server/src/main/resources/mapper/InsUnPassMapper.xml
deleted file mode 100644
index 8a22fe9..0000000
--- a/inspect-server/src/main/resources/mapper/InsUnPassMapper.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.inspect.mapper.InsUnPassMapper">
-
-    <select id="pageInsUnPass" resultType="com.ruoyi.inspect.dto.UnPassPageDto">
-        SELECT * FROM
-            ins_un_pass iu
-        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
-            ${ew.customSqlSegment}
-        </if>
-    </select>
-</mapper>
diff --git a/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java b/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
index 7b02c03..b49c9f8 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
@@ -114,7 +114,6 @@
     @ApiOperation(value = "涓存椂鎺ュ彛-娣诲姞7鏈堜唤8鏈堜唤鐨勬暟鎹�")
     @GetMapping("temporaryInterface")
     public void temporaryInterface() {
-        System.out.println("寮�濮嬬粰姣忎釜浜鸿繘琛屾帓鐝�,榛樿鏃╃彮======start");
         // TODO 缁欐瘡涓汉閮借繘琛屾帓鐝�(榛樿鏃╃彮)
         PerformanceShiftAddDto performanceShiftAddDto = new PerformanceShiftAddDto();
         //鐝--鏃�(鏌ヨ瀛楀吀)
@@ -140,13 +139,11 @@
             endOfWeek = startOfWeek.plusDays(6);
             LocalDateTime startDateTime = LocalDateTime.of(startOfWeek, LocalTime.MIDNIGHT);
             LocalDateTime endDateTime = LocalDateTime.of(endOfWeek, LocalTime.MIDNIGHT);
-            System.out.println("Week starts on " + startDateTime + " and ends on " + endDateTime);
             performanceShiftAddDto.setStartWeek(startDateTime);
             performanceShiftAddDto.setEndWeek(endDateTime);
             performanceShiftService.performanceShiftAdd(performanceShiftAddDto);
             startOfWeek = startOfWeek.plusWeeks(1);
         }
 
-        System.out.println("鎺掔彮缁撴潫======end");
     }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java
index c54d0a4..fd90aba 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java
@@ -37,8 +37,6 @@
 
         // 鍙戣捣OA娴佺▼
         OAResult oaResult = oaService.sendWorkFlow(wri);
-        // 杈撳嚭OA娴佺▼鎵ц缁撴灉
-        System.out.println(oaResult);
         return oaResult;
     }
 
@@ -51,17 +49,15 @@
         wri.setCreaterId(createrId);
         wri.setRequestLevel("0");
         wri.setRequestName(requestName);
+        //todo: oa鎻愪氦 1: 鐩存帴鍙戦�佹祦绋�, 0:瀛樺叆鑽夌绠�
 //        wri.setIsnextflow("1");
         wri.setIsnextflow("0");
         //鍒涘缓涓昏〃
         OAWorkflowTable wmi = oaService.createOAMainWorkflowTable(mainFields);
         // 灏嗕富琛ㄤ俊鎭~鍏呭埌娴佺▼淇℃伅閲�
         wri.setWorkflowMainTable(wmi);
-
         // 鍙戣捣OA娴佺▼
         OAResult oaResult = oaService.sendWorkFlow(wri);
-        // 杈撳嚭OA娴佺▼鎵ц缁撴灉
-        System.out.println(oaResult);
         return oaResult;
     }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java
index c80683f..4044700 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java
@@ -23,11 +23,10 @@
 			oaWorkflowRequestTableField.add(createOAWorkflowRequestTableField(field.getKey(), field.getValue().toString()));
 		}
 
-		System.out.println("@#######################");
-		for (OAWorkflowRequestTableField workflowRequestTableField : oaWorkflowRequestTableField) {
-
-			System.out.println(workflowRequestTableField.fieldName +","+ workflowRequestTableField.fieldValue +"--"+ workflowRequestTableField.fieldType);
-		}
+//		for (OAWorkflowRequestTableField workflowRequestTableField : oaWorkflowRequestTableField) {
+//
+//			System.out.println(workflowRequestTableField.fieldName +","+ workflowRequestTableField.fieldValue +"--"+ workflowRequestTableField.fieldType);
+//		}
 		//鍒涘缓涓昏〃鍒�
 		ArrayOfOAWorkflowRequestTableField wrti = new ArrayOfOAWorkflowRequestTableField();
 		wrti.oaWorkflowRequestTableField = oaWorkflowRequestTableField;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
index f52e83e..044eb71 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
@@ -4,7 +4,7 @@
 
 /**
  * 杞箟鍜屽弽杞箟宸ュ叿绫�
- * 
+ *
  * @author ruoyi
  */
 public class EscapeUtil
@@ -30,7 +30,7 @@
 
     /**
      * 杞箟鏂囨湰涓殑HTML瀛楃涓哄畨鍏ㄧ殑瀛楃
-     * 
+     *
      * @param text 琚浆涔夌殑鏂囨湰
      * @return 杞箟鍚庣殑鏂囨湰
      */
@@ -41,7 +41,7 @@
 
     /**
      * 杩樺師琚浆涔夌殑HTML鐗规畩瀛楃
-     * 
+     *
      * @param content 鍖呭惈杞箟绗︾殑HTML鍐呭
      * @return 杞崲鍚庣殑瀛楃涓�
      */
@@ -52,7 +52,7 @@
 
     /**
      * 娓呴櫎鎵�鏈塇TML鏍囩锛屼絾鏄笉鍒犻櫎鏍囩鍐呯殑鍐呭
-     * 
+     *
      * @param content 鏂囨湰
      * @return 娓呴櫎鏍囩鍚庣殑鏂囨湰
      */
@@ -63,7 +63,7 @@
 
     /**
      * Escape缂栫爜
-     * 
+     *
      * @param text 琚紪鐮佺殑鏂囨湰
      * @return 缂栫爜鍚庣殑瀛楃
      */
@@ -104,7 +104,7 @@
 
     /**
      * Escape瑙g爜
-     * 
+     *
      * @param content 琚浆涔夌殑鍐呭
      * @return 瑙g爜鍚庣殑瀛楃涓�
      */
@@ -153,15 +153,4 @@
         return tmp.toString();
     }
 
-    public static void main(String[] args)
-    {
-        String html = "<script>alert(1);</script>";
-        String escape = EscapeUtil.escape(html);
-        // String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>";
-        // String html = "<123";
-        // String html = "123>";
-        System.out.println("clean: " + EscapeUtil.clean(html));
-        System.out.println("escape: " + escape);
-        System.out.println("unescape: " + EscapeUtil.unescape(escape));
-    }
 }

--
Gitblit v1.9.3