zss
2025-03-03 80773499c1cdf8d774fdf728df72da5ea00804f5
完成8体系管理要求
已删除98个文件
已修改28个文件
已添加327个文件
30399 ■■■■ 文件已修改
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/LaboratoryController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/ProductPartController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/ProductSupplierDensityController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/SealController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTreeController.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StructureTestObjectPartController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/CopyStandardProductListDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/FactoryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityCheckDto.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/InsSampleReceiveDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/LaboratoryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/ModelDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/PageTestObjectDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/ProductDTO1.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/ProductDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/ResetTreeDragDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/SampleDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/SampleTypeDto.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/TestItemDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectData.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/CertificationMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/IfsInventoryQuantityMapper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/LaboratoryMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/ProductMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/ProductPartMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/ProductSupplierDensityMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/SealMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardMethodListMapper.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardMethodMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardProductListMapper.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardProductListSupplierAskMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTemplateMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureTestObjectMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureTestObjectPartMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/Certification.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/InsSample1.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/Product.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/ProductPart.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/ProductSupplierDensity.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/Seal.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethodList.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardProductList.java 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardProductListSupplierAsk.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardTemplate.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardTree.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureItemParameter.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureTestObject.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureTestObjectPart.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/CertificationService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/LaboratoryService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/ProductPartService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/ProductSupplierDensityService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/SealService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardMethodListService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardMethodService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService2.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListSupplierAskService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardTemplateService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardTreeService.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StructureItemParameterService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StructureTestObjectPartService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StructureTestObjectService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/LaboratoryServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductPartServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductSupplierDensityServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/SealServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodListServiceImpl.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListService2Impl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java 701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListSupplierAskServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTemplateServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java 535 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureItemParameterServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureTestObjectPartServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureTestObjectServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/CapacityScopeController.java 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/CertificationController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/LaboratoryController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/ProductPartController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/ProductSupplierDensityController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/SealController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/StandardMethodController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/StandardTemplateController.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/StandardTreeController.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/controller/StructureTestObjectPartController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/CopyStandardProductListDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/FactoryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/IfsInventoryQuantityCheckDto.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/IfsInventoryQuantityDto.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/IfsInventoryQuantitySupplierDto.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/InsSampleReceiveDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/LaboratoryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/ModelDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/PageTestObjectDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/ProductDTO1.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/ProductDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/ResetTreeDragDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/SampleDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/SampleTypeDto.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/dto/TestItemDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/excel/StructureTestObjectData.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/excel/StructureTestObjectListener.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/CertificationMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/IfsInventoryQuantityMapper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/LaboratoryMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/ProductMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/ProductPartMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/ProductSupplierDensityMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/SealMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardMethodListMapper.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardMethodMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardProductListMapper.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardProductListSupplierAskMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardTemplateMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardTreeMapper.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StructureItemParameterMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StructureTestObjectMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/mapper/StructureTestObjectPartMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/Certification.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/IfsInventoryQuantity.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/InsSample1.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/Laboratory.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/Product.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/ProductPart.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/ProductSupplierDensity.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/Seal.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardMethod.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardMethodList.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardProductList.java 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardProductListSupplierAsk.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardTemplate.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardTree.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StructureItemParameter.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StructureTestObject.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/pojo/StructureTestObjectPart.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/CapacityScopeService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/CertificationService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/LaboratoryService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/ProductPartService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/ProductService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/ProductSupplierDensityService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/SealService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardMethodListService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardMethodService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardProductListService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardProductListService2.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardProductListSupplierAskService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardTemplateService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StandardTreeService.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StructureItemParameterService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StructureTestObjectPartService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/StructureTestObjectService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/CapacityScopeServiceImpl.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/CertificationServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/LaboratoryServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/ProductPartServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/ProductServiceImpl.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/ProductSupplierDensityServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/SealServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardMethodListServiceImpl.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardMethodServiceImpl.java 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardProductListService2Impl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardProductListServiceImpl.java 701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardProductListSupplierAskServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardTemplateServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardTreeServiceImpl.java 535 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StructureItemParameterServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StructureTestObjectPartServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StructureTestObjectServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/CertificationMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/IfsInventoryQuantityMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/LaboratoryMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/ProductMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/ProductPartMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/ProductSupplierDensityMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/SealMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardMethodListMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardMethodMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardProductListMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardTemplateMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardTreeMapper.xml 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StructureTestMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StructureTestObjectPartMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/clean.bat 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/package.bat 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/run.bat 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalCheckController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalCorrectController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalImplementController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalMeetingController.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalPlanController.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalReportController.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageControlPlanListController.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentAlterController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentCancelController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentControlledController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentIssueRecycleController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentListController.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageMeetingController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageMeetingParticipantsController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordAuditController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCancelController.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCheckController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsController.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsTotalController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIssueRecycleController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordTotalController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordVerifyController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramController.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramFileController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewReportController.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRiskAssessmentResultsController.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/ClientSatisfactionDto.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalCheckDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalCorrectDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalImplementDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalMeetingDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalMeetingParticipantDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalPlanDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageDocumentIssueRecycleDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageMeetingDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageMeetingParticipantsDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/excel/ManageDocumentListListener.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ClientSatisfactionAnalyseFileMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ClientSatisfactionMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCheckDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCheckMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCorrectFileMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCorrectMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalImplementDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalImplementMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalMeetingDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalMeetingMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalPlanDetailMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalPlanMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalReportMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageControlPlanListMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentAlterMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentCancelMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentControlledMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentIssueRecycleMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentListMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageMeetingMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageMeetingParticipantsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordAuditMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordCancelMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordCheckMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIntervalsMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIntervalsTotalMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIssueRecycleMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordTotalMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordVerifyMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewProgramFileMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewProgramMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewReportMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRiskAssessmentResultsMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ClientSatisfaction.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ClientSatisfactionAnalyseFile.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCheck.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCheckDetail.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCorrect.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCorrectFile.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalImplement.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalImplementDetail.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalMeeting.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalMeetingDetail.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalPlan.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalPlanDetail.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalReport.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageControlPlanList.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentAlter.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentCancel.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentControlled.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentIssueRecycle.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentList.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageMeeting.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageMeetingParticipants.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordAudit.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCancel.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCheck.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervals.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervalsTotal.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIssueRecycle.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordTotal.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordVerify.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewProgram.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewProgramFile.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewReport.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRiskAssessmentResults.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/schedule/ManageRecordTotalSchedule.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ClientSatisfactionService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCheckDetailService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCheckService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCorrectFileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCorrectService.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalImplementDetailService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalImplementService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalMeetingDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalMeetingService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalPlanDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalPlanService.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalReportService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageControlPlanListService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentAlterService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentCancelService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentControlledService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentIssueRecycleService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentListService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageMeetingParticipantsService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageMeetingService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordAuditService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordCancelService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordCheckService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIntervalsService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIntervalsTotalService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIssueRecycleService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordTotalService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordVerifyService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewProgramFileService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewProgramService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewReportService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRiskAssessmentResultsService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ClientSatisfactionServiceImpl.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCheckDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCheckServiceImpl.java 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCorrectFileServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCorrectServiceImpl.java 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalImplementDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalImplementServiceImpl.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalPlanDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalPlanServiceImpl.java 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalReportServiceImpl.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageControlPlanListServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentCancelServiceImpl.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentIssueRecycleServiceImpl.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageMeetingParticipantsServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageMeetingServiceImpl.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordAuditServiceImpl.java 670 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java 477 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java 467 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java 524 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsTotalServiceImpl.java 499 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java 695 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java 421 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewProgramFileServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewProgramServiceImpl.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewReportServiceImpl.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/vo/ManageControlPlanListVo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/vo/ManageRiskAssessmentResultsVo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/vo/MeetingParticipantsDetailsVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/vo/ReviewProgramDetailsVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/lib/license.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ClientSatisfactionAnalyseFileMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ClientSatisfactionMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalCheckMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalCorrectFileMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalCorrectMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalImplementMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalMeetingDetailMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalMeetingMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalPlanDetailMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalPlanMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/InternalReportMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageControlPlanListMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageDocumentAlterMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageDocumentCancelMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageDocumentControlledMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageDocumentIssueRecycleMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageDocumentListMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageMeetingMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageMeetingParticipantsMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordAuditMapper.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordCancelMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordCheckMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordIntervalsMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordIntervalsTotalMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordIssueRecycleMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordTotalMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRecordVerifyMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageReviewProgramFileMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageReviewProgramMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageReviewReportMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/mapper/ManageRiskAssessmentResultsMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/analysis-risk-factors.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/audit-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/cancel-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/check-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/internal-check.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/internal-correct.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/internal-implement.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/internal-meeting.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/internal-plan.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/internal-report.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/intervals-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/recycle-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/review-meet.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/review-program.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/review-report.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/resources/static/verify-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/basic/pojo/InsSample.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsSample.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/util/HackLoopTableRenderPolicy.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/util/XWPFDocumentUtils.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryCorrectionHoursMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryWorkingHoursDayMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryCorrectionHoursServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOriginalHoursServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/UserMapper.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/LaboratoryController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/ProductPartController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/ProductSupplierDensityController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/SealController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTreeController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/controller/StructureTestObjectPartController.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/CopyStandardProductListDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/FactoryDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityCheckDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/InsSampleReceiveDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/LaboratoryDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/ModelDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/PageTestObjectDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/ProductDTO1.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/ProductDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/ResetTreeDragDTO.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/SampleDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/SampleTypeDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/dto/TestItemDto.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectData.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/CertificationMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/IfsInventoryQuantityMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/LaboratoryMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/ProductMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/ProductPartMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/ProductSupplierDensityMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/SealMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardMethodListMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardMethodMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardProductListMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardProductListSupplierAskMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTemplateMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureTestObjectMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureTestObjectPartMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/Certification.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/IfsInventoryQuantity.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/InsSample1.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/Product.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/ProductPart.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/ProductSupplierDensity.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/Seal.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethodList.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardProductList.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardProductListSupplierAsk.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardTemplate.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardTree.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureItemParameter.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureTestObject.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureTestObjectPart.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/CertificationService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/LaboratoryService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/ProductPartService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/ProductSupplierDensityService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/SealService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardMethodListService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardMethodService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService2.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListSupplierAskService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardTemplateService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardTreeService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StructureItemParameterService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StructureTestObjectPartService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StructureTestObjectService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/LaboratoryServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductPartServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductSupplierDensityServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/SealServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodListServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListService2Impl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListSupplierAskServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTemplateServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureItemParameterServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureTestObjectPartServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureTestObjectServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/inspect/controller/CapacityScopeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,393 @@
package com.ruoyi.inspect.controller;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.common.core.domain.entity.SysDictData;
import com.ruoyi.system.service.ISysDictTypeService;
import com.ruoyi.inspect.dto.PageTestObjectDto;
import com.ruoyi.inspect.dto.ProductDTO1;
import com.ruoyi.inspect.excel.StructureTestObjectData;
import com.ruoyi.inspect.excel.StructureTestObjectListener;
import com.ruoyi.inspect.pojo.Product;
import com.ruoyi.inspect.pojo.StandardTemplate;
import com.ruoyi.inspect.pojo.StructureItemParameter;
import com.ruoyi.inspect.pojo.StructureTestObject;
import com.ruoyi.inspect.service.CapacityScopeService;
import com.ruoyi.inspect.service.ProductService;
import com.ruoyi.inspect.service.StandardTemplateService;
import com.ruoyi.inspect.service.StructureItemParameterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
 * æ£€éªŒé¡¹ç›®å‚æ•°(StructureItemParameter)表控制层
 *
 * @author makejava
 * @since 2024-02-26 16:21:17
 */
@Api(tags = "能力范围")
@AllArgsConstructor
@RestController
@RequestMapping("/capacityScope")
public class CapacityScopeController {
    private CapacityScopeService capacityScopeService;
    private ProductService productService;
    private StructureItemParameterService structureItemParameterService;
    private ISysDictTypeService dictTypeService;
    private StandardTemplateService standardTemplateService;
    @ApiOperation(value = "获取项目检验参数列表")
    @PostMapping("/selectItemParameterList")
    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) throws Exception {
        return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter));
    }
    @ApiOperation(value = "添加项目检验参数")
    @PostMapping("/addItemParameter")
    public Result addItemParameter(@RequestBody StructureItemParameter itemParameter) {
        return Result.success(capacityScopeService.addItemParameter(itemParameter));
    }
    @ApiOperation(value = "删除项目检验参数")
    @PostMapping("/delItemParameter")
    public Result<?> delItemParameter(Integer id) {
        return Result.success(capacityScopeService.delItemParameter(id));
    }
    @ApiOperation(value = "修改项目检验参数")
    @PostMapping("/upItemParameter")
    public Result<?> upItemParameter(@RequestBody StructureItemParameter itemParameter) {
        return Result.success(capacityScopeService.upItemParameter(itemParameter));
    }
    @ApiOperation(value = "获取检验对象")
    @PostMapping("/selectTestObjectList")
    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) throws Exception {
        return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto));
    }
    @ApiOperation(value = "添加检验对象")
    @PostMapping("/addTestObject")
    public Result addTestObject(@RequestBody StructureTestObject testObject) {
        return Result.success(capacityScopeService.addTestObject(testObject));
    }
    @ApiOperation(value = "删除检验对象")
    @PostMapping("/delTestObject")
    public Result<?> delTestObject(Integer id) {
        return Result.success(capacityScopeService.delTestObject(id));
    }
    @ApiOperation(value = "修改检验对象")
    @PostMapping("/upTestObject")
    public Result upTestObject(@RequestBody StructureTestObject testObject) {
        return Result.success(capacityScopeService.upTestObject(testObject));
    }
    @ApiOperation(value = "获取检验对象枚举")
    @GetMapping("/selectTestObjectByName")
    public Result selectTestObjectByName() {
        return Result.success(capacityScopeService.selectTestObjectByName());
    }
    @ApiOperation(value = "设备里面选择检验项目(树形结构)")
    @PostMapping("/getInsProduction")
    public Result getInsProduction() {
        return Result.success(capacityScopeService.getInsProduction());
    }
    @ApiOperation(value = "维护检验对象的产品")
    @PostMapping("/selectProductListByObjectId")
    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) throws Exception {
        return Result.success(productService.selectProductListByObjectId(page, productDTO));
    }
    @ApiOperation(value = "添加产品")
    @PostMapping("/addProduct")
    public Result addProduct(@RequestBody Product product) {
        return Result.success(productService.addProduct(product));
    }
    @ApiOperation(value = "修改产品")
    @PostMapping("/upProduct")
    public Result upProduct(@RequestBody Product product) {
        return Result.success(productService.upProduct(product));
    }
    @ApiOperation(value = "删除产品")
    @PostMapping("/delProduct")
    public Result delProduct(Integer id) {
        return Result.success(productService.delProduct(id));
    }
    @ApiOperation(value = "获取检验对象树")
    @GetMapping("/getItemTree")
    public Result getItemTree() {
        return Result.success(capacityScopeService.getItemTree());
    }
    @ApiOperation(value = "装备导入检验项目")
    @PostMapping("/importEquipData")
    @Transactional
    public Result importEquipData(@RequestParam("file") MultipartFile file) throws Exception {
        InputStream inputStream = file.getInputStream();
        List<StructureItemParameter> lists = new ArrayList<>();
        AtomicReference<String> sample = new AtomicReference<>();
        ExcelUtil.readBySax(inputStream, -1, (i, l, list1) -> {
            if (l == 1) {
                sample.set(list1.get(1) + "");
            }
            if (l >= 1) {
                StructureItemParameter str = new StructureItemParameter();
                // æµ‹è¯•对象
                if (list1.get(1) == null) {
                    str.setSample(null);
                } else {
                    String brand = (String) list1.get(1);
                    StringBuilder builder = new StringBuilder();
                    builder.append("[");
                    // äº§å“
                    if (ObjectUtil.isNotEmpty(list1.get(2))) {
                        String production = (String) list1.get(2);
                        if (!production.contains(";")) {
                            builder.append(String.format("[\"%s\",\"%s\"]", brand, production));
                        } else {
                            Arrays.stream(production.split(";")).forEach(item -> {
                                builder.append(String.format("[\"%s\",\"%s\"],", brand, item));
                            });
                            builder.deleteCharAt(builder.length() - 1);
                        }
                    } else {
                        builder.append("[");
                        builder.append(String.format("\"%s\"", brand));
                        builder.append("]");
                    }
                    builder.append("]");
                    str.setSample(builder.toString());
                }
                // æ£€éªŒé¡¹
                str.setInspectionItem(list1.get(4).toString().trim());
                // æ£€éªŒé¡¹è‹±æ–‡
                if (list1.get(5) != null) {
                    str.setInspectionItemEn(list1.get(5).toString());
                }
                // æ£€éªŒå­é¡¹
                if (list1.get(6) == null) {
                    str.setInspectionItemSubclass(null);
                } else {
                    str.setInspectionItemSubclass(list1.get(6).toString().trim());
                }
                // æ£€éªŒå­é¡¹è‹±æ–‡
                if (list1.get(7) == null) {
                    str.setInspectionItemSubclassEn(null);
                } else {
                    str.setInspectionItemSubclassEn(String.valueOf(list1.get(7).toString()));
                }
                // æ£€éªŒé¡¹åˆ†ç±»
                if (list1.get(22) != null && list1.get(22) != "") {
                    str.setInspectionItemClass(list1.get(22).toString().trim());
                } else {
                    str.setInspectionItemClass(null);
                }
                // æ£€éªŒé¡¹åˆ†ç±»è‹±æ–‡
                if (list1.get(23) != null && list1.get(23) != "") {
                    str.setInspectionItemClassEn(list1.get(23) + "");
                } else {
                    str.setInspectionItemClassEn(null);
                }
                LambdaQueryWrapper<StructureItemParameter> wrapper = Wrappers.lambdaQuery(StructureItemParameter.class)
                        .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem())
                        .eq(StructureItemParameter::getSample, str.getSample())
                        .last("limit 1");
                // åˆ¤æ–­æ˜¯å¦æœ‰æ£€éªŒé¡¹ç±»åž‹
                if (ObjectUtils.isNotEmpty(str.getInspectionItemClass())) {
                    wrapper.eq(StructureItemParameter::getInspectionItemClass, str.getInspectionItemClass());
                }
                // åˆ¤æ–­æ˜¯å¦æœ‰æ£€éªŒå­é¡¹
                if (ObjectUtils.isNotEmpty(str.getInspectionItemSubclass())) {
                    wrapper.eq(StructureItemParameter::getInspectionItemSubclass, str.getInspectionItemSubclass());
                }
                StructureItemParameter db_str = structureItemParameterService.getOne(wrapper);
                if (ObjectUtils.isNotEmpty(db_str)) {
                    str.setId(db_str.getId());
                }
                // æ–¹æ³•名称
                if (list1.get(8) == null) {
                    str.setMethod(null);
                } else {
                    StringBuffer buffer = new StringBuffer();
                    String input = list1.get(8).toString();
                    buffer.append("[");
                    String[] values = input.split(";");
                    for (String value : values) {
                        buffer.append("\"").append(value.trim()).append("\",");
                    }
                    buffer.deleteCharAt(buffer.length() - 1);
                    buffer.append("]");
                    str.setMethod(buffer.toString());
                }
                // è¯•验室
                if (list1.get(9) == null) {
                    str.setSonLaboratory(null);
                } else {
                    str.setSonLaboratory(list1.get(9).toString());
                }
                // è®¡é‡å•位
                if (list1.get(10) == null) {
                    str.setUnit(null);
                } else {
                    str.setUnit(list1.get(10).toString());
                }
                // è¦æ±‚值
                if (list1.get(11) == null) {
                    str.setAskTell(null);
                } else {
                    str.setAskTell(list1.get(11).toString());
                }
                // è¦æ±‚描述
                if (list1.get(12) == null) {
                    str.setAsk(null);
                } else {
                    str.setAsk(list1.get(12).toString());
                }
                // å•ä»·
                if (list1.get(13) == null) {
                    str.setPrice(null);
                } else {
                    str.setPrice(list1.get(13) + "");
                }
                // å·¥æ—¶ç³»æ•°
                if (list1.get(14) == null) {
                    str.setManHour(null);
                } else {
                    str.setManHour(Double.valueOf(list1.get(14).toString()));
                }
                // å·¥æ—¶åˆ†ç»„
                if (list1.get(15) == null) {
                    str.setManHourGroup(null);
                } else {
                    str.setManHourGroup(list1.get(15).toString());
                }
                // é¢„计完成时间
                if (list1.get(16) == null) {
                    str.setManDay(null);
                } else {
                    str.setManDay(Integer.valueOf(list1.get(16).toString()));
                }
                // æ•°æ®ç±»åž‹
                String jy;
                if (list1.get(17).toString().equals("非采集类型")) {
                    jy = "0";
                } else {
                    jy = "1";
                }
                str.setInspectionItemType(jy);
                // æ£€éªŒé¡¹ç±»åž‹
                String validateValueType = list1.get(18).toString();
                if (ObjectUtils.isNotEmpty(validateValueType)) {
                    List<SysDictData> enums = dictTypeService.selectDictDataByName("检验值类型")
                            .stream().filter(sysDictData -> sysDictData.getDictLabel().equals(validateValueType)).collect(Collectors.toList());
                    str.setInspectionValueType(enums.get(0).getDictValue());
                }
                int bsm;
                //特殊标识
                if (list1.get(19).toString().equals("否")) {
                    bsm = 0;
                } else {
                    bsm = 1;
                }
                str.setBsm(bsm + "");
                // æ•°å­—å­—å…¸
                if (list1.get(20) != null) {
                    str.setDic(list1.get(20) + "");
                } else {
                    str.setDic(null);
                }
                // åŽŸå§‹è®°å½•æ¨¡æ¿
                StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list1.get(21)));
                if (standTempIdByName != null) {
                    str.setTemplateId(standTempIdByName.getId());
                } else {
                    str.setTemplateId(null);
                }
                try {
                    if (list1.get(24) != null) {
                        str.setLaboratory(list1.get(24) + "");
                    }
                } catch (Exception e) {
                }
                // æ¡ä»¶
                if (list1.get(25) == null) {
                    str.setRadiusList(null);
                } else {
                    StringBuffer buffer = new StringBuffer();
                    String input = list1.get(25).toString();
                    buffer.append("[");
                    String[] values = input.split(";");
                    for (String value : values) {
                        buffer.append("\"").append(value.trim()).append("\",");
                    }
                    buffer.deleteCharAt(buffer.length() - 1);
                    buffer.append("]");
                    str.setRadiusList(buffer.toString());
                }
                // æ”¶è´¹æ ‡å‡†
                if (list1.get(26) == null) {
                    str.setRates(null);
                } else {
                    str.setRates(list1.get(26) + "");
                }
                lists.add(str);
            }
        });
//        structureItemParameterService.removeNoSample(sample.get());
        // å¦‚果数据库里面的数据存在那么就执行更新拷贝操作
        try {
            structureItemParameterService.saveOrUpdateBatch(lists);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("服务端报错");
        }
        return Result.success();
    }
    @ApiOperation(value = "导入检验对象")
    @PostMapping("/importExcel")
    public Result importExcel(@RequestParam("file") MultipartFile file) {
        try {
            EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(productService)).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Result.success();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/CertificationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.Certification;
import com.ruoyi.inspect.service.CertificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "资质说明")
@AllArgsConstructor
@RestController
@RequestMapping("/certification")
public class CertificationController {
    private CertificationService certificationService;
    @ApiOperation(value = "查询资质明细列表")
    @PostMapping("/getCertificationDetail")
    public Result getCertificationDetail(Page page,Certification certification) {
        return Result.success(certificationService.getCertificationDetail(page, certification));
    }
    @ApiOperation(value = "添加资质明细列表")
    @PostMapping("/addCertificationDetail")
    public Result addCertificationDetail(@RequestBody Certification certification) {
        return Result.success(certificationService.addCertificationDetail(certification));
    }
    @ApiOperation(value = "删除资质明细列表")
    @PostMapping("/delCertificationDetail")
    public Result<?> delCertificationDetail( String ids) {
        return Result.success(certificationService.delCertificationDetail(ids));
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/LaboratoryController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.Laboratory;
import com.ruoyi.inspect.service.LaboratoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * å®žéªŒå®¤ç®¡ç†(LaboratoryController)表控制层
 */
@Api(tags = "场所或设施")
@RestController
@RequestMapping("/laboratoryScope")
public class LaboratoryController {
    @Resource
    private LaboratoryService laboratoryService;
    @ApiOperation(value = "查询实验室管理列表")
    @PostMapping("/selectItemParameter")
    public Result selectItemParameter(Page page ,Laboratory itemParameter) {
        return Result.success(laboratoryService.selectItemParameter(page, itemParameter));
    }
    @ApiOperation(value = "添加实验室参数")
    @PostMapping("/addParameter")
    public Result addParameter(@RequestBody Laboratory itemParameter) {
        return Result.success(laboratoryService.addParameter(itemParameter));
    }
    @ApiOperation(value = "删除实验室参数")
    @PostMapping("/delParameter")
    public Result<?> delParameter(Integer id) {
        return Result.success(laboratoryService.delParameter(id));
    }
    @ApiOperation(value = "修改实验室参数")
    @PostMapping("/upParameter")
    public Result<?> upParameter(@RequestBody Laboratory itemParameter) {
        return Result.success(laboratoryService.upParameter(itemParameter));
    }
    @ApiOperation(value = "获取实验室名称")
    @GetMapping("/obtainItemParameterList")
    public Result obtainItemParameterList() {
        return Result.success(laboratoryService.obtainItemParameterList());
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/ProductPartController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.ProductPart;
import com.ruoyi.inspect.service.ProductPartService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@AllArgsConstructor
@RequestMapping("/productPart")
@Api(tags = "产品零件绑定")
public class ProductPartController {
    private ProductPartService productPartService;
    @ApiOperation(value = "根据产品id查询零件")
    @PostMapping("/selectByProductId")
    public Result selectByProductId(Page page,ProductPart productPart){
        return Result.success(productPartService.selectByProductId(page,productPart));
    }
    @ApiOperation(value = "新增产品零件")
    @PostMapping("/addProductPart")
    public Result addProductPart(@RequestBody ProductPart productPart) {
        productPartService.addProductPart(productPart);
        return Result.success();
    }
    @ApiOperation(value = "更新产品零件")
    @PostMapping("/updateProductPart")
    public Result updateProductPart(@RequestBody ProductPart productPart) {
        productPartService.updateProductPartById(productPart);
        return Result.success();
    }
    @ApiOperation(value = "删除产品零件")
    @PostMapping("/deleteProductPart")
    public Result deleteProductPart(Integer id) {
        productPartService.removeById(id);
        return Result.success();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/ProductSupplierDensityController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.ProductSupplierDensity;
import com.ruoyi.inspect.service.ProductSupplierDensityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * äº§å“åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-19
 */
@RestController
@RequestMapping("/productSupplierDensity")
@AllArgsConstructor
@Api(tags = "产品厂家密度绑定")
public class ProductSupplierDensityController {
    private ProductSupplierDensityService productSupplierDensityService;
    @ApiOperation(value = "根据产品id查询厂家密度绑定")
    @PostMapping("/selectSupplierDensityByProductId")
    public Result selectSupplierDensityByProductId(Page page,ProductSupplierDensity supplierDensity) {
        return Result.success(productSupplierDensityService.selectByProductId(page, supplierDensity));
    }
    @ApiOperation(value = "新增厂家密度绑定")
    @PostMapping("/addProductSupplierDensity")
    public Result addProductSupplierDensity(@RequestBody ProductSupplierDensity supplierDensity) {
        productSupplierDensityService.addProductSupplierDensity(supplierDensity);
        return Result.success();
    }
    @ApiOperation(value = "更新厂家密度绑定")
    @PostMapping("/updateProductSupplierDensity")
    public Result updateProductSupplierDensity(@RequestBody ProductSupplierDensity supplierDensity) {
        productSupplierDensityService.updateProductSupplierDensity(supplierDensity);
        return Result.success();
    }
    @ApiOperation(value = "删除厂家密度绑定")
    @PostMapping("/deleteProductSupplierDensity")
    public Result deleteProductSupplierDensity(Integer id) {
        productSupplierDensityService.removeById(id);
        return Result.success();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/SealController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.Laboratory;
import com.ruoyi.inspect.pojo.Seal;
import com.ruoyi.inspect.service.SealService;
import com.ruoyi.common.core.domain.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * å°ç« ç®¡ç†(SealController)表控制层
 */
@Api(tags = "印章管理")
@RestController
@RequestMapping("/sealScope")
public class SealController {
    @Resource
    private SealService sealService;
    @ApiOperation(value = "添加印章参数")
    @PostMapping("/addSeal")
    public Result addSeal(@RequestBody Seal seal) {
        int i = sealService.addSeal(seal);
        if(i>0){
            Integer labId = seal.getLabId();
            List<Laboratory> laboratory = sealService.Laboratory(labId);
            return Result.success(laboratory);
        }else{
            return Result.fail();
        }
    }
    @ApiOperation(value="查询印章列表")
    @PostMapping("/selectSeal")
    public  Result selectSeal(Page page,Seal seal) {
        return Result.success(sealService.selectSeal(page,seal));
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/StandardMethodController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.StandardMethod;
import com.ruoyi.inspect.service.StandardMethodService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@Api(tags = "标准方法")
@RestController
@RequestMapping("/standardMethod")
@AllArgsConstructor
public class StandardMethodController {
    private StandardMethodService standardMethodService;
    @ApiOperation(value = "获取标准方法列表")
    @PostMapping("/selectStandardMethodList")
    public Result selectStandardMethodList(Page page,StandardMethod standardMethod) throws Exception {
        return Result.success(standardMethodService.selectStandardMethodList(page, standardMethod));
    }
    @ApiOperation(value = "获取标准方法枚举")
    @GetMapping("/selectStandardMethods")
    public Result selectStandardMethods(){
        return Result.success(standardMethodService.selectStandardMethods());
    }
    @ApiOperation(value = "添加标准方法")
    @PostMapping("/addStandardMethod")
    public Result addStandardMethod(@RequestBody StandardMethod standardMethod) {
        return Result.success(standardMethodService.addStandardMethod(standardMethod));
    }
    @ApiOperation(value = "删除标准方法")
    @PostMapping("/delStandardMethod")
    public Result<?> delStandardMethod(Integer id) {
        return Result.success(standardMethodService.delStandardMethod(id));
    }
    @ApiOperation(value = "修改标准方法")
    @PostMapping("/upStandardMethod")
    public Result<?> upStandardMethod(@RequestBody StandardMethod standardMethod) {
        return Result.success(standardMethodService.upStandardMethod(standardMethod));
    }
    @ApiOperation(value = "导入标准明细")
    @PostMapping("/importStandardDetails")
    public Result<?> importStandardDetails(@RequestPart("file") MultipartFile file) throws IOException {
        standardMethodService.inputExcel(file);
        return Result.success();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/StandardTemplateController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.StandardTemplate;
import com.ruoyi.inspect.service.StandardTemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/StandardTemplate")
@RestController
@AllArgsConstructor
@Api(tags = "原始记录模板")
public class StandardTemplateController {
    private StandardTemplateService standardTemplateService;
    @ApiOperation(value = "获取原始记录模板列表")
    @PostMapping("/selectStandardTemplatePageList")
    public Result selectStandardTemplatePageList(Page page,StandardTemplate standardTemplate) throws Exception {
        return Result.success(standardTemplateService.selectStandardTemplatePageList(page, standardTemplate));
    }
    @ApiOperation(value = "添加原始记录模板")
    @PostMapping("/addStandardTemplate")
    public Result addStandardTemplate(@RequestBody StandardTemplate standardTemplate) {
        return Result.success(standardTemplateService.addStandardTemplate(standardTemplate));
    }
    @ApiOperation(value = "修改原始记录模板")
    @PostMapping("/upStandardTemplate")
    public Result<?> upStandardTemplate(@RequestBody StandardTemplate standardTemplate) {
        return Result.success(standardTemplateService.upStandardTemplate(standardTemplate));
    }
    @ApiOperation(value = "删除原始记录模板")
    @PostMapping("/delStandardTemplate")
    public Result<?> delStandardTemplate(Integer id) {
        return Result.success(standardTemplateService.delStandardTemplate(id));
    }
    @ApiOperation(value = "查询原始记录模板枚举")
    @GetMapping("/getStandardTemplate")
    public Result<?> getStandardTemplate() {
        return Result.success(standardTemplateService.getStandardTemplate());
    }
    @ApiOperation(value = "通过模板id获取检验项模板内容")
    @PostMapping("/getStandTempThingById")
    public Result<?> getStandTempThingById(Integer id) {
        return Result.success(standardTemplateService.getStandTempThingById(id));
    }
    @ApiOperation(value = "编辑模板编制")
    @GetMapping("/getEditTemplatePreparation")
    public Result<?> getEditTemplatePreparation(@RequestParam("id") Integer id) {
        StandardTemplate byId = standardTemplateService.getById(id);
        return Result.success("OK", byId.getThing());
    }
    @ApiOperation(value = "复制原始记录模板")
    @PostMapping("/copyStandardTemplate")
    public Result copyStandardTemplate(@RequestBody StandardTemplate newTemplate) {
        return Result.success(standardTemplateService.copyStandardTemplate(newTemplate));
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/StandardTreeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,276 @@
package com.ruoyi.inspect.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.dto.CopyStandardProductListDto;
import com.ruoyi.inspect.dto.FactoryDto;
import com.ruoyi.inspect.dto.InsSampleReceiveDto;
import com.ruoyi.inspect.dto.ResetTreeDragDTO;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.pojo.StandardProductListSupplierAsk;
import com.ruoyi.inspect.pojo.StandardTree;
import com.ruoyi.inspect.service.StandardMethodListService;
import com.ruoyi.inspect.service.StandardProductListService;
import com.ruoyi.inspect.service.StandardProductListSupplierAskService;
import com.ruoyi.inspect.service.StandardTreeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
@RestController
@AllArgsConstructor
@RequestMapping("/standardTree")
@Api(tags = "标准库")
public class StandardTreeController {
    private StandardTreeService standardTreeService;
    private StandardMethodListService standardMethodListService;
    private StandardProductListService standardProductListService;
    private StandardProductListSupplierAskService standardProductListSupplierAskService;
    @ApiOperation(value = "获取标准树")
    @GetMapping("/selectStandardTreeList")
    public Result selectStandardTreeList() {
        return Result.success(standardTreeService.selectStandardTreeList());
    }
    @ApiOperation(value = "获取标准树(检验下单)")
    @GetMapping("/selectStandardTreeList2")
    public Result selectStandardTreeList2() {
        return Result.success(standardTreeService.selectStandardTreeList());
    }
    @ApiOperation(value = "添加标准树")
    @PostMapping("/addStandardTree")
    public Result addStandardTree(@RequestBody StandardTree standardTree) {
        return Result.success(standardTreeService.addStandardTree(standardTree));
    }
    @ApiOperation(value = "给标准树添加检验标准")
    @PostMapping("/addStandardMethodList")
    public Result addStandardMethodList(String tree, Integer standardId) {
        return Result.success(standardMethodListService.addStandardMethodList(standardId, tree));
    }
    @ApiOperation(value = "根据标准树进行标准查询")
    @PostMapping("/selectsStandardMethodByFLSSM")
    public Result selectsStandardMethodByFLSSM(String tree) {
        return Result.success(standardMethodListService.selectsStandardMethodByFLSSM(tree));
    }
    @ApiOperation(value = "修改标准库中的内容")
    @PostMapping("/upStandardProductList")
    public Result upStandardProductList(String str) {
        StandardProductList list = JSON.parseObject(str, StandardProductList.class);
        return Result.success(standardProductListService.upStandardProductList(list));
    }
    @ApiOperation(value = "修改标准库区间")
    @PostMapping("/updateSection")
    public Result updateSection(String str) {
        StandardProductList list = JSON.parseObject(str, StandardProductList.class);
        return Result.success(standardProductListService.updateSection(list));
    }
    @ApiOperation(value = "删除标准树下的检验标准")
    @PostMapping("/delStandardMethodByFLSSM")
    public Result delStandardMethodByFLSSM(Integer id) {
        return Result.success(standardMethodListService.delStandardMethodByFLSSM(id));
    }
    @ApiOperation(value = "删除标准树下的检验项目")
    @PostMapping("/delStandardProductByIds")
    public Result delStandardProductByIds(String ids) {
        JSONArray lists = JSON.parseArray(ids);
        return Result.success(standardProductListService.delStandardProduct(lists));
    }
    @ApiOperation(value = "新增标准树下的检验项目")
    @PostMapping("/addStandardProduct")
    public Result addStandardProduct(String ids, String tree) {
        return Result.success(standardTreeService.addStandardProduct(ids, tree));
    }
    @ApiOperation(value = "删除标准树的层级")
    @PostMapping("/delStandardTree")
    public Result delStandardTree(String tree) {
        return Result.success(standardTreeService.delStandardTree(tree));
    }
    @ApiOperation(value = "通过标准树查询对应的检验项目")
    @PostMapping("/selectStandardProductList")
    public Result selectStandardProductList(@RequestBody InsSampleReceiveDto insSample) {
        return Result.success(standardProductListService.selectStandardProductList(insSample));
    }
    @ApiOperation(value = "通过检验标准查询检验项目")
    @PostMapping("/selectStandardProductListByMethodId")
    public Result selectStandardProductListByMethodId(Integer id, String tree, Integer page) {
        return Result.success(standardProductListService.selectStandardProductListByMethodId(id, tree, page));
    }
    @ApiOperation(value = "批量编辑查询检验项目")
    @PostMapping("/selectStandardProductByMethodId")
    public Result selectStandardProductByMethodId(Integer id, String tree, Integer page, String laboratory, String item, String items) {
        return Result.success(standardProductListService.selectStandardProductByMethodId(id, tree, page, laboratory, item, items));
    }
    @ApiOperation(value = "批量编辑查询所有检验项目和检验子项枚举")
    @PostMapping("/selectStandardProductEnumByMethodId")
    public Result selectStandardProductEnumByMethodId(Integer id, String tree, String item) {
        return Result.success(standardProductListService.selectStandardProductEnumByMethodId(id, tree, item));
    }
    @ApiOperation(value = "获取标准树下标准方法枚举")
    @GetMapping("/selectStandardMethodEnum")
    public Result selectStandardMethodEnum() {
        return Result.success(standardMethodListService.selectStandardMethodEnum());
    }
    @ApiOperation(value = "获取产品架构")
    @GetMapping("/getStandardTree2")
    public Result getStandardTree2() {
        return Result.success(standardTreeService.getStandardTree2());
    }
    @ApiOperation(value = "批量修改项目内容")
    @PostMapping("/upStandardProducts")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "standardProductList", dataTypeClass = StandardProductList.class),
            @ApiImplicitParam(name = "ids", dataTypeClass = Integer.class)
    })
    public Result upStandardProducts(@RequestBody Map<String, Object> product) {
        return Result.success(standardTreeService.upStandardProducts(product));
    }
    @PostMapping("/getStandTreeBySampleType")
    @ApiOperation("仅获取光纤的型号")
    public Result<?> getStandTreeBySampleType(String laboratory, String sampleType) {
        return Result.success(standardTreeService.getStandTreeBySampleType(laboratory, sampleType));
    }
    @ApiOperation("导入标准库")
    @PostMapping("/inExcelOfTree/{isEquipment}")
    public Result inExcelOfTree(@RequestParam("file") MultipartFile file, @PathVariable("isEquipment") Boolean isEquipment) {
        if (!isEquipment) {
            standardTreeService.inExcelOfTree(file);
        } else {
            standardTreeService.importWorkstationExcel(file);
        }
        return Result.success();
    }
    @ApiOperation("重置标准库单价")
    @PostMapping("/resetTreeOfPrice")
    public Result resetTreeOfPrice(String tree, Integer standardId) {
        standardTreeService.resetTreeOfPrice(tree, standardId);
        return Result.success();
    }
    @ApiOperation("重置标准库工时系数")
    @PostMapping("/resetTreeOfHour")
    public Result resetTreeOfHour(String tree, Integer standardId) {
        standardTreeService.resetTreeOfHour(tree, standardId);
        return Result.success();
    }
    @ApiOperation("重置标准库要求描述和要求值")
    @PostMapping("/resetTreeOfAsk")
    public Result resetTreeOfAsk(String tree, Integer standardId) {
        standardTreeService.resetTreeOfAsk(tree, standardId);
        return Result.success();
    }
    @ApiOperation("标准库拖拽")
    @PostMapping("/resetTreeDrag")
    public Result resetTreeDrag(@RequestBody ResetTreeDragDTO resetTreeDragDTO) {
        standardProductListService.resetTreeDrag(resetTreeDragDTO);
        return Result.success();
    }
    @ApiOperation("标准库拖拽全部")
    @PostMapping("/resetTreeDragBatch")
    public Result resetTreeDragBatch(@RequestBody Map<String, Object> params) {
        List<StandardProductList> standardProductLists = (List<StandardProductList>) params.get("params");
        standardProductListService.resetTreeDragBatch(standardProductLists);
        return Result.success();
    }
    @ApiOperation(value = "标准树排序")
    @PostMapping("/updateTreeSort")
    public Result updateTreeSort(@RequestBody List<FactoryDto> list) {
        return Result.success(standardTreeService.updateTreeSort(list));
    }
    /*************************************************** åŽ‚å®¶ç‰¹æ®Šè¦æ±‚å€¼å¤„ç† ************************************************************/
    @ApiOperation(value = "根据产品id查询厂家要求值绑定")
    @PostMapping("/selectSupplierAsk")
    public Result selectSupplierAsk(StandardProductListSupplierAsk supplierAsk) throws Exception {
        return Result.success(standardProductListSupplierAskService.selectByProductId(supplierAsk));
    }
    @ApiOperation(value = "新增厂家要求值绑定")
    @PostMapping("/addProductSupplierAsk")
    public Result addProductSupplierAsk(String str) {
        StandardProductListSupplierAsk supplierAsk = JSON.parseObject(str, StandardProductListSupplierAsk.class);
        return Result.success(standardProductListSupplierAskService.addProductSupplierAsk(supplierAsk));
    }
    @ApiOperation(value = "更新厂家要求值绑定")
    @PostMapping("/updateProductSupplierAsk")
    public Result updateProductSupplierAsk(String str) {
        StandardProductListSupplierAsk supplierAsk = JSON.parseObject(str, StandardProductListSupplierAsk.class);
        standardProductListSupplierAskService.updateProductSupplierAsk(supplierAsk);
        return Result.success();
    }
    @ApiOperation(value = "删除厂家要求值绑定")
    @PostMapping("/deleteProductSupplierAsk")
    public Result deleteProductSupplierAsk(Integer supplierAskId) {
        standardProductListSupplierAskService.removeById(supplierAskId);
        return Result.success();
    }
    @ApiOperation(value = "修改标准树")
    @PostMapping("/updateStandardTree")
    public Result updateStandardTree(@RequestBody StandardTree standardTree) {
        return Result.success(standardTreeService.updateStandardTree(standardTree));
    }
    @ApiOperation(value = "检验项要求值复制对比")
    @PostMapping("/copyStandardProductList")
    public Result copyStandardProductList(@RequestBody CopyStandardProductListDto copyStandardProductListDto) {
        return Result.success(standardProductListService.copyStandardProductList(copyStandardProductListDto));
    }
    @ApiOperation(value = "检验项要求值单独对比")
    @PostMapping("/copyStandardProductOne")
    public Result copyStandardProductOne(@RequestBody CopyStandardProductListDto copyStandardProductListDto) {
        return Result.success(standardProductListService.copyStandardProductOne(copyStandardProductListDto));
    }
    @ApiOperation(value = "检验项批量修改要求值要求描述")
    @PostMapping("/updateStandardProductListBatch")
    public Result updateStandardProductListBatch(@RequestBody Map<String, Object> param) {
        List<StandardProductList> standardProductList = (List<StandardProductList>) param.get("standardProductList");
        return Result.success(standardProductListService.updateBatchById(standardProductList));
    }
    @ApiOperation(value = "检验项复制排序")
    @PostMapping("/copyStandardProductSort")
    public Result copyStandardProductSort(@RequestBody CopyStandardProductListDto copyStandardProductListDto) {
        return Result.success(standardProductListService.copyStandardProductSort(copyStandardProductListDto));
    }
}
basic-server/src/main/java/com/ruoyi/inspect/controller/StructureTestObjectPartController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.pojo.StructureTestObjectPart;
import com.ruoyi.inspect.service.StructureTestObjectPartService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * æ£€éªŒå¯¹è±¡é›¶ä»¶è¡¨
 *
 * @author zhuo
 * @since 2024-08-07
 */
@RestController
@RequestMapping("/structureTestObjectPart")
@AllArgsConstructor
@Api(tags = "检验对象零件表")
public class StructureTestObjectPartController {
    private StructureTestObjectPartService structureTestObjectPartService;
    @ApiOperation(value = "根据检验对象id查询零件")
    @PostMapping("/selectByTestObjectId")
    public Result selectByTestObjectId(Page page,StructureTestObjectPart structureTestObjectPart){
        return Result.success(structureTestObjectPartService.selectByTestObjectId(page,structureTestObjectPart));
    }
    @ApiOperation(value = "新增检验对象零件")
    @PostMapping("/addTestObjectPart")
    public Result addTestObjectPart(@RequestBody StructureTestObjectPart structureTestObjectPart) {
        structureTestObjectPartService.addTestObjectPart(structureTestObjectPart);
        return Result.success();
    }
    @ApiOperation(value = "更新检验对象零件")
    @PostMapping("/updateTestObjectPart")
    public Result updateTestObjectPart(@RequestBody StructureTestObjectPart structureTestObjectPart) {
        structureTestObjectPartService.updateTestObjectPart(structureTestObjectPart);
        return Result.success();
    }
    @ApiOperation(value = "删除检验对象零件")
    @PostMapping("/deleteTestObjectPart")
    public Result deleteTestObjectPart(Integer id) {
        structureTestObjectPartService.removeById(id);
        return Result.success();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/dto/CopyStandardProductListDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.inspect.dto;
import com.ruoyi.inspect.pojo.StandardProductList;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * æ ‡å‡†æ£€éªŒé¡¹å¤åˆ¶
 *
 * @Author zhuo
 * @Date 2024/10/31
 */
@Data
public class CopyStandardProductListDto {
    @ApiModelProperty("原本检验项信息")
    private List<StandardProductList> oldStandardProductList;
    @ApiModelProperty("需要对比的检验项信息")
    private List<StandardProductList> newStandardProductList;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/FactoryDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
import java.util.List;
@Data
public class FactoryDto {
    private String code = "[1]";
    private String label;
    private String value;
    private List<LaboratoryDto> children;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/IfsInventoryQuantityCheckDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,182 @@
package com.ruoyi.inspect.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * åŽŸææ–™æŸ¥è¯¢, æŽ’除了供应商
 * @Author zhuo
 * @Date 2024/8/28
 */
@Data
public class IfsInventoryQuantityCheckDto  implements Serializable {
    private Integer id;
    @ApiModelProperty("域")
    private String contract;
    @ApiModelProperty("订单号")
    private String orderNo;
    @ApiModelProperty("行号")
    private String lineNo;
    @ApiModelProperty("下达号")
    private String releaseNo;
    @ApiModelProperty("接收号")
    private Integer receiptNo;
    @ApiModelProperty("零件号")
    private String partNo;
    @ApiModelProperty("零件描述")
    private String partDesc;
    @ApiModelProperty("状态描述")
    private String status;
    @ApiModelProperty("状态")
    private String statusDb;
    @ApiModelProperty("抵达的采购数量")
    private BigDecimal qtyArrived;
    @ApiModelProperty("已检验的购买数量")
    private BigDecimal qtyInspected;
    @ApiModelProperty("要检验的采购数量")
    private BigDecimal qtyToInspect;
    @ApiModelProperty("抵达的库存数量")
    private BigDecimal invQtyInStore;
    @ApiModelProperty("抵达的采购数量")
    private BigDecimal purQtyInStore;
    @ApiModelProperty("配置标识")
    private String configurationId;
    @ApiModelProperty("批号")
    private String lotBatchNo;
    @ApiModelProperty("wdr号")
    private String waivDevRejNo;
    @ApiModelProperty("活动序列")
    private Integer activitySeq;
    @ApiModelProperty("序列号")
    private String serialNo;
    @ApiModelProperty("库位号")
    private String locationNo;
    @ApiModelProperty("版本号")
    private String engChgLevel;
    @ApiModelProperty("接收人")
    private String receiver;
    @ApiModelProperty("接收人姓名")
    private String receiverName;
    @ApiModelProperty("采购员")
    private String buyerCode;
    @ApiModelProperty("采购员姓名")
    private String buyerName;
    @ApiModelProperty("实际到货日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime arriveDate;
    @ApiModelProperty("实际交货日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime deliveryDate;
    @ApiModelProperty("生产日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime productDate;
    @ApiModelProperty("失效日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime invalidDate;
    @ApiModelProperty("审批日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime approvedDate;
    @ApiModelProperty("采购申请创建人")
    private String reqCeater;
    @ApiModelProperty("采购申请创建人姓名")
    private String reqCeaterName;
    @ApiModelProperty("采购订单行备注")
    private String lineRemarks;
    @ApiModelProperty("单位")
    private String buyUnitMeas;
    private Integer isSource;
    private Integer number;
    private Integer state;
    @ApiModelProperty("接收时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime receiverDate;
    @ApiModelProperty("是否为首次出现 0 å¦ 1 æ˜¯")
    private Integer isFirst;
    @ApiModelProperty("目标库位号")
    private String toLocation;
    @ApiModelProperty("是否是报检 0 å¦ 1 æ˜¯")
    private Integer isInspect;
    @ApiModelProperty("报检人")
    private String declareUser;
    @ApiModelProperty("报检人id")
    private Integer declareUserId;
    @ApiModelProperty("单位")
    private String partUnit;
    @ApiModelProperty("产业链检测数据")
    private String industryChain;
    @ApiModelProperty("报检时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime declareDate;
    @ApiModelProperty("是否卡可以季度检验 0 å¦ 1 æ˜¯")
    private Integer isQuarter;
    // ä¿®æ”¹åŽçš„
    @ApiModelProperty("批号")
    private String updateBatchNo;
    @ApiModelProperty("是否是铜单丝, 0否, 1是")
    private Integer isCopper;
    @ApiModelProperty("物料类型")
    private Integer isExpire;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/IfsInventoryQuantityDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.ruoyi.inspect.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class IfsInventoryQuantityDto extends IfsInventoryQuantityCheckDto {
    /**
     * å§”托编号
     */
    @ApiModelProperty("委托编号")
    private String entrustCode;
    @ApiModelProperty("检验对象")
    private String sampleType;
    @ApiModelProperty("样品名称")
    private String sampleName;
    @ApiModelProperty("样品型号")
    private String sampleModel;
    @ApiModelProperty("样品编号")
    private String sampleCode;
    // è¿›åŽ‚
    @ApiModelProperty("订单id")
    private Integer enterOrderId;
    @ApiModelProperty("报告id")
    private String enterReportId;
    @ApiModelProperty("系统生成报告地址")
    private String enterUrl;
    @ApiModelProperty("手动上传报告地址")
    private String enterUrlS;
    // å­£åº¦
    @ApiModelProperty("订单id")
    private Integer quarterOrderId;
    @ApiModelProperty("报告id")
    private String quarterReportId;
    @ApiModelProperty("系统生成报告地址")
    private String quarterUrl;
    @ApiModelProperty("手动上传报告地址")
    private String quarterUrlS;
    private Integer orderState;
    @ApiModelProperty("下发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime sendTime;
    @ApiModelProperty("材料厂家")
    private String supplierName;
    @ApiModelProperty("委托人")
    private String prepareUser;
    @ApiModelProperty("颜色")
    private String color;
    @ApiModelProperty("标签状态")
    private String labelStatus;
    @ApiModelProperty("标签条形码")
    private String labelBarCode;
    @ApiModelProperty("创建人")
    private Integer createUser;
    @ApiModelProperty("检验人")
    private String userName;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/IfsInventoryQuantitySupplierDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
package com.ruoyi.inspect.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.inspect.pojo.IfsInventoryQuantity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * èƒ½æŸ¥è¯¢åˆ°ä¾›åº”商
 */
@Data
@ExcelIgnoreUnannotated
public class IfsInventoryQuantitySupplierDto extends IfsInventoryQuantity {
    /**
     * å§”托编号
     */
    @ExcelProperty(index = 2, value = "委托编号")
    @ApiModelProperty("委托编号")
    private String entrustCode;
    @ApiModelProperty("样品id")
    private Integer sampleId;
    @ApiModelProperty("检验对象")
    private String sampleType;
    @ExcelProperty(index = 7, value = "样品名称")
    @ApiModelProperty("样品名称")
    private String sampleName;
    @ExcelProperty(index = 8, value = "样品型号")
    @ApiModelProperty("样品型号")
    private String sampleModel;
    @ApiModelProperty("样品编号")
    private String sampleCode;
    // è¿›åŽ‚
    @ApiModelProperty("进厂订单id")
    private Integer enterOrderId;
    @ApiModelProperty("报告id")
    private String enterReportId;
    @ApiModelProperty("系统生成报告地址")
    private String enterUrl;
    @ApiModelProperty("手动上传报告地址")
    private String enterUrlS;
    // å­£åº¦
    @ApiModelProperty("季度订单id")
    private Integer quarterOrderId;
    @ApiModelProperty("报告id")
    private String quarterReportId;
    @ApiModelProperty("系统生成报告地址")
    private String quarterUrl;
    @ApiModelProperty("手动上传报告地址")
    private String quarterUrlS;
    private Integer orderState;
    @ApiModelProperty("下发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime sendTime;
    @ApiModelProperty("委托人")
    private String prepareUser;
    @ApiModelProperty("颜色")
    private String color;
    @ApiModelProperty("标签状态")
    private String labelStatus;
    @ApiModelProperty("标签条形码")
    private String labelBarCode;
    @ApiModelProperty("创建人")
    private Integer createUser;
    @ExcelProperty(index = 9, value = "检验人")
    @ApiModelProperty("检验人")
    private String userName;
    @ExcelProperty(index = 10, value = "下发时间")
    private String sendTimeString;
    @ExcelProperty(index = 14, value = "接收时间")
    private String receiverDateString;
    @ExcelProperty(index = 15, value = "报检时间")
    private String declareDateString;
    // åˆæ ¼çŠ¶æ€,: 0 æ£€éªŒä¸­, 1合格, 2不合格, 3未下单,4让步放行
    @ExcelProperty(index = 6, value = "检验状态")
    private String inspectStatusString;
    @ApiModelProperty("报检开始时间")
    private String beginDeclareDate;
    @ApiModelProperty("报检结束时间")
    private String endDeclareDate;
    @ApiModelProperty("不合格描述")
    @ExcelProperty(index = 16, value = "不合格描述")
    private String unqualifiedDesc;
    @ApiModelProperty("不合格项")
    @ExcelProperty(index = 17, value = "不合格项")
    private String unqualifiedItem;
    @ApiModelProperty("免检")
    private Integer isExemption;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/InsSampleReceiveDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.inspect.dto;
import com.ruoyi.inspect.pojo.InsSample1;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2024/10/29
 */
@Data
public class InsSampleReceiveDto extends InsSample1 {
    @ApiModelProperty("零件号")
    private String partNo;
    @ApiModelProperty("原材料id")
    private Integer ifsInventoryId;
    @ApiModelProperty("芯数")
    private String cores;
    @ApiModelProperty("型号参数")
    private String modelNum;
    @ApiModelProperty("导体材质")
    private String conductorMaterial;
    @ApiModelProperty("导体类型")
    private String conductorType;
    @ApiModelProperty("是否是电缆配置")
    private String isCableTag;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/LaboratoryDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
import java.util.List;
@Data
public class LaboratoryDto {
    private String code = "[2]";
    private String label;
    private String value;
    private List<SampleTypeDto> children;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/ModelDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
@Data
public class ModelDto {
    private String code = "[5]";
    private String label;
    private String value;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/PageTestObjectDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.inspect.dto;
import com.ruoyi.inspect.pojo.StructureTestObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author æˆ´å“
 * @Date 2024/2/26
 */
@Data
public class PageTestObjectDto extends StructureTestObject {
    @ApiModelProperty(value = "产品")
    private String product;
    @ApiModelProperty(value = "创建人")
    private String createUserName;
    @ApiModelProperty(value = "更新人")
    private String updateUserName;
    @ApiModelProperty(value = "零件号")
    private String partNo;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/ProductDTO1.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.inspect.dto;
import com.ruoyi.inspect.pojo.Product;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2024/8/5
 */
@Data
public class ProductDTO1 extends Product {
    @ApiModelProperty(value = "零件号")
    private String partNo;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/ProductDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
@Data
public class ProductDto {
    private Integer id;
    private String name;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/ResetTreeDragDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.inspect.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2024/8/22
 */
@Data
public class ResetTreeDragDTO {
    @ApiModelProperty(value = "开始索引")
    private String beginIndex;
    @ApiModelProperty(value = "结束索引")
    private String endIndex;
    @ApiModelProperty(value = "标准编号id")
    private String methodId;
    @ApiModelProperty(value = "数")
    private String tree;
    @ApiModelProperty(value = "检验项行id")
    private String productionId;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/SampleDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
import java.util.List;
@Data
public class SampleDto {
    private String code = "[4]";
    private String label;
    private String value;
    private String partNo;
    // æ ·å“è‹±æ–‡
    private String sampleEn;
    private List<ModelDto> children;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/SampleTypeDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
import java.util.List;
@Data
public class SampleTypeDto {
    private String code = "[3]";
    // æ£€æµ‹å¯¹è±¡id
    private Integer sampleTypeId;
    // æ£€æµ‹å¯¹è±¡æŽ’序
    private Integer sort;
    private String label;
    private String value;
    private String partNo;
    // å¯¹è±¡è‹±æ–‡
    private String sampleTypeEn;
    private List<SampleDto> children;
}
basic-server/src/main/java/com/ruoyi/inspect/dto/TestItemDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.inspect.dto;
import lombok.Data;
import java.util.List;
@Data
public class TestItemDto {
    private Integer id;
    private String name;
    private List<ProductDto> children;
}
basic-server/src/main/java/com/ruoyi/inspect/excel/StructureTestObjectData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.inspect.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class StructureTestObjectData {
    @ExcelProperty(value = "场所")
    private String laboratory;
    @ExcelProperty(value = "检测对象")
    private String specimenName;
    @ExcelProperty(value = "检测对象(EN)")
    private String specimenNameEn;
    @ExcelProperty(value = "对象代号")
    private String code;
    @ExcelProperty(value = "产品名称")
    private String name;
    @ExcelProperty(value = "产品名称(EN)")
    private String nameEn;
}
basic-server/src/main/java/com/ruoyi/inspect/excel/StructureTestObjectListener.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.ruoyi.inspect.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.ruoyi.inspect.service.ProductService;
import java.util.ArrayList;
import java.util.List;
public class StructureTestObjectListener extends AnalysisEventListener<StructureTestObjectData> {
    private static final int BATCH_COUNT = 1000;
    List<StructureTestObjectData> list = new ArrayList<>();
    private ProductService productService;
    public StructureTestObjectListener(ProductService productService) {
        this.productService = productService;
    }
    @Override
    public void invoke(StructureTestObjectData data, AnalysisContext analysisContext) {
        list.add(data);
        if (list.size() >= BATCH_COUNT) {
            save();
            list.clear();
        }
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        save();
    }
    private void save() {
        productService.importPartExcel(list);
    }
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/CertificationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.Certification;
import org.apache.ibatis.annotations.Param;
public interface CertificationMapper extends BaseMapper<Certification> {
    //查询资质明细列表
    IPage<Certification> getCertificationDetail(Page page, @Param("ew") QueryWrapper<Certification> ew);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/IfsInventoryQuantityMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.inspect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.inspect.dto.IfsInventoryQuantityDto;
import com.ruoyi.inspect.pojo.IfsInventoryQuantity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
@Mapper
public interface IfsInventoryQuantityMapper extends BaseMapper<IfsInventoryQuantity> {
    /**
     * æ‰“印标签查询
     * @param ids
     * @return
     */
    List<IfsInventoryQuantityDto> printLabel(@Param("ids") List<Integer> ids);
    /**
     *
     * @param ifsInventoryId
     * @return
     */
    int selectReportCountById(@Param("ifsInventoryId") Integer ifsInventoryId);
    /**
     * æŸ¥è¯¢å½“前季度是否出现过该材料
     * @param partDetail         åž‹å·
     * @param supplierName       ä¾›åº”商名称
     * @param startOfNextQuarter å­£åº¦å¼€å§‹æ—¶é—´
     * @param endOfQuarter       å­£åº¦ç»“束时间
     * @return
     */
    Integer selectIsFirst(@Param("partDetail") String partDetail,
                          @Param("supplierName") String supplierName,
                          @Param("startOfNextQuarter") LocalDateTime startOfNextQuarter,
                          @Param("endOfQuarter") LocalDateTime endOfQuarter);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/LaboratoryMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.Laboratory;
import org.apache.ibatis.annotations.Param;
/**
 * å®žéªŒå®¤ç®¡ç†(Laboratory)表数据库访问层
 */
public interface LaboratoryMapper extends BaseMapper<Laboratory> {
    IPage<Laboratory> selectItemParameter(Page page, @Param("ew") QueryWrapper<Laboratory> ew);
    Object obtainItemParameterList(@Param("page") Page page, @Param("ew") QueryWrapper<Laboratory> ew);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/ProductMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.dto.ProductDTO1;
import com.ruoyi.inspect.pojo.Product;
import org.apache.ibatis.annotations.Param;
/**
* @author z1292
* @description é’ˆå¯¹è¡¨ã€product(产品表)】的数据库操作Mapper
* @createDate 2024-04-26 01:11:02
* @Entity com.ruoyi.basic.pojo.Product
*/
public interface ProductMapper extends BaseMapper<Product> {
    IPage<Product> selectProductListByObjectId(Page page, @Param("ew") QueryWrapper<ProductDTO1> ew, @Param("partNo") String partNo);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/ProductPartMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
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.pojo.ProductPart;
import org.apache.ibatis.annotations.Param;
public interface ProductPartMapper extends BaseMapper<ProductPart> {
    IPage<ProductPart> selectListByProductId(IPage<ProductPart> page,
                                              @Param("ew") QueryWrapper<ProductPart> ew,
                                              @Param("productId") Integer productId);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/ProductSupplierDensityMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.ProductSupplierDensity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * äº§å“åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-19
 */
@Mapper
public interface ProductSupplierDensityMapper extends BaseMapper<ProductSupplierDensity> {
    IPage<ProductSupplierDensity> selectListByProductId(@Param("page") Page page, @Param("ew") QueryWrapper<ProductSupplierDensity> ew, @Param("productId") Integer productId);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/SealMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.Laboratory;
import com.ruoyi.inspect.pojo.Seal;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SealMapper extends BaseMapper<Seal> {
    IPage<Seal>selectSeal(Page page, @Param("ew") QueryWrapper<Seal> ew);
    List<Laboratory> selectLaboratory (Integer labId);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardMethodListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.ruoyi.inspect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.inspect.pojo.StandardMethodList;
import com.ruoyi.inspect.pojo.StandardProductList;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_method_list(标准树下的标准列表)】的数据库操作Mapper
* @createDate 2024-03-04 13:44:04
* @Entity com.ruoyi.basic.pojo.StandardMethodList
*/
public interface StandardMethodListMapper extends BaseMapper<StandardMethodList> {
    Map<String, String> selectStandardMethodById(Integer id);
    String selectUserById(Integer id);
    List<StandardMethodList> selectStandardMethodLists(String tree);
    List<StandardMethodList> selectStandardMethodListsByNull(String tree);
    List<StandardMethodList> selectStandardMethodLists3(String tree);
    List<StandardMethodList> selectStandardMethodLists2(@Param("data1") String data1, @Param("data2") String data2, @Param("data3") String data3, @Param("data4") String data4, @Param("data5") String data5);
    List<StandardProductList> selectParameterList(String code);
    List<StandardMethodList> selectListEnum();
    Integer getStandardMethodId(String code);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardMethodMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.inspect.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.mybatis_config.MyBaseMapper;
import com.ruoyi.inspect.pojo.StandardMethod;
import org.apache.ibatis.annotations.Param;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_method(标准方法)】的数据库操作Mapper
* @createDate 2024-03-03 19:21:41
* @Entity com.ruoyi.basic.pojo.StandardMethod
*/
public interface StandardMethodMapper extends MyBaseMapper<StandardMethod> {
    IPage<StandardMethod> selectStandardMethodList(Page page, @Param("ew") QueryWrapper<StandardMethod> ew);
    StandardMethod selectStandMethodById(Integer id);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardProductListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.inspect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.inspect.pojo.StandardProductList;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_product_list(标准树下的检验项目)】的数据库操作Mapper
* @createDate 2024-03-05 10:33:29
* @Entity com.ruoyi.basic.pojo.StandardProductList
*/
public interface StandardProductListMapper extends BaseMapper<StandardProductList> {
    IPage<StandardProductList> standardProductListIPage(@Param("id") Integer id, @Param("tree") String tree, IPage<StandardProductList> page, @Param("laboratory") String laboratory, @Param("insItem") String insItem, @Param("insItems") String insItems);
    StandardProductList getOne(@Param("standardMethodListId") Integer standardMethodListId, @Param("inspectionItem") String inspectionItem, @Param("sample") String sample, @Param("inspectionItemSubclass") String inspectionItemSubclass, @Param("model") String model, @Param("inspectionItemClass") String inspectionItemClass);
    List<StandardProductList> selectDetail(@Param("standardMethodListId") Integer standardMethodListId, @Param("state") int state, @Param("model") String model, @Param("isCableTag") String isCableTag);
    List<StandardProductList> selectDetail2(@Param("standardMethodListId") Integer standardMethodListId, @Param("state") int state, @Param("tree") String tree, @Param("isCableTag") String isCableTag);
    /**
     * æŸ¥è¯¢é›¶ä»¶é¢œè‰²
     * @param partNo
     * @return
     */
    Map<String, String> selectPartColor(@Param("partNo") String partNo);
    /**
     * åŒºé—´ä¿®æ”¹
     * @param productList
     * @return
     */
    void updateSection(@Param("productList") StandardProductList productList);
    /**
     * ä»Žä¸Šå¾€ä¸‹ä¿®æ”¹é¡ºåº
     * @param beginIndex å¼€å§‹ä½ç½®
     * @param endIndex ç»“束位置
     * @param methodId æ ‡å‡†id
     * @param tree æ ‘
     */
    void updateSortUp(@Param("beginIndex") Integer beginIndex,
                      @Param("endIndex") Integer endIndex,
                      @Param("methodId") Integer methodId,
                      @Param("tree") String tree);
    /**
     * ä»Žä¸‹ç½‘上修改顺序
     * @param beginIndex
     * @param endIndex
     * @param methodId
     * @param tree
     */
    void updateSortDown(@Param("beginIndex") Integer beginIndex,
                        @Param("endIndex") Integer endIndex,
                        @Param("methodId") Integer methodId,
                        @Param("tree") String tree);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardProductListSupplierAskMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.inspect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.inspect.pojo.StandardProductListSupplierAsk;
import org.apache.ibatis.annotations.Mapper;
/**
 * æ£€éªŒé¡¹ç›®åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-23
 */
@Mapper
public interface StandardProductListSupplierAskMapper extends BaseMapper<StandardProductListSupplierAsk> {
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardTemplateMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.StandardTemplate;
import org.apache.ibatis.annotations.Param;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_template(标准模板)】的数据库操作Mapper
* @createDate 2024-03-11 13:47:52
* @Entity com.ruoyi.basic.pojo.StandardTemplate
*/
public interface StandardTemplateMapper extends BaseMapper<StandardTemplate> {
    IPage<StandardTemplate> selectStandardTemplatePageList(Page page, @Param("ew") QueryWrapper<StandardTemplate> ew);
    StandardTemplate getStandTempIdByName(String name);
    /**
     * æŸ¥è¯¢åŽ‹ç¼©åŽçš„æ•°æ®
     * @param templateId
     * @return
     */
    String selectCompressThing(Integer templateId);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StandardTreeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.dto.*;
import com.ruoyi.inspect.pojo.IfsInventoryQuantity;
import com.ruoyi.inspect.pojo.StandardMethodList;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.pojo.StandardTree;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @author Administrator
 * @description é’ˆå¯¹è¡¨ã€standard_tree(标准树)】的数据库操作Mapper
 * @createDate 2024-03-01 15:06:44
 * @Entity com.ruoyi.basic.pojo.StandardTree
 */
public interface StandardTreeMapper extends BaseMapper<StandardTree> {
    List<FactoryDto> selectStandardTreeList();
    List<StandardTree> selectStandardTreeList2(String sampleType);
    StandardProductList selectStandardProductById(Integer id);
    List<StandardProductList> getStandardProductListBySample(String sampleType);
    List<StandardMethodList> getStandardMethodListBySample(String sampleType);
    List<StandardProductList> selectStandardProductListByTree(String tree, String sample, String model, String trees, String laboratory);
    List<StandardProductList> selectStandardProductListByTree2(String tree, String sample, String model, String trees, String laboratory);
    List<SampleTypeDto> getStandardTree2();
    List<SampleDto> getStandardTree3(String sampleType);
    String getLaboratory(String str);
    Integer getStructureItemParameterId(String sampleType, String item, String itemChild, String inspectionItemClass);
    List<ProductDto> selectPList(String name);
    String selSample(String sample);
    List<FactoryDto> selectStandardTreeListByPartNo(@Param("partNo") String partNo);
    IPage<IfsInventoryQuantity> selectIfsPage(IPage<IfsInventoryQuantity> page,
                                              @Param("ew") QueryWrapper<IfsInventoryQuantity> ew);
    IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page,
                                                    @Param("ew") QueryWrapper<IfsInventoryQuantityDto> ew);
    IPage<IfsInventoryQuantityCheckDto> selectIfsInventoryQuantity(Page<IfsInventoryQuantityCheckDto> page, @Param("ew")QueryWrapper<IfsInventoryQuantityCheckDto> ew);
    /**
     * åŽŸææŠ¥æ£€æŸ¥è¯¢å…¨éƒ¨(分页)
     * @param page
     * @param ew
     * @return
     */
    IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, @Param("ew") QueryWrapper<IfsInventoryQuantitySupplierDto> ew, @Param("beginDeclareDate") String beginDeclareDate, @Param("endDeclareDate")String endDeclareDate);
    /**
     * åŽŸææŠ¥æ£€æŸ¥è¯¢å…¨éƒ¨(无分页)
     * @param ew
     * @return
     */
    List<IfsInventoryQuantitySupplierDto> getIfsByOverList(@Param("ew") QueryWrapper<IfsInventoryQuantitySupplierDto> ew, @Param("beginDeclareDate") String beginDeclareDate, @Param("endDeclareDate")String endDeclareDate);
    /**
     * åŽŸææ–™æŸ¥è¯¢å­£åº¦æ£€éªŒ
     * @param page
     * @param
     * @param beginDeclareDate
     * @param endDeclareDate
     * @return
     */
    IPage<IfsInventoryQuantitySupplierDto> getIfsByQuarter(Page<IfsInventoryQuantitySupplierDto> page, @Param("ew") QueryWrapper<IfsInventoryQuantitySupplierDto> ew, @Param("beginDeclareDate") String beginDeclareDate, @Param("endDeclareDate")String endDeclareDate);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StructureItemParameterMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.dto.TestItemDto;
import com.ruoyi.inspect.pojo.StructureItemParameter;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * æ£€éªŒé¡¹ç›®å‚æ•°(StructureItemParameter)表数据库访问层
 *
 * @author makejava
 * @since 2024-02-26 16:21:17
 */
public interface StructureItemParameterMapper extends BaseMapper<StructureItemParameter> {
    IPage<StructureItemParameter> selectItemParameterList(Page page, @Param("ew") QueryWrapper<StructureItemParameter> ew);
    List<Map<String, Object>> getInsProduction();
    List<TestItemDto> getItemTree();
    int removeNoSample(@Param("sample") String sample);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StructureTestObjectMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.dto.PageTestObjectDto;
import com.ruoyi.inspect.pojo.StructureTestObject;
import org.apache.ibatis.annotations.Param;
/**
 * æ£€æµ‹å¯¹è±¡(StructureTestObject)表数据库访问层
 *
 * @author makejava
 * @since 2024-02-26 17:36:41
 */
public interface StructureTestObjectMapper extends BaseMapper<StructureTestObject> {
    IPage<PageTestObjectDto> selectTestObjectList(Page page, @Param("ew") QueryWrapper<PageTestObjectDto> ew, @Param("partNo") String partNo);
}
basic-server/src/main/java/com/ruoyi/inspect/mapper/StructureTestObjectPartMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.pojo.StructureTestObjectPart;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * æ£€éªŒå¯¹è±¡é›¶ä»¶è¡¨
 *
 * @author zhuo
 * @since 2024-08-07
 */
@Mapper
public interface StructureTestObjectPartMapper extends BaseMapper<StructureTestObjectPart> {
    IPage<StructureTestObjectPart> selectListByTestObjectId(Page page, @Param("ew") QueryWrapper<StructureTestObjectPart> structureTestObjectPartQueryWrapper, @Param("testObjectId") Integer testObjectId);
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/Certification.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
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;
@TableName(value = "certification")
@Data
public class Certification implements Serializable {
    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "资质名称")
    private String name;
    @ApiModelProperty(value = "资质编码")
    private String code;
    @ApiModelProperty(value = "颁发机构")
    private String organization;
    @ApiModelProperty(value = "资质说明")
    private String explanation;
    @ApiModelProperty(value = "首次颁发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime firstIssuanceDate;
    @ApiModelProperty(value = "最近颁发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime latestIssuanceDate;
    @ApiModelProperty(value = "到期颁发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expireTime;
    @ApiModelProperty(value = "颁布日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime dateOfIssuance;
    @ApiModelProperty(value = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "更新人")
    private String createUserName;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "资质图片地址")
    private String imageUrl;
    @ApiModelProperty(value = "资质附件地址")
    private String fileUrl;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/IfsInventoryQuantity.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
package com.ruoyi.inspect.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@TableName("ifs_inventory_quantity")
@ExcelIgnoreUnannotated
public class IfsInventoryQuantity  implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("域")
    private String contract;
    @ExcelProperty(index = 13, value = "订单号")
    @ApiModelProperty("订单号")
    private String orderNo;
    @ApiModelProperty("行号")
    private String lineNo;
    @ApiModelProperty("下达号")
    private String releaseNo;
    @ApiModelProperty("接收号")
    private Integer receiptNo;
    @ExcelProperty(index = 3, value = "零件号")
    @ApiModelProperty("零件号")
    private String partNo;
    @ExcelProperty(index = 4, value = "零件描述")
    @ApiModelProperty("零件描述")
    private String partDesc;
    @ApiModelProperty("状态描述(IFS原本拉取的状态)")
    private String status;
    @ApiModelProperty("状态(IFS原本拉取的状态)")
    private String statusDb;
    @ExcelProperty(index = 11, value = "抵达的采购数量")
    @ApiModelProperty("抵达的采购数量")
    private BigDecimal qtyArrived;
    @ApiModelProperty("已检验的购买数量")
    private BigDecimal qtyInspected;
    @ApiModelProperty("要检验的采购数量")
    private BigDecimal qtyToInspect;
    @ApiModelProperty("供应商编号")
    private String supplierId;
    @ExcelProperty(index = 5, value = "供应商名称")
    @ApiModelProperty("供应商名称")
    private String supplierName;
    @ApiModelProperty("抵达的库存数量")
    private BigDecimal invQtyInStore;
    @ApiModelProperty("抵达的采购数量")
    private BigDecimal purQtyInStore;
    @ApiModelProperty("配置标识")
    private String configurationId;
    @ApiModelProperty("批号")
    private String lotBatchNo;
    @ApiModelProperty("wdr号")
    private String waivDevRejNo;
    @ApiModelProperty("活动序列")
    private Integer activitySeq;
    @ApiModelProperty("序列号")
    private String serialNo;
    @ApiModelProperty("库位号")
    private String locationNo;
    @ApiModelProperty("版本号")
    private String engChgLevel;
    @ApiModelProperty("接收人")
    private String receiver;
    @ApiModelProperty("接收人姓名")
    private String receiverName;
    @ApiModelProperty("采购员")
    private String buyerCode;
    @ApiModelProperty("采购员姓名")
    private String buyerName;
    @ApiModelProperty("实际到货日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime arriveDate;
    @ApiModelProperty("实际交货日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime deliveryDate;
    @ApiModelProperty("生产日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime productDate;
    @ApiModelProperty("失效日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime invalidDate;
    @ApiModelProperty("审批日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime approvedDate;
    @ApiModelProperty("采购申请创建人")
    private String reqCeater;
    @ApiModelProperty("采购申请创建人姓名")
    private String reqCeaterName;
    @ApiModelProperty("采购订单行备注")
    private String lineRemarks;
    @ExcelProperty(index = 12, value = "单位")
    @ApiModelProperty("单位")
    private String buyUnitMeas;
    @ApiModelProperty("是否为ifs拉取,0 å¦, 1是")
    private Integer isSource;
    private Integer number;
    @ApiModelProperty("状态: 0:待报检, 1:待检验, :已审核")
    private Integer state;
    @ApiModelProperty("接收时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime receiverDate;
    @ApiModelProperty("是否为首次出现 0 å¦ 1 æ˜¯")
    private Integer isFirst;
    @ApiModelProperty("目标库位号")
    private String toLocation;
    @ApiModelProperty("是否是报检 0 å¦ 1 æ˜¯")
    private Integer isInspect;
    @ApiModelProperty("报检人")
    private String declareUser;
    @ApiModelProperty("报检人id")
    private Integer declareUserId;
    @ApiModelProperty("单位")
    private String partUnit;
    @ApiModelProperty("产业链检测数据")
    private String industryChain;
    @ApiModelProperty("报检时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime declareDate;
    @ApiModelProperty("是否卡可以季度检验 0 å¦ 1 æ˜¯")
    private Integer isQuarter;
    // ä¿®æ”¹åŽçš„
    @ExcelProperty(index = 1, value = "批号")
    @ApiModelProperty("批号")
    private String updateBatchNo;
    @ApiModelProperty("是否结束, 0否, 1是")
    private Integer isFinish;
    @ApiModelProperty("是否是铜单丝, 0否, 1是")
    private Integer isCopper;
    // åˆæ ¼çŠ¶æ€,: 0 æ£€éªŒä¸­, 1合格, 2不合格, 3未下单,4让步放行
    @ApiModelProperty("检验状态")
    private Integer inspectStatus;
    @ApiModelProperty("是否采购订单登记: 0否, 1:是")
    private Integer isRegister;
    @ApiModelProperty("是否修改过批号: 0否, 1:是")
    private Integer isUpdateBatch;
    // æ˜¯å¦æ˜¯è¿‡æœŸææ–™: 0否, 1:是"
    @ApiModelProperty("物料类型")
    private Integer isExpire;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/InsSample1.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
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;
/**
 * æ£€éªŒæ ·å“
 * @TableName ins_sample
 */
@TableName(value ="ins_sample")
@Data
public class InsSample1 implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * 1:合格 0:不合格
     */
    private Integer insResult;
    /**
     * å¤–键:ins_order表id
     */
    private Integer insOrderId;
    /**
     * é…å¥—样品型号
     */
    private String joinModel;
    /**
     * é…å¥—样品名称
     */
    private String joinName;
    /**
     * é…å¥—样品数量
     */
    private Integer joinNum;
    /**
     * æ ·å“ç¼–码
     */
    private String sampleCode;
    /**
     * æ£€éªŒå·¥åŽ‚
     */
    private String factory;
    /**
     * å®žéªŒå®¤åç§°
     */
    private String laboratory;
    /**
     * æ ·å“ç±»åž‹
     */
    private String sampleType;
    /**
     * æ ·å“åç§°
     */
    private String sample;
    /**
     * è§„格型号
     */
    private String model;
    /**
     * æ£€éªŒçŠ¶æ€(0:待检验1:检验中 2:已检验3:待复核4:复核未通过5:复核通过)
     */
    private Integer insState;
    /**
     * å¤‡æ³¨
     */
    private String remark;
    private Integer standardMethodListId;
    @ApiModelProperty("样品单位")
    private String unit;
    private Integer cellId;
    @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;
    private Integer parentId;
    @ApiModelProperty("数量")
    private Integer quantity;
    @ApiModelProperty("特殊标准方法")
    private String specialStandardMethod;
    @TableField(select = false,exist = false)
    private Integer num=1;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/Laboratory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
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 lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * å®žéªŒå®¤ç®¡ç†(Laboratory)表对象
 */
@TableName(value = "laboratory")
@Data
@NoArgsConstructor
public class Laboratory  implements Serializable {
    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "实验室名称")
    private String laboratoryName;
    @ApiModelProperty(value = "场所编码")
    private String laboratoryNumber;
    @ApiModelProperty(value = "实验室代号")
    private String laboratoryCode;
    @ApiModelProperty(value = "负责人电话")
    private String phoneNumber;
    @ApiModelProperty(value = "负责人")
    @TableField(fill = FieldFill.INSERT)
    private String head;
    @ApiModelProperty(value = "地址")
    private String address;
    @ApiModelProperty(value = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "创建人")
    private String createUserName;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/Product.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
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;
/**
 * äº§å“è¡¨
 * @TableName product
 */
@TableName(value ="product")
@Data
public class Product  implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * äº§å“åç§°
     */
    private String name;
    /**
     * äº§å“åç§°EN
     */
    private String nameEn;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    /**
     * å¤–键:structure_test_object表id
     */
    private Integer objectId;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/ProductPart.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
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;
@Data
@TableName("product_part")
public class ProductPart implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("产品id")
    private Integer productId;
    @ApiModelProperty("零件号")
    private String partNo;
    @ApiModelProperty("颜色")
    private String color;
    @ApiModelProperty("色标")
    private String colorCode;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/ProductSupplierDensity.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
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 zhuo
 * @since 2024-09-19
 */
@Data
@TableName("product_supplier_density")
public class ProductSupplierDensity implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("产品id")
    private Integer productId;
    @ApiModelProperty("型号")
    private String model;
    @ApiModelProperty("厂家名称")
    private String supplierName;
    @ApiModelProperty("密度值")
    private String densityValue;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/Seal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
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;
/**
 * å°ç« ç®¡ç†(Laboratory)表对象
 */
@TableName(value = "seal")
@Data
public class Seal  implements Serializable {
    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "实验室id")
    private Integer labId;
    @TableField(exist=false)
    @ApiModelProperty(value = "实验室名称")
    private String laboratoryName;
    @ApiModelProperty(value = "印章图片")
    private String address;
    @ApiModelProperty(value = "印章类型")
    private String type;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardMethod.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
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;
/**
 * æ ‡å‡†æ–¹æ³•
 * @TableName standard_method
 */
@TableName(value ="standard_method")
@Data
public class StandardMethod implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String field;
    @ApiModelProperty("检验对象")
    private String structureTestObjectId;
    /**
     * æ ‡å‡†ç¼–号
     */
    @ApiModelProperty(value = "标准编号")
    private String code;
    /**
     * æ ‡å‡†æ–¹æ³•
     */
    @ApiModelProperty(value = "标准描述")
    private String name;
    @ApiModelProperty(value = "标准描述EN")
    private String nameEn;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "资质")
    private String qualificationId;
    @ApiModelProperty(value = "是否产品标准")
    private Integer isProduct;
    @ApiModelProperty(value = "是否启用")
    private Integer isUse;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建人")
    @TableField(exist = false,select = false)
    private String createUserName;
    @ApiModelProperty(value = "更新人")
    @TableField(exist = false,select = false)
    private String updateUserName;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardMethodList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
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;
/**
 * æ ‡å‡†æ ‘下的标准列表
 * @TableName standard_method_list
 */
@TableName(value ="standard_method_list")
@Data
public class StandardMethodList implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * æ ‡å‡†ç¼–号
     */
    @ApiModelProperty("标准编号")
    private String code;
    /**
     * æ ‡å‡†åç§°
     */
    @ApiModelProperty("标准称号")
    private String name;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("工厂")
    private String factory;
    @ApiModelProperty("实验室")
    private String laboratory;
    @ApiModelProperty("样品分类")
    private String sampleType;
    @ApiModelProperty("样品")
    private String sample;
    @ApiModelProperty("型号")
    private String model;
    @ApiModelProperty("")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(exist = false)
    private String createUserName;
    /**
     *
     */
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     *
     */
    @ApiModelProperty("")
    @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;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardProductList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,221 @@
package com.ruoyi.inspect.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * æ ‡å‡†æ ‘下的检验项目
 * @TableName standard_product_list
 */
@TableName(value ="standard_product_list")
@Data
public class StandardProductList implements Serializable {
    /**
     * ä¸»é”®id
     */
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * æ£€éªŒé¡¹
     */
    @ApiModelProperty("检验项")
    private String inspectionItem;
    @ApiModelProperty("检验项EN")
    private String inspectionItemEn;
    /**
     * æ£€éªŒé¡¹å°ç±»
     */
    @ApiModelProperty("检验项小类")
    private String inspectionItemSubclass;
    @ApiModelProperty("检验项小类EN")
    private String inspectionItemSubclassEn;
    /**
     * å®žéªŒå®¤
     */
    @ApiModelProperty("实验室")
    private String laboratory;
    @ApiModelProperty("子实验室")
    private String sonLaboratory;
    /**
     * è®¡é‡å•位
     */
    @ApiModelProperty("计量单位")
    private String unit;
    /**
     * å•ä»·(元)
     */
    @ApiModelProperty("单价")
    private String price;
    /**
     * å·¥æ—¶(H)
     */
    @ApiModelProperty("工时")
    private String manHour;
    /**
     * å·¥æ—¶åˆ†ç»„
     */
    @ApiModelProperty("工时分组")
    private String manHourGroup;
    /**
     * æ£€éªŒé¡¹ç±»åž‹
     */
    @ApiModelProperty("检验项类型")
    private String inspectionItemType;
    /**
     * æ£€éªŒå€¼ç±»åž‹
     */
    @ApiModelProperty("检验值类型")
    private String inspectionValueType;
    /**
     * æ£€éªŒæ¬¡æ•°
     */
    @ApiModelProperty("检验次数")
    private Integer checkoutNumber;
    /**
     * åŒºé—´
     */
    @ApiModelProperty("区间")
    private String section;
    /**
     * åŒºé—´
     */
    @ApiModelProperty("芯数区间")
    private String cores;
    /**
     * æ–¹æ³•
     */
    @ApiModelProperty("方法列表")
    private String method;
    @ApiModelProperty("方法")
    private String methodS;
    /**
     * é¢„计时间(天)
     */
    @ApiModelProperty("预计时间")
    private Integer manDay;
    /**
     * ç‰¹æ®Šæ ‡è¯†
     */
    @ApiModelProperty("特殊标识")
    private String bsm;
    /**
     * è¦æ±‚值
     */
    @ApiModelProperty("要求值")
    private String ask;
    @ApiModelProperty("要求描述")
    private String tell;
    /**
     * å¤–键:标准方法id
     */
    @ApiModelProperty("标准方法id")
    private Integer standardMethodListId;
    @ApiModelProperty("工厂")
    private String factory;
    @ApiModelProperty("样品分类")
    private String sampleType;
    @ApiModelProperty("样品")
    private String sample;
    @ApiModelProperty("型号")
    private String model;
    @ApiModelProperty("型号")
    private Integer templateId;
    @ApiModelProperty("")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     *
     */
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     *
     */
    @ApiModelProperty("")
    @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;
    @ApiModelProperty("1:有效 0:无效")
    private Integer state;
    private String dic;
    private String tree;
    private Integer structureItemParameterId;
    @ApiModelProperty(value = "检验项分类")
    private String inspectionItemClass;
    @ApiModelProperty(value = "检验项分类EN")
    private String inspectionItemClassEn;
    @ApiModelProperty(value = "条件")
    private String radius;
    @ApiModelProperty(value = "条件列表")
    private String radiusList;
    @ApiModelProperty(value = "收费标准(元/次)")
    private String rates;
    @ApiModelProperty(value = "索引顺序")
    private Integer sort;
    /**
     * å¯¼ä½“材质
     */
    @ApiModelProperty("导体材质")
    private String conductorMaterial;
    /**
     * å¯¼ä½“类型
     */
    @ApiModelProperty("导体类型")
    private String conductorType;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardProductListSupplierAsk.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.ruoyi.inspect.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * æ£€éªŒé¡¹ç›®åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-23
 */
@TableName(value ="standard_product_list_supplier_ask")
@Data
public class StandardProductListSupplierAsk {
    @TableId(type = IdType.AUTO)
    private Integer supplierAskId;
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("检验项目id")
    private Long productListId;
    @ApiModelProperty("厂家名称")
    private String supplierName;
    @ApiModelProperty("要求值")
    private String ask;
    @ApiModelProperty("要求描述")
    private String tell;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardTemplate.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
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;
/**
 * æ ‡å‡†æ¨¡æ¿
 * @TableName standard_template
 */
@TableName(value ="standard_template")
@Data
public class StandardTemplate  implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * æ¨¡æ¿åç§°
     */
    @ApiModelProperty("模板名称")
    private String name;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty("备注")
    private String remark;
    /**
     * æ¨¡æ¿ç»“æž„
     */
    private String thing;
    @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;
    @ApiModelProperty("创建用户")
    @TableField(exist = false)
    private String createUserName;
    @ApiModelProperty("更新用户")
    @TableField(exist = false)
    private String updateUserName;
    /**
     * æ¨¡æ¿ç¼–号
     */
    @ApiModelProperty("模板编号")
    private String number;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StandardTree.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
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 org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* æ ‡å‡†æ ‘
* @TableName standard_tree
*/
@TableName(value ="standard_tree")
@Data
public class StandardTree implements Serializable {
    /**
    *
    */
    @NotNull(message="[]不能为空")
    @ApiModelProperty("")
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
    * å·¥åŽ‚
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("工厂")
    @Length(max= 255,message="编码长度不能超过255")
    private String factory;
    /**
    * å®žéªŒå®¤
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("实验室")
    @Length(max= 255,message="编码长度不能超过255")
    private String laboratory;
    /**
    * æ ·å“å¤§ç±»
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("样品大类")
    @Length(max= 255,message="编码长度不能超过255")
    private String sampleType;
    /**
    * æ ·å“
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("样品")
    @Length(max= 255,message="编码长度不能超过255")
    private String sample;
    /**
    * åž‹å·
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("型号")
    @Length(max= 255,message="编码长度不能超过255")
    private String model;
    /**
    *
    */
    @ApiModelProperty("")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
    *
    */
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
    *
    */
    @ApiModelProperty("")
    @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;
    /**
     * ä¿®æ”¹å‰åç§°
     */
    @TableField(exist = false,select = false)
    private String oldModel;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StructureItemParameter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
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;
/**
 * æ£€éªŒé¡¹ç›®å‚æ•°(StructureItemParameter)表对象
 *
 * @author makejava
 * @since 2024-02-26 16:21:17
 */
@TableName(value ="structure_item_parameter")
@Data
public class StructureItemParameter implements Serializable {
    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "检验项")
    private String inspectionItem;
    @ApiModelProperty(value = "检验项EN")
    private String inspectionItemEn;
    @ApiModelProperty(value = "检验子项")
    private String inspectionItemSubclass;
    @ApiModelProperty(value = "检验子项EN")
    private String inspectionItemSubclassEn;
    @ApiModelProperty(value = "检验对象")
    private String sample;
    @ApiModelProperty(value = "单价(元)")
    private String price;
    @ApiModelProperty(value = "场所")
    private String laboratory;
    @ApiModelProperty(value = "试验室")
    private String sonLaboratory;
    @ApiModelProperty(value = "要求描述")
    private String askTell;
    @ApiModelProperty(value = "要求值")
    private String ask;
    @ApiModelProperty(value = "计量单位")
    private String unit;
    @ApiModelProperty(value = "试验方法")
    private String method;
    @ApiModelProperty(value = "工时(H)")
    private Double manHour;
    @ApiModelProperty(value = "预计时间(H)")
    private Integer manDay;
    @ApiModelProperty(value = "工时分组")
    private String manHourGroup;
    @ApiModelProperty(value = "检验项类型")
    private String inspectionItemType;
    @ApiModelProperty(value = "检验值类型")
    private String inspectionValueType;
    @ApiModelProperty(value = "检验次数")
    private Integer checkoutNumber;
    @ApiModelProperty(value = "区间")
    private String section;
    @ApiModelProperty(value = "特殊标识")
    private String bsm;
    @ApiModelProperty(value = "原始记录模板")
    private Integer templateId;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "字典类型")
    private String dic;
    @ApiModelProperty(value = "检验项分类")
    private String inspectionItemClass;
    @ApiModelProperty(value = "检验项分类EN")
    private String inspectionItemClassEn;
    @ApiModelProperty(value = "条件")
    private String radiusList;
    @ApiModelProperty(value = "收费标准(元/次)")
    private String rates;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StructureTestObject.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
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;
/**
 * æ£€æµ‹å¯¹è±¡(StructureTestObject)表对象
 *
 * @author makejava
 * @since 2024-02-26 17:36:41
 */
@TableName(value ="structure_test_object")
@Data
public class StructureTestObject implements Serializable {
    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "场所")
    private Integer laboratoryId;
    @ApiModelProperty(value = "检验对象")
    private String specimenName;
    @ApiModelProperty(value = "检验对象EN")
    private String specimenNameEn;
    @ApiModelProperty(value = "对象代号")
    private String code;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "排序")
    private Integer sort;
    //"对象类型, 1:原材料, 2:成品, 3:辅材"
    @ApiModelProperty(value = "对象类型")
    private String objectType;
}
basic-server/src/main/java/com/ruoyi/inspect/pojo/StructureTestObjectPart.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
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;
/**
 * æ£€éªŒå¯¹è±¡é›¶ä»¶è¡¨(StructureTestObjectPart)$desc
 *
 * @author makejava
 * @since 2024-08-07 10:10:30
 */
@TableName(value ="structure_test_object_part")
@Data
public class StructureTestObjectPart implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("检验对象id")
    private Integer testObjectId;
    @ApiModelProperty("零件号")
    private String partNo;
    @ApiModelProperty("颜色")
    private String color;
    @ApiModelProperty("色标")
    private String colorCode;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
basic-server/src/main/java/com/ruoyi/inspect/service/CapacityScopeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
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.PageTestObjectDto;
import com.ruoyi.inspect.dto.TestItemDto;
import com.ruoyi.inspect.pojo.StructureItemParameter;
import com.ruoyi.inspect.pojo.StructureTestObject;
import java.util.List;
import java.util.Map;
/**
 * æ£€éªŒé¡¹ç›®å‚æ•°(StructureItemParameter)表服务接口
 *
 * @author makejava
 * @since 2024-02-26 16:21:17
 */
public interface CapacityScopeService extends IService<StructureItemParameter> {
    IPage<StructureItemParameter> selectItemParameterList(Page page, StructureItemParameter itemParameter);
    int addItemParameter(StructureItemParameter itemParameter);
    int delItemParameter(Integer id);
    int upItemParameter(StructureItemParameter itemParameter);
    IPage<PageTestObjectDto> selectTestObjectList(Page page, PageTestObjectDto pageTestObjectDto);
    int addTestObject(StructureTestObject testObject);
    int delTestObject(Integer id);
    int upTestObject(StructureTestObject testObject);
    List<StructureTestObject> selectTestObjectByName();
    //设备里面选择检验项目(树形结构)
    List<Map<String, Object>> getInsProduction();
    List<TestItemDto> getItemTree();
}
basic-server/src/main/java/com/ruoyi/inspect/service/CertificationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
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.pojo.Certification;
public interface CertificationService extends IService<Certification> {
    //查询资质明细列表
    IPage<Certification> getCertificationDetail(Page page, Certification certification);
    //添加资质明细列表
    int addCertificationDetail(Certification certification);
    //删除资质明细列表
    int delCertificationDetail(String ids);
}
basic-server/src/main/java/com/ruoyi/inspect/service/LaboratoryService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
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.pojo.Laboratory;
import java.util.List;
/**
 * å®žéªŒå®¤ç®¡ç†(Laboratory)表服务接口
 */
public interface LaboratoryService extends IService<Laboratory> {
    IPage<Laboratory> selectItemParameter(Page page, Laboratory itemParameter);
    int addParameter(Laboratory itemParameter);
    int delParameter(Integer id);
    int upParameter(Laboratory itemParameter);
    List<Laboratory> obtainItemParameterList();
}
basic-server/src/main/java/com/ruoyi/inspect/service/ProductPartService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.pojo.ProductPart;
public interface ProductPartService extends IService<ProductPart> {
    IPage<ProductPart> selectByProductId(IPage<ProductPart> page,ProductPart productPart);
    void addProductPart(ProductPart productPart);
    void updateProductPartById(ProductPart productPart);
}
basic-server/src/main/java/com/ruoyi/inspect/service/ProductService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
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.ProductDTO1;
import com.ruoyi.inspect.excel.StructureTestObjectData;
import com.ruoyi.inspect.pojo.Product;
import java.util.List;
/**
* @author z1292
* @description é’ˆå¯¹è¡¨ã€product(产品表)】的数据库操作Service
* @createDate 2024-04-26 01:11:02
*/
public interface ProductService extends IService<Product> {
    IPage<Product> selectProductListByObjectId(Page page, ProductDTO1 productDto);
    int addProduct(Product product);
    int upProduct(Product product);
    int delProduct(Integer id);
    void importPartExcel(List<StructureTestObjectData> list);
}
basic-server/src/main/java/com/ruoyi/inspect/service/ProductSupplierDensityService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
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.pojo.ProductSupplierDensity;
/**
 * äº§å“åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-19
 */
public interface ProductSupplierDensityService extends IService<ProductSupplierDensity> {
    IPage<ProductSupplierDensity> selectByProductId(Page page, ProductSupplierDensity supplierDensity);
    void addProductSupplierDensity(ProductSupplierDensity supplierDensity);
    void updateProductSupplierDensity(ProductSupplierDensity supplierDensity);
}
basic-server/src/main/java/com/ruoyi/inspect/service/SealService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
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.pojo.Laboratory;
import com.ruoyi.inspect.pojo.Seal;
import java.util.List;
public interface SealService extends IService<Seal> {
    //新增
    int addSeal(Seal seal);
    //查询
    IPage<Seal> selectSeal(Page page, Seal seal);
    List<Laboratory>  Laboratory(Integer id);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardMethodListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.pojo.StandardMethodList;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_method_list(标准树下的标准列表)】的数据库操作Service
* @createDate 2024-03-04 13:44:04
*/
public interface StandardMethodListService extends IService<StandardMethodList> {
    int addStandardMethodList(Integer standardId, String tree);
    Map<String, List<?>> selectsStandardMethodByFLSSM(String tree);
    Map<String, List<?>> selectsStandardMethodByFLSSM2(String tree);
    int delStandardMethodByFLSSM(Integer id);
    List<StandardMethodList> selectStandardMethodEnum();
    Integer getStandardMethodId(String code);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardMethodService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
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.pojo.StandardMethod;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_method(标准方法)】的数据库操作Service
* @createDate 2024-03-03 19:21:41
*/
public interface StandardMethodService extends IService<StandardMethod> {
    IPage<StandardMethod> selectStandardMethodList(Page page, StandardMethod standardMethod);
    List<StandardMethod> selectStandardMethods();
    int addStandardMethod(StandardMethod standardMethod);
    int delStandardMethod(Integer id);
    int upStandardMethod(StandardMethod standardMethod);
    void inputExcel(MultipartFile file) throws IOException;
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardProductListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.ruoyi.inspect.service;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.dto.CopyStandardProductListDto;
import com.ruoyi.inspect.dto.InsSampleReceiveDto;
import com.ruoyi.inspect.dto.ResetTreeDragDTO;
import com.ruoyi.inspect.pojo.StandardProductList;
import java.util.List;
import java.util.Map;
/**
 * @author Administrator
 * @description é’ˆå¯¹è¡¨ã€standard_product_list(标准树下的检验项目)】的数据库操作Service
 * @createDate 2024-03-05 10:33:29
 */
public interface StandardProductListService extends IService<StandardProductList> {
    int upStandardProductList(StandardProductList list);
    int delStandardProduct(JSONArray list);
    List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample);
    Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree, Integer page);
    IPage<StandardProductList> selectStandardProductByMethodId(Integer id, String tree, Integer page, String laboratory, String item, String items);
    Map<String, List<?>> selectStandardProductEnumByMethodId(Integer id, String tree, String item);
    boolean updateSection(StandardProductList list);
    /**
     * æ ‡å‡†åº“拖拽
     * @param resetTreeDragDTO
     */
    void resetTreeDrag(ResetTreeDragDTO resetTreeDragDTO);
    /**
     * æ ‡å‡†åº“拖拽
     * @param standardProductLists
     */
    void resetTreeDragBatch(List<StandardProductList> standardProductLists);
    /**
     * æ£€éªŒé¡¹è¦æ±‚值对比
     * @param copyStandardProductListDto
     * @return
     */
    List<StandardProductList> copyStandardProductList(CopyStandardProductListDto copyStandardProductListDto);
    /**
     * æ£€éªŒé¡¹è¦æ±‚值对比一个
     * @param copyStandardProductListDto
     * @return
     */
    List<StandardProductList> copyStandardProductOne(CopyStandardProductListDto copyStandardProductListDto);
    /**
     * æ£€éªŒé¡¹å¤åˆ¶æŽ’序
     * @param copyStandardProductListDto
     * @return
     */
    boolean copyStandardProductSort(CopyStandardProductListDto copyStandardProductListDto);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardProductListService2.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.pojo.StandardProductList;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_product_list(标准树下的检验项目)】的数据库操作Service
* @createDate 2024-03-05 10:33:29
*/
public interface StandardProductListService2 extends IService<StandardProductList> {
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardProductListSupplierAskService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.pojo.StandardProductListSupplierAsk;
import java.util.List;
/**
 * æ£€éªŒé¡¹ç›®åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author makejava
 * @since 2024-09-23
 */
public interface StandardProductListSupplierAskService extends IService<StandardProductListSupplierAsk> {
    List<StandardProductListSupplierAsk> selectByProductId(StandardProductListSupplierAsk supplierAsk);
    Integer addProductSupplierAsk(StandardProductListSupplierAsk supplierAsk);
    Integer updateProductSupplierAsk(StandardProductListSupplierAsk supplierAsk);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardTemplateService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
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.pojo.StandardTemplate;
import java.util.List;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_template(标准模板)】的数据库操作Service
* @createDate 2024-03-11 13:47:52
*/
public interface StandardTemplateService extends IService<StandardTemplate> {
    IPage<StandardTemplate> selectStandardTemplatePageList(Page page, StandardTemplate standardTemplate);
    int addStandardTemplate(StandardTemplate standardTemplate);
    int upStandardTemplate(StandardTemplate standardTemplate);
    int delStandardTemplate(Integer id);
    List<StandardTemplate> getStandardTemplate();
    String getStandTempThingById(Integer templateId);
    String getStandTempNameById(Integer templateId);
    StandardTemplate getStandTempIdByName(String name);
    int copyStandardTemplate(StandardTemplate newTemplate);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StandardTreeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.dto.FactoryDto;
import com.ruoyi.inspect.dto.SampleTypeDto;
import com.ruoyi.inspect.pojo.StandardTree;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_tree(标准树)】的数据库操作Service
* @createDate 2024-03-01 15:06:44
*/
public interface StandardTreeService extends IService<StandardTree> {
    List<FactoryDto> selectStandardTreeList();
    int addStandardTree(StandardTree standardTree);
    int delStandardTree(String tree);
    int addStandardProduct(String ids, String tree);
    List<SampleTypeDto> getStandardTree2();
    int upStandardProducts(Map<String, Object> product);
    List<StandardTree> getStandTreeBySampleType(String laboratory, String sampleType);
    void inExcelOfTree(MultipartFile file);
    void resetTreeOfPrice(String tree, Integer standardId);
    void resetTreeOfHour(String tree, Integer standardId);
    void resetTreeOfAsk(String tree, Integer standardId);
    void importWorkstationExcel(MultipartFile file);
    /**
     * æ ‡å‡†æ•°æŽ’序
     * @param list
     * @return
     */
    boolean updateTreeSort(List<FactoryDto> list);
    int updateStandardTree(StandardTree standardTree);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StructureItemParameterService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.pojo.StructureItemParameter;
public interface StructureItemParameterService extends IService<StructureItemParameter> {
    void removeNoSample(String sample);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StructureTestObjectPartService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
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.pojo.StructureTestObjectPart;
/**
 * æ£€éªŒå¯¹è±¡é›¶ä»¶è¡¨
 *
 * @author zhuo
 * @since 2024-08-07
 */
public interface StructureTestObjectPartService extends IService<StructureTestObjectPart> {
    IPage<StructureTestObjectPart> selectByTestObjectId(Page page, StructureTestObjectPart structureTestObjectPart);
    void addTestObjectPart(StructureTestObjectPart structureTestObjectPart);
    void updateTestObjectPart(StructureTestObjectPart structureTestObjectPart);
}
basic-server/src/main/java/com/ruoyi/inspect/service/StructureTestObjectService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.pojo.StructureTestObject;
/**
 * æ£€æµ‹å¯¹è±¡(StructureTestObject)$desc
 *
 * @author makejava
 * @since 2024-09-13 09:45:55
 */
public interface StructureTestObjectService extends IService<StructureTestObject> {
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/CapacityScopeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,185 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
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.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.dto.PageTestObjectDto;
import com.ruoyi.inspect.dto.TestItemDto;
import com.ruoyi.inspect.mapper.*;
import com.ruoyi.inspect.pojo.*;
import com.ruoyi.inspect.service.CapacityScopeService;
import com.ruoyi.inspect.service.StandardProductListService;
import com.ruoyi.inspect.service.StructureItemParameterService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * æ£€éªŒé¡¹ç›®å‚æ•°(StructureItemParameter)表服务实现类
 *
 * @author makejava
 * @since 2024-02-26 16:21:17
 */
@Service
@AllArgsConstructor
public class CapacityScopeServiceImpl extends ServiceImpl<StructureItemParameterMapper, StructureItemParameter> implements CapacityScopeService {
    private LaboratoryMapper laboratoryMapper;
    private StructureItemParameterMapper structureItemParameterMapper;
    private StructureTestObjectMapper structureTestObjectMapper;
    private ProductMapper productMapper;
    private StructureTestObjectPartMapper structureTestObjectPartMapper;
    private ProductPartMapper productPartMapper;
    private StandardProductListService standardProductListService;
    private StandardTreeMapper standardTreeMapper;
    private StructureItemParameterService structureItemParameterService;
    @Override
    public IPage<StructureItemParameter> selectItemParameterList(Page page, StructureItemParameter itemParameter) {
       return structureItemParameterMapper.selectItemParameterList(page, QueryWrappers.queryWrappers(itemParameter));
    }
    @Override
    public int addItemParameter(StructureItemParameter itemParameter) {
        if (itemParameter.getBsm().equals("")||itemParameter.getBsm()==null){
            itemParameter.setBsm("0");
        }
        int insert = structureItemParameterMapper.insert(itemParameter);
        return insert;
    }
    @Override
    public int delItemParameter(Integer id) {
        return structureItemParameterMapper.deleteById(id);
    }
    @Override
    public int upItemParameter(StructureItemParameter itemParameter) {
        return structureItemParameterMapper.updateById(itemParameter);
    }
    @Override
    public IPage<PageTestObjectDto> selectTestObjectList(Page page, PageTestObjectDto pageTestObjectDto) {
        String partNo = pageTestObjectDto.getPartNo();
        pageTestObjectDto.setPartNo(null);
        return structureTestObjectMapper.selectTestObjectList(page, QueryWrappers.queryWrappers(pageTestObjectDto),partNo);
    }
    @Override
    public int addTestObject(StructureTestObject testObject) {
        Long count = structureTestObjectMapper.selectCount(Wrappers.<StructureTestObject>lambdaQuery().eq(StructureTestObject::getSpecimenName, testObject.getSpecimenName()));
        if(count.compareTo(0L) > 0){
            throw new BaseException("检验对象不能重复");
        }
        return structureTestObjectMapper.insert(testObject);
    }
    @Override
    public int delTestObject(Integer id) {
        // äº§å‡ºæ£€éªŒå¯¹è±¡äº§å“ç»´æŠ¤
        structureTestObjectPartMapper.delete(Wrappers.<StructureTestObjectPart>lambdaQuery()
                .eq(StructureTestObjectPart::getTestObjectId, id));
        // åˆ é™¤äº§å“ç»´æŠ¤çš„零件绑定
        List<Product> products = productMapper.selectList(Wrappers.<Product>lambdaQuery()
                .eq(Product::getObjectId, id));
        List<Integer> productIds = products.stream().map(Product::getId).collect(Collectors.toList());
        productPartMapper.delete(Wrappers.<ProductPart>lambdaQuery()
                .in(ProductPart::getProductId, productIds));
        // åˆ é™¤äº§å“ç»´æŠ¤
        productMapper.delete(Wrappers.<Product>lambdaQuery()
                .in(Product::getId, productIds));
        return structureTestObjectMapper.deleteById(id);
    }
    @Override
    public int upTestObject(StructureTestObject testObject) {
        // æŸ¥è¯¢æ—§çš„æ£€éªŒå¯¹è±¡
        StructureTestObject oldTestObject = structureTestObjectMapper.selectById(testObject.getId());
        if (!oldTestObject.getSpecimenName().equals(testObject.getSpecimenName())) {
            // æŸ¥è¯¢æ‰€æœ‰å¯¹è±¡ä¸€æ ·çš„æ£€éªŒé¡¹ç›®
            List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
                    .eq(StandardProductList::getSampleType, oldTestObject.getSpecimenName()));
            if (CollectionUtils.isNotEmpty(standardProductLists)){
                for (StandardProductList standardProductList : standardProductLists) {
                    // ä¿®æ”¹æ‰€æœ‰çš„对象名称和数型结构
                    standardProductList.setSampleType(testObject.getSpecimenName());
                    // éœ€è¦æˆªå–第三级, é¿å…ä¸‰å››çº§åç§°ä¸€æ ·ä¿®æ”¹é”™è¯¯
                    String[] trees = standardProductList.getTree().split(" - ");
                    trees[2] = testObject.getSpecimenName();
                    List<String> list = CollUtil.newArrayList(trees);
                    String newName = CollUtil.join(list, " - ");
                    standardProductList.setTree(newName);
                }
                standardProductListService.updateBatchById(standardProductLists);
            }
            // ä¿®æ”¹æ£€éªŒé¡¹ç›®å‚数的检验对象
            // æ‹¼æŽ¥ ["object", æŸ¥è¯¢æ£€éªŒé¡¹ç›®å‚数修改绑定的检验对象
            String format = "[\"{}\",";
            String sampleOld = StrUtil.format(format, oldTestObject.getSpecimenName());
            List<StructureItemParameter> itemParameterList = structureItemParameterService.list(Wrappers.<StructureItemParameter>lambdaQuery()
                    .like(StructureItemParameter::getSample, sampleOld));
            if (CollectionUtils.isNotEmpty(itemParameterList)) {
                for (StructureItemParameter structureItemParameter : itemParameterList) {
                    // ä¿®æ”¹ç»‘定的样品名称
                    String sampleNew = StrUtil.format(format, testObject.getSpecimenName());
                    String sampleUp = structureItemParameter.getSample().replace(sampleOld, sampleNew);
                    structureItemParameter.setSample(sampleUp);
                }
                structureItemParameterService.updateBatchById(itemParameterList);
            }
            // ä¿®æ”¹æ ‘的型号
            standardTreeMapper.update(null, Wrappers.<StandardTree>lambdaUpdate()
                    .eq(StandardTree::getSampleType, oldTestObject.getSpecimenName())
                    .set(StandardTree::getSampleType, testObject.getSpecimenName()));
        }
        Long count = structureTestObjectMapper.selectCount(Wrappers.<StructureTestObject>lambdaQuery()
                .eq(StructureTestObject::getSpecimenName, testObject.getSpecimenName())
                .ne(StructureTestObject::getId, testObject.getId()));
        if(count.compareTo(0L) > 0){
            throw new BaseException("检验对象不能重复");
        }
        return structureTestObjectMapper.updateById(testObject);
    }
    @Override
    public List<StructureTestObject> selectTestObjectByName() {
        return structureTestObjectMapper.selectList(Wrappers.<StructureTestObject>lambdaQuery().select(StructureTestObject::getSpecimenName,StructureTestObject::getId));
    }
    //设备里面选择检验项目(树形结构)
    @Override
    public List<Map<String, Object>> getInsProduction() {
        return structureItemParameterMapper.getInsProduction();
    }
    @Override
    public List<TestItemDto> getItemTree() {
        return structureItemParameterMapper.getItemTree();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/CertificationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.inspect.service.impl;
import com.alibaba.fastjson2.JSON;
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.mapper.CertificationMapper;
import com.ruoyi.inspect.pojo.Certification;
import com.ruoyi.inspect.service.CertificationService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@AllArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class CertificationServiceImpl extends ServiceImpl<CertificationMapper, Certification> implements CertificationService {
    private CertificationMapper certificationMapper;
    //查询资质明细列表
    @Override
    public IPage<Certification> getCertificationDetail(Page page, Certification certification) {
        return  certificationMapper.getCertificationDetail(page, QueryWrappers.queryWrappers(certification));
    }
    //添加资质明细列表
    @Override
    public int addCertificationDetail(Certification certification) {
        return certificationMapper.insert(certification);
    }
    //删除资质明细列表
    @Override
    public int delCertificationDetail(String ids) {
        List<Integer> list = JSON.parseArray(ids,Integer.class);
        return certificationMapper.deleteBatchIds(list);
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/LaboratoryServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.ruoyi.inspect.service.impl;
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.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.mapper.LaboratoryMapper;
import com.ruoyi.inspect.pojo.Laboratory;
import com.ruoyi.inspect.service.LaboratoryService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * å®žéªŒå®¤ç®¡ç†(Laboratory)表服务实现类
 */
@Service
@AllArgsConstructor
public class LaboratoryServiceImpl extends ServiceImpl<LaboratoryMapper, Laboratory> implements LaboratoryService {
    private LaboratoryMapper laboratoryMapper;
    @Override
    public IPage<Laboratory> selectItemParameter(Page page, Laboratory itemParameter) {
        return laboratoryMapper.selectItemParameter(page, QueryWrappers.queryWrappers(itemParameter));
    }
    @Override
    public int addParameter(Laboratory itemParameter) {
        return laboratoryMapper.insert(itemParameter);
    }
    @Override
    public int delParameter(Integer id) {
        return laboratoryMapper.deleteById(id);
    }
    @Override
    public int upParameter(Laboratory itemParameter) {
        return laboratoryMapper.updateById(itemParameter);
    }
    @Override
    public List<Laboratory> obtainItemParameterList() {
        return laboratoryMapper.selectList(Wrappers.<Laboratory>lambdaQuery().select(Laboratory::getLaboratoryName, Laboratory::getId));
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/ProductPartServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.mapper.ProductPartMapper;
import com.ruoyi.inspect.mapper.StructureTestObjectPartMapper;
import com.ruoyi.inspect.pojo.ProductPart;
import com.ruoyi.inspect.pojo.StructureTestObjectPart;
import com.ruoyi.inspect.service.ProductPartService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Transactional
@Service
@AllArgsConstructor
public class ProductPartServiceImpl extends ServiceImpl<ProductPartMapper, ProductPart> implements ProductPartService {
    private  ProductPartMapper productPartMapper;
    private StructureTestObjectPartMapper structureTestObjectPartMapper;
    @Override
    public IPage<ProductPart> selectByProductId(IPage<ProductPart> page,ProductPart productPart) {
        return productPartMapper.selectListByProductId(page, QueryWrappers.queryWrappers(productPart),productPart.getProductId());
    }
    @Override
    public void addProductPart(ProductPart productPart) {
        if (productPart.getProductId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        this.isPartNoExist(productPart.getPartNo(), productPart.getProductId(), null);
        productPartMapper.insert(productPart);
    }
    @Override
    public void updateProductPartById(ProductPart productPart) {
        this.isPartNoExist(productPart.getPartNo(), productPart.getProductId(), productPart.getId());
        if (productPart.getProductId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        productPartMapper.updateById(productPart);
    }
    // åˆ¤æ–­é›¶ä»¶å·æ˜¯å¦å­˜åœ¨
    public void isPartNoExist(String partNo,Integer productId, Integer id) {
        // é›¶ä»¶å·å”¯ä¸€ ä½†ä¸å¿…å¡«
        if (StringUtils.isNotBlank(partNo)) {
            Long count = productPartMapper.selectCount(new LambdaQueryWrapper<ProductPart>()
//                    .eq(ProductPart::getProductId, productId)
                    .eq(ProductPart::getPartNo, partNo)
                    .ne(id != null, ProductPart::getId, id));
            Long selectCount = structureTestObjectPartMapper.selectCount(Wrappers.<StructureTestObjectPart>lambdaQuery()
                    .eq(StructureTestObjectPart::getPartNo, partNo));
            if (count > 0 || selectCount > 0) {
                throw new BaseException("该零件号已绑定过检验对象");
            }
        } else {
            throw new BaseException("请输入零件号");
        }
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/ProductServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,188 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.dto.ProductDTO1;
import com.ruoyi.inspect.excel.StructureTestObjectData;
import com.ruoyi.inspect.mapper.ProductMapper;
import com.ruoyi.inspect.mapper.ProductPartMapper;
import com.ruoyi.inspect.mapper.StandardTreeMapper;
import com.ruoyi.inspect.mapper.StructureTestObjectMapper;
import com.ruoyi.inspect.pojo.*;
import com.ruoyi.inspect.service.LaboratoryService;
import com.ruoyi.inspect.service.ProductService;
import com.ruoyi.inspect.service.StandardProductListService;
import com.ruoyi.inspect.service.StructureItemParameterService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author z1292
* @description é’ˆå¯¹è¡¨ã€product(产品表)】的数据库操作Service实现
* @createDate 2024-04-26 01:11:02
*/
@Service
@AllArgsConstructor
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product>
    implements ProductService{
    private ProductMapper productMapper;
    private LaboratoryService laboratoryService;
    private StructureTestObjectMapper structureTestObjectMapper;
    private ProductPartMapper productPartMapper;
    private StandardProductListService standardProductListService;
    private StandardTreeMapper standardTreeMapper;
    private StructureItemParameterService structureItemParameterService;
    @Override
    public IPage<Product> selectProductListByObjectId(Page page, ProductDTO1 product) {
        String partNo = product.getPartNo();
        product.setPartNo(null);
        return productMapper.selectProductListByObjectId(page, QueryWrappers.queryWrappers(product), partNo);
    }
    @Override
    public int addProduct(Product product) {
        return productMapper.insert(product);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int upProduct(Product product) {
        // æŸ¥è¯¢åŽŸæœ¬çš„åç§°
        Product oldProduct = productMapper.selectById(product.getId());
        if (!oldProduct.getName().equals(product.getName())) {
            // ä¿®æ”¹åç§°åŒ¹é…çš„æ ‡å‡†æ ‘下的检验项目
            // æŸ¥è¯¢æ‰€æœ‰å¯¹è±¡+名称的树
            StructureTestObject testObject = structureTestObjectMapper.selectById(oldProduct.getObjectId());
            List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
                    .eq(StandardProductList::getSample, oldProduct.getName())
                    .eq(StandardProductList::getSampleType, testObject.getSpecimenName()));
            if (CollectionUtils.isNotEmpty(standardProductLists)) {
                for (StandardProductList standardProductList : standardProductLists) {
                    // ä¿®æ”¹æ ·å“åç§°
                    standardProductList.setSample(product.getName());
                    // ä¿®æ”¹æ ‘名称
                    // éœ€è¦æˆªå–第四级, é¿å…ä¸‰å››çº§åç§°ä¸€æ ·ä¿®æ”¹é”™è¯¯
                    String[] trees = standardProductList.getTree().split(" - ");
                    trees[3] = product.getName();
                    List<String> list = CollUtil.newArrayList(trees);
                    String newName = CollUtil.join(list, " - ");
                    standardProductList.setTree(newName);
                }
                standardProductListService.updateBatchById(standardProductLists);
            }
            // ä¿®æ”¹æ£€éªŒé¡¹ç›®å‚数的检验对象
            // æ‹¼æŽ¥["object","product"]查询检验项目参数修改绑定的检验对象
            String format = "[\"{}\",\"{}\"]";
            String sampleOld = StrUtil.format(format, testObject.getSpecimenName(), oldProduct.getName());
            List<StructureItemParameter> itemParameterList = structureItemParameterService.list(Wrappers.<StructureItemParameter>lambdaQuery()
                    .like(StructureItemParameter::getSample, sampleOld));
            if (CollectionUtils.isNotEmpty(itemParameterList)) {
                for (StructureItemParameter structureItemParameter : itemParameterList) {
                    // ä¿®æ”¹ç»‘定的样品名称
                    String sampleNew = StrUtil.format(format, testObject.getSpecimenName(), product.getName());
                    String sampleUp = structureItemParameter.getSample().replace(sampleOld, sampleNew);
                    structureItemParameter.setSample(sampleUp);
                }
                structureItemParameterService.updateBatchById(itemParameterList);
            }
            // ä¿®æ”¹æ ‘的型号
            standardTreeMapper.update(null, Wrappers.<StandardTree>lambdaUpdate()
                    .eq(StandardTree::getSampleType, testObject.getSpecimenName())
                    .eq(StandardTree::getSample, oldProduct.getName())
                    .set(StandardTree::getSample, product.getName()));
        }
        return productMapper.updateById(product);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int delProduct(Integer id) {
        // åˆ é™¤é›¶ä»¶ç»‘定
        productPartMapper.delete(Wrappers.<ProductPart>lambdaQuery()
                .eq(ProductPart::getProductId, id));
        return productMapper.deleteById(id);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void importPartExcel(List<StructureTestObjectData> list) {
        list.forEach(i -> {
            // æ£€éªŒå¯¹è±¡
            StructureTestObject structureTestObject1 = structureTestObjectMapper.selectOne(Wrappers.<StructureTestObject>lambdaQuery()
                    .eq(StructureTestObject::getSpecimenName, i.getSpecimenName())
                    .eq(StructureTestObject::getSpecimenNameEn, i.getSpecimenNameEn()));
            Laboratory laboratory = laboratoryService.getOne(Wrappers.<Laboratory>lambdaQuery()
                    .eq(Laboratory::getLaboratoryName, i.getLaboratory()));
            if (ObjectUtils.isEmpty(laboratory)) {
                throw new BaseException("未找到该场所:" + i.getLaboratory() + ",请检查是否存在该场所!");
            }
            // å¦‚果为空进行新增
            if(ObjectUtils.isEmpty(structureTestObject1)) {
                StructureTestObject structureTestObject = new StructureTestObject();
                structureTestObject.setLaboratoryId(laboratory.getId());
                structureTestObject.setSpecimenName(i.getSpecimenName());
                structureTestObject.setSpecimenNameEn(i.getSpecimenNameEn());
                structureTestObject.setCode(i.getCode());
                structureTestObjectMapper.insert(structureTestObject);
                // äº§å“
                Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
                        .eq(Product::getName, i.getName())
                        .eq(Product::getNameEn, i.getNameEn()));
                if (ObjectUtils.isEmpty(product)){
                    Product product1 = new Product();
                    product1.setName(i.getName());
                    product1.setNameEn(i.getNameEn());
                    product1.setObjectId(structureTestObject.getId());
                    baseMapper.insert(product1);
                }
            } else {
                structureTestObject1.setCode(i.getCode());
                structureTestObject1.setLaboratoryId(laboratory.getId());
                structureTestObjectMapper.updateById(structureTestObject1);
                // äº§å“
                Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
                        .eq(Product::getName, i.getName())
                        .eq(Product::getNameEn, i.getNameEn()));
                if (ObjectUtils.isEmpty(product)){
                    Product product1 = new Product();
                    product1.setName(i.getName());
                    product1.setNameEn(i.getNameEn());
                    product1.setObjectId(structureTestObject1.getId());
                    baseMapper.insert(product1);
                } else {
                    product.setName(i.getName());
                    product.setNameEn(i.getNameEn());
                    product.setObjectId(structureTestObject1.getId());
                    baseMapper.updateById(product);
                }
            }
        });
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/ProductSupplierDensityServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
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.exception.base.BaseException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.mapper.ProductSupplierDensityMapper;
import com.ruoyi.inspect.pojo.ProductSupplierDensity;
import com.ruoyi.inspect.service.ProductSupplierDensityService;
import org.springframework.stereotype.Service;
/**
 * äº§å“åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-19
 */
@Service
public class ProductSupplierDensityServiceImpl extends ServiceImpl<ProductSupplierDensityMapper, ProductSupplierDensity> implements ProductSupplierDensityService {
    @Override
    public IPage<ProductSupplierDensity> selectByProductId(Page page, ProductSupplierDensity supplierDensity) {
        if (supplierDensity.getProductId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        return baseMapper.selectListByProductId(page, QueryWrappers.queryWrappers(supplierDensity), supplierDensity.getProductId());
    }
    @Override
    public void addProductSupplierDensity(ProductSupplierDensity supplierDensity) {
        if (supplierDensity.getProductId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        // æŸ¥è¯¢æ”¹åŽ‚å®¶æ˜¯å¦ç»‘å®šè¿‡
//        Long count = baseMapper.selectCount(Wrappers.<ProductSupplierDensity>lambdaQuery()
//                .eq(ProductSupplierDensity::getProductId, supplierDensity.getProductId())
//                .eq(ProductSupplierDensity::getModel, supplierDensity)
//                .eq(ProductSupplierDensity::getSupplierName, supplierDensity.getSupplierName()));
//        if (count > 0){
//            throw new BaseException("该产品已绑定过该厂家");
//        }
        baseMapper.insert(supplierDensity);
    }
    @Override
    public void updateProductSupplierDensity(ProductSupplierDensity supplierDensity) {
        if (supplierDensity.getProductId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        // æŸ¥è¯¢æ”¹åŽ‚å®¶æ˜¯å¦ç»‘å®šè¿‡
//        Long count = baseMapper.selectCount(Wrappers.<ProductSupplierDensity>lambdaQuery()
//                .ne(ProductSupplierDensity::getId, supplierDensity.getId())
//                .eq(ProductSupplierDensity::getProductId, supplierDensity.getProductId())
//                .eq(ProductSupplierDensity::getModel, supplierDensity)
//                .eq(ProductSupplierDensity::getSupplierName, supplierDensity.getSupplierName()));
//        if (count > 0){
//            throw new BaseException("该产品已绑定过该厂家");
//        }
        baseMapper.updateById(supplierDensity);
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/SealServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
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.mapper.SealMapper;
import com.ruoyi.inspect.pojo.Laboratory;
import com.ruoyi.inspect.pojo.Seal;
import com.ruoyi.inspect.service.SealService;
import com.ruoyi.common.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@AllArgsConstructor
public class SealServiceImpl extends ServiceImpl<SealMapper, Seal> implements SealService {
    private SealMapper sealMapper;
    @Override
    public int addSeal(Seal seal) {
        return sealMapper.insert(seal);
    }
    @Override
    public IPage<Seal> selectSeal(Page page, Seal seal) {
        return sealMapper.selectSeal(page, QueryWrappers.queryWrappers(seal));
    }
    @Override
    public List<Laboratory> Laboratory(Integer labId) {
        return sealMapper.selectLaboratory(labId);
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardMethodListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.inspect.mapper.StandardMethodListMapper;
import com.ruoyi.inspect.mapper.StandardProductListMapper;
import com.ruoyi.inspect.pojo.StandardMethodList;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.service.StandardMethodListService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_method_list(标准树下的标准列表)】的数据库操作Service实现
* @createDate 2024-03-04 13:44:04
*/
@Service
@AllArgsConstructor
public class StandardMethodListServiceImpl extends ServiceImpl<StandardMethodListMapper, StandardMethodList>
    implements StandardMethodListService{
    private StandardMethodListMapper standardMethodListMapper;
    private StandardProductListMapper standardProductListMapper;
    @Override
    public int addStandardMethodList(Integer standardId, String tree) {
        String[] trees = tree.split(" - ");
        Map<String, String> map = standardMethodListMapper.selectStandardMethodById(standardId);
        StandardMethodList list = new StandardMethodList();
        list.setCode(map.get("code"));
        list.setName(map.get("name"));
        list.setRemark(map.get("remark"));
        list.setFactory(trees[0]);
        try {
            list.setLaboratory(trees[1]);
        }catch (Exception e){}
        try {
            list.setSampleType(trees[2]);
        }catch (Exception e){}
        try {
            list.setSample(trees[3]);
        }catch (Exception e){}
        try {
            list.setModel(trees[4]);
        }catch (Exception e){}
        standardMethodListMapper.insert(list);
        List<StandardProductList> standardProductLists = standardMethodListMapper.selectParameterList(list.getCode());
        for (StandardProductList standardProductList : standardProductLists) {
            standardProductList.setStandardMethodListId(list.getId());
            standardProductList.setFactory(trees[0]);
            try {
                standardProductList.setLaboratory(trees[1]);
            }catch (Exception e){}
            try {
                standardProductList.setSampleType(trees[2]);
            }catch (Exception e){}
            try {
                standardProductList.setSample(trees[3]);
            }catch (Exception e){}
            try {
                standardProductList.setModel(trees[4]);
            }catch (Exception e){}
            standardProductListMapper.insert(standardProductList);
        }
        return 1;
    }
    @Override
    public Map<String, List<?>> selectsStandardMethodByFLSSM(String tree) {
        String[] trees = tree.split(" - ");
        Map<String, List<?>> map = new HashMap<>();
        String str = "";
        List<StandardMethodList> standardMethodLists = new ArrayList<>();
        switch (trees.length){
            case 5:
                str += "\"" + trees[2] + "\",\"" + trees[3] + "\",\"" + trees[4] + "\"";
                standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodLists(str));
                standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodLists("\"" + trees[2] + "\",\"" + trees[3] + "\""));
                standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodLists("\"" + trees[2] + "\""));
                break;
            case 4:
                str += "\"" + trees[2] + "\",\"" + trees[3] + "\"";
                standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodLists(str));
                standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodLists("\"" + trees[2] + "\""));
                break;
            case 3:
                str += "\"" + trees[2] + "\"";
                standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodLists3(str));
                break;
            default:
                map.put("standardMethodList", null);
                return map;
        }
        standardMethodLists.addAll(standardMethodListMapper.selectStandardMethodListsByNull(str));
        map.put("standardMethodList", standardMethodLists);
        return map;
    }
    @Override
    public Map<String, List<?>> selectsStandardMethodByFLSSM2(String tree) {
        String[] trees = tree.split(" - ");
        List<StandardMethodList> standardMethodLists = null;
        switch (trees.length){
            case 5:
                standardMethodLists = standardMethodListMapper.selectStandardMethodLists2(trees[0],trees[1],trees[2],trees[3],trees[4]);
                break;
            case 4:
                standardMethodLists = standardMethodListMapper.selectStandardMethodLists2(trees[0],trees[1],trees[2],trees[3],null);
                break;
            case 3:
                standardMethodLists = standardMethodListMapper.selectStandardMethodLists2(trees[0],trees[1],trees[2],null,null);
                break;
            case 2:
                standardMethodLists = standardMethodListMapper.selectStandardMethodLists2(trees[0],trees[1],null,null,null);
                break;
            case 1:
                standardMethodLists = standardMethodListMapper.selectStandardMethodLists2(trees[0],null,null,null,null);
                break;
        }
        Map<String, List<?>> map = new HashMap<>();
        map.put("standardMethodList", standardMethodLists);
        return map;
    }
    @Override
    public int delStandardMethodByFLSSM(Integer id) {
        standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate().eq(StandardProductList::getStandardMethodListId, id));
        return standardMethodListMapper.deleteById(id);
    }
    @Override
    public List<StandardMethodList> selectStandardMethodEnum() {
        return standardMethodListMapper.selectListEnum();
    }
    @Override
    public Integer getStandardMethodId(String code) {
        return baseMapper.getStandardMethodId(code);
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardMethodServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,260 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.mapper.StandardMethodMapper;
import com.ruoyi.inspect.mapper.StandardProductListMapper;
import com.ruoyi.inspect.mapper.StructureItemParameterMapper;
import com.ruoyi.inspect.pojo.StandardMethod;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.pojo.StructureItemParameter;
import com.ruoyi.inspect.service.StandardMethodService;
import com.ruoyi.inspect.service.StandardProductListService;
import com.ruoyi.inspect.service.StructureItemParameterService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.CompletableFuture;
/**
 * @author Administrator
 * @description é’ˆå¯¹è¡¨ã€standard_method(标准方法)】的数据库操作Service实现
 * @createDate 2024-03-03 19:21:41
 */
@Service
@AllArgsConstructor
public class StandardMethodServiceImpl extends ServiceImpl<StandardMethodMapper, StandardMethod>
        implements StandardMethodService {
    private StandardMethodMapper standardMethodMapper;
    StandardProductListMapper standardProductListMapper;
    StandardProductListService standardProductListService;
    StructureItemParameterMapper structureItemParameterMapper;
    StructureItemParameterService structureItemParameterService;
    @Override
    public IPage<StandardMethod> selectStandardMethodList(Page page, StandardMethod standardMethod) {
        return standardMethodMapper.selectStandardMethodList(page, QueryWrappers.queryWrappers(standardMethod));
    }
    @Override
    public List<StandardMethod> selectStandardMethods() {
        return standardMethodMapper.selectList(Wrappers.<StandardMethod>lambdaQuery().select(StandardMethod::getId, StandardMethod::getCode, StandardMethod::getName).ne(StandardMethod::getId, 0));
    }
    @Override
    public int addStandardMethod(StandardMethod standardMethod) {
        int insert = standardMethodMapper.insert(standardMethod);
        return insert;
    }
    @Override
    public int delStandardMethod(Integer id) {
        int i = standardMethodMapper.deleteById(id);
        return i;
    }
    @Override
    public int upStandardMethod(StandardMethod standardMethod) {
        StandardMethod oldStandardMethod = standardMethodMapper.selectById(standardMethod.getId());
        if (!oldStandardMethod.getCode().equals(standardMethod.getCode())) {
            CompletableFuture.supplyAsync(() -> replaceMethod(oldStandardMethod.getCode(), standardMethod.getCode()));
        }
        int i = standardMethodMapper.updateById(standardMethod);
        return i;
    }
    //编辑method后全部替换
    public String replaceMethod(String oldCode, String code) {
        //查询StandardProductList中所有Method如果包含之前的则替换
        List<StandardProductList> standardProductLists = standardProductListMapper.selectList(null);
        for (StandardProductList standardProductList : standardProductLists) {
            if (standardProductList.getMethod().contains(oldCode)) {
                String[] split = standardProductList.getMethod().split(",");
                String a = null;
                for (int i = 0; i < split.length; i++) {
                    String methodName = split[i].substring(1, split[i].length() - 1);
                    if (i == 0) {
                        methodName = split[i].substring(2, split[i].length() - 1);
                    } else if (i == split.length - 1) {
                        methodName = split[i].substring(1, split[i].length() - 2);
                    }
                    if (methodName.equals(oldCode)) {
                        methodName = code;
                    }
                    a += "\"" + methodName + "\",";
                }
                String method = "[\"" + a.substring(0, a.length() - 1) + "\"]";
                standardProductList.setMethod(method);
            }
        }
        standardProductListService.updateBatchById(standardProductLists);
        //查询StructureItemParameter中所有Method如果包含之前的则替换
        List<StructureItemParameter> structureItemParameters = structureItemParameterMapper.selectList(null);
        for (StructureItemParameter structureItemParameter : structureItemParameters) {
            if (structureItemParameter.getMethod().contains(oldCode)) {
                String[] split = structureItemParameter.getMethod().split(",");
                String a = null;
                for (int i = 0; i < split.length; i++) {
                    String methodName = split[i].substring(1, split[i].length() - 1);
                    if (i == 0) {
                        methodName = split[i].substring(2, split[i].length() - 1);
                    } else if (i == split.length - 1) {
                        methodName = split[i].substring(1, split[i].length() - 2);
                    }
                    if (methodName.equals(oldCode)) {
                        methodName = code;
                    }
                    a += "\"" + methodName + "\",";
                }
                String method = "[\"" + a.substring(0, a.length() - 1) + "\"]";
                structureItemParameter.setMethod(method);
            }
        }
        structureItemParameterService.updateBatchById(structureItemParameters);
        return "替换完毕!";
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void inputExcel(MultipartFile file) throws IOException {
        // å­˜å‚¨æ£€æµ‹å¯¹è±¡List
        List<Object> structureTestObjectIdList = new ArrayList<>();
        List<StandardMethod> result = new ArrayList<>();
        ExcelUtil.readBySax(file.getInputStream(), 0, (i, l, list) -> {
            // åŽ»é™¤ç¬¬ä¸€è¡Œè¡¨å¤´
            if (l == 0) {
                return;
            }
            // å­˜å‚¨å”¯ä¸€æ£€æµ‹å¯¹è±¡
            if (!structureTestObjectIdList.contains(list.get(2))) {
                structureTestObjectIdList.add(list.get(2));
            }
            StandardMethod standardMethod = formatData(list);
            result.add(standardMethod);
        });
        addStructureTest(structureTestObjectIdList, result);
    }
    // æ ¼å¼åŒ–数据
    public StandardMethod formatData(List<Object> list) {
        StandardMethod standardMethod = new StandardMethod();
        standardMethod.setField(list.get(1).toString());
        // é€ æ ¼å¼
        List<List<Object>> structureTestObjectId = new ArrayList<>();
        if (ObjectUtils.isEmpty(list.get(3))) {
            structureTestObjectId.add(Arrays.asList(list.get(2)));
        } else {
            structureTestObjectId.add(Arrays.asList(list.get(2), list.get(3)));
        }
        standardMethod.setStructureTestObjectId(JSONUtil.toJsonStr(structureTestObjectId));
        standardMethod.setCode(list.get(4).toString());
        standardMethod.setName(list.get(5).toString());
        standardMethod.setNameEn(list.get(6).toString());
        if (!Objects.equals(list.get(7), null)) {
            standardMethod.setRemark(list.get(7).toString());
        }
        standardMethod.setQualificationId(list.get(8).toString());
        if (ObjectUtils.isNotEmpty(list.get(9))) {
            if (list.get(9).equals("是")) {
                standardMethod.setIsProduct(1);
            } else if (list.get(9).equals("否")) {
                standardMethod.setIsProduct(0);
            }
        }
        if (ObjectUtils.isNotEmpty(list.get(10))) {
            if (list.get(10).equals("是")) {
                standardMethod.setIsUse(1);
            } else if (list.get(9).equals("否")) {
                standardMethod.setIsUse(0);
            }
        }
        return standardMethod;
    }
    // æ–°å¢žæ•°æ®
    public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) {
        List<StandardMethod> updateList = new ArrayList<>();
        List<Integer> deleteListId = new ArrayList<>();
        List<StandardMethod> addList = new ArrayList<>();
        if (!structureTestObjectIdList.isEmpty()) {
            // å¾ªçޝexcel里面的分组
            structureTestObjectIdList.forEach(j -> {
                // ä»¥excel中的组名查询数据库中的分组
                List<StandardMethod> standardMethods = baseMapper.selectList(Wrappers.<StandardMethod>lambdaQuery()
                        .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\""));
                // å°†ç»“果循环匹配
                for (int i = 0; i < standardMethods.size(); i++) {
                    boolean isExistence = false;
                    for (int i1 = 0; i1 < standardMethodList.size(); i1++) {
                        // æ›´æ–°
                        if (standardMethods.get(i).getStructureTestObjectId().equals(standardMethodList.get(i1).getStructureTestObjectId())
                                && standardMethods.get(i).getCode().equals(standardMethodList.get(i1).getCode())
                                && standardMethods.get(i).getField().equals(standardMethodList.get(i1).getField())) {
                            // ç»™excel数据赋值id做更新
                            standardMethodList.get(i1).setId(standardMethods.get(i).getId());
                            // æ›´æ–°
                            updateList.add(standardMethodList.get(i1));
                            isExistence = true;
                            break;
                        }
                    }
                    // åˆ é™¤
                    if (!isExistence) {
                        deleteListId.add(standardMethods.get(i).getId());
                    }
                }
                for (int i = 0; i < standardMethodList.size(); i++) {
                    if (standardMethodList.get(i).getStructureTestObjectId().contains("\"" + j + "\"")) {
                        boolean isExistence = false;
                        for (int i1 = 0; i1 < standardMethods.size(); i1++) {
                            if (standardMethods.get(i1).getStructureTestObjectId().equals(standardMethodList.get(i).getStructureTestObjectId())
                                    && standardMethods.get(i1).getCode().equals(standardMethodList.get(i).getCode())
                                    && standardMethods.get(i1).getField().equals(standardMethodList.get(i).getField())) {
                                isExistence = true;
                                break;
                            }
                        }
                        // æ–°å¢ž
                        if (!isExistence) {
                            addList.add(standardMethodList.get(i));
                        }
                    }
                }
            });
        }
        if (!addList.isEmpty()) {
            // æ–°å¢ž
            baseMapper.insertBatchSomeColumn(addList);
        }
        if (!deleteListId.isEmpty()) {
            // åˆ é™¤
            baseMapper.deleteBatchIds(deleteListId);
        }
        if (!updateList.isEmpty()) {
            // æ›´æ–°
            updateList.forEach(i -> {
                baseMapper.updateById(i);
            });
        }
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardProductListService2Impl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.inspect.mapper.StandardProductListMapper;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.service.StandardProductListService2;
import org.springframework.stereotype.Service;
@Service
public class StandardProductListService2Impl extends ServiceImpl<StandardProductListMapper, StandardProductList>
        implements StandardProductListService2 {
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardProductListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,701 @@
package com.ruoyi.inspect.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.inspect.dto.CopyStandardProductListDto;
import com.ruoyi.inspect.dto.InsSampleReceiveDto;
import com.ruoyi.inspect.dto.ProductDto;
import com.ruoyi.inspect.dto.ResetTreeDragDTO;
import com.ruoyi.inspect.mapper.IfsInventoryQuantityMapper;
import com.ruoyi.inspect.mapper.StandardProductListMapper;
import com.ruoyi.inspect.mapper.StandardProductListSupplierAskMapper;
import com.ruoyi.inspect.mapper.StandardTreeMapper;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.pojo.StandardProductListSupplierAsk;
import com.ruoyi.inspect.pojo.StandardTree;
import com.ruoyi.inspect.service.StandardProductListService;
import com.ruoyi.inspect.service.StandardProductListService2;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
 * @author Administrator
 * @description é’ˆå¯¹è¡¨ã€standard_product_list(标准树下的检验项目)】的数据库操作Service实现
 * @createDate 2024-03-05 10:33:29
 */
@Service
@AllArgsConstructor
public class StandardProductListServiceImpl extends ServiceImpl<StandardProductListMapper, StandardProductList>
        implements StandardProductListService {
    private StandardProductListMapper standardProductListMapper;
    private StandardTreeMapper standardTreeMapper;
    private StandardProductListService2 standardProductListService2;
    private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
    private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper;
    @Override
    public int upStandardProductList(StandardProductList list) {
        return standardProductListMapper.updateById(list);
    }
    @Override
    public int delStandardProduct(JSONArray list) {
        return standardProductListMapper.deleteBatchIds(list);
    }
    @Override
    public List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample) {
        // æ˜¯å¦æ²¡æœ‰äº§å“
        boolean isNoSample = false;
//        String[] models = insSample.getModel().split("-(?=[^-]*$)");//拆分最后一个【-】
        String model = insSample.getModel();
        String modelNum = insSample.getModelNum();
        List<StandardProductList> list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, model, insSample.getIsCableTag());
        if (list.size() == 0) {
            if (Objects.equals(insSample.getFactory(), "") || insSample.getFactory() == null) {
                return null;
            }
            String[] split = insSample.getFactory().split(" - ");
            split[3] = split[3].replace("- ", "");
            String tree = split[0] + " - " + split[1] + " - " + split[2] + " - " + split[3] + " - null";
            list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree, insSample.getIsCableTag());
            if (list.size() == 0) {
                String tree1 = split[0] + " - " + split[1] + " - " + split[2] + " - null - " + split[3];
                list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree1, insSample.getIsCableTag());
                // åªæœ‰å¯¹è±¡çš„一层
                if (list.size() == 0) {
                    String tree2 = split[0] + " - " + split[1] + " - " + split[2] + " - null - null";
                    list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree2, insSample.getIsCableTag());
                    // æ ·å“ç›´æŽ¥èµ‹å€¼æ ·å“åˆ†ç±»
                    list.forEach(standardProductList -> standardProductList.setSample(standardProductList.getSampleType()));
                    isNoSample = true;
                }
            }
        }
        String[] split1 = insSample.getFactory().split(" - ");
        if (!isNoSample) {
            //判断长度
            if (split1.length > 4) {
                if (ObjectUtils.isNotEmpty(split1[3])) {
                    list = list.stream().filter(list1 -> Objects.nonNull(list1.getSample()) && Objects.equals(list1.getSample(), split1[3])).collect(Collectors.toList());
                } else if (split1[3].equals("")) {
                    list = list.stream().filter(list1 -> Objects.nonNull(list1.getSampleType()) && Objects.equals(list1.getSampleType(), split1[2])).collect(Collectors.toList());
                }
            }
        }
        list = list.stream().filter(a -> {
                    try {
                        if (a.getSection() != null && !Objects.equals(a.getSection(), "")) {
                            List<String> sections = JSON.parseArray(a.getSection(), String.class);// åŒºé—´
                            List<String> cores = JSON.parseArray(a.getCores(), String.class); // èŠ¯æ•°
                            List<String> conductorMaterials = JSON.parseArray(a.getConductorMaterial(), String.class); // å¯¼ä½“材质
                            List<String> conductorTypes = JSON.parseArray(a.getConductorType(), String.class); // å¯¼ä½“类型
                            List<String> asks = JSON.parseArray(a.getAsk(), String.class);
                            List<String> tells = JSON.parseArray(a.getTell(), String.class);
                            boolean isIf;
                            for (int i = 0; i < sections.size(); i++) {
                                if (Objects.equals(a.getBsm(), "1")) {
                                    return true;
                                } else {
                                    if (sections.get(i).contains("&")) {
                                        String[] split = sections.get(i).split("&");
                                        isIf = getIsIf(split[0], modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample)
                                                && getIsIf(split[1], modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample);
                                    } else {
                                        isIf = getIsIf(sections.get(i), modelNum, cores.get(i), conductorMaterials.get(i), conductorTypes.get(i), insSample);
                                    }
                                    if (isIf) {
                                        a.setSection(sections.get(i));
                                        a.setAsk(asks.get(i));
                                        a.setTell(tells.get(i));
                                        return true;
                                    }
                                }
                            }
                            return false;
                        }
                    } catch (Exception ignored) {
                        return false;
                    }
                    return true;
                }).peek(standardProductList -> {
                    // todo: åˆ¤æ–­æ˜¯å¦æ˜¯åŽŸæä¸‹å•, éœ€è¦å•ŠæŠŠé¢œè‰²ç»‘å®šåˆ°è¯•æ ·é¢œè‰²çš„è¦æ±‚å€¼ä¸Š
                    if (StringUtils.isNotBlank(insSample.getPartNo())) {
                        // åˆ¤æ–­æ˜¯å¦æœ‰è¿™ä¸ªå­—段且是文本类型
                        if (StringUtils.isNotBlank(standardProductList.getInspectionItem())
                                && standardProductList.getInspectionItem().contains("试样颜色")) {
                            Map<String, String> partColor = baseMapper.selectPartColor(insSample.getPartNo());
                            if (CollectionUtils.isNotEmpty(partColor)) {
                                if (StringUtils.isNotBlank(partColor.get("color"))) {
                                    // åˆ¤æ–­æ£€éªŒå€¼æ˜¯å¦ä¸ºç©ºå’Œä¸ç­‰äºŽ -  å’Œ /
                                    if (StringUtils.isBlank(standardProductList.getAsk()) || partColor.get("color").contains("本")) { // æ²¡æœ‰ask直接复制
                                        // æŸ¥è¯¢å¯¹è±¡ç»‘定表和产品绑定表
                                        standardProductList.setAsk("=" + partColor.get("color")
                                                + (StringUtils.isBlank(partColor.get("color_code")) ? "" : "(" + partColor.get("color_code") + ")"));
                                        standardProductList.setTell(partColor.get("color")
                                                + (StringUtils.isBlank(partColor.get("color_code")) ? "" : "(" + partColor.get("color_code") + ")"));
                                        standardProductList.setInspectionValueType("2");
                                    } else { // æ‹¼æŽ¥åˆ°è¦æ±‚描述前面
                                        standardProductList.setTell(partColor.get("color")
                                                + (StringUtils.isBlank(partColor.get("color_code")) ? "" : "(" + partColor.get("color_code") + ")") + "@" + standardProductList.getTell());
                                    }
                                }
                            }
                        }
                    }
                })
                .collect(Collectors.toList());
        // æŸ¥è¯¢åŽ‚å®¶æ˜¯å¦æœ‰ç‰¹æ®Šè¦æ±‚å€¼
        if (insSample.getIfsInventoryId() != null) {
            // æŸ¥è¯¢åŽŸææ–™åŽ‚å®¶åç§°
            String supplierName = ifsInventoryQuantityMapper.selectById(insSample.getIfsInventoryId())
                    .getSupplierName();
            List<Long> collect = list.stream().map(StandardProductList::getId).collect(Collectors.toList());
            if (CollectionUtils.isNotEmpty(collect)) {
                List<StandardProductListSupplierAsk> supplierAsks = standardProductListSupplierAskMapper.selectList(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                        .in(StandardProductListSupplierAsk::getProductListId, collect)
                        .eq(StandardProductListSupplierAsk::getSupplierName, supplierName));
                // åˆ¤æ–­æœ‰æ²¡æœ‰ç‰¹æ®Šå€¼ç»‘定
                if (CollectionUtils.isNotEmpty(supplierAsks)) {
                    for (StandardProductList standardProductList : list) {
                        for (StandardProductListSupplierAsk supplierAsk : supplierAsks) {
                            if (standardProductList.getId().equals(supplierAsk.getProductListId())) {
                                // é‡æ–°èµ‹å€¼è¦æ±‚值和要求描述
                                standardProductList.setAsk(supplierAsk.getAsk());
                                standardProductList.setTell(supplierAsk.getTell());
                            }
                        }
                    }
                }
            }
        }
        return list;
    }
    /**
     *
     * @param str                 åˆ¤å®šå…¬å¼
     * @param model               åž‹å·
     * @param standardCores       èŠ¯æ•°
     * @param conductorMaterial   å¯¼ä½“材质
     * @param conductorType       å¯¼ä½“类型
     * @param insSample
     * @return
     */
    private boolean getIsIf(String str, String model, String standardCores, String conductorMaterial, String conductorType,InsSampleReceiveDto insSample) {
        Matcher matcher = Pattern.compile("\\d+(\\.\\d+)?").matcher(model);
        String model2 = "";
        while (matcher.find()) {
            model2 += matcher.group();
            break;
        }
        boolean flag = false;
        if (str.contains("≥") || str.contains(">=")) {
            String param = str.replace("≥", "").replace(">=", "");
            flag = new BigDecimal(model2).compareTo(new BigDecimal(param)) > -1;
        } else if (str.contains("≤") || str.contains("<=")) {
            String param = str.replace("≤", "").replace("<=", "");
            flag = new BigDecimal(model2).compareTo(new BigDecimal(param)) < 1;
        } else if (str.contains(">") || str.contains(">")) {
            String param = str.replace(">", "").replace(">", "");
            flag = new BigDecimal(model2).compareTo(new BigDecimal(param)) > 0;
        } else if (str.contains("<") || str.contains("<")) {
            String param = str.replace("<", "").replace("<", "");
            flag = new BigDecimal(model2).compareTo(new BigDecimal(param)) < 0;
        } else if (str.contains("=")) {
            String param = str.replace("=", "");
            flag = new BigDecimal(model2).compareTo(new BigDecimal(param)) == 0;
        }
        if (flag) {
            boolean coresMatch = true;
            boolean conductorMaterialMatch = true;
            boolean conductorTypeMatch = true;
            // åˆ¤æ–­æ˜¯å¦æœ‰çº¿èŠ¯æ•°é‡
            if (StringUtils.isNotBlank(standardCores)) {
                if (StringUtils.isBlank(insSample.getCores()) || !standardCores.equals(insSample.getCores())) {
                    coresMatch = false;
                }
            }
            // åˆ¤æ–­æ˜¯å¦æœ‰å¯¼ä½“材质
            if (StringUtils.isNotBlank(conductorMaterial)) {
                if (StringUtils.isBlank(insSample.getConductorMaterial()) || !conductorMaterial.equals(insSample.getConductorMaterial())) {
                    conductorMaterialMatch = false;
                }
            }
            // åˆ¤æ–­æ˜¯å¦æœ‰å¯¼ä½“类型
            if (StringUtils.isNotBlank(conductorType)) {
                if (StringUtils.isBlank(insSample.getConductorType()) || !conductorType.equals(insSample.getConductorType())) {
                    conductorTypeMatch = false;
                }
            }
            // æœ€ç»ˆåˆ¤æ–­
            flag = coresMatch && conductorMaterialMatch && conductorTypeMatch;
        }
        return flag;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree, Integer page) {
        String[] trees = tree.split(" - ");
        try {
            String tree1 = trees[2];
        } catch (Exception e) {
            throw new BaseException("操作太快,系统传参错误!!!!");
        }
        boolean isDrag = false;
        List<StandardProductList> list = new ArrayList<>();
        if (trees.length == 3) {
            List<StandardTree> treeList = new ArrayList<>();
            StandardTree standardTree = new StandardTree();
            standardTree.setFactory(trees[0]);
            standardTree.setLaboratory(trees[1]);
            standardTree.setSampleType(trees[2]);
            List<ProductDto> pList = standardTreeMapper.selectPList(trees[2]);
            if (pList.size() == 0 || pList.get(0) == null) {
                List<StandardTree> treeList1 = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]));
                if (treeList1.size() == 0) {
                    treeList.add(standardTree);
                } else {
                    treeList.addAll(treeList1);
                }
            } else {
                for (ProductDto p : pList) {
                    standardTree.setSample(p.getName());
                    List<StandardTree> treeList1 = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, p.getName()));
                    if (treeList1.size() == 0) {
                        treeList.add(JSON.parseObject(JSON.toJSONString(standardTree), StandardTree.class));
                    } else {
                        treeList.addAll(treeList1);
                    }
                }
            }
            for (StandardTree standardTree2 : treeList) {
                String tree2 = trees[0] + " - " + trees[1] + " - " + trees[2] + " - " + standardTree2.getSample() + " - " + standardTree2.getModel();
                list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", standardTree2.getSample(), standardTree2.getModel(), tree2, trees[1]));
                list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + standardTree2.getSample() + "\"", standardTree2.getSample(), standardTree2.getModel(), tree2, trees[1]));
            }
        } else if (trees.length == 4) {
            // åˆ¤æ–­ç¬¬å››å±‚是否有型号
            Long count = standardProductListMapper.selectCount(Wrappers.<StandardProductList>lambdaQuery()
                    .eq(StandardProductList::getStandardMethodListId, id)
                    .isNull(StandardProductList::getModel)
                    .like(StandardProductList::getTree, tree));
            if (count == 0) {
                isDrag = true;
            }
            isDrag = true;
            List<StandardTree> treeList = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]));
            if (treeList.size() == 0) {
                StandardTree standardTree = new StandardTree();
                standardTree.setFactory(trees[0]);
                standardTree.setLaboratory(trees[1]);
                standardTree.setSampleType(trees[2]);
                standardTree.setSample(trees[3]);
                treeList.add(standardTree);
            }
            for (StandardTree standardTree : treeList) {
                String str = tree + " - " + standardTree.getModel();
                list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", standardTree.getSample(), standardTree.getModel(), str, trees[1]));
                list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + trees[3] + "\"", standardTree.getSample(), standardTree.getModel(), str, trees[1]));
            }
        } else {
            isDrag = true;
            list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", trees[3].equals("null") ? null : trees[3], trees[4], tree, trees[1]));
            list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + trees[3] + "\"", trees[3].equals("null") ? null : trees[3], trees[4], tree, trees[1]));
        }
        for (StandardProductList productList : list) {
            productList.setId(IdWorker.getId());
        }
        List<StandardProductList> standardProductLists;
        if (isDrag) {
            standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                    .eq(StandardProductList::getStandardMethodListId, id)
                    .like(StandardProductList::getTree, tree)
                    .orderByAsc(StandardProductList::getSort));
            // åˆ¤æ–­æ˜¯å¦æœ‰æ²¡æœ‰åºå·çš„, æ²¡æœ‰åºå·é‡ç½®
            boolean b = standardProductLists.stream().anyMatch(standardProductList -> standardProductList.getSort() == null);
        } else {
            standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                    .eq(StandardProductList::getStandardMethodListId, id)
                    .like(StandardProductList::getTree, tree));
        }
        for (StandardProductList sp : standardProductLists) {
            for (StandardProductList pl : list) {
                // åˆ¤æ–­æ¡ä»¶æ˜¯å¦åªæœ‰ä¸€ä¸ª, æœ‰ä¸€ä¸ªçš„话默认第一个
                String radiusList = pl.getRadiusList();
                if (StringUtils.isNotBlank(radiusList) && !radiusList.equals("null") && !radiusList.equals("\"\"")) {
                    JSONArray jsonArray = JSON.parseArray(radiusList);
                    List<String> radius = jsonArray.toJavaList(String.class);
                    if (CollectionUtils.isNotEmpty(radius) && radius.size() == 1) {
                        pl.setRadius(radius.get(0));
                    }
                }
                if (Objects.equals(sp.getInspectionItem(), pl.getInspectionItem())
                        && Objects.equals((sp.getInspectionItemSubclass() == null) ? "" : sp.getInspectionItemSubclass(), pl.getInspectionItemSubclass() == null ? "" : pl.getInspectionItemSubclass())
//                        && Objects.equals(sp.getSample(), pl.getSample())
                        && Objects.equals(sp.getModel(), pl.getModel())
                        && sp.getTree().indexOf(pl.getSample() == null ? "null" : pl.getSample()) > -1
                        && Objects.equals(sp.getStructureItemParameterId(), pl.getStructureItemParameterId())) {
                    pl.setId(sp.getId());
                    // æ·»åŠ æŽ’åºå­—æ®µ
                    pl.setSort(sp.getSort());
                    if (sp.getState() != null && !sp.getState().equals("")) {
                        pl.setState(sp.getState());
                    } else {
                        pl.setState(id == 0 ? 1 : 0);
                    }
                    if (sp.getMethodS() != null && !sp.getMethodS().equals("")) {
                        pl.setMethod(sp.getMethodS());
                    }
                    if (sp.getRadius() != null && !sp.getRadius().equals("")) {
                        pl.setRadius(sp.getRadius());
                    }
                    if (sp.getRates() != null && !sp.getRates().equals("")) {
                        pl.setRates(sp.getRates());
                    }
                    if (sp.getAsk() != null && !sp.getAsk().equals("")) {
                        pl.setAsk(sp.getAsk());
                    }
                    if (sp.getTell() != null && !sp.getTell().equals("")) {
                        pl.setTell(sp.getTell());
                    }
                    if (sp.getPrice() != null && !sp.getPrice().equals("")) {
                        pl.setPrice(sp.getPrice());
                    }
                    if (sp.getManHour() != null && !sp.getManHour().equals("")) {
                        pl.setManHour(sp.getManHour());
                    }
                    if (sp.getSection() != null && !sp.getSection().equals("")) {
                        pl.setSection(sp.getSection());
                    }
                    if (sp.getCores() != null && !sp.getCores().equals("")) {
                        pl.setCores(sp.getCores());
                    }
                    if (sp.getConductorMaterial() != null && !sp.getConductorMaterial().equals("")) {
                        pl.setConductorMaterial(sp.getConductorMaterial());
                    }
                    if (sp.getConductorType() != null && !sp.getConductorType().equals("")) {
                        pl.setConductorType(sp.getConductorType());
                    }
                    if (sp.getTemplateId() != null && !sp.getTemplateId().equals("")) {
                        pl.setTemplateId(sp.getTemplateId());
                    }
                    //因为还有个产品叫耐张线夹 æŽ¥ç»­é‡‘å…· ,这两个项目的数据完全一样,特殊处理
                    if (sp.getTree() != null && !sp.getTree().equals("") && !pl.getTree().equals("中天科技检测中心 - ç”µåŠ›äº§å“å®žéªŒå®¤ - é‡‘å…· - è€å¼ çº¿å¤¹ - null")) {
                        pl.setTree(sp.getTree());
                    }
                    break;
                }
            }
        }
        if (page == 1) {
            Integer userId = SecurityUtils.getUserId().intValue();
//            CompletableFuture.supplyAsync(() -> {
            if (trees.length == 5) {
                standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
                        .eq(StandardProductList::getStandardMethodListId, id)
                        .eq(StandardProductList::getTree, tree));
            } else {
                standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
                        .eq(StandardProductList::getStandardMethodListId, id)
                        .like(StandardProductList::getTree, tree));
            }
            boolean success = false;
            int retryCount = 0;
            while (!success && retryCount < 100) {
                try {
                    standardProductListService2.saveBatch(list.stream().map(a -> {
                        a.setFactory(trees[0]);
                        a.setLaboratory(trees[1]);
                        a.setSampleType(trees[2]);
                        a.setCreateUser(userId);
                        a.setUpdateUser(userId);
                        a.setStandardMethodListId(id);
                        return a;
                    }).collect(Collectors.toList()));
                    ;
                    success = true;
                } catch (Exception e) {
                    // å¤„理重复 ID çš„记录,重新生成 ID å¹¶ç»§ç»­å°è¯•插入
                    for (StandardProductList productList : list) {
                        productList.setId(IdWorker.getId());
                    }
                }
            }
            if (!success) {
                throw new RuntimeException("插入失败");
            }
        }
        Map<String, Object> map = new HashMap<>();
        Collections.sort(list, (o1, o2) -> {
            String field1 = o1.getManHourGroup();
            String field2 = o2.getManHourGroup();
            boolean isEmpty1 = field1 == null || field1.isEmpty();
            boolean isEmpty2 = field2 == null || field2.isEmpty();
            if (isEmpty1 && isEmpty2) {
                return 0;
            } else if (isEmpty1) {
                return 1;
            } else if (isEmpty2) {
                return -1;
            } else {
                int num1 = extractNumber(field1);
                int num2 = extractNumber(field2);
                return Integer.compare(num1, num2);
            }
        });
          // æŒ‰ç…§ç´¢å¼•排序
        if (isDrag) {
            list.sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort())
                    - (o2.getSort() == null ? 0 : o2.getSort()));
        }
        try {
            map.put("productList", list.subList((page - 1) * 300, page * 300));
        } catch (IndexOutOfBoundsException e) {
            map.put("productList", list.subList((page - 1) * 300, list.size()));
        }
        map.put("total", list.size());
        return map;
    }
    private int extractNumber(String s) {
        // ä»Žå­—符串中提取数字的逻辑,这里假设字段的格式是 "text<number>"
        String number = s;
        if (!s.matches("\\d+")) {
            number = s.replaceAll("\\D", "");
        }
        return Integer.parseInt(number);
    }
    @Override
    public IPage<StandardProductList> selectStandardProductByMethodId(Integer id, String tree, Integer page, String laboratory, String item, String items) {
        IPage<StandardProductList> iPage = new Page<>();
        iPage.setSize(100);
        iPage.setCurrent(page);
        return standardProductListMapper.standardProductListIPage(id, tree, iPage, laboratory, item, items);
    }
    @Override
    public Map<String, List<?>> selectStandardProductEnumByMethodId(Integer id, String tree, String item) {
        HashMap<String, List<?>> map = new HashMap<>();
        map.put("item", standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                .eq(StandardProductList::getStandardMethodListId, id)
                .like(StandardProductList::getTree, tree)
                .select(StandardProductList::getInspectionItem)
                .groupBy(StandardProductList::getInspectionItem)));
        if (ObjectUtils.isNotEmpty(item)) {
            map.put("items", standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                    .eq(StandardProductList::getStandardMethodListId, id)
                    .eq(StandardProductList::getInspectionItem, item)
                    .like(StandardProductList::getTree, tree)
                    .select(StandardProductList::getInspectionItemSubclass)
                    .groupBy(StandardProductList::getInspectionItemSubclass)));
        } else {
            map.put("items", standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
                    .eq(StandardProductList::getStandardMethodListId, id)
                    .like(StandardProductList::getTree, tree)
                    .select(StandardProductList::getInspectionItemSubclass)
                    .groupBy(StandardProductList::getInspectionItemSubclass)));
        }
        return map;
    }
    /**
     * ä¿®æ”¹æ ‡å‡†åº“区间
     * @param list
     * @return
     */
    @Override
    public boolean updateSection(StandardProductList list) {
        standardProductListMapper.updateSection(list);
        return true;
    }
    /**
     * æ ‡å‡†åº“拖拽
     * @param resetTreeDragDTO
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void resetTreeDrag(ResetTreeDragDTO resetTreeDragDTO) {
        Integer beginIndex = Integer.parseInt(resetTreeDragDTO.getBeginIndex());
        Integer endIndex = Integer.parseInt(resetTreeDragDTO.getEndIndex());
        Integer methodId = Integer.parseInt(resetTreeDragDTO.getMethodId());
        Long productionId = Long.parseLong(resetTreeDragDTO.getProductionId());
        // åˆ¤æ–­æ˜¯ä»Žä¸Šå¾€ä¸‹æ‹–拽还是从下往上放拖拽
        // ä»Žä¸Šå¾€ä¸‹
        if (beginIndex < endIndex) {
            standardProductListMapper.updateSortUp(beginIndex,
                    endIndex,
                    methodId,
                    resetTreeDragDTO.getTree());
            // ä»Žä¸‹å¾€ä¸Š
        } else if (beginIndex > endIndex){
            standardProductListMapper.updateSortDown(beginIndex,
                    endIndex,
                    methodId,
                    resetTreeDragDTO.getTree());
        } else {
            return;
        }
        // ä¿®æ”¹æ ‡å‡†åº“项顺序
        standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate()
                .eq(StandardProductList::getId, productionId)
                .set(StandardProductList::getSort, endIndex));
    }
    @Override
    public void resetTreeDragBatch(List<StandardProductList> standardProductLists) {
        standardProductListService2.updateBatchById(standardProductLists);
    }
    /**
     * æ£€éªŒé¡¹è¦æ±‚值对比
     * @param copyDto
     * @return
     */
    @Override
    public List<StandardProductList> copyStandardProductList(CopyStandardProductListDto copyDto) {
        List<StandardProductList> productLists = new ArrayList<>();
        // å¯¹æ¯”检验项一样的填充要求值要求描述
        for (StandardProductList oldProductList : copyDto.getOldStandardProductList()) {
            String oldItemName = oldProductList.getInspectionItemClassEn()
                    + oldProductList.getInspectionItem()
                    + oldProductList.getInspectionItemSubclass();
            for (StandardProductList newProductList : copyDto.getNewStandardProductList()) {
                String newItemName = newProductList.getInspectionItemClassEn()
                        + newProductList.getInspectionItem()
                        + newProductList.getInspectionItemSubclass();
                // åˆ¤æ–­åç§°æ˜¯å¦ä¸€æ ·
                if (oldItemName.equals(newItemName)) {
                    // åŒºé—´
                    oldProductList.setSection(newProductList.getSection());
                    // èŠ¯æ•°
                    oldProductList.setCores(newProductList.getCores());
                    // è¦æ±‚值
                    oldProductList.setAsk(newProductList.getAsk());
                    // è¦æ±‚描述
                    oldProductList.setTell(newProductList.getTell());
                    // å•ä»·
                    oldProductList.setPrice(newProductList.getPrice());
                    // å·¥æ—¶åˆ†ç»„
                    oldProductList.setManHour(newProductList.getManHour());
                    // å¯¼ä½“材质
                    oldProductList.setConductorMaterial(newProductList.getConductorMaterial());
                    // å¯¼ä½“类型
                    oldProductList.setConductorType(newProductList.getConductorType());
                    productLists.add(oldProductList);
                }
            }
        }
        return productLists;
    }
    /**
     * æ£€éªŒé¡¹å¤åˆ¶å¯¹æ¯”一个
     * @param dto
     * @return
     */
    @Override
    public List<StandardProductList> copyStandardProductOne(CopyStandardProductListDto dto) {
        if (CollectionUtils.isEmpty(dto.getNewStandardProductList()) && dto.getNewStandardProductList().size() == 1 &&
                CollectionUtils.isEmpty(dto.getOldStandardProductList()) && dto.getOldStandardProductList().size() == 1) {
            throw new BaseException("需要对比的检验项请选择一个");
        }
        StandardProductList newProductList = dto.getNewStandardProductList().get(0);
        StandardProductList oldProductList = dto.getOldStandardProductList().get(0);
        // åŒºé—´
        oldProductList.setSection(newProductList.getSection());
        // èŠ¯æ•°
        oldProductList.setCores(newProductList.getCores());
        // è¦æ±‚值
        oldProductList.setAsk(newProductList.getAsk());
        // è¦æ±‚描述
        oldProductList.setTell(newProductList.getTell());
        // å•ä»·
        oldProductList.setPrice(newProductList.getPrice());
        // å·¥æ—¶åˆ†ç»„
        oldProductList.setManHour(newProductList.getManHour());
        // å¯¼ä½“材质
        oldProductList.setConductorMaterial(newProductList.getConductorMaterial());
        // å¯¼ä½“类型
        oldProductList.setConductorType(newProductList.getConductorType());
        List<StandardProductList> productLists = new ArrayList<>();
        productLists.add(oldProductList);
        return productLists;
    }
    /**
     * æ£€éªŒé¡¹å¤åˆ¶æŽ’序
     * @param copyDto
     * @return
     */
    @Override
    public boolean copyStandardProductSort(CopyStandardProductListDto copyDto) {
        List<StandardProductList> productLists = new ArrayList<>();
        // å¯¹æ¯”检验项一样的填充要求值要求描述
        for (StandardProductList oldProductList : copyDto.getOldStandardProductList()) {
            String oldItemName = oldProductList.getInspectionItemClassEn()
                    + oldProductList.getInspectionItem()
                    + oldProductList.getInspectionItemSubclass();
            for (StandardProductList newProductList : copyDto.getNewStandardProductList()) {
                String newItemName = newProductList.getInspectionItemClassEn()
                        + newProductList.getInspectionItem()
                        + newProductList.getInspectionItemSubclass();
                // åˆ¤æ–­åç§°æ˜¯å¦ä¸€æ ·
                if (oldItemName.equals(newItemName)) {
                    StandardProductList standardProductList = new StandardProductList();
                    standardProductList.setId(oldProductList.getId());
                    // å¤åˆ¶æŽ’序
                    standardProductList.setSort(newProductList.getSort());
                    productLists.add(standardProductList);
                }
            }
        }
        this.updateBatchById(productLists);
        return false;
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardProductListSupplierAskServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.inspect.mapper.StandardProductListSupplierAskMapper;
import com.ruoyi.inspect.pojo.StandardProductListSupplierAsk;
import com.ruoyi.inspect.service.StandardProductListSupplierAskService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * æ£€éªŒé¡¹ç›®åŽ‚å®¶å¯†åº¦ç»‘å®šè¡¨
 *
 * @author zhuo
 * @since 2024-09-23
 */
@Service
public class StandardProductListSupplierAskServiceImpl extends ServiceImpl<StandardProductListSupplierAskMapper, StandardProductListSupplierAsk> implements StandardProductListSupplierAskService {
    /**
     * æŸ¥è¯¢åŽ‚å®¶è¦æ±‚å€¼ç»‘å®š
     * @param supplierAsk
     * @return
     */
    @Override
    public List<StandardProductListSupplierAsk> selectByProductId(StandardProductListSupplierAsk supplierAsk) {
        if (supplierAsk.getProductListId() == null) {
            throw new BaseException("缺少检验项id");
        }
        return baseMapper.selectList(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId()));
    }
    /**
     * æ–°å¢žåŽ‚å®¶è¦æ±‚å€¼ç»‘å®š
     * @param supplierAsk
     * @return
     */
    @Override
    public Integer addProductSupplierAsk(StandardProductListSupplierAsk supplierAsk) {
        if (supplierAsk.getProductListId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        // æŸ¥è¯¢æ”¹åŽ‚å®¶æ˜¯å¦ç»‘å®šè¿‡
        Long count = baseMapper.selectCount(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId())
                .eq(StandardProductListSupplierAsk::getSupplierName, supplierAsk.getSupplierName()));
        if (count > 0){
            throw new BaseException("该产品已绑定过该厂家");
        }
        baseMapper.insert(supplierAsk);
        return supplierAsk.getSupplierAskId();
    }
    /**
     * ä¿®æ”¹åŽ‚å®¶è¦æ±‚å€¼ç»‘å®š
     * @param supplierAsk
     * @return
     */
    @Override
    public Integer updateProductSupplierAsk(StandardProductListSupplierAsk supplierAsk) {
        if (supplierAsk.getProductListId() == null) {
            throw new BaseException("缺少检验项id");
        }
        // æŸ¥è¯¢æ”¹åŽ‚å®¶æ˜¯å¦ç»‘å®šè¿‡
        Long count = baseMapper.selectCount(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                .ne(StandardProductListSupplierAsk::getSupplierAskId, supplierAsk.getSupplierAskId())
                .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId())
                .eq(StandardProductListSupplierAsk::getSupplierName, supplierAsk.getSupplierName()));
        if (count > 0){
            throw new BaseException("该检验项已绑定过该厂家");
        }
        baseMapper.updateById(supplierAsk);
        return supplierAsk.getSupplierAskId();
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardTemplateServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.mapper.StandardTemplateMapper;
import com.ruoyi.inspect.pojo.StandardTemplate;
import com.ruoyi.inspect.service.StandardTemplateService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @author Administrator
* @description é’ˆå¯¹è¡¨ã€standard_template(标准模板)】的数据库操作Service实现
* @createDate 2024-03-11 13:47:52
*/
@Service
@AllArgsConstructor
public class StandardTemplateServiceImpl extends ServiceImpl<StandardTemplateMapper, StandardTemplate>
    implements StandardTemplateService{
    private StandardTemplateMapper standardTemplateMapper;
    private final NumberGenerator<StandardTemplate> numberGenerator;
    @Override
    public IPage<StandardTemplate> selectStandardTemplatePageList(Page page, StandardTemplate standardTemplate) {
        return standardTemplateMapper.selectStandardTemplatePageList(page, QueryWrappers.queryWrappers(standardTemplate));
    }
    @Override
    public int addStandardTemplate(StandardTemplate standardTemplate) {
        if (StringUtils.isBlank(standardTemplate.getNumber())) {
            String giveCode = numberGenerator.generateNumberWithPrefix(5,
                    "MB" + DateUtil.format(new Date(), "yyMM"),
                    StandardTemplate::getNumber);
            standardTemplate.setNumber(giveCode);
        }
        return standardTemplateMapper.insert(standardTemplate);
    }
    @Override
    public int upStandardTemplate(StandardTemplate standardTemplate) {
        if(standardTemplate.getThing().equals("")){
            standardTemplate.setThing(null);
        }
        return standardTemplateMapper.updateById(standardTemplate);
    }
    @Override
    public int delStandardTemplate(Integer id) {
        return standardTemplateMapper.deleteById(id);
    }
    @Override
    public List<StandardTemplate> getStandardTemplate() {
        return standardTemplateMapper.selectList(Wrappers.<StandardTemplate>lambdaQuery().select(StandardTemplate::getId,StandardTemplate::getName));
    }
    @Override
    public String getStandTempThingById(Integer templateId) {
        StandardTemplate standardTemplate = standardTemplateMapper.selectOne(Wrappers.<StandardTemplate>lambdaQuery()
                .eq(StandardTemplate::getId, templateId)
                .select(StandardTemplate::getThing));
        if(standardTemplate==null){
            return null;
        }else{
            return standardTemplate.getThing();
        }
        // æŸ¥è¯¢åŽ‹ç¼©åŽçš„æ•°æ®
//        String thing = standardTemplateMapper.selectCompressThing(templateId);
//        if (StringUtils.isNotBlank(thing)) {
//            try {
//                return DecompressMySQLData.decompress(java.util.Base64.getDecoder().decode(thing));
//            } catch (Exception e) {
//                throw new RuntimeException(e);
//            }
//        } else {
//            return null;
//        }
    }
    @Override
    public String getStandTempNameById(Integer templateId) {
        StandardTemplate standardTemplate = standardTemplateMapper.selectOne(Wrappers.<StandardTemplate>lambdaQuery()
                .eq(StandardTemplate::getId, templateId)
                .select(StandardTemplate::getName));
        if(standardTemplate==null){
            return null;
        }else{
            return standardTemplate.getName();
        }
    }
    @Override
    public StandardTemplate getStandTempIdByName(String name) {
        return standardTemplateMapper.getStandTempIdByName(name);
    }
    /**
     * å¤åˆ¶åŽŸå§‹è®°å½•æ¨¡æ¿
     * @param newTemplate
     * @return
     */
    @Override
    public int copyStandardTemplate(StandardTemplate newTemplate) {
        // æŸ¥è¯¢æ—§æ¨¡æ¿
        StandardTemplate standardTemplate = baseMapper.selectById(newTemplate.getId());
        newTemplate.setThing(standardTemplate.getThing());
        if (StringUtils.isBlank(newTemplate.getNumber())) {
            String giveCode = numberGenerator.generateNumberWithPrefix(5,
                    "MB" + DateUtil.format(new Date(), "yyMM"),
                    StandardTemplate::getNumber);
            newTemplate.setNumber(giveCode);
        }
        newTemplate.setId(null);
        return standardTemplateMapper.insert(newTemplate);
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StandardTreeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,535 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.inspect.dto.FactoryDto;
import com.ruoyi.inspect.dto.LaboratoryDto;
import com.ruoyi.inspect.dto.SampleTypeDto;
import com.ruoyi.inspect.mapper.StandardProductListMapper;
import com.ruoyi.inspect.mapper.StandardTreeMapper;
import com.ruoyi.inspect.pojo.StandardProductList;
import com.ruoyi.inspect.pojo.StandardTemplate;
import com.ruoyi.inspect.pojo.StandardTree;
import com.ruoyi.inspect.pojo.StructureTestObject;
import com.ruoyi.inspect.service.*;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
/**
 * @author Administrator
 * @description é’ˆå¯¹è¡¨ã€standard_tree(标准树)】的数据库操作Service实现
 * @createDate 2024-03-01 15:06:44
 */
@Service
@AllArgsConstructor
public class StandardTreeServiceImpl extends ServiceImpl<StandardTreeMapper, StandardTree>
        implements StandardTreeService {
    private StandardTreeMapper standardTreeMapper;
    private StandardMethodListService standardMethodListService;
    private StandardProductListMapper standardProductListMapper;
    private StandardProductListService standardProductListService;
    private StandardTemplateService standardTemplateService;
    private StructureTestObjectService structureTestObjectService;
    @Override
    public List<FactoryDto> selectStandardTreeList() {
        List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList();
        for (FactoryDto factoryDto : factoryDtos) {
            for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
                laboratoryDto.getChildren().sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort())
                        - (o2.getSort() == null ? 0 : o2.getSort()));
                for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
//                    if (sampleTypeDto.getChildren().size() == 0) {
                        sampleTypeDto.getChildren().addAll(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
//                    }
                }
            }
        }
        return factoryDtos;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addStandardTree(StandardTree standardTree) {
        LambdaQueryWrapper<StandardTree> wrapper = Wrappers.<StandardTree>lambdaQuery()
                .eq(StandardTree::getFactory, standardTree.getFactory())
                .eq(StandardTree::getLaboratory, standardTree.getLaboratory())
                .eq(StandardTree::getSampleType, standardTree.getSampleType())
                .eq(StandardTree::getSample, standardTree.getSample())
                .eq(StandardTree::getModel, standardTree.getModel());
        if (StringUtils.isNotBlank(standardTree.getSample())) {
            wrapper.eq(StandardTree::getSample, standardTree.getSample());
        }
        StandardTree tree = standardTreeMapper.selectOne(wrapper);
        if (tree != null) {
            throw new BaseException("该型号已存在");
        }
        return standardTreeMapper.insert(standardTree);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int delStandardTree(String tree) {
        String[] trees = tree.split(" - ");
        switch (trees.length) {
            case 5:
                if (trees[3].equals("null")) {
                    standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).isNull(StandardTree::getSample).eq(StandardTree::getModel, trees[4]));
                } else {
                    standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]).eq(StandardTree::getModel, trees[4]));
                }
                break;
            /*case 4:
                standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]));
                break;
            case 3:
                standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]));
                break;
            case 2:
                standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]));
                break;
            case 1:
                standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]));
                break;*/
        }
        return 1;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addStandardProduct(String ids, String tree) {
        String[] trees = tree.split(" - ");
        JSONArray jsonArray = JSON.parseArray(ids);
        for (Object o : jsonArray) {
            StandardProductList standardProductList = standardTreeMapper.selectStandardProductById(Integer.parseInt("" + o));
            standardProductList.setFactory(trees[0]);
            try {
                standardProductList.setLaboratory(trees[1]);
            } catch (Exception e) {
            }
            try {
                standardProductList.setSampleType(trees[2]);
            } catch (Exception e) {
            }
            try {
                standardProductList.setSample(trees[3]);
            } catch (Exception e) {
            }
            try {
                standardProductList.setModel(trees[4]);
            } catch (Exception e) {
            }
            standardProductListMapper.insert(standardProductList);
        }
        return 1;
    }
    @Override
    public List<SampleTypeDto> getStandardTree2() {
        return standardTreeMapper.getStandardTree2();
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int upStandardProducts(Map<String, Object> product) {
        List<Integer> ids = JSON.parseArray(product.get("ids") + "");
        StandardProductList productList = JSON.parseObject(JSON.toJSONString(product.get("standardProductList")), StandardProductList.class);
        if (productList.getMethodS() != null) {
            standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids).like(StandardProductList::getMethod, productList.getMethodS()));
            return 1;
        }
        if (productList.getRadiusList() != null) {
            standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids).like(StandardProductList::getRadiusList, productList.getRadius()));
            return 1;
        }
        standardProductListMapper.update(productList, Wrappers.<StandardProductList>lambdaUpdate().in(StandardProductList::getId, ids));
        return 1;
    }
    @Override
    public List<StandardTree> getStandTreeBySampleType(String laboratory, String sampleType) {
        return standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery()
                .eq(StandardTree::getLaboratory, laboratory)
                .eq(StandardTree::getSampleType, sampleType)
                .select(StandardTree::getModel, StandardTree::getSample));
    }
    /**
     * æ²³å£æ£€æµ‹ä¸­å¿ƒå¯¼å…¥
     * @param file
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void inExcelOfTree(MultipartFile file) {
        InputStream inputStream;
        try {
            inputStream = file.getInputStream();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        List<StandardProductList> lists = new ArrayList<>();
        AtomicReference<String> laboratory = new AtomicReference<>();
        ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> {
            StandardProductList str = new StandardProductList();
            if (i == 0 && l == 1) {
                laboratory.set(standardTreeMapper.getLaboratory(list.get(1) + ""));
                if (laboratory.get() == null) {
                    throw new BaseException("检验对象不存在:" + list.get(1));
                }
            }
            if (i == 0 && l >= 1) {
                Integer standardMethodId = standardMethodListService.getStandardMethodId(list.get(0) + "");
                if (standardMethodId == null) {
                    throw new BaseException("标准编号不存在:" + list.get(0));
                }
                str.setStandardMethodListId(standardMethodId);
                str.setSampleType(list.get(1) + "");
                if (list.get(2) != null) {
                    String sample = baseMapper.selSample(list.get(2) + "");
                    if (sample == null) {
                        throw new BaseException("样品不存在:" + list.get(2));
                    }
                    str.setSample(list.get(2) + "");
                } else {
                    str.setSample(null);
                }
                if (list.get(3) != null) {
                    str.setModel(list.get(3) + "");
                    Long aLong = standardTreeMapper.selectCount(Wrappers.<StandardTree>lambdaQuery()
                            .eq(StandardTree::getModel, str.getModel())
                            .eq(StandardTree::getSampleType, list.get(1) + ""));
                    if (aLong == 0) {
                        StandardTree standardTree = new StandardTree();
                        standardTree.setFactory("中天科技检测中心");
                        standardTree.setLaboratory(laboratory.get());
                        standardTree.setSampleType(str.getSampleType());
                        standardTree.setSample(str.getSample());
                        standardTree.setModel(str.getModel());
                        standardTreeMapper.insert(standardTree);
                    }
                } else {
                    str.setModel(null);
                }
                str.setInspectionItem(list.get(4) + "");
                if (list.get(6) == null) {
                    str.setInspectionItemSubclass("");
                } else {
                    str.setInspectionItemSubclass(list.get(6).toString());
                }
                StandardProductList db_str;
                try {
                    db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel(), str.getInspectionItemClass());
                } catch (Exception e) {
                    throw new BaseException("重复查询:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass());
                }
                if (ObjectUtils.isNotEmpty(db_str)) {
                    str.setId(db_str.getId());
                    str.setStructureItemParameterId(db_str.getStructureItemParameterId());
                }
                if (list.get(8) != null) {
                    str.setMethodS(list.get(8) + "");
                }
                if (list.get(11) == null) {
                    str.setTell(null);
                } else {
                    str.setTell(list.get(11).toString());
                }
                if (list.get(12) == null) {
                    str.setAsk(null);
                } else {
                    str.setAsk(list.get(12).toString());
                }
                if (list.get(13) == null) {
                    str.setPrice(null);
                } else {
                    str.setPrice((list.get(13).toString()));
                }
                if (list.get(14) == null) {
                    str.setManHour(null);
                } else {
                    str.setManHour(list.get(14).toString());
                }
                StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(21)));
                if (standTempIdByName != null) {
                    str.setTemplateId(standTempIdByName.getId());
                } else {
                    throw new BaseException("模板不存在:" + list.get(21));
                }
                str.setFactory("中天科技检测中心");
                str.setLaboratory(laboratory.get());
                str.setState(1);
                str.setTree(str.getFactory() + " - " + str.getLaboratory() + " - " + str.getSampleType() + " - " + str.getSample() + " - " + (str.getModel() == null ? "" : str.getModel()));
                try {
                    str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass()));
                } catch (Exception e) {
                    str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass()));
                }
                if (str.getStructureItemParameterId() == null) {
                    throw new BaseException("检验项目不存在:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass());
                }
                lists.add(str);
            }
        });
        lists.forEach(a -> {
            if (a.getId() != null) {
                standardProductListMapper.updateById(a);
            } else {
                standardProductListMapper.insert(a);
            }
        });
    }
    @Override
    public void importWorkstationExcel(MultipartFile file) {
        InputStream inputStream;
        try {
            inputStream = file.getInputStream();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        List<StandardProductList> lists = new ArrayList<>();
        AtomicReference<String> laboratory = new AtomicReference<>();
        ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> {
            StandardProductList str = new StandardProductList();
            if (i == 0 && l == 1) {
                laboratory.set(standardTreeMapper.getLaboratory(list.get(1) + ""));
                if (laboratory.get() == null) {
                    throw new BaseException("检验对象不存在:" + list.get(1));
                }
            }
            if (i == 0 && l >= 1) {
                Integer standardMethodId = standardMethodListService.getStandardMethodId(list.get(0) + "");
                if (standardMethodId == null) {
                    throw new BaseException("标准编号不存在:" + list.get(0));
                }
                str.setStandardMethodListId(standardMethodId);
                str.setSampleType(list.get(1) + "");
                if (list.get(2) != null) {
                    String sample = baseMapper.selSample(list.get(2) + "");
                    if (sample == null) {
                        throw new BaseException("样品不存在:" + list.get(2));
                    }
                    str.setSample(list.get(2) + "");
                } else {
                    str.setSample(null);
                }
                if (list.get(3) != null) {
                    str.setModel(list.get(3) + "");
                    Long aLong = standardTreeMapper.selectCount(Wrappers.<StandardTree>lambdaQuery()
                            .eq(StandardTree::getModel, str.getModel())
                            .eq(StandardTree::getSampleType, list.get(1) + ""));
                    if (aLong == 0) {
                        StandardTree standardTree = new StandardTree();
                        standardTree.setFactory("中天科技检测中心");
                        standardTree.setLaboratory(laboratory.get());
                        standardTree.setSampleType(str.getSampleType());
                        standardTree.setSample(str.getSample());
                        standardTree.setModel(str.getModel());
                        standardTreeMapper.insert(standardTree);
                    }
                } else {
                    str.setModel(null);
                }
                str.setInspectionItemClass(list.get(4).toString());
                str.setInspectionItemClassEn(list.get(5).toString());
                // å¼€å§‹åŠ 2
                str.setInspectionItem(list.get(6) + "");
                if (list.get(8) == null) {
                    str.setInspectionItemSubclass("");
                } else {
                    str.setInspectionItemSubclass(list.get(8).toString());
                }
                StandardProductList db_str;
                try {
                    db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel(), str.getInspectionItemClass());
                } catch (Exception e) {
                    throw new BaseException("重复查询:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass());
                }
                if (ObjectUtils.isNotEmpty(db_str)) {
                    str.setId(db_str.getId());
                    str.setStructureItemParameterId(db_str.getStructureItemParameterId());
                }
                if (list.get(10) != null) {
                    str.setMethodS(list.get(10) + "");
                }
                if (list.get(13) == null) {
                    str.setTell(null);
                } else {
                    str.setTell(list.get(13).toString());
                }
                if (list.get(14) == null) {
                    str.setAsk(null);
                } else {
                    str.setAsk(list.get(14).toString());
                }
                if (list.get(15) == null) {
                    str.setPrice(null);
                } else {
                    str.setPrice((list.get(15).toString()));
                }
                if (list.get(16) == null) {
                    str.setManHour(null);
                } else {
                    str.setManHour(list.get(16).toString());
                }
                StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(23)));
                if (standTempIdByName != null) {
                    str.setTemplateId(standTempIdByName.getId());
                } else {
                    throw new BaseException("模板不存在:" + list.get(23));
                }
                str.setFactory("中天科技检测中心");
                str.setLaboratory(laboratory.get());
                str.setState(1);
                str.setTree(str.getFactory() + " - " + str.getLaboratory() + " - " + str.getSampleType() + " - " + str.getSample() + " - " + (str.getModel() == null ? "" : str.getModel()));
                try {
                    str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass()));
                } catch (Exception e) {
                    str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass(), str.getInspectionItemClass()));
                }
                if (str.getStructureItemParameterId() == null) {
                    throw new BaseException("检验项目不存在:" + str.getInspectionItem() + " " + str.getInspectionItemSubclass());
                }
                lists.add(str);
            }
        });
        lists.forEach(a -> {
            if (a.getId() != null) {
                standardProductListMapper.updateById(a);
            } else {
                standardProductListMapper.insert(a);
            }
        });
    }
    @Override
    public boolean updateTreeSort(List<FactoryDto> list) {
        List<StructureTestObject> testObjects = new ArrayList<>();
        for (FactoryDto factoryDto : list) {
            for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
                List<SampleTypeDto> children = laboratoryDto.getChildren();
                int sort = 0;
                // å¾ªçŽ¯ç¬¬ä¸‰å±‚
                for (SampleTypeDto child : children) {
                    StructureTestObject structureTestObject = new StructureTestObject();
                    structureTestObject.setSort(sort);
                    structureTestObject.setId(child.getSampleTypeId());
                    testObjects.add(structureTestObject);
                    sort++;
                }
            }
        }
        structureTestObjectService.updateBatchById(testObjects);
        return true;
    }
    /**
     * ä¿®æ”¹æ ‡å‡†æ•°
     * @param standardTree
     * @return
     */
    @Override
    public int updateStandardTree(StandardTree standardTree) {
        // ä¿®æ”¹åç§°åŒ¹é…çš„æ ‡å‡†æ ‘下的检验项目
        // æŸ¥è¯¢æ‰€æœ‰å¯¹è±¡+名称的树
        List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
                .eq(StandardProductList::getSample, standardTree.getSample())
                .eq(StandardProductList::getSampleType, standardTree.getSampleType())
                .eq(StandardProductList::getModel, standardTree.getOldModel()));
        if (CollectionUtils.isNotEmpty(standardProductLists)) {
            for (StandardProductList standardProductList : standardProductLists) {
                // ä¿®æ”¹æ ·å“åç§°
                standardProductList.setModel(standardTree.getModel());
                // ä¿®æ”¹æ ‘名称
                // éœ€è¦æˆªå–第四级, é¿å…ä¸‰å››çº§åç§°ä¸€æ ·ä¿®æ”¹é”™è¯¯
                String[] trees = standardProductList.getTree().split(" - ");
                trees[4] = standardTree.getModel();
                List<String> list = CollUtil.newArrayList(trees);
                String newName = CollUtil.join(list, " - ");
                standardProductList.setTree(newName);
            }
            standardProductListService.updateBatchById(standardProductLists);
        }
        // ä¿®æ”¹æ ‡å‡†æ•°æ£€éªŒé¡¹ç›®
        LambdaUpdateWrapper<StandardTree> wrapper = Wrappers.<StandardTree>lambdaUpdate()
                .eq(StandardTree::getFactory, standardTree.getFactory())
                .eq(StandardTree::getLaboratory, standardTree.getLaboratory())
                .eq(StandardTree::getSampleType, standardTree.getSampleType())
                .eq(StandardTree::getModel, standardTree.getOldModel())
                .set(StandardTree::getModel, standardTree.getModel());
        if (StringUtils.isNotBlank(standardTree.getSample())) {
            wrapper.eq(StandardTree::getSample, standardTree.getSample());
        }
        return standardTreeMapper.update(null, wrapper);
    }
    @Override
    public void resetTreeOfPrice(String tree, Integer standardId) {
        standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getPrice, null));
    }
    @Override
    public void resetTreeOfHour(String tree, Integer standardId) {
        standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getManHour, null));
    }
    @Override
    public void resetTreeOfAsk(String tree, Integer standardId) {
        standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId)
                .set(StandardProductList::getAsk, null)
                .set(StandardProductList::getTell, null)
                .set(StandardProductList::getSection, null)
                .set(StandardProductList::getCores, null)
                .set(StandardProductList::getConductorMaterial, null)
                .set(StandardProductList::getConductorType, null)
                .set(StandardProductList::getPrice, null)
                .set(StandardProductList::getManHour, null));
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StructureItemParameterServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.inspect.mapper.StructureItemParameterMapper;
import com.ruoyi.inspect.pojo.StructureItemParameter;
import com.ruoyi.inspect.service.StructureItemParameterService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
@AllArgsConstructor
public class StructureItemParameterServiceImpl extends ServiceImpl<StructureItemParameterMapper, StructureItemParameter> implements StructureItemParameterService {
    @Resource
    private StructureItemParameterMapper structureItemParameterMapper;
    @Override
    public void removeNoSample(String sample) {
        structureItemParameterMapper.removeNoSample("\""+sample+"\"");
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StructureTestObjectPartServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.mapper.ProductPartMapper;
import com.ruoyi.inspect.mapper.StructureTestObjectPartMapper;
import com.ruoyi.inspect.pojo.ProductPart;
import com.ruoyi.inspect.pojo.StructureTestObjectPart;
import com.ruoyi.inspect.service.StructureTestObjectPartService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * æ£€éªŒå¯¹è±¡é›¶ä»¶è¡¨
 *
 * @author zhuo
 * @since 2024-08-07
 */
@Transactional
@Service
@AllArgsConstructor
public class StructureTestObjectPartServiceImpl extends ServiceImpl<StructureTestObjectPartMapper, StructureTestObjectPart> implements StructureTestObjectPartService {
    private ProductPartMapper productPartMapper;
    @Override
    public IPage<StructureTestObjectPart> selectByTestObjectId(Page page, StructureTestObjectPart structureTestObjectPart) {
        return baseMapper.selectListByTestObjectId(page, QueryWrappers.queryWrappers(structureTestObjectPart),structureTestObjectPart.getTestObjectId());
    }
    @Override
    public void addTestObjectPart(StructureTestObjectPart structureTestObjectPart) {
        this.isPartNoExist(structureTestObjectPart.getPartNo(), null);
        if (structureTestObjectPart.getTestObjectId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        baseMapper.insert(structureTestObjectPart);
    }
    @Override
    public void updateTestObjectPart(StructureTestObjectPart structureTestObjectPart) {
        this.isPartNoExist(structureTestObjectPart.getPartNo(),  structureTestObjectPart.getId());
        if (structureTestObjectPart.getTestObjectId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        baseMapper.updateById(structureTestObjectPart);
    }
    // åˆ¤æ–­é›¶ä»¶å·æ˜¯å¦å­˜åœ¨
    public void isPartNoExist(String partNo, Integer id) {
        // é›¶ä»¶å·å”¯ä¸€ ä½†ä¸å¿…å¡«
        if (StringUtils.isNotBlank(partNo)) {
            Long count = productPartMapper.selectCount(new LambdaQueryWrapper<ProductPart>()
                    .eq(ProductPart::getPartNo, partNo));
            Long selectCount = baseMapper.selectCount(Wrappers.<StructureTestObjectPart>lambdaQuery()
                    .eq(StructureTestObjectPart::getPartNo, partNo)
                    .ne(id != null, StructureTestObjectPart::getId, id));
            if (count > 0 || selectCount > 0) {
                throw new BaseException("该零件号已绑定过检验对象");
            }
        } else {
            throw new BaseException("请输入零件号");
        }
    }
}
basic-server/src/main/java/com/ruoyi/inspect/service/impl/StructureTestObjectServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.inspect.mapper.StructureTestObjectMapper;
import com.ruoyi.inspect.pojo.StructureTestObject;
import com.ruoyi.inspect.service.StructureTestObjectService;
import org.springframework.stereotype.Service;
/**
 * æ£€æµ‹å¯¹è±¡
 *
 * @author zhuo
 * @since 2024-09-13
 */
@Service
public class StructureTestObjectServiceImpl extends ServiceImpl<StructureTestObjectMapper, StructureTestObject> implements StructureTestObjectService {
}
basic-server/src/main/resources/mapper/CertificationMapper.xml
@@ -1,7 +1,7 @@
<?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.basic.mapper.CertificationMapper">
    <select id="getCertificationDetail" resultType="com.ruoyi.basic.pojo.Certification">
    <select id="getCertificationDetail" resultType="com.ruoyi.inspect.pojo.Certification">
        select b.*
        from ( select a.`name`, a.`code`,a.organization,a.explanation,a.first_issuance_date,a.latest_issuance_date,c.expire_time FROM
            (SELECT id,name,MIN(date_of_issuance) AS first_issuance_date,
basic-server/src/main/resources/mapper/IfsInventoryQuantityMapper.xml
@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.basic.mapper.IfsInventoryQuantityMapper">
    <select id="printLabel" resultType="com.ruoyi.basic.dto.IfsInventoryQuantityDto">
    <select id="printLabel" resultType="com.ruoyi.inspect.dto.IfsInventoryQuantityDto">
        SELECT io.sample sample_name,
        iiq.supplier_name,
        io.part_detail part_desc,
basic-server/src/main/resources/mapper/LaboratoryMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.LaboratoryMapper">
    <select id="selectItemParameter" resultType="com.ruoyi.basic.pojo.Laboratory">
    <select id="selectItemParameter" resultType="com.ruoyi.inspect.pojo.Laboratory">
        select * from
        (
        select l.id,
basic-server/src/main/resources/mapper/ProductMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.ProductMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.Product">
    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.Product">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="name" column="name" jdbcType="VARCHAR"/>
            <result property="nameEn" column="name_en" jdbcType="VARCHAR"/>
@@ -20,7 +20,7 @@
        create_user,update_user,create_time,
        update_time,object_id
    </sql>
    <select id="selectProductListByObjectId" resultType="com.ruoyi.basic.pojo.Product">
    <select id="selectProductListByObjectId" resultType="com.ruoyi.inspect.pojo.Product">
        select * from (
        select p.id,
               p.name,
basic-server/src/main/resources/mapper/ProductPartMapper.xml
@@ -3,7 +3,7 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.ProductPartMapper">
    <select id="selectListByProductId" resultType="com.ruoyi.basic.pojo.ProductPart">
    <select id="selectListByProductId" resultType="com.ruoyi.inspect.pojo.ProductPart">
        SELECT * from product_part pp
        where  pp.product_id=#{productId}
    </select>
basic-server/src/main/resources/mapper/ProductSupplierDensityMapper.xml
@@ -1,7 +1,7 @@
<?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.basic.mapper.ProductSupplierDensityMapper">
    <select id="selectListByProductId" resultType="com.ruoyi.basic.pojo.ProductSupplierDensity">
    <select id="selectListByProductId" resultType="com.ruoyi.inspect.pojo.ProductSupplierDensity">
        SELECT * from product_supplier_density pp
        where  pp.product_id=#{productId}
    </select>
basic-server/src/main/resources/mapper/SealMapper.xml
@@ -3,7 +3,7 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.SealMapper">
    <select id="selectSeal" resultType="com.ruoyi.basic.pojo.Seal">
    <select id="selectSeal" resultType="com.ruoyi.inspect.pojo.Seal">
        select l.id,s.lab_id,l.laboratory_name ,s.address, s.type as Type,s.create_time
        from seal s  LEFT JOIN laboratory l  on s.lab_id=l.id
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
@@ -11,7 +11,7 @@
        </if>
    </select>
    <select id="selectLaboratory" resultType="com.ruoyi.basic.pojo.Laboratory">
    <select id="selectLaboratory" resultType="com.ruoyi.inspect.pojo.Laboratory">
        SELECT *
        from laboratory
        WHERE id = #{labId}
basic-server/src/main/resources/mapper/StandardMethodListMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StandardMethodListMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.StandardMethodList">
    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.StandardMethodList">
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="code" column="code" jdbcType="VARCHAR"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
@@ -25,14 +25,14 @@
        from user
        where id = #{id}
    </select>
    <select id="selectStandardMethodLists" resultType="com.ruoyi.basic.pojo.StandardMethodList">
    <select id="selectStandardMethodLists" resultType="com.ruoyi.inspect.pojo.StandardMethodList">
        select id, code, name, remark
        from standard_method
        where is_use = 1
        and is_product = 1
        and structure_test_object_id LIKE CONCAT('%[', #{tree}, ']%')
    </select>
    <select id="selectParameterList" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="selectParameterList" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select inspection_item,
               inspection_item_subclass,
               laboratory,
@@ -52,7 +52,7 @@
        from structure_item_parameter
        where method = #{code}
    </select>
    <select id="selectStandardMethodLists2" resultType="com.ruoyi.basic.pojo.StandardMethodList">
    <select id="selectStandardMethodLists2" resultType="com.ruoyi.inspect.pojo.StandardMethodList">
        select sml.id, sml.code, sml.name,sml.remark, sml.create_time, u.name create_user_name
        from standard_method_list sml
        left join user u on u.id = sml.create_user
@@ -70,19 +70,19 @@
            and model = #{data5}
        </if>
    </select>
    <select id="selectStandardMethodLists3" resultType="com.ruoyi.basic.pojo.StandardMethodList">
    <select id="selectStandardMethodLists3" resultType="com.ruoyi.inspect.pojo.StandardMethodList">
        select id, code, name, remark
        from standard_method
        where is_use = 1
          and is_product = 1
          and structure_test_object_id LIKE CONCAT('%', #{tree}, '%')
    </select>
    <select id="selectListEnum" resultType="com.ruoyi.basic.pojo.StandardMethodList">
    <select id="selectListEnum" resultType="com.ruoyi.inspect.pojo.StandardMethodList">
        select id,code,name from standard_method
        where is_product = 1
        and is_use = 1
    </select>
    <select id="selectStandardMethodListsByNull" resultType="com.ruoyi.basic.pojo.StandardMethodList">
    <select id="selectStandardMethodListsByNull" resultType="com.ruoyi.inspect.pojo.StandardMethodList">
        select id, code, name, remark
        from standard_method
        where is_use = 1
basic-server/src/main/resources/mapper/StandardMethodMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StandardMethodMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.StandardMethod">
    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.StandardMethod">
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="code" column="code" jdbcType="VARCHAR"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
@@ -15,7 +15,7 @@
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <select id="selectStandardMethodList" resultType="com.ruoyi.basic.pojo.StandardMethod">
    <select id="selectStandardMethodList" resultType="com.ruoyi.inspect.pojo.StandardMethod">
        select * from (
                select sm.id,
                sm.code,
@@ -42,7 +42,7 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectStandMethodById" resultType="com.ruoyi.basic.pojo.StandardMethod">
    <select id="selectStandMethodById" resultType="com.ruoyi.inspect.pojo.StandardMethod">
        select sm.id,
               sm.code,
               sm.name,
basic-server/src/main/resources/mapper/StandardProductListMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StandardProductListMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.StandardProductList">
    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.StandardProductList">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="inspectionItem" column="inspection_item" jdbcType="VARCHAR"/>
            <result property="inspectionItemSubclass" column="inspection_item_subclass" jdbcType="VARCHAR"/>
@@ -55,7 +55,7 @@
          and standard_method_list_id = #{methodId}
          and sort between #{endIndex} and #{beginIndex} - 1
    </update>
    <select id="standardProductListIPage" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="standardProductListIPage" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select spl.* from standard_product_list spl
        left join product p on spl.sample = p.name
        where standard_method_list_id = #{id}
@@ -72,7 +72,7 @@
        order by p.id
        group by spl.id
    </select>
    <select id="getOne" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="getOne" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select * from standard_product_list
        where standard_method_list_id = #{standardMethodListId}
        and inspection_item = #{inspectionItem}
@@ -92,7 +92,7 @@
            and inspection_item_class = #{inspectionItemClass}
        </if>
    </select>
    <select id="selectDetail" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="selectDetail" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select * from standard_product_list
        where standard_method_list_id = #{standardMethodListId}
        and state =#{state}
@@ -111,7 +111,7 @@
                     WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- æå–字母后面的数字部分
                ,id asc
    </select>
    <select id="selectDetail2" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="selectDetail2" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select * from standard_product_list
        where standard_method_list_id = #{standardMethodListId}
          and state =#{state}
basic-server/src/main/resources/mapper/StandardTemplateMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StandardTemplateMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.StandardTemplate">
    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.StandardTemplate">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="name" column="name" jdbcType="VARCHAR"/>
            <result property="remark" column="remark" jdbcType="VARCHAR"/>
@@ -15,7 +15,7 @@
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <select id="selectStandardTemplatePageList" resultType="com.ruoyi.basic.pojo.StandardTemplate">
    <select id="selectStandardTemplatePageList" resultType="com.ruoyi.inspect.pojo.StandardTemplate">
        select * from (
        select st.id, st.name,st.number, st.remark, u2.name create_user_name, u3.name update_user_name, st.create_time, st.update_time
        from standard_template st
@@ -26,7 +26,7 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getStandTempIdByName" resultType="com.ruoyi.basic.pojo.StandardTemplate">
    <select id="getStandTempIdByName" resultType="com.ruoyi.inspect.pojo.StandardTemplate">
        select id from standard_template where name=#{name}
    </select>
    <!-- æŸ¥è¯¢åŽ‹ç¼©åŽçš„æ•°æ® -->
basic-server/src/main/resources/mapper/StandardTreeMapper.xml
@@ -3,7 +3,7 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StandardTreeMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.StandardTree">
    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.StandardTree">
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="factory" column="factory" jdbcType="VARCHAR"/>
        <result property="laboratory" column="laboratory" jdbcType="VARCHAR"/>
@@ -16,19 +16,19 @@
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <resultMap id="FactoryDto" type="com.ruoyi.basic.dto.FactoryDto">
    <resultMap id="FactoryDto" type="com.ruoyi.inspect.dto.FactoryDto">
        <result property="label" column="factory"/>
        <result property="value" column="factory"/>
        <collection property="children" resultMap="LaboratoryDto"/>
    </resultMap>
    <resultMap id="LaboratoryDto" type="com.ruoyi.basic.dto.LaboratoryDto">
    <resultMap id="LaboratoryDto" type="com.ruoyi.inspect.dto.LaboratoryDto">
        <result property="label" column="laboratory"/>
        <result property="value" column="laboratory"/>
        <collection property="children" resultMap="SampleTypeDto"/>
    </resultMap>
    <resultMap id="SampleTypeDto" type="com.ruoyi.basic.dto.SampleTypeDto">
    <resultMap id="SampleTypeDto" type="com.ruoyi.inspect.dto.SampleTypeDto">
        <result property="label" column="sample_type"/>
        <result property="value" column="sample_type"/>
        <result property="sampleTypeId" column="sample_type_id"/>
@@ -38,7 +38,7 @@
        <collection property="children" resultMap="SampleDto"/>
    </resultMap>
    <resultMap id="SampleDto" type="com.ruoyi.basic.dto.SampleDto">
    <resultMap id="SampleDto" type="com.ruoyi.inspect.dto.SampleDto">
        <result property="label" column="sample"/>
        <result property="value" column="sample"/>
        <result property="partNo" column="sample_part_no"/>
@@ -46,7 +46,7 @@
        <collection property="children" resultMap="ModelDto"/>
    </resultMap>
    <resultMap id="ModelDto" type="com.ruoyi.basic.dto.ModelDto">
    <resultMap id="ModelDto" type="com.ruoyi.inspect.dto.ModelDto">
        <result property="label" column="model"/>
        <result property="value" column="model"/>
    </resultMap>
@@ -108,7 +108,7 @@
        order by l.id, CAST(sto.code AS DECIMAL), p.id, ISNULL(st.id), st.id
    </select>
    <select id="selectStandardProductById" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="selectStandardProductById" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select inspection_item,
               inspection_item_subclass,
               laboratory,
@@ -128,7 +128,7 @@
        from structure_item_parameter
        where id = #{id}
    </select>
    <select id="getStandardProductListBySample" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="getStandardProductListBySample" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select inspection_item,
               inspection_item_subclass,
               laboratory,
@@ -154,7 +154,7 @@
           or sp.sample = ''
           or sp.sample = '[]'
    </select>
    <select id="getStandardMethodListBySample" resultType="com.ruoyi.basic.pojo.StandardMethodList">
    <select id="getStandardMethodListBySample" resultType="com.ruoyi.inspect.pojo.StandardMethodList">
        select sm.code,sm.name,sm.remark from standard_method sm
        left join structure_test_object sto on sm.structure_test_object_id = sto.id
        where is_use = 1
@@ -163,7 +163,7 @@
            and sto.specimen_name = #{sampleType}
        </if>
    </select>
    <select id="selectStandardTreeList2" resultType="com.ruoyi.basic.pojo.StandardTree">
    <select id="selectStandardTreeList2" resultType="com.ruoyi.inspect.pojo.StandardTree">
        select '中天科技检测中心'        factory,
               l.laboratory_name laboratory,
               sto.specimen_name sample_type,
@@ -177,7 +177,7 @@
        where sto.specimen_name = #{sampleType}
        group by sto.specimen_name
    </select>
    <select id="selectStandardProductListByTree" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="selectStandardProductListByTree" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select <include refid="selectStandardTree"/>
        from structure_item_parameter
        where (
@@ -192,7 +192,7 @@
        order by inspection_item_class, inspection_item, id asc
    </select>
    <select id="selectStandardProductListByTree2" resultType="com.ruoyi.basic.pojo.StandardProductList">
    <select id="selectStandardProductListByTree2" resultType="com.ruoyi.inspect.pojo.StandardProductList">
        select <include refid="selectStandardTree"/>
        from structure_item_parameter
        where sample LIKE CONCAT('%[', #{tree}, ']%')
@@ -212,7 +212,7 @@
            and st.sample = p.name
    </select>
    <select id="getStandardTree3" resultType="com.ruoyi.basic.dto.SampleDto">
    <select id="getStandardTree3" resultType="com.ruoyi.inspect.dto.SampleDto">
        select model label,
               model value
        from standard_tree
@@ -240,7 +240,7 @@
            and (inspection_item_subclass is null or inspection_item_subclass = '')
        </if>
    </select>
    <select id="selectPList" resultType="com.ruoyi.basic.dto.ProductDto">
    <select id="selectPList" resultType="com.ruoyi.inspect.dto.ProductDto">
        select p.name
        from structure_test_object sto
                 left join product p on p.object_id = sto.id
@@ -325,26 +325,26 @@
              group by ifs.id) a
    </sql>
    <select id="getIfsByStateOne" resultType="com.ruoyi.basic.dto.IfsInventoryQuantityDto">
    <select id="getIfsByStateOne" resultType="com.ruoyi.inspect.dto.IfsInventoryQuantityDto">
        <include refid="getIfsOrder"/>
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectIfsPage" resultType="com.ruoyi.basic.pojo.IfsInventoryQuantity">
    <select id="selectIfsPage" resultType="com.ruoyi.inspect.pojo.IfsInventoryQuantity">
        SELECT * from ifs_inventory_quantity ifs
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectIfsInventoryQuantity" resultType="com.ruoyi.basic.dto.IfsInventoryQuantityCheckDto">
    <select id="selectIfsInventoryQuantity" resultType="com.ruoyi.inspect.dto.IfsInventoryQuantityCheckDto">
        SELECT * from ifs_inventory_quantity ifs
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getIfsByOver" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
    <select id="getIfsByOver" resultType="com.ruoyi.inspect.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
        <where>
            <if test="beginDeclareDate != null and beginDeclareDate != '' and endDeclareDate != null and endDeclareDate != ''">
@@ -356,7 +356,7 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getIfsByOverList" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
    <select id="getIfsByOverList" resultType="com.ruoyi.inspect.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
            <where>
                <if test="beginDeclareDate != null and beginDeclareDate != '' and endDeclareDate != null and endDeclareDate != ''">
@@ -368,7 +368,7 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getIfsByQuarter" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
    <select id="getIfsByQuarter" resultType="com.ruoyi.inspect.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
        <where>
            and (quarter_order_id is not null)
basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml
@@ -8,7 +8,7 @@
        from structure_item_parameter
        where sample like concat('%', #{sample}, '%')
    </delete>
    <select id="selectItemParameterList" resultType="com.ruoyi.basic.pojo.StructureItemParameter">
    <select id="selectItemParameterList" resultType="com.ruoyi.inspect.pojo.StructureItemParameter">
        select * from (select A.id,
        inspection_item,
        inspection_item_en,
@@ -109,12 +109,12 @@
                 left join product p on p.object_id = sto.id
    </select>
    <resultMap id="itemDto" type="com.ruoyi.basic.dto.TestItemDto">
    <resultMap id="itemDto" type="com.ruoyi.inspect.dto.TestItemDto">
        <result column="sId" property="id"/>
        <result column="sName" property="name"/>
        <collection property="children" resultMap="productDto"/>
    </resultMap>
    <resultMap id="productDto" type="com.ruoyi.basic.dto.ProductDto">
    <resultMap id="productDto" type="com.ruoyi.inspect.dto.ProductDto">
        <result column="pId" property="id"/>
        <result column="pName" property="name"/>
    </resultMap>
basic-server/src/main/resources/mapper/StructureTestMapper.xml
@@ -4,7 +4,7 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StructureTestObjectMapper">
    <select id="selectTestObjectList" resultType="com.ruoyi.basic.dto.PageTestObjectDto">
    <select id="selectTestObjectList" resultType="com.ruoyi.inspect.dto.PageTestObjectDto">
        select * from (
        select sto.id,
        sto.specimen_name,
basic-server/src/main/resources/mapper/StructureTestObjectPartMapper.xml
@@ -1,7 +1,7 @@
<?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.basic.mapper.StructureTestObjectPartMapper">
    <select id="selectListByTestObjectId" resultType="com.ruoyi.basic.pojo.StructureTestObjectPart">
    <select id="selectListByTestObjectId" resultType="com.ruoyi.inspect.pojo.StructureTestObjectPart">
        SELECT * from structure_test_object_part pp
        where  pp.test_object_id = #{testObjectId}
    </select>
bin/clean.bat
ÎļþÒÑɾ³ý
bin/package.bat
ÎļþÒÑɾ³ý
bin/run.bat
ÎļþÒÑɾ³ý
cnas-manage/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ruoyi</artifactId>
        <groupId>com.ruoyi</groupId>
        <version>3.8.9</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cnas-manage</artifactId>
    <dependencies>
        <!--业务模块-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>inspect-server</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-system</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-framework</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>
cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.mapper.ClientSatisfactionAnalyseFileMapper;
import com.ruoyi.manage.pojo.ClientSatisfaction;
import com.ruoyi.manage.pojo.ClientSatisfactionAnalyseFile;
import com.ruoyi.manage.service.ClientSatisfactionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Api(tags = "客户满意度调查")
@AllArgsConstructor
@RestController
@RequestMapping("/clientSatisfaction")
public class ClientSatisfactionController {
    private ClientSatisfactionService clientSatisfactionService;
    private ClientSatisfactionAnalyseFileMapper clientSatisfactionAnalyseFileMapper;
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     * @param
     * @return
     */
    @ApiOperation(value = "客户满意度调查列表")
    @GetMapping("/pageClientSatisfaction")
    public Result<IPage<ClientSatisfaction>> pageClientSatisfaction(Page page,ClientSatisfaction clientSatisfaction) throws Exception {
        return Result.success(clientSatisfactionService.pageClientSatisfaction(page, clientSatisfaction));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥æ–°å¢ž
     * @return
     */
    @ApiOperation(value = "客户满意度调查新增")
    @PostMapping("/addClientSatisfaction")
    public Result addClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction){
        return Result.success(clientSatisfactionService.save(clientSatisfaction));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥ä¿®æ”¹
     * @return
     */
    @ApiOperation(value = "客户满意度调查修改")
    @PostMapping("/updateClientSatisfaction")
    public Result updateClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction){
        return Result.success(clientSatisfactionService.updateById(clientSatisfaction));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ é™¤
     * @return
     */
    @ApiOperation(value = "客户满意度调查删除")
    @DeleteMapping("/delClientSatisfaction")
    public Result delClientSatisfaction(Integer clientSatisfactionId){
        return Result.success(clientSatisfactionService.removeById(clientSatisfactionId));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     * @param clientSatisfactionId
     * @param response
     * @return
     */
    @ApiOperation(value = "客户满意导出")
    @GetMapping("/exportWordClientSatisfaction")
    public Result exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response){
        clientSatisfactionService.exportWordClientSatisfaction(clientSatisfactionId, response);
        return Result.success();
    }
    /**
     * ç¡®è®¤å®¢æˆ·æ»¡æ„åº¦
     * @param clientSatisfaction è¦ä¿®æ”¹å®¢æˆ·æ»¡æ„åº¦çš„状态对象
     * @param userId ä¿®æ”¹äººid
     */
    @ApiOperation(value = "确认客户满意度")
    @PostMapping("/confirmClientSatisfaction")
    public void confirmClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction, Integer userId){
        clientSatisfactionService.confirmClientSatisfaction(clientSatisfaction, userId);
    }
    /**
     * æ–°å¢žå®¢æˆ·åˆ†æžé™„ä»¶
     * @param file
     * @return
     */
    @ApiOperation(value = "新增户分析附件")
    @PostMapping("/uploadAnalyseFile")
    public Result<?> uploadAnalyseFile(MultipartFile file) {
        return Result.success(clientSatisfactionService.uploadAnalyseFile(file));
    }
    /**
     * æŸ¥è¯¢æˆ·åˆ†æžé™„ä»¶
     * @return
     */
    @ApiOperation(value = "查询户分析附件")
    @GetMapping("/pageAnalyseFile")
    public Result<IPage<ClientSatisfactionAnalyseFile>> pageAnalyseFile(Page page,ClientSatisfactionAnalyseFile analyseFile) throws Exception {
        return Result.success(clientSatisfactionService.pageAnalyseFile(page, analyseFile));
    }
    /**
     * åˆ é™¤æˆ·åˆ†æžé™„ä»¶
     * @return
     */
    @ApiOperation(value = "删除户分析附件")
    @DeleteMapping("/delAnalyseFile")
    public Result delAnalyseFile(Integer analyseFileId){
        return Result.success(clientSatisfactionAnalyseFileMapper.deleteById(analyseFileId));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalCheckController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.dto.InternalCheckDto;
import com.ruoyi.manage.pojo.InternalCheck;
import com.ruoyi.manage.service.InternalCheckService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Api(tags = "内审检查")
@AllArgsConstructor
@RestController
@RequestMapping("/internalCheck")
public class InternalCheckController {
    private InternalCheckService internalCheckService;
    /**
     * å†…审检查分页查询
     * @param
     * @return
     */
    @ApiOperation(value = "内审检查分页查询")
    @GetMapping("/pageInternalCheck")
    public Result<IPage<InternalCheckDto>> pageInternalCheck(Page page,InternalCheck internalCheck) throws Exception {
        return Result.success(internalCheckService.pageInternalCheck(page, internalCheck));
    }
    /**
     * å†…审检查新增
     * @return
     */
    @ApiOperation(value = "内审检查新增")
    @PostMapping("/addInternalCheck")
    public Result addInternalCheck(@RequestBody InternalCheckDto internalCheck){
        return Result.success(internalCheckService.addInternalCheck(internalCheck));
    }
    /**
     * å†…审检查修改
     * @return
     */
    @ApiOperation(value = "内审检查修改")
    @PostMapping("/updateInternalCheck")
    public Result updateInternalCheck(@RequestBody InternalCheckDto internalCheck){
        return Result.success(internalCheckService.updateInternalCheck(internalCheck));
    }
    /**
     * å†…审检查删除
     * @return
     */
    @ApiOperation(value = "内审检查删除")
    @DeleteMapping("/delInternalCheck")
    public Result delInternalCheck(Integer checkId){
        return Result.success(internalCheckService.delInternalCheck(checkId));
    }
    /**
     * å†…审检查查看详情
     * @return
     */
    @ApiOperation(value = "内审检查查看详情")
    @GetMapping("/getInternalCheckOne")
    public Result<InternalCheckDto> getInternalCheckOne(Integer checkId){
        return Result.success(internalCheckService.getInternalCheckOne(checkId));
    }
    /**
     * å†…审检查批准
     * @return
     */
    @ApiOperation(value = "内审检查批准")
    @PostMapping("/ratifyInternalCheck")
    public Result ratifyInternalCheck(@RequestBody InternalCheckDto internalCheck){
        return Result.success(internalCheckService.ratifyInternalCheck(internalCheck));
    }
    /**
     * å¯¼å‡ºå†…审检查
     * @return
     */
    @ApiOperation(value = "导出内审检查")
    @GetMapping("/exportInternalCheck")
    public void exportInternalCheck(Integer checkId, HttpServletResponse response){
        internalCheckService.exportInternalCheck(checkId, response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalCorrectController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.mapper.InternalCorrectFileMapper;
import com.ruoyi.manage.pojo.InternalCorrect;
import com.ruoyi.manage.pojo.InternalCorrectFile;
import com.ruoyi.manage.service.InternalCorrectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * å†…审管理纠正处理表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Api(tags = "内审纠正措施")
@AllArgsConstructor
@RestController
@RequestMapping("/internalCorrect")
public class InternalCorrectController {
    private InternalCorrectService internalCorrectService;
    private InternalCorrectFileMapper internalCorrectFileMapper;
    /**
     * æ–°å¢žå†…审管理纠正处理信息
     * @return
     */
    @ApiOperation(value = "新增内审管理纠正处理")
    @PostMapping("/addInternalCorrect")
    public Result addInternalCorrect(@RequestBody InternalCorrect internalCorrect){
        return Result.success(internalCorrectService.addInternalCorrect(internalCorrect));
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正处理
     * @return
     */
    @ApiOperation(value = "查询内审管理纠正处理")
    @GetMapping("/getInternalCorrect")
    public Result<InternalCorrect> getInternalCorrect(Integer correctId){
        return Result.success(internalCorrectService.getInternalCorrect(correctId));
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施列表
     * @return
     */
    @ApiOperation(value = "查询内审管理纠正措施列表")
    @GetMapping("/pageInternalCorrect")
    public Result<IPage<InternalCorrect>> pageInternalCorrect(Page page, InternalCorrect detailsCorrect) throws Exception {
        return Result.success(internalCorrectService.pageInternalCorrect(page, detailsCorrect));
    }
    /**
     * æ–°å¢žå†…审管理纠正措施附件
     * @param correctId
     * @param file
     * @return
     */
    @ApiOperation(value = "新增内审管理纠正措施附件")
    @PostMapping("/uploadInternalCorrectFile")
    public Result<?> uploadInternalCorrectFile(Integer correctId, MultipartFile file) {
        return Result.success(internalCorrectService.uploadInternalCorrectFile(correctId, file));
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施附件
     * @return
     */
    @ApiOperation(value = "查询内审管理纠正措施附件")
    @GetMapping("/getInternalCorrectFileList")
    public Result<List<InternalCorrectFile>> getInternalCorrectFileList(Integer correctId){
        return Result.success(internalCorrectService.getInternalCorrectFileList(correctId));
    }
    /**
     * åˆ é™¤å†…审管理纠正措施附件
     * @return
     */
    @ApiOperation(value = "删除内审管理纠正措施附件")
    @DeleteMapping("/delInternalCorrectFile")
    public Result delInternalCorrectFile(Integer correctFileId){
        return Result.success(internalCorrectFileMapper.deleteById(correctFileId));
    }
    /**
     * å¯¼å‡ºçº æ­£æŽªæ–½
     * @return
     */
    @ApiOperation(value = "导出纠正措施")
    @GetMapping("/exportInternalCorrect")
    public void exportInternalCorrect(Integer correctId, HttpServletResponse response){
        internalCorrectService.exportInternalCorrect(correctId, response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalImplementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.dto.InternalImplementDto;
import com.ruoyi.manage.pojo.InternalImplement;
import com.ruoyi.manage.service.InternalImplementService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Api(tags = "内审实施计划")
@AllArgsConstructor
@RestController
@RequestMapping("/internalImplement")
public class InternalImplementController {
    private InternalImplementService internalImplementService;
    /**
     * å†…审实施计划分页查询
     * @param
     * @return
     */
    @ApiOperation(value = "内审实施计划分页查询")
    @GetMapping("/pageInternalImplement")
    public Result<IPage<InternalImplementDto>> pageInternalImplement(Page page,InternalImplement internalImplement) throws Exception {
        return Result.success(internalImplementService.pageInternalImplement(page, internalImplement));
    }
    /**
     * å†…审实施计划新增
     * @return
     */
    @ApiOperation(value = "内审实施计划新增")
    @PostMapping("/addInternalImplement")
    public Result addInternalImplement(@RequestBody InternalImplementDto internalImplement){
        return Result.success(internalImplementService.addInternalImplement(internalImplement));
    }
    /**
     * å†…审实施计划修改
     * @return
     */
    @ApiOperation(value = "内审实施计划修改")
    @PostMapping("/updateInternalImplement")
    public Result updateInternalImplement(@RequestBody InternalImplementDto internalImplement){
        return Result.success(internalImplementService.updateInternalImplement(internalImplement));
    }
    /**
     * å†…审实施计划删除
     * @return
     */
    @ApiOperation(value = "内审实施计划删除")
    @DeleteMapping("/delInternalImplement")
    public Result delInternalImplement(Integer implementId){
        return Result.success(internalImplementService.delInternalImplement(implementId));
    }
    /**
     * å†…审实施计划查看详情
     * @return
     */
    @ApiOperation(value = "内审实施计划查看详情")
    @GetMapping("/getInternalImplementOne")
    public Result<InternalImplementDto> getInternalImplementOne(Integer implementId){
        return Result.success(internalImplementService.getInternalImplementOne(implementId));
    }
    /**
     * å†…审实施计划批准
     * @return
     */
    @ApiOperation(value = "内审实施计划批准")
    @PostMapping("/ratifyInternalImplement")
    public Result ratifyInternalImplement(@RequestBody InternalImplementDto internalImplement){
        return Result.success(internalImplementService.ratifyInternalImplement(internalImplement));
    }
    /**
     * å¯¼å‡ºå†…审实施计划
     * @return
     */
    @ApiOperation(value = "导出内审实施计划")
    @GetMapping("/exportInternalImplement")
    public void exportInternalImplement(Integer implementId, HttpServletResponse response){
        internalImplementService.exportInternalImplement(implementId, response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalMeetingController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.dto.InternalMeetingDto;
import com.ruoyi.manage.pojo.InternalMeeting;
import com.ruoyi.manage.service.InternalMeetingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * å†…审会议表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
@Api(tags = "内审会议")
@AllArgsConstructor
@RestController
@RequestMapping("/internalMeeting")
public class InternalMeetingController {
    private InternalMeetingService internalMeetingService;
    /**
     * å†…审会议分页查询
     * @param
     * @return
     */
    @ApiOperation(value = "内审会议分页查询")
    @GetMapping("/pageInternalMeeting")
    public Result<IPage<InternalMeetingDto>> pageInternalMeeting(Page page,InternalMeeting internalMeeting) throws Exception {
        return Result.success(internalMeetingService.pageInternalMeeting(page, internalMeeting));
    }
    /**
     * å†…审会议新增
     * @return
     */
    @ApiOperation(value = "内审会议新增")
    @PostMapping("/addInternalMeeting")
    public Result addInternalMeeting(@RequestBody InternalMeetingDto internalMeeting){
        return Result.success(internalMeetingService.addInternalMeeting(internalMeeting));
    }
    /**
     * å†…审会议修改
     * @return
     */
    @ApiOperation(value = "内审会议修改")
    @PostMapping("/updateInternalMeeting")
    public Result updateInternalMeeting(@RequestBody InternalMeetingDto internalMeeting){
        return Result.success(internalMeetingService.updateInternalMeeting(internalMeeting));
    }
    /**
     * å†…审会议删除
     * @return
     */
    @ApiOperation(value = "内审会议删除")
    @DeleteMapping("/delInternalMeeting")
    public Result delInternalMeeting(Integer meetingId){
        return Result.success(internalMeetingService.delInternalMeeting(meetingId));
    }
    /**
     * å†…审会议查看详情
     * @return
     */
    @ApiOperation(value = "内审会议查看详情")
    @GetMapping("/getInternalMeetingOne")
    public Result<InternalMeetingDto> getInternalMeetingOne(Integer meetingId){
        return Result.success(internalMeetingService.getInternalMeetingOne(meetingId));
    }
    /**
     * å¯¼å‡ºå†…审会议
     * @return
     */
    @ApiOperation(value = "导出内审会议")
    @GetMapping("/exportInternalMeeting")
    public void exportInternalMeeting(Integer meetingId, HttpServletResponse response){
        internalMeetingService.exportInternalMeeting(meetingId, response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalPlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.dto.InternalPlanDto;
import com.ruoyi.manage.pojo.InternalPlan;
import com.ruoyi.manage.service.InternalPlanService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * å†…审年度计划 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Api(tags = "内审年度计划")
@AllArgsConstructor
@RestController
@RequestMapping("/internalPlan")
public class InternalPlanController {
    private InternalPlanService internalPlanService;
    /**
     * å†…审年度计划分页查询
     * @param
     * @return
     */
    @ApiOperation(value = "内审年度计划分页查询")
    @GetMapping("/pageInternalPlan")
    public Result<IPage<InternalPlanDto>> pageInternalPlan(Page page,InternalPlan internalPlan) throws Exception {
        return Result.success(internalPlanService.pageInternalPlan(page, internalPlan));
    }
    /**
     * å†…审年度计划新增
     * @return
     */
    @ApiOperation(value = "内审年度计划新增")
    @PostMapping("/addInternalPlan")
    public Result addInternalPlan(@RequestBody InternalPlanDto internalPlan){
        return Result.success(internalPlanService.addInternalPlan(internalPlan));
    }
    /**
     * å†…审年度计划修改
     * @return
     */
    @ApiOperation(value = "内审年度计划修改")
    @PostMapping("/updateInternalPlan")
    public Result updateInternalPlan(@RequestBody InternalPlanDto internalPlan){
        return Result.success(internalPlanService.updateInternalPlan(internalPlan));
    }
    /**
     * å†…审年度计划删除
     * @return
     */
    @ApiOperation(value = "内审年度计划删除")
    @DeleteMapping("/delInternalPlan")
    public Result delInternalPlan(Integer planId){
        return Result.success(internalPlanService.delInternalPlan(planId));
    }
    /**
     * å†…审年度计划查看详情
     * @return
     */
    @ApiOperation(value = "内审年度计划查看详情")
    @GetMapping("/getInternalPlanOne")
    public Result<InternalPlanDto> getInternalPlanOne(Integer planId){
        return Result.success(internalPlanService.getInternalPlanOne(planId));
    }
    /**
     * å†…审年度计划审核
     * @return
     */
    @ApiOperation(value = "内审年度计划审核")
    @PostMapping("/examineInternalPlan")
    public Result examineInternalPlan(@RequestBody InternalPlanDto internalPlanDto){
        return Result.success(internalPlanService.examineInternalPlan(internalPlanDto));
    }
    /**
     * å†…审年度计划批准
     * @return
     */
    @ApiOperation(value = "内审实施计划批准")
    @PostMapping("/ratifyInternalPlan")
    public Result ratifyInternalPlan(@RequestBody InternalPlanDto internalPlanDto){
        return Result.success(internalPlanService.ratifyInternalPlan(internalPlanDto));
    }
    /**
     * å¯¼å‡ºå†…审年度计划
     * @return
     */
    @ApiOperation(value = "导出内审年度计划")
    @GetMapping("/exportInternalPlan")
    public void exportInternalPlan(Integer planId, HttpServletResponse response){
        internalPlanService.exportInternalImplement(planId, response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package com.ruoyi.manage.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.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.InternalReport;
import com.ruoyi.manage.service.InternalReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * å†…审报告表
 *
 * @author makejava
 * @since 2024-11-11
 */
@Api(tags = "内审报告")
@AllArgsConstructor
@RestController
@RequestMapping("/internalReport")
public class InternalReportController {
    private InternalReportService internalReportService;
    /**
     * å†…审报告分页查询
     * @param
     * @return
     */
    @ApiOperation(value = "内审报告分页查询")
    @GetMapping("/pageInternalReport")
    public Result<IPage<InternalReport>> pageInternalReport(Page page,InternalReport internalReport) throws Exception {
        return Result.success(internalReportService.pageInternalReport(page, internalReport));
    }
    /**
     * å†…审报告新增
     * @return
     */
    @ApiOperation(value = "内审报告新增")
    @PostMapping("/addInternalReport")
    public Result addInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.save(internalReport));
    }
    /**
     * å†…审报告修改
     * @return
     */
    @ApiOperation(value = "内审报告修改")
    @PostMapping("/updateInternalReport")
    public Result updateInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.updateById(internalReport));
    }
    /**
     * å†…审报告删除
     * @return
     */
    @ApiOperation(value = "内审报告删除")
    @DeleteMapping("/delInternalReport")
    public Result delInternalReport(Integer reportId){
        return Result.success(internalReportService.removeById(reportId));
    }
    /**
     * å†…审报告查看详情
     * @return
     */
    @ApiOperation(value = "内审报告查看详情")
    @GetMapping("/getInternalReportOne")
    public Result<InternalReport> getInternalReportOne(Integer reportId){
        return Result.success(internalReportService.getById(reportId));
    }
    /**
     * å†…审检查审核
     * @return
     */
    @ApiOperation(value = "内审检查审核")
    @PostMapping("/examineInternalReport")
    public Result examineInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.ratifyInternalCheck(internalReport));
    }
    /**
     * å†…审报告质量负责人填写
     * @return
     */
    @ApiOperation(value = "内审报告质量负责人填写")
    @PostMapping("/qualityInternalReport")
    public Result qualityInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.qualityInternalReport(internalReport));
    }
    /**
     * å¯¼å‡ºå†…审报告
     * @return
     */
    @ApiOperation(value = "导出内审报告")
    @GetMapping("/exportInternalReport")
    public void exportInternalReport(Integer reportId, HttpServletResponse response){
        internalReportService.exportInternalReport(reportId, response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageControlPlanListController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
package com.ruoyi.manage.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.pojo.ManageControlPlanList;
import com.ruoyi.manage.service.ManageControlPlanListService;
import com.ruoyi.manage.vo.ManageControlPlanListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Map;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
@Api(tags = "重大风险因素分析及控制计划清单")
@RestController
@RequestMapping("/manageControlPlanList")
public class ManageControlPlanListController {
    @Resource
    private ManageControlPlanListService manageControlPlanListService;
    @ApiOperation(value = "分页查询")
    @GetMapping("/getPageList")
    public Result<IPage<ManageControlPlanListVo>> getPageList(Page page){
        IPage<ManageControlPlanListVo> ipage = manageControlPlanListService.getPageList(page);
        return Result.success(ipage);
    }
    @ApiOperation(value = "批准")
    @PostMapping("/approvalOfControlPlanChecklist")
    public Result<?> approvalOfControlPlanChecklist(@RequestBody Map<String, Integer> param){
        Integer approve = param.get("approve");
        Integer status= param.get("status");
        manageControlPlanListService.update(Wrappers.<ManageControlPlanList>lambdaUpdate()
                .set(ManageControlPlanList::getApprove, approve)
                .set(ManageControlPlanList::getApproveStatus, status)
                .set(ManageControlPlanList::getApproveDate, LocalDateTime.now()));
        return Result.success();
    }
    @ApiOperation(value = "审批")
    @PostMapping("/riskAnalysisApprovalOfControlPlanChecklist")
    public Result<?> riskAnalysisApprovalOfControlPlanChecklist(@RequestBody Map<String, Integer> param){
        Integer approval = param.get("approval");
        Integer status= param.get("status");
        manageControlPlanListService.update(Wrappers.<ManageControlPlanList>lambdaUpdate()
                .set(ManageControlPlanList::getApproval, approval)
                .set(ManageControlPlanList::getApprovalStatus, status)
                .set(ManageControlPlanList::getApprovalDate, LocalDateTime.now()));
        return Result.success();
    }
    @ApiOperation(value = "导入")
    @PostMapping("/importControlPlanList")
    public void importControlPlanList(MultipartFile file) throws IOException {
        boolean excelFile = isExcelFile(file);
        if (!excelFile) {
            throw new ErrorException("请导入excel文件!");
        }
        EasyExcel.read(file.getInputStream(), ManageControlPlanList.class, new PageReadListener<ManageControlPlanList>(dataList -> {
            Integer userId = SecurityUtils.getUserId().intValue();
            dataList.forEach(i -> {
                i.setEditor(userId);
                i.setEditorDate(LocalDateTime.now());
                i.setApproveStatus(0);
                i.setApprovalStatus(0);
            });
            manageControlPlanListService.saveOrUpdateBatch(dataList);
        })).sheet().doRead();
    }
    @ApiOperation(value = "新增")
    @PostMapping("/analysisOfMajorRiskFactorsAdded")
    public void analysisOfMajorRiskFactorsAdded(@RequestBody ManageControlPlanList manageControlPlanList) throws IOException {
        Integer userId = SecurityUtils.getUserId().intValue();
        manageControlPlanList.setEditor(userId);
        manageControlPlanList.setEditorDate(LocalDateTime.now());
        manageControlPlanListService.saveOrUpdate(manageControlPlanList);
    }
    @ApiOperation(value = "删除")
    @DeleteMapping("/deleteSignificantRiskFactorAnalysis")
    public void deleteSignificantRiskFactorAnalysis(Integer id) throws IOException {
        manageControlPlanListService.removeById(id);
    }
    /**
     * å¯¼å‡ºäººå‘˜åŸ¹è®­è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "重大风险因素分析及控制计划清单")
    @GetMapping("/exportSignificantRiskFactors")
    public void exportSignificantRiskFactors(HttpServletResponse response){
        manageControlPlanListService.exportPersonTraining(response);
    }
    public static boolean isExcelFile(MultipartFile file) {
        if (file.isEmpty()) {
            return false;
        }
        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null) {
            return false;
        }
        String[] parts = originalFilename.split("\\.");
        if (parts.length == 0) {
            return false;
        }
        String fileExtension = parts[parts.length - 1].toLowerCase();
        return fileExtension.equals("xls") || fileExtension.equals("xlsx");
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentAlterController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageDocumentAlter;
import com.ruoyi.manage.service.ManageDocumentAlterService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
@RestController
@RequestMapping("/manageDocumentAlter")
public class ManageDocumentAlterController {
    @Resource
    private ManageDocumentAlterService manageDocumentAlterService;
    @ApiOperation(value = "分页查询文件变更")
    @GetMapping("/pageManageDocumentAlter")
    public Result pageManageDocumentAlter(Page page,ManageDocumentAlter manageDocumentAlter) throws Exception {
        return Result.success(manageDocumentAlterService.pageManageDocumentAlter(page, manageDocumentAlter));
    }
    @ApiOperation(value = "删除文件变更")
    @DeleteMapping("/delManageDocumentAlter")
    public Result delManageDocumentAlter(Integer id){
        return Result.success(manageDocumentAlterService.delManageDocumentAlter(id));
    }
    @ApiOperation(value = "查看文件变更")
    @GetMapping("/getManageDocumentAlter")
    public Result getManageDocumentAlter(Integer id){
        return Result.success(manageDocumentAlterService.getManageDocumentAlter(id));
    }
    @ApiOperation(value = "新增文件变更")
    @PostMapping("/addManageDocumentAlter")
    public Result addManageDocumentAlter(ManageDocumentAlter manageDocumentAlter){
        return Result.success(manageDocumentAlterService.addManageDocumentAlter(manageDocumentAlter));
    }
    @ApiOperation(value = "编辑文件变更")
    @PostMapping("/doManageDocumentAlter")
    public Result doManageDocumentAlter(ManageDocumentAlter manageDocumentAlter){
        return Result.success(manageDocumentAlterService.doManageDocumentAlter(manageDocumentAlter));
    }
    @ApiOperation(value = "审核文件变更")
    @PostMapping("/checkManageDocumentAlter")
    public Result checkManageDocumentAlter(@RequestBody ManageDocumentAlter manageDocumentAlter){
        return Result.success(manageDocumentAlterService.checkManageDocumentAlter(manageDocumentAlter));
    }
    @ApiOperation(value = "审核查看附件")
    @GetMapping("/checkManageDocumentAlterPdf")
    public void checkManageDocumentAlterPdf(Long id, HttpServletResponse response)throws Exception {
        manageDocumentAlterService.checkManageDocumentAlterPdf(id,response);
    }
    @ApiOperation(value = "导出文件变更")
    @GetMapping("/exportManageDocumentAlter")
    public void exportManageDocumentAlter(ManageDocumentAlter manageDocumentAlter,HttpServletResponse response) throws Exception {
        manageDocumentAlterService.exportManageDocumentAlter(manageDocumentAlter,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentCancelController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageDocumentCancel;
import com.ruoyi.manage.service.ManageDocumentCancelService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
@RestController
@RequestMapping("/manageDocumentCancel")
public class ManageDocumentCancelController {
    @Resource
    private ManageDocumentCancelService manageDocumentCancelService;
    @ApiOperation(value = "分页查询文件作废")
    @GetMapping("/pageManageDocumentCancel")
    public Result pageManageDocumentCancel(Page page,ManageDocumentCancel manageDocumentCancel) throws Exception {
        return Result.success(manageDocumentCancelService.pageManageDocumentCancel(page, manageDocumentCancel));
    }
    @ApiOperation(value = "新增文件作废")
    @PostMapping("/addManageDocumentCancel")
    public Result addManageDocumentCancel(@RequestBody ManageDocumentCancel manageDocumentCancel) {
        return Result.success(manageDocumentCancelService.addManageDocumentCancel(manageDocumentCancel));
    }
    @ApiOperation(value = "审核文件作废")
    @PostMapping("/checkManageDocumentCancel")
    public Result checkManageDocumentCancel(@RequestBody Map<String, Object> param) {
        Integer id = (Integer) param.get("id");
        String state = (String) param.get("state");
        return Result.success(manageDocumentCancelService.checkManageDocumentCancel(id, state));
    }
    @ApiOperation(value = "删除文件作废")
    @DeleteMapping("/delManageDocumentCancel")
    public Result delManageDocumentCancel(Integer id) {
        return Result.success(manageDocumentCancelService.delManageDocumentCancel(id));
    }
    @ApiOperation(value = "查看文件作废")
    @GetMapping("/getManageDocumentCancel")
    public Result getManageDocumentCancel(Integer id) {
        return Result.success(manageDocumentCancelService.getManageDocumentCancel(id));
    }
    @ApiOperation(value = "编辑文件作废")
    @PostMapping("/doManageDocumentCancel")
    public Result doManageDocumentCancel(@RequestBody ManageDocumentCancel manageDocumentCancel) {
        return Result.success(manageDocumentCancelService.doManageDocumentCancel(manageDocumentCancel));
    }
    @ApiOperation(value = "导出文件作废")
    @GetMapping("/exportManageDocumentCancel")
    public void exportManageDocumentCancel(ManageDocumentCancel manageDocumentCancel,HttpServletResponse response) throws Exception {
        manageDocumentCancelService.exportManageDocumentCancel(manageDocumentCancel,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentControlledController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageDocumentControlled;
import com.ruoyi.manage.service.ManageDocumentControlledService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å—控 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
@RestController
@RequestMapping("/manageDocumentControlled")
public class ManageDocumentControlledController {
    @Resource
    private ManageDocumentControlledService manageDocumentControlledService;
    @ApiOperation(value = "分页查询文件受控")
    @GetMapping("/pageManageDocumentControlled")
    public Result pageManageDocumentControlled(Page page,ManageDocumentControlled manageDocumentControlled) throws Exception {
        return Result.success(manageDocumentControlledService.pageManageDocumentControlled(page, manageDocumentControlled));
    }
    @ApiOperation(value = "新增文件受控")
    @PostMapping("/addManageDocumentControlled")
    public Result addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled){
        return Result.success(manageDocumentControlledService.addManageDocumentControlled(manageDocumentControlled));
    }
    @ApiOperation(value = "查看文件受控")
    @GetMapping("/getManageDocumentControlled")
    public Result getManageDocumentControlled(Long id){
        return Result.success(manageDocumentControlledService.getManageDocumentControlled(id));
    }
    @ApiOperation(value = "编辑文件受控")
    @PostMapping("/doManageDocumentControlled")
    public Result doManageDocumentControlled(ManageDocumentControlled manageDocumentControlled){
        return Result.success(manageDocumentControlledService.doManageDocumentControlled(manageDocumentControlled));
    }
    @ApiOperation(value = "删除文件受控")
    @DeleteMapping("/delManageDocumentControlled")
    public Result delManageDocumentControlled(Long id){
        return Result.success(manageDocumentControlledService.delManageDocumentControlled(id));
    }
    @ApiOperation(value = "审核文件受控")
    @PostMapping("/checkManageDocumentControlled")
    public Result checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled){
        return Result.success(manageDocumentControlledService.checkManageDocumentControlled(manageDocumentControlled));
    }
    @ApiOperation(value = "审核查看附件")
    @GetMapping("/checkManageDocumentControlledPdf")
    public void checkManageDocumentControlledPdf(Long id, HttpServletResponse response)throws Exception {
        manageDocumentControlledService.checkManageDocumentControlledPdf(id,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentIssueRecycleController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.dto.ManageDocumentIssueRecycleDto;
import com.ruoyi.manage.pojo.ManageDocumentIssueRecycle;
import com.ruoyi.manage.service.ManageDocumentIssueRecycleService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
@RestController
@RequestMapping("/manageDocumentIssueRecycle")
public class ManageDocumentIssueRecycleController {
    @Resource
    private ManageDocumentIssueRecycleService manageDocumentIssueRecycleService;
    @ApiOperation(value = "分页查询文件发放回收")
    @GetMapping("/pageManageDocumentIssueRecycle")
    public Result pageManageDocumentIssueRecycle(Page page,ManageDocumentIssueRecycleDto  manageDocumentIssueRecycleDto) throws Exception {
        return Result.success(manageDocumentIssueRecycleService.pageManageDocumentIssueRecycle(page, manageDocumentIssueRecycleDto));
    }
    @ApiOperation(value = "新增文件发放回收")
    @PostMapping("/addManageDocumentIssueRecycle")
    public Result addManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle){
        return Result.success(manageDocumentIssueRecycleService.addManageDocumentIssueRecycle(manageDocumentIssueRecycle));
    }
    @ApiOperation(value = "删除文件发放回收")
    @DeleteMapping("/delManageDocumentIssueRecycle")
    public Result delManageDocumentIssueRecycle(Long id){
        return Result.success(manageDocumentIssueRecycleService.delManageDocumentIssueRecycle(id));
    }
    @ApiOperation(value = "查看文件发放回收")
    @GetMapping("/getManageDocumentIssueRecycle")
    public Result getManageDocumentIssueRecycle(Long id){
        return Result.success(manageDocumentIssueRecycleService.getManageDocumentIssueRecycle(id));
    }
    @ApiOperation(value = "编辑文件发放回收")
    @PostMapping("/doManageDocumentIssueRecycle")
    public Result doManageDocumentIssueRecycle(@RequestBody  ManageDocumentIssueRecycle manageDocumentIssueRecycle){
        return Result.success(manageDocumentIssueRecycleService.doManageDocumentIssueRecycle(manageDocumentIssueRecycle));
    }
    @ApiOperation(value = "审核文件发放回收")
    @PostMapping("/checkManageDocumentIssueRecycle")
    public Result checkManageDocumentIssueRecycle(@RequestBody ManageDocumentIssueRecycle manageDocumentIssueRecycle){
        return Result.success(manageDocumentIssueRecycleService.checkManageDocumentIssueRecycle(manageDocumentIssueRecycle.getId(),manageDocumentIssueRecycle.getDocumentState()));
    }
    @ApiOperation(value = "导出文件发放回收")
    @GetMapping("/exportManageDocumentIssueRecycle")
    public void exportManageDocumentIssueRecycle(ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto, HttpServletResponse response) throws Exception {
        manageDocumentIssueRecycleService.exportManageDocumentIssueRecycle(manageDocumentIssueRecycleDto,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentListController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.manage.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.excel.ManageDocumentListListener;
import com.ruoyi.manage.pojo.ManageDocumentList;
import com.ruoyi.manage.service.ManageDocumentListService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
@RestController
@RequestMapping("/manageDocumentList")
public class ManageDocumentListController {
    @Resource
    private ManageDocumentListService manageDocumentListService;
    @ApiOperation(value = "分页查询文件清单")
    @GetMapping("/pageManageDocumentList")
    public Result pageManageDocumentList(Page page,ManageDocumentList manageDocumentList) throws Exception {
        return Result.success(manageDocumentListService.pageManageDocumentList(page, manageDocumentList));
    }
    @ApiOperation(value = "编辑文件清单")
    @PostMapping("/doManageDocumentList")
    public Result doManageDocumentList(@RequestBody ManageDocumentList manageDocumentList) {
        return Result.success(manageDocumentListService.updateById(manageDocumentList));
    }
    @ApiOperation(value = "删除文件清单")
    @DeleteMapping("/delManageDocumentList")
    public Result delManageDocumentList(Integer id) {
        return Result.success(manageDocumentListService.removeById(id));
    }
    @ApiOperation(value = "上传附件-文件清单")
    @PostMapping("/uploadFileManageDocumentList")
    public Result uploadFileManageDocumentList(Integer id, MultipartFile file) {
        return Result.success(manageDocumentListService.uploadFile(id,file));
    }
    @ApiOperation(value = "导入文件清单列表")
    @PostMapping("/exportManageDocumentList")
    public Result exportManageDocumentList(MultipartFile file) {
        try {
            EasyExcel.read(file.getInputStream(), ManageDocumentList.class, new ManageDocumentListListener(manageDocumentListService)).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Result.success();
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageMeetingController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.manage.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.manage.dto.ManageMeetingDto;
import com.ruoyi.manage.service.ManageMeetingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
@Api(tags = "管理评审会议")
@RestController
@RequestMapping("/manageMeeting")
public class ManageMeetingController {
    @Resource
    private ManageMeetingService manageMeetingService;
    @ApiOperation(value = "管理评审会议记录查询")
    @GetMapping("/getPageMeeting")
    public Result<IPage<ManageMeetingDto>> getPageMeeting(Page page, String startTime, String endTime, String place) throws Exception {
        IPage<ManageMeetingDto> ipage = manageMeetingService.page(page,startTime,endTime,place);
        return Result.success(ipage);
    }
    @ApiOperation(value = "新增会议记录")
    @PostMapping("/addMeeting")
    public Result addMeeting(@RequestBody ManageMeetingDto dto){
        manageMeetingService.addMeeting(dto);
        return Result.success();
    }
    @ApiOperation(value = "编辑会议记录")
    @PostMapping("/modifyMeeting")
    public Result modifyMeeting(@RequestBody ManageMeetingDto manageMeetingDto){
        return Result.success(manageMeetingService.modifyMeeting(manageMeetingDto));
    }
    @ApiOperation(value = "删除会议记录")
    @DeleteMapping("/deleteMeeting")
    public Result deleteMeeting(Integer id){
        return Result.success(manageMeetingService.removeById(id));
    }
    @ApiOperation(value = "下载会议记录")
    @GetMapping("/exportMeeting")
    public void exportMeeting(Integer id, HttpServletResponse response){
        manageMeetingService.exportMeeting(id,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageMeetingParticipantsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.ruoyi.manage.controller;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.manage.pojo.ManageMeetingParticipants;
import com.ruoyi.manage.service.ManageMeetingParticipantsService;
import com.ruoyi.manage.vo.MeetingParticipantsDetailsVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
@Api(tags = "管理评审会议")
@RestController
@RequestMapping("/manageMeetingParticipants")
public class ManageMeetingParticipantsController {
    @Resource
    private ManageMeetingParticipantsService manageMeetingParticipantsService;
    @ApiOperation(value = "查询会议记录参会人员")
    @GetMapping("/getParticipants")
    public Result<MeetingParticipantsDetailsVo> getParticipants(Integer id){
        return Result.success(manageMeetingParticipantsService.getParticipants(id));
    }
    @ApiOperation(value = "新增会议记录参会人员")
    @PostMapping("/add")
    public Result addParticipants(@RequestBody List<ManageMeetingParticipants> list){
        manageMeetingParticipantsService.saveBatch(list);
        return Result.success();
    }
    @ApiOperation(value = "删除会议记录参会人员")
    @DeleteMapping("/delete")
    public Result deleteParticipants(List<Integer> ids){
        manageMeetingParticipantsService.removeByIds(ids);
        return Result.success();
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordAuditController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordAudit;
import com.ruoyi.manage.service.ManageRecordAuditService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
@RestController
@RequestMapping("/manageRecordAudit")
public class ManageRecordAuditController {
    @Resource
    private ManageRecordAuditService manageRecordAuditService;
    @ApiOperation(value = "分页查询文件修订申请审批记录")
    @GetMapping("/pageManageRecordAudit")
    public Result pageManageRecordAudit(Page page,ManageRecordAudit manageRecordAudit) throws Exception {
        return Result.success(manageRecordAuditService.pageManageRecordAudit(page, manageRecordAudit));
    }
    @ApiOperation(value = "新增文件修订申请审批记录")
    @PostMapping("/addManageRecordAudit")
    public Result addManageRecordAudit( ManageRecordAudit manageRecordAudit){
        return Result.success(manageRecordAuditService.addManageRecordAudit(manageRecordAudit));
    }
    @ApiOperation(value = "编辑文件修订申请审批记录")
    @PostMapping("/doManageRecordAudit")
    public Result doManageRecordAudit(ManageRecordAudit manageRecordAudit){
        return Result.success(manageRecordAuditService.doManageRecordAudit(manageRecordAudit));
    }
    @ApiOperation(value = "删除文件修订申请审批记录")
    @DeleteMapping("/delManageRecordAudit")
    public Result delManageRecordAudit(Integer id){
        return Result.success(manageRecordAuditService.removeById(id));
    }
    @ApiOperation(value = "批准文件修订申请审批记录")
    @PostMapping("/ratifyManageRecordAudit")
    public Result ratifyManageRecordAudit(@RequestBody Map<String, Integer> param){
        Integer id = param.get("id");
        return Result.success(manageRecordAuditService.ratifyManageRecordAudit(id));
    }
    @ApiOperation(value = "申请部门主管意见文件修订申请审批记录")
    @PostMapping("/manageRecordAudit1")
    public void manageRecordAudit1(){
    }
    @ApiOperation(value = "原制定部门意见文件修订申请审批记录")
    @PostMapping("/manageRecordAudit2")
    public void manageRecordAudit2(){
    }
    @ApiOperation(value = "原审核部门意见文件修订申请审批记录")
    @PostMapping("/manageRecordAudit3")
    public void manageRecordAudit3(){
    }
    @ApiOperation(value = "导出文件修订申请审批记录")
    @GetMapping("/exportOutManageRecordAudit")
    public Result exportOutManageRecordAudit(ManageRecordAudit manageRecordAudit, HttpServletResponse response) throws Exception {
        return Result.success(manageRecordAuditService.exportOutManageRecordAudit(manageRecordAudit,response));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCancelController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordCancel;
import com.ruoyi.manage.service.ManageRecordCancelService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.util.Map;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
@RestController
@RequestMapping("/manageRecordCancel")
public class ManageRecordCancelController {
    @Resource
    private ManageRecordCancelService manageRecordCancelService;
    @ApiOperation(value = "分页查询作废文件销毁记录")
    @GetMapping("/pageManageRecordCancel")
    public Result pageManageRecordCancel(Page page,ManageRecordCancel manageRecordCancel) throws Exception {
        return Result.success(manageRecordCancelService.pageManageRecordCancel(page, manageRecordCancel));
    }
    @ApiOperation(value = "新增作废文件销毁记录")
    @PostMapping("/addManageRecordCancel")
    public Result addManageRecordCancel(@RequestBody ManageRecordCancel manageRecordCancel){
        manageRecordCancel.setCreateTime(LocalDate.now());
        return Result.success(manageRecordCancelService.save(manageRecordCancel));
    }
    @ApiOperation(value = "编辑作废文件销毁记录")
    @PostMapping("/doManageRecordCancel")
    public Result doManageRecordCancel(@RequestBody ManageRecordCancel manageRecordCancel){
        return Result.success(manageRecordCancelService.updateById(manageRecordCancel));
    }
    @ApiOperation(value = "删除作废文件销毁记录")
    @DeleteMapping("/delManageRecordCancel")
    public Result delManageRecordCancel(Integer id){
        return Result.success(manageRecordCancelService.removeById(id));
    }
    @ApiOperation(value = "批准作废文件销毁记录")
    @PostMapping("/ratifyManageRecordCancel")
    public Result ratifyManageRecordCancel(@RequestBody Map<String, Object> param){
        Integer id = (Integer) param.get("id");
        String ratifyState = (String) param.get("ratifyState");
        return Result.success(manageRecordCancelService.ratifyManageRecordCancel(id,ratifyState));
    }
    @ApiOperation(value = "导出作废文件销毁记录")
    @GetMapping("/exportOutManageRecordCancel")
    public Result exportOutManageRecordCancel(ManageRecordCancel manageRecordCancel, HttpServletResponse response) throws Exception {
        return Result.success(manageRecordCancelService.exportOutManageRecordCancel(manageRecordCancel,response));
    }
    @ApiOperation(value = "导入作废文件销毁记录")
    @PostMapping("/exportInManageRecordCancel")
    public Result exportInManageRecordCancel(MultipartFile file){
        return Result.success(manageRecordCancelService.exportInManageRecordCancel(file));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCheckController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import com.ruoyi.manage.service.ManageRecordCheckService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
@RestController
@RequestMapping("/manageRecordCheck")
public class ManageRecordCheckController {
    @Resource
    private ManageRecordCheckService manageRecordCheckService;
    @ApiOperation(value = "分页查询文件审批记录")
    @GetMapping("/pageManageRecordCheck")
    public Result pageManageRecordCheck(Page page,ManageRecordCheck manageRecordCheck) throws Exception {
        return Result.success(manageRecordCheckService.pageManageRecordCheck(page, manageRecordCheck));
    }
    @ApiOperation(value = "新增文件审批记录")
    @PostMapping("/addManageRecordCheck")
    public Result addManageRecordCheck(@RequestBody ManageRecordCheck manageRecordCheck) {
        return Result.success(manageRecordCheckService.save(manageRecordCheck));
    }
    @ApiOperation(value = "编辑文件审批记录")
    @PostMapping("/doManageRecordCheck")
    public Result doManageRecordCheck(@RequestBody ManageRecordCheck manageRecordCheck) {
        return Result.success(manageRecordCheckService.updateById(manageRecordCheck));
    }
    @ApiOperation(value = "删除文件审批记录")
    @DeleteMapping("/delManageRecordCheck")
    public Result delManageRecordCheck(Integer id) {
        return Result.success(manageRecordCheckService.removeById(id));
    }
    @ApiOperation(value = "审核文件审批记录")
    @PostMapping("/checkManageRecordCheck")
    public Result checkManageRecordCheck(@RequestBody Map<String, Object> param) {
        Integer id = (Integer) param.get("id");
        String checkState = (String) param.get("checkState");
        return Result.success(manageRecordCheckService.checkManageRecordCheck(id,checkState));
    }
    @ApiOperation(value = "批准文件审批记录")
    @PostMapping("/ratifyManageRecordCheck")
    public Result ratifyManageRecordCheck(@RequestBody Map<String, Object> param) {
        Integer id = (Integer) param.get("id");
        String ratifyState = (String) param.get("ratifyState");
        return Result.success(manageRecordCheckService.ratifyManageRecordCheck(id,ratifyState));
    }
    @ApiOperation(value = "导出文件审批记录")
    @GetMapping("/exportOutManageRecordCheck")
    public Result exportOutManageRecordCheck(ManageRecordCheck manageRecordCheck, HttpServletResponse response) throws Exception {
        return Result.success(manageRecordCheckService.exportOutManageRecordCheck(manageRecordCheck,response));
    }
    @ApiOperation(value = "导入文件审批记录")
    @PostMapping("/exportInManageRecordCheck")
    public Result exportInManageRecordCheck(MultipartFile file){
        return Result.success(manageRecordCheckService.exportInManageRecordCheck(file));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordIntervals;
import com.ruoyi.manage.service.ManageRecordIntervalsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
@Api(tags = "记录的控制")
@RestController
@RequestMapping("/manageRecordIntervals")
public class ManageRecordIntervalsController {
    @Resource
    private ManageRecordIntervalsService manageRecordIntervalsService;
    @ApiOperation(value = "分页查询文件定期审查记录")
    @GetMapping("/pageManageRecordIntervals")
    public Result pageManageRecordIntervals(Page page,ManageRecordIntervals manageRecordIntervals) throws Exception {
        return Result.success(manageRecordIntervalsService.pageManageRecordIntervals(page, manageRecordIntervals));
    }
    @ApiOperation(value = "新增文件定期审查记录")
    @PostMapping("/addManageRecordIntervals")
    public Result addManageRecordIntervals(@RequestBody ManageRecordIntervals manageRecordIntervals) {
        return Result.success(manageRecordIntervalsService.addManageRecordIntervals(manageRecordIntervals));
    }
    @ApiOperation(value = "编辑文件定期审查记录")
    @PostMapping("/doManageRecordIntervals")
    public Result doManageRecordIntervals(@RequestBody ManageRecordIntervals manageRecordIntervals) {
        return Result.success(manageRecordIntervalsService.updateById(manageRecordIntervals));
    }
    @ApiOperation(value = "删除文件定期审查记录")
    @DeleteMapping("/delManageRecordIntervals")
    public Result delManageRecordIntervals(Integer id) {
        return Result.success(manageRecordIntervalsService.delManageRecordIntervals(id));
    }
    @ApiOperation(value = "导出文件定期审查记录")
    @GetMapping("/exportOutManageRecordIntervals")
    public Result exportOutManageRecordIntervals(ManageRecordIntervals manageRecordIntervals, HttpServletResponse response) throws Exception {
        return Result.success(manageRecordIntervalsService.exportOutManageRecordIntervals(manageRecordIntervals,response));
    }
    @ApiOperation(value = "导入文件定期审查记录")
    @PostMapping("/exportInManageRecordIntervals")
    public Result exportInManageRecordIntervals(MultipartFile file){
        return Result.success(manageRecordIntervalsService.exportInManageRecordIntervals(file));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsTotalController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordIntervalsTotal;
import com.ruoyi.manage.service.ManageRecordIntervalsTotalService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
@RestController
@RequestMapping("/manageRecordIntervalsTotal")
public class ManageRecordIntervalsTotalController {
    @Resource
    private ManageRecordIntervalsTotalService manageRecordIntervalsTotalService;
    @ApiOperation(value = "查询文件定期审查记录历史列表")
    @GetMapping("/pageManageRecordIntervalsTotal")
    public Result pageManageRecordIntervalsTotal(Page page,ManageRecordIntervalsTotal manageRecordIntervalsTotal) throws Exception {
        return Result.success(manageRecordIntervalsTotalService.pageManageRecordIntervalsTotal(page, manageRecordIntervalsTotal));
    }
    @ApiOperation(value = "提交文件定期审查记录历史列表")
    @PostMapping("/submitManageRecordIntervalsTotal")
    public Result submitManageRecordIntervalsTotal(@RequestBody Map<String, Integer> param) {
        Integer id = param.get("id");
        return Result.success(manageRecordIntervalsTotalService.submitManageRecordIntervalsTotal(id));
    }
    @ApiOperation(value = "批准文件定期审查记录历史列表")
    @PostMapping("/ratifyManageRecordIntervalsTotal")
    public Result ratifyManageRecordIntervalsTotal(@RequestBody Map<String, Object> param) {
        Integer id = (Integer) param.get("id");
        String ratifyState = (String) param.get("ratifyState");
        return Result.success(manageRecordIntervalsTotalService.ratifyManageRecordIntervalsTotal(id, ratifyState));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIssueRecycleController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordIssueRecycle;
import com.ruoyi.manage.service.ManageRecordIssueRecycleService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
@RestController
@RequestMapping("/manageRecordIssueRecycle")
public class ManageRecordIssueRecycleController {
    @Resource
    private ManageRecordIssueRecycleService manageRecordIssueRecycleService;
    @ApiOperation(value = "分页查询所有文件的发放与回收记录")
    @GetMapping("/pageManageRecordIssueRecycle")
    public Result pageManageRecordIssueRecycle(Page page,ManageRecordIssueRecycle manageRecordIssueRecycle) throws Exception {
        return Result.success(manageRecordIssueRecycleService.pageManageRecordIssueRecycle(page, manageRecordIssueRecycle));
    }
    @ApiOperation(value = "删除所有文件的发放与回收记录")
    @DeleteMapping("/delManageRecordIssueRecycle")
    public Result delManageRecordIssueRecycle(Integer id){
        return Result.success(manageRecordIssueRecycleService.removeById(id));
    }
    @ApiOperation(value = "新增所有文件的发放与回收记录")
    @PostMapping("/addManageRecordIssueRecycle")
    public Result addManageRecordIssueRecycle(@RequestBody ManageRecordIssueRecycle manageRecordIssueRecycle){
        return Result.success(manageRecordIssueRecycleService.addManageRecordIssueRecycle(manageRecordIssueRecycle));
    }
    @ApiOperation(value = "编辑所有文件的发放与回收记录")
    @PostMapping("/doManageRecordIssueRecycle")
    public Result doManageRecordIssueRecycle(@RequestBody ManageRecordIssueRecycle manageRecordIssueRecycle){
        return Result.success(manageRecordIssueRecycleService.doManageRecordIssueRecycle(manageRecordIssueRecycle));
    }
    @ApiOperation(value = "导出所有文件的发放与回收记录")
    @GetMapping("/exportOutManageRecordIssueRecycle")
    public Result exportOutManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle, HttpServletResponse response) throws Exception {
        return Result.success(manageRecordIssueRecycleService.exportOutManageRecordIssueRecycle(manageRecordIssueRecycle,response));
    }
    @ApiOperation(value = "导入所有文件的发放与回收记录")
    @PostMapping("/exportInManageRecordIssueRecycle")
    public Result exportInManageRecordIssueRecycle(MultipartFile file){
        return Result.success(manageRecordIssueRecycleService.exportInManageRecordIssueRecycle(file));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordTotalController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordTotal;
import com.ruoyi.manage.service.ManageRecordTotalService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
@RestController
@RequestMapping("/manageRecordTotal")
public class ManageRecordTotalController {
    @Resource
    private ManageRecordTotalService manageRecordTotalService;
    @ApiOperation(value = "查询外来文件确认记录历史列表")
    @GetMapping("/pageManageRecordTotal")
    public Result pageManageRecordTotal(Page page, ManageRecordTotal manageRecordTotal) throws Exception {
        return Result.success(manageRecordTotalService.pageManageRecordTotal(page, manageRecordTotal));
    }
    @ApiOperation(value = "提交外来文件确认记录历史列表")
    @PostMapping("/submitManageRecordTotal")
    public Result submitManageRecordTotal(@RequestBody Map<String, Integer> param) {
        Integer id = param.get("id");
        return Result.success(manageRecordTotalService.submitManageRecordTotal(id));
    }
    @ApiOperation(value = "批准外来文件确认记录历史列表")
    @PostMapping("/ratifyManageRecordTotal")
    public Result ratifyManageRecordTotal(@RequestBody Map<String, Object> param) {
        Integer id = (Integer) param.get("id");
        String ratifyState = (String) param.get("ratifyState");
        return Result.success(manageRecordTotalService.ratifyManageRecordTotal(id, ratifyState));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordVerifyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.manage.pojo.ManageRecordVerify;
import com.ruoyi.manage.service.ManageRecordVerifyService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
@RestController
@RequestMapping("/manageRecordVerify")
public class ManageRecordVerifyController {
    @Resource
    private ManageRecordVerifyService manageRecordVerifyService;
    @ApiOperation(value = "查询外来文件确认记录详情")
    @GetMapping("/pageManageRecordVerify")
    public Result pageManageRecordVerify(Page page,ManageRecordVerify manageRecordVerify) throws Exception {
        return Result.success(manageRecordVerifyService.pageManageRecordVerify(page, manageRecordVerify));
    }
    @ApiOperation(value = "新增外来文件确认记录")
    @PostMapping("/addManageRecordVerify")
    public Result addManageRecordVerify(@RequestBody ManageRecordVerify manageRecordVerify) {
        return Result.success(manageRecordVerifyService.addManageRecordVerify(manageRecordVerify));
    }
    @ApiOperation(value = "删除外来文件确认记录")
    @DeleteMapping("/delManageRecordVerify")
    public Result delManageRecordVerify(Integer id) {
        return Result.success(manageRecordVerifyService.delManageRecordVerify(id));
    }
    @ApiOperation(value = "修改外来文件确认记录")
    @PostMapping("/doManageRecordVerify")
    public Result doManageRecordVerify(@RequestBody ManageRecordVerify manageRecordVerify) {
        return Result.success(manageRecordVerifyService.updateById(manageRecordVerify));
    }
    @ApiOperation(value = "导入外来文件确认记录")
    @PostMapping("/exportManageRecordVerify")
    public Result exportManageRecordVerify(MultipartFile file) {
        return Result.success(manageRecordVerifyService.exportManageRecordVerify(file));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.manage.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.manage.pojo.ManageReviewProgram;
import com.ruoyi.manage.service.ManageReviewProgramService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
@Api(tags = "管理评审计划")
@RestController
@RequestMapping("/manageReviewProgram")
public class ManageReviewProgramController {
    @Resource
    private ManageReviewProgramService manageReviewProgramService;
    @ApiOperation(value = "查询评审计划")
    @GetMapping("/getPageReviewProgram")
    public Result<IPage<ManageReviewProgram>> getPageReviewProgram(Page page, String startTime, String endTime, String judgingLocation) throws Exception {
        IPage<ManageReviewProgram> ipage = manageReviewProgramService.page(page,startTime,endTime,judgingLocation);
        return Result.success(ipage);
    }
    @ApiOperation(value = "新增评审计划")
    @PostMapping("/addReviewProgram")
    public Result addReviewProgram(@RequestBody ManageReviewProgram manageReviewProgram){
        return Result.success(manageReviewProgramService.addReviewProgram(manageReviewProgram));
    }
    @ApiOperation(value = "编辑评审计划")
    @PostMapping("/modifyReviewProgram")
    public Result modifyReviewProgram(@RequestBody ManageReviewProgram manageReviewProgram){
        return Result.success(manageReviewProgramService.updateById(manageReviewProgram));
    }
    @ApiOperation(value = "删除评审计划")
    @DeleteMapping("/deleteReviewProgram")
    public Result deleteReviewProgram( Integer id){
        return Result.success(manageReviewProgramService.removeById(id));
    }
    @ApiOperation(value = "下载评审计划")
    @GetMapping("/exportReviewProgram")
    public void exportReviewProgram(Integer id, HttpServletResponse response){
        manageReviewProgramService.exportReviewProgram(id,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramFileController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.manage.controller;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.manage.service.ManageReviewProgramFileService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
@RestController
@RequestMapping("/manageReviewProgramFile")
public class ManageReviewProgramFileController {
    @Resource
    private ManageReviewProgramFileService manageReviewProgramFileService;
    @ApiOperation(value = "查询评审计划文件")
    @GetMapping("/selectReviewProgramFile")
    public Result selectReviewProgramFile(Integer id){
        return Result.success(manageReviewProgramFileService.selectFile(id));
    }
    @ApiOperation(value = "新增评审计划文件")
    @PostMapping("/addReviewProgramFile")
    public Result addReviewProgramFile(MultipartFile file,Integer id){
        manageReviewProgramFileService.addFile(file,id);
        return Result.success();
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.manage.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.manage.pojo.ManageReviewReport;
import com.ruoyi.manage.service.ManageReviewReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * ç®¡ç†è¯„审报告 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
@Api(tags = "管理评审报告")
@RestController
@RequestMapping("/manageReviewReport")
public class ManageReviewReportController {
    @Resource
    private ManageReviewReportService manageReviewReportService;
    @ApiOperation(value = "查询管理评审报告")
    @GetMapping("/getPageReviewReport")
    public Result<IPage<ManageReviewReport>> getPageReviewReport(Page page, String startTime, String endTime, String place) {
        IPage<ManageReviewReport> ipage = manageReviewReportService.page(page,startTime,endTime,place);
        return Result.success(ipage);
    }
    @ApiOperation(value = "新增管理评审报告")
    @PostMapping("/addReviewReport")
    public Result addReviewReport(@RequestBody ManageReviewReport manageReviewReport){
        return Result.success(manageReviewReportService.save(manageReviewReport));
    }
    @ApiOperation(value = "编辑管理评审报告")
    @PostMapping("/modifyReviewReport")
    public Result modifyReviewReport(@RequestBody ManageReviewReport manageReviewReport){
        return Result.success(manageReviewReportService.updateById(manageReviewReport));
    }
    @ApiOperation(value = "删除管理评审报告")
    @DeleteMapping("/deleteReviewReport")
    public Result deleteReviewReport(Integer id){
        return Result.success(manageReviewReportService.removeById(id));
    }
    @ApiOperation(value = "下载管理评审报告")
    @GetMapping("/exportReviewReport")
    public void exportReviewReport(Integer id , HttpServletResponse response){
        manageReviewReportService.exportReviewReport(id,response);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRiskAssessmentResultsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.ruoyi.manage.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.enums.CellExtraTypeEnum;
import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.pojo.ManageRiskAssessmentResults;
import com.ruoyi.manage.service.ManageRiskAssessmentResultsService;
import com.ruoyi.manage.vo.ManageRiskAssessmentResultsVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Map;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
@Api(tags = "危险因素辨识与风险评价结果一览表")
@RestController
@RequestMapping("/manageRiskAssessmentResults")
public class ManageRiskAssessmentResultsController {
    @Resource
    private ManageRiskAssessmentResultsService manageRiskAssessmentResultsService;
    @ApiOperation(value = "分页查询")
    @GetMapping("/getPageResults")
    public Result<IPage<ManageRiskAssessmentResultsVo>> getPageResults(Page page) {
        IPage<ManageRiskAssessmentResultsVo> ipage = manageRiskAssessmentResultsService.getPageResults(page);
        return Result.success(ipage);
    }
    @ApiOperation(value = "批准")
    @PostMapping("/hazardIdentificationAndRiskApproval")
    public Result<?> hazardIdentificationAndRiskApproval(@RequestBody Map<String, Integer> param) {
        Integer approve = param.get("approve");
        Integer status = param.get("status");
        manageRiskAssessmentResultsService.update(Wrappers.<ManageRiskAssessmentResults>lambdaUpdate()
                .set(ManageRiskAssessmentResults::getApprove, approve)
                .set(ManageRiskAssessmentResults::getApproveStatus, status)
                .set(ManageRiskAssessmentResults::getApproveDate, LocalDateTime.now()));
        return Result.success();
    }
    @ApiOperation(value = "审批")
    @PostMapping("/dangerousRiskApproval")
    public Result<?> dangerousRiskApproval(@RequestBody Map<String, Integer> param) {
        Integer approval = param.get("approval");
        Integer status = param.get("status");
        manageRiskAssessmentResultsService.update(Wrappers.<ManageRiskAssessmentResults>lambdaUpdate()
                .set(ManageRiskAssessmentResults::getApproval, approval)
                .set(ManageRiskAssessmentResults::getApprovalStatus, status)
                .set(ManageRiskAssessmentResults::getApprovalDate, LocalDateTime.now()));
        return Result.success();
    }
    @ApiOperation(value = "导入")
    @PostMapping("/riskAssessmentImport")
    public void riskAssessmentImport(MultipartFile file) throws IOException {
        boolean excelFile = isExcelFile(file);
        if (!excelFile) {
            throw new ErrorException("请导入excel文件!");
        }
        EasyExcel.read(file.getInputStream(), ManageRiskAssessmentResults.class, new PageReadListener<ManageRiskAssessmentResults>(dataList -> {
            Integer userId = SecurityUtils.getUserId().intValue();
            dataList.forEach(i -> {
                i.setEditor(userId);
                i.setEditorDate(LocalDateTime.now());
                i.setApproveStatus(0);
                i.setApprovalStatus(0);
            });
            manageRiskAssessmentResultsService.saveOrUpdateBatch(dataList);
        })).extraRead(CellExtraTypeEnum.MERGE).sheet().doRead();
    }
    @ApiOperation(value = "新增")
    @PostMapping("/addNewRiskFactors")
    public void addNewRiskFactors(@RequestBody ManageRiskAssessmentResults manageRiskAssessmentResults) {
        Integer userId = SecurityUtils.getUserId().intValue();
        manageRiskAssessmentResults.setEditor(userId);
        manageRiskAssessmentResults.setEditorDate(LocalDateTime.now());
        manageRiskAssessmentResultsService.saveOrUpdate(manageRiskAssessmentResults);
    }
    @ApiOperation(value = "删除")
    @DeleteMapping("/removeRiskFactors")
    public void removeRiskFactors(Integer id) {
        manageRiskAssessmentResultsService.removeById(id);
    }
    /**
     * å¯¼å‡ºäººå‘˜åŸ¹è®­è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "导出危险因素辨识与风险评价结果一览")
    @GetMapping("/exportHazardFactorIdentification")
    public void exportPersonTraining(HttpServletResponse response){
        manageRiskAssessmentResultsService.exportPersonTraining(response);
    }
    public static boolean isExcelFile(MultipartFile file) {
        if (file.isEmpty()) {
            return false;
        }
        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null) {
            return false;
        }
        String[] parts = originalFilename.split("\\.");
        if (parts.length == 0) {
            return false;
        }
        String fileExtension = parts[parts.length - 1].toLowerCase();
        return fileExtension.equals("xls") || fileExtension.equals("xlsx");
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/ClientSatisfactionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.ClientSatisfaction;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-16 æ˜ŸæœŸä¸€ 10:38:30
 * Description: å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥å¯¼å‡ºWord
 */
@Data
public class ClientSatisfactionDto extends ClientSatisfaction {
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private String serviceAttitude0;
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private String serviceAttitude1;
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private String serviceAttitude2;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private String technicalCompetence0;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private String technicalCompetence1;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private String technicalCompetence2;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private String inspectionWork0;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private String inspectionWork1;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private String inspectionWork2;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private String reasonableFees0;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private String reasonableFees1;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private String reasonableFees2;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalCheckDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.InternalCheck;
import com.ruoyi.manage.pojo.InternalCheckDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/11
 */
@Data
public class InternalCheckDto extends InternalCheck {
    @ApiModelProperty("检查详情")
    private List<InternalCheckDetail> checkDetailList;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalCorrectDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.InternalCorrect;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2024/11/19
 */
@Data
public class InternalCorrectDto extends InternalCorrect {
    @ApiModelProperty("提出时间")
    private String raiseTimeString;
    @ApiModelProperty("原因分析时间")
    private String causeTimeString;
    @ApiModelProperty("纠正时间")
    private String correctTimeString;
    @ApiModelProperty("验证时间")
    private String validationTimeString;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalImplementDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.InternalImplement;
import com.ruoyi.manage.pojo.InternalImplementDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/11
 */
@Data
public class InternalImplementDto extends InternalImplement {
    @ApiModelProperty("计划详情")
    private List<InternalImplementDetail> implementDetailList;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalMeetingDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.InternalMeeting;
import com.ruoyi.manage.pojo.InternalMeetingDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/12
 */
@Data
public class InternalMeetingDto extends InternalMeeting {
    @ApiModelProperty("参加人")
    private List<InternalMeetingDetail> meetingDetailList;
    @ApiModelProperty("参加人信息")
    private String participantName;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalMeetingParticipantDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.manage.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å‚加人员对象
 *
 * @Author zhuo
 * @Date 2024/11/19
 */
@Data
public class InternalMeetingParticipantDto {
    @ApiModelProperty("参加人员1")
    private String userName1;
    @ApiModelProperty("部门1")
    private String department1;
    @ApiModelProperty("参加人员2")
    private String userName2;
    @ApiModelProperty("部门2")
    private String department2;
    @ApiModelProperty("参加人员3")
    private String userName3;
    @ApiModelProperty("部门3")
    private String department3;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalPlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.InternalPlan;
import com.ruoyi.manage.pojo.InternalPlanDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/13
 */
@Data
public class InternalPlanDto extends InternalPlan {
    @ApiModelProperty("计划详情")
    private List<InternalPlanDetail> planDetailList;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageDocumentIssueRecycleDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.manage.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.manage.pojo.ManageDocumentIssueRecycle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ExcelIgnoreUnannotated
public class ManageDocumentIssueRecycleDto extends ManageDocumentIssueRecycle {
    @ApiModelProperty("发放人")
    @ExcelProperty(value = "发放人")
    private String issueUserName;
    @ApiModelProperty("回收人")
    @ExcelProperty(value = "回收人")
    private String recycleUserName;
    @ApiModelProperty("接收人")
    @ExcelProperty(value = "接收人")
    private String receiveUserName;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageMeetingDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.dto;
import com.ruoyi.manage.pojo.ManageMeeting;
import com.ruoyi.manage.pojo.ManageMeetingParticipants;
import lombok.Data;
import java.util.List;
@Data
public class ManageMeetingDto extends ManageMeeting {
    private List<ManageMeetingParticipants> list;
    private String participant;
}
cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageMeetingParticipantsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ManageMeetingParticipantsDto {
    @ApiModelProperty("参加人员1")
    private String userName1;
    @ApiModelProperty("部门1")
    private String department1;
    @ApiModelProperty("参加人员2")
    private String userName2;
    @ApiModelProperty("部门2")
    private String department2;
}
cnas-manage/src/main/java/com/ruoyi/manage/excel/ManageDocumentListListener.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.ruoyi.manage.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.ruoyi.manage.pojo.ManageDocumentList;
import com.ruoyi.manage.service.ManageDocumentListService;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ManageDocumentListListener extends AnalysisEventListener<ManageDocumentList> {
    private static final int BATCH_COUNT = 1000;
    List<ManageDocumentList> list = new ArrayList<>();
    private ManageDocumentListService manageDocumentListService;
    public ManageDocumentListListener(ManageDocumentListService manageDocumentListService) {
        this.manageDocumentListService = manageDocumentListService;
    }
    @Override
    public void invoke(ManageDocumentList data, AnalysisContext analysisContext) {
        list.add(data);
        if (list.size() >= BATCH_COUNT) {
            save();
            list.clear();
        }
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        save();
    }
    private void save() {
        manageDocumentListService.importExcel(list);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ClientSatisfactionAnalyseFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ClientSatisfactionAnalyseFile;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å®¢æˆ·æ»¡æ„åº¦åˆ†æžé™„ä»¶
 *
 * @author makejava
 * @since 2024-11-09
 */
@Mapper
public interface ClientSatisfactionAnalyseFileMapper extends BaseMapper<ClientSatisfactionAnalyseFile> {
    /**
     * å®¢æˆ·åˆ†æžé™„件列表
     * @param page
     * @return
     */
    IPage<ClientSatisfactionAnalyseFile> pageAnalyseFile(Page page, @Param("ew") QueryWrapper<ClientSatisfactionAnalyseFile> ew);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ClientSatisfactionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.dto.ClientSatisfactionDto;
import com.ruoyi.manage.pojo.ClientSatisfaction;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Mapper
public interface ClientSatisfactionMapper extends BaseMapper<ClientSatisfaction> {
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     * @param page
     * @param ew
     * @return
     */
    IPage<ClientSatisfaction> pageClientSatisfaction(Page page, @Param("ew") QueryWrapper<ClientSatisfaction> ew);
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     * @param clientSatisfactionId
     * @return
     */
    ClientSatisfactionDto exportWordClientSatisfaction(Integer clientSatisfactionId);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCheckDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.InternalCheckDetail;
import org.apache.ibatis.annotations.Mapper;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalCheckDetailMapper extends BaseMapper<InternalCheckDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCheckMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.dto.InternalCheckDto;
import com.ruoyi.manage.pojo.InternalCheck;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalCheckMapper extends BaseMapper<InternalCheck> {
    /**
     * å†…审检查分页查询
     * @param page
     * @return
     */
    IPage<InternalCheckDto> pageInternalCheck(Page page, @Param("ew") QueryWrapper<InternalCheck> ew);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCorrectFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.InternalCorrectFile;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å†…审管理纠正措施附件表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
@Mapper
public interface InternalCorrectFileMapper extends BaseMapper<InternalCorrectFile> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCorrectMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.InternalCorrect;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å†…审管理纠正处理表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Mapper
public interface InternalCorrectMapper extends BaseMapper<InternalCorrect> {
    IPage<InternalCorrect> pageInternalAccording(Page page, @Param("ew") QueryWrapper<InternalCorrect> ew);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalImplementDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.InternalImplementDetail;
import org.apache.ibatis.annotations.Mapper;
/**
 * å†…审实施计划详情
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalImplementDetailMapper extends BaseMapper<InternalImplementDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalImplementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.dto.InternalImplementDto;
import com.ruoyi.manage.pojo.InternalImplement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalImplementMapper extends BaseMapper<InternalImplement> {
    /**
     * å†…审实施计划分页查询
     * @param page
     * @return
     */
    IPage<InternalImplementDto> pageInternalImplement(Page page, @Param("ew") QueryWrapper<InternalImplement> ew);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalMeetingDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.InternalMeetingDetail;
/**
 * <p>
 * å†…审会议详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
public interface InternalMeetingDetailMapper extends BaseMapper<InternalMeetingDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalMeetingMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.dto.InternalMeetingDto;
import com.ruoyi.manage.pojo.InternalMeeting;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å†…审会议表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
public interface InternalMeetingMapper extends BaseMapper<InternalMeeting> {
    /**
     * å†…审会议分页查询
     * @param page
     * @return
     */
    IPage<InternalMeetingDto> pageInternalMeeting(Page page, @Param("ew") QueryWrapper<InternalMeeting> ew);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalPlanDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.InternalPlanDetail;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å†…审年度计划详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
@Mapper
public interface InternalPlanDetailMapper extends BaseMapper<InternalPlanDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalPlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.dto.InternalPlanDto;
import com.ruoyi.manage.pojo.InternalPlan;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å†…审年度计划 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Mapper
public interface InternalPlanMapper extends BaseMapper<InternalPlan> {
    /**
     * å†…审年度计划分页查询
     * @param page
     * @param ew
     * @return
     */
    IPage<InternalPlanDto> pageInternalPlan(Page page, @Param("ew") QueryWrapper<InternalPlan> ew);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalReportMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.InternalReport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalReportMapper extends BaseMapper<InternalReport> {
    /**
     * å†…审报告分页查询
     * @param page
     * @param internalReportQueryWrapper
     * @return
     */
    IPage<InternalReport> pageInternalReport(Page page, @Param("ew") QueryWrapper<InternalReport> internalReportQueryWrapper);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageControlPlanListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.mapper;
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.manage.pojo.ManageControlPlanList;
import com.ruoyi.manage.vo.ManageControlPlanListVo;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
public interface ManageControlPlanListMapper extends BaseMapper<ManageControlPlanList> {
    IPage<ManageControlPlanListVo> getPageList(Page page, @Param("itSExporting") Boolean itSExporting);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentAlterMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageDocumentAlter;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
public interface ManageDocumentAlterMapper extends BaseMapper<ManageDocumentAlter> {
    IPage<ManageDocumentAlter> pageManageDocumentAlter(Page page, @Param("ew") QueryWrapper<ManageDocumentAlter> queryWrappers);
    ManageDocumentAlter getManageDocumentAlter(Integer id);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentCancelMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageDocumentCancel;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
public interface ManageDocumentCancelMapper extends BaseMapper<ManageDocumentCancel> {
    IPage<ManageDocumentCancel> pageManageDocumentCancel(Page page, @Param("ew") QueryWrapper<ManageDocumentCancel> queryWrappers);
    ManageDocumentCancel getManageDocumentCancel(Integer id);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentControlledMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageDocumentControlled;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å—控 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
public interface ManageDocumentControlledMapper extends BaseMapper<ManageDocumentControlled> {
    IPage<ManageDocumentControlled> pageManageDocumentControlled(Page page, @Param("ew") QueryWrapper<ManageDocumentControlled> queryWrappers);
    ManageDocumentControlled getManageDocumentControlled(Long id);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentIssueRecycleMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.dto.ManageDocumentIssueRecycleDto;
import com.ruoyi.manage.pojo.ManageDocumentIssueRecycle;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
public interface ManageDocumentIssueRecycleMapper extends BaseMapper<ManageDocumentIssueRecycle> {
    IPage<ManageDocumentIssueRecycleDto> pageManageDocumentIssueRecycle(Page page, @Param("ew") QueryWrapper<ManageDocumentIssueRecycleDto> queryWrappers);
    ManageDocumentIssueRecycleDto getManageDocumentIssueRecycle(Long id);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageDocumentList;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
public interface ManageDocumentListMapper extends BaseMapper<ManageDocumentList> {
    IPage<ManageDocumentList> pageManageDocumentList(Page page, @Param("ew") QueryWrapper<ManageDocumentList> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageMeetingMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.manage.mapper;
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.manage.dto.ManageMeetingDto;
import com.ruoyi.manage.pojo.ManageMeeting;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
public interface ManageMeetingMapper extends BaseMapper<ManageMeeting> {
    IPage<ManageMeetingDto> page(Page page, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("place") String place);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageMeetingParticipantsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.ManageMeetingParticipants;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
public interface ManageMeetingParticipantsMapper extends BaseMapper<ManageMeetingParticipants> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordAuditMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordAudit;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
public interface ManageRecordAuditMapper extends BaseMapper<ManageRecordAudit> {
    IPage<ManageRecordAudit> pageManageRecordAudit(Page page, @Param("ew") QueryWrapper<ManageRecordAudit> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordCancelMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordCancel;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
public interface ManageRecordCancelMapper extends BaseMapper<ManageRecordCancel> {
    IPage<ManageRecordCancel> pageManageRecordCancel(Page page, @Param("ew") QueryWrapper<ManageRecordCancel> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordCheckMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
public interface ManageRecordCheckMapper extends BaseMapper<ManageRecordCheck> {
    IPage<ManageRecordCheck> pageManageRecordCheck(Page page, @Param("ew") QueryWrapper<ManageRecordCheck> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIntervalsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordIntervals;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
public interface ManageRecordIntervalsMapper extends BaseMapper<ManageRecordIntervals> {
    IPage<ManageRecordIntervals> pageManageRecordIntervals(Page page, @Param("ew") QueryWrapper<ManageRecordIntervals> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIntervalsTotalMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordIntervalsTotal;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
public interface ManageRecordIntervalsTotalMapper extends BaseMapper<ManageRecordIntervalsTotal> {
    IPage<ManageRecordIntervalsTotal> pageManageRecordIntervalsTotal(Page page, @Param("ew") QueryWrapper<ManageRecordIntervalsTotal> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIssueRecycleMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordIssueRecycle;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
public interface ManageRecordIssueRecycleMapper extends BaseMapper<ManageRecordIssueRecycle> {
    IPage<ManageRecordIssueRecycle> pageManageRecordIssueRecycle(Page page, @Param("ew") QueryWrapper<ManageRecordIssueRecycle> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordTotalMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordTotal;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
public interface ManageRecordTotalMapper extends BaseMapper<ManageRecordTotal> {
    IPage<ManageRecordTotal> pageProcessTotaldeal(Page page, @Param("ew") QueryWrapper<ManageRecordTotal> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordVerifyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.manage.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.manage.pojo.ManageRecordVerify;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å¤–来文件确认记录 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
public interface ManageRecordVerifyMapper extends BaseMapper<ManageRecordVerify> {
    IPage<ManageRecordVerify> pageManageRecordVerify(Page page, @Param("ew") QueryWrapper<ManageRecordVerify> queryWrappers);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewProgramFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.manage.pojo.ManageReviewProgramFile;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
public interface ManageReviewProgramFileMapper extends BaseMapper<ManageReviewProgramFile> {
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewProgramMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.mapper;
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.manage.pojo.ManageReviewProgram;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
public interface ManageReviewProgramMapper extends BaseMapper<ManageReviewProgram> {
    IPage<ManageReviewProgram> page(Page page, @Param("startTime") String startTime,@Param("endTime") String endTime,@Param("judgingLocation") String judgingLocation);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewReportMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.mapper;
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.manage.pojo.ManageReviewReport;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * ç®¡ç†è¯„审报告 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
public interface ManageReviewReportMapper extends BaseMapper<ManageReviewReport> {
    IPage<ManageReviewReport> page(Page page, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("place") String place);
}
cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRiskAssessmentResultsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.manage.mapper;
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.manage.pojo.ManageRiskAssessmentResults;
import com.ruoyi.manage.vo.ManageRiskAssessmentResultsVo;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
public interface ManageRiskAssessmentResultsMapper extends BaseMapper<ManageRiskAssessmentResults> {
    IPage<ManageRiskAssessmentResultsVo> getPageResults(Page page, @Param("itSExporting") Boolean itSExporting);
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ClientSatisfaction.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Data
@TableName("cnas_client_satisfaction")
public class ClientSatisfaction {
    @TableId(type = IdType.AUTO)
    private Integer clientSatisfactionId;
    @ApiModelProperty("单位名称")
    private String unitName;
    @ApiModelProperty("姓名")
    private String userName;
    @ApiModelProperty("填写日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate fillDate;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("联系电话")
    private String contactNumber;
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private Integer serviceAttitude;
    @ApiModelProperty("服务态度建议")
    private String serviceAttitudeSuggestion;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private Integer technicalCompetence;
    @ApiModelProperty("技术能力建议")
    private String technicalCompetenceSuggestion;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private Integer inspectionWork;
    @ApiModelProperty("检测工作建议")
    private String inspectionWorkSuggestion;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private Integer reasonableFees;
    @ApiModelProperty("收费合理性建议")
    private String reasonableFeesSuggestion;
    @ApiModelProperty("确认人")
    private String confirmPerson;
    @ApiModelProperty("确认人Id")
    private Integer confirmPersonId;
    @ApiModelProperty("确认状态, 0:未确认, 1:确认")
    private Integer confirmStatus;
    @ApiModelProperty("备注(对我们的希望)")
    private String remark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ClientSatisfactionAnalyseFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * å®¢æˆ·æ»¡æ„åº¦åˆ†æžé™„ä»¶
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Data
@TableName("cnas_client_satisfaction_analyse_file")
public class ClientSatisfactionAnalyseFile {
    @TableId(type = IdType.AUTO)
    private Integer analyseFileId;
    @ApiModelProperty("类型:1图片/2文件")
    private Integer type;
    @ApiModelProperty("附件路径")
    private String fileUrl;
    @ApiModelProperty("附件名称")
    private String fileName;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人")
    @TableField(select = false,exist = false)
    private String userName;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCheck.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_check")
public class InternalCheck {
    @TableId(type = IdType.AUTO)
    private Integer checkId;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("部门负责人")
    private String departmentHead;
    @ApiModelProperty("审核员")
    private String auditor;
    @ApiModelProperty("审核日期")
    private String reviewDate;
    @ApiModelProperty("编制人id")
    private Integer writeUserId;
    @ApiModelProperty("编制人")
    private String writeUserName;
    @ApiModelProperty("编制时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime writeTime;
    @ApiModelProperty("批准人id")
    private Integer ratifyUserId;
    @ApiModelProperty("批准人")
    private String ratifyUserName;
    @ApiModelProperty("批准时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ratifyTime;
    @ApiModelProperty("批准状态, 0 ä¸é€šè¿‡, 1通过")
    private Integer ratifyStatus;
    @ApiModelProperty("批准内容")
    private String ratifyRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCheckDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_check_detail")
public class InternalCheckDetail {
    @TableId(type = IdType.AUTO)
    private Integer checkDetailId;
    @ApiModelProperty("检查主表id")
    private Integer checkId;
    @ApiModelProperty("要素条款")
    private String element;
    @ApiModelProperty("审核内容")
    private String content;
    @ApiModelProperty("审核方式")
    private String method;
    @ApiModelProperty("审核结果记录")
    private String resultRecords;
    @ApiModelProperty("不符合性质")
    private String nonNature;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    // å¯¼å‡ºä½¿ç”¨
    @TableField(select = false, exist = false)
    private Integer index;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCorrect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * å†…审管理纠正处理表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Data
@TableName("cnas_internal_correct")
@ApiModel(value = "InternalCorrect对象", description = "内审管理纠正处理表")
public class InternalCorrect {
    @TableId(value = "correct_id", type = IdType.AUTO)
    private Integer correctId;
    @ApiModelProperty("不合格描述")
    private String raiseResult;
    @ApiModelProperty("vde专家发现")
    private String vdeRaiseResult;
    @ApiModelProperty("提出部门")
    private String raiseDepartment;
    @ApiModelProperty("提出人id")
    private Integer raiseUserId;
    @ApiModelProperty("提出人")
    private String raiseUserName;
    @ApiModelProperty("提出时间")
    private LocalDate raiseTime;
    @ApiModelProperty("原因分析")
    private String causeResult;
    @ApiModelProperty("原因分析责任部门")
    private String causeDepartment;
    @ApiModelProperty("原因分析人id")
    private Integer causeUserId;
    @ApiModelProperty("原因分析人")
    private String causeUserName;
    @ApiModelProperty("原因分析时间")
    private LocalDate causeTime;
    @ApiModelProperty("纠正措施")
    private String correctResult;
    @ApiModelProperty("提出部门确认")
    private String raiseDepartmentAffirm;
    @ApiModelProperty("纠正责任部门")
    private String correctDepartment;
    @ApiModelProperty("纠正人id")
    private Integer correctUserId;
    @ApiModelProperty("纠正")
    private String correctUserName;
    @ApiModelProperty("纠正时间")
    private LocalDate correctTime;
    @ApiModelProperty("验证结果")
    private String validationResult;
    @ApiModelProperty("验证部门")
    private String validationDepartment;
    @ApiModelProperty("验证人id")
    private Integer validationUserId;
    @ApiModelProperty("验证人")
    private String validationUserName;
    @ApiModelProperty("验证时间")
    private LocalDate validationTime;
    @ApiModelProperty("是否结束, 0: æœªç»“束, 1:已结束")
    private Integer isFinish;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @TableField(exist = false,select = false)
    @ApiModelProperty("流程, 0:不符合工作情况记录, 1处理措施, 2:纠正措施, 3:是否通知客户可恢复工作")
    private Integer flowType;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCorrectFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * <p>
 * å†…审管理纠正措施附件表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
@Data
@TableName("cnas_internal_correct_file")
@ApiModel(value = "InternalCorrectFile对象", description = "内审管理纠正措施附件表")
public class InternalCorrectFile {
    @ApiModelProperty("监督详情纠正文件id")
    @TableId(type = IdType.AUTO)
    private Integer correctFileId;
    private Integer superviseDetailsCorrectFileId;
    @ApiModelProperty("内审纠正措施id")
    private Integer correctId;
    @ApiModelProperty("类型:1图片/2文件")
    private Integer type;
    @ApiModelProperty("附件路径")
    private String fileUrl;
    @ApiModelProperty("附件名称")
    private String fileName;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalImplement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_implement")
public class InternalImplement {
    @TableId(type = IdType.AUTO)
    private Integer implementId;
    @ApiModelProperty("审核目的")
    private String purposes;
    @ApiModelProperty("审核性质")
    private String nature;
    @ApiModelProperty("审核范围")
    private String scope;
    @ApiModelProperty("审核依据")
    private String basis;
    @ApiModelProperty("审核组长")
    private String teamLeader;
    @ApiModelProperty("内审员")
    private String internalAuditor;
    @ApiModelProperty("审核时间")
    private String reviewDate;
    @ApiModelProperty("审核方法")
    private String auditMethod;
    @ApiModelProperty("会议开始时间")
    private String firstMeetingTime;
    @ApiModelProperty("末次会议时间")
    private String lastMeetingTime;
    @ApiModelProperty("审核报告提交日期")
    private String submitTime;
    @ApiModelProperty("审核报告发放范围")
    private String submitScope;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("编制人id")
    private Integer writeUserId;
    @ApiModelProperty("编制人")
    private String writeUserName;
    @ApiModelProperty("编制时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime writeTime;
    @ApiModelProperty("批准人id")
    private Integer ratifyUserId;
    @ApiModelProperty("批准人")
    private String ratifyUserName;
    @ApiModelProperty("批准时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ratifyTime;
    @ApiModelProperty("批准状态, 0 ä¸é€šè¿‡, 1通过")
    private Integer ratifyStatus;
    @ApiModelProperty("批准内容")
    private String ratifyRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalImplementDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * å†…审实施计划详情
 *
 * @author makejava
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_implement_detail")
public class InternalImplementDetail {
    @TableId(type = IdType.AUTO)
    private Integer implementDetailId;
    @ApiModelProperty("实施计划主表id")
    private Integer implementId;
    @ApiModelProperty("时间")
    private String implement;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("责任人")
    private String responsible;
    @ApiModelProperty("审核员")
    private String auditor;
    @ApiModelProperty("审核内容")
    private String reviewContent;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    // å¯¼å‡ºä½¿ç”¨
    @TableField(select = false, exist = false)
    private Integer index;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalMeeting.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * <p>
 * å†…审会议表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
@Data
@TableName("cnas_internal_meeting")
@ApiModel(value = "InternalMeeting对象", description = "内审会议表")
public class InternalMeeting {
    @TableId(value = "meeting_id", type = IdType.AUTO)
    private Integer meetingId;
    @ApiModelProperty("时间")
    private String meetingDate;
    @ApiModelProperty("主持人")
    private String compere;
    @ApiModelProperty("地点")
    private String place;
    @ApiModelProperty("会议主题")
    private String subject;
    @ApiModelProperty("参加人员")
    private String participant;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalMeetingDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * <p>
 * å†…审会议详情表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
@Data
@TableName("cnas_internal_meeting_detail")
@ApiModel(value = "InternalMeetingDetail对象", description = "内审会议详情表")
public class InternalMeetingDetail {
    @TableId(value = "meeting_detail_id", type = IdType.AUTO)
    private Integer meetingDetailId;
    @ApiModelProperty("会议主表id")
    private Integer meetingId;
    @ApiModelProperty("参加人员id")
    private Integer userId;
    @ApiModelProperty("参加人员")
    private String userName;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalPlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * <p>
 * å†…审年度计划
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Data
@TableName("cnas_internal_plan")
@ApiModel(value = "InternalPlan对象", description = "内审年度计划")
public class InternalPlan {
    @TableId(value = "plan_id", type = IdType.AUTO)
    private Integer planId;
    @ApiModelProperty("内审目的")
    private String purpose;
    @ApiModelProperty("内生范围")
    private String scope;
    @ApiModelProperty("内审依据")
    private String basis;
    @ApiModelProperty("组长")
    private String leader;
    @ApiModelProperty("组员")
    private String crew;
    @ApiModelProperty("编制人id")
    private Integer writeUserId;
    @ApiModelProperty("编制人")
    private String writeUserName;
    @ApiModelProperty("编制时间")
    private LocalDateTime writeTime;
    @ApiModelProperty("审核人id")
    private Integer examineUserId;
    @ApiModelProperty("审核人")
    private String examineUserName;
    @ApiModelProperty("审核时间")
    private LocalDateTime examineTime;
    @ApiModelProperty("审核状态,0 ä¸é€šè¿‡, 1 é€šè¿‡")
    private Integer examineStatus;
    @ApiModelProperty("审核信息")
    private String examineRemark;
    @ApiModelProperty("批准人id")
    private Integer ratifyUserId;
    @ApiModelProperty("批准人")
    private String ratifyUserName;
    @ApiModelProperty("批准时间")
    private LocalDateTime ratifyTime;
    @ApiModelProperty("批准状态,0 ä¸é€šè¿‡, 1 é€šè¿‡")
    private Integer ratifyStatus;
    @ApiModelProperty("批准信息")
    private String ratifyRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalPlanDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * <p>
 * å†…审年度计划详情表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
@Data
@TableName("cnas_internal_plan_detail")
@ApiModel(value = "InternalPlanDetail对象", description = "内审年度计划详情表")
public class InternalPlanDetail {
    @TableId(value = "plan_detail_id", type = IdType.AUTO)
    private Integer planDetailId;
    @ApiModelProperty("内审年度计划id")
    private Integer planId;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("一月")
    private String january;
    @ApiModelProperty("二月")
    private String february;
    @ApiModelProperty("三月")
    private String march;
    @ApiModelProperty("四月")
    private String april;
    @ApiModelProperty("五月")
    private String may;
    @ApiModelProperty("六月")
    private String june;
    @ApiModelProperty("七月")
    private String july;
    @ApiModelProperty("八月")
    private String august;
    @ApiModelProperty("九月")
    private String september;
    @ApiModelProperty("十月")
    private String october;
    @ApiModelProperty("十一月")
    private String november;
    @ApiModelProperty("十二月")
    private String december;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_report")
public class InternalReport {
    @TableId(type = IdType.AUTO)
    private Integer reportId;
    @ApiModelProperty("审核依据")
    private String purposes;
    @ApiModelProperty("审核依据")
    private String basis;
    @ApiModelProperty("审核日期")
    private String reviewDate;
    @ApiModelProperty("审核方法")
    private String method;
    @ApiModelProperty("审核范围")
    private String scope;
    @ApiModelProperty("审核责任制")
    private String responsible;
    @ApiModelProperty("审核组长")
    private String leader;
    @ApiModelProperty("审核员")
    private String auditor;
    @ApiModelProperty("审核组分工情况")
    private String division;
    @ApiModelProperty("审核概况")
    private String overview;
    @ApiModelProperty("结论性评价")
    private String conclusion;
    @ApiModelProperty("改进建议")
    private String suggest;
    @ApiModelProperty("完成纠正措施所需时间")
    private String actionDate;
    @ApiModelProperty("总体跟进确认人")
    private String followUser;
    @ApiModelProperty("总体跟进确认记录")
    private String followRecord;
    @ApiModelProperty("本报告发放范围")
    private String reportScope;
    @ApiModelProperty("审核人id")
    private Integer examineUserId;
    @ApiModelProperty("审核人")
    private String examineUserName;
    @ApiModelProperty("审核时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime examineTime;
    @ApiModelProperty("审核状态,0 ä¸é€šè¿‡, 1 é€šè¿‡")
    private Integer examineStatus;
    @ApiModelProperty("审核信息")
    private String examineRemark;
    @ApiModelProperty("质量负责人id")
    private Integer qualityUserId;
    @ApiModelProperty("质量负责人")
    private String qualityUserName;
    @ApiModelProperty("质量负责人填写时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime qualityTime;
    @ApiModelProperty("质量负责人状态, 0 ä¸é€šè¿‡, 1通过")
    private Integer qualityStatus;
    @ApiModelProperty("质量负责人意见")
    private String qualityRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageControlPlanList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package com.ruoyi.manage.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
@Getter
@Setter
@TableName("cnas_manage_control_plan_list")
@ApiModel(value = "ManageControlPlanList对象", description = "重大风险因素分析及控制计划清单")
public class ManageControlPlanList implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("作业活动")
    @ExcelProperty("作业活动")
    private String jobActivity;
    @ApiModelProperty("风险因素类别")
    @ExcelProperty("风险因素类别")
    private String category;
    @ApiModelProperty("风险因素描述")
    @ExcelProperty("风险因素描述")
    private String description;
    @ApiModelProperty("可导致的事故")
    @ExcelProperty("可导致的事故")
    private String result;
    @ApiModelProperty("是否不可承受风险")
    @ExcelProperty("是否不可承受风险")
    private String intolerable;
    @ApiModelProperty("控制计划")
    @ExcelProperty("控制计划")
    private String plan;
    @ApiModelProperty("编制id")
    private Integer editor;
    @ApiModelProperty("日期")
    private LocalDateTime editorDate;
    @ApiModelProperty("审批id")
    private Integer approval;
    @ApiModelProperty("日期")
    private LocalDateTime approvalDate;
    @ApiModelProperty("批准id")
    private Integer approve;
    @ApiModelProperty("批准日期")
    private LocalDateTime approveDate;
    @ApiModelProperty("批准状态1:通过;2:不通过")
    private Integer approveStatus;
    @ApiModelProperty("审批状态1:通过;2:不通过")
    private Integer approvalStatus;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentAlter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package com.ruoyi.manage.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
@Getter
@Setter
@TableName("cnas_manage_document_alter")
@ApiModel(value = "ManageDocumentAlter对象", description = "文件变更")
@ExcelIgnoreUnannotated
public class ManageDocumentAlter  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请编号")
    @ExcelProperty("申请编号")
    private String code;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(select = false, exist = false)
    @ExcelProperty("申请人")
    private String createUserName;
    @TableField(select = false, exist = false)
    @ApiModelProperty("申请部门")
    private String createUserDepartLims;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("期望变更时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty("期望变更时间")
    private LocalDate expectAlterDate;
    @ApiModelProperty("实际变更时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty("实际变更时间")
    private LocalDate actuallyAlterDate;
    @ApiModelProperty("状态")
    @ExcelProperty("状态")
    private String state;
    @ApiModelProperty("审批人")
    private Integer checkUser;
    @TableField(select = false, exist = false)
    @ExcelProperty("审批人")
    private String checkUserName;
    @ApiModelProperty("变更说明")
    @ExcelProperty("变更说明")
    private String alterNote;
    @ApiModelProperty("变更前编号")
    private String alterBeforeCode;
    @ApiModelProperty("变更前名称")
    private String alterBeforeName;
    @ApiModelProperty("变更前版本")
    private String alterBeforeVersion;
    @ApiModelProperty("变更后编号")
    private String alterAfterCode;
    @ApiModelProperty("变更后名称")
    private String alterAfterName;
    @ApiModelProperty("变更后版本")
    private String alterAfterVersion;
    @ApiModelProperty("变更后附件")
    private String alterAfterUrl;
    @ApiModelProperty("变更后附件")
    @TableField(select = false,exist = false)
    private MultipartFile file;
    @ApiModelProperty("前一版本处理方式")
    private String method;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentCancel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.ruoyi.manage.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
@Getter
@Setter
@TableName("cnas_manage_document_cancel")
@ApiModel(value = "ManageDocumentCancel对象", description = "文件作废")
@ExcelIgnoreUnannotated
public class ManageDocumentCancel  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("申请人")
    @TableField(select = false,exist = false)
    @ExcelProperty("申请人")
    private String createUserName;
    @ApiModelProperty("申请人")
    @TableField(select = false,exist = false)
    private String createUserDepartLims;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("文件编号")
    @ExcelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    private String name;
    @ApiModelProperty("文件版本")
    private String version;
    @ApiModelProperty("文件状态")
    private String documentState;
    @ApiModelProperty("作废方式")
    private String method;
    @ApiModelProperty("作废说明")
    @ExcelProperty("作废说明")
    private String cancelNote;
    @ApiModelProperty("审批人")
    private Integer checkUser;
    @ExcelProperty("审批人")
    @TableField(select = false, exist = false)
    private String checkUserName;
    @ApiModelProperty("期望作废时间")
    @ExcelProperty("期望作废日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expectCancelDate;
    @ApiModelProperty("实际作废日期")
    @ExcelProperty("实际作废日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate actuallyCancelDate;
    @ApiModelProperty("作废状态")
    @ExcelProperty("作废状态")
    private String state;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentControlled.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶å—控
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
@Getter
@Setter
@TableName("cnas_manage_document_controlled")
@ApiModel(value = "ManageDocumentControlled对象", description = "文件受控")
public class ManageDocumentControlled  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请文件编号")
    private String documentCode;
    @ApiModelProperty("文件类别")
    private String type;
    @ApiModelProperty("文件名称")
    private String name;
    @ApiModelProperty("文件版本")
    private String version;
    @ApiModelProperty("作者")
    private String writer;
    @ApiModelProperty("提交日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate submitDate;
    @ApiModelProperty("说明")
    private String instructions;
    @ApiModelProperty("申请状态")
    private String state;
    @ApiModelProperty("附件地址")
    private String url;
    @ApiModelProperty("责任人")
    private Integer dutyUser;
    @TableField(select = false,exist = false)
    private String dutyUserName;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(select = false, exist = false)
    private String createUserName;
    @ApiModelProperty("申请部门")
    @TableField(select = false, exist = false)
    private String createUserDepartLims;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd  HH:mm:ss")
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @TableField(select = false, exist = false)
    private MultipartFile file;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentIssueRecycle.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.manage.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶å‘放回收
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
@Getter
@Setter
@TableName("cnas_manage_document_issue_recycle")
@ApiModel(value = "ManageDocumentIssueRecycle对象", description = "文件发放回收")
public class ManageDocumentIssueRecycle  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ExcelProperty(value = "文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    @ExcelProperty(value = "文件名称")
    private String name;
    @ApiModelProperty("文件版本")
    @ExcelProperty(value = "文件版本")
    private String version;
    @ApiModelProperty("状态")
    @ExcelProperty(value = "状态")
    private String state;
    @ApiModelProperty("文件状态")
    @ExcelProperty(value = "文件状态")
    private String documentState;
    @ApiModelProperty("发放编号")
    @ExcelProperty(value = "发放编号")
    private String issueCode;
    @ApiModelProperty("发放人")
    private Integer issueUser;
    @ApiModelProperty("发放日期")
    @ExcelProperty(value = "发放日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate issueDate;
    @ApiModelProperty("发放说明")
    private String issueNote;
    @ApiModelProperty("接收人")
    private Integer receiveUser;
    @ApiModelProperty("接收时间")
    private LocalDate receiveDate;
    @ApiModelProperty("回收编号")
    private String recycleCode;
    @ApiModelProperty("回收人")
    private Integer recycleUser;
    @ApiModelProperty("回收日期")
    @ExcelProperty(value = "回收日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate recycleDate;
    @ApiModelProperty("回收说明")
    private String recycleNote;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("附件")
    private String url;
    @TableField(select = false,exist = false)
    private MultipartFile file;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.ruoyi.manage.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
@Getter
@Setter
@TableName("cnas_manage_document_list")
@ApiModel(value = "ManageDocumentList对象", description = "文件清单")
@ExcelIgnoreUnannotated
public class ManageDocumentList  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ExcelProperty(value = "文件编号")
    private String documentCode;
    @ApiModelProperty("类别")
    @ExcelProperty(value = "类别")
    private String type;
    @ApiModelProperty("名称")
    @ExcelProperty(value = "名称")
    private String name;
    @ApiModelProperty("文件版本")
    @ExcelProperty(value = "文件版本")
    private String version;
    @ApiModelProperty("作者")
    @ExcelProperty(value = "作者")
    private String writer;
    @ApiModelProperty("生效日期")
    @ExcelProperty(value = "生效日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveDate;
    @ApiModelProperty("文件状态")
    @ExcelProperty(value = "文件状态")
    private String state;
    @ApiModelProperty("附件地址")
    private String url;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageMeeting.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 *
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
@Getter
@Setter
@TableName("cnas_manage_meeting")
@ApiModel(value = "ManageMeeting对象", description = "")
public class ManageMeeting implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("会议时间")
    private LocalDateTime meetingTime;
    @ApiModelProperty("会议地点")
    private String place;
    @ApiModelProperty("主持人")
    private String compere;
    @ApiModelProperty("会议内容摘要")
    private String content;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageMeetingParticipants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 *
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
@Getter
@Setter
@TableName("cnas_manage_meeting_participants")
@ApiModel(value = "ManageMeetingParticipants对象", description = "")
public class ManageMeetingParticipants implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("参会人员")
    private Integer participants;
    @TableField(select = false,exist = false)
    private String userName;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("会议id")
    private Integer meetingId;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordAudit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½•
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
@Getter
@Setter
@TableName("cnas_manage_record_audit")
@ApiModel(value = "ManageRecordAudit对象", description = "文件修订申请审批记录")
public class ManageRecordAudit  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    private String documentName;
    @ApiModelProperty("章节号")
    private String capter;
    @ApiModelProperty("页码")
    private String pages;
    @ApiModelProperty("修订次数")
    private Integer number;
    @ApiModelProperty("修改前版本号")
    private String beforeVersion;
    @ApiModelProperty("修改后版本号")
    private String afterVersion;
    @ApiModelProperty("修改内容")
    private String alterThing;
    @ApiModelProperty("修订人")
    private Integer alterUser;
    @TableField(select = false, exist = false)
    private String alterUserName;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false, exist = false)
    private String ratifyUserName;
    //批准人签名
    @TableField(select = false, exist = false)
    private String ratifyUserUrl;
    @ApiModelProperty("日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate date;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    //申请人
    @TableField(select = false, exist = false)
    private String createUserName;
    //申请部门
    @TableField(select = false, exist = false)
    private String createUserDepart;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("变化原因")
    private String reason;
    @ApiModelProperty("原分发部门")
    private String beforeDepart;
    @ApiModelProperty("修订后分发部门")
    private String afterDepart;
    @ApiModelProperty("申请部门主管意见")
    private String applicant;
    @ApiModelProperty("原制定部门意见")
    private String formulation;
    @ApiModelProperty("原审核部门意见")
    private String audit;
    @ApiModelProperty("修订作废")
    private String method;
    @ApiModelProperty("原附件")
    private String beforeUrl;
    @ApiModelProperty("修订后附件")
    private String afterUrl;
    @TableField(select = false, exist = false)
    private MultipartFile file;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCancel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
@Getter
@Setter
@TableName("cnas_manage_record_cancel")
@ApiModel(value = "ManageRecordCancel对象", description = "作废文件销魂记录")
public class ManageRecordCancel  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    private String documentName;
    @ApiModelProperty("数量")
    private Integer qty;
    @ApiModelProperty("销毁原因")
    private String reason;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(select = false,exist = false)
    private String createUserName;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyTime;
    @ApiModelProperty("备注")
    private String remark;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCheck.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录)
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
@Getter
@Setter
@TableName("cnas_manage_record_check")
@ApiModel(value = "ManageRecordCheck对象", description = "文件审批记录(含修订后再次审批记录)")
public class ManageRecordCheck  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件名称")
    private String documentName;
    @ApiModelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("版/次")
    private String documentVersion;
    @ApiModelProperty("编制人")
    private Integer writeUser;
    @TableField(select = false,exist = false)
    private String writeUserName;
    @ApiModelProperty("审核人")
    private Integer checkUser;
    @TableField(select = false,exist = false)
    private String checkUserName;
    @ApiModelProperty("审核状态")
    private String checkState;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    @ApiModelProperty("批准状态")
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyDate;
    @ApiModelProperty("备注")
    private String remark;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervals.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
@Getter
@Setter
@TableName("cnas_manage_record_intervals")
@ApiModel(value = "ManageRecordIntervals对象", description = "文件定期审查记录")
public class ManageRecordIntervals  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件名称")
    private String documentName;
    @ApiModelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("版本号")
    private String documentVersion;
    @ApiModelProperty("修订号")
    private String revision;
    @ApiModelProperty("适宜性")
    private String suitability;
    @ApiModelProperty("备注")
    private String remark;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("外键关联,外来文件确认历史记录id")
    private Integer recordIntervalsTotalId;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervalsTotal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
@Getter
@Setter
@TableName("cnas_manage_record_intervals_total")
@ApiModel(value = "ManageRecordIntervalsTotal对象", description = "文件定期审查记录总历史记录表")
public class ManageRecordIntervalsTotal  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    @ApiModelProperty("批准结果")
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyDate;
    @ApiModelProperty("批准人签名")
    private String ratifyUrl;
    @ApiModelProperty("拟制人")
    private Integer submitUser;
    @TableField(select = false,exist = false)
    private String submitUserName;
    @ApiModelProperty("拟制人签名")
    private String submitUrl;
    @ApiModelProperty("拟制日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate submitDate;
    @ApiModelProperty("年份")
    private String year;
    @ApiModelProperty("总数量")
    private Integer totalNum;
    @ApiModelProperty("生成申请表的路径")
    private String url;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIssueRecycle.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
@Getter
@Setter
@TableName("cnas_manage_record_issue_recycle")
@ApiModel(value = "ManageRecordIssueRecycle对象", description = "所有文件(内、外部文件)的发放与回收记录")
public class ManageRecordIssueRecycle  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    private String documentName;
    @ApiModelProperty("版号")
    private String documentVersion;
    @ApiModelProperty("份数")
    private String pages;
    @ApiModelProperty("文件类别")
    private String documentType;
    @ApiModelProperty("分发号")
    private String number;
    @ApiModelProperty("接收部门")
    private String departLims;
    @ApiModelProperty("接受人")
    private Integer receiveUser;
    @TableField(select = false,exist = false)
    private String receiveUserName;
    @ApiModelProperty("接受日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate receiveDate;
    @ApiModelProperty("签收人")
    private Integer signedUser;
    @TableField(select = false,exist = false)
    private String signedUserName;
    @ApiModelProperty("签收日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate signedDate;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordTotal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
@Getter
@Setter
@TableName("cnas_manage_record_total")
@ApiModel(value = "ManageRecordTotal对象", description = "外来文件确认记录总历史记录表")
public class ManageRecordTotal  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    @ApiModelProperty("批准结果")
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyDate;
    @ApiModelProperty("批准人签名")
    private String ratifyUrl;
    @ApiModelProperty("拟制人")
    private Integer submitUser;
    @TableField(select = false,exist = false)
    private String submitUserName;
    @ApiModelProperty("拟制人签名")
    private String submitUrl;
    @ApiModelProperty("拟制日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate submitDate;
    @ApiModelProperty("年份")
    private String year;
    @ApiModelProperty("总数量")
    private Integer totalNum;
    @ApiModelProperty("生成申请表的路径")
    private String url;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordVerify.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
/**
 * <p>
 * å¤–来文件确认记录
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
@Getter
@Setter
@TableName("cnas_manage_record_verify")
@ApiModel(value = "ManageRecordVerify对象", description = "外来文件确认记录")
public class ManageRecordVerify  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("外来文件名称")
    private String documentName;
    @ApiModelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("标准规范名称")
    private String standardName;
    @ApiModelProperty("标准号")
    private String standardCode;
    @ApiModelProperty("生效日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveDate;
    @ApiModelProperty("作废日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate cancelDate;
    @ApiModelProperty("备注")
    private String note;
    @ApiModelProperty("外键关联,外来文件确认历史记录id")
    private Integer manageRecordTotalId;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewProgram.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 *
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
@Getter
@Setter
@TableName("cnas_manage_review_program")
@ApiModel(value = "ManageReviewProgram对象", description = "")
public class ManageReviewProgram implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("评审时间")
    private LocalDateTime reviewTime;
    @ApiModelProperty("评审地点")
    private String judgingLocation;
    @ApiModelProperty("评审目的")
    private String judgingPurpose;
    @ApiModelProperty("评审方式")
    private String judgingMethod;
    @ApiModelProperty("参加人员")
    private String participants;
    @ApiModelProperty("评审范围")
    private String judgingScope;
    @ApiModelProperty("评审依据")
    private String judgingBasis;
    @ApiModelProperty("评审主要内容")
    private String mainContext;
    @ApiModelProperty("准备工作要求")
    private String preparationRequirements;
    @ApiModelProperty("编制")
    private String editor;
    @ApiModelProperty("编制日期")
    private LocalDateTime editorDate;
    @ApiModelProperty("批准")
    private String approve;
    @ApiModelProperty("批准日期")
    private LocalDateTime approveDate;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewProgramFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 *
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
@Getter
@Setter
@TableName("cnas_manage_review_program_file")
@ApiModel(value = "ManageReviewProgramFile对象", description = "")
public class ManageReviewProgramFile implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件名称")
    private String fileName;
    @ApiModelProperty("计划表ID")
    private Integer reviewId;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    private String url;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.ruoyi.manage.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * ç®¡ç†è¯„审报告
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
@Getter
@Setter
@TableName("cnas_manage_review_report")
@ApiModel(value = "ManageReviewReport对象", description = "管理评审报告")
public class ManageReviewReport implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("目的")
    private String objective;
    @ApiModelProperty("地点")
    private String place;
    @ApiModelProperty("主持人")
    private String compere;
    @ApiModelProperty("记录人")
    private String recordPeople;
    @ApiModelProperty("日期")
    private LocalDateTime date;
    @ApiModelProperty("页次")
    private Integer page;
    @ApiModelProperty("评审方式")
    private String judgingMethod;
    @ApiModelProperty("评审依据")
    private String reviewBasis;
    @ApiModelProperty("出席人员")
    private String attendess;
    @ApiModelProperty("评审输入情况")
    private String reviewInputs;
    @ApiModelProperty("评审过程概况")
    private String reviewProcess;
    @ApiModelProperty("主要议题概述")
    private String mainTopic;
    @ApiModelProperty("事项")
    private String matters;
    @ApiModelProperty("负责人")
    private String head;
    @ApiModelProperty("完成日期")
    private LocalDateTime completionDate;
    @ApiModelProperty("跟踪确认人")
    private String trackingConfirmed;
    @ApiModelProperty("跟踪情况确认记录")
    private String follerUp;
    @ApiModelProperty("体系评价")
    private String overallEvaluation;
    @ApiModelProperty("审核")
    private String audit;
    @ApiModelProperty("批准")
    private String approval;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRiskAssessmentResults.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.ruoyi.manage.pojo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
@Getter
@Setter
@TableName("cnas_manage_risk_assessment_results")
@ApiModel(value = "ManageRiskAssessmentResults对象", description = "危险因素辨识与风险评价结果一览表")
public class ManageRiskAssessmentResults implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    @ExcelIgnore
    private Integer id;
    @ApiModelProperty("地点/活动")
    @ExcelProperty(value = "地点/活动", index = 0)
    private String venue;
    @ApiModelProperty("危险因素")
    @ExcelProperty(value = "危险因素", index = 1)
    private String hazard;
    @ApiModelProperty("可能导致的事故")
    @ExcelProperty(value = "可能导致的事故", index = 2)
    private String accidents;
    @ApiModelProperty("对人可能造成的危害")
    @ExcelProperty(value = "对人可能造成的危害", index = 3)
    private String injury;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "L"})
    private String riskL;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "E"})
    private String riskE;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "C"})
    private String riskC;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "D"})
    private String riskD;
    @ApiModelProperty("风险等级")
    @ExcelProperty(value = "风险等级", index = 8)
    private String level;
    @ApiModelProperty("评价结论")
    @ExcelProperty(value = "评价结论", index = 9)
    private String conclusion;
    @ApiModelProperty("控制措施")
    @ExcelProperty(value = "控制措施", index = 10)
    private String measures;
    @ApiModelProperty("编制id")
    private Integer editor;
    @ApiModelProperty("编制日期")
    private LocalDateTime editorDate;
    @ApiModelProperty("审批人id")
    private Integer approval;
    @ApiModelProperty("审批日期")
    private LocalDateTime approvalDate;
    @ApiModelProperty("批准人id")
    private Integer approve;
    @ApiModelProperty("批准日期")
    private LocalDateTime approveDate;
    @ApiModelProperty("批准状态1:通过;2:不通过")
    private Integer approveStatus;
    @ApiModelProperty("审批状态1:通过;2:不通过")
    private Integer approvalStatus;
}
cnas-manage/src/main/java/com/ruoyi/manage/schedule/ManageRecordTotalSchedule.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.manage.schedule;
import com.ruoyi.manage.pojo.ManageRecordIntervalsTotal;
import com.ruoyi.manage.pojo.ManageRecordTotal;
import com.ruoyi.manage.service.ManageRecordIntervalsTotalService;
import com.ruoyi.manage.service.ManageRecordTotalService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@Component
public class ManageRecordTotalSchedule {
    @Resource
    private ManageRecordTotalService manageRecordTotalService;
    @Resource
    private ManageRecordIntervalsTotalService manageRecordIntervalsTotalService;
    @Scheduled(cron = "0 0 2 1 1 ?") //每年1月1号2点
    public void manageRecordTotal() {
        ManageRecordTotal manageRecordTotal = new ManageRecordTotal();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        Calendar calendar = Calendar.getInstance();
        String formattedDate = sdf.format(calendar.getTime());
        manageRecordTotal.setYear(formattedDate);
        manageRecordTotalService.save(manageRecordTotal);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = new ManageRecordIntervalsTotal();
        manageRecordIntervalsTotal.setYear(formattedDate);
        manageRecordIntervalsTotalService.save(manageRecordIntervalsTotal);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ClientSatisfactionService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.manage.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.manage.pojo.ClientSatisfaction;
import com.ruoyi.manage.pojo.ClientSatisfactionAnalyseFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
public interface ClientSatisfactionService extends IService<ClientSatisfaction> {
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     * @param page
     * @param clientSatisfaction
     * @return
     */
    IPage<ClientSatisfaction> pageClientSatisfaction(Page page, ClientSatisfaction clientSatisfaction);
    /**
     * æ–°å¢žå®¢æˆ·åˆ†æžé™„ä»¶
     * @param file
     * @return
     */
    boolean uploadAnalyseFile(MultipartFile file);
    /**
     * æŸ¥è¯¢å®¢æˆ·åˆ†æžé™„ä»¶
     * @param page
     * @param analyseFile
     * @return
     */
    IPage<ClientSatisfactionAnalyseFile> pageAnalyseFile(Page page, ClientSatisfactionAnalyseFile analyseFile);
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     *
     * @param clientSatisfactionId
     * @param response
     */
    void exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response);
    /**
     * ç¡®è®¤å®¢æˆ·æ»¡æ„åº¦
     *
     * @param clientSatisfaction è¦ä¿®æ”¹å®¢æˆ·æ»¡æ„åº¦çš„状态对象
     * @param userId             ä¿®æ”¹äººid
     */
    void confirmClientSatisfaction(ClientSatisfaction clientSatisfaction, Integer userId);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCheckDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.InternalCheckDetail;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalCheckDetailService extends IService<InternalCheckDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCheckService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.manage.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.manage.dto.InternalCheckDto;
import com.ruoyi.manage.pojo.InternalCheck;
import javax.servlet.http.HttpServletResponse;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalCheckService extends IService<InternalCheck> {
    /**
     * å†…审检查分页查询
     * @param page
     * @param internalCheck
     * @return
     */
    IPage<InternalCheckDto> pageInternalCheck(Page page, InternalCheck internalCheck);
    /**
     * å†…审检查新增
     * @param internalCheck
     * @return
     */
    boolean addInternalCheck(InternalCheckDto internalCheck);
    /**
     * å†…审检查修改
     * @param internalCheck
     * @return
     */
    boolean updateInternalCheck(InternalCheckDto internalCheck);
    /**
     * å†…审检查删除
     * @param checkId
     * @return
     */
    boolean delInternalCheck(Integer checkId);
    /**
     * å†…审检查查看详情
     * @param checkId
     * @return
     */
    InternalCheckDto getInternalCheckOne(Integer checkId);
    /**
     * å†…审检查批准
     * @param internalCheck
     * @return
     */
    boolean ratifyInternalCheck(InternalCheckDto internalCheck);
    /**
     * å¯¼å‡ºå†…审检查
     * @param checkId
     * @param response
     */
    void exportInternalCheck(Integer checkId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCorrectFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.InternalCorrectFile;
/**
 * <p>
 * å†…审管理纠正措施附件表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
public interface InternalCorrectFileService extends IService<InternalCorrectFile> {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCorrectService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.manage.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.manage.pojo.InternalCorrect;
import com.ruoyi.manage.pojo.InternalCorrectFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * <p>
 * å†…审管理纠正处理表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
public interface InternalCorrectService extends IService<InternalCorrect> {
    /**
     * æ–°å¢žå†…审管理纠正处理信息
     * @param InternalAccording
     * @return
     */
    boolean addInternalCorrect(InternalCorrect InternalAccording);
    /**
     * æŸ¥è¯¢å†…审管理纠正处理
     * @param correctId
     * @return
     */
    InternalCorrect getInternalCorrect(Integer correctId);
    /**
     * æŸ¥è¯¢å†…审管理纠正措施列表
     * @param page
     * @param detailsCorrect
     * @return
     */
    IPage<InternalCorrect> pageInternalCorrect(Page page, InternalCorrect detailsCorrect);
    /**
     * æ–°å¢žå†…审管理纠正措施附件
     * @param correctId
     * @param file
     * @return
     */
    boolean uploadInternalCorrectFile(Integer correctId, MultipartFile file);
    /**
     * æŸ¥è¯¢å†…审管理纠正措施附件
     * @param correctId
     * @return
     */
    List<InternalCorrectFile> getInternalCorrectFileList(Integer correctId);
    /**
     * å¯¼å‡ºçº æ­£æŽªæ–½
     * @param correctId
     * @param response
     */
    void exportInternalCorrect(Integer correctId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalImplementDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.InternalImplementDetail;
/**
 * å†…审实施计划详情
 *
 * @author makejava
 * @since 2024-11-11
 */
public interface InternalImplementDetailService extends IService<InternalImplementDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalImplementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.manage.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.manage.dto.InternalImplementDto;
import com.ruoyi.manage.pojo.InternalImplement;
import javax.servlet.http.HttpServletResponse;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalImplementService extends IService<InternalImplement> {
    /**
     * å†…审实施计划分页查询
     * @param page
     * @param internalImplement
     * @return
     */
    IPage<InternalImplementDto> pageInternalImplement(Page page, InternalImplement internalImplement);
    /**
     * å†…审实施计划新增
     * @param internalImplement
     * @return
     */
    boolean addInternalImplement(InternalImplementDto internalImplement);
    /**
     * å†…审实施计划修改
     * @param internalImplement
     * @return
     */
    boolean updateInternalImplement(InternalImplementDto internalImplement);
    /**
     * å†…审实施计划删除
     * @param implementId
     * @return
     */
    boolean delInternalImplement(Integer implementId);
    /**
     * å†…审实施计划查看详情
     * @param implementId
     * @return
     */
    InternalImplementDto getInternalImplementOne(Integer implementId);
    /**
     * å†…审实施计划批准
     * @param internalImplement
     * @return
     */
    boolean ratifyInternalImplement(InternalImplementDto internalImplement);
    /**
     * å¯¼å‡ºå†…审实施计划
     * @param implementId
     * @param response
     */
    void exportInternalImplement(Integer implementId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalMeetingDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.InternalMeetingDetail;
/**
 * <p>
 * å†…审会议详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
public interface InternalMeetingDetailService extends IService<InternalMeetingDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalMeetingService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.manage.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.manage.dto.InternalMeetingDto;
import com.ruoyi.manage.pojo.InternalMeeting;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * å†…审会议表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
public interface InternalMeetingService extends IService<InternalMeeting> {
    /**
     * å†…审会议分页查询
     * @param page
     * @param internalMeeting
     * @return
     */
    IPage<InternalMeetingDto> pageInternalMeeting(Page page, InternalMeeting internalMeeting);
    /**
     * å†…审会议新增
     * @param internalMeeting
     * @return
     */
    boolean addInternalMeeting(InternalMeetingDto internalMeeting);
    /**
     * å†…审会议修改
     * @param internalMeeting
     * @return
     */
    boolean updateInternalMeeting(InternalMeetingDto internalMeeting);
    /**
     * å†…审会议删除
     * @param meetingId
     * @return
     */
    boolean delInternalMeeting(Integer meetingId);
    /**
     * å†…审会议查看详情
     * @param meetingId
     * @return
     */
    InternalMeetingDto getInternalMeetingOne(Integer meetingId);
    /**
     * å¯¼å‡ºå†…审会议
     * @param meetingId
     * @param response
     */
    void exportInternalMeeting(Integer meetingId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalPlanDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.InternalPlanDetail;
/**
 * <p>
 * å†…审年度计划详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
public interface InternalPlanDetailService extends IService<InternalPlanDetail> {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalPlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.ruoyi.manage.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.manage.dto.InternalPlanDto;
import com.ruoyi.manage.pojo.InternalPlan;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * å†…审年度计划 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
public interface InternalPlanService extends IService<InternalPlan> {
    /**
     * å†…审年度计划分页查询
     * @param page
     * @param internalPlan
     * @return
     */
    IPage<InternalPlanDto> pageInternalPlan(Page page, InternalPlan internalPlan);
    /**
     * å†…审年度计划新增
     * @param internalPlan
     * @return
     */
    boolean addInternalPlan(InternalPlanDto internalPlan);
    /**
     * å†…审年度计划修改
     * @param internalPlan
     * @return
     */
    boolean updateInternalPlan(InternalPlanDto internalPlan);
    /**
     * å†…审年度计划删除
     * @param planId
     * @return
     */
    boolean delInternalPlan(Integer planId);
    /**
     * å†…审年度计划查看详情
     * @param planId
     * @return
     */
    InternalPlanDto getInternalPlanOne(Integer planId);
    /**
     * å†…审年度计划审核
     * @param internalPlanDto
     * @return
     */
    boolean examineInternalPlan(InternalPlanDto internalPlanDto);
    /**
     * å†…审年度计划批准
     * @param internalPlanDto
     * @return
     */
    boolean ratifyInternalPlan(InternalPlanDto internalPlanDto);
    /**
     * å¯¼å‡ºå†…审年度计划
     * @param planId
     * @param response
     */
    void exportInternalImplement(Integer planId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/InternalReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.ruoyi.manage.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.manage.pojo.InternalReport;
import javax.servlet.http.HttpServletResponse;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalReportService extends IService<InternalReport> {
    /**
     * å†…审报告分页查询
     * @param page
     * @param internalReport
     * @return
     */
    IPage<InternalReport> pageInternalReport(Page page, InternalReport internalReport);
    /**
     * å†…审报告审核
     * @param internalReport
     * @return
     */
    boolean ratifyInternalCheck(InternalReport internalReport);
    /**
     * è´¨é‡éƒ¨ç»ç†å¡«å†™
     * @param internalReport
     * @return
     */
    boolean qualityInternalReport(InternalReport internalReport);
    /**
     * å¯¼å‡ºå†…审报告
     * @param reportId
     * @param response
     */
    void exportInternalReport(Integer reportId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageControlPlanListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.manage.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.manage.pojo.ManageControlPlanList;
import com.ruoyi.manage.vo.ManageControlPlanListVo;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
public interface ManageControlPlanListService extends IService<ManageControlPlanList> {
    IPage<ManageControlPlanListVo> getPageList(Page page);
    void exportPersonTraining(HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentAlterService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.manage.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.manage.pojo.ManageDocumentAlter;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
public interface ManageDocumentAlterService extends IService<ManageDocumentAlter> {
    IPage<ManageDocumentAlter> pageManageDocumentAlter(Page page, ManageDocumentAlter manageDocumentAlter);
    ManageDocumentAlter getManageDocumentAlter(Integer id);
    int addManageDocumentAlter(ManageDocumentAlter manageDocumentAlter);
    int doManageDocumentAlter(ManageDocumentAlter manageDocumentAlter);
    int checkManageDocumentAlter(ManageDocumentAlter manageDocumentAlter);
    void checkManageDocumentAlterPdf(Long id, HttpServletResponse response) throws Exception;
    void exportManageDocumentAlter(ManageDocumentAlter manageDocumentAlter, HttpServletResponse response) throws Exception;
    int delManageDocumentAlter(Integer id);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentCancelService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.manage.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.manage.pojo.ManageDocumentCancel;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
public interface ManageDocumentCancelService extends IService<ManageDocumentCancel> {
    IPage<ManageDocumentCancel> pageManageDocumentCancel(Page page, ManageDocumentCancel manageDocumentCancel);
    int addManageDocumentCancel(ManageDocumentCancel manageDocumentCancel);
    int checkManageDocumentCancel(Integer id, String state);
    ManageDocumentCancel getManageDocumentCancel(Integer id);
    void exportManageDocumentCancel(ManageDocumentCancel manageDocumentCancel, HttpServletResponse response) throws Exception;
    int delManageDocumentCancel(Integer id);
    int doManageDocumentCancel(ManageDocumentCancel manageDocumentCancel);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentControlledService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.manage.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.manage.pojo.ManageDocumentControlled;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å—控 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
public interface ManageDocumentControlledService extends IService<ManageDocumentControlled> {
    IPage<ManageDocumentControlled> pageManageDocumentControlled(Page page, ManageDocumentControlled manageDocumentControlled);
    int addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled);
    int delManageDocumentControlled(Long id);
    ManageDocumentControlled getManageDocumentControlled(Long id);
    int doManageDocumentControlled(ManageDocumentControlled manageDocumentControlled);
    int checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled);
    void checkManageDocumentControlledPdf(Long id, HttpServletResponse response) throws Exception ;
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentIssueRecycleService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.manage.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.manage.dto.ManageDocumentIssueRecycleDto;
import com.ruoyi.manage.pojo.ManageDocumentIssueRecycle;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
public interface ManageDocumentIssueRecycleService extends IService<ManageDocumentIssueRecycle> {
    IPage<ManageDocumentIssueRecycleDto> pageManageDocumentIssueRecycle(Page page, ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto);
    ManageDocumentIssueRecycleDto getManageDocumentIssueRecycle(Long id);
    void exportManageDocumentIssueRecycle(ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto, HttpServletResponse response) throws Exception;
    int checkManageDocumentIssueRecycle(Integer id, String documentState);
    int addManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle);
    int doManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle);
    int delManageDocumentIssueRecycle(Long id);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.manage.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.manage.pojo.ManageDocumentList;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
public interface ManageDocumentListService extends IService<ManageDocumentList> {
    IPage<ManageDocumentList> pageManageDocumentList(Page page, ManageDocumentList manageDocumentList);
    int uploadFile(Integer id, MultipartFile file);
    void importExcel(List<ManageDocumentList> list);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageMeetingParticipantsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.ManageMeetingParticipants;
import com.ruoyi.manage.vo.MeetingParticipantsDetailsVo;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
public interface ManageMeetingParticipantsService extends IService<ManageMeetingParticipants> {
    MeetingParticipantsDetailsVo getParticipants(Integer id);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageMeetingService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.manage.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.manage.dto.ManageMeetingDto;
import com.ruoyi.manage.pojo.ManageMeeting;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
public interface ManageMeetingService extends IService<ManageMeeting> {
    IPage<ManageMeetingDto> page(Page page, String startTime, String endTime, String place);
    void addMeeting(ManageMeetingDto dto);
    int modifyMeeting(ManageMeetingDto manageMeetingDto);
    void exportMeeting(Integer id, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordAuditService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordAudit;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
public interface ManageRecordAuditService extends IService<ManageRecordAudit> {
    IPage<ManageRecordAudit> pageManageRecordAudit(Page page, ManageRecordAudit manageRecordAudit);
    int addManageRecordAudit(ManageRecordAudit manageRecordAudit);
    int doManageRecordAudit(ManageRecordAudit manageRecordAudit);
    int ratifyManageRecordAudit(Integer id);
    String exportOutManageRecordAudit(ManageRecordAudit manageRecordAudit, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordCancelService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordCancel;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
public interface ManageRecordCancelService extends IService<ManageRecordCancel> {
    IPage<ManageRecordCancel> pageManageRecordCancel(Page page, ManageRecordCancel manageRecordCancel);
    int ratifyManageRecordCancel(Integer id, String ratifyState);
    String exportOutManageRecordCancel(ManageRecordCancel manageRecordCancel, HttpServletResponse response);
    int exportInManageRecordCancel(MultipartFile file);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordCheckService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordCheck;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
public interface ManageRecordCheckService extends IService<ManageRecordCheck> {
    IPage<ManageRecordCheck> pageManageRecordCheck(Page page, ManageRecordCheck manageRecordCheck);
    int checkManageRecordCheck(Integer id, String checkState);
    int ratifyManageRecordCheck(Integer id, String ratifyState);
    String exportOutManageRecordCheck(ManageRecordCheck manageRecordCheck, HttpServletResponse response);
    int exportInManageRecordCheck(MultipartFile file);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIntervalsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordIntervals;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
public interface ManageRecordIntervalsService extends IService<ManageRecordIntervals> {
    IPage<ManageRecordIntervals> pageManageRecordIntervals(Page page, ManageRecordIntervals manageRecordIntervals);
    String exportOutManageRecordIntervals(ManageRecordIntervals manageRecordIntervals, HttpServletResponse response);
    int exportInManageRecordIntervals(MultipartFile file);
    int addManageRecordIntervals(ManageRecordIntervals manageRecordIntervals);
    int delManageRecordIntervals(Integer id);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIntervalsTotalService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordIntervalsTotal;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
public interface ManageRecordIntervalsTotalService extends IService<ManageRecordIntervalsTotal> {
    IPage<ManageRecordIntervalsTotal> pageManageRecordIntervalsTotal(Page page, ManageRecordIntervalsTotal manageRecordIntervalsTotal);
    int submitManageRecordIntervalsTotal(Integer id);
    int ratifyManageRecordIntervalsTotal(Integer id, String ratifyState);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIssueRecycleService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordIssueRecycle;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
public interface ManageRecordIssueRecycleService extends IService<ManageRecordIssueRecycle> {
    IPage<ManageRecordIssueRecycle> pageManageRecordIssueRecycle(Page page, ManageRecordIssueRecycle manageRecordIssueRecycle);
    String exportOutManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle, HttpServletResponse response);
    int exportInManageRecordIssueRecycle(MultipartFile file);
    int addManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle);
    int doManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordTotalService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordTotal;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
public interface ManageRecordTotalService extends IService<ManageRecordTotal> {
    IPage<ManageRecordTotal> pageManageRecordTotal(Page page, ManageRecordTotal manageRecordTotal);
    int submitManageRecordTotal(Integer id);
    int ratifyManageRecordTotal(Integer id, String ratifyState);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordVerifyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.manage.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.manage.pojo.ManageRecordVerify;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
public interface ManageRecordVerifyService extends IService<ManageRecordVerify> {
    IPage<ManageRecordVerify> pageManageRecordVerify(Page page, ManageRecordVerify manageRecordVerify);
    int addManageRecordVerify(ManageRecordVerify manageRecordVerify);
    int delManageRecordVerify(Integer id);
    int exportManageRecordVerify(MultipartFile file);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewProgramFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.manage.pojo.ManageReviewProgramFile;
import com.ruoyi.manage.vo.ReviewProgramDetailsVo;
import org.springframework.web.multipart.MultipartFile;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
public interface ManageReviewProgramFileService extends IService<ManageReviewProgramFile> {
    ReviewProgramDetailsVo selectFile(Integer id);
    void addFile(MultipartFile file,Integer id);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewProgramService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.manage.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.manage.pojo.ManageReviewProgram;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
public interface ManageReviewProgramService extends IService<ManageReviewProgram> {
    IPage<ManageReviewProgram> page(Page page,String startTime,String endTime, String judgingLocation);
    void exportReviewProgram(Integer id, HttpServletResponse response);
    int addReviewProgram(ManageReviewProgram manageReviewProgram);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.manage.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.manage.pojo.ManageReviewReport;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * ç®¡ç†è¯„审报告 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
public interface ManageReviewReportService extends IService<ManageReviewReport> {
    IPage<ManageReviewReport> page(Page page, String startTime, String endTime, String place);
    void exportReviewReport(Integer id, HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRiskAssessmentResultsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.manage.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.manage.pojo.ManageRiskAssessmentResults;
import com.ruoyi.manage.vo.ManageRiskAssessmentResultsVo;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
public interface ManageRiskAssessmentResultsService extends IService<ManageRiskAssessmentResults> {
    IPage<ManageRiskAssessmentResultsVo> getPageResults(Page page);
    void exportPersonTraining(HttpServletResponse response);
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ClientSatisfactionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,188 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.dto.ClientSatisfactionDto;
import com.ruoyi.manage.mapper.ClientSatisfactionAnalyseFileMapper;
import com.ruoyi.manage.mapper.ClientSatisfactionMapper;
import com.ruoyi.manage.pojo.ClientSatisfaction;
import com.ruoyi.manage.pojo.ClientSatisfactionAnalyseFile;
import com.ruoyi.manage.service.ClientSatisfactionService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import org.springframework.web.multipart.MultipartFile;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Service
public class ClientSatisfactionServiceImpl extends ServiceImpl<ClientSatisfactionMapper, ClientSatisfaction> implements ClientSatisfactionService {
    @Resource
    private ClientSatisfactionAnalyseFileMapper clientSatisfactionAnalyseFileMapper;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Value("${wordUrl}")
    private String wordUrl;
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     *
     * @param page
     * @param clientSatisfaction
     * @return
     */
    @Override
    public IPage<ClientSatisfaction> pageClientSatisfaction(Page page, ClientSatisfaction clientSatisfaction) {
        return baseMapper.pageClientSatisfaction(page, QueryWrappers.queryWrappers(clientSatisfaction));
    }
    /**
     * æ–°å¢žå®¢æˆ·åˆ†æžé™„ä»¶
     *
     * @param file
     * @return
     */
    @Override
    public boolean uploadAnalyseFile(MultipartFile file) {
        String urlString;
        String pathName;
        String path;
        String filename = file.getOriginalFilename();
        String contentType = file.getContentType();
        ClientSatisfactionAnalyseFile analyseFile = new ClientSatisfactionAnalyseFile();
        analyseFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // æ˜¯å›¾ç‰‡
            path = imgUrl;
            analyseFile.setType(1);
        } else {
            // æ˜¯æ–‡ä»¶
            path = wordUrl;
            analyseFile.setType(2);
        }
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            analyseFile.setFileUrl(pathName);
            clientSatisfactionAnalyseFileMapper.insert(analyseFile);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            throw new ErrorException(e.getMessage());
        }
    }
    /**
     * æŸ¥è¯¢å®¢æˆ·åˆ†æžé™„ä»¶
     *
     * @param page
     * @param analyseFile
     * @return
     */
    @Override
    public IPage<ClientSatisfactionAnalyseFile> pageAnalyseFile(Page page, ClientSatisfactionAnalyseFile analyseFile) {
        return clientSatisfactionAnalyseFileMapper.pageAnalyseFile(page, QueryWrappers.queryWrappers(analyseFile));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     *
     * @param clientSatisfactionId
     * @param response
     */
    @Override
    public void exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response) {
        // æŸ¥è¯¢å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥
        ClientSatisfactionDto clientSatisfaction = baseMapper.exportWordClientSatisfaction(clientSatisfactionId);
        if (clientSatisfaction == null) {
            throw new RuntimeException("客户满意度调查不存在");
        }
        // æŸ¥è¯¢ç¡®è®¤äººçš„签名
        String confirmPersonUrl = null;
        // çŠ¶æ€ä¸ºç¡®è®¤ä¸”ç¡®è®¤äººä¸ä¸ºç©º
        if (clientSatisfaction.getConfirmStatus() != null && clientSatisfaction.getConfirmStatus() != 0 && clientSatisfaction.getConfirmPersonId() != null) {
            confirmPersonUrl = userMapper.selectById(clientSatisfaction.getConfirmPersonId()).getSignatureUrl();
            if (StringUtils.isBlank(confirmPersonUrl)) {
                throw new ErrorException("找不到验证人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/customer-satisfaction-questionnaire.docx");
        ConfigureBuilder builder = Configure.builder();
        String finalConfirmPersonUrl = confirmPersonUrl;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("clientSatisfaction", clientSatisfaction);
                    put("finalConfirmPersonUrl", StringUtils.isNotBlank(finalConfirmPersonUrl) ? Pictures.ofLocal(imgUrl + "/" + finalConfirmPersonUrl).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "客户满意度", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * ç¡®è®¤å®¢æˆ·æ»¡æ„åº¦
     *
     * @param clientSatisfaction è¦ä¿®æ”¹å®¢æˆ·æ»¡æ„åº¦çš„状态对象
     * @param userId             ä¿®æ”¹äººid
     */
    @Override
    public void confirmClientSatisfaction(ClientSatisfaction clientSatisfaction, Integer userId) {
        User user = userMapper.selectById(userId);
        if (user != null) {
            clientSatisfaction.setConfirmPerson(user.getName());
            clientSatisfaction.setConfirmPersonId(user.getId().intValue());
        }
        clientSatisfaction.setConfirmStatus(1);
        baseMapper.updateById(clientSatisfaction);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCheckDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.manage.mapper.InternalCheckDetailMapper;
import com.ruoyi.manage.pojo.InternalCheckDetail;
import com.ruoyi.manage.service.InternalCheckDetailService;
import org.springframework.stereotype.Service;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
public class InternalCheckDetailServiceImpl extends ServiceImpl<InternalCheckDetailMapper, InternalCheckDetail> implements InternalCheckDetailService {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCheckServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,232 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.DateImageUtil;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.manage.dto.InternalCheckDto;
import com.ruoyi.manage.mapper.InternalCheckMapper;
import com.ruoyi.manage.pojo.InternalCheck;
import com.ruoyi.manage.pojo.InternalCheckDetail;
import com.ruoyi.manage.service.InternalCheckDetailService;
import com.ruoyi.manage.service.InternalCheckService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalCheckServiceImpl extends ServiceImpl<InternalCheckMapper, InternalCheck> implements InternalCheckService {
    @Resource
    private InternalCheckDetailService internalCheckDetailService;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审检查分页查询
     * @param page
     * @param internalCheck
     * @return
     */
    @Override
    public IPage<InternalCheckDto> pageInternalCheck(Page page, InternalCheck internalCheck) {
        return baseMapper.pageInternalCheck(page, QueryWrappers.queryWrappers(internalCheck));
    }
    /**
     * å†…审检查新增
     * @param internalCheck
     * @return
     */
    @Override
    public boolean addInternalCheck(InternalCheckDto internalCheck) {
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ·»åŠ ç¼–åˆ¶äºº
        User user = userMapper.selectById(userId);
        internalCheck.setWriteTime(LocalDateTime.now());
        internalCheck.setWriteUserId(user.getId());
        internalCheck.setWriteUserName(user.getName());
        baseMapper.insert(internalCheck);
        // æ–°å¢žè¯¦æƒ…
        for (InternalCheckDetail internalCheckDetail : internalCheck.getCheckDetailList()) {
            internalCheckDetail.setCheckId(internalCheck.getCheckId());
        }
        internalCheckDetailService.saveBatch(internalCheck.getCheckDetailList());
        return true;
    }
    /**
     * å†…审检查修改
     * @param internalCheck
     * @return
     */
    @Override
    public boolean updateInternalCheck(InternalCheckDto internalCheck) {
        baseMapper.updateById(internalCheck);
        // åˆ é™¤ä¹‹å‰çš„详情
        internalCheckDetailService.remove(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, internalCheck.getCheckId()));
        // æ–°å¢žè¯¦æƒ…
        for (InternalCheckDetail internalCheckDetail : internalCheck.getCheckDetailList()) {
            internalCheckDetail.setCheckId(internalCheck.getCheckId());
        }
        internalCheckDetailService.saveBatch(internalCheck.getCheckDetailList());
        return true;
    }
    /**
     * å†…审检查删除
     * @param CheckId
     * @return
     */
    @Override
    public boolean delInternalCheck(Integer CheckId) {
        internalCheckDetailService.remove(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, CheckId));
        baseMapper.deleteById(CheckId);
        return true;
    }
    /**
     * å†…审检查查看详情
     * @param CheckId
     * @return
     */
    @Override
    public InternalCheckDto getInternalCheckOne(Integer CheckId) {
        InternalCheck internalCheck = baseMapper.selectById(CheckId);
        InternalCheckDto internalCheckDto = new InternalCheckDto();
        BeanUtils.copyProperties(internalCheck, internalCheckDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalCheckDto.setCheckDetailList(internalCheckDetailService.list(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, CheckId)));
        return internalCheckDto;
    }
    /**
     * å†…审检查批准
     * @param internalCheck
     * @return
     */
    @Override
    public boolean ratifyInternalCheck(InternalCheckDto internalCheck) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalCheck>lambdaUpdate()
                .eq(InternalCheck::getCheckId, internalCheck.getCheckId())
                .set(InternalCheck::getRatifyUserId, userId)
                .set(InternalCheck::getRatifyUserName, user.getName())
                .set(InternalCheck::getRatifyRemark, internalCheck.getRatifyRemark())
                .set(InternalCheck::getRatifyStatus, internalCheck.getRatifyStatus())
                .set(InternalCheck::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审检查
     * @param checkId
     * @param response
     */
    @Override
    public void exportInternalCheck(Integer checkId, HttpServletResponse response) {
        InternalCheck internalCheck = baseMapper.selectById(checkId);
        //获取提交人的签名地址
        String writeUrl = userMapper.selectById(internalCheck.getWriteUserId()).getSignatureUrl();
        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (internalCheck.getRatifyUserId() != null) {
            ratifyUrl = userMapper.selectById(internalCheck.getRatifyUserId()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        // æŸ¥è¯¢è¯¦æƒ…
        List<InternalCheckDetail> internalCheckDetails = internalCheckDetailService.list(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, checkId));
        int index = 1;
        for (InternalCheckDetail detail : internalCheckDetails) {
            detail.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-check.docx");
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("checkDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("check", internalCheck);
                    put("checkDetailList", internalCheckDetails);
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", internalCheck.getWriteTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalCheck.getWriteTime())).create() : null);
                    put("ratifyDateUrl", internalCheck.getRatifyTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalCheck.getRatifyTime())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审检查", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCorrectFileServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.manage.mapper.InternalCorrectFileMapper;
import com.ruoyi.manage.pojo.InternalCorrectFile;
import com.ruoyi.manage.service.InternalCorrectFileService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å†…审管理纠正措施附件表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
@Service
public class InternalCorrectFileServiceImpl extends ServiceImpl<InternalCorrectFileMapper, InternalCorrectFile> implements InternalCorrectFileService {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCorrectServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,319 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.dto.InternalCorrectDto;
import com.ruoyi.manage.mapper.InternalCorrectFileMapper;
import com.ruoyi.manage.mapper.InternalCorrectMapper;
import com.ruoyi.manage.pojo.InternalCorrect;
import com.ruoyi.manage.pojo.InternalCorrectFile;
import com.ruoyi.manage.service.InternalCorrectService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * å†…审管理纠正处理表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalCorrectServiceImpl extends ServiceImpl<InternalCorrectMapper, InternalCorrect> implements InternalCorrectService {
    @Resource
    private InternalCorrectFileMapper internalCorrectFileMapper;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public boolean addInternalCorrect(InternalCorrect detailsCorrect) {
        InternalCorrect correct = new InternalCorrect();
        // å½“前登录用户信息和部门
        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
        String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
        switch (detailsCorrect.getFlowType()) {
            // ä¸åˆæ ¼æå‡º
            case 0:
                correct.setRaiseResult(detailsCorrect.getRaiseResult());//不合格表述
                correct.setVdeRaiseResult(detailsCorrect.getVdeRaiseResult());//vde专家发现
                correct.setRaiseDepartment(departmentLimsName);//提出部门
                correct.setRaiseUserId(user.getId());//提出人id
                correct.setRaiseUserName(user.getName());// æå‡ºäºº
                correct.setRaiseTime(LocalDate.now());// æå‡ºæ—¶é—´
                // åŽŸå› åˆ†æžäººä¿¡æ¯
                User causeUser = userMapper.selectById(detailsCorrect.getCauseUserId());
                String causeDepartmentLims = userMapper.selectUserDepartmentLimsName(causeUser.getId());
                correct.setCauseDepartment(causeDepartmentLims);//原因分析责任部门
                correct.setCauseUserId(causeUser.getId());//1原因分析人id
                correct.setCauseUserName(causeUser.getName());// 1原因分析人
                baseMapper.insert(correct);
                break;
            // åŽŸå› åˆ†æž
            case 1:
                correct.setCorrectId(detailsCorrect.getCorrectId());
                correct.setCauseResult(detailsCorrect.getCauseResult());//原因分析
                correct.setCauseTime(LocalDate.now());// 1原因分析时间
                // çº æ­£äººä¿¡æ¯
                User correctUser = userMapper.selectById(detailsCorrect.getCorrectUserId());
                String correctUserDepartmentLims = userMapper.selectUserDepartmentLimsName(correctUser.getId());
                correct.setCorrectDepartment(correctUserDepartmentLims);//2纠正责任部门
                correct.setCorrectUserId(correctUser.getId());//2纠正人id
                correct.setCorrectUserName(correctUser.getName());// 2纠正人
                baseMapper.updateById(correct);
                break;
            // çº æ­£æŽªæ–½
            case 2:
                correct.setCorrectId(detailsCorrect.getCorrectId());
                correct.setCorrectResult(detailsCorrect.getCorrectResult());//2纠正措施
                correct.setRaiseDepartmentAffirm(detailsCorrect.getRaiseDepartmentAffirm());//2提出部门确认
                correct.setCorrectTime(LocalDate.now());// 2纠正时间
                // éªŒè¯äººä¿¡æ¯
                User validationUser = userMapper.selectById(detailsCorrect.getValidationUserId());
                String validationUserDepartmentLims = userMapper.selectUserDepartmentLimsName(validationUser.getId());
                correct.setValidationDepartment(validationUserDepartmentLims);//3验证部门
                correct.setValidationUserId(validationUser.getId());//3验证人id
                correct.setValidationUserName(validationUser.getName());// 3验证人
                baseMapper.updateById(correct);
                break;
            // éªŒè¯ç»“æžœ
            case 3:
                correct.setCorrectId(detailsCorrect.getCorrectId());
                correct.setValidationResult(detailsCorrect.getValidationResult());//3验证结果
                correct.setValidationTime(LocalDate.now());// 3验证时间
                correct.setIsFinish(1);
                baseMapper.updateById(correct);
                break;
        }
        return true;
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正处理
     * @param correctId
     * @return
     */
    @Override
    public InternalCorrect getInternalCorrect(Integer correctId) {
        InternalCorrect detailsCorrect;
        detailsCorrect = baseMapper.selectOne(Wrappers.<InternalCorrect>lambdaQuery()
                .eq(InternalCorrect::getCorrectId, correctId));
        if (detailsCorrect == null) {
            detailsCorrect = new InternalCorrect();
        }
        return detailsCorrect;
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施列表
     * @param page
     * @param detailsCorrect
     * @return
     */
    @Override
    public IPage<InternalCorrect> pageInternalCorrect(Page page, InternalCorrect detailsCorrect) {
        return baseMapper.pageInternalAccording(page, QueryWrappers.queryWrappers(detailsCorrect));
    }
    /**
     * æ–°å¢žå†…审管理纠正措施附件
     * @param InternalCorrectId
     * @param file
     * @return
     */
    @Override
    public boolean uploadInternalCorrectFile(Integer InternalCorrectId, MultipartFile file) {
        if (InternalCorrectId == null) {
            throw new ErrorException("缺少纠正措施id");
        }
        String urlString;
        String pathName;
        String path;
        String filename = file.getOriginalFilename();
        String contentType = file.getContentType();
        InternalCorrectFile InternalCorrectFile = new InternalCorrectFile();
        InternalCorrectFile.setCorrectId(InternalCorrectId);
        InternalCorrectFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // æ˜¯å›¾ç‰‡
            path = imgUrl;
            InternalCorrectFile.setType(1);
        } else {
            // æ˜¯æ–‡ä»¶
            path = wordUrl;
            InternalCorrectFile.setType(2);
        }
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            InternalCorrectFile.setFileUrl(pathName);
            internalCorrectFileMapper.insert(InternalCorrectFile);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            throw new ErrorException(e.getMessage());
        }
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施附件
     * @param correctId
     * @return
     */
    @Override
    public List<InternalCorrectFile> getInternalCorrectFileList(Integer correctId) {
        return internalCorrectFileMapper.selectList(Wrappers.<InternalCorrectFile>lambdaQuery()
                .eq(InternalCorrectFile::getCorrectId, correctId));
    }
    /**
     * å¯¼å‡ºçº æ­£æŽªæ–½
     * @param correctId
     * @param response
     */
    @Override
    public void exportInternalCorrect(Integer correctId, HttpServletResponse response) {
        InternalCorrect internalCorrect = baseMapper.selectById(correctId);
        InternalCorrectDto internalCorrectDto = new InternalCorrectDto();
        BeanUtils.copyProperties(internalCorrect, internalCorrectDto);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        // æå‡ºæ—¶é—´
        internalCorrectDto.setRaiseTimeString(internalCorrect.getRaiseTime() != null
                ? internalCorrect.getRaiseTime().format(formatter) : null);
        // åŽŸå› åˆ†æžæ—¶é—´
        internalCorrectDto.setCauseTimeString(internalCorrect.getCauseTime() != null
                ? internalCorrect.getCauseTime().format(formatter) : null);
        // çº æ­£æ—¶é—´
        internalCorrectDto.setCorrectTimeString(internalCorrect.getCorrectTime() != null
                ? internalCorrect.getCorrectTime().format(formatter) : null);
        // éªŒè¯æ—¶é—´
        internalCorrectDto.setValidationTimeString(internalCorrect.getValidationTime() != null
                ? internalCorrect.getValidationTime().format(formatter) : null);
        // æå‡ºäººç­¾å
        String raiseUrl = null;
        if (internalCorrect.getRaiseUserId() != null) {
            raiseUrl = userMapper.selectById(internalCorrect.getRaiseUserId()).getSignatureUrl();
            if (StringUtils.isBlank(raiseUrl)) {
                throw new ErrorException("找不到提出人的签名");
            }
        }
        // åŽŸå› åˆ†æžäºº
        String causeUrl = null;
        if (internalCorrect.getCauseUserId() != null) {
            causeUrl = userMapper.selectById(internalCorrect.getCauseUserId()).getSignatureUrl();
            if (StringUtils.isBlank(causeUrl)) {
                throw new ErrorException("找不到原因分析人的签名");
            }
        }
        // çº æ­£äºº
        String correctUrl = null;
        if (internalCorrect.getCorrectUserId() != null) {
            correctUrl = userMapper.selectById(internalCorrect.getCorrectUserId()).getSignatureUrl();
            if (StringUtils.isBlank(correctUrl)) {
                throw new ErrorException("找不到纠正人的签名");
            }
        }
        // éªŒè¯äºº
        String validationUrl = null;
        if (internalCorrect.getValidationUserId() != null) {
            validationUrl = userMapper.selectById(internalCorrect.getValidationUserId()).getSignatureUrl();
            if (StringUtils.isBlank(validationUrl)) {
                throw new ErrorException("找不到验证人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-correct.docx");
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        String finalRaiseUrl = raiseUrl;
        String finalCauseUrl = causeUrl;
        String finalCorrectUrl = correctUrl;
        String finalValidationUrl = validationUrl;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("correct", internalCorrectDto);
                    put("raiseUrl", StringUtils.isNotBlank(finalRaiseUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRaiseUrl).create() : null);
                    put("causeUrl", StringUtils.isNotBlank(finalCauseUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCauseUrl).create() : null);
                    put("correctUrl", StringUtils.isNotBlank(finalCorrectUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCorrectUrl).create() : null);
                    put("validationUrl", StringUtils.isNotBlank(finalValidationUrl) ? Pictures.ofLocal(imgUrl + "/" + finalValidationUrl).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审纠正措施", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalImplementDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.manage.mapper.InternalImplementDetailMapper;
import com.ruoyi.manage.pojo.InternalImplementDetail;
import com.ruoyi.manage.service.InternalImplementDetailService;
import org.springframework.stereotype.Service;
/**
 * å†…审实施计划详情
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
public class InternalImplementDetailServiceImpl extends ServiceImpl<InternalImplementDetailMapper, InternalImplementDetail> implements InternalImplementDetailService {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalImplementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,231 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.DateImageUtil;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.manage.dto.InternalImplementDto;
import com.ruoyi.manage.mapper.InternalImplementMapper;
import com.ruoyi.manage.pojo.InternalImplement;
import com.ruoyi.manage.pojo.InternalImplementDetail;
import com.ruoyi.manage.service.InternalImplementDetailService;
import com.ruoyi.manage.service.InternalImplementService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalImplementServiceImpl extends ServiceImpl<InternalImplementMapper, InternalImplement> implements InternalImplementService {
    @Resource
    private InternalImplementDetailService internalImplementDetailService;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审实施计划分页查询
     * @param page
     * @param internalImplement
     * @return
     */
    @Override
    public IPage<InternalImplementDto> pageInternalImplement(Page page, InternalImplement internalImplement) {
        return baseMapper.pageInternalImplement(page, QueryWrappers.queryWrappers(internalImplement));
    }
    /**
     * å†…审实施计划新增
     * @param internalImplement
     * @return
     */
    @Override
    public boolean addInternalImplement(InternalImplementDto internalImplement) {
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ·»åŠ ç¼–åˆ¶äºº
        User user = userMapper.selectById(userId);
        internalImplement.setWriteTime(LocalDateTime.now());
        internalImplement.setWriteUserId(user.getId());
        internalImplement.setWriteUserName(user.getName());
        baseMapper.insert(internalImplement);
        // æ–°å¢žè¯¦æƒ…
        for (InternalImplementDetail internalImplementDetail : internalImplement.getImplementDetailList()) {
            internalImplementDetail.setImplementId(internalImplement.getImplementId());
        }
        internalImplementDetailService.saveBatch(internalImplement.getImplementDetailList());
        return true;
    }
    /**
     * å†…审实施计划修改
     * @param internalImplement
     * @return
     */
    @Override
    public boolean updateInternalImplement(InternalImplementDto internalImplement) {
        baseMapper.updateById(internalImplement);
        // åˆ é™¤ä¹‹å‰çš„详情
        internalImplementDetailService.remove(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, internalImplement.getImplementId()));
        // æ–°å¢žè¯¦æƒ…
        for (InternalImplementDetail internalImplementDetail : internalImplement.getImplementDetailList()) {
            internalImplementDetail.setImplementId(internalImplement.getImplementId());
        }
        internalImplementDetailService.saveBatch(internalImplement.getImplementDetailList());
        return true;
    }
    /**
     * å†…审实施计划删除
     * @param implementId
     * @return
     */
    @Override
    public boolean delInternalImplement(Integer implementId) {
        internalImplementDetailService.remove(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, implementId));
        baseMapper.deleteById(implementId);
        return true;
    }
    /**
     * å†…审实施计划查看详情
     * @param implementId
     * @return
     */
    @Override
    public InternalImplementDto getInternalImplementOne(Integer implementId) {
        InternalImplement internalImplement = baseMapper.selectById(implementId);
        InternalImplementDto internalImplementDto = new InternalImplementDto();
        BeanUtils.copyProperties(internalImplement, internalImplementDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalImplementDto.setImplementDetailList(internalImplementDetailService.list(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, implementId)));
        return internalImplementDto;
    }
    /**
     * å†…审实施计划批准
     * @param internalImplement
     * @return
     */
    @Override
    public boolean ratifyInternalImplement(InternalImplementDto internalImplement) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalImplement>lambdaUpdate()
                .eq(InternalImplement::getImplementId, internalImplement.getImplementId())
                .set(InternalImplement::getRatifyUserId, userId)
                .set(InternalImplement::getRatifyUserName, user.getName())
                .set(InternalImplement::getRatifyRemark, internalImplement.getRatifyRemark())
                .set(InternalImplement::getRatifyStatus, internalImplement.getRatifyStatus())
                .set(InternalImplement::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审实施计划
     * @param implementId
     * @param response
     */
    @Override
    public void exportInternalImplement(Integer implementId, HttpServletResponse response) {
        InternalImplement internalImplement = baseMapper.selectById(implementId);
        //获取提交人的签名地址
        String writeUrl = userMapper.selectById(internalImplement.getWriteUserId()).getSignatureUrl();
        if (StringUtils.isBlank(writeUrl)) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (internalImplement.getRatifyUserId() != null) {
            ratifyUrl = userMapper.selectById(internalImplement.getRatifyUserId()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到批准人的签名");
            }
        }
        // æŸ¥è¯¢è¯¦æƒ…
        List<InternalImplementDetail> detailList = internalImplementDetailService.list(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, implementId));
        int index = 1;
        for (InternalImplementDetail detail : detailList) {
            detail.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-implement.docx");
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("implementDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("implement", internalImplement);
                    put("implementDetailList", detailList);
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", internalImplement.getWriteTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalImplement.getWriteTime())).create() : null);
                    put("ratifyDateUrl", internalImplement.getRatifyTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalImplement.getRatifyTime())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    internalImplement.getPurposes(), "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.manage.mapper.InternalMeetingDetailMapper;
import com.ruoyi.manage.pojo.InternalMeetingDetail;
import com.ruoyi.manage.service.InternalMeetingDetailService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å†…审会议详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
@Service
public class InternalMeetingDetailServiceImpl extends ServiceImpl<InternalMeetingDetailMapper, InternalMeetingDetail> implements InternalMeetingDetailService {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,173 @@
package com.ruoyi.manage.service.impl;
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;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.manage.dto.InternalMeetingDto;
import com.ruoyi.manage.dto.InternalMeetingParticipantDto;
import com.ruoyi.manage.mapper.InternalMeetingMapper;
import com.ruoyi.manage.pojo.InternalMeeting;
import com.ruoyi.manage.pojo.InternalMeetingDetail;
import com.ruoyi.manage.service.InternalMeetingDetailService;
import com.ruoyi.manage.service.InternalMeetingService;
import com.ruoyi.system.mapper.UserMapper;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * å†…审会议表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
@Service
@AllArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class InternalMeetingServiceImpl extends ServiceImpl<InternalMeetingMapper, InternalMeeting> implements InternalMeetingService {
    private InternalMeetingDetailService internalMeetingDetailService;
    private UserMapper userMapper;
    /**
     * å†…审会议分页查询
     * @param page
     * @param internalMeeting
     * @return
     */
    @Override
    public IPage<InternalMeetingDto> pageInternalMeeting(Page page, InternalMeeting internalMeeting) {
        return baseMapper.pageInternalMeeting(page, QueryWrappers.queryWrappers(internalMeeting));
    }
    /**
     * å†…审会议新增
     * @param internalMeeting
     * @return
     */
    @Override
    public boolean addInternalMeeting(InternalMeetingDto internalMeeting) {
        baseMapper.insert(internalMeeting);
        return true;
    }
    /**
     * å†…审会议修改
     * @param internalMeeting
     * @return
     */
    @Override
    public boolean updateInternalMeeting(InternalMeetingDto internalMeeting) {
        baseMapper.updateById(internalMeeting);
        internalMeetingDetailService.saveBatch(internalMeeting.getMeetingDetailList());
        return true;
    }
    /**
     * å†…审会议删除
     * @param MeetingId
     * @return
     */
    @Override
    public boolean delInternalMeeting(Integer MeetingId) {
        internalMeetingDetailService.remove(Wrappers.<InternalMeetingDetail>lambdaQuery()
                .eq(InternalMeetingDetail::getMeetingId, MeetingId));
        baseMapper.deleteById(MeetingId);
        return true;
    }
    /**
     * å†…审会议查看详情
     * @param MeetingId
     * @return
     */
    @Override
    public InternalMeetingDto getInternalMeetingOne(Integer MeetingId) {
        InternalMeeting internalMeeting = baseMapper.selectById(MeetingId);
        InternalMeetingDto internalMeetingDto = new InternalMeetingDto();
        BeanUtils.copyProperties(internalMeeting, internalMeetingDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalMeetingDto.setMeetingDetailList(internalMeetingDetailService.list(Wrappers.<InternalMeetingDetail>lambdaQuery()
                .eq(InternalMeetingDetail::getMeetingId, MeetingId)));
        return internalMeetingDto;
    }
    /**
     * å¯¼å‡ºå†…审会议
     * @param meetingId
     * @param response
     */
    @Override
    public void exportInternalMeeting(Integer meetingId, HttpServletResponse response) {
        InternalMeeting internalMeeting = baseMapper.selectById(meetingId);
        // æŸ¥è¯¢å‚加人员
        List<Map<String, String>> mapList = userMapper.selectNameAnddepartment(internalMeeting.getParticipant());
        // åˆ›å»ºç©ºå¯¹è±¡
        List<InternalMeetingParticipantDto> participants = new ArrayList<>();
        for (int i = 0; i < mapList.size();) {
            InternalMeetingParticipantDto internalMeetingParticipantDto = new InternalMeetingParticipantDto();
            if (i < mapList.size()) {
                internalMeetingParticipantDto.setUserName1(mapList.get(i).get("userName"));
                internalMeetingParticipantDto.setDepartment1(mapList.get(i).get("department"));
                i++;
            }
            if (i < mapList.size()) {
                internalMeetingParticipantDto.setUserName2(mapList.get(i).get("userName"));
                internalMeetingParticipantDto.setDepartment2(mapList.get(i).get("department"));
                i++;
            }
            if (i < mapList.size()) {
                internalMeetingParticipantDto.setUserName3(mapList.get(i).get("userName"));
                internalMeetingParticipantDto.setDepartment3(mapList.get(i).get("department"));
                i++;
            }
            participants.add(internalMeetingParticipantDto);
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-meeting.docx");
        Configure configure = Configure.builder()
                .bind("meetingDetails", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("meeting", internalMeeting);
                    put("meetingDetails", participants);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    internalMeeting.getMeetingDate() + "内审会议签到", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalPlanDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.manage.mapper.InternalPlanDetailMapper;
import com.ruoyi.manage.pojo.InternalPlanDetail;
import com.ruoyi.manage.service.InternalPlanDetailService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å†…审年度计划详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
@Service
public class InternalPlanDetailServiceImpl extends ServiceImpl<InternalPlanDetailMapper, InternalPlanDetail> implements InternalPlanDetailService {
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalPlanServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,252 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.manage.dto.InternalPlanDto;
import com.ruoyi.manage.mapper.InternalPlanMapper;
import com.ruoyi.manage.pojo.InternalPlan;
import com.ruoyi.manage.pojo.InternalPlanDetail;
import com.ruoyi.manage.service.InternalPlanDetailService;
import com.ruoyi.manage.service.InternalPlanService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * å†…审年度计划 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalPlanServiceImpl extends ServiceImpl<InternalPlanMapper, InternalPlan> implements InternalPlanService {
    @Resource
    private InternalPlanDetailService internalPlanDetailService;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审年度计划分页查询
     * @param page
     * @param internalPlan
     * @return
     */
    @Override
    public IPage<InternalPlanDto> pageInternalPlan(Page page, InternalPlan internalPlan) {
        return baseMapper.pageInternalPlan(page, QueryWrappers.queryWrappers(internalPlan));
    }
    /**
     * å†…审年度计划新增
     * @param internalPlan
     * @return
     */
    @Override
    public boolean addInternalPlan(InternalPlanDto internalPlan) {
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ·»åŠ ç¼–åˆ¶äºº
        User user = userMapper.selectById(userId);
        internalPlan.setWriteTime(LocalDateTime.now());
        internalPlan.setWriteUserId(user.getId());
        internalPlan.setWriteUserName(user.getName());
        baseMapper.insert(internalPlan);
        // æ–°å¢žè¯¦æƒ…
        for (InternalPlanDetail internalPlanDetail : internalPlan.getPlanDetailList()) {
            internalPlanDetail.setPlanId(internalPlan.getPlanId());
        }
        internalPlanDetailService.saveBatch(internalPlan.getPlanDetailList());
        return true;
    }
    /**
     * å†…审年度计划修改
     * @param internalPlan
     * @return
     */
    @Override
    public boolean updateInternalPlan(InternalPlanDto internalPlan) {
        baseMapper.updateById(internalPlan);
        // åˆ é™¤ä¹‹å‰çš„详情
        internalPlanDetailService.remove(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, internalPlan.getPlanId()));
        // æ–°å¢žè¯¦æƒ…
        for (InternalPlanDetail internalPlanDetail : internalPlan.getPlanDetailList()) {
            internalPlanDetail.setPlanId(internalPlan.getPlanId());
        }
        internalPlanDetailService.saveBatch(internalPlan.getPlanDetailList());
        return true;
    }
    /**
     * å†…审年度计划删除
     * @param planId
     * @return
     */
    @Override
    public boolean delInternalPlan(Integer planId) {
        internalPlanDetailService.remove(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, planId));
        baseMapper.deleteById(planId);
        return true;
    }
    /**
     * å†…审年度计划查看详情
     * @param planId
     * @return
     */
    @Override
    public InternalPlanDto getInternalPlanOne(Integer planId) {
        InternalPlan internalPlan = baseMapper.selectById(planId);
        InternalPlanDto internalPlanDto = new InternalPlanDto();
        BeanUtils.copyProperties(internalPlan, internalPlanDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalPlanDto.setPlanDetailList(internalPlanDetailService.list(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, planId)));
        return internalPlanDto;
    }
    /**
     * å†…审年度计划审核
     * @param internalPlanDto
     * @return
     */
    @Override
    public boolean examineInternalPlan(InternalPlanDto internalPlanDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalPlan>lambdaUpdate()
                .eq(InternalPlan::getPlanId, internalPlanDto.getPlanId())
                .set(InternalPlan::getExamineUserId, userId)
                .set(InternalPlan::getExamineUserName, user.getName())
                .set(InternalPlan::getExamineRemark, internalPlanDto.getExamineRemark())
                .set(InternalPlan::getExamineStatus, internalPlanDto.getExamineStatus())
                .set(InternalPlan::getExamineTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å†…审年度计划批准
     * @param internalPlanDto
     * @return
     */
    @Override
    public boolean ratifyInternalPlan(InternalPlanDto internalPlanDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalPlan>lambdaUpdate()
                .eq(InternalPlan::getPlanId, internalPlanDto.getPlanId())
                .set(InternalPlan::getRatifyUserId, userId)
                .set(InternalPlan::getRatifyUserName, user.getName())
                .set(InternalPlan::getRatifyRemark, internalPlanDto.getRatifyRemark())
                .set(InternalPlan::getRatifyStatus, internalPlanDto.getRatifyStatus())
                .set(InternalPlan::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审年度计划
     * @param planId
     * @param response
     */
    @Override
    public void exportInternalImplement(Integer planId, HttpServletResponse response) {
        InternalPlan internalPlan = baseMapper.selectById(planId);
        //获取提交人的签名地址
        String writeUrl = userMapper.selectById(internalPlan.getWriteUserId()).getSignatureUrl();
        if (StringUtils.isBlank(writeUrl)) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取审核人的签名地址
        String examineUrl = null;
        if (internalPlan.getExamineUserId() != null) {
            examineUrl = userMapper.selectById(internalPlan.getExamineUserId()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到审核人的签名");
            }
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (internalPlan.getRatifyUserId() != null) {
            ratifyUrl = userMapper.selectById(internalPlan.getRatifyUserId()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到批准人的签名");
            }
        }
        // æŸ¥è¯¢è¯¦æƒ…
        List<InternalPlanDetail> planDetails = internalPlanDetailService.list(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, planId));
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-plan.docx");
        String finalExamineUrl = examineUrl;
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("planDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("plan", internalPlan);
                    put("planDetailList", planDetails);
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审年度计划", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalReportServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.mapper.InternalReportMapper;
import com.ruoyi.manage.pojo.InternalReport;
import com.ruoyi.manage.service.InternalReportService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalReportServiceImpl extends ServiceImpl<InternalReportMapper, InternalReport> implements InternalReportService {
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审报告分页查询
     * @param page
     * @param internalReport
     * @return
     */
    @Override
    public IPage<InternalReport> pageInternalReport(Page page, InternalReport internalReport) {
        return baseMapper.pageInternalReport(page, QueryWrappers.queryWrappers(internalReport));
    }
    /**
     * å†…审报告审核
     * @param internalReport
     * @return
     */
    @Override
    public boolean ratifyInternalCheck(InternalReport internalReport) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalReport>lambdaUpdate()
                .eq(InternalReport::getReportId, internalReport.getReportId())
                .set(InternalReport::getExamineUserId, userId)
                .set(InternalReport::getExamineUserName, user.getName())
                .set(InternalReport::getExamineRemark, internalReport.getExamineRemark())
                .set(InternalReport::getExamineStatus, internalReport.getExamineStatus())
                .set(InternalReport::getExamineTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å†…审报告质量负责人填写
     * @param internalReport
     * @return
     */
    @Override
    public boolean qualityInternalReport(InternalReport internalReport) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalReport>lambdaUpdate()
                .eq(InternalReport::getReportId, internalReport.getReportId())
                .set(InternalReport::getQualityUserId, userId)
                .set(InternalReport::getQualityUserName, user.getName())
                .set(InternalReport::getQualityRemark, internalReport.getQualityRemark())
                .set(InternalReport::getQualityStatus, internalReport.getQualityStatus())
                .set(InternalReport::getQualityTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审报告
     * @param reportId
     * @param response
     */
    @Override
    public void exportInternalReport(Integer reportId, HttpServletResponse response) {
        InternalReport internalReport = baseMapper.selectById(reportId);
        //获取审核人的签名地址
        String examineUrl = null;
        if (internalReport.getExamineUserId() != null) {
            examineUrl = userMapper.selectById(internalReport.getExamineUserId()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到审核人的签名");
            }
        }
        //获取质量负责人的签名地址
        String qualityUrl = null;
        if (internalReport.getQualityUserId() != null) {
            qualityUrl = userMapper.selectById(internalReport.getQualityUserId()).getSignatureUrl();
            if (StringUtils.isBlank(qualityUrl)) {
                throw new ErrorException("找不到质量负责人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-report.docx");
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        String finalExamineUrl = examineUrl;
        String finalQualityUrl = qualityUrl;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("report", internalReport);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).create() : null);
                    put("qualityUrl", StringUtils.isNotBlank(finalQualityUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).create() : null);
                    put("examineTime", internalReport.getExamineTime() != null ? internalReport.getExamineTime().format(formatter) : null);
                    put("qualityTime", internalReport.getQualityTime() != null ? internalReport.getQualityTime().format(formatter) : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审报告", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageControlPlanListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.utils.DateImageUtil;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.manage.mapper.ManageControlPlanListMapper;
import com.ruoyi.manage.pojo.ManageControlPlanList;
import com.ruoyi.manage.service.ManageControlPlanListService;
import com.ruoyi.manage.vo.ManageControlPlanListVo;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
@Service
public class ManageControlPlanListServiceImpl extends ServiceImpl<ManageControlPlanListMapper, ManageControlPlanList> implements ManageControlPlanListService {
    @Autowired
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Override
    public IPage<ManageControlPlanListVo> getPageList(Page page) {
        return baseMapper.getPageList(page, false);
    }
    @Override
    public void exportPersonTraining(HttpServletResponse response) {
        // æŸ¥è¯¢è¯¦æƒ…
        IPage<ManageControlPlanListVo> detailedDtos = baseMapper.getPageList(new Page(1, -1), true);
        if (detailedDtos.getRecords().isEmpty()) {
            throw new ErrorException("审核通过的数据为空!请审核通过后在导出");
        }
        ManageControlPlanListVo manageRiskAssessmentResultsVo = detailedDtos.getRecords().get(0);
        //获取编制人的签名地址
        String writeUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getEditor()).getSignatureUrl();
        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取复核人的签名地址
        String examineUrl = null;
        if (manageRiskAssessmentResultsVo.getApproval() != null) {
            examineUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getApproval()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (manageRiskAssessmentResultsVo.getApproval() != null) {
            ratifyUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getApproval()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        int index = 1;
        for (ManageControlPlanListVo detailedDto : detailedDtos.getRecords()) {
            detailedDto.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/analysis-risk-factors.docx");
        String finalExamineUrl = examineUrl;
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("trainingDetailedList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("trainingDetailedList", detailedDtos.getRecords());
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", manageRiskAssessmentResultsVo.getEditorDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getEditorDate())).create() : null);
                    put("examineDateUrl", manageRiskAssessmentResultsVo.getApproveDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getApproveDate())).create() : null);
                    put("ratifyDateUrl", manageRiskAssessmentResultsVo.getApproveDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getApproveDate())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "危险因素辨识与风险评价结果一览", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,283 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.manage.mapper.*;
import com.ruoyi.manage.pojo.*;
import com.ruoyi.manage.service.ManageDocumentAlterService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentAlterServiceImpl extends ServiceImpl<ManageDocumentAlterMapper, ManageDocumentAlter> implements ManageDocumentAlterService {
    @Resource
    private ManageDocumentAlterMapper manageDocumentAlterMapper;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    private ManageDocumentCancelMapper manageDocumentCancelMapper;
    @Resource
    private ManageRecordAuditMapper manageRecordAuditMapper;
    @Override
    public IPage<ManageDocumentAlter> pageManageDocumentAlter(Page page, ManageDocumentAlter manageDocumentAlter) {
        return manageDocumentAlterMapper.pageManageDocumentAlter(page, QueryWrappers.queryWrappers(manageDocumentAlter));
    }
    @Override
    public ManageDocumentAlter getManageDocumentAlter(Integer id) {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.getManageDocumentAlter(id);
        String limsName = userMapper.selectUserDepartmentLimsName(manageDocumentAlter.getCreateUser());
        manageDocumentAlter.setCreateUserDepartLims(limsName);
        return manageDocumentAlter;
    }
    @Override
    public int addManageDocumentAlter(ManageDocumentAlter manageDocumentAlter) {
        /*新增8.4的文件修订申请审批记录*/
        ManageRecordAudit manageRecordAudit = new ManageRecordAudit();
        manageRecordAudit.setDocumentCode(manageDocumentAlter.getAlterBeforeCode());
        manageRecordAudit.setDocumentName(manageDocumentAlter.getAlterBeforeName());
        manageRecordAudit.setBeforeVersion(manageDocumentAlter.getAlterBeforeVersion());
        manageRecordAudit.setAfterVersion(manageDocumentAlter.getAlterAfterVersion());
        manageRecordAudit.setReason(manageDocumentAlter.getAlterNote());
        manageRecordAudit.setAlterUser(SecurityUtils.getUserId().intValue());
        manageRecordAudit.setMethod("修订");
        if (ObjectUtils.isNotEmpty(manageDocumentAlter.getFile())) {
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentAlter.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageDocumentAlter.setAlterAfterUrl(pathName);
            manageRecordAudit.setAfterUrl(pathName);
        }
        manageRecordAuditMapper.insert(manageRecordAudit);
        return manageDocumentAlterMapper.insert(manageDocumentAlter);
    }
    @Override
    public int doManageDocumentAlter(ManageDocumentAlter manageDocumentAlter) {
        ManageDocumentAlter manageDocumentAlter1= manageDocumentAlterMapper.selectById(manageDocumentAlter.getId());
        if (ObjectUtils.isNotEmpty(manageDocumentAlter.getFile())) {
            if (ObjectUtils.isNotEmpty(manageDocumentAlter1.getAlterAfterUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + manageDocumentAlter1.getAlterAfterUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentAlter.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentAlter.setAlterAfterUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
    }
    @Override
    public int checkManageDocumentAlter(ManageDocumentAlter manageDocumentAlter) {
        ManageDocumentAlter oldManageDocumentAlter = manageDocumentAlterMapper.selectById(manageDocumentAlter.getId());
        if (manageDocumentAlter.getState().equals("通过")) {
            /*将文件盖章*/
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + oldManageDocumentAlter.getAlterAfterUrl());
            oldFile.delete();
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentAlter.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentAlter.setAlterAfterUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            /*其余相关处理*/
            if (oldManageDocumentAlter.getMethod().equals("作废")){
                //新增到作废申请里面
                ManageDocumentCancel manageDocumentCancel = new ManageDocumentCancel();
                manageDocumentCancel.setDocumentCode(oldManageDocumentAlter.getAlterBeforeCode());
                manageDocumentCancel.setName(oldManageDocumentAlter.getAlterBeforeName());
                manageDocumentCancel.setVersion(oldManageDocumentAlter.getAlterBeforeVersion());
                manageDocumentCancel.setCancelNote("文件变更,变更的文件编号是"+oldManageDocumentAlter.getAlterAfterCode());
                manageDocumentCancelMapper.insert(manageDocumentCancel);
                //删除文件清单
                manageDocumentListMapper.delete(Wrappers.<ManageDocumentList>lambdaQuery()
                        .eq(ManageDocumentList::getDocumentCode,oldManageDocumentAlter.getAlterBeforeCode()));
                //新增文件清单
                ManageDocumentList manageDocumentList = new ManageDocumentList();
                manageDocumentList.setDocumentCode(oldManageDocumentAlter.getAlterAfterCode());
                manageDocumentList.setName(oldManageDocumentAlter.getAlterAfterName());
                manageDocumentList.setVersion(oldManageDocumentAlter.getAlterAfterVersion());
                manageDocumentList.setState("有效");
                manageDocumentList.setEffectiveDate(LocalDate.now());
                manageDocumentList.setUrl(pathName);
                manageDocumentListMapper.insert(manageDocumentList);
                /*新增8.4的文件修订申请审批记录*/
                ManageRecordAudit manageRecordAudit = new ManageRecordAudit();
                manageRecordAudit.setDocumentCode(manageDocumentCancel.getDocumentCode());
                manageRecordAudit.setDocumentName(manageDocumentCancel.getName());
                manageRecordAudit.setAlterThing("作废");
                manageRecordAudit.setMethod("作废");
                manageRecordAuditMapper.insert(manageRecordAudit);
            }else {
                //如果是存档不可用,那就将文件清单的状态改为无效
                manageDocumentListMapper.update(null,Wrappers.<ManageDocumentList>lambdaUpdate()
                        .eq(ManageDocumentList::getDocumentCode,oldManageDocumentAlter.getAlterBeforeCode())
                        .set(ManageDocumentList::getState,"无效"));
            }
        }
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(oldManageDocumentAlter.getAlterAfterCode());
        manageRecordCheck.setDocumentName(oldManageDocumentAlter.getAlterAfterName());
        manageRecordCheck.setDocumentVersion(oldManageDocumentAlter.getAlterAfterVersion());
        manageRecordCheck.setWriteUser(oldManageDocumentAlter.getCreateUser());
        manageRecordCheck.setCheckUser(oldManageDocumentAlter.getCheckUser());
        manageRecordCheck.setCheckState(manageDocumentAlter.getState());
        manageRecordCheck.setRemark(manageDocumentAlter.getAlterNote());
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
    }
    @Override
    public void checkManageDocumentAlterPdf(Long id, HttpServletResponse response) throws Exception {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.selectById(id);
        File file = new File(wordUrl + "/" + manageDocumentAlter.getAlterAfterUrl());
        FileInputStream fileInputStream = new FileInputStream(file);
        response.setContentType("application/pdf");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "inline;filename=" + file.getName());
        response.setContentLength((int)file.length());
        OutputStream os = response.getOutputStream();
        // å°†æ–‡ä»¶å†…容写入输出流
        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = fileInputStream.read(buffer)) != -1) {
            os.write(buffer, 0, bytesRead);
        }
        os.flush();
        os.close();
    }
    @Override
    public void exportManageDocumentAlter(ManageDocumentAlter manageDocumentAlter, HttpServletResponse response) throws Exception {
        List<ManageDocumentAlter> data = manageDocumentAlterMapper.pageManageDocumentAlter(new Page(-1, -1), QueryWrappers.queryWrappers(manageDocumentAlter)).getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String fileName = URLEncoder.encode("文件变更列表导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "文件变更列表导出").head(ManageDocumentAlter.class).build();
            excelWriter.write(data, mainSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int delManageDocumentAlter(Integer id) {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.selectById(id);
        /*删除8.4的文件修订申请审批记录*/
        manageRecordAuditMapper.delete(Wrappers.<ManageRecordAudit>lambdaQuery()
        .eq(ManageRecordAudit::getDocumentCode,manageDocumentAlter.getAlterBeforeCode())
        .eq(ManageRecordAudit::getDocumentName,manageDocumentAlter.getAlterBeforeName())
        .eq(ManageRecordAudit::getBeforeVersion,manageDocumentAlter.getAlterBeforeVersion())
        .eq(ManageRecordAudit::getAfterVersion,manageDocumentAlter.getAlterAfterVersion())
        .eq(ManageRecordAudit::getReason,manageDocumentAlter.getAlterNote())
        .eq(ManageRecordAudit::getAlterUser,manageDocumentAlter.getCreateUser())
        .eq(ManageRecordAudit::getMethod,"修订"));
        return manageDocumentAlterMapper.deleteById(id);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentCancelServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
package com.ruoyi.manage.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
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.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.manage.mapper.ManageDocumentCancelMapper;
import com.ruoyi.manage.mapper.ManageDocumentListMapper;
import com.ruoyi.manage.mapper.ManageRecordAuditMapper;
import com.ruoyi.manage.mapper.ManageRecordCheckMapper;
import com.ruoyi.manage.pojo.ManageDocumentCancel;
import com.ruoyi.manage.pojo.ManageDocumentList;
import com.ruoyi.manage.pojo.ManageRecordAudit;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import com.ruoyi.manage.service.ManageDocumentCancelService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentCancelServiceImpl extends ServiceImpl<ManageDocumentCancelMapper, ManageDocumentCancel> implements ManageDocumentCancelService {
    @Resource
    private ManageDocumentCancelMapper manageDocumentCancelMapper;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Resource
    private ManageRecordAuditMapper manageRecordAuditMapper;
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    private UserMapper userMapper;
    @Override
    public IPage<ManageDocumentCancel> pageManageDocumentCancel(Page page, ManageDocumentCancel manageDocumentCancel) {
        return manageDocumentCancelMapper.pageManageDocumentCancel(page, QueryWrappers.queryWrappers(manageDocumentCancel));
    }
    @Override
    public int addManageDocumentCancel(ManageDocumentCancel manageDocumentCancel) {
        manageDocumentCancel.setState("待审核");
        /*新增8.4的文件修订申请审批记录*/
        ManageRecordAudit manageRecordAudit = new ManageRecordAudit();
        manageRecordAudit.setDocumentCode(manageDocumentCancel.getDocumentCode());
        manageRecordAudit.setDocumentName(manageDocumentCancel.getName());
        manageRecordAudit.setAlterThing("作废");
        manageRecordAudit.setMethod("作废");
        manageRecordAuditMapper.insert(manageRecordAudit);
        return manageDocumentCancelMapper.insert(manageDocumentCancel);
    }
    @Override
    public int checkManageDocumentCancel(Integer id, String state) {
        ManageDocumentCancel manageDocumentCancel = manageDocumentCancelMapper.selectById(id);
        if (state.equals("通过")){
            //删除文件清单对应数据
            manageDocumentListMapper.delete(Wrappers.<ManageDocumentList>lambdaQuery().eq(ManageDocumentList::getDocumentCode,manageDocumentCancel.getDocumentCode()));
        }
        manageDocumentCancel.setState(state);
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(manageDocumentCancel.getDocumentCode());
        manageRecordCheck.setDocumentName(manageDocumentCancel.getName());
        manageRecordCheck.setDocumentVersion(manageDocumentCancel.getVersion());
        manageRecordCheck.setWriteUser(manageDocumentCancel.getCreateUser());
        manageRecordCheck.setCheckUser(manageDocumentCancel.getCheckUser());
        manageRecordCheck.setCheckState(manageDocumentCancel.getState());
        manageRecordCheck.setRemark(manageDocumentCancel.getCancelNote());
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentCancelMapper.updateById(manageDocumentCancel);
    }
    @Override
    public ManageDocumentCancel getManageDocumentCancel(Integer id) {
        ManageDocumentCancel manageDocumentCancel = manageDocumentCancelMapper.getManageDocumentCancel(id);
        String limsName = userMapper.selectUserDepartmentLimsName(manageDocumentCancel.getCreateUser());
        manageDocumentCancel.setCreateUserDepartLims(limsName);
        return manageDocumentCancel;
    }
    @Override
    public void exportManageDocumentCancel(ManageDocumentCancel manageDocumentCancel, HttpServletResponse response) throws Exception{
        List<ManageDocumentCancel> data = manageDocumentCancelMapper.pageManageDocumentCancel(new Page(-1, -1), QueryWrappers.queryWrappers(manageDocumentCancel)).getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String fileName = URLEncoder.encode("文件作废列表导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "文件作废列表导出").head(ManageDocumentCancel.class).build();
            excelWriter.write(data, mainSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int delManageDocumentCancel(Integer id) {
        ManageDocumentCancel manageDocumentCancel = manageDocumentCancelMapper.selectById(id);
        /*删除8.4的文件修订申请审批记录*/
        manageRecordAuditMapper.delete(Wrappers.<ManageRecordAudit>lambdaQuery()
        .eq(ManageRecordAudit::getDocumentCode,manageDocumentCancel.getDocumentCode())
        .eq(ManageRecordAudit::getDocumentName,manageDocumentCancel.getName())
        .eq(ManageRecordAudit::getMethod,"作废"));
        return manageDocumentCancelMapper.deleteById(id);
    }
    @Override
    public int doManageDocumentCancel(ManageDocumentCancel manageDocumentCancel) {
        return manageDocumentCancelMapper.updateById(manageDocumentCancel);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,218 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.manage.mapper.ManageDocumentControlledMapper;
import com.ruoyi.manage.mapper.ManageDocumentListMapper;
import com.ruoyi.manage.mapper.ManageRecordCheckMapper;
import com.ruoyi.manage.pojo.ManageDocumentControlled;
import com.ruoyi.manage.pojo.ManageDocumentList;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import com.ruoyi.manage.service.ManageDocumentControlledService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å—控 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentControlledServiceImpl extends ServiceImpl<ManageDocumentControlledMapper, ManageDocumentControlled> implements ManageDocumentControlledService {
    @Resource
    private ManageDocumentControlledMapper manageDocumentControlledMapper;
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Override
    public IPage<ManageDocumentControlled> pageManageDocumentControlled(Page page, ManageDocumentControlled manageDocumentControlled) {
        return manageDocumentControlledMapper.pageManageDocumentControlled(page, QueryWrappers.queryWrappers(manageDocumentControlled));
    }
    @Override
    public int addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
        manageDocumentControlled.setState("待审核");
        String urlString;
        String pathName;
        String path;
        if (ObjectUtils.isNotEmpty(manageDocumentControlled.getFile())) {
            MultipartFile file = manageDocumentControlled.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageDocumentControlled.setUrl(pathName);
        }
        return manageDocumentControlledMapper.insert(manageDocumentControlled);
    }
    @Override
    public int delManageDocumentControlled(Long id) {
        ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.selectById(id);
        if (ObjectUtils.isNotEmpty(manageDocumentControlled.getUrl())) {
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + manageDocumentControlled.getUrl());
            oldFile.delete();
        }
        return manageDocumentControlledMapper.deleteById(id);
    }
    @Override
    public ManageDocumentControlled getManageDocumentControlled(Long id) {
        ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.getManageDocumentControlled(id);
        //获取部门信息
        String departmentLimsName = userMapper.selectUserDepartmentLimsName(manageDocumentControlled.getCreateUser());
        manageDocumentControlled.setCreateUserDepartLims(departmentLimsName);
        return manageDocumentControlled;
    }
    @Override
    public int doManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
        ManageDocumentControlled manageDocumentControlled1 = manageDocumentControlledMapper.selectById(manageDocumentControlled.getId());
        if (ObjectUtils.isNotEmpty(manageDocumentControlled.getFile())) {
            if (ObjectUtils.isNotEmpty(manageDocumentControlled1.getUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + manageDocumentControlled1.getUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentControlled.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentControlled.setUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageDocumentControlledMapper.updateById(manageDocumentControlled);
    }
    @Override
    public int checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
        ManageDocumentControlled documentControlled = manageDocumentControlledMapper.selectById(manageDocumentControlled.getId());
        if (manageDocumentControlled.getState().equals("通过")) {
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + documentControlled.getUrl());
            oldFile.delete();
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentControlled.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentControlled.setUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            //将文件受控已知文件清单
            ManageDocumentList manageDocumentList = new ManageDocumentList();
            manageDocumentList.setDocumentCode(documentControlled.getDocumentCode());
            manageDocumentList.setType(documentControlled.getType());
            manageDocumentList.setName(documentControlled.getName());
            manageDocumentList.setVersion(documentControlled.getVersion());
            manageDocumentList.setWriter(documentControlled.getWriter());
            manageDocumentList.setEffectiveDate(LocalDate.now());
            manageDocumentList.setState("有效");
            manageDocumentList.setUrl(manageDocumentControlled.getUrl());
            manageDocumentListMapper.insert(manageDocumentList);
        }
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(documentControlled.getDocumentCode());
        manageRecordCheck.setDocumentName(documentControlled.getName());
        manageRecordCheck.setDocumentVersion(documentControlled.getVersion());
        manageRecordCheck.setWriteUser(userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName,documentControlled.getWriter())).getId());
        manageRecordCheck.setCheckUser(documentControlled.getDutyUser());
        manageRecordCheck.setCheckState(manageDocumentControlled.getState());
        manageRecordCheck.setRemark(documentControlled.getInstructions());
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentControlledMapper.updateById(manageDocumentControlled);
    }
    @Override
    public void checkManageDocumentControlledPdf(Long id, HttpServletResponse response) throws Exception {
        ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.selectById(id);
        File file = new File(wordUrl + "/" + manageDocumentControlled.getUrl());
        FileInputStream fileInputStream = new FileInputStream(file);
        response.setContentType("application/pdf");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "inline;filename=" + file.getName());
        response.setContentLength((int)file.length());
        OutputStream os = response.getOutputStream();
        // å°†æ–‡ä»¶å†…容写入输出流
        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = fileInputStream.read(buffer)) != -1) {
            os.write(buffer, 0, bytesRead);
        }
        os.flush();
        os.close();
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentIssueRecycleServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,197 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.manage.dto.ManageDocumentIssueRecycleDto;
import com.ruoyi.manage.mapper.ManageDocumentIssueRecycleMapper;
import com.ruoyi.manage.mapper.ManageRecordCheckMapper;
import com.ruoyi.manage.mapper.ManageRecordIssueRecycleMapper;
import com.ruoyi.manage.pojo.ManageDocumentIssueRecycle;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import com.ruoyi.manage.pojo.ManageRecordIssueRecycle;
import com.ruoyi.manage.service.ManageDocumentIssueRecycleService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentIssueRecycleServiceImpl extends ServiceImpl<ManageDocumentIssueRecycleMapper, ManageDocumentIssueRecycle> implements ManageDocumentIssueRecycleService {
    @Resource
    private ManageDocumentIssueRecycleMapper manageDocumentIssueRecycleMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Resource
    private ManageRecordIssueRecycleMapper manageRecordIssueRecycleMapper;
    @Override
    public IPage<ManageDocumentIssueRecycleDto> pageManageDocumentIssueRecycle(Page page, ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto) {
        return manageDocumentIssueRecycleMapper.pageManageDocumentIssueRecycle(page, QueryWrappers.queryWrappers(manageDocumentIssueRecycleDto));
    }
    @Override
    public ManageDocumentIssueRecycleDto getManageDocumentIssueRecycle(Long id) {
        return manageDocumentIssueRecycleMapper.getManageDocumentIssueRecycle(id);
    }
    @Override
    public void exportManageDocumentIssueRecycle(ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto, HttpServletResponse response)throws Exception {
        List<ManageDocumentIssueRecycleDto> data = manageDocumentIssueRecycleMapper.pageManageDocumentIssueRecycle(new Page(-1, -1), QueryWrappers.queryWrappers(manageDocumentIssueRecycleDto)).getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String fileName = URLEncoder.encode("文件发放回收导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "文件发放回收导出").head(ManageDocumentIssueRecycleDto.class).build();
            excelWriter.write(data, mainSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int checkManageDocumentIssueRecycle(Integer id, String documentState) {
        ManageDocumentIssueRecycle manageDocumentIssueRecycle = manageDocumentIssueRecycleMapper.selectById(id);
        manageDocumentIssueRecycle.setDocumentState(documentState);
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(manageDocumentIssueRecycle.getDocumentCode());
        manageRecordCheck.setDocumentName(manageDocumentIssueRecycle.getName());
        manageRecordCheck.setDocumentVersion(manageDocumentIssueRecycle.getVersion());
        manageRecordCheck.setCheckUser(manageDocumentIssueRecycle.getReceiveUser());
        manageRecordCheck.setCheckState(documentState);
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentIssueRecycleMapper.updateById(manageDocumentIssueRecycle);
    }
    @Override
    public int addManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle) {
        manageDocumentIssueRecycle.setDocumentState("待审核");
        if (ObjectUtils.isNotEmpty(manageDocumentIssueRecycle.getFile())){
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentIssueRecycle.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageDocumentIssueRecycle.setUrl(pathName);
        }
        /*新增8.3的发放与回收记录*/
        ManageRecordIssueRecycle manageRecordIssueRecycle = new ManageRecordIssueRecycle();
        manageRecordIssueRecycle.setDocumentCode(manageDocumentIssueRecycle.getDocumentCode());
        manageRecordIssueRecycle.setDocumentName(manageDocumentIssueRecycle.getName());
        manageRecordIssueRecycle.setDocumentVersion(manageDocumentIssueRecycle.getVersion());
        manageRecordIssueRecycle.setReceiveUser(manageDocumentIssueRecycle.getIssueUser());
        manageRecordIssueRecycle.setReceiveDate(manageDocumentIssueRecycle.getIssueDate());
        manageRecordIssueRecycleMapper.insert(manageRecordIssueRecycle);
        return manageDocumentIssueRecycleMapper.insert(manageDocumentIssueRecycle);
    }
    @Override
    public int doManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle) {
        ManageDocumentIssueRecycle documentIssueRecycle = manageDocumentIssueRecycleMapper.selectById(manageDocumentIssueRecycle.getId());
        //判读是否是回收
        if (ObjectUtils.isNotEmpty(manageDocumentIssueRecycle.getRecycleUser())){
            /*新增8.3的发放与回收记录*/
            ManageRecordIssueRecycle manageRecordIssueRecycle = manageRecordIssueRecycleMapper.selectOne(Wrappers.<ManageRecordIssueRecycle>lambdaQuery()
                    .eq(ManageRecordIssueRecycle::getDocumentCode, documentIssueRecycle.getDocumentCode())
                    .eq(ManageRecordIssueRecycle::getDocumentName, documentIssueRecycle.getName())
                    .eq(ManageRecordIssueRecycle::getDocumentVersion, documentIssueRecycle.getVersion())
                    .eq(ManageRecordIssueRecycle::getReceiveUser, documentIssueRecycle.getIssueUser())
                    .eq(ManageRecordIssueRecycle::getReceiveDate, documentIssueRecycle.getIssueDate()));
            manageRecordIssueRecycle.setSignedUser(manageDocumentIssueRecycle.getRecycleUser());
            manageRecordIssueRecycle.setSignedDate(manageDocumentIssueRecycle.getRecycleDate());
            manageRecordIssueRecycleMapper.updateById(manageRecordIssueRecycle);
        }
        if (ObjectUtils.isNotEmpty(manageDocumentIssueRecycle.getFile())) {
            if (ObjectUtils.isNotEmpty(documentIssueRecycle.getUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + documentIssueRecycle.getUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentIssueRecycle.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentIssueRecycle.setUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageDocumentIssueRecycleMapper.updateById(manageDocumentIssueRecycle);
    }
    @Override
    public int delManageDocumentIssueRecycle(Long id) {
        ManageDocumentIssueRecycle documentIssueRecycle = manageDocumentIssueRecycleMapper.selectById(id);
        manageRecordIssueRecycleMapper.delete(Wrappers.<ManageRecordIssueRecycle>lambdaQuery()
                .eq(ManageRecordIssueRecycle::getDocumentCode, documentIssueRecycle.getDocumentCode())
                .eq(ManageRecordIssueRecycle::getDocumentName, documentIssueRecycle.getName())
                .eq(ManageRecordIssueRecycle::getDocumentVersion, documentIssueRecycle.getVersion())
                .eq(ManageRecordIssueRecycle::getReceiveUser, documentIssueRecycle.getIssueUser())
                .eq(ManageRecordIssueRecycle::getReceiveDate, documentIssueRecycle.getIssueDate()));
        return manageDocumentIssueRecycleMapper.deleteById(id);
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.UUID;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.manage.mapper.ManageDocumentListMapper;
import com.ruoyi.manage.pojo.ManageDocumentList;
import com.ruoyi.manage.service.ManageDocumentListService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
@Service
public class ManageDocumentListServiceImpl extends ServiceImpl<ManageDocumentListMapper, ManageDocumentList> implements ManageDocumentListService {
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public IPage<ManageDocumentList> pageManageDocumentList(Page page, ManageDocumentList manageDocumentList) {
        return manageDocumentListMapper.pageManageDocumentList(page, QueryWrappers.queryWrappers(manageDocumentList));
    }
    @Override
    public int uploadFile(Integer id, MultipartFile file) {
        String urlString;
        String pathName;
        String path;
        ManageDocumentList manageDocumentList = manageDocumentListMapper.selectById(id);
        if (ObjectUtils.isNotEmpty(manageDocumentList.getUrl())){
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + manageDocumentList.getUrl());
            oldFile.delete();
        }
        //上传新文件
        path = wordUrl;
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("附件上传错误");
            return 0;
        }
        manageDocumentList.setUrl(pathName);
        return manageDocumentListMapper.updateById(manageDocumentList);
    }
    @Override
    public void importExcel(List<ManageDocumentList> list) {
        if (CollectionUtil.isEmpty(list)) {
            return;
        }
        list = list.stream().filter(manageDocumentList -> ObjectUtils.isNotEmpty(manageDocumentList.getName())).collect(Collectors.toList());
        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;
            }
            //生成一个空的PDF文件
            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;
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageMeetingParticipantsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.manage.mapper.ManageMeetingMapper;
import com.ruoyi.manage.mapper.ManageMeetingParticipantsMapper;
import com.ruoyi.manage.pojo.ManageMeeting;
import com.ruoyi.manage.pojo.ManageMeetingParticipants;
import com.ruoyi.manage.service.ManageMeetingParticipantsService;
import com.ruoyi.manage.vo.MeetingParticipantsDetailsVo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
@Service
public class ManageMeetingParticipantsServiceImpl extends ServiceImpl<ManageMeetingParticipantsMapper, ManageMeetingParticipants> implements ManageMeetingParticipantsService {
    @Resource
    private ManageMeetingMapper manageMeetingMapper;
    @Override
    public MeetingParticipantsDetailsVo getParticipants(Integer id) {
        ManageMeeting manageMeeting = manageMeetingMapper.selectById(id);
        QueryWrapper<ManageMeetingParticipants> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("meeting_id",id);
        List<ManageMeetingParticipants> participantsList = this.baseMapper.selectList(queryWrapper);
        MeetingParticipantsDetailsVo vo = new MeetingParticipantsDetailsVo();
        vo.setManageMeeting(manageMeeting);
        vo.setParticipantsList(participantsList);
        return vo;
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageMeetingServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
package com.ruoyi.manage.service.impl;
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;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.manage.dto.ManageMeetingDto;
import com.ruoyi.manage.dto.ManageMeetingParticipantsDto;
import com.ruoyi.manage.mapper.ManageMeetingMapper;
import com.ruoyi.manage.mapper.ManageMeetingParticipantsMapper;
import com.ruoyi.manage.pojo.ManageMeeting;
import com.ruoyi.manage.pojo.ManageMeetingParticipants;
import com.ruoyi.manage.service.ManageMeetingService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
@Service
public class ManageMeetingServiceImpl extends ServiceImpl<ManageMeetingMapper, ManageMeeting> implements ManageMeetingService {
    @Resource
    private ManageMeetingParticipantsMapper manageMeetingParticipantsMapper;
    @Autowired
    private UserMapper userMapper;
    @Override
    public IPage<ManageMeetingDto> page(Page page, String startTime, String endTime, String place) {
        IPage<ManageMeetingDto> iPage = this.baseMapper.page(page, startTime, endTime, place);
        for (ManageMeetingDto record : iPage.getRecords()) {
            List<ManageMeetingParticipants> manageMeetingParticipants = manageMeetingParticipantsMapper.selectList(Wrappers.<ManageMeetingParticipants>lambdaQuery().eq(ManageMeetingParticipants::getMeetingId, record.getId()));
            String collect = manageMeetingParticipants.stream().map(manageMeetingParticipants1 -> {
                return manageMeetingParticipants1.getParticipants() + "";
            }).collect(Collectors.joining(","));
            record.setParticipant(collect);
        }
        return iPage;
    }
    @Override
    public void addMeeting(ManageMeetingDto dto) {
        this.baseMapper.insert(dto);
        String[] ids = dto.getParticipant().split(",");
        List<ManageMeetingParticipants> list = new ArrayList<>();
        for (String id : ids) {
            User user = userMapper.selectById(id);
            ManageMeetingParticipants participants = new ManageMeetingParticipants();
            participants.setMeetingId(dto.getId());
            participants.setParticipants(Integer.parseInt(id));
            participants.setDepartment(userMapper.selectUserDepartmentLimsName(user.getId()));
            list.add(participants);
        }
        list.forEach(v -> manageMeetingParticipantsMapper.insert(v));
    }
    @Override
    public int modifyMeeting(ManageMeetingDto manageMeetingDto) {
        this.baseMapper.updateById(manageMeetingDto);
        manageMeetingParticipantsMapper.delete(Wrappers.<ManageMeetingParticipants>lambdaQuery().eq(ManageMeetingParticipants::getMeetingId, manageMeetingDto.getId()));
        String[] ids = manageMeetingDto.getParticipant().split(",");
        List<ManageMeetingParticipants> list = new ArrayList<>();
        for (String id : ids) {
            User user = userMapper.selectById(id);
            ManageMeetingParticipants participants = new ManageMeetingParticipants();
            participants.setMeetingId(manageMeetingDto.getId());
            participants.setParticipants(Integer.parseInt(id));
            participants.setDepartment(userMapper.selectUserDepartmentLimsName(user.getId()));
            list.add(participants);
        }
        list.forEach(v -> manageMeetingParticipantsMapper.insert(v));
        return 0;
    }
    @Override
    public void exportMeeting(Integer id, HttpServletResponse response) {
        ManageMeeting meeting = baseMapper.selectById(id);
        // æŸ¥è¯¢å‚加人员
        List<ManageMeetingParticipants> manageMeetingParticipants = manageMeetingParticipantsMapper.selectList(Wrappers.<ManageMeetingParticipants>lambdaQuery().eq(ManageMeetingParticipants::getMeetingId, id));
        List<ManageMeetingParticipants> list = manageMeetingParticipants.stream().map(manageMeetingParticipants1 -> {
            manageMeetingParticipants1.setUserName(userMapper.selectById(manageMeetingParticipants1.getParticipants()).getName());
            manageMeetingParticipants1.setDepartment(userMapper.selectUserDepartmentLimsName(manageMeetingParticipants1.getParticipants()));
            return manageMeetingParticipants1;
        }).collect(Collectors.toList());
        // åˆ›å»ºç©ºå¯¹è±¡
        List<ManageMeetingParticipantsDto> participants = new ArrayList<>();
        // æ·»åŠ å‚åŠ äººå‘˜
        for (int i = 0; i < list.size(); i++) {
            // åˆ¤æ–­æœ‰æ²¡æœ‰åˆ°11行
            if (i % 2 == 0) {
                ManageMeetingParticipantsDto manageMeetingParticipantsDto = new ManageMeetingParticipantsDto();
                manageMeetingParticipantsDto.setUserName1(list.get(i).getUserName());
                manageMeetingParticipantsDto.setDepartment1(list.get(i).getDepartment());
                participants.add(manageMeetingParticipantsDto);
            } else {
                participants.get((i-1)/2).setUserName2(list.get(i).getUserName());
                participants.get((i-1)/2).setDepartment2(list.get(i).getDepartment());
            }
        }
        InputStream inputStream = this.getClass().getResourceAsStream("/static/review-meet.docx");
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日");
        Configure configure = Configure.builder()
                .bind("meetingDetails", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("meeting", meeting);
                    put("meetingTime", meeting.getMeetingTime().format(formatter));
                    put("meetingDetails", participants);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "管理评审会议记录", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordAuditServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,670 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.mapper.ManageRecordAuditMapper;
import com.ruoyi.manage.pojo.ManageRecordAudit;
import com.ruoyi.manage.service.ManageRecordAuditService;
import com.ruoyi.system.mapper.UserMapper;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.util.*;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordAuditServiceImpl extends ServiceImpl<ManageRecordAuditMapper, ManageRecordAudit> implements ManageRecordAuditService {
    @Resource
    private ManageRecordAuditMapper manageRecordAuditMapper;
    @Resource
    private UserMapper userMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public IPage<ManageRecordAudit> pageManageRecordAudit(Page page, ManageRecordAudit manageRecordAudit) {
        IPage<ManageRecordAudit> manageRecordAuditIPage = manageRecordAuditMapper.pageManageRecordAudit(page, QueryWrappers.queryWrappers(manageRecordAudit));
        for (ManageRecordAudit record : manageRecordAuditIPage.getRecords()) {
            String limsName = userMapper.selectUserDepartmentLimsName(record.getCreateUser());
            record.setCreateUserDepart(limsName);
        }
        return manageRecordAuditIPage;
    }
    @Override
    public int addManageRecordAudit(ManageRecordAudit manageRecordAudit) {
        if (ObjectUtils.isNotEmpty(manageRecordAudit.getFile())) {
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageRecordAudit.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageRecordAudit.setAfterUrl(pathName);
        }
        manageRecordAudit.setCreateTime(LocalDate.now());
        return manageRecordAuditMapper.insert(manageRecordAudit);
    }
    @Override
    public int doManageRecordAudit(ManageRecordAudit manageRecordAudit) {
        ManageRecordAudit recordAudit= manageRecordAuditMapper.selectById(manageRecordAudit.getId());
        if (ObjectUtils.isNotEmpty(manageRecordAudit.getFile())) {
            if (ObjectUtils.isNotEmpty(recordAudit.getAfterUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + recordAudit.getAfterUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageRecordAudit.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageRecordAudit.setAfterUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageRecordAuditMapper.updateById(manageRecordAudit);
    }
    @Override
    public int ratifyManageRecordAudit(Integer id) {
        ManageRecordAudit recordAudit = manageRecordAuditMapper.selectById(id);
        recordAudit.setRatifyUser(SecurityUtils.getUserId().intValue());
        return manageRecordAuditMapper.updateById(recordAudit);
    }
    @Override
    public String exportOutManageRecordAudit(ManageRecordAudit manageRecordAudit, HttpServletResponse response) {
        List<ManageRecordAudit> manageRecordAuditList = manageRecordAuditMapper.pageManageRecordAudit(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordAudit)).getRecords();
        for (ManageRecordAudit record : manageRecordAuditList) {
            String limsName = userMapper.selectUserDepartmentLimsName(record.getCreateUser());
            record.setCreateUserDepart(limsName);
        }
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/audit-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> auditList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordAuditList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 11; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.∑1");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number∑2");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("章节号@Chapter number∑3");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("页码@Page number∑4");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订次数@Number of revisions∑5");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5 || j == 6) {
                                //第六列
                                textRenderData.setText("版本号 Version number∑6");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第七列
                                textRenderData.setText("修订内容@Revision of contents∑7");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                //第八列
                                textRenderData.setText("修订人@Revised∑8");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 9 ) {
                                //第九列
                                textRenderData.setText("批准人@Approver∑9");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十列
                                textRenderData.setText("日期@Date∑10");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 1) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.∑1");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number∑2");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("章节号@Chapter number∑3");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("页码@Page number∑4");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订次数@Number of revisions∑5");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5 ) {
                                //第六列
                                textRenderData.setText("修改前@Before modification");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("修改后@After modification");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j == 7) {
                                //第七列
                                textRenderData.setText("修订内容@Revision of contents∑7");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                //第八列
                                textRenderData.setText("修订人@Revised∑8");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 9 ) {
                                //第九列
                                textRenderData.setText("批准人@Approver∑9");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十列
                                textRenderData.setText("日期@Date∑10");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getCapter());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getPages());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getNumber()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getBeforeVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getAfterVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getAlterThing());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getAlterUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }else if (j == 9) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getRatifyUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getDate()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("audit", tableRenderData);
                table.put("index1", index1);
                auditList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("cancelList", auditList);
                }});
        String name = UUID.randomUUID() + "_文件修订表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,477 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.mapper.ManageRecordCancelMapper;
import com.ruoyi.manage.pojo.ManageRecordCancel;
import com.ruoyi.manage.service.ManageRecordCancelService;
import com.ruoyi.system.mapper.UserMapper;
import org.apache.commons.io.IOUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordCancelServiceImpl extends ServiceImpl<ManageRecordCancelMapper, ManageRecordCancel> implements ManageRecordCancelService {
    @Resource
    private ManageRecordCancelMapper manageRecordCancelMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Override
    public IPage<ManageRecordCancel> pageManageRecordCancel(Page page, ManageRecordCancel manageRecordCancel) {
        return manageRecordCancelMapper.pageManageRecordCancel(page, QueryWrappers.queryWrappers(manageRecordCancel));
    }
    @Override
    public int ratifyManageRecordCancel(Integer id, String ratifyState) {
        Integer userId = SecurityUtils.getUserId().intValue();
        ManageRecordCancel manageRecordCancel = manageRecordCancelMapper.selectById(id);
        manageRecordCancel.setRatifyUser(userId);
        manageRecordCancel.setRatifyTime(LocalDate.now());
        manageRecordCancel.setRatifyState(ratifyState);
        return manageRecordCancelMapper.updateById(manageRecordCancel);
    }
    @Override
    public String exportOutManageRecordCancel(ManageRecordCancel manageRecordCancel, HttpServletResponse response) {
        List<ManageRecordCancel> manageRecordCancelList = manageRecordCancelMapper.pageManageRecordCancel(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordCancel)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/cancel-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> cancelList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordCancelList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 16; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 10; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件(记录)名称@File (record) name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("数量@Quantity");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("销毁原因@Reason for destruction");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("申请人@Applicant");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("日期@Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第八列
                                textRenderData.setText("批准@Approve");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8 ) {
                                //第九列
                                textRenderData.setText("日期@Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getQty()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getReason());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getCreateUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getCreateTime()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getRatifyUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getRatifyTime()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }else {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getRemark());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("cancel", tableRenderData);
                table.put("index1", index1);
                cancelList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("cancelList", cancelList);
                }});
        String name = UUID.randomUUID() + "_文件销毁申请表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordCancel(MultipartFile file) {
        List<ManageRecordCancel> manageRecordCancelList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                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())) {
                        ManageRecordCancel manageRecordCancel = new ManageRecordCancel();
                        manageRecordCancel.setDocumentCode(row.getCell(1).getText());
                        manageRecordCancel.setDocumentName(row.getCell(2).getText());
                        manageRecordCancel.setQty(Integer.valueOf(row.getCell(3).getText()));
                        manageRecordCancel.setReason(row.getCell(4).getText());
                        try {
                            manageRecordCancel.setCreateUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(5).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCancel.setCreateUser(null);
                        }
                        try {
                            manageRecordCancel.setRatifyUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(7).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCancel.setRatifyUser(null);
                        }
                        try {
                            manageRecordCancel.setCreateTime(LocalDate.parse(row.getCell(6).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordCancel.setCreateTime(null);
                        }
                        try {
                            manageRecordCancel.setRatifyTime(LocalDate.parse(row.getCell(8).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordCancel.setRatifyTime(null);
                        }
                        manageRecordCancel.setRemark(row.getCell(9).getText());
                        ManageRecordCancel cancel = manageRecordCancelMapper.selectOne(Wrappers.<ManageRecordCancel>lambdaQuery()
                                .eq(ManageRecordCancel::getDocumentCode, manageRecordCancel.getDocumentCode())
                                .eq(ManageRecordCancel::getDocumentName, manageRecordCancel.getDocumentName()));
                        if (ObjectUtils.isNotEmpty(cancel)) {
                            manageRecordCancel.setId(cancel.getId());
                        }
                        manageRecordCancelList.add(manageRecordCancel);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordCancelList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,467 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.mapper.ManageRecordCheckMapper;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import com.ruoyi.manage.service.ManageRecordCheckService;
import com.ruoyi.system.mapper.UserMapper;
import org.apache.commons.io.IOUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordCheckServiceImpl extends ServiceImpl<ManageRecordCheckMapper, ManageRecordCheck> implements ManageRecordCheckService {
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Override
    public IPage<ManageRecordCheck> pageManageRecordCheck(Page page, ManageRecordCheck manageRecordCheck) {
        return manageRecordCheckMapper.pageManageRecordCheck(page, QueryWrappers.queryWrappers(manageRecordCheck));
    }
    @Override
    public int checkManageRecordCheck(Integer id, String checkState) {
        Integer userId = SecurityUtils.getUserId().intValue();
        ManageRecordCheck manageRecordCheck = manageRecordCheckMapper.selectById(id);
        manageRecordCheck.setCheckState(checkState);
        manageRecordCheck.setCheckUser(userId);
        return manageRecordCheckMapper.updateById(manageRecordCheck);
    }
    @Override
    public int ratifyManageRecordCheck(Integer id, String ratifyState) {
        Integer userId = SecurityUtils.getUserId().intValue();
        ManageRecordCheck manageRecordCheck = manageRecordCheckMapper.selectById(id);
        manageRecordCheck.setRatifyState(ratifyState);
        manageRecordCheck.setRatifyUser(userId);
        return manageRecordCheckMapper.updateById(manageRecordCheck);
    }
    @Override
    public String exportOutManageRecordCheck(ManageRecordCheck manageRecordCheck, HttpServletResponse response) {
        List<ManageRecordCheck> manageRecordCheckList = manageRecordCheckMapper.pageManageRecordCheck(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordCheck)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/check-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> checkList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordCheckList.size(); c++) {
            //超过20行换页
            if (c % 20 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 21; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 9; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件名称@File name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版/次@Edition/time");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("编制@Editor");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("审核@Audit");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("批准@Approve");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第八列
                                textRenderData.setText("批准日期@Date of approve");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第九列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        } else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentName();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getWriteUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getCheckUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getRatifyUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getRatifyDate() + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getRemark());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("check", tableRenderData);
                table.put("index1", index1);
                checkList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("checkList", checkList);
                }});
        String name = UUID.randomUUID() + "_文件审批记录" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        String path = wordUrl + "/" + name;
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordCheck(MultipartFile file) {
        List<ManageRecordCheck> manageRecordCheckList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                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())) {
                        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
                        manageRecordCheck.setDocumentName(row.getCell(1).getText());
                        manageRecordCheck.setDocumentCode(row.getCell(2).getText());
                        manageRecordCheck.setDocumentVersion(row.getCell(3).getText());
                        try {
                            manageRecordCheck.setWriteUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(4).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCheck.setWriteUser(null);
                        }
                        try {
                            manageRecordCheck.setCheckUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(5).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCheck.setCheckUser(null);
                        }
                        try {
                            manageRecordCheck.setRatifyUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(6).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCheck.setRatifyUser(null);
                        }
                        try {
                            manageRecordCheck.setRatifyDate(LocalDate.parse(row.getCell(7).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordCheck.setRatifyDate(null);
                        }
                        manageRecordCheck.setRemark(row.getCell(8).getText());
                        ManageRecordCheck check = manageRecordCheckMapper.selectOne(Wrappers.<ManageRecordCheck>lambdaQuery()
                                .eq(ManageRecordCheck::getDocumentCode, manageRecordCheck.getDocumentCode())
                                .eq(ManageRecordCheck::getDocumentName, manageRecordCheck.getDocumentName())
                                .eq(ManageRecordCheck::getDocumentVersion, manageRecordCheck.getDocumentVersion()));
                        if (ObjectUtils.isNotEmpty(check)) {
                            manageRecordCheck.setId(check.getId());
                        }
                        manageRecordCheckList.add(manageRecordCheck);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordCheckList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,524 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.mapper.ManageRecordIntervalsMapper;
import com.ruoyi.manage.mapper.ManageRecordIntervalsTotalMapper;
import com.ruoyi.manage.pojo.ManageRecordIntervals;
import com.ruoyi.manage.pojo.ManageRecordIntervalsTotal;
import com.ruoyi.manage.service.ManageRecordIntervalsService;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordIntervalsServiceImpl extends ServiceImpl<ManageRecordIntervalsMapper, ManageRecordIntervals> implements ManageRecordIntervalsService {
    @Resource
    private ManageRecordIntervalsMapper manageRecordIntervalsMapper;
    @Resource
    private ManageRecordIntervalsTotalMapper manageRecordIntervalsTotalMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public IPage<ManageRecordIntervals> pageManageRecordIntervals(Page page, ManageRecordIntervals manageRecordIntervals) {
        return manageRecordIntervalsMapper.pageManageRecordIntervals(page, QueryWrappers.queryWrappers(manageRecordIntervals));
    }
    @Override
    public String exportOutManageRecordIntervals(ManageRecordIntervals manageRecordIntervals, HttpServletResponse response) {
        List<ManageRecordIntervals> manageRecordIntervalsList = manageRecordIntervalsMapper.pageManageRecordIntervals(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordIntervals)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/intervals-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> intervalsList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordIntervalsList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 7; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件名称@File name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版本号@Version number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订号@Revision number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("适宜性@Suitability");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第七列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 16) {
                            //最后一行
                            textRenderData.setText("注:适宜性一栏打“√”表此文件适宜,“×”表示不适宜,文件需修订或作废。@Note:The“√”table in the suitability column is suitable for this document, the“×”table is not suitable,and the document needs to berevised or invalidated @审查日期: @Review Date:@参加审查人员签名:@Signatures of the reviewers particip ating in the review:∑1");
                            renderData.add(textRenderData);
                            paragraphRenderData.setContents(renderData);
                            paragraphRenderDataList.add(paragraphRenderData);
                            cellRenderData.setParagraphs(paragraphRenderDataList);
                            cells.add(cellRenderData);
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i -1) + (index1 - 1) * 15).getRevision());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getSuitability());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getRemark() );
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("intervals", tableRenderData);
                table.put("index1", index1);
                intervalsList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("intervalsList", intervalsList);
                }});
        String name = UUID.randomUUID() + "_文件定期审查记录表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordIntervals(MultipartFile file) {
        List<ManageRecordIntervals> manageRecordIntervalsList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //获取当前年份
        LocalDate currentDate = LocalDate.now();
        // å®šä¹‰æ—¥æœŸæ ¼å¼
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        // æ ¼å¼åŒ–当前日期
        String currentMonth = currentDate.format(formatter);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectOne(Wrappers.<ManageRecordIntervalsTotal>lambdaQuery().eq(ManageRecordIntervalsTotal::getYear, currentMonth));
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                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())) {
                        ManageRecordIntervals manageRecordIntervals = new ManageRecordIntervals();
                        manageRecordIntervals.setDocumentName(row.getCell(1).getText());
                        manageRecordIntervals.setDocumentCode(row.getCell(2).getText());
                        manageRecordIntervals.setDocumentVersion(row.getCell(3).getText());
                        manageRecordIntervals.setRevision(row.getCell(4).getText());
                        manageRecordIntervals.setSuitability(row.getCell(5).getText());
                        manageRecordIntervals.setRemark(row.getCell(6).getText());
                        manageRecordIntervals.setRecordIntervalsTotalId(manageRecordIntervalsTotal.getId());
                        ManageRecordIntervals intervals = manageRecordIntervalsMapper.selectOne(Wrappers.<ManageRecordIntervals>lambdaQuery()
                                .eq(ManageRecordIntervals::getDocumentCode, manageRecordIntervals.getDocumentCode())
                                .eq(ManageRecordIntervals::getDocumentName, manageRecordIntervals.getDocumentName())
                                .eq(ManageRecordIntervals::getRecordIntervalsTotalId, manageRecordIntervalsTotal.getId())
                                .eq(ManageRecordIntervals::getDocumentVersion, manageRecordIntervals.getDocumentVersion()));
                        if (ObjectUtils.isNotEmpty(intervals)) {
                            manageRecordIntervals.setId(intervals.getId());
                        }
                        manageRecordIntervalsList.add(manageRecordIntervals);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordIntervalsList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
    @Override
    public int addManageRecordIntervals(ManageRecordIntervals manageRecordIntervals) {
        //获取当前年份
        LocalDate currentDate = LocalDate.now();
        // å®šä¹‰æ—¥æœŸæ ¼å¼
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        // æ ¼å¼åŒ–当前日期
        String currentMonth = currentDate.format(formatter);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectOne(Wrappers.<ManageRecordIntervalsTotal>lambdaQuery().eq(ManageRecordIntervalsTotal::getYear, currentMonth));
        manageRecordIntervals.setRecordIntervalsTotalId(manageRecordIntervalsTotal.getId());
        manageRecordIntervalsMapper.insert(manageRecordIntervals);
        manageRecordIntervalsTotal.setTotalNum(1 + manageRecordIntervalsTotal.getTotalNum());
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    @Override
    public int delManageRecordIntervals(Integer id) {
        ManageRecordIntervals manageRecordIntervals = manageRecordIntervalsMapper.selectById(id);
        manageRecordIntervalsMapper.deleteById(id);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectById(manageRecordIntervals.getRecordIntervalsTotalId());
        manageRecordIntervalsTotal.setTotalNum(manageRecordIntervalsTotal.getTotalNum() - 1);
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsTotalServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,499 @@
package com.ruoyi.manage.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.manage.mapper.ManageRecordIntervalsMapper;
import com.ruoyi.manage.mapper.ManageRecordIntervalsTotalMapper;
import com.ruoyi.manage.pojo.ManageRecordIntervals;
import com.ruoyi.manage.pojo.ManageRecordIntervalsTotal;
import com.ruoyi.manage.service.ManageRecordIntervalsTotalService;
import com.ruoyi.system.mapper.UserMapper;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordIntervalsTotalServiceImpl extends ServiceImpl<ManageRecordIntervalsTotalMapper, ManageRecordIntervalsTotal> implements ManageRecordIntervalsTotalService {
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private ManageRecordIntervalsTotalMapper manageRecordIntervalsTotalMapper;
    @Resource
    private ManageRecordIntervalsMapper manageRecordIntervalsMapper;
    @Override
    public IPage<ManageRecordIntervalsTotal> pageManageRecordIntervalsTotal(Page page, ManageRecordIntervalsTotal manageRecordIntervalsTotal) {
        return manageRecordIntervalsTotalMapper.pageManageRecordIntervalsTotal(page, QueryWrappers.queryWrappers(manageRecordIntervalsTotal));
    }
    @Override
    public int submitManageRecordIntervalsTotal(Integer id) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到填表人的电子签名,请上传自己的电子签名!");
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectById(id);
        manageRecordIntervalsTotal.setSubmitUser(userId);
        manageRecordIntervalsTotal.setSubmitDate(LocalDate.now());
        manageRecordIntervalsTotal.setSubmitUrl(user.getSignatureUrl());
        //生成样品处理申请表并将填表人的电子签名印上
        manageRecordIntervalsTotal.setUrl(recordTotaldeal(id,user.getSignatureUrl()));
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    @Override
    public int ratifyManageRecordIntervalsTotal(Integer id, String ratifyState) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到批准人的电子签名,请上传自己的电子签名!");
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectById(id);
        manageRecordIntervalsTotal.setRatifyUser(userId);
        manageRecordIntervalsTotal.setRatifyState(ratifyState);
        manageRecordIntervalsTotal.setRatifyDate(LocalDate.now());
        manageRecordIntervalsTotal.setRatifyUrl(user.getSignatureUrl());
        //将批准人的签名印上
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        wordInsertUrl(new HashMap<String, Object>() {{
            put("ratifyDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear());
            put("ratifyDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日")));
            put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
        }},  wordUrl+"/"+manageRecordIntervalsTotal.getUrl());
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    public int wordInsertUrl(Map<String, Object> map, String url) {
        XWPFTemplate template = XWPFTemplate.compile(url).render(map);
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(url)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return 1;
    }
    private String recordTotaldeal(Integer id,String signatureUrl){
        List<ManageRecordIntervals> manageRecordIntervalsList = manageRecordIntervalsMapper.selectList(Wrappers.<ManageRecordIntervals>lambdaQuery().eq(ManageRecordIntervals::getRecordIntervalsTotalId,id));
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/intervals-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> intervalsList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordIntervalsList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 7; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件名称@File name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版本号@Version number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订号@Revision number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("适宜性@Suitability");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第七列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 16) {
                            //最后一行
                            textRenderData.setText("注:适宜性一栏打“√”表此文件适宜,“×”表示不适宜,文件需修订或作废。@Note:The“√”table in the suitability column is suitable for this document, the“×”table is not suitable,and the document needs to berevised or invalidated @审查日期: @Review Date:@参加审查人员签名:@Signatures of the reviewers particip ating in the review:∑22");
                            renderData.add(textRenderData);
                            paragraphRenderData.setContents(renderData);
                            paragraphRenderDataList.add(paragraphRenderData);
                            cellRenderData.setParagraphs(paragraphRenderDataList);
                            cells.add(cellRenderData);
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i -1) + (index1 - 1) * 15).getRevision());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getSuitability());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getRemark() );
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("intervals", tableRenderData);
                table.put("index1", index1);
                intervalsList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("intervalsList", intervalsList);
                    put("submitDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日")));
                    put("submitDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear());
                    put("ratifyDate", "{{ratifyDate}}");
                    put("ratifyDateEn","{{ratifyDateEn}}");
                    put("ratifyUrl", null);
                    put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl));
                }});
        String name = UUID.randomUUID() + "_文件定期审查记录表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
在上述文件截断后对比
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewProgramFileServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewProgramServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewReportServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/vo/ManageControlPlanListVo.java cnas-manage/src/main/java/com/ruoyi/manage/vo/ManageRiskAssessmentResultsVo.java cnas-manage/src/main/java/com/ruoyi/manage/vo/MeetingParticipantsDetailsVo.java cnas-manage/src/main/java/com/ruoyi/manage/vo/ReviewProgramDetailsVo.java cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar cnas-manage/src/main/resources/lib/license.xml cnas-manage/src/main/resources/mapper/ClientSatisfactionAnalyseFileMapper.xml cnas-manage/src/main/resources/mapper/ClientSatisfactionMapper.xml cnas-manage/src/main/resources/mapper/InternalCheckMapper.xml cnas-manage/src/main/resources/mapper/InternalCorrectFileMapper.xml cnas-manage/src/main/resources/mapper/InternalCorrectMapper.xml cnas-manage/src/main/resources/mapper/InternalImplementMapper.xml cnas-manage/src/main/resources/mapper/InternalMeetingDetailMapper.xml cnas-manage/src/main/resources/mapper/InternalMeetingMapper.xml cnas-manage/src/main/resources/mapper/InternalPlanDetailMapper.xml cnas-manage/src/main/resources/mapper/InternalPlanMapper.xml cnas-manage/src/main/resources/mapper/InternalReportMapper.xml cnas-manage/src/main/resources/mapper/ManageControlPlanListMapper.xml cnas-manage/src/main/resources/mapper/ManageDocumentAlterMapper.xml cnas-manage/src/main/resources/mapper/ManageDocumentCancelMapper.xml cnas-manage/src/main/resources/mapper/ManageDocumentControlledMapper.xml cnas-manage/src/main/resources/mapper/ManageDocumentIssueRecycleMapper.xml cnas-manage/src/main/resources/mapper/ManageDocumentListMapper.xml cnas-manage/src/main/resources/mapper/ManageMeetingMapper.xml cnas-manage/src/main/resources/mapper/ManageMeetingParticipantsMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordAuditMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordCancelMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordCheckMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordIntervalsMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordIntervalsTotalMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordIssueRecycleMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordTotalMapper.xml cnas-manage/src/main/resources/mapper/ManageRecordVerifyMapper.xml cnas-manage/src/main/resources/mapper/ManageReviewProgramFileMapper.xml cnas-manage/src/main/resources/mapper/ManageReviewProgramMapper.xml cnas-manage/src/main/resources/mapper/ManageReviewReportMapper.xml cnas-manage/src/main/resources/mapper/ManageRiskAssessmentResultsMapper.xml cnas-manage/src/main/resources/static/analysis-risk-factors.docx cnas-manage/src/main/resources/static/audit-deal.docx cnas-manage/src/main/resources/static/cancel-deal.docx cnas-manage/src/main/resources/static/check-deal.docx cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx cnas-manage/src/main/resources/static/internal-check.docx cnas-manage/src/main/resources/static/internal-correct.docx cnas-manage/src/main/resources/static/internal-implement.docx cnas-manage/src/main/resources/static/internal-meeting.docx cnas-manage/src/main/resources/static/internal-plan.docx cnas-manage/src/main/resources/static/internal-report.docx cnas-manage/src/main/resources/static/intervals-deal.docx cnas-manage/src/main/resources/static/recycle-deal.docx cnas-manage/src/main/resources/static/review-meet.docx cnas-manage/src/main/resources/static/review-program.docx cnas-manage/src/main/resources/static/review-report.docx cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx cnas-manage/src/main/resources/static/verify-deal.docx inspect-server/pom.xml inspect-server/src/main/java/com/ruoyi/basic/pojo/InsSample.java (已删除) inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsSample.java inspect-server/src/main/java/com/ruoyi/inspect/util/HackLoopTableRenderPolicy.java inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java inspect-server/src/main/java/com/ruoyi/inspect/util/XWPFDocumentUtils.java performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryCorrectionHoursMapper.java performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryWorkingHoursDayMapper.java performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryCorrectionHoursServiceImpl.java performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOriginalHoursServiceImpl.java performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java pom.xml ruoyi-admin/pom.xml ruoyi-admin/src/main/resources/application-druid.yml ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java ruoyi-system/src/main/resources/mapper/system/UserMapper.xml