528339cdab95865de17d23618912950540120541..4f3a98f19143865cdc1de4791e8a95d96bd40c65
2025-08-01 maven
yys 密码已重置
4f3a98 对比 | 目录
2025-08-01 maven
yys 修改ifs的api密码
f9b978 对比 | 目录
2025-07-24 maven
yys 添加分析数据算法修改,表新增字段
b3654b 对比 | 目录
2025-07-16 maven
yys 回退sql
df1006 对比 | 目录
2025-07-15 liding
检验任务数据重复处理
e4265f 对比 | 目录
2025-07-08 liding
排除辅材数据
a33e38 对比 | 目录
2025-06-09 liding
装备导入检验项目优化
86b109 对比 | 目录
2025-06-05 liding
tree优化
16d1c4 对比 | 目录
2025-05-27 zhuo
设备提醒到达校准时间
57c904 对比 | 目录
2025-05-26 zhuo
人员培训讲师生成签名
fc5439 对比 | 目录
2025-05-26 zhuo
人员培训修改成电子签
7299b1 对比 | 目录
2025-05-19 zhuo
工时添加判断是否有检验值,没有检验值默认填充工时
957865 对比 | 目录
2025-05-12 zhuo
添加判断当前时间是否没有该检测项的抽样计划功能
f201f1 对比 | 目录
2025-05-08 zhuo
检验项添加抽样类型绑定
30ca7a 对比 | 目录
2025-05-07 zhuo
关闭流
50164d 对比 | 目录
2025-05-07 zhuo
导出添加自定义签名功能
a4ee8b 对比 | 目录
2025-05-07 zhuo
添加监督质量评审功能
0877a9 对比 | 目录
2025-05-06 zhuo
质量监督添加被监督人签名
25e115 对比 | 目录
2025-05-06 zhuo
装备lims设备提前5天到期需要提醒设备管理员
c0062e 对比 | 目录
2025-05-06 zhuo
修改检验项问题修复
883d4f 对比 | 目录
2025-04-25 zhuo
修复复核的时候提交人错误问题
f53654 对比 | 目录
2025-04-24 zhuo
报告结果导出调整
b721f0 对比 | 目录
2025-04-24 zhuo
样品导出调整
7d9f41 对比 | 目录
2025-04-22 zhuo
样品处理导出调整
cfbb54 对比 | 目录
2025-04-22 zhuo
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
f206c8 对比 | 目录
2025-04-22 zhuo
预警功能调整
d55fe4 对比 | 目录
2025-04-22 zss
7.4样品的处置调整
dfd3d0 对比 | 目录
2025-04-21 zss
7.4样品的处置
55d0c9 对比 | 目录
2025-04-21 zhuo
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
09c297 对比 | 目录
2025-04-21 zhuo
原材料和成品可根据选择行导出
af1ef9 对比 | 目录
2025-04-18 zhuo
1.设备使用授权导出 2.设备维护保养导出
8b4d72 对比 | 目录
2025-04-18 zss
7.8报告结果完善
257df6 对比 | 目录
2025-04-18 zss
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
ec1f20 对比 | 目录
2025-04-18 zss
7.8报告结果
63f8e2 对比 | 目录
2025-04-18 zhuo
1.添加设备使用授权 2.报告编制添加导出功能
3b20b8 对比 | 目录
2025-04-17 zss
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
e9bf5a 对比 | 目录
2025-04-17 zss
7.1设备使用记录
8d87f1 对比 | 目录
2025-04-17 zhuo
设备添加使用授权界面
c29fa5 对比 | 目录
2025-04-17 zhuo
去除公司名称
3baa00 对比 | 目录
2025-04-17 zhuo
Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb
f67aa8 对比 | 目录
2025-04-17 zhuo
设备维护保养调整
72e683 对比 | 目录
2025-04-17 zss
7.8报告结果完成
63333d 对比 | 目录
2025-04-16 zhuo
工时新增判断计算带出来的
e1f431 对比 | 目录
2025-04-16 zhuo
修改质量监控报告查询和前面
809ab6 对比 | 目录
2025-04-15 zhuo
修改ifs对接方法
e6e5a6 对比 | 目录
2025-04-15 zhuo
修改ifs对接判断是否唯一
80e956 对比 | 目录
2025-04-14 zhuo
费用统计调整
8b1afe 对比 | 目录
2025-04-13 zhuo
不合格复测调整
a265e6 对比 | 目录
2025-04-10 zhuo
温湿度报检功能调整
1b0b86 对比 | 目录
2025-04-03 zhuo
调整配置文件, 修改绑定查询
13be3b 对比 | 目录
已删除61个文件
已修改118个文件
已添加1,215个文件
96405 ■■■■ 文件已修改
README.md 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/LaboratoryController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/ProductPartController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/ProductSupplierDensityController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/SealController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTreeController.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StructureTestObjectPartController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityCheckDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/SampleDto.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/CertificationMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/SealMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | 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 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardProductListMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTemplateMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/Certification.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethodList.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardProductList.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureItemParameter.java 6 ●●●●● 补丁 | 查看 | 原始文档 | 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 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService2.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StandardTreeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/StructureItemParameterService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/LaboratoryServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductSupplierDensityServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | 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 129 ●●●●● 补丁 | 查看 | 原始文档 | 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 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTemplateServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StructureItemParameterServiceImpl.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/CertificationMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/SealMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardMethodListMapper.xml 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardMethodMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardProductListMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardTemplateMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StandardTreeMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/resources/mapper/StructureTestMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/clean.bat 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/package.bat 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/run.bat 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceAcceptanceController.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceAccidentReportController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBorrowController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBreakdownMaintenanceController.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceInspectionRecordController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceInstructionController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceScrappedController.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceStateController.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DataConfigDto.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceAccidentReportDto.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceBreakdownMaintenance.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCalibrationPlanDetailDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCalibrationPlanDto.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCollectionDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceConfigDtoPage.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceDto.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExaminePlanDetailsDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExaminePlanDto.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExamineRecordContrastDetailsDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExamineRecordContrastDto.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExamineRecordDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExport.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDetailsDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceInspectionRecordDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceInstructionDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMetricRecordAndMaintenanceDto.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMetricRecordDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceOperationInstructionDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceScrappedDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceStateDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DocumentExportWordDto.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceMaintenanceExport.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceRecordExportWord.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceStateExport.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceCalibrationPlanDetailUpload.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceExaminePlanUpload.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DataConfigMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAcceptanceFileMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAcceptanceMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAccidentReportMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBorrowMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBreakdownMaintenanceMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceCalibrationPlanDetailMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceCalibrationPlanMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExaminePlanDetailsMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExaminePlanMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordContrastDetailsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordContrastMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExternalApplyMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerDetailsMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceInspectionRecordDetailsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceInspectionRecordMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceLogMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricsCopyMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceScrappedMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementDetailsMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/InstructionMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/OperationInstructionMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQBean.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQConfig.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQPublic.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQSubscribe.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DataConfig.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/Device.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceAcceptance.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceAcceptanceFile.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceAccidentReport.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceBorrow.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceCalibrationPlan.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceCalibrationPlanDetail.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExaminePlan.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExaminePlanDetails.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecord.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecordContrast.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecordContrastDetails.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecordDetail.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExternalApply.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpowerDetails.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceInspectionRecord.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceInspectionRecordDetails.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceInstruction.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceLog.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMetric.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMetricRecord.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMetricsCopy.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceRecord.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceScrapped.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceState.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/OperationInstruction.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DataConfigService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceAcceptanceFileService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceAcceptanceService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceAccidentReportService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceBorrowService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceBreakdownMaintenanceService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceCalibrationPlanDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceCalibrationPlanService.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExaminePlanDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExaminePlanService.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordContrastDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordContrastService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExternalApplyService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceInspectionRecordDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceInspectionRecordService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceInstructionService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMetricRecordService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMetricsCopyService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceOperationInstructionService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceScrappedService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceStateService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/IDeviceMetricService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAcceptanceFileServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAcceptanceServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAccidentReportServiceImpl.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBorrowServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBreakdownMaintenanceServiceImpl.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceCalibrationPlanDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceCalibrationPlanServiceImpl.java 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordContrastDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordContrastServiceImpl.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordServiceImpl.java 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExternalApplyServiceImpl.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordServiceImpl.java 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInstructionServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricRecordServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricsCopyServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceOperationInstructionServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceScrappedServiceImpl.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java 498 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceStateServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java 861 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DataConfigMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceAcceptanceMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceAccidentReportMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceBreakdownMaintenanceMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceExaminePlanMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceExamineRecordContrastMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceExamineRecordMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceExternalApplyMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceImpowerDetailsMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceImpowerMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceInspectionRecordMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMapper.xml 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceScrappedMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceStateMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/InstructionMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/OperationInstructionMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/acceptance-certificate.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-accident-report.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-breakdown-maintenance.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-calibration-plan.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-document.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-external-apply.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-impower.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-inspection-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-maintenance.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-scrapped.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/device-status.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/examine-plan-detail.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/examine-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/incident-report.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/maintenance-plan.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/maintenance-records.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/quipment-details.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/review-examine-record-contrast.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/traceability-management-details.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/static/word/use-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ClientSatisfactionController.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalCheckController.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalCorrectController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalImplementController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalMeetingController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalPlanController.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/InternalReportController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | 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 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentCancelController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentControlledController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentIssueRecycleController.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageDocumentListController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageMeetingController.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageMeetingParticipantsController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordAuditController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCancelController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCheckController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsTotalController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIssueRecycleController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordTotalController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordVerifyController.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramController.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramFileController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewReportController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRiskAssessmentResultsController.java 134 ●●●●● 补丁 | 查看 | 原始文档 | 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 26 ●●●●● 补丁 | 查看 | 原始文档 | 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 63 ●●●●● 补丁 | 查看 | 原始文档 | 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 53 ●●●●● 补丁 | 查看 | 原始文档 | 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 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentControlled.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentIssueRecycle.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentList.java 81 ●●●●● 补丁 | 查看 | 原始文档 | 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 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCancel.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCheck.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervals.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervalsTotal.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIssueRecycle.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordTotal.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordVerify.java 64 ●●●●● 补丁 | 查看 | 原始文档 | 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 233 ●●●●● 补丁 | 查看 | 原始文档 | 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 320 ●●●●● 补丁 | 查看 | 原始文档 | 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 239 ●●●●● 补丁 | 查看 | 原始文档 | 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 203 ●●●●● 补丁 | 查看 | 原始文档 | 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 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalReportServiceImpl.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageControlPlanListServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentCancelServiceImpl.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentIssueRecycleServiceImpl.java 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | 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 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordAuditServiceImpl.java 679 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java 486 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java 475 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java 528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsTotalServiceImpl.java 507 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java 701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java 157 ●●●●● 补丁 | 查看 | 原始文档 | 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 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageReviewReportServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | 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 18 ●●●●● 补丁 | 查看 | 原始文档 | 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 | 历史
cnas-personnel/pom.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonCommunicationAbilityController.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPostAuthorizationRecordController.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonRewardPunishmentRecordController.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingRecordController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDetailsDto.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoWorkDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonJobResponsibilitiesDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPostAuthorizationRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonRewardPunishmentRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDetailedDto.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordDto.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordListDto.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordSubmitDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordExportDto.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordPersonDetailedDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonRewardPunishmentRecordExcel.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedListener.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedUpload.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedFileMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonJobResponsibilities.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPersonnelCapacity.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPostAuthorizationRecord.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonRewardPunishmentRecord.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTraining.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailed.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailedFile.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingRecord.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPostAuthorizationRecordService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonRewardPunishmentRecordService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingDetailedService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingRecordService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonRewardPunishmentRecordServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java 438 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonJobResponsibilitiesMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonPostAuthorizationRecordMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonTrainingDetailedMapper.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonTrainingMapper.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/communication-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/credentials-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/explain-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/person-basic-info.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/person-training-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/person-training.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/personnel-capacity.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/super-vise-plan.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/supervision-control-sheet.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/supervision-processing-sheet.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/supervision-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-personnel/src/main/resources/static/training-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/pom.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/InconsistentDistributionController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessComplainController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessDealController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessEvaluateController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodVerifyController.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessSampleController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessTotaldealController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java 296 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseManagementReviewController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ImageDemoData.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderExportDto.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessComplainDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessDealDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewArchivedDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewBackupsDto.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodVerifyCalibrationsFileDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodVerifyDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodVerifyExportWordDto.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessReportDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/QualityMonitorDetailsDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/QualityMonitorDetailsEvaluateDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/QualityMonitorDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/QualitySuperviseDetailsAccordingDto.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/QualitySuperviseDetailsCorrectDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/QualitySuperviseDetailsDto.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/dto/SampleItemDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/excel/QualityMonitorDetailsUpload.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/excel/QualitySuperviseDetailsUpload.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/InconsistentDistributionDetailMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/InconsistentDistributionMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessComplainMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessDealMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessEvaluateMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewArchivedMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyCalibrationsFileMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyMachineAttachmentMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyMethodFileMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyWorkFileMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessReportMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessSampleMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessTotaldealMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsEvaluateFileMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsEvaluateMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsRatifyMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsAccordingMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsCorrectFileMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsCorrectMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsRecordMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseManagementReviewMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistribution.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrderDetail.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessComplain.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessDeal.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessEvaluate.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNewArchived.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNewBackups.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerify.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyCalibrationsFile.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyMachineAttachment.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyMethodFile.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyWorkFile.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessSample.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessTotaldeal.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitor.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetails.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetailsEvaluate.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetailsEvaluateFile.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetailsRatify.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySupervise.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetails.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsAccording.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsCorrect.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsCorrectFile.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsRecord.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseManagementReview.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/InconsistentDistributionDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/InconsistentDistributionService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessComplainService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessDealService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessEvaluateService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewArchivedService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewBackupsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyCalibrationsFileService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyMachineAttachmentService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyMethodFileService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyService.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyWorkFileService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessSampleService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessTotaldealService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorDetailsEvaluateService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorDetailsRatifyService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorDetailsService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorService.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualitySuperviseDetailsService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualitySuperviseManagementReviewService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/QualitySuperviseService.java 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/CnasProcessMethodVerifyCalibrationsFileServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/CnasProcessMethodVerifyWorkFileServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessComplainServiceImpl.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessDealServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessEvaluateServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewArchivedServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewBackupsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyMachineAttachmentServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyMethodFileServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyServiceImpl.java 455 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessSampleServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorDetailsEvaluateServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorDetailsRatifyServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorDetailsServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorServiceImpl.java 835 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseDetailsServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseManagementReviewServiceImpl.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java 1267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/InconsistentDistributionDetailMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/InconsistentDistributionMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/InspectionOrderDetailMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessComplainMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessDealMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessEvaluateMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodSearchNewArchivedMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodSearchNewBackupsMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodVerifyCalibrationsFileMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodVerifyMachineAttachmentMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodVerifyMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodVerifyMethodFileMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessMethodVerifyWorkFileMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessReportMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessSampleMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateFileMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualityMonitorDetailsMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualityMonitorDetailsRatifyMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualityMonitorMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseDetailsAccordingMapper.xml 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectFileMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseDetailsMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseDetailsRecordMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseManagementReviewMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/QualitySuperviseMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/excel/check-records.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/inconsistent-distribution.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/inspection-order.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/method-verify.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/quality-monitor-details-ratify.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/quality-monitor-evaluate.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/quality-monitor.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/quality-supervise.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/report-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/sample-deal.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/sample-receive.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/supervise-detail-correct.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/supervise-management-eview.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/supervision-detail-according.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/static/supervision-detail-record.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeCalibrationScheduleController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeIlluminationController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeLightningProtectionController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FePowerStableController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceAcceptanceController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceRecordController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/AcceptanceDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationAddDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationExportDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableAddDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableExportDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/ForeignRegisterDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/InternalWastesDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesListDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/SupplierManagementDto.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/excel/FeCalibrationScheduleExport.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/excel/FeLightningProtectionExcel.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/excel/FeStandardSubstanceExcel.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/CollectLaboratoryMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/CollectTemperatureHumidityMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeCalibrationScheduleMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationDetectionAreaMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeLightningProtectionMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeMeasuredQuantityMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FePowerStableMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceRecordMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumDateMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ForeignRegisterMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesContentsMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesListMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/SupplierManagementMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/CollectLaboratory.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/CollectTemperatureHumidity.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeCalibrationSchedule.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeIllumination.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeIlluminationDetectionArea.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeMeasuredQuantity.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FePowerStable.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstance.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptance.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptanceInspection.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceRecord.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumRecord.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastes.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastesDetail.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesContents.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesList.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/SupplierManagement.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeCalibrationScheduleService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationDetectionAreaService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeLightningProtectionService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeMeasuredQuantityService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FePowerStableService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceInspectionService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceRecordService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumDateService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumRecordService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ForeignRegisterService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesContentsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesListService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/SupplierManagementService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeCalibrationScheduleServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationDetectionAreaServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeLightningProtectionServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeMeasuredQuantityServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FePowerStableServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ForeignRegisterServiceImpl.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesContentsServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesListServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/SupplierManagementServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceDetailsVo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceVo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/vo/SubstanceRecordVo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FePowerStableMapper.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/InternalWastesMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/static/foreign-register.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/static/illumination.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/static/internal-wastes.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/static/power-stable.docx 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/static/temp_hum_date.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/pom.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/basic/pojo/InsSample.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/FinishProductSpotCheckController.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InformationNotificationController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java 279 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsProductDeviationWarningController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/ReportController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/WarehouseController.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/CopperInsOrderDto.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/CostStatisticsDto.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/DataAnalysisDto.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/HistoryDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsStockQueryDTO.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderDeviceRecordDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderPlanDTO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderPlanProductDto.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderUpdateDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsProductAnalysisDto.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsProductBindingDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsProductDeviationWarningDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsReportExport.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InsulatingDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/OmitOrderProductDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/ProcurementSuppliesListEDto.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/ProductResultDto2.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/RawMaterialStandardTreeDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/ReportPageDto.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto2.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductExportDto.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductRawAnalysisDto.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckQuarterDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckYearDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseCellAndSampleDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/CommonOaMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/DataAnalysisMapper.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderDeviceRecordMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderFactoryVerifyItemMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderFactoryVerifyMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderFileMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderStandardTemplateMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderStateMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderTemplateMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductDeviationWarningDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductDeviationWarningMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductResultMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductUserMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsReportMapper.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerFileMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedRetestProductMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedRetestResultMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/RawMaterialOrderTemplateMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterItemMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearItemMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseCellMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseHistoryMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseShelfMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrder.java 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderDeviceRecord.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderFactoryVerify.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderFactoryVerifyItem.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderFile.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderStandardTemplate.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderState.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderTemplate.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProduct.java 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductDeviationWarning.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductDeviationWarningDetail.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductResult.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductUser.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsReport.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsSample.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsSampleUser.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedHandler.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedHandlerFile.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedRetestProduct.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedRetestResult.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/RawMaterialOrderTemplate.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckQuarter.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckQuarterItem.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckYear.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckYearItem.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/Warehouse.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseCell.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseHistory.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseShelf.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/CommonOaService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/DataAnalysisService.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/FinishProductSpotCheckService.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderDeviceRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderFactoryVerifyItemService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderFileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderStandardTemplateService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderStateService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderTemplateService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsProductDeviationWarningDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsProductDeviationWarningService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsProductService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsSampleService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerFileService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedRetestProductService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderTemplateService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/ReportService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckQuarterItemService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckYearItemService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseCellService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/CommonOaServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/DataAnalysisServiceImpl.java 613 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java 681 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderDeviceRecordServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderFactoryVerifyItemServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderFileServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java 4495 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java 1153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderStandardTemplateServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderStateServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderTemplateServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductDeviationWarningDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductDeviationWarningServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java 1211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsSampleServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerFileServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedRetestProductServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java 847 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderTemplateServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReportServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckQuarterItemServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckYearItemServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseCellServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseServiceImpl.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/task/RawMaterIalSchedule.java 26 ●●●●● 补丁 | 查看 | 原始文档 | 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 | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/DeviationAnalyzeVo.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPlanTaskSwitchVo.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPlanVO.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPrintingVo.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/ProductVo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/RawMaterialSupplierVo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/RawProductAnalysisVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/SampleDefectsChildrenVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/SampleDefectsFatherVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/SampleVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/lib/license.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderMapper.xml 472 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderStateMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderTemplateMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductDeviationWarningDetailMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductDeviationWarningMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductMapper.xml 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductResultMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductUserMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsReportMapper.xml 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsSampleMapper.xml 705 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsUnqualifiedRetestProductMapper.xml 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/RawMaterialOrderTemplateMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/SpotCheckQuarterItemMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/SpotCheckQuarterMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/SpotCheckYearMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/WarehouseHistoryMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/WarehouseMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/factory_verify.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/report-template.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/small-report-template.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/spot_check_quarter.docx 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/static/spot_check_year.docx 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryCorrectionHoursController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOriginalHoursController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOutputWorkingHoursController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursDayController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/ShiftTimeController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryAllDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOriginalHoursLookDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOutputWorkingHoursTemporaryDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | 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 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursTemporaryMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryWorkingHoursDayMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryWorkingHoursMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryOutputWorkingHoursTemporary.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryOutputWorkingHoursTemporaryService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryCorrectionHoursServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOriginalHoursServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursTemporaryServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursTemporaryMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/AuxiliaryWorkingHoursDayMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/AuxiliaryWorkingHoursMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/CodeGenerator.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/MqttApplicationRunner.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Company.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Person.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonDto.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonnelHeaderApi.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/dto/UpdateUserDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CompaniesController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 233 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-prod.yml 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-test.yml 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-ztzb.yml 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/banner.txt 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/i18n/messages.properties 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/logback.xml 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/pom.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/annotation/PersonalScope.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/PersonnelProperties.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/SsoBean.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/WechatProperty.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/DictDataConstants.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/InsOrderTypeConstants.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/constant/MenuJumpPathConstants.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/handler/MybatisHandler.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflow.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflowResponse.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableField.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableRecord.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowTable.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequest.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequestResponse.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAResult.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequest.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpGet.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpPost.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestSoap.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestInfo.java 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableField.java 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableRecord.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowTable.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ObjectFactory.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflow.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflowResponse.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/package-info.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/ApplicationContextHolder.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/Base64.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/GZipUtil.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/IndustryChainUtils.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/LimsDateUtil.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/Md5Util.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/MyUtil.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/SignatureImageUtil.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/WxCpUtils.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/resources/ttf/signature.ttf 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PersonalScopeAspect.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java 35 ●●●● 补丁 | 查看 | 原始文档 | 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-framework/src/main/java/com/ruoyi/framework/model/SsoOauthTokenModel.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/model/SsoUserInfoModel.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsByOpenIdServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/ssoAuth/SsoCodeAuthenticationProvider.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/ssoAuth/SsoCodeAuthenticationToken.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java 531 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/generator.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/controller.java.vm 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/domain.java.vm 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/mapper.java.vm 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/service.java.vm 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/js/api.js.vm 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/sql/sql.vm 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm 505 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/index.vue.vm 602 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm 474 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm 590 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJobLog.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/CronUtils.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/JobInvokeUtil.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzJobExecution.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysRoleVo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/UserVo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/UserMapper.xml 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -1,95 +0,0 @@
<p align="center">
    <img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.9</h1>
<h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4>
<p align="center">
    <a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
    <a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.9-brightgreen.svg"></a>
    <a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
</p>
## å¹³å°ç®€ä»‹
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
* å‰ç«¯é‡‡ç”¨Vue、Element UI。
* åŽç«¯é‡‡ç”¨Spring Boot、Spring Security、Redis & Jwt。
* æƒé™è®¤è¯ä½¿ç”¨Jwt,支持多终端认证系统。
* æ”¯æŒåŠ è½½åŠ¨æ€æƒé™èœå•ï¼Œå¤šæ–¹å¼è½»æ¾æƒé™æŽ§åˆ¶ã€‚
* é«˜æ•ˆçŽ‡å¼€å‘ï¼Œä½¿ç”¨ä»£ç ç”Ÿæˆå™¨å¯ä»¥ä¸€é”®ç”Ÿæˆå‰åŽç«¯ä»£ç ã€‚
* æä¾›äº†æŠ€æœ¯æ ˆï¼ˆ[Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Vue3](https://gitcode.com/yangzongzhuan/RuoYi-Vue3),保持同步更新。
* æä¾›äº†å•应用版本[RuoYi-Vue-fast](https://gitcode.com/yangzongzhuan/RuoYi-Vue-fast),Oracle版本[RuoYi-Vue-Oracle](https://gitcode.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。
* ä¸åˆ†ç¦»ç‰ˆæœ¬ï¼Œè¯·ç§»æ­¥[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)
* é˜¿é‡Œäº‘折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)&nbsp;&nbsp;
## å†…置功能
1.  ç”¨æˆ·ç®¡ç†ï¼šç”¨æˆ·æ˜¯ç³»ç»Ÿæ“ä½œè€…,该功能主要完成系统用户配置。
2.  éƒ¨é—¨ç®¡ç†ï¼šé…ç½®ç³»ç»Ÿç»„织机构(公司、部门、小组),树结构展现支持数据权限。
3.  å²—位管理:配置系统用户所属担任职务。
4.  èœå•管理:配置系统菜单,操作权限,按钮权限标识等。
5.  è§’色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6.  å­—典管理:对系统中经常使用的一些较为固定的数据进行维护。
7.  å‚数管理:对系统动态配置常用参数。
8.  é€šçŸ¥å…¬å‘Šï¼šç³»ç»Ÿé€šçŸ¥å…¬å‘Šä¿¡æ¯å‘布维护。
9.  æ“ä½œæ—¥å¿—:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. ç™»å½•日志:系统登录日志记录查询包含登录异常。
11. åœ¨çº¿ç”¨æˆ·ï¼šå½“前系统中活跃用户状态监控。
12. å®šæ—¶ä»»åŠ¡ï¼šåœ¨çº¿ï¼ˆæ·»åŠ ã€ä¿®æ”¹ã€åˆ é™¤)任务调度包含执行结果日志。
13. ä»£ç ç”Ÿæˆï¼šå‰åŽç«¯ä»£ç çš„生成(java、html、xml、sql)支持CRUD下载 ã€‚
14. ç³»ç»ŸæŽ¥å£ï¼šæ ¹æ®ä¸šåŠ¡ä»£ç è‡ªåŠ¨ç”Ÿæˆç›¸å…³çš„api接口文档。
15. æœåŠ¡ç›‘æŽ§ï¼šç›‘è§†å½“å‰ç³»ç»ŸCPU、内存、磁盘、堆栈等相关信息。
16. ç¼“存监控:对系统的缓存信息查询,命令统计等。
17. åœ¨çº¿æž„建器:拖动表单元素生成相应的HTML代码。
18. è¿žæŽ¥æ± ç›‘视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
## åœ¨çº¿ä½“验
- admin/admin123
- é™†é™†ç»­ç»­æ”¶åˆ°ä¸€äº›æ‰“赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
演示地址:http://vue.ruoyi.vip
文档地址:http://doc.ruoyi.vip
## æ¼”示图
<table>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/up-936ec82d1f4872e1bc980927654b6007307.png"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"/></td>
    </tr>
    <tr>
        <td><img src="https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"/></td>
        <td><img src="https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"/></td>
    </tr>
</table>
## è‹¥ä¾å‰åŽç«¯åˆ†ç¦»äº¤æµç¾¤
QQ群: [![加入QQ群](https://img.shields.io/badge/已满-937441-blue.svg)](https://jq.qq.com/?_wv=1027&k=5bVB1og) [![加入QQ群](https://img.shields.io/badge/已满-887144332-blue.svg)](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [![加入QQ群](https://img.shields.io/badge/已满-180251782-blue.svg)](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [![加入QQ群](https://img.shields.io/badge/已满-104180207-blue.svg)](https://jq.qq.com/?_wv=1027&k=51G72yr) [![加入QQ群](https://img.shields.io/badge/已满-186866453-blue.svg)](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [![加入QQ群](https://img.shields.io/badge/已满-201396349-blue.svg)](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [![加入QQ群](https://img.shields.io/badge/已满-101456076-blue.svg)](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [![加入QQ群](https://img.shields.io/badge/已满-101539465-blue.svg)](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [![加入QQ群](https://img.shields.io/badge/已满-264312783-blue.svg)](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [![加入QQ群](https://img.shields.io/badge/已满-167385320-blue.svg)](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [![加入QQ群](https://img.shields.io/badge/已满-104748341-blue.svg)](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [![加入QQ群](https://img.shields.io/badge/已满-160110482-blue.svg)](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [![加入QQ群](https://img.shields.io/badge/已满-170801498-blue.svg)](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [![加入QQ群](https://img.shields.io/badge/已满-108482800-blue.svg)](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [![加入QQ群](https://img.shields.io/badge/已满-101046199-blue.svg)](https://jq.qq.com/?_wv=1027&k=SpyH2875) [![加入QQ群](https://img.shields.io/badge/已满-136919097-blue.svg)](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [![加入QQ群](https://img.shields.io/badge/已满-143961921-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [![加入QQ群](https://img.shields.io/badge/已满-174951577-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [![加入QQ群](https://img.shields.io/badge/已满-161281055-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [![加入QQ群](https://img.shields.io/badge/已满-138988063-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [![加入QQ群](https://img.shields.io/badge/已满-151450850-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) [![加入QQ群](https://img.shields.io/badge/已满-224622315-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=F58bgRa-Dp-rsQJThiJqIYv8t4-lWfXh&authKey=UmUs4CVG5OPA1whvsa4uSespOvyd8%2FAr9olEGaWAfdLmfKQk%2FVBp2YU3u2xXXt76&noverify=0&group_code=224622315) [![加入QQ群](https://img.shields.io/badge/已满-287842588-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Nxb2EQ5qozWa218Wbs7zgBnjLSNk_tVT&authKey=obBKXj6SBKgrFTJZx0AqQnIYbNOvBB2kmgwWvGhzxR67RoRr84%2Bus5OadzMcdJl5&noverify=0&group_code=287842588) [![加入QQ群](https://img.shields.io/badge/187944233-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=numtK1M_I4eVd2Gvg8qtbuL8JgX42qNh&authKey=giV9XWMaFZTY%2FqPlmWbkB9g3fi0Ev5CwEtT9Tgei0oUlFFCQLDp4ozWRiVIzubIm&noverify=0&group_code=187944233) ç‚¹å‡»æŒ‰é’®å…¥ç¾¤ã€‚
basic-server/pom.xml
@@ -11,14 +11,19 @@
    <artifactId>basic-server</artifactId>
    <dependencies>
        <!-- é€šç”¨å·¥å…·-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common</artifactId>
        </dependency>
        <!-- æ ¸å¿ƒæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-framework</artifactId>
        </dependency>
        <!-- ç³»ç»Ÿæ¨¡å—-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-system</artifactId>
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
@@ -1,41 +1,26 @@
package com.ruoyi.basic.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.basic.dto.PageTestObjectDto;
import com.ruoyi.basic.dto.ProductDTO1;
import com.ruoyi.basic.excel.StructureTestObjectData;
import com.ruoyi.basic.excel.StructureTestObjectListener;
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.StandardTemplate;
import com.ruoyi.basic.pojo.StructureItemParameter;
import com.ruoyi.basic.pojo.StructureTestObject;
import com.ruoyi.basic.service.CapacityScopeService;
import com.ruoyi.basic.service.ProductService;
import com.ruoyi.basic.service.StandardTemplateService;
import com.ruoyi.basic.service.StructureItemParameterService;
import com.ruoyi.common.core.domain.Result;
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)表控制层
@@ -55,13 +40,10 @@
    private StructureItemParameterService structureItemParameterService;
    private ISysDictTypeService dictTypeService;
    private StandardTemplateService standardTemplateService;
    @ApiOperation(value = "获取项目检验参数列表")
    @PostMapping("/selectItemParameterList")
    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) throws Exception {
    @GetMapping("/selectItemParameterList")
    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) {
        return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter));
    }
@@ -72,7 +54,7 @@
    }
    @ApiOperation(value = "删除项目检验参数")
    @PostMapping("/delItemParameter")
    @DeleteMapping("/delItemParameter")
    public Result<?> delItemParameter(Integer id) {
        return Result.success(capacityScopeService.delItemParameter(id));
    }
@@ -84,8 +66,8 @@
    }
    @ApiOperation(value = "获取检验对象")
    @PostMapping("/selectTestObjectList")
    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) throws Exception {
    @GetMapping("/selectTestObjectList")
    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) {
        return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto));
    }
@@ -96,7 +78,7 @@
    }
    @ApiOperation(value = "删除检验对象")
    @PostMapping("/delTestObject")
    @DeleteMapping("/delTestObject")
    public Result<?> delTestObject(Integer id) {
        return Result.success(capacityScopeService.delTestObject(id));
    }
@@ -114,14 +96,14 @@
    }
    @ApiOperation(value = "设备里面选择检验项目(树形结构)")
    @PostMapping("/getInsProduction")
    @GetMapping("/getInsProduction")
    public Result getInsProduction() {
        return Result.success(capacityScopeService.getInsProduction());
    }
    @ApiOperation(value = "维护检验对象的产品")
    @PostMapping("/selectProductListByObjectId")
    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) throws Exception {
    @GetMapping("/selectProductListByObjectId")
    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) {
        return Result.success(productService.selectProductListByObjectId(page, productDTO));
    }
@@ -138,7 +120,7 @@
    }
    @ApiOperation(value = "删除产品")
    @PostMapping("/delProduct")
    @DeleteMapping("/delProduct")
    public Result delProduct(Integer id) {
        return Result.success(productService.delProduct(id));
    }
@@ -154,229 +136,7 @@
    @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("服务端报错");
        }
        structureItemParameterService.importEquipData(file);
        return Result.success();
    }
basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java
@@ -7,10 +7,7 @@
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;
import org.springframework.web.bind.annotation.*;
@Api(tags = "资质说明")
@AllArgsConstructor
@@ -23,7 +20,7 @@
    @ApiOperation(value = "查询资质明细列表")
    @PostMapping("/getCertificationDetail")
    @GetMapping("/getCertificationDetail")
    public Result getCertificationDetail(Page page,Certification certification) {
        return Result.success(certificationService.getCertificationDetail(page, certification));
    }
@@ -34,8 +31,8 @@
        return Result.success(certificationService.addCertificationDetail(certification));
    }
    @ApiOperation(value = "删除资质明细列表")
    @PostMapping("/delCertificationDetail")
    public Result<?> delCertificationDetail( String ids) {
    @DeleteMapping("/delCertificationDetail")
    public Result<?> delCertificationDetail(String ids) {
        return Result.success(certificationService.delCertificationDetail(ids));
    }
}
basic-server/src/main/java/com/ruoyi/basic/controller/LaboratoryController.java
@@ -24,7 +24,7 @@
    private LaboratoryService laboratoryService;
    @ApiOperation(value = "查询实验室管理列表")
    @PostMapping("/selectItemParameter")
    @GetMapping("/selectItemParameter")
    public Result selectItemParameter(Page page ,Laboratory itemParameter) {
        return Result.success(laboratoryService.selectItemParameter(page, itemParameter));
    }
@@ -36,7 +36,7 @@
    }
    @ApiOperation(value = "删除实验室参数")
    @PostMapping("/delParameter")
    @DeleteMapping("/delParameter")
    public Result<?> delParameter(Integer id) {
        return Result.success(laboratoryService.delParameter(id));
    }
basic-server/src/main/java/com/ruoyi/basic/controller/ProductPartController.java
@@ -7,10 +7,7 @@
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;
import org.springframework.web.bind.annotation.*;
@RestController
@AllArgsConstructor
@@ -21,7 +18,7 @@
    private ProductPartService productPartService;
    @ApiOperation(value = "根据产品id查询零件")
    @PostMapping("/selectByProductId")
    @GetMapping("/selectByProductId")
    public Result selectByProductId(Page page,ProductPart productPart){
        return Result.success(productPartService.selectByProductId(page,productPart));
    }
@@ -41,7 +38,7 @@
    }
    @ApiOperation(value = "删除产品零件")
    @PostMapping("/deleteProductPart")
    @DeleteMapping("/deleteProductPart")
    public Result deleteProductPart(Integer id) {
        productPartService.removeById(id);
        return Result.success();
basic-server/src/main/java/com/ruoyi/basic/controller/ProductSupplierDensityController.java
@@ -8,10 +8,7 @@
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;
import org.springframework.web.bind.annotation.*;
/**
@@ -29,7 +26,7 @@
    private ProductSupplierDensityService productSupplierDensityService;
    @ApiOperation(value = "根据产品id查询厂家密度绑定")
    @PostMapping("/selectSupplierDensityByProductId")
    @GetMapping("/selectSupplierDensityByProductId")
    public Result selectSupplierDensityByProductId(Page page,ProductSupplierDensity supplierDensity) {
        return Result.success(productSupplierDensityService.selectByProductId(page, supplierDensity));
    }
@@ -49,7 +46,7 @@
    }
    @ApiOperation(value = "删除厂家密度绑定")
    @PostMapping("/deleteProductSupplierDensity")
    @DeleteMapping("/deleteProductSupplierDensity")
    public Result deleteProductSupplierDensity(Integer id) {
        productSupplierDensityService.removeById(id);
        return Result.success();
basic-server/src/main/java/com/ruoyi/basic/controller/SealController.java
@@ -8,10 +8,7 @@
import com.ruoyi.common.utils.JackSonUtil;
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 org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -43,7 +40,7 @@
    }
    @ApiOperation(value="查询印章列表")
    @PostMapping("/selectSeal")
    @GetMapping("/selectSeal")
    public  Result selectSeal(Page page,Seal seal) {
        return Result.success(sealService.selectSeal(page,seal));
    }
basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java
@@ -21,8 +21,8 @@
    private StandardMethodService standardMethodService;
    @ApiOperation(value = "获取标准方法列表")
    @PostMapping("/selectStandardMethodList")
    public Result selectStandardMethodList(Page page,StandardMethod standardMethod) throws Exception {
    @GetMapping("/selectStandardMethodList")
    public Result selectStandardMethodList(Page page,StandardMethod standardMethod)  {
        return Result.success(standardMethodService.selectStandardMethodList(page, standardMethod));
    }
@@ -39,7 +39,7 @@
    }
    @ApiOperation(value = "删除标准方法")
    @PostMapping("/delStandardMethod")
    @DeleteMapping("/delStandardMethod")
    public Result<?> delStandardMethod(Integer id) {
        return Result.success(standardMethodService.delStandardMethod(id));
    }
@@ -50,10 +50,4 @@
        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/basic/controller/StandardTemplateController.java
@@ -18,8 +18,8 @@
    private StandardTemplateService standardTemplateService;
    @ApiOperation(value = "获取原始记录模板列表")
    @PostMapping("/selectStandardTemplatePageList")
    public Result selectStandardTemplatePageList(Page page,StandardTemplate standardTemplate) throws Exception {
    @GetMapping("/selectStandardTemplatePageList")
    public Result selectStandardTemplatePageList(Page page,StandardTemplate standardTemplate){
        return Result.success(standardTemplateService.selectStandardTemplatePageList(page, standardTemplate));
    }
@@ -36,7 +36,7 @@
    }
    @ApiOperation(value = "删除原始记录模板")
    @PostMapping("/delStandardTemplate")
    @DeleteMapping("/delStandardTemplate")
    public Result<?> delStandardTemplate(Integer id) {
        return Result.success(standardTemplateService.delStandardTemplate(id));
    }
@@ -48,7 +48,7 @@
    }
    @ApiOperation(value = "通过模板id获取检验项模板内容")
    @PostMapping("/getStandTempThingById")
    @GetMapping("/getStandTempThingById")
    public Result<?> getStandTempThingById(Integer id) {
        return Result.success(standardTemplateService.getStandTempThingById(id));
    }
@@ -56,8 +56,7 @@
    @ApiOperation(value = "编辑模板编制")
    @GetMapping("/getEditTemplatePreparation")
    public Result<?> getEditTemplatePreparation(@RequestParam("id") Integer id) {
        StandardTemplate byId = standardTemplateService.getById(id);
        return Result.success("OK", byId.getThing());
        return Result.success(standardTemplateService.getStandTempThingById(id));
    }
    @ApiOperation(value = "复制原始记录模板")
basic-server/src/main/java/com/ruoyi/basic/controller/StandardTreeController.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.basic.service.*;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.basic.dto.CopyStandardProductListDto;
import com.ruoyi.basic.dto.FactoryDto;
@@ -10,10 +11,6 @@
import com.ruoyi.basic.pojo.StandardProductList;
import com.ruoyi.basic.pojo.StandardProductListSupplierAsk;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.service.StandardMethodListService;
import com.ruoyi.basic.service.StandardProductListService;
import com.ruoyi.basic.service.StandardProductListSupplierAskService;
import com.ruoyi.basic.service.StandardTreeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -33,7 +30,7 @@
    private StandardTreeService standardTreeService;
    private StandardMethodListService standardMethodListService;
    private StandardMethodService standardMethodService;
    private StandardProductListService standardProductListService;
@@ -57,53 +54,30 @@
        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")
    @GetMapping("/selectsStandardMethodByFLSSM")
    public Result selectsStandardMethodByFLSSM(String tree) {
        return Result.success(standardMethodListService.selectsStandardMethodByFLSSM(tree));
        return Result.success(standardMethodService.selectsStandardMethodByFLSSM(tree));
    }
    @ApiOperation(value = "修改标准库中的内容")
    @PostMapping("/upStandardProductList")
    public Result upStandardProductList(String str) {
    public Result upStandardProductList(@RequestBody Map<String, String> map) {
        String str = map.get("str");
        StandardProductList list = JSON.parseObject(str, StandardProductList.class);
        return Result.success(standardProductListService.upStandardProductList(list));
    }
    @ApiOperation(value = "修改标准库区间")
    @PostMapping("/updateSection")
    public Result updateSection(String str) {
    public Result updateSection(@RequestBody Map<String, String> map) {
        String str = map.get("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")
    @DeleteMapping("/delStandardTree")
    public Result delStandardTree(String tree) {
        return Result.success(standardTreeService.delStandardTree(tree));
    }
@@ -115,19 +89,19 @@
    }
    @ApiOperation(value = "通过检验标准查询检验项目")
    @PostMapping("/selectStandardProductListByMethodId")
    public Result selectStandardProductListByMethodId(Integer id, String tree, Integer page) {
        return Result.success(standardProductListService.selectStandardProductListByMethodId(id, tree, page));
    @GetMapping("/selectStandardProductListByMethodId")
    public Result selectStandardProductListByMethodId(Integer id, String tree) {
        return Result.success(standardProductListService.selectStandardProductListByMethodId(id, tree));
    }
    @ApiOperation(value = "批量编辑查询检验项目")
    @PostMapping("/selectStandardProductByMethodId")
    @ApiOperation(value = "批量查询检验项目")
    @GetMapping("/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")
    @ApiOperation(value = "批量查询所有检验项目和检验子项枚举")
    @GetMapping("/selectStandardProductEnumByMethodId")
    public Result selectStandardProductEnumByMethodId(Integer id, String tree, String item) {
        return Result.success(standardProductListService.selectStandardProductEnumByMethodId(id, tree, item));
    }
@@ -135,7 +109,7 @@
    @ApiOperation(value = "获取标准树下标准方法枚举")
    @GetMapping("/selectStandardMethodEnum")
    public Result selectStandardMethodEnum() {
        return Result.success(standardMethodListService.selectStandardMethodEnum());
        return Result.success(standardMethodService.selectStandardMethodEnum());
    }
    @ApiOperation(value = "获取产品架构")
@@ -154,43 +128,6 @@
        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")
@@ -217,27 +154,29 @@
    @ApiOperation(value = "根据产品id查询厂家要求值绑定")
    @PostMapping("/selectSupplierAsk")
    public Result selectSupplierAsk(StandardProductListSupplierAsk supplierAsk) throws Exception {
    public Result selectSupplierAsk(@RequestBody StandardProductListSupplierAsk supplierAsk) throws Exception {
        return Result.success(standardProductListSupplierAskService.selectByProductId(supplierAsk));
    }
    @ApiOperation(value = "新增厂家要求值绑定")
    @PostMapping("/addProductSupplierAsk")
    public Result addProductSupplierAsk(String str) {
    public Result addProductSupplierAsk(@RequestBody Map<String, String> map) {
        String str = map.get("str");
        StandardProductListSupplierAsk supplierAsk = JSON.parseObject(str, StandardProductListSupplierAsk.class);
        return Result.success(standardProductListSupplierAskService.addProductSupplierAsk(supplierAsk));
    }
    @ApiOperation(value = "更新厂家要求值绑定")
    @PostMapping("/updateProductSupplierAsk")
    public Result updateProductSupplierAsk(String str) {
    public Result updateProductSupplierAsk(@RequestBody Map<String, String> map) {
        String str = map.get("str");
        StandardProductListSupplierAsk supplierAsk = JSON.parseObject(str, StandardProductListSupplierAsk.class);
        standardProductListSupplierAskService.updateProductSupplierAsk(supplierAsk);
        return Result.success();
    }
    @ApiOperation(value = "删除厂家要求值绑定")
    @PostMapping("/deleteProductSupplierAsk")
    @DeleteMapping("/deleteProductSupplierAsk")
    public Result deleteProductSupplierAsk(Integer supplierAskId) {
        standardProductListSupplierAskService.removeById(supplierAskId);
        return Result.success();
basic-server/src/main/java/com/ruoyi/basic/controller/StructureTestObjectPartController.java
@@ -8,10 +8,7 @@
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;
import org.springframework.web.bind.annotation.*;
/**
@@ -29,7 +26,7 @@
    private StructureTestObjectPartService structureTestObjectPartService;
    @ApiOperation(value = "根据检验对象id查询零件")
    @PostMapping("/selectByTestObjectId")
    @GetMapping("/selectByTestObjectId")
    public Result selectByTestObjectId(Page page,StructureTestObjectPart structureTestObjectPart){
        return Result.success(structureTestObjectPartService.selectByTestObjectId(page,structureTestObjectPart));
    }
@@ -49,7 +46,7 @@
    }
    @ApiOperation(value = "删除检验对象零件")
    @PostMapping("/deleteTestObjectPart")
    @DeleteMapping("/deleteTestObjectPart")
    public Result deleteTestObjectPart(Integer id) {
        structureTestObjectPartService.removeById(id);
        return Result.success();
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantityCheckDto.java
@@ -14,7 +14,7 @@
 * @Date 2024/8/28
 */
@Data
public class IfsInventoryQuantityCheckDto  implements Serializable {
public class IfsInventoryQuantityCheckDto implements Serializable {
    private Integer id;
basic-server/src/main/java/com/ruoyi/basic/dto/IfsInventoryQuantitySupplierDto.java
@@ -121,4 +121,7 @@
    @ApiModelProperty("免检")
    private Integer isExemption;
    @ApiModelProperty("原材料id(导出用)")
    private String ids;
}
basic-server/src/main/java/com/ruoyi/basic/dto/SampleDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.basic.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@@ -13,11 +14,13 @@
    private String value;
    @ApiModelProperty("零件号")
    private String partNo;
    // æ ·å“è‹±æ–‡
    @ApiModelProperty("样品英文")
    private String sampleEn;
    @ApiModelProperty("产品")
    private List<ModelDto> children;
}
basic-server/src/main/java/com/ruoyi/basic/mapper/CertificationMapper.java
@@ -10,5 +10,5 @@
public interface CertificationMapper extends BaseMapper<Certification> {
    //查询资质明细列表
    IPage<Certification> getCertificationDetail(Page page, @Param("ew") QueryWrapper<Certification> ew);
    IPage<Certification> getCertificationDetail(Page page, @Param("param") Certification certification);
}
basic-server/src/main/java/com/ruoyi/basic/mapper/SealMapper.java
@@ -12,6 +12,6 @@
public interface SealMapper extends BaseMapper<Seal> {
    IPage<Seal>selectSeal(Page page, @Param("ew") QueryWrapper<Seal> ew);
    List<Laboratory> selectLaboratory (Integer labId);
    List<Laboratory> selectLaboratory (@Param("labId") Integer labId);
}
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardMethodListMapper.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardMethodMapper.java
@@ -3,9 +3,12 @@
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.basic.pojo.StandardMethodList;
import com.ruoyi.framework.mybatis_config.MyBaseMapper;
import com.ruoyi.basic.pojo.StandardMethod;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Administrator
@@ -17,7 +20,18 @@
    IPage<StandardMethod> selectStandardMethodList(Page page, @Param("ew") QueryWrapper<StandardMethod> ew);
    StandardMethod selectStandMethodById(Integer id);
    StandardMethod selectStandMethodById(@Param("id") Integer id);
    List<StandardMethodList> selectStandardMethodLists(@Param("tree") String tree);
    List<StandardMethodList> selectStandardMethodListsByNull(@Param("tree") String tree);
    List<StandardMethodList> selectStandardMethodLists3(@Param("tree") String tree);
    List<StandardMethodList> selectListEnum();
    Integer getStandardMethodId(@Param("code") String code);
}
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardProductListMapper.java
@@ -62,6 +62,12 @@
                        @Param("endIndex") Integer endIndex,
                        @Param("methodId") Integer methodId,
                        @Param("tree") String tree);
    /**
     * æ‰¹é‡æ·»åŠ æ ‡å‡†
     * @param productLists
     */
    void saveBatchProductLists(@Param("productLists") List<StandardProductList> productLists);
}
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTemplateMapper.java
@@ -17,14 +17,22 @@
    IPage<StandardTemplate> selectStandardTemplatePageList(Page page, @Param("ew") QueryWrapper<StandardTemplate> ew);
    StandardTemplate getStandTempIdByName(String name);
    StandardTemplate getStandTempIdByName(@Param("name") String name);
    /**
     * æŸ¥è¯¢åŽ‹ç¼©åŽçš„æ•°æ®
     * @param templateId
     * @return
     */
    String selectCompressThing(Integer templateId);
    String selectCompressThing(@Param("templateId") Integer templateId);
    /**
     * ç»‘定该模板检验项参数统计
     *
     * @param templateId
     * @return
     */
    int countBindTemplateItemParameter(@Param("templateId") Integer templateId);
}
basic-server/src/main/java/com/ruoyi/basic/mapper/StandardTreeMapper.java
@@ -12,6 +12,7 @@
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
 * @author Administrator
@@ -29,17 +30,12 @@
    List<StandardProductList> getStandardProductListBySample(String sampleType);
    List<StandardMethodList> getStandardMethodListBySample(String sampleType);
    List<StandardProductList> selectStandardProductListByTree(@Param("tree") String tree, @Param("sample") String sample, @Param("model") String model, @Param("trees") String trees, @Param("laboratory") String laboratory);
    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<StandardProductList> selectStandardProductListByTree2(@Param("tree") String tree, @Param("sample") String sample, @Param("model") String model, @Param("trees") String trees, @Param("laboratory") String laboratory);
    List<SampleTypeDto> getStandardTree2();
    List<SampleDto> getStandardTree3(String sampleType);
    String getLaboratory(String str);
@@ -85,6 +81,27 @@
     */
    IPage<IfsInventoryQuantitySupplierDto> getIfsByQuarter(Page<IfsInventoryQuantitySupplierDto> page, @Param("ew") QueryWrapper<IfsInventoryQuantitySupplierDto> ew, @Param("beginDeclareDate") String beginDeclareDate, @Param("endDeclareDate")String endDeclareDate);
    /**
     * æ‰¹é‡æŸ¥è¯¢æ ‘
     * @param sampleTypeValues
     * @return
     */
    List<SampleDto> getStandardTree3Batch(@Param("sampleTypeValues") Set<String> sampleTypeValues);
    /**
     * æŸ¥è¯¢æ ‘
     * @param sampleType
     * @return
     */
    List<SampleDto> getStandardTree3(@Param("sampleType") String sampleType);
    /**
     * æ ¹æ®åŽŸææ–™id列表查询原材料信息
     * @param ifsIds
     * @return
     */
    List<IfsInventoryQuantitySupplierDto> getIfsByIds(@Param("ifsIds") List<String> ifsIds);
}
basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
@@ -25,6 +25,12 @@
    List<TestItemDto> getItemTree();
    int removeNoSample(@Param("sample") String sample);
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿¡æ¯
     * @param managementNumberList
     * @return
     */
    List<Integer> selectDeviceIdsByNumber(@Param("managementNumberList") List<String> managementNumberList);
}
basic-server/src/main/java/com/ruoyi/basic/pojo/Certification.java
@@ -69,4 +69,8 @@
    @ApiModelProperty(value = "资质附件地址")
    private String fileUrl;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
}
basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java
@@ -44,6 +44,7 @@
    private Integer createUser;
    @ApiModelProperty(value = "创建人")
    @TableField(select = false,exist = false)
    private String createUserName;
    @ApiModelProperty(value = "修改人id")
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethodList.java
@@ -12,7 +12,6 @@
 * æ ‡å‡†æ ‘下的标准列表
 * @TableName standard_method_list
 */
@TableName(value ="standard_method_list")
@Data
public class StandardMethodList implements Serializable {
    /**
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardProductList.java
@@ -153,7 +153,7 @@
    @ApiModelProperty("型号")
    private String model;
    @ApiModelProperty("型号")
    @ApiModelProperty("模板id")
    private Integer templateId;
    @ApiModelProperty("")
@@ -187,6 +187,7 @@
    private String tree;
    @ApiModelProperty("检验项id")
    private Integer structureItemParameterId;
    @ApiModelProperty(value = "检验项分类")
basic-server/src/main/java/com/ruoyi/basic/pojo/StructureItemParameter.java
@@ -117,5 +117,11 @@
    @ApiModelProperty(value = "收费标准(元/次)")
    private String rates;
    @ApiModelProperty(value = "设备id")
    private String deviceIds;
    @ApiModelProperty(value = "抽检类型, 1:月度, 2:季度, 3:年度")
    private String spotCheckType;
}
basic-server/src/main/java/com/ruoyi/basic/service/StandardMethodListService.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardMethodService.java
@@ -4,10 +4,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.pojo.StandardMethod;
import com.ruoyi.basic.pojo.StandardMethodList;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
@@ -26,5 +28,8 @@
    int upStandardMethod(StandardMethod standardMethod);
    void inputExcel(MultipartFile file) throws IOException;
    Map<String, List<?>> selectsStandardMethodByFLSSM(String tree);
    List<StandardMethodList> selectStandardMethodEnum();
}
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService.java
@@ -20,11 +20,9 @@
    int upStandardProductList(StandardProductList list);
    int delStandardProduct(JSONArray list);
    List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample);
    Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree, Integer page);
    Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree);
    IPage<StandardProductList> selectStandardProductByMethodId(Integer id, String tree, Integer page, String laboratory, String item, String items);
basic-server/src/main/java/com/ruoyi/basic/service/StandardProductListService2.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/StandardTreeService.java
@@ -23,23 +23,9 @@
    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);
    /**
     * æ ‡å‡†æ•°æŽ’序
basic-server/src/main/java/com/ruoyi/basic/service/StructureItemParameterService.java
@@ -2,7 +2,15 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.pojo.StructureItemParameter;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
public interface StructureItemParameterService extends IService<StructureItemParameter> {
    void removeNoSample(String sample);
    /**
     * å¯¼å…¥æ£€éªŒé¡¹ç›®
     * @param file
     */
    void importEquipData(MultipartFile file) throws IOException;
}
basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
@@ -33,8 +33,6 @@
@AllArgsConstructor
public class CapacityScopeServiceImpl extends ServiceImpl<StructureItemParameterMapper, StructureItemParameter> implements CapacityScopeService {
    private LaboratoryMapper laboratoryMapper;
    private StructureItemParameterMapper structureItemParameterMapper;
    private StructureTestObjectMapper structureTestObjectMapper;
@@ -102,12 +100,14 @@
        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));
        if (CollectionUtils.isNotEmpty(productIds)) {
            productPartMapper.delete(Wrappers.<ProductPart>lambdaQuery()
                    .in(ProductPart::getProductId, productIds));
        // åˆ é™¤äº§å“ç»´æŠ¤
        productMapper.delete(Wrappers.<Product>lambdaQuery()
                .in(Product::getId, productIds));
            // åˆ é™¤äº§å“ç»´æŠ¤
            productMapper.delete(Wrappers.<Product>lambdaQuery()
                    .in(Product::getId, productIds));
        }
        return structureTestObjectMapper.deleteById(id);
    }
basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java
@@ -12,7 +12,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -26,7 +28,7 @@
    //查询资质明细列表
    @Override
    public IPage<Certification> getCertificationDetail(Page page, Certification certification) {
        return  certificationMapper.getCertificationDetail(page, QueryWrappers.queryWrappers(certification));
        return  certificationMapper.getCertificationDetail(page, certification);
    }
    //添加资质明细列表
@@ -38,7 +40,7 @@
    //删除资质明细列表
    @Override
    public int delCertificationDetail(String ids) {
        List<Integer> list = JSON.parseArray(ids,Integer.class);
        List<Integer> list = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());
        return certificationMapper.deleteBatchIds(list);
    }
basic-server/src/main/java/com/ruoyi/basic/service/impl/LaboratoryServiceImpl.java
@@ -1,14 +1,19 @@
package com.ruoyi.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.basic.mapper.StructureTestObjectMapper;
import com.ruoyi.basic.pojo.StructureTestObject;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.basic.mapper.LaboratoryMapper;
import com.ruoyi.basic.pojo.Laboratory;
import com.ruoyi.basic.service.LaboratoryService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -23,6 +28,9 @@
    private LaboratoryMapper laboratoryMapper;
    @Autowired
    private StructureTestObjectMapper structureTestObjectMapper;
    @Override
    public IPage<Laboratory> selectItemParameter(Page page, Laboratory itemParameter) {
        return laboratoryMapper.selectItemParameter(page, QueryWrappers.queryWrappers(itemParameter));
@@ -35,6 +43,13 @@
    @Override
    public int delParameter(Integer id) {
        // åˆ¤æ–­æ˜¯å¦ç»‘定对象
        QueryWrapper<StructureTestObject> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("laboratory_id",id);
        List<StructureTestObject> structureTestObjectList = structureTestObjectMapper.selectList(queryWrapper);
        if(!CollectionUtils.isEmpty(structureTestObjectList)){
            throw new RuntimeException("已绑定对象,禁止删除");
        }
        return laboratoryMapper.deleteById(id);
    }
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductSupplierDensityServiceImpl.java
@@ -32,15 +32,6 @@
        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);
    }
@@ -49,15 +40,6 @@
        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/basic/service/impl/StandardMethodListServiceImpl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
@@ -7,6 +7,7 @@
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.basic.pojo.StandardMethodList;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.basic.mapper.StandardMethodMapper;
import com.ruoyi.basic.mapper.StandardProductListMapper;
@@ -39,11 +40,11 @@
    private StandardMethodMapper standardMethodMapper;
    StandardProductListMapper standardProductListMapper;
    StandardProductListService standardProductListService;
    private StandardProductListMapper standardProductListMapper;
    private StandardProductListService standardProductListService;
    StructureItemParameterMapper structureItemParameterMapper;
    StructureItemParameterService structureItemParameterService;
    private StructureItemParameterMapper structureItemParameterMapper;
    private StructureItemParameterService structureItemParameterService;
    @Override
    public IPage<StandardMethod> selectStandardMethodList(Page page, StandardMethod standardMethod) {
@@ -128,26 +129,6 @@
        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) {
@@ -185,74 +166,42 @@
        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));
                        }
                    }
                }
            });
    @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(standardMethodMapper.selectStandardMethodLists(str));
                standardMethodLists.addAll(standardMethodMapper.selectStandardMethodLists("\"" + trees[2] + "\",\"" + trees[3] + "\""));
                standardMethodLists.addAll(standardMethodMapper.selectStandardMethodLists("\"" + trees[2] + "\""));
                break;
            case 4:
                str += "\"" + trees[2] + "\",\"" + trees[3] + "\"";
                standardMethodLists.addAll(standardMethodMapper.selectStandardMethodLists(str));
                standardMethodLists.addAll(standardMethodMapper.selectStandardMethodLists("\"" + trees[2] + "\""));
                break;
            case 3:
                str += "\"" + trees[2] + "\"";
                standardMethodLists.addAll(standardMethodMapper.selectStandardMethodLists3(str));
                break;
            default:
                map.put("standardMethodList", null);
                return map;
        }
        if (!addList.isEmpty()) {
            // æ–°å¢ž
            baseMapper.insertBatchSomeColumn(addList);
        }
        if (!deleteListId.isEmpty()) {
            // åˆ é™¤
            baseMapper.deleteBatchIds(deleteListId);
        }
        if (!updateList.isEmpty()) {
            // æ›´æ–°
            updateList.forEach(i -> {
                baseMapper.updateById(i);
            });
        }
        standardMethodLists.addAll(standardMethodMapper.selectStandardMethodListsByNull(str));
        map.put("standardMethodList", standardMethodLists);
        return map;
    }
    @Override
    public List<StandardMethodList> selectStandardMethodEnum() {
        return standardMethodMapper.selectListEnum();
    }
}
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListService2Impl.java
ÎļþÒÑɾ³ý
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
@@ -20,7 +20,6 @@
import com.ruoyi.basic.pojo.StandardProductListSupplierAsk;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.service.StandardProductListService;
import com.ruoyi.basic.service.StandardProductListService2;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,8 +44,6 @@
    private StandardTreeMapper standardTreeMapper;
    private StandardProductListService2 standardProductListService2;
    private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
    private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper;
@@ -57,10 +54,6 @@
        return standardProductListMapper.updateById(list);
    }
    @Override
    public int delStandardProduct(JSONArray list) {
        return standardProductListMapper.deleteBatchIds(list);
    }
    @Override
    public List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample) {
@@ -139,7 +132,7 @@
                    }
                    return true;
                }).peek(standardProductList -> {
                    // todo: åˆ¤æ–­æ˜¯å¦æ˜¯åŽŸæä¸‹å•, éœ€è¦å•ŠæŠŠé¢œè‰²ç»‘å®šåˆ°è¯•æ ·é¢œè‰²çš„è¦æ±‚å€¼ä¸Š
                    //判断是否是原材下单, éœ€è¦å•ŠæŠŠé¢œè‰²ç»‘å®šåˆ°è¯•æ ·é¢œè‰²çš„è¦æ±‚å€¼ä¸Š
                    if (StringUtils.isNotBlank(insSample.getPartNo())) {
                        // åˆ¤æ–­æ˜¯å¦æœ‰è¿™ä¸ªå­—段且是文本类型
                        if (StringUtils.isNotBlank(standardProductList.getInspectionItem())
@@ -263,13 +256,9 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree, Integer page) {
    public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree) {
        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) {
@@ -411,55 +400,39 @@
                    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("插入失败");
            }
        Integer userId = SecurityUtils.getUserId().intValue();
        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));
        }
        Map<String, Object> map = new HashMap<>();
        List<StandardProductList> productLists = 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());
//            this.saveBatch(productLists);
        // æ‰¹é‡æ·»åŠ æ ‡å‡†
        if (CollectionUtils.isNotEmpty(productLists)) {
            baseMapper.saveBatchProductLists(productLists);
        }
        Collections.sort(list, (o1, o2) -> {
            String field1 = o1.getManHourGroup();
            String field2 = o2.getManHourGroup();
@@ -484,11 +457,9 @@
            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<String, Object> map = new HashMap<>();
        map.put("productList", list);
        map.put("total", list.size());
        return map;
    }
@@ -583,7 +554,7 @@
    @Override
    public void resetTreeDragBatch(List<StandardProductList> standardProductLists) {
        standardProductListService2.updateBatchById(standardProductLists);
        this.updateBatchById(standardProductLists);
    }
    /**
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTemplateServiceImpl.java
@@ -6,11 +6,12 @@
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.basic.mapper.StandardTemplateMapper;
import com.ruoyi.basic.pojo.StandardTemplate;
import com.ruoyi.basic.service.StandardTemplateService;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.GZipUtil;
import com.ruoyi.common.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -45,12 +46,19 @@
                    StandardTemplate::getNumber);
            standardTemplate.setNumber(giveCode);
        }
        if (StringUtils.isNotBlank(standardTemplate.getThing())) {
            standardTemplate.setThing(GZipUtil.compress(standardTemplate.getThing()));
        } else {
            standardTemplate.setThing(null);
        }
        return standardTemplateMapper.insert(standardTemplate);
    }
    @Override
    public int upStandardTemplate(StandardTemplate standardTemplate) {
        if(standardTemplate.getThing().equals("")){
        if (StringUtils.isNotBlank(standardTemplate.getThing())) {
            standardTemplate.setThing(GZipUtil.compress(standardTemplate.getThing()));
        } else {
            standardTemplate.setThing(null);
        }
        return standardTemplateMapper.updateById(standardTemplate);
@@ -58,6 +66,11 @@
    @Override
    public int delStandardTemplate(Integer id) {
        // åˆ¤æ–­æ˜¯å¦è¢«ç»‘定
        int count = standardTemplateMapper.countBindTemplateItemParameter(id);
        if (count > 0) {
            throw new RuntimeException("该模板已绑定检验项目参数,禁止删除");
        }
        return standardTemplateMapper.deleteById(id);
    }
@@ -74,19 +87,8 @@
        if(standardTemplate==null){
            return null;
        }else{
            return standardTemplate.getThing();
            return GZipUtil.uncompress(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
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
@@ -1,38 +1,32 @@
package com.ruoyi.basic.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.basic.dto.FactoryDto;
import com.ruoyi.basic.dto.LaboratoryDto;
import com.ruoyi.basic.dto.SampleTypeDto;
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.mapper.StandardTreeMapper;
import com.ruoyi.basic.pojo.StandardProductList;
import com.ruoyi.basic.pojo.StandardTemplate;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.pojo.StructureTestObject;
import com.ruoyi.basic.service.*;
import com.ruoyi.basic.service.StandardProductListService;
import com.ruoyi.basic.service.StandardTreeService;
import com.ruoyi.basic.service.StructureTestObjectService;
import com.ruoyi.common.exception.base.BaseException;
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
@@ -47,13 +41,9 @@
    private StandardTreeMapper standardTreeMapper;
    private StandardMethodListService standardMethodListService;
    private StandardProductListMapper standardProductListMapper;
    private StandardProductListService standardProductListService;
    private StandardTemplateService standardTemplateService;
    private StructureTestObjectService structureTestObjectService;
@@ -67,14 +57,13 @@
                        - (o2.getSort() == null ? 0 : o2.getSort()));
                for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
//                    if (sampleTypeDto.getChildren().size() == 0) {
                        sampleTypeDto.getChildren().addAll(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
                    sampleTypeDto.getChildren().addAll(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
//                    }
                }
            }
        }
        return factoryDtos;
    }
    @Override
@@ -109,47 +98,6 @@
                    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;
    }
@@ -174,271 +122,6 @@
        }
        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
@@ -473,10 +156,18 @@
        // ä¿®æ”¹åç§°åŒ¹é…çš„æ ‡å‡†æ ‘下的检验项目
        // æŸ¥è¯¢æ‰€æœ‰å¯¹è±¡+名称的树
        List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
                .eq(StandardProductList::getSample, standardTree.getSample())
        LambdaUpdateWrapper<StandardProductList> updateWrapper = Wrappers.<StandardProductList>lambdaUpdate()
                .eq(StandardProductList::getFactory, standardTree.getFactory())
                .eq(StandardProductList::getLaboratory, standardTree.getLaboratory())
                .eq(StandardProductList::getSampleType, standardTree.getSampleType())
                .eq(StandardProductList::getModel, standardTree.getOldModel()));
                .eq(StandardProductList::getModel, standardTree.getOldModel());
        if (StringUtils.isNotBlank(standardTree.getSample()) && !standardTree.getSample().equals("null")) {
            updateWrapper.eq(StandardProductList::getSample, standardTree.getSample());
        } else {
            updateWrapper.isNull(StandardProductList::getSample);
        }
        List<StandardProductList> standardProductLists = standardProductListService.list(updateWrapper);
        if (CollectionUtils.isNotEmpty(standardProductLists)) {
            for (StandardProductList standardProductList : standardProductLists) {
                // ä¿®æ”¹æ ·å“åç§°
@@ -499,34 +190,14 @@
                .eq(StandardTree::getSampleType, standardTree.getSampleType())
                .eq(StandardTree::getModel, standardTree.getOldModel())
                .set(StandardTree::getModel, standardTree.getModel());
        if (StringUtils.isNotBlank(standardTree.getSample())) {
        if (StringUtils.isNotBlank(standardTree.getSample()) && !standardTree.getSample().equals("null")) {
            wrapper.eq(StandardTree::getSample, standardTree.getSample());
        } else {
            wrapper.isNull(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/basic/service/impl/StructureItemParameterServiceImpl.java
@@ -1,14 +1,34 @@
package com.ruoyi.basic.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.StructureItemParameterMapper;
import com.ruoyi.basic.pojo.StandardTemplate;
import com.ruoyi.basic.pojo.StructureItemParameter;
import com.ruoyi.basic.service.StandardTemplateService;
import com.ruoyi.basic.service.StructureItemParameterService;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.system.service.ISysDictTypeService;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
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;
@Service
@AllArgsConstructor
@@ -16,9 +36,261 @@
    @Resource
    private StructureItemParameterMapper structureItemParameterMapper;
    @Resource
    private ISysDictTypeService dictTypeService;
    @Resource
    private StandardTemplateService standardTemplateService;
    /**
     *
     * @param file
     */
    @Override
    public void removeNoSample(String sample) {
        structureItemParameterMapper.removeNoSample("\""+sample+"\"");
    public void importEquipData(MultipartFile file) throws IOException {
        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 = this.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";
                    // ç»‘定设备
                    if (list1.get(28) == null) {
                        str.setRates(null);
                    } else {
                        // æŸ¥è¯¢è®¾å¤‡ä¿¡æ¯
                        List<String> managementNumberList = StrUtil.split(list1.get(28).toString(), ';');
                        if (CollectionUtils.isNotEmpty(managementNumberList)) {
                            List<Integer> deviceIds = structureItemParameterMapper.selectDeviceIdsByNumber(managementNumberList);
                            if (CollectionUtils.isNotEmpty(deviceIds)) {
                                str.setDeviceIds(CollUtil.join(deviceIds, ","));
                            }
                        }
                    }
                }
                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) + "");
                }
                // æŠ½æ ·ç±»åž‹
                if (list1.get(27) != null){
                    String spotCheckType = list1.get(27).toString();
                    if (ObjectUtils.isNotEmpty(spotCheckType)) {
                        List<SysDictData> enums = dictTypeService.selectDictDataByName("抽检类型")
                                .stream().filter(sysDictData -> sysDictData.getDictLabel().equals(spotCheckType)).collect(Collectors.toList());
                        str.setSpotCheckType(enums.get(0).getDictValue());
                    }
                }else {
                    str.setSpotCheckType(null);
                }
                lists.add(str);
            }
        });
        try {
            this.saveOrUpdateBatch(lists);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("服务端报错");
        }
    }
}
basic-server/src/main/resources/mapper/CertificationMapper.xml
@@ -2,18 +2,13 @@
<!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 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,
                    MAX(date_of_issuance) AS latest_issuance_date,
                    c.`code`,c.organization,c.explanation
             FROM
                 certification c
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
             GROUP BY
                 name) a left join certification c on a.id=c.id
        ) b
        SELECT * FROM certification
        <where>
            create_time IN (
            SELECT MAX( create_time ) FROM certification WHERE create_time IS NOT NULL GROUP BY NAME )
            <if test="param.name != null and param.name != ''">
                AND name like concat('%',#{param.name},'%')
            </if>
        </where>
    </select>
</mapper>
basic-server/src/main/resources/mapper/SealMapper.xml
@@ -4,8 +4,8 @@
        "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 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
        select * from (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) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
basic-server/src/main/resources/mapper/StandardMethodListMapper.xml
ÎļþÒÑɾ³ý
basic-server/src/main/resources/mapper/StandardMethodMapper.xml
@@ -64,4 +64,39 @@
                 left join structure_test_object sto on sm.structure_test_object_id = sto.id
        where sm.id = #{id}
    </select>
    <select id="selectStandardMethodLists" resultType="com.ruoyi.basic.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="selectStandardMethodLists3" resultType="com.ruoyi.basic.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,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, code, name, remark
        from standard_method
        where is_use = 1
          and is_product = 1
          and (
            structure_test_object_id is null
                OR structure_test_object_id = ''
                OR structure_test_object_id = '[]'
            )
    </select>
    <select id="getStandardMethodId" resultType="java.lang.Integer">
        select id from standard_method where code = #{code}
    </select>
</mapper>
basic-server/src/main/resources/mapper/StandardProductListMapper.xml
@@ -27,6 +27,19 @@
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <!-- æ‰¹é‡æ·»åŠ æ£€æµ‹æ ‡å‡† -->
    <insert id="saveBatchProductLists">
        INSERT INTO standard_product_list (id, inspection_item, inspection_item_en, inspection_item_subclass, inspection_item_subclass_en, factory, laboratory, sample_type, sample, model, son_laboratory, unit, price, man_hour, man_hour_group, inspection_item_type, inspection_value_type, checkout_number, section, cores, method, method_s, man_day, bsm, ask, tell, standard_method_list_id, template_id, state, dic, tree, structure_item_parameter_id, inspection_item_class, inspection_item_class_en, radius, radius_list, rates, sort, conductor_material, conductor_type)
        VALUES
        <foreach item="item" collection="productLists" open="(" separator="),(" close=")">
            #{item.id}, #{item.inspectionItem}, #{item.inspectionItemEn}, #{item.inspectionItemSubclass}, #{item.inspectionItemSubclassEn}, #{item.factory}, #{item.laboratory}, #{item.sampleType}, #{item.sample}, #{item.model}, #{item.sonLaboratory}, #{item.unit}, #{item.price}, #{item.manHour}, #{item.manHourGroup}, #{item.inspectionItemType}, #{item.inspectionValueType}, #{item.checkoutNumber}, #{item.section}, #{item.cores}, #{item.method}, #{item.methodS}, #{item.manDay}, #{item.bsm}, #{item.ask}, #{item.tell}, #{item.standardMethodListId}, #{item.templateId}, #{item.state}, #{item.dic}, #{item.tree}, #{item.structureItemParameterId},
            #{item.inspectionItemClass}, #{item.inspectionItemClassEn}, #{item.radius}, #{item.radiusList}, #{item.rates}, #{item.sort}, #{item.conductorMaterial}, #{item.conductorType}
        </foreach>
    </insert>
    <update id="updateSection">
        UPDATE standard_product_list
        SET price=#{productList.price},
basic-server/src/main/resources/mapper/StandardTemplateMapper.xml
@@ -36,5 +36,9 @@
        WHERE id = #{templateId}
    </select>
    <select id="countBindTemplateItemParameter">
        SELECT COUNT(*) FROM structure_item_parameter WHERE template_id = #{templateId}
    </select>
</mapper>
basic-server/src/main/resources/mapper/StandardTreeMapper.xml
@@ -154,15 +154,7 @@
           or sp.sample = ''
           or sp.sample = '[]'
    </select>
    <select id="getStandardMethodListBySample" resultType="com.ruoyi.basic.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
        and is_product = 1
        <if test="sampleType != null">
            and sto.specimen_name = #{sampleType}
        </if>
    </select>
    <select id="selectStandardTreeList2" resultType="com.ruoyi.basic.pojo.StandardTree">
        select '中天科技检测中心'        factory,
               l.laboratory_name laboratory,
@@ -210,14 +202,6 @@
                 left join product p on p.object_id = sto.id
                 left join standard_tree st on st.sample_type = sto.specimen_name
            and st.sample = p.name
    </select>
    <select id="getStandardTree3" resultType="com.ruoyi.basic.dto.SampleDto">
        select model label,
               model value
        from standard_tree
        where sample_type = #{sampleType}
          and sample is null
    </select>
    <select id="getLaboratory" resultType="java.lang.String">
@@ -330,6 +314,7 @@
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
        order by send_time desc
    </select>
    <select id="selectIfsPage" resultType="com.ruoyi.basic.pojo.IfsInventoryQuantity">
@@ -337,6 +322,7 @@
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
        ORDER BY declare_date DESC
    </select>
    <select id="selectIfsInventoryQuantity" resultType="com.ruoyi.basic.dto.IfsInventoryQuantityCheckDto">
        SELECT * from ifs_inventory_quantity ifs
@@ -355,6 +341,7 @@
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
        order by send_time desc
    </select>
    <select id="getIfsByOverList" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
        select * from (<include refid="getIfsOrder"/>
@@ -381,4 +368,34 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getStandardTree3Batch" resultType="com.ruoyi.basic.dto.SampleDto">
        select model label,
               model value
        from standard_tree
        where sample is null
        <if test="sampleTypeValues != null and sampleTypeValues.size() > 0">
            and sample_type in
            <foreach item="item" collection="sampleTypeValues" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
    </select>
    <select id="getStandardTree3" resultType="com.ruoyi.basic.dto.SampleDto">
        select model label,
               model value
        from standard_tree
        where sample_type = #{sampleType}
          and sample is null
    </select>
    <!-- æ ¹æ®åŽŸææ–™id列表查询原材料信息 -->
    <select id="getIfsByIds" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">
        <include refid="getIfsOrder"/>
        where id in
        <foreach item="id" collection="ifsIds" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
</mapper>
basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml
@@ -3,11 +3,7 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.basic.mapper.StructureItemParameterMapper">
    <delete id="removeNoSample">
        delete
        from structure_item_parameter
        where sample like concat('%', #{sample}, '%')
    </delete>
    <select id="selectItemParameterList" resultType="com.ruoyi.basic.pojo.StructureItemParameter">
        select * from (select A.id,
        inspection_item,
@@ -40,7 +36,9 @@
        inspection_item_class_en,
        code,
        radius_list,
        rates
        rates,
        device_ids,
        spot_check_type
        from (select *,
        CASE
        WHEN INSTR(sample, ',') > 0 THEN
@@ -108,6 +106,13 @@
        from structure_test_object sto
                 left join product p on p.object_id = sto.id
    </select>
    <select id="selectDeviceIdsByNumber" resultType="java.lang.Integer">
        select id from device
        where management_number in
        <foreach item="item" collection="managementNumberList" open="(" separator="),(" close=")">
            #{item}
        </foreach>
    </select>
    <resultMap id="itemDto" type="com.ruoyi.basic.dto.TestItemDto">
        <result column="sId" property="id"/>
basic-server/src/main/resources/mapper/StructureTestMapper.xml
@@ -31,6 +31,7 @@
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
bin/clean.bat
ÎļþÒÑɾ³ý
bin/package.bat
ÎļþÒÑɾ³ý
bin/run.bat
ÎļþÒÑɾ³ý
cnas-device/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
<?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-device</artifactId>
    <dependencies>
        <!--业务模块-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>inspect-server</artifactId>
        </dependency>
        <!--mqtt jar包-->
        <!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-mqtt -->
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-mqtt</artifactId>
        </dependency>
        <!--mqtt需要的jar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-integration</artifactId>
        </dependency>
        <!--mqtt需要的jar包-->
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-stream</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceAcceptanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.ruoyi.device.controller;
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.device.pojo.DeviceAcceptance;
import com.ruoyi.device.pojo.DeviceAcceptanceFile;
import com.ruoyi.device.service.DeviceAcceptanceFileService;
import com.ruoyi.device.service.DeviceAcceptanceService;
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-12-20 01:45:14
 */
@Api(tags = "设备验收(装备)")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceAcceptance")
public class DeviceAcceptanceController {
    private DeviceAcceptanceService deviceAcceptanceService;
    private DeviceAcceptanceFileService deviceAcceptanceFileService;
    /**
     * è®¾å¤‡éªŒæ”¶åˆ—表
     * @return
     */
    @ApiOperation(value = "设备验收列表")
    @GetMapping("/pageDeviceAcceptance")
    public Result<IPage<DeviceAcceptance>> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance) {
        return Result.success(deviceAcceptanceService.pageDeviceAcceptance(page, deviceAcceptance));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡éªŒæ”¶
     * @return
     */
    @ApiOperation(value = "查询设备验收")
    @GetMapping("/getDeviceAcceptance")
    public Result getDeviceAcceptance(Integer acceptanceId){
        return Result.success(deviceAcceptanceService.getById(acceptanceId));
    }
    /**
     * åˆ é™¤è®¾å¤‡éªŒæ”¶
     * @return
     */
    @ApiOperation(value = "删除设备验收")
    @DeleteMapping("/delDeviceAcceptance")
    public Result delDeviceAcceptance(Integer acceptanceId){
        return Result.success(deviceAcceptanceService.removeById(acceptanceId));
    }
    /**
     * æ–°å¢žè®¾å¤‡éªŒæ”¶
     * @return
     */
    @ApiOperation(value = "新增设备验收")
    @PostMapping("/addDeviceAcceptance")
    public Result addDeviceAcceptance(@RequestBody DeviceAcceptance deviceAcceptance){
        return Result.success(deviceAcceptanceService.save(deviceAcceptance));
    }
    /**
     * æ–°å¢žè®¾å¤‡éªŒæ”¶
     * @return
     */
    @ApiOperation(value = "编辑设备验收")
    @PostMapping("/updateDeviceAcceptance")
    public Result updateDeviceAcceptance(@RequestBody DeviceAcceptance deviceAcceptance){
        return Result.success(deviceAcceptanceService.updateById(deviceAcceptance));
    }
    /**
     * è®¾å¤‡éªŒæ”¶å¯¼å‡º
     * @param acceptanceId  è®¾å¤‡éªŒæ”¶id
     * @param response   å“åº”体
     * @return
     */
    @ApiOperation(value = "设备验收导出")
    @GetMapping("/exportDeviceAcceptance")
    public void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response){
        deviceAcceptanceService.exportDeviceAcceptance(acceptanceId, response);
    }
    /**
     * è®¾å¤‡éªŒæ”¶é™„件新增
     * @param acceptanceId
     * @param file
     * @return
     */
    @ApiOperation(value = "设备验收附件新增")
    @PostMapping("/uploadDeviceAcceptanceFile")
    public Result<?> uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file) {
        return Result.success(deviceAcceptanceService.uploadDeviceAcceptanceFile(acceptanceId, file));
    }
    /**
     * è®¾å¤‡éªŒæ”¶é™„件列表
     * @return
     */
    @ApiOperation(value = "设备验收附件列表")
    @GetMapping("/getDeviceAcceptanceFileList")
    public Result<List<DeviceAcceptanceFile>> getVerifyMethodFileList(Integer acceptanceId){
        return Result.success(deviceAcceptanceFileService.list(Wrappers.<DeviceAcceptanceFile>lambdaQuery()
                .eq(DeviceAcceptanceFile::getAcceptanceId, acceptanceId)));
    }
    /**
     * è®¾å¤‡éªŒæ”¶é™„件删除
     * @return
     */
    @ApiOperation(value = "设备验收附件删除")
    @DeleteMapping("/delDeviceAcceptanceFileList")
    public Result delDeviceAcceptanceFileList(Integer acceptanceFileId){
        return Result.success(deviceAcceptanceFileService.removeById(acceptanceFileId));
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceAccidentReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceAccidentReport;
import com.ruoyi.device.service.DeviceAccidentReportService;
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-12-17 06:31:12
 */
@Api(tags = "设备事故报告单")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceAccidentReport")
public class DeviceAccidentReportController {
    private DeviceAccidentReportService deviceAccidentReportService;
    /**
     * è®¾å¤‡äº‹æ•…报告列表
     * @return
     */
    @ApiOperation(value = "设备事故报告列表")
    @GetMapping("/pageDeviceAccidentReport")
    public Result<IPage<DeviceAccidentReport>> pageDeviceAccidentReport(Page page, DeviceAccidentReport deviceAccidentReport){
        return Result.success(deviceAccidentReportService.pageDeviceAccidentReport(page, deviceAccidentReport));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡äº‹æ•…报告
     * @return
     */
    @ApiOperation(value = "查询设备事故报告")
    @GetMapping("/getDeviceAccidentReport")
    public Result getDeviceAccidentReport(Integer accidentReportId){
        return Result.success(deviceAccidentReportService.getById(accidentReportId));
    }
    /**
     * åˆ é™¤è®¾å¤‡äº‹æ•…报告
     * @return
     */
    @ApiOperation(value = "删除设备事故报告")
    @DeleteMapping("/delDeviceAccidentReport")
    public Result delDeviceAccidentReport(Integer accidentReportId){
        return Result.success(deviceAccidentReportService.removeById(accidentReportId));
    }
    /**
     * æ–°å¢žè®¾å¤‡äº‹æ•…报告
     * @return
     */
    @ApiOperation(value = "新增设备事故报告")
    @PostMapping("/addDeviceAccidentReport")
    public Result addDeviceAccidentReport(@RequestBody DeviceAccidentReport deviceAccidentReport){
        return Result.success(deviceAccidentReportService.addDeviceAccidentReport(deviceAccidentReport));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡äº‹æ•…报告
     * @param accidentReportId è®¾å¤‡äº‹æ•…报告id
     * @param response å“åº”
     */
    @ApiOperation(value = "导出设备事故报告")
    @GetMapping("/exportDeviceAccidentReport")
    public Result exportDeviceAccidentReport(Integer accidentReportId, HttpServletResponse response) {
        deviceAccidentReportService.exportDeviceAccidentReport(accidentReportId, response);
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBorrowController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.device.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceBorrow;
import com.ruoyi.device.service.DeviceBorrowService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 10:53:51
 */
@RestController
@RequestMapping("/deviceBorrow")
public class DeviceBorrowController {
    @Resource
    private DeviceBorrowService deviceBorrowService;
    //分页
    @GetMapping("/deviceBorrowPage")
    public Result deviceBorrowPage(Page page, DeviceBorrow deviceBorrow) throws Exception {
        return Result.success(deviceBorrowService.deviceBorrowPage(page, deviceBorrow));
    }
    //查询
    @GetMapping("/getDeviceBorrow")
    public Result getDeviceBorrow(Integer id) {
        return Result.success(deviceBorrowService.getDeviceBorrow(id));
    }
    //新增
    @PostMapping("/saveDeviceBorrow")
    public Result saveDeviceBorrow(@RequestBody DeviceBorrow deviceBorrow) {
        return Result.success(deviceBorrowService.saveDeviceBorrow(deviceBorrow));
    }
    //删除
    @DeleteMapping("/deleteDeviceBorrow")
    public Result deleteDeviceBorrow(Integer id) {
        return Result.success(deviceBorrowService.removeById(id));
    }
    //导出
    @GetMapping("/deviceBorrowExport")
    public Result deviceBorrowExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception {
        List<DeviceBorrow> deviceBorrows = deviceBorrowService.getDeviceBorrowBydeviceId(deviceId);
        response.setHeader("requestType", "excel");
        response.setHeader("Access-Control-Expose-Headers", "requestType");
        // è®¾ç½®å•元格样式
        // ä¿å­˜åˆ°ç¬¬ä¸€ä¸ªsheet中
        EasyExcel.write(response.getOutputStream())
                .head(DeviceBorrow.class)
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // è‡ªé€‚应列宽
                .sheet()
                .doWrite(deviceBorrows);
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceBreakdownMaintenanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceBreakdownMaintenance;
import com.ruoyi.device.service.DeviceBreakdownMaintenanceService;
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-12-17 04:50:57
 */
@Api(tags = "设备故障维修表")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceBreakdownMaintenance")
public class DeviceBreakdownMaintenanceController {
    private DeviceBreakdownMaintenanceService deviceBreakdownMaintenanceService;
    /**
     * è®¾å¤‡æ•…障维修列表
     * @return
     */
    @ApiOperation(value = "设备故障维修列表")
    @GetMapping("/pageDeviceBreakdownMaintenance")
    public Result<IPage<DeviceBreakdownMaintenance>> pageDeviceBreakdownMaintenance(Page page, DeviceBreakdownMaintenance deviceBreakdownMaintenance) {
        return Result.success(deviceBreakdownMaintenanceService.pageDeviceBreakdownMaintenance(page, deviceBreakdownMaintenance));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ•…障维修
     * @return
     */
    @ApiOperation(value = "查询设备故障维修")
    @GetMapping("/getDeviceBreakdownMaintenance")
    public Result getDeviceBreakdownMaintenance(Integer maintenanceId){
        return Result.success(deviceBreakdownMaintenanceService.getById(maintenanceId));
    }
    /**
     * åˆ é™¤è®¾å¤‡æ•…障维修
     * @return
     */
    @ApiOperation(value = "删除设备故障维修")
    @DeleteMapping("/delDeviceBreakdownMaintenance")
    public Result delDeviceBreakdownMaintenance(Integer maintenanceId){
        return Result.success(deviceBreakdownMaintenanceService.removeById(maintenanceId));
    }
    /**
     * æ–°å¢žè®¾å¤‡æ•…障维修
     * @return
     */
    @ApiOperation(value = "新增设备故障维修")
    @PostMapping("/addDeviceBreakdownMaintenance")
    public Result addDeviceBreakdownMaintenance(@RequestBody DeviceBreakdownMaintenance deviceBreakdownMaintenance){
        return Result.success(deviceBreakdownMaintenanceService.addDeviceBreakdownMaintenance(deviceBreakdownMaintenance));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æ•…障维修
     * @param maintenanceId è®¾å¤‡æ•…障维修id
     * @param response å“åº”
     * @return
     */
    @ApiOperation(value = "导出设备故障维修")
    @GetMapping("/exportDeviceBreakdownMaintenance")
    public Result exportDeviceBreakdownMaintenance(Integer maintenanceId, HttpServletResponse response){
        deviceBreakdownMaintenanceService.exportDeviceBreakdownMaintenance(maintenanceId, response);
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,173 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceCalibrationPlanDto;
import com.ruoyi.device.pojo.DeviceCalibrationPlan;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
import com.ruoyi.device.service.DeviceCalibrationPlanDetailService;
import com.ruoyi.device.service.DeviceCalibrationPlanService;
import com.ruoyi.framework.exception.ErrorException;
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;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’主表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:17
 */
@Api(tags = "设备校准计划")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceCalibrationPlan")
public class DeviceCalibrationPlanController {
    private DeviceCalibrationPlanService deviceCalibrationPlanService;
    private DeviceCalibrationPlanDetailService deviceCalibrationPlanDetailService;
    /**
     * æ–°å¢žè®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "新增设备校准计划")
    @PostMapping("/addDeviceCalibrationPlan")
    public Result addDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlanDto calibrationPlanDto){
        return Result.success(deviceCalibrationPlanService.addDeviceCalibrationPlan(calibrationPlanDto));
    }
    /**
     * ä¿®æ”¹è®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @param calibrationPlanDto è®¾å¤‡æ ¡å‡†è®¡åˆ’
     */
    @ApiOperation("批量修改设备校准计划")
    @PostMapping("/updateDeviceCalibrationPlan")
    public Result updateDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlanDto calibrationPlanDto) {
        return Result.success(deviceCalibrationPlanService.updateDeviceCalibrationPlan(calibrationPlanDto));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¡å‡†è®¡åˆ’详情
     */
    @ApiOperation("查询设备校准计划详情")
    @GetMapping("/getDeviceCalibrationPlan")
    public Result<DeviceCalibrationPlanDto> getDeviceCalibrationPlan(Integer planId) {
        return Result.success(deviceCalibrationPlanService.getDeviceCalibrationPlan(planId));
    }
    /**
     * å¯¼å…¥è®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "导入设备校准计划")
    @PostMapping("/importDeviceCalibrationPlan")
    public Result importDeviceCalibrationPlan(MultipartFile file, String planYear){
        return Result.success(deviceCalibrationPlanService.importDeviceCalibrationPlan(file, planYear));
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’删除
     * @return
     */
    @ApiOperation(value = "设备校准计划删除")
    @DeleteMapping("/delDeviceCalibrationPlan")
    public Result delDeviceCalibrationPlan(Integer planId){
        return Result.success(deviceCalibrationPlanService.removeById(planId));
    }
    /**
     * æäº¤æ‰¹å‡†
     * @return
     */
    @ApiOperation(value = "提交批准")
    @PostMapping("/submiatRatifyDeviceCalibrationPlan")
    public Result submiatRatifyDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlan DeviceCalibrationPlan){
        return Result.success(deviceCalibrationPlanService.submiatRatifyDeviceCalibrationPlan(DeviceCalibrationPlan));
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’批准
     * @return
     */
    @ApiOperation(value = "设备校准计划批准")
    @PostMapping("/ratifyDeviceCalibrationPlan")
    public Result ratifyDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlan DeviceCalibrationPlan){
        return Result.success(deviceCalibrationPlanService.ratifyDeviceCalibrationPlan(DeviceCalibrationPlan));
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’列表
     * @return
     */
    @ApiOperation(value = "设备校准计划列表")
    @GetMapping("/pageDeviceCalibrationPlan")
    public Result<IPage<DeviceCalibrationPlanDto>> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan DeviceCalibrationPlan) throws Exception {
        return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlan(page, DeviceCalibrationPlan));
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情列表
     * @return
     */
    @ApiOperation(value = "设备校准计划详情列表")
    @GetMapping("/pageDeviceCalibrationPlanDetail")
    public Result<IPage<DeviceCalibrationPlanDetail>> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) {
        return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlanDetail(page, deviceCalibrationPlanDetails));
    }
    /**
     * æ–°å¢žè®¾å¤‡æ ¡å‡†è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "新增设备校准计划详情")
    @PostMapping("/addDeviceCalibrationPlanDetail")
    public Result addDeviceCalibrationPlanDetail(@RequestBody DeviceCalibrationPlanDetail deviceCalibrationPlanDetail){
        if (deviceCalibrationPlanDetail.getPlanId() == null) {
            throw new ErrorException("缺少设备校准计划主表id");
        }
        return Result.success(deviceCalibrationPlanDetailService.save(deviceCalibrationPlanDetail));
    }
    /**
     * ä¿®æ”¹è®¾å¤‡æ ¡å‡†è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "修改设备校准计划详情")
    @PostMapping("/updateDeviceCalibrationPlanDetail")
    public Result updateDeviceCalibrationPlanDetail(@RequestBody DeviceCalibrationPlanDetail deviceCalibrationPlanDetail){
        return Result.success(deviceCalibrationPlanDetailService.updateById(deviceCalibrationPlanDetail));
    }
    /**
     * åˆ é™¤è®¾å¤‡æ ¡å‡†è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "删除设备校准计划详情")
    @DeleteMapping("/delDeviceCalibrationPlanDetail")
    public Result delDeviceCalibrationPlanDetail(Integer planDetailsId){
        return Result.success(deviceCalibrationPlanDetailService.removeById(planDetailsId));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "导出设备校准计划")
    @GetMapping("/exportDeviceCalibrationPlanDetail")
    public void exportDeviceCalibrationPlanDetail(Integer planId, HttpServletResponse response){
        deviceCalibrationPlanService.exportDeviceCalibrationPlanDetail(planId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,217 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DataConfigDto;
import com.ruoyi.device.dto.DeviceCollectionDto;
import com.ruoyi.device.dto.DeviceDto;
import com.ruoyi.device.pojo.DataConfig;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.service.DataConfigService;
import com.ruoyi.device.service.DeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * è®¾å¤‡(DeviceController)表控制层
 */
@Api(tags = "设备")
@RestController
@RequestMapping("/deviceScope")
public class DeviceController {
    @Resource
    private DeviceService deviceService;
    @Value("${file.path}")
    private String filePath;
    @Value("${wordUrl}")
    private String wordUrl;
    @Autowired
    private DataConfigService dataConfigService;
    @ApiOperation(value = "查询设备详情")
    @GetMapping("/getDeviceById")
    public Result getDeviceById(Integer deviceId){
        return Result.success(deviceService.getById(deviceId));
    }
    //设备工具明细
    @ApiOperation(value = "查询设备详情列表")
    @GetMapping("/selectDeviceParameter")
    public Result selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull){
        return Result.success(deviceService.selectDeviceParameter(page, itemParameter, laboratoryNameIsNull));
    }
    @ApiOperation(value = "添加设备详情参数")
    @PostMapping("/addDeviceParameter")
    public Result addDeviceParameter(@RequestBody Device itemParameter) {
        return Result.success(deviceService.addDeviceParameter(itemParameter));
    }
    @ApiOperation(value = "删除设备详情参数")
    @DeleteMapping("/delDeviceParameter")
    public Result<?> delDeviceParameter(Integer id) {
        return Result.success(deviceService.delDeviceParameter(id));
    }
    @ApiOperation(value = "修改设备详情参数")
    @PostMapping("/upDeviceParameter")
    public Result<?> upDeviceParameter(@RequestBody Device itemParameter) {
        return Result.success(deviceService.upDeviceParameter(itemParameter));
    }
    @ApiOperation(value = "获取设备总览")
    @GetMapping("/selectEquipmentOverview")
    public Result selectEquipmentOverview() {
        return Result.success(deviceService.selectEquipmentOverview());
    }
    @ApiOperation(value = "获取被授权人")
    @GetMapping("/authorizedPerson")
    public Result authorizedPerson() {
        return Result.success(deviceService.authorizedPerson());
    }
    @ApiOperation(value = "搜索")
    @GetMapping("/search")
    public Result search(Integer status, String deviceName, String specificationModel, String largeCategory) {
        return Result.success(deviceService.search(status, deviceName, specificationModel, largeCategory));
    }
    //图片上传
    @ApiOperation(value = "设备文件上传")
    @PostMapping("/uploadFile")
    public Result uploadFile(MultipartFile file) {
        String urlString;
        String pathName;
        String filename = file.getOriginalFilename();
        String path;
        try {
            String contentType = file.getContentType();
            if (contentType != null && contentType.startsWith("image/")) {
                // æ˜¯å›¾ç‰‡
                path = filePath;
            } else {
                // æ˜¯æ–‡ä»¶
                path = wordUrl;
            }
            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));
            HashMap<String, String> map = new HashMap<>();
            map.put("name", filename);
            map.put("url", pathName);
            return Result.success(map);
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("文件上传错误");
            return null;
        }
    }
    @ApiOperation(value = "通过项目获取设备列表")
    @GetMapping("/selectDeviceByCategory")
    public Result selectDeviceByCategory(String inspectionItem, String inspectionItemSubclass,String laboratory) {
        return Result.success(deviceService.selectDeviceByCategory(inspectionItem, inspectionItemSubclass,laboratory));
    }
    @ApiOperation(value = "通过设备编号获取设备列表")
    @GetMapping("/selectDeviceByCode")
    public Result<DeviceDto> selectDeviceByCode(Integer id) {
        return Result.success(deviceService.selectDeviceByCode(id));
    }
    @ApiOperation("/数采-数据采集")
    @PostMapping("/dataCollection")
    public Result<?> dataAcquisition(HttpServletRequest request,@RequestBody DeviceCollectionDto dto) {
        return deviceService.dataAcquisition(request, dto);
    }
    @ApiOperation(value = "维护设备文件配置")
    @PostMapping("/saveDeviceFileConfiguration")
    public Result<?> saveDeviceFileConfiguration(@RequestBody DataConfigDto dataConfigList) {
        dataConfigService.saveDeviceFileConfiguration(dataConfigList);
        return Result.success();
    }
    @ApiOperation(value = "查询数采配置")
    @GetMapping("/queryDataAcquisitionConfiguration")
    public Result<?> queryDataAcquisitionConfiguration(DataConfig dataConfig) {
        return dataConfigService.queryDataAcquisitionConfiguration(dataConfig);
    }
    @ApiOperation(value = "查询检验项数采配置")
    @GetMapping("/queryProductConfiguration")
    public Result<?> queryProductConfiguration(DataConfig dataConfig) {
        return dataConfigService.queryProductConfiguration(dataConfig);
    }
    @ApiOperation(value = "维护数采配置")
    @PostMapping("/saveDataAcquisitionConfiguration")
    public Result<?> saveDataAcquisitionConfiguration(@RequestBody DataConfigDto dataConfigList) {
        dataConfigService.saveDataAcquisitionConfiguration(dataConfigList);
        return Result.success();
    }
    @ApiOperation(value = "查询绑定了但是没有配置的检验项")
    @GetMapping("/getNoConfigProduct")
    public Result<?> getNoConfigProduct(Page page, Integer deviceId) {
        return Result.success(dataConfigService.getNoConfigProduct(page, deviceId));
    }
    @ApiOperation(value = "删除数采配置")
    @DeleteMapping("/deleteDataAcquisitionConfiguration")
    public Result<?> deleteDataAcquisitionConfiguration(@RequestParam("ids") String ids) {
        List<String> split = Arrays.asList(ids.split(","));
        List<String> collect = split.stream().distinct().collect(Collectors.toList());
        dataConfigService.removeBatchByIds(collect);
        return Result.success();
    }
    @ApiOperation(value = "左侧设备树形栏")
    @GetMapping("/treeDevice")
    public Result treeDevice(String deviceName) {
        return Result.success(deviceService.treeDevice(deviceName));
    }
    @ApiOperation(value = "设备档案导出")
    @GetMapping("/exportDeviceFile")
    public void exportDeviceFile(@RequestParam Integer deviceId, HttpServletResponse response){
        deviceService.exportDeviceFile(deviceId,response);
    }
    @ApiOperation(value = "仪器设备一览表导出")
    @GetMapping("/exportEquipmentDetails")
    public void exportEquipmentDetails(HttpServletResponse response){
        deviceService.exportEquipmentDetails(response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceDocuments;
import com.ruoyi.device.service.DeviceDocumentsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * è®¾å¤‡æ¡£æ¡ˆæ–‡æ¡£
 *
 * @author zhuo
 * @since 2025-02-28
 */
@RestController
@Api(tags = "设备档案文档")
@RequestMapping("/deviceDocuments")
public class DeviceDocumentsController {
    @Resource
    private DeviceDocumentsService deviceDocumentsService;
    /**
     * æ–°å¢žè®¾å¤‡æ¡£æ¡ˆ
     * @param document
     * @return
     */
    @ApiOperation(value = "新增设备档案")
    @PostMapping("/addDocument")
    public Result addDocument(@RequestBody DeviceDocuments document) {
        if (document.getDeviceId() == null) {
            throw new RuntimeException("设备id为空");
        }
        deviceDocumentsService.save(document);
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ¡£æ¡ˆä¿¡æ¯
     * @param id
     * @return
     */
    @ApiOperation(value = "查询设备档案信息")
    @GetMapping("/getDocumentById")
    public Result getDocumentById(Integer id) {
        return Result.success(deviceDocumentsService.getById(id));
    }
    /**
     * ä¿®æ”¹è®¾å¤‡æ¡£æ¡ˆ
     * @param document
     * @return
     */
    @ApiOperation(value = "修改设备档案")
    @PostMapping("/updateDocument")
    public Result updateDocument(@RequestBody DeviceDocuments document) {
        return Result.success(deviceDocumentsService.updateById(document));
    }
    /**
     * åˆ é™¤è®¾å¤‡æ¡£æ¡ˆ
     * @param id
     * @return
     */
    @ApiOperation(value = "删除设备档案")
    @DeleteMapping("/deleteDocumentById")
    public Result deleteDocumentById(Integer id) {
        return Result.success(deviceDocumentsService.removeById(id));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ¡£æ¡ˆåˆ—表
     * @param deviceId
     * @return
     */
    @ApiOperation(value = "查询设备档案列表")
    @GetMapping("/getAllDocuments")
    public Result getAllDocuments(Integer deviceId) {
        LambdaQueryWrapper<DeviceDocuments> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(DeviceDocuments::getDeviceId, deviceId);
        return Result.success(deviceDocumentsService.list(lambdaQueryWrapper));
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,274 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceExaminePlanDetailsDto;
import com.ruoyi.device.dto.DeviceExaminePlanDto;
import com.ruoyi.device.dto.DeviceExamineRecordContrastDto;
import com.ruoyi.device.dto.DeviceExamineRecordDto;
import com.ruoyi.device.pojo.DeviceExaminePlan;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import com.ruoyi.device.service.DeviceExaminePlanDetailsService;
import com.ruoyi.device.service.DeviceExaminePlanService;
import com.ruoyi.device.service.DeviceExamineRecordContrastService;
import com.ruoyi.device.service.DeviceExamineRecordService;
import com.ruoyi.framework.exception.ErrorException;
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;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’主表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:04
 */
@Api(tags = "设备核查计划")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceExaminePlan")
public class DeviceExaminePlanController {
    private DeviceExaminePlanService deviceExaminePlanService;
    private DeviceExaminePlanDetailsService deviceExaminePlanDetailsService;
    private DeviceExamineRecordService deviceExamineRecordService;
    private DeviceExamineRecordContrastService deviceExamineRecordContrastService;
    /**
     * æ–°å¢žè®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "新增设备核查计划")
    @PostMapping("/addDeviceExaminePlan")
    public Result addDeviceExaminePlan(@RequestBody DeviceExaminePlanDto examinePlanDto){
        return Result.success(deviceExaminePlanService.addDeviceExaminePlan(examinePlanDto));
    }
    /**
     * ä¿®æ”¹è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param examinePlanDto è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     */
    @ApiOperation("批量修改设备核查计划")
    @PostMapping("/updateDeviceExaminePlan")
    public Result updateDeviceExaminePlan(@RequestBody DeviceExaminePlanDto examinePlanDto) {
        return Result.success(deviceExaminePlanService.updateDeviceExaminePlan(examinePlanDto));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     */
    @ApiOperation("查询设备核查计划详情")
    @GetMapping("/getDeviceExaminePlan")
    public Result<DeviceExaminePlanDto> getDeviceExaminePlan(Integer planId) {
        return Result.success(deviceExaminePlanService.getDeviceExaminePlan(planId));
    }
    /**
     * å¯¼å…¥è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @return
     */
    @ApiOperation(value = "导入设备核查计划")
    @PostMapping("/importDeviceExaminePlan")
    public Result importDeviceExaminePlan(MultipartFile file){
        return Result.success(deviceExaminePlanService.importDeviceExaminePlan(file));
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’删除
     * @return
     */
    @ApiOperation(value = "设备核查计划删除")
    @DeleteMapping("/delDeviceExaminePlan")
    public Result delDeviceExaminePlan(Integer planId){
        return Result.success(deviceExaminePlanService.removeById(planId));
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’批准
     * @return
     */
    @ApiOperation(value = "提交批准")
    @PostMapping("/submitRatifyDeviceExaminePlan")
    public Result submitRatifyDeviceExaminePlan(@RequestBody DeviceExaminePlan DeviceExaminePlan){
        return Result.success(deviceExaminePlanService.submitRatifyDeviceExaminePlan(DeviceExaminePlan));
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’批准
     * @return
     */
    @ApiOperation(value = "设备核查计划批准")
    @PostMapping("/ratifyDeviceExaminePlan")
    public Result ratifyDeviceExaminePlan(@RequestBody DeviceExaminePlan DeviceExaminePlan){
        return Result.success(deviceExaminePlanService.ratifyDeviceExaminePlan(DeviceExaminePlan));
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’列表
     * @return
     */
    @ApiOperation(value = "设备核查计划列表")
    @GetMapping("/pageDeviceExaminePlan")
    public Result<IPage<DeviceExaminePlanDto>> pageDeviceExaminePlan(Page page, DeviceExaminePlan DeviceExaminePlan) {
        return Result.success(deviceExaminePlanService.pageDeviceExaminePlan(page, DeviceExaminePlan));
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情列表
     * @return
     */
    @ApiOperation(value = "设备核查计划详情列表")
    @GetMapping("/pageDeviceExaminePlanDetail")
    public Result<IPage<DeviceExaminePlanDetailsDto>> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails deviceExaminePlanDetails) {
        return Result.success(deviceExaminePlanService.pageDeviceExaminePlanDetail(page, deviceExaminePlanDetails));
    }
    /**
     * æ–°å¢žè®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "新增设备核查计划详情")
    @PostMapping("/addDeviceExaminePlanDetail")
    public Result addDeviceExaminePlanDetail(@RequestBody DeviceExaminePlanDetails deviceExaminePlanDetail){
        if (deviceExaminePlanDetail.getPlanId() == null) {
            throw new ErrorException("缺少设备核查计划主表id");
        }
        return Result.success(deviceExaminePlanDetailsService.save(deviceExaminePlanDetail));
    }
    /**
     * ä¿®æ”¹è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "修改设备核查计划详情")
    @PostMapping("/updateDeviceExaminePlanDetail")
    public Result updateDeviceExaminePlanDetail(@RequestBody DeviceExaminePlanDetails deviceExaminePlanDetail){
        return Result.success(deviceExaminePlanDetailsService.updateById(deviceExaminePlanDetail));
    }
    /**
     * åˆ é™¤è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "删除设备核查计划详情")
    @DeleteMapping("/delDeviceExaminePlanDetail")
    public Result delDeviceExaminePlanDetail(Integer planDetailsId){
        return Result.success(deviceExaminePlanDetailsService.removeById(planDetailsId));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param planId è®¾å¤‡æ ¸æŸ¥è®¡åˆ’id
     * @return
     */
    @ApiOperation(value = "导出设备核查计划")
    @GetMapping("/exportDeviceExaminePlanDetail")
    public void exportDeviceExaminePlanDetail(Integer planId, HttpServletResponse response){
        deviceExaminePlanService.exportDeviceExaminePlanDetail(planId, response);
    }
    /*********************************************** æŠ¥å‘Š **************************************************/
    /**
     * æŸ¥è¯¢æ ¸æŸ¥è®°å½•
     * @return
     */
    @ApiOperation(value = "查询核查记录")
    @GetMapping("/getExamineRecord")
    public Result<DeviceExamineRecordDto> getExamineRecord(Integer planDetailsId){
        return Result.success(deviceExamineRecordService.getExamineRecord(planDetailsId));
    }
    /**
     * æ–°å¢žæ ¸æŸ¥è®°å½•
     * @return
     */
    @ApiOperation(value = "新增核查记录")
    @PostMapping("/addExamineRecord")
    public Result addExamineRecord(@RequestBody DeviceExamineRecordDto deviceExamineRecordDto){
        return Result.success(deviceExamineRecordService.addExamineRecord(deviceExamineRecordDto));
    }
    /**
     * å¤æ ¸æ ¸æŸ¥è®°å½•
     * @return
     */
    @ApiOperation(value = "复核核查记录")
    @PostMapping("/reviewExamineRecord")
    public Result reviewExamineRecord(@RequestBody DeviceExamineRecordDto deviceExamineRecordDto){
        return Result.success(deviceExamineRecordService.reviewExamineRecord(deviceExamineRecordDto));
    }
    /**
     * å¯¼å‡ºå¤æ ¸æ ¸æŸ¥è®°å½•
     * @param planDetailsId
     * @return
     */
    @ApiOperation(value = "导出复核核查记录")
    @GetMapping("/exportReviewExamineRecordDetail")
    public void exportReviewExamineRecordDetail(Integer planDetailsId, HttpServletResponse response){
        deviceExamineRecordService.exportReviewExamineRecordDetail(planDetailsId, response);
    }
    /*********************************************** æŠ¥å‘Šå¯¹æ¯” **************************************************/
    /**
     * æŸ¥è¯¢æ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    @ApiOperation(value = "查询核查对比记录")
    @GetMapping("/getExamineRecordContrast")
    public Result<DeviceExamineRecordContrastDto> getExamineRecordContrast(Integer planDetailsId){
        return Result.success(deviceExamineRecordContrastService.getExamineRecordContrast(planDetailsId));
    }
    /**
     * æ–°å¢žæ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    @ApiOperation(value = "新增核查对比记录")
    @PostMapping("/addExamineRecordContrast")
    public Result addExamineRecordContrast(@RequestBody DeviceExamineRecordContrastDto deviceExamineRecordContrastDto){
        return Result.success(deviceExamineRecordContrastService.addExamineRecordContrast(deviceExamineRecordContrastDto));
    }
    /**
     * å®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    @ApiOperation(value = "审核核查对比记录")
    @PostMapping("/reviewExamineRecordContrast")
    public Result reviewExamineRecordContrast(@RequestBody DeviceExamineRecordContrastDto deviceExamineRecordContrastDto){
        return Result.success(deviceExamineRecordContrastService.reviewExamineRecordContrast(deviceExamineRecordContrastDto));
    }
    /**
     * å¯¼å‡ºå®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录
     * @param planDetailsId
     * @return
     */
    @ApiOperation(value = "导出审核核查对比记录")
    @GetMapping("/exportReviewExamineRecordContrast")
    public Result exportReviewExamineRecordContrast(Integer planDetailsId, HttpServletResponse response){
        deviceExamineRecordContrastService.exportReviewExamineRecordContrast(planDetailsId, response);
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceExternalApply;
import com.ruoyi.device.service.DeviceExternalApplyService;
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-12-17 10:28:43
 */
@Api(tags = "利用外部设备申请表")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceExternalApply")
public class DeviceExternalApplyController {
    private DeviceExternalApplyService deviceExternalApplyService;
    /**
     * åˆ©ç”¨å¤–部设备申请列表
     * @return
     */
    @ApiOperation(value = "利用外部设备申请列表")
    @GetMapping("/pageDeviceExternalApply")
    public Result<IPage<DeviceExternalApply>> pageDeviceExternalApply(Page page, DeviceExternalApply deviceExternalApply) throws Exception {
        return Result.success(deviceExternalApplyService.pageDeviceExternalApply(page, deviceExternalApply));
    }
    /**
     * æŸ¥è¯¢åˆ©ç”¨å¤–部设备申请
     * @return
     */
    @ApiOperation(value = "查询利用外部设备申请")
    @GetMapping("/getDeviceExternalApply")
    public Result getDeviceExternalApply(Integer externalApplyId){
        return Result.success(deviceExternalApplyService.getById(externalApplyId));
    }
    /**
     * åˆ é™¤åˆ©ç”¨å¤–部设备申请
     * @return
     */
    @ApiOperation(value = "删除利用外部设备申请")
    @DeleteMapping("/delDeviceExternalApply")
    public Result delDeviceExternalApply(Integer externalApplyId){
        return Result.success(deviceExternalApplyService.removeById(externalApplyId));
    }
    /**
     * æ–°å¢žåˆ©ç”¨å¤–部设备申请
     * @return
     */
    @ApiOperation(value = "新增利用外部设备申请")
    @PostMapping("/addDeviceExternalApply")
    public Result addDeviceExternalApply(@RequestBody DeviceExternalApply deviceExternalApply){
        return Result.success(deviceExternalApplyService.addDeviceExternalApply(deviceExternalApply));
    }
    /**
     * å¯¼å‡ºåˆ©ç”¨å¤–部设备申请
     * @param externalApplyId å¤–部设备申请id
     * @return
     */
    @ApiOperation(value = "导出利用外部设备申请")
    @GetMapping("/exportDeviceExternalApply")
    public Result exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response){
        deviceExternalApplyService.exportDeviceExternalApply(externalApplyId, response);
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceImpowerDto;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.service.DeviceImpowerService;
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 2025-04-17 03:23:23
 */
@Api(tags = "设备使用授权表")
@RestController
@RequestMapping("/deviceImpower")
public class DeviceImpowerController {
    @Resource
    private DeviceImpowerService deviceImpowerService;
    /**
     * åˆ†é¡µæŸ¥è¯¢ä½¿ç”¨æŽˆæƒ
     * @return
     */
    @ApiOperation("分页查询使用授权")
    @GetMapping("selectDeviceImpowerByPage")
    public Result<IPage<DeviceImpower>> selectDeviceImpowerByPage(Page page, DeviceImpowerDto itemParameter){
        return deviceImpowerService.selectDeviceImpowerByPage(page, itemParameter);
    }
    /**
     * æ–°å¢žä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("新增使用授权")
    @PostMapping("/addImpower")
    public Result addImpower(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.addImpower(deviceImpowerDto);
    }
    /**
     * ä¿®æ”¹ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("修改使用授权")
    @PostMapping("/updateImpower")
    public Result updateImpower(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.updateImpower(deviceImpowerDto);
    }
    /**
     * åˆ é™¤ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("删除使用授权")
    @DeleteMapping("/deleteImpower")
    public Result deleteImpower(DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.deleteImpower(deviceImpowerDto);
    }
    /**
     * æŸ¥è¯¢ä½¿ç”¨æŽˆæƒè¯¦æƒ…
     */
    @ApiOperation("查询使用授权详情")
    @GetMapping("/getImpowerDetail")
    public Result<DeviceImpowerDto> getImpowerDetail(Integer impowerId) {
        return deviceImpowerService.getImpowerDetail(impowerId);
    }
    /**
     * æäº¤æ‰¹å‡†
     */
    @ApiOperation("提交批准通知")
    @PostMapping("/submitReviewImpowerStatus")
    public Result submitReviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.submitReviewImpowerStatus(deviceImpowerDto);
    }
    /**
     * ä½¿ç”¨æŽˆæƒæ‰¹å‡†
     */
    @ApiOperation("授权批准")
    @PostMapping("/reviewImpowerStatus")
    public Result reviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) {
        return deviceImpowerService.reviewImpowerStatus(deviceImpowerDto);
    }
    /**
     * å¯¼å‡ºä½¿ç”¨æŽˆæƒ
     */
    @ApiOperation("导出使用授权")
    @GetMapping("/exportDeviceImpower")
    public Result exportDeviceImpower(@RequestParam("impowerId") Integer impowerId, HttpServletResponse response) {
        return deviceImpowerService.exportDeviceImpowerDto(impowerId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceInspectionRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceInspectionRecordDto;
import com.ruoyi.device.pojo.DeviceInspectionRecord;
import com.ruoyi.device.service.DeviceInspectionRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 *  è®¾å¤‡ç‚¹æ£€è®°å½•表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:25:14
 */
@Api(tags = "设备点检记录")
@RestController
@RequestMapping("/deviceInspectionRecord")
public class DeviceInspectionRecordController {
    @Resource
    private DeviceInspectionRecordService deviceInspectionRecordService;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @ApiOperation("分页查询设备点检记录")
    @GetMapping("/getDeviceInspectionRecordByPage")
    public Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(Page page, DeviceInspectionRecordDto itemParameter) {
        return deviceInspectionRecordService.getDeviceInspectionRecordByPage(page, itemParameter);
    }
    /**
     * æŸ¥è¯¢ç‚¹æ£€è¯¦æƒ…
     */
    @ApiOperation("查询点检详情")
    @GetMapping("/getDeviceInspectionRecord")
    public Result getDeviceInspectionRecord(Integer inspectionRecordId) {
        return deviceInspectionRecordService.getDeviceInspectionRecord(inspectionRecordId);
    }
    /**
     * æ–°å¢žè®¾å¤‡ç‚¹æ£€è®°å½•
     * @param deviceInspectionRecord  è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @ApiOperation("新增设备点检记录")
    @PostMapping("/addDeviceInspectionRecord")
    public Result addDeviceInspectionRecord(@RequestBody DeviceInspectionRecordDto deviceInspectionRecord) {
        return deviceInspectionRecordService.addDeviceInspectionRecord(deviceInspectionRecord);
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @ApiOperation("修改设备点检记录")
    @PostMapping("/updateDeviceInspectionRecord")
    public Result updateDeviceInspectionRecord(@RequestBody DeviceInspectionRecordDto deviceInspectionRecord) {
        return deviceInspectionRecordService.updateInspectionRecordAndDetails(deviceInspectionRecord);
    }
    /**
     * åˆ é™¤è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @ApiOperation("删除设备点检记录")
    @DeleteMapping("/deleteDeviceInspectionRecord")
    public Result deleteDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord) {
        return deviceInspectionRecordService.deleteDeviceInspectionRecordOrDetails(deviceInspectionRecord);
    }
    /**
     * å¤æ ¸ç‚¹æ£€è®°å½•
     * @return
     */
    @ApiOperation(value = "复核核查记录")
    @PostMapping("/reviewDeviceInspectionRecord")
    public Result reviewDeviceInspectionRecord(@RequestBody DeviceInspectionRecordDto deviceExamineRecordDto){
        return deviceInspectionRecordService.reviewDeviceInspectionRecord(deviceExamineRecordDto);
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @ApiOperation("导出设备点检记录")
    @GetMapping("/exportDeviceInspectionRecord")
    public Result exportDeviceInspectionRecord(@RequestParam("inspectionRecordId") Integer inspectionRecordId, HttpServletResponse response) {
        return deviceInspectionRecordService.exportDeviceInspectionRecord(inspectionRecordId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceInstructionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceInstructionDto;
import com.ruoyi.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.pojo.DeviceInstruction;
import com.ruoyi.device.pojo.OperationInstruction;
import com.ruoyi.device.service.DeviceInstructionService;
import com.ruoyi.device.service.DeviceOperationInstructionService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * ä½œä¸šæŒ‡å¯¼ä¹¦æ·»åŠ å—æŽ§æ–‡ä»¶è¡¨ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-12-04 10:29:18
 */
@RestController
@RequestMapping("/deviceInstruction")
public class DeviceInstructionController {
    @Autowired
    private DeviceInstructionService deviceInstructionService;
    @Autowired
    private DeviceOperationInstructionService deviceOperationInstructionService;
    @ApiOperation(value = "作业指导书分页")
    @GetMapping("/pageByPageQueryOfHomeworkInstructions")
    public Result<IPage<DeviceOperationInstructionDto>> pageByPageQueryOfHomeworkInstructions(Page page, DeviceOperationInstructionDto operationInstructionDto){
        return Result.success(deviceInstructionService.pageByPageQueryOfHomeworkInstructions(page, operationInstructionDto));
    }
    @ApiOperation(value = "作业指导书新增")
    @PostMapping("/newHomeworkGuidebookAdded")
    public Result newHomeworkGuidebookAdded(@RequestBody DeviceInstructionDto instructionDto){
        deviceInstructionService.newHomeworkGuidebookAdded(instructionDto);
        return Result.success();
    }
    @ApiOperation(value = "作业指导书详情")
    @GetMapping("/homeworkGuidebookEditor")
    public Result<Map<String, Object>> homeworkGuidebookEditor(Integer instructionId){
        DeviceInstruction instruction = deviceInstructionService.getById(instructionId);
        List<DeviceOperationInstructionDto> list = deviceOperationInstructionService.homeworkGuidebookEditor(instructionId);
        HashMap<String, Object> map = new HashMap<>();
        map.put("list", list);
        map.put("instruction", instruction);
        return Result.success(map);
    }
    @ApiOperation(value = "作业指导书受控文件删除")
    @DeleteMapping("/deleteHomeworkGuidebook")
    public Result deleteHomeworkGuidebook(String ids){
        if (ObjectUtils.isNotEmpty(ids)) {
            String[] idArray = ids.split(",");
            deviceOperationInstructionService.removeBatchByIds(Arrays.asList(idArray));
        }
        return Result.success();
    }
    @ApiOperation(value = "作业指导书删除")
    @DeleteMapping("/homeworkGuidebook")
    public Result homeworkGuidebook(String id, String instructionId){
        // åˆ é™¤å­è¡¨æ•°æ®
        deviceOperationInstructionService.removeById(id);
        // å¦‚果子表数据为空
        long count = deviceOperationInstructionService.count(Wrappers.<OperationInstruction>lambdaQuery()
                .eq(OperationInstruction::getInstructionId, instructionId));
        // é‚£ä¹ˆå°±åˆ é™¤çˆ¶è¡¨æ•°æ®
        if (count < 1) {
            deviceInstructionService.removeById(id);
        }
        return Result.success();
    }
    @ApiOperation(value = "作业指导书审批")
    @PostMapping("/approvalOfHomeworkInstructionManual")
    public Result approvalOfHomeworkInstructionManual(@RequestBody Map<String,Object> map){
        Integer id =(Integer) map.get("id");
        Boolean status =(Boolean) map.get("status");
        deviceOperationInstructionService.update(Wrappers.<OperationInstruction>lambdaUpdate()
                .eq(OperationInstruction::getId, id)
                .set(OperationInstruction::getStatus, status)
                .set(OperationInstruction::getApproverId, SecurityUtils.getUserId().intValue())
                .set(OperationInstruction::getEntryIntoForceTime, LocalDateTime.now()));
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.DeviceMaintenanceService;
import com.ruoyi.system.mapper.UserMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/**
 * todo: å­™æ²³æ»¨
 */
@RestController
@Api(tags = "设备维护保养")
@RequestMapping("/deviceMaintain")
public class DeviceMaintenanceController {
    @Autowired
    private DeviceMaintenanceService deviceMaintenanceService;
    @Autowired
    private UserMapper userMapper;
    /**
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @param deviceMaintenance
     * @return
     */
    @ApiOperation(value = "设备维护分页查询")
    @GetMapping("/selectDeviceMaintenancePage")
    public Result selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance){
        return Result.success(deviceMaintenanceService.selectDeviceMaintenancePage(page, deviceMaintenance));
    }
    /**
     * æ–°å¢žä¿®æ”¹è®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param deviceMaintenance
     * @return
     */
    @ApiOperation(value = "新增修改设备维护保养")
    @PostMapping("/addDeviceMaintenance")
    public Result addDeviceMaintenance(@RequestBody DeviceMaintenance deviceMaintenance){
        if (deviceMaintenance.getDeviceId() == null) {
            throw new RuntimeException("缺少设备id");
        }
        User user = userMapper.selectById(deviceMaintenance.getMaintenanceUserId());
        deviceMaintenance.setMaintenanceUserName(user.getName());
        return Result.success(deviceMaintenanceService.saveOrUpdate(deviceMaintenance));
    }
    /**
     * åˆ é™¤ä¿®æ”¹è®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param id
     * @return
     */
    @ApiOperation(value = "删除修改设备维护保养")
    @DeleteMapping("/deleteDeviceMaintenance")
    public Result deleteDeviceMaintenance(Integer id){
        return Result.success(deviceMaintenanceService.removeById(id));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ç»´æŠ¤ä¿å…»
     */
    @ApiOperation("导出设备维护保养")
    @GetMapping("/exportDeviceMaintenance")
    public void exportDeviceMaintenance(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) {
        deviceMaintenanceService.exportDeviceMaintenance(deviceId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import com.ruoyi.device.service.DeviceMaintenancePlanService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
@Api(tags = "设备保养计划")
@RestController
@RequestMapping("/deviceMaintenancePlan")
public class DeviceMaintenancePlanController {
    @Resource
    private DeviceMaintenancePlanService deviceMaintenancePlanService;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    @ApiOperation("分页查询设备保养计划")
    @GetMapping("selectDeviceMaintenancePlanByPage")
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto itemParameter){
        return deviceMaintenancePlanService.selectDeviceMaintenancePlanByPage(page, itemParameter);
    }
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("新增设备保养计划")
    @PostMapping("/addMaintenancePlan")
    public Result addMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.addMaintenancePlan(deviceMaintenancePlanDto);
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("修改设备保养计划")
    @PostMapping("/updateMaintenancePlan")
    public Result updateMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.updateMaintenancePlan(deviceMaintenancePlanDto);
    }
    /**
     * åˆ é™¤è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("删除设备保养计划")
    @DeleteMapping("/deleteMaintenancePlan")
    public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.deleteMaintenancePlan(deviceMaintenancePlanDto);
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
     */
    @ApiOperation("查询设备保养计划详情")
    @GetMapping("/getMaintenancePlanDetail")
    public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
        return deviceMaintenancePlanService.getMaintenancePlanDetail(maintenancePlanId);
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @ApiOperation("导出设备保养计划")
    @GetMapping("/exportDeviceMaintenancePlan")
    public Result exportDeviceMaintenancePlan(@RequestParam("maintenancePlanId") Integer maintenancePlanId, HttpServletResponse response) {
        return deviceMaintenancePlanService.exportDeviceMaintenancePlanDto(maintenancePlanId, response);
    }
    /**
     * æäº¤å®¡æ ¸
     */
    @ApiOperation("提交审核")
    @PostMapping("/submitReviewMaintenancePlanStatus")
    public Result submitReviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.submitReviewMaintenancePlanStatus(deviceMaintenancePlanDto);
    }
    /**
     * å®¡æ ¸è®¾å¤‡ä¿å…»è®¡åˆ’状态
     */
    @ApiOperation("审核设备保养计划状态")
    @PostMapping("/reviewMaintenancePlanStatus")
    public Result reviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        return deviceMaintenancePlanService.reviewMaintenancePlanStatus(deviceMaintenancePlanDto);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceMetric;
import com.ruoyi.device.service.IDeviceMetricService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@AllArgsConstructor
@RequestMapping("/deviceMetrics")
public class DeviceMetricController {
    @Autowired
    private IDeviceMetricService deviceMetricService;
    @PostMapping("/saveOrUpdateDeviceMetric")
    public Result create(@RequestBody DeviceMetric deviceMetric) {
        return Result.success(deviceMetricService.saveOrUpdate(deviceMetric));
    }
    @GetMapping("/selectDeviceMetric")
    public Result read(@RequestParam("deviceId") Integer deviceId, @RequestParam("type") String type) {
        return Result.success(deviceMetricService.list(Wrappers.<DeviceMetric>lambdaQuery()
                .eq(DeviceMetric::getDeviceId,deviceId)
                .eq(DeviceMetric::getType,type)));
    }
    @DeleteMapping("/deleteDeviceMetrics")
    public Result delete(@RequestParam("id") Integer id) {
      return   Result.success(deviceMetricService.removeById(id));
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMetricRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.ruoyi.device.controller;
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.ruoyi.common.core.domain.Result;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.FileSaveUtil;
import com.ruoyi.device.dto.DeviceMetricRecordDto;
import com.ruoyi.device.pojo.DeviceMetricRecord;
import com.ruoyi.device.pojo.DeviceMetricsCopy;
import com.ruoyi.device.service.DeviceMetricRecordService;
import com.ruoyi.device.service.DeviceMetricsCopyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:01
 */
@Api(tags = "设备 - è®¾å¤‡æ ¡å‡†")
@RestController
@RequestMapping("/deviceMetricRecord")
public class DeviceMetricRecordController {
    @Autowired
    private DeviceMetricRecordService deviceMetricRecordService;
    @Autowired
    private DeviceMetricsCopyService deviceMetricsCopyService;
    @Autowired
    private NumberGenerator<DeviceMetricRecord> numberGenerator;
    @ApiOperation("设备校准分页查询")
    @GetMapping("/deviceMetricRecordPage")
    public Result deviceMetricRecordPage(@RequestParam("deviceId") Integer deviceId, Page page, @RequestParam("type") String type) {
        return Result.success(deviceMetricRecordService.page(page, Wrappers.<DeviceMetricRecord>lambdaQuery()
                .eq(DeviceMetricRecord::getDeviceId, deviceId)
                .eq(DeviceMetricRecord::getType, type)));
    }
    @ApiOperation("设备校准 æ–°å¢ž æ›´æ–°")
    @PostMapping("/addOrUpdateDeviceMetricRecord")
    public Result addOrUpdateDeviceMetricRecord(@RequestBody DeviceMetricRecordDto deviceMetricRecordDto) {
        if (ObjectUtils.isEmpty(deviceMetricRecordDto.getProcessNumber())) {
            String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
            String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
            String processNumber = numberGenerator.generateNumberWithPrefix(5, "SBJZ" + year + month, DeviceMetricRecord::getProcessNumber);
            deviceMetricRecordDto.setProcessNumber(processNumber);
        }
        deviceMetricRecordService.saveOrUpdate(deviceMetricRecordDto);
        if (CollectionUtils.isNotEmpty(deviceMetricRecordDto.getDeviceMetricsCopyList())) {
            deviceMetricRecordDto.getDeviceMetricsCopyList().forEach(i -> i.setDeviceMetricsId(deviceMetricRecordDto.getId()));
            deviceMetricsCopyService.saveOrUpdateBatch(deviceMetricRecordDto.getDeviceMetricsCopyList());
        }
        return Result.success();
    }
    @ApiOperation("设备校准 åˆ é™¤")
    @DeleteMapping("/deleteDeviceMetricRecord")
    public Result deleteDeviceMetricRecord(@RequestParam("id") Integer id) {
        DeviceMetricRecord deviceMetricRecord = deviceMetricRecordService.getById(id);
        deviceMetricsCopyService.remove(Wrappers.<DeviceMetricsCopy>lambdaQuery()
                .eq(DeviceMetricsCopy::getDeviceMetricsId, id));
        // åˆ é™¤æ–‡ä»¶
        FileSaveUtil.DeleteFile(deviceMetricRecord.getSystemFileName());
        return Result.success(deviceMetricRecordService.removeById(id));
    }
    @ApiOperation("设备校准 æ ¡å‡†æ¡ç›®æŸ¥è¯¢")
    @GetMapping("/showDeviceMetricsCopy")
    public Result showDeviceMetricsCopy(@RequestParam("id") Integer id, @RequestParam("type") String type) {
        return Result.success(deviceMetricsCopyService.list(Wrappers.<DeviceMetricsCopy>lambdaQuery()
                .eq(DeviceMetricsCopy::getDeviceMetricsId, id)
                .eq(DeviceMetricsCopy::getType, type)));
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.device.pojo.DeviceRecord;
import com.ruoyi.device.service.DeviceRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * cnas设备使用记录表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
@Api(tags = "设备使用记录")
@RestController
@RequestMapping("/deviceRecord")
public class DeviceRecordController {
    @Autowired
    private DeviceRecordService deviceRecordService;
    @ApiOperation(value = "备使用记录查询")
    @GetMapping("/deviceRecordPage")
    public Result deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
        return Result.success(deviceRecordService.deviceRecordPage(deviceId, page, sampleCode, managementNumber));
    }
    @ApiOperation(value = "新增")
    @PostMapping("/saveDeviceRecord")
    public Result saveDeviceRecords(@RequestBody DeviceRecord deviceRecord) {
        return Result.success(deviceRecordService.save(deviceRecord));
    }
    /**
     * ç¼–辑设备使用记录
     * @param deviceRecord
     * @return
     */
    @ApiOperation(value = "修改")
    @PostMapping("/updateDeviceRecord")
    public Result updateDeviceRecord(@RequestBody DeviceRecord deviceRecord) {
        return Result.success(deviceRecordService.updateById(deviceRecord));
    }
    @DeleteMapping("/deleteDeviceRecord")
    public Result deleteDeviceRecords(@RequestParam("id") Integer id) {
        return Result.success(deviceRecordService.removeById(id));
    }
    @ApiOperation(value = "设备使用记录导出")
    @GetMapping("/exportUseRecord")
    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response){
        deviceRecordService.exportUseRecord(deviceId, exportDate, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceScrappedController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceScrapped;
import com.ruoyi.device.service.DeviceScrappedService;
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-12-17 01:53:47
 */
@Api(tags = "设备报废申请表")
@AllArgsConstructor
@RestController
@RequestMapping("/deviceScrapped")
public class DeviceScrappedController {
    private DeviceScrappedService deviceScrappedService;
    /**
     * è®¾å¤‡æŠ¥åºŸç”³è¯·åˆ—表
     * @return
     */
    @ApiOperation(value = "设备报废申请列表")
    @GetMapping("/pageDeviceScrapped")
    public Result<IPage<DeviceScrapped>> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped) {
        return Result.success(deviceScrappedService.pageDeviceScrapped(page, deviceScrapped));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æŠ¥åºŸç”³è¯·
     * @return
     */
    @ApiOperation(value = "查询设备报废申请")
    @GetMapping("/getDeviceScrapped")
    public Result getDeviceScrapped(Integer scrappedId){
        return Result.success(deviceScrappedService.getById(scrappedId));
    }
    /**
     * åˆ é™¤è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     * @return
     */
    @ApiOperation(value = "删除设备报废申请")
    @DeleteMapping("/delDeviceScrapped")
    public Result delDeviceScrapped(Integer scrappedId){
        return Result.success(deviceScrappedService.removeById(scrappedId));
    }
    /**
     * æ–°å¢žè®¾å¤‡æŠ¥åºŸç”³è¯·
     * @return
     */
    @ApiOperation(value = "新增设备报废申请")
    @PostMapping("/addDeviceScrapped")
    public Result addDeviceScrapped(@RequestBody DeviceScrapped deviceScrapped){
        return Result.success(deviceScrappedService.addDeviceScrapped(deviceScrapped));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æŠ¥åºŸç”³è¯·
     */
    @ApiOperation("导出设备报废申请")
    @GetMapping("/exportDeviceScrapped")
    public Result exportDeviceScrapped(Integer scrappedId, HttpServletResponse response) {
        return deviceScrappedService.exportDeviceScrapped(scrappedId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceStateController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.ruoyi.device.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.device.dto.DeviceStateDto;
import com.ruoyi.device.excel.DeviceStateExport;
import com.ruoyi.device.pojo.DeviceState;
import com.ruoyi.device.service.DeviceStateService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/**
 * <p>
 * è®¾å¤‡åœç”¨/启用 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-09-26 09:51:40
 */
@RestController
@RequestMapping("/deviceState")
public class DeviceStateController {
    @Autowired
    private DeviceStateService deviceStateService;
    @Autowired
    private NumberGenerator<DeviceState> numberGenerator;
    @PostMapping("saveDeviceState")
    public Result saveIncidentReportData(@RequestBody DeviceState deviceState) {
        if (ObjectUtils.isEmpty(deviceState.getProcessNumber())) {
            String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
            String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
            String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceState::getProcessNumber);
            deviceState.setProcessNumber(processNumber);
        }
        deviceStateService.saveOrUpdate(deviceState);
        return Result.success();
    }
    @GetMapping("/getDeviceStatePage")
    public Result getDeviceStatePage(@RequestParam("deviceId") Integer deviceId, Page page, String processNumber){
        return Result.success(deviceStateService.getDeviceStatePage(deviceId, page, processNumber));
    }
    @DeleteMapping("/deleteDeviceState")
    public Result deleteDeviceState(@RequestParam("stateId") Integer stateId){
        return Result.success(deviceStateService.removeById(stateId));
    }
    @GetMapping("/deviceStateExport")
    public Result deviceStateExport(@RequestParam("deviceId") Integer deviceId, String processNumber, HttpServletResponse response) throws Exception {
        IPage<DeviceStateDto> deviceBorrows = deviceStateService.getDeviceStatePage(deviceId, new Page<>(-1, -1), processNumber);
        List<DeviceStateExport> studentList  = JSONObject.parseArray(JSON.toJSONString(deviceBorrows.getRecords()), DeviceStateExport.class);
        response.setHeader("requestType", "excel");
        response.setHeader("Access-Control-Expose-Headers", "requestType");
        // è®¾ç½®å•元格样式
        // ä¿å­˜åˆ°ç¬¬ä¸€ä¸ªsheet中
        EasyExcel.write(response.getOutputStream())
                .head(DeviceStateExport.class)
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // è‡ªé€‚应列宽
                .sheet("sheet")
                .doWrite(studentList);
        return Result.success();
    }
    @ApiOperation(value = "设备启动/停止导出")
    @GetMapping("/exportDeviceStatus")
    public void exportDeviceStatus(@RequestParam("processNumber") String processNumber,@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception {
        deviceStateService.exportDeviceStatus(deviceId, processNumber, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,106 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
import com.ruoyi.device.service.DeviceTraceabilityManagementService;
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-12-20 02:27:44
 */
@Api(tags = "设备量值溯源计划")
@RestController
@RequestMapping("/deviceTraceabilityManagement")
public class DeviceTraceabilityManagementController {
    @Resource
    private DeviceTraceabilityManagementService deviceTraceabilityManagementService;
    /**
     * åˆ†é¡µæŸ¥è¯¢é‡å€¼æº¯æºè®¡åˆ’
     * @return
     */
    @ApiOperation("分页查询量值溯源计划")
    @GetMapping("selectDeviceTraceabilityManagementByPage")
    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(Page page, DeviceTraceabilityManagementDto itemParameter){
        return deviceTraceabilityManagementService.selectDeviceTraceabilityManagementByPage(page, itemParameter);
    }
    /**
     * æ–°å¢žé‡å€¼æº¯æºè®¡åˆ’
     * @param deviceTraceabilityManagementDto é‡å€¼æº¯æºè®¡åˆ’
     */
    @ApiOperation("新增量值溯源计划")
    @PostMapping("/addTraceabilityManagement")
    public Result addTraceabilityManagement(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        return deviceTraceabilityManagementService.addTraceabilityManagement(deviceTraceabilityManagementDto);
    }
    /**
     * ä¿®æ”¹é‡å€¼æº¯æºè®¡åˆ’
     * @param deviceTraceabilityManagementDto é‡å€¼æº¯æºè®¡åˆ’
     */
    @ApiOperation("修改量值溯源计划")
    @PostMapping("/updateTraceabilityManagement")
    public Result updateTraceabilityManagement(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        return deviceTraceabilityManagementService.updateTraceabilityManagement(deviceTraceabilityManagementDto);
    }
    /**
     * åˆ é™¤é‡å€¼æº¯æºè®¡åˆ’
     * @param deviceTraceabilityManagementDto é‡å€¼æº¯æºè®¡åˆ’
     */
    @ApiOperation("删除量值溯源计划")
    @DeleteMapping("/deleteTraceabilityManagement")
    public Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        return deviceTraceabilityManagementService.deleteTraceabilityManagement(deviceTraceabilityManagementDto);
    }
    /**
     * æŸ¥è¯¢é‡å€¼æº¯æºè®¡åˆ’详情
     */
    @ApiOperation("查询量值溯源计划详情")
    @GetMapping("/getTraceabilityManagementDetail")
    public Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId) {
        return deviceTraceabilityManagementService.getTraceabilityManagementDetail(traceabilityManagementId);
    }
    /**
     * æäº¤æ‰¹å‡†
     */
    @ApiOperation("提交批准")
    @PostMapping("/submitReviewTraceabilityManagementStatus")
    public Result submitReviewTraceabilityManagementStatus(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        return deviceTraceabilityManagementService.submitReviewTraceabilityManagementStatus(deviceTraceabilityManagementDto);
    }
    /**
     * é‡å€¼æº¯æºè®¡åˆ’批准
     */
    @ApiOperation("量值溯源计划批准")
    @PostMapping("/reviewTraceabilityManagementStatus")
    public Result reviewTraceabilityManagementStatus(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        return deviceTraceabilityManagementService.reviewTraceabilityManagementStatus(deviceTraceabilityManagementDto);
    }
    /**
     * å¯¼å‡ºé‡å€¼æº¯æºè®¡åˆ’
     */
    @ApiOperation("导出量值溯源计划")
    @GetMapping("/exportDeviceTraceabilityManagement")
    public Result exportDeviceTraceabilityManagement(@RequestParam("traceabilityManagementId") Integer traceabilityManagementId, HttpServletResponse response) {
        return deviceTraceabilityManagementService.exportDeviceTraceabilityManagementDto(traceabilityManagementId, response);
    }
}
cnas-device/src/main/java/com/ruoyi/device/dto/DataConfigDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DataConfig;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class DataConfigDto {
    private List<DataConfig> dataConfigList;
    private Boolean isDevice;
    @ApiModelProperty("文件后缀")
    private String fileType;
    @ApiModelProperty("采集地址")
    private String collectUrl;
    @ApiModelProperty("存储地址")
    private String storageUrl;
    @ApiModelProperty("设备IP")
    private String ip;
    @ApiModelProperty("数采-委托字段")
    private String entrustCode;
    @ApiModelProperty("数采-样品字段")
    private String sampleCode;
    @ApiModelProperty("数采-db,mdb文件名称")
    private String dbFileName;
    @ApiModelProperty("设备ID")
    private Integer deviceId;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceAccidentReportDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceAccidentReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-18 æ˜ŸæœŸä¸‰ 10:00:48
 * Description:
 */
@Data
public class DeviceAccidentReportDto extends DeviceAccidentReport {
    @ApiModelProperty("时间")
    private String accidentDateStr;
    @ApiModelProperty("报告人填写时间")
    private String reportDateStr;
    @ApiModelProperty("评估人填写时间")
    private String assessorDateStr;
    @ApiModelProperty("部门负责人填写时间")
    private String departmentHeadDateStr;
    @ApiModelProperty("技术负责人填写时间")
    private String technicalDirectorDateStr;
    @ApiModelProperty("主任填写时间")
    private String directorHeadDateStr;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceBreakdownMaintenance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.ruoyi.device.dto;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡æ•…障维修表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 04:50:57
 */
@Getter
@Setter
@TableName("device_breakdown_maintenance")
@ApiModel(value = "DeviceBreakdownMaintenance对象", description = "设备故障维修表")
public class DeviceBreakdownMaintenance {
    @TableId(value = "maintenance_id", type = IdType.AUTO)
    private Integer maintenanceId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("安装地址")
    private String location;
    @ApiModelProperty("损坏或故障情况")
    private String damageOrMalfunction;
    @ApiModelProperty("申请人id")
    private Integer applicantUserId;
    @ApiModelProperty("申请人")
    private String applicantUser;
    @ApiModelProperty("要求修复时间")
    private LocalDate repairDate;
    @ApiModelProperty("部门负责人意见")
    private String departmentHeadOpinion;
    @ApiModelProperty("部门负责人id")
    private Integer departmentHeadUserId;
    @ApiModelProperty("部门负责人")
    private String departmentHeadUser;
    @ApiModelProperty("部门负责人填写时间")
    private LocalDate departmentHeadDate;
    @ApiModelProperty("维修记事")
    private String maintenanceRecord;
    @ApiModelProperty("维修人")
    private String maintenanceUser;
    @ApiModelProperty("维修时间")
    private LocalDate maintenanceDate;
    @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:维修记事")
    private Integer flowType;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCalibrationPlanDetailDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-17 æ˜ŸæœŸäºŒ 10:05:08
 * Description:
 */
@Data
public class DeviceCalibrationPlanDetailDto extends DeviceCalibrationPlanDetail {
    @ApiModelProperty("序号")
    private Integer index;
    @ApiModelProperty("最近检定时间Str")
    private String lastDateStr;
    @ApiModelProperty("本年计划校准时间Str")
    private String planDateStr;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCalibrationPlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceCalibrationPlan;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/12/16
 */
@Data
public class DeviceCalibrationPlanDto extends DeviceCalibrationPlan {
    @ApiModelProperty("编制人")
    private String writeName;
    @ApiModelProperty("批准人")
    private String ratifyName;
    @ApiModelProperty("编制时间")
    private String writeTimeStr;
    @ApiModelProperty("批准时间")
    private String ratifyTimeStr;
    @ApiModelProperty("校准计划详情")
    private List<DeviceCalibrationPlanDetail> calibrationPlanDetailList;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCollectionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * è®¾å¤‡é‡‡é›†å¯¹è±¡
 *
 * @Author zhuo
 * @Date 2024/12/3
 */
@Data
public class DeviceCollectionDto {
    @ApiModelProperty(value = "样品id")
    private Integer id;
    @ApiModelProperty(value = "订单编号")
    private String entrustCode;
    @ApiModelProperty(value = "样品编号")
    private String sampleCode;
    @ApiModelProperty(value = "采集的检验项id")
    private List<Integer> itemIds;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceConfigDtoPage.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.ruoyi.device.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceConfigDtoPage{
    @ApiModelProperty(value = "设备名称")
    private String deviceName;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "文件后缀")
    private String fileType;
    @ApiModelProperty(value = "采集地址")
    private String collectUrl;
    @ApiModelProperty(value = "存储地址")
    private String storageUrl;
    @ApiModelProperty(value = "IP地址")
    private String ip;
    @ApiModelProperty(value = "检验项分类")
    private String inspectionItemClass;
    @ApiModelProperty(value = "检验项")
    private String inspectionItem;
    @ApiModelProperty(value = "检验项子项")
    private String inspectionItemSubclass;
    @ApiModelProperty(value = "公式")
    private String formula;
    @ApiModelProperty(value = "参照X")
    private String referx;
    @ApiModelProperty(value = "X")
    private String x;
    @ApiModelProperty(value = "参照Y")
    private String refery;
    @ApiModelProperty(value = "Y")
    private String y;
    @ApiModelProperty(value = "别名")
    private String anotherName;
    @ApiModelProperty(value = "匹配名称")
    private String matchingName;
    private Integer id;
    @ApiModelProperty(value = "检验对象")
    private String sample;
    @ApiModelProperty(value = "检验项目id")
    private Integer structureItemParameterId;
    @ApiModelProperty("数采-委托字段")
    private String entrustCode;
    @ApiModelProperty("数采-样品字段")
    private String sampleCode;
    @ApiModelProperty("数采-db,mdb文件名称")
    private String dbFileName;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.ruoyi.device.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.device.pojo.Device;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceDto extends Device {
    @ApiModelProperty(value = "管理人")
    private String equipmentManagerUser;
    @ApiModelProperty(value = "所属部门")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String laboratoryName;
    @ApiModelProperty(value = "检验项目")
    private String insProductItem;
    @ApiModelProperty(value = "管理人姓名")
    private String equipmentManagerName;
    @ApiModelProperty(value = "被授权人姓名")
    private String authorizedPersonName;
    @ApiModelProperty(value = "核准证书编号")
    private String calibrateNo;
    @ApiModelProperty(value = "最近校准日期")
    private LocalDateTime lastCalibrationDateTwo;
    @ApiModelProperty(value = "下次校准日期")
    private LocalDateTime nextCalibrationDateTwo;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExaminePlanDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-17 æ˜ŸæœŸäºŒ 15:34:44
 * Description:
 */
@Data
public class DeviceExaminePlanDetailsDto extends DeviceExaminePlanDetails {
    @ApiModelProperty("序号")
    private Integer index;
    @ApiModelProperty("记录状态, 0: æœªå¼€å§‹, 1:待批准, 2:通过, 3:不通过")
    private Integer recordStatus;
    @ApiModelProperty("对比状态, 0: æœªå¼€å§‹, 1:待批准, 2:通过, 3:不通过")
    private Integer recordContrastStatus;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExaminePlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceExaminePlan;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/12/16
 */
@Data
public class DeviceExaminePlanDto extends DeviceExaminePlan {
    @ApiModelProperty("编制人")
    private String writeName;
    @ApiModelProperty("批准人")
    private String ratifyName;
    @ApiModelProperty("编制时间")
    private String writeTimeStr;
    @ApiModelProperty("批准时间")
    private String ratifyTimeStr;
    @ApiModelProperty("年度")
    private String year;
    private List<DeviceExaminePlanDetails> examinePlanDetailsList;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExamineRecordContrastDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-17 æ˜ŸæœŸäºŒ 13:59:37
 * Description:
 */
@Data
public class DeviceExamineRecordContrastDetailsDto extends DeviceExamineRecordContrastDetails {
    @ApiModelProperty("序号")
    private Integer index;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExamineRecordContrastDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceExamineRecordContrast;
import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/12/16
 */
@Data
public class DeviceExamineRecordContrastDto extends DeviceExamineRecordContrast {
    @ApiModelProperty("核查记录对比详情")
    private List<DeviceExamineRecordContrastDetails> recordContrastDetailsList;
    @ApiModelProperty("A设备名称")
    private String aDeviceName;
    @ApiModelProperty("A设备编号")
    private String aDeviceNumber;
    @ApiModelProperty("b设备名称")
    private String bDeviceName;
    @ApiModelProperty("b设备编号")
    private String bDeviceNumber;
    @ApiModelProperty("c设备名称")
    private String cDeviceName;
    @ApiModelProperty("c设备编号")
    private String cDeviceNumber;
    @ApiModelProperty("核查日期")
    private String checkerTimeStr;
    @ApiModelProperty("审核日期")
    private String reviewTimeStr;
    @ApiModelProperty("实验室")
    private String labName;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExamineRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceExamineRecord;
import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/12/16
 */
@Data
public class DeviceExamineRecordDto extends DeviceExamineRecord {
    @ApiModelProperty("核查记录详情")
    private List<DeviceExamineRecordDetail> recordDetailList;
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("设备编号")
    private String deviceNumber;
    @ApiModelProperty("最后一次修改日期")
    private String updateTimeStr;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceExport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.Device;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-10 æ˜ŸæœŸäºŒ 15:55:29
 * Description:
 */
@Data
public class DeviceExport extends Device {
    @ApiModelProperty("管理人")
    private String equipmentManagerName;
    @ApiModelProperty("序号")
    private Integer index;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2025/4/17
 */
@Data
public class DeviceImpowerDetailsDto extends DeviceImpowerDetails {
    @ApiModelProperty("序号")
    private Integer index;
    @ApiModelProperty("仪器设备名称")
    private String deviceName;
    @ApiModelProperty("仪器设备型号")
    private String specificationModel;
    @ApiModelProperty("仪器编号")
    private String managementNumber;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceImpower;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2025/4/17
 */
@Data
public class DeviceImpowerDto extends DeviceImpower {
    @ApiModelProperty("详情")
    private List<DeviceImpowerDetailsDto> deviceImpowerDetails;
    @ApiModelProperty("授权日期中文")
    private String auditDateCH;
    @ApiModelProperty("授权日期英文")
    private String auditDateEN;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceInspectionRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.device.pojo.DeviceInspectionRecord;
import com.ruoyi.device.pojo.DeviceInspectionRecordDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Author: yuan
 * Date: 2024-12-16 æ˜ŸæœŸä¸€ 17:23:22
 * Description:
 */
@Data
public class DeviceInspectionRecordDto extends DeviceInspectionRecord {
    @TableField(exist = false)
    @ApiModelProperty("测试详情内容")
    private List<DeviceInspectionRecordDetails> details;
    @ApiModelProperty("测试时间")
    private String testDateString;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceInstructionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceInstruction;
import com.ruoyi.device.pojo.OperationInstruction;
import lombok.Data;
import java.util.List;
@Data
public class DeviceInstructionDto extends DeviceInstruction {
    private List<OperationInstruction> feTempHumRecordList;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2025/4/17
 */
@Data
public class DeviceMaintenanceDto extends DeviceMaintenance {
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("设备编号")
    private String managementNumber;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-17 æ˜ŸæœŸäºŒ 9:26:48
 * Description: è®¾å¤‡ä¿å…»è®¡åˆ’详情
 */
@Data
public class DeviceMaintenancePlanDetailsDto extends DeviceMaintenancePlanDetails {
    @ApiModelProperty("序号")
    private Integer index;
    @ApiModelProperty("仪器设备名称")
    private String deviceName;
    @ApiModelProperty("仪器设备编号")
    private String deviceNumber;
    @ApiModelProperty("仪器设备型号")
    private String specificationModel;
    @ApiModelProperty("仪器编号")
    private String managementNumber;
    @ApiModelProperty("归属实验室")
    private String storagePoint;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMaintenancePlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.device.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Author: yuan
 * Date: 2024-12-16 æ˜ŸæœŸä¸€ 18:26:59
 * Description:
 */
@Data
public class DeviceMaintenancePlanDto extends DeviceMaintenancePlan {
    @ApiModelProperty("设备保养计划详情")
    @TableField(exist = false)
    private List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails;
    @ApiModelProperty("编制日期")
    private String datePreparationStr;
    @ApiModelProperty("审核日期")
    private String auditDateStr;
    @ApiModelProperty("设备Id")
    private Integer deviceId;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMetricRecordAndMaintenanceDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.ruoyi.device.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-13 æ˜ŸæœŸäº” 10:43:06
 * Description: ä»ªå™¨è®¾å¤‡æ¡£æ¡ˆå¡ä¸­æ˜¾ç¤ºçš„设备校准记录和维护记录的列表对象
 */
@Data
public class DeviceMetricRecordAndMaintenanceDto {
    @ApiModelProperty("序号")
    private Integer index;
    // æ ¡å‡†è¡¨ä¸­çš„æ•°æ®
    @ApiModelProperty("校准日期")
    private String calibrationDateString;
    @ApiModelProperty("证书标号")
    private String certificateNumber;
    @ApiModelProperty("校准有效日期")
    private String validityDateString;
    @ApiModelProperty("判定")
    private String judgement;
    // ç»´ä¿®è®°å½•表中的数据
    @ApiModelProperty("维修日期")
    private String maintenanceDateString;
    @ApiModelProperty("处理方式")
    private String handlingMethod;
    @ApiModelProperty("备注")
    private String comments;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceMetricRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceMetricRecord;
import com.ruoyi.device.pojo.DeviceMetricsCopy;
import lombok.Data;
import java.util.List;
@Data
public class DeviceMetricRecordDto extends DeviceMetricRecord {
    private List<DeviceMetricsCopy> deviceMetricsCopyList;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceOperationInstructionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.OperationInstruction;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceOperationInstructionDto extends OperationInstruction {
    @ApiModelProperty("申请编号")
    private String applicationNumber;
    @ApiModelProperty("申请部门")
    private String applicationDepartment;
    @ApiModelProperty("责任人")
    private String personLiable;
    @ApiModelProperty("受控申请说明")
    private String controlledApplicationDescription;
    @ApiModelProperty("管理编号")
    private String deviceNumber;
    @ApiModelProperty("型号")
    private String deviceModel;
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("上传人")
    private String uploaderName;
    @ApiModelProperty("审批人")
    private String approverName;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceRecordDto extends DeviceRecord {
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("设备编号")
    private String managementNumber;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceScrappedDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceScrapped;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-17 æ˜ŸæœŸäºŒ 18:34:17
 * Description:
 */
@Data
public class DeviceScrappedDto extends DeviceScrapped {
    @ApiModelProperty("申请时间")
    private String applicantDateStr;
    @ApiModelProperty("部门负责人填写时间")
    private String departmentHeadDateStr;
    @ApiModelProperty("计量室人填写时间")
    private String meteringRoomDateStr;
    @ApiModelProperty("批准人填写时间")
    private String approverDateStr;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceStateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceState;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceStateDto extends DeviceState {
    @ApiModelProperty(value = "设备名称")
    private String deviceName;
    @ApiModelProperty(value = "规格型号")
    private String specificationModel;
    @ApiModelProperty(value = "管理编号")
    private String managementNumber;
    @ApiModelProperty(value = "操作日期 yyyy-MM-dd")
    private String submitDateString;
    @ApiModelProperty("负责人审批日期 yyyy-MM-dd")
    private String departmentDateString;
    @ApiModelProperty("计量室审批日期 yyyy-MM-dd")
    private String measuringRoomDateString;
    @ApiModelProperty("批准日期 yyyy-MM-dd")
    private String approvalDateString;
    @ApiModelProperty(value = "设备类型")
    private String largeCategory;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDetailsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-20 æ˜ŸæœŸäº” 15:05:02
 * Description:
 */
@Data
public class DeviceTraceabilityManagementDetailsDto extends DeviceTraceabilityManagementDetails {
    @ApiModelProperty("序号")
    private Integer index;
    @ApiModelProperty("仪器设备名称")
    private String deviceName;
    @ApiModelProperty("仪器设备型号")
    private String specificationModel;
    @ApiModelProperty("仪器编号")
    private String managementNumber;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceTraceabilityManagementDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Author: yuan
 * Date: 2024-12-20 æ˜ŸæœŸäº” 14:30:45
 * Description:
 */
@Data
public class DeviceTraceabilityManagementDto extends DeviceTraceabilityManagement {
    @ApiModelProperty("设备量值溯源计划详情")
    private List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails;
    @ApiModelProperty("编制日期")
    private String datePreparationStr;
    @ApiModelProperty("审核日期")
    private String auditDateStr;
    @ApiModelProperty("设备Id")
    private Integer deviceId;
}
cnas-device/src/main/java/com/ruoyi/device/dto/DocumentExportWordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.device.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-13 æ˜ŸæœŸäº” 8:45:34
 * Description: ç”¨äºŽä»ªå™¨è®¾å¤‡æ¡£æ¡ˆå¡çš„导出
 */
@Data
public class DocumentExportWordDto {
    // è®¾å¤‡æ¡£æ¡ˆå·¦åˆ—表
    @ApiModelProperty("序号")
    private Integer index1;
    @ApiModelProperty("档案名称")
    private String name1;
    @ApiModelProperty("份数")
    private Integer quantity1;
    @ApiModelProperty("页码")
    private Integer pageCount1;
    @ApiModelProperty("归档日期")
    private String archiveDateString1;
    // è®¾å¤‡æ¡£æ¡ˆå³åˆ—表
    @ApiModelProperty("序号")
    private Integer index2;
    @ApiModelProperty("档案名称")
    private String name2;
    @ApiModelProperty("份数")
    private Integer quantity2;
    @ApiModelProperty("页码")
    private Integer pageCount2;
    @ApiModelProperty("归档日期")
    private String archiveDateString2;
}
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceMaintenanceExport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.device.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
@Data
public class DeviceMaintenanceExport {
    @ColumnWidth(20)
    @ExcelProperty("设备名称")
    private String deviceName;
    @ColumnWidth(20)
    @ExcelProperty("流程编号")
    private String deviceNumber;
    @ColumnWidth(20)
    @ExcelProperty("管理编号")
    private String managementNumber;
    @ColumnWidth(50)
    @ExcelProperty("维护内容")
    private String content;
    @ColumnWidth(20)
    @ExcelProperty("维护时间")
    private String date;
    @ColumnWidth(20)
    @ExcelProperty("下次维护时间")
    private String nextDate;
    @ColumnWidth(20)
    @ExcelProperty("维护类型")
    private String maintenanceType;
    @ColumnWidth(20)
    @ExcelProperty("维护人")
    private String name;
    @ColumnWidth(50)
    @ExcelProperty("备注")
    private String comments;
}
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceRecordExportWord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.excel;
import com.ruoyi.device.pojo.DeviceRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-10 æ˜ŸæœŸäºŒ 17:19:22
 * Description:
 */
@Data
public class DeviceRecordExportWord extends DeviceRecord {
    @ApiModelProperty("使用前0代表不正常1代表正常")
    private String useBeforeString;
    @ApiModelProperty("使用后0代表不正常1代表正常")
    private String useAfterString;
    @ApiModelProperty("操作时间 String yyyy-MM-dd")
    private String operationDate;
    @ApiModelProperty("使用开始日期 String yyyy-MM-dd \n HH:mm:ss")
    private String useStartDateString;
    @ApiModelProperty("使用结束日期 String yyyy-MM-dd \n HH:mm:ss")
    private String useEndDateString;
}
cnas-device/src/main/java/com/ruoyi/device/excel/DeviceStateExport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.device.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class DeviceStateExport {
    @ExcelProperty(value = "设备名称")
    private String deviceName;
    @ExcelProperty(value = "规格型号")
    private String specificationModel;
    @ExcelProperty(value = "管理编号")
    private String managementNumber;
    @ExcelProperty("设备状态")
    private String deviceStatus;
    @ExcelProperty("停用启用理由")
    private String reason;
    @ExcelProperty("提交人")
    private String createUser;
    @ExcelProperty("提交日期")
    private LocalDateTime createTime;
    @ExcelProperty("当前状态")
    private String currentState;
    @ExcelProperty("当前负责人")
    private String currentResponsible;
}
cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceCalibrationPlanDetailUpload.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.device.excel.upload;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2024/12/20
 */
@Data
public class DeviceCalibrationPlanDetailUpload {
    @ApiModelProperty("设备名称及型号")
    private String deviceName;
    @ApiModelProperty("设备数量")
    private String deviceAmount;
    @ApiModelProperty("仪器编号")
    private String deviceNumber;
    @ApiModelProperty("检定单位")
    private String verificationUnit;
    @ApiModelProperty("检定周期")
    private String verificationCycles;
    @ApiModelProperty("最近检定时间")
    private String lastDate;
    @ApiModelProperty("本年计划校准时间")
    private String planDate;
    @ApiModelProperty("备注")
    private String remark;
}
cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceExaminePlanUpload.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.ruoyi.device.excel.upload;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @Author zhuo
 * @Date 2024/12/20
 */
@Data
public class DeviceExaminePlanUpload {
    @ApiModelProperty("设备编号")
    private String deviceNumber;
    @ApiModelProperty("计划名称")
    private String deviceName;
    @ApiModelProperty("核查时间")
    private String checkTime;
    @ApiModelProperty("核查指标")
    private String checkIndex;
    @ApiModelProperty("核查方法")
    private String checkMethod;
    @ApiModelProperty("结果如何判定")
    private String howResults;
    @ApiModelProperty("核查责任人")
    private String checkChargerUser;
    @ApiModelProperty("备注")
    private String remark;
}
cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.CollectBridge;
/**
 * æ•°å­—电桥采集
 *
 * @author zhuo
 * @since 2025-02-19
 */
public interface CollectBridgeMapper extends BaseMapper<CollectBridge> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DataConfigMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.device.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.device.dto.DeviceConfigDtoPage;
import com.ruoyi.device.pojo.DataConfig;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-07-13 12:23:00
 */
public interface DataConfigMapper extends BaseMapper<DataConfig> {
    List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId);
    List<Integer> deleteDataConfig();
    /**
     * æŸ¥è¯¢äº†ç»‘定但是没有配置的检验项
     * @param deviceId
     * @return
     */
    IPage<DataConfig> getNoConfigProduct(@Param("page") Page page, @Param("deviceId") Integer deviceId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAcceptanceFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceAcceptanceFile;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备)附件表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:26
 */
public interface DeviceAcceptanceFileMapper extends BaseMapper<DeviceAcceptanceFile> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAcceptanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.device.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.device.pojo.DeviceAcceptance;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备) Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:14
 */
public interface DeviceAcceptanceMapper extends BaseMapper<DeviceAcceptance> {
    /**
     * è®¾å¤‡éªŒæ”¶åˆ—表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, @Param("ew") QueryWrapper<DeviceAcceptance> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceAccidentReportMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.device.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.device.dto.DeviceAccidentReportDto;
import com.ruoyi.device.pojo.DeviceAccidentReport;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡äº‹æ•…报告单 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 06:31:12
 */
public interface DeviceAccidentReportMapper extends BaseMapper<DeviceAccidentReport> {
    /**
     * è®¾å¤‡äº‹æ•…报告列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceAccidentReport> pageDeviceAccidentReport(Page page, @Param("ew") QueryWrapper<DeviceAccidentReport> ew);
    /**
     * æŸ¥è¯¢è®¾å¤‡äº‹æ•…报告详情
     * @param accidentReportId è®¾å¤‡äº‹æ•…报告id
     * @return
     */
    DeviceAccidentReportDto selectDeviceAccidentReportById(Integer accidentReportId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBorrowMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.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.device.pojo.DeviceBorrow;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 10:53:51
 */
public interface DeviceBorrowMapper extends BaseMapper<DeviceBorrow> {
    IPage<DeviceBorrow> deviceBorrowPage(Page page, @Param("ew")QueryWrapper<DeviceBorrow> ew);
    List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceBreakdownMaintenanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.device.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.device.dto.DeviceBreakdownMaintenance;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ•…障维修表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 04:50:57
 */
public interface DeviceBreakdownMaintenanceMapper extends BaseMapper<DeviceBreakdownMaintenance> {
    /**
     * è®¾å¤‡æ•…障维修列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceBreakdownMaintenance> pageDeviceBreakdownMaintenance(Page page, @Param("ew") QueryWrapper<DeviceBreakdownMaintenance> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceCalibrationPlanDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.device.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.device.pojo.DeviceCalibrationPlanDetail;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:29
 */
public interface DeviceCalibrationPlanDetailMapper extends BaseMapper<DeviceCalibrationPlanDetail> {
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, @Param("ew") QueryWrapper<DeviceCalibrationPlanDetail> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceCalibrationPlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.device.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.device.dto.DeviceCalibrationPlanDto;
import com.ruoyi.device.pojo.DeviceCalibrationPlan;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’主表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:17
 */
public interface DeviceCalibrationPlanMapper extends BaseMapper<DeviceCalibrationPlan> {
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, @Param("ew") QueryWrapper<DeviceCalibrationPlan> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceDocuments;
import org.apache.ibatis.annotations.Mapper;
/**
 * è®¾å¤‡æ¡£æ¡ˆ
 */
@Mapper
public interface DeviceDocumentsMapper extends BaseMapper<DeviceDocuments> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExaminePlanDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.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.device.dto.DeviceExaminePlanDetailsDto;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:16
 */
public interface DeviceExaminePlanDetailsMapper extends BaseMapper<DeviceExaminePlanDetails> {
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceExaminePlanDetailsDto> pageDeviceExaminePlanDetail(Page page, @Param("ew") QueryWrapper<DeviceExaminePlanDetails> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExaminePlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.device.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.device.dto.DeviceExaminePlanDto;
import com.ruoyi.device.pojo.DeviceExaminePlan;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’主表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:04
 */
public interface DeviceExaminePlanMapper extends BaseMapper<DeviceExaminePlan> {
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceExaminePlanDto> deviceExaminePlanDetailsMapper(Page page, @Param("ew") QueryWrapper<DeviceExaminePlan> ew);
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     * @param deviceExaminePlanId è®¾å¤‡æ ¸æŸ¥è®¡åˆ’id
     * @return
     */
    DeviceExaminePlanDto selectExamineExaminePlanDto(@Param("deviceExaminePlanId") Integer deviceExaminePlanId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordContrastDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•对比详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:57
 */
public interface DeviceExamineRecordContrastDetailsMapper extends BaseMapper<DeviceExamineRecordContrastDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordContrastMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.DeviceExamineRecordContrastDto;
import com.ruoyi.device.pojo.DeviceExamineRecordContrast;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•对比表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:43
 */
public interface DeviceExamineRecordContrastMapper extends BaseMapper<DeviceExamineRecordContrast> {
    /**
     * æŸ¥è¯¢æ ¸æŸ¥å¯¹æ¯”记录
     * @param planDetailsId
     * @return
     */
    DeviceExamineRecordContrastDto getExamineRecordContrast(Integer planDetailsId);
    /**
     * æŸ¥è¯¢å¯¹æ¯”记录用于导出
     * @param planDetailsId
     * @return
     */
    DeviceExamineRecordContrastDto selectExamineRecordContrastDto(@Param("planDetailsId") Integer planDetailsId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:15:11
 */
public interface DeviceExamineRecordDetailMapper extends BaseMapper<DeviceExamineRecordDetail> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExamineRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.DeviceExamineRecordDto;
import com.ruoyi.device.pojo.DeviceExamineRecord;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:28
 */
public interface DeviceExamineRecordMapper extends BaseMapper<DeviceExamineRecord> {
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¸æŸ¥è®°å½•
     * @param planDetailsId
     * @return
     */
    DeviceExamineRecordDto getExamineRecord(Integer planDetailsId);
    /**
     * å¤æ ¸æ ¸æŸ¥è®°å½•
     * @param planDetailsId å¤æ ¸æ ¸æŸ¥è®°å½•id
     * @return
     */
    DeviceExamineRecordDto selectReviewExamineRecordDto(@Param("planDetailsId") Integer planDetailsId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceExternalApplyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.device.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.device.pojo.DeviceExternalApply;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * åˆ©ç”¨å¤–部设备申请表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 10:28:43
 */
public interface DeviceExternalApplyMapper extends BaseMapper<DeviceExternalApply> {
    /**
     * åˆ©ç”¨å¤–部设备申请列表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceExternalApply> pageDeviceExternalApply(Page page, @Param("ew") QueryWrapper<DeviceExternalApply> ew);
    /**
     * å¯¼å‡ºæŸ¥è¯¢åˆ©ç”¨å¤–部设备申请
     * @param externalApplyId å¤–部设备申请表id
     * @return
     */
    DeviceExternalApply selectDeviceExternalById(@Param("externalApplyId") Integer externalApplyId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.device.mapper;
import com.ruoyi.device.dto.DeviceImpowerDetailsDto;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
public interface DeviceImpowerDetailsMapper extends BaseMapper<DeviceImpowerDetails> {
    /**
     * æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è¯¦æƒ…
     * @param impowerId
     * @return
     */
    List<DeviceImpowerDetailsDto> deviceImpowerDetailsList(@Param("impowerId") Integer impowerId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceImpowerMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.ruoyi.device.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.device.dto.DeviceImpowerDto;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceImpower;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表 Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
public interface DeviceImpowerMapper extends BaseMapper<DeviceImpower> {
    /**
     * åˆ†é¡µæŸ¥è¯¢ä½¿ç”¨æŽˆæƒ
     * @param page
     * @param deviceImpowerDtoQueryWrapper
     * @return
     */
    IPage<DeviceImpower> selectDeviceParameterPage(@Param("page") Page page, @Param("ew") QueryWrapper<DeviceImpowerDto> deviceImpowerDtoQueryWrapper);
    /**
     * æ ¹æ®id查询设备使用授权
     * @param traceabilityManagementId
     * @return
     */
    DeviceTraceabilityManagementDto selectDeviceTraceabilityManagementById(@Param("traceabilityManagementId") Integer traceabilityManagementId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceInspectionRecordDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceInspectionRecordDetails;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:27:32
 */
public interface DeviceInspectionRecordDetailsMapper extends BaseMapper<DeviceInspectionRecordDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceInspectionRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.device.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.device.dto.DeviceInspectionRecordDto;
import com.ruoyi.device.pojo.DeviceInspectionRecord;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:25:14
 */
public interface DeviceInspectionRecordMapper extends BaseMapper<DeviceInspectionRecord> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ç‚¹æ£€è®°å½•
     * @param page
     * @param queryWrappers
     * @return
     */
    IPage<DeviceInspectionRecord> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceInspectionRecordDto> queryWrappers);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceLogMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DeviceLogMapper extends BaseMapper<DeviceLog> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.device.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.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
 */
@Mapper
public interface DeviceMaintenanceMapper extends BaseMapper<DeviceMaintenance> {
    /**
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @return
     */
    IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(@Param("page") Page page, @Param("ew") QueryWrapper<DeviceMaintenanceDto> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
public interface DeviceMaintenancePlanDetailsMapper extends BaseMapper<DeviceMaintenancePlanDetails> {
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿å…»è¯¦æƒ…
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     */
    List<DeviceMaintenancePlanDetailsDto> deviceInspectionRecordDetailsList(@Param("maintenancePlanId") Integer maintenancePlanId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.device.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.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
public interface DeviceMaintenancePlanMapper extends BaseMapper<DeviceMaintenancePlan> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param page å½“前页
     * @param queryWrappers æŸ¥è¯¢æ¡ä»¶
     * @return
     */
    IPage<DeviceMaintenancePlan> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
    /**
     * æ ¹æ®ä¿å…»è®¡åˆ’id查询设备保养计划
     * @param maintenancePlanId ä¿å…»è®¡åˆ’id
     * @return
     */
    DeviceMaintenancePlanDto selectMaintenancePlanById(@Param("maintenancePlanId") Integer maintenancePlanId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.ruoyi.device.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.device.dto.DeviceDto;
import com.ruoyi.device.pojo.Device;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * è®¾å¤‡(Device)表数据库访问层
 */
public interface DeviceMapper extends BaseMapper<Device> {
    IPage<Device> selectDeviceParameter(Page page, QueryWrapper<Device> ew);
    List<Device> selectEquipmentOverview(Page page, QueryWrapper<Device> ew);
    //获取被授权人
    List<Device> authorizedPerson();
    //查询
    List<Device> search(@Param(value = "status") Integer status, @Param(value = "deviceName") String deviceName,
                        @Param(value = "specificationModel") String specificationModel, @Param(value = "largeCategory") String largeCategory);
    //获取图片数据
    void selectDeviceImage(@Param(value = "name") String name ,@Param(value = "id") Integer id);
    IPage<DeviceDto> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceDto> queryWrappers, @Param("laboratoryNameIsNull") Boolean laboratoryNameIsNull);
    List<Map<String, Object>> getInspectionItemSubclass(@Param("id") Integer id);
    List<Map<String, Object>> treeDevice(@Param("deviceName") String deviceName);
    DeviceDto selectDeviceByCode(Integer id);
    /**
     * æŸ¥è¯¢åˆ°è¾¾æ ¡å‡†æœ‰æ•ˆæœŸçš„设备-提前5天
     * @return
     */
    List<Device> selectOverdueDevice();
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceMetric;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DeviceMetricMapper extends BaseMapper<DeviceMetric> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceMetricRecord;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:01
 */
public interface DeviceMetricRecordMapper extends BaseMapper<DeviceMetricRecord> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricsCopyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceMetricsCopy;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• - æ ¡å‡†æ¡ç›® Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:11
 */
public interface DeviceMetricsCopyMapper extends BaseMapper<DeviceMetricsCopy> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.ruoyi.device.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.device.dto.DeviceRecordDto;
import com.ruoyi.device.pojo.DeviceRecord;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * cnas设备使用记录表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
public interface DeviceRecordMapper extends BaseMapper<DeviceRecord> {
    IPage<DeviceRecordDto> deviceRecordPage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("sampleCode") String sampleCode, @Param("managementNumber") String managementNumber, @Param("userId") Integer userId);
    /**
     * æŸ¥è¯¢æœªå¡«å†™çš„设备
     * @return
     */
    List<DeviceRecordDto> selectNotFilled();
    /**
     * æŸ¥è¯¢å¯¼å‡ºè®¾å¤‡ä½¿ç”¨è®°å½•
     * @param deviceId
     * @param exportDate
     * @return
     */
    List<DeviceRecord> selectExportList(@Param("deviceId") Integer deviceId, @Param("exportDate") String exportDate);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceScrappedMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.device.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.device.dto.DeviceScrappedDto;
import com.ruoyi.device.pojo.DeviceScrapped;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡æŠ¥åºŸç”³è¯·è¡¨ Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 01:53:47
 */
public interface DeviceScrappedMapper extends BaseMapper<DeviceScrapped> {
    /**
     * è®¾å¤‡æŠ¥åºŸç”³è¯·åˆ—表
     * @param page
     * @param ew
     * @return
     */
    IPage<DeviceScrapped> pageDeviceScrapped(Page page, @Param("ew") QueryWrapper<DeviceScrapped> ew);
    /**
     * æ ¹æ®id查询设备报废申请
     * @param scrappedId
     * @return
     */
    DeviceScrappedDto selectDeviceScrappedById(@Param("scrappedId") Integer scrappedId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.device.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.device.dto.DeviceStateDto;
import com.ruoyi.device.pojo.DeviceState;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡åœç”¨/启用 Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2024-09-26 09:51:40
 */
public interface DeviceStateMapper extends BaseMapper<DeviceState> {
    IPage<DeviceStateDto> getDeviceStatePage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("processNumber") String processNumber);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementDetailsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDetailsDto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:58
 */
public interface DeviceTraceabilityManagementDetailsMapper extends BaseMapper<DeviceTraceabilityManagementDetails> {
    /**
     * æ ¹æ®æº¯æºè®¡åˆ’id查询溯源计划详情
     * @param traceabilityManagementId æº¯æºè®¡åˆ’id
     * @return æº¯æºè®¡åˆ’详情
     */
    List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetailsList(@Param("traceabilityManagementId") Integer traceabilityManagementId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.device.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.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:44
 */
public interface DeviceTraceabilityManagementMapper extends BaseMapper<DeviceTraceabilityManagement> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     * @param page
     * @param queryWrappers
     * @return
     */
    IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> ew);
    /**
     * æ ¹æ®id查询设备量值溯源计划
     * @param traceabilityManagementId
     * @return
     */
    DeviceTraceabilityManagementDto selectDeviceTraceabilityManagementById(@Param("traceabilityManagementId") Integer traceabilityManagementId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/InstructionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.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.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.pojo.DeviceInstruction;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
 * <p>
 * ä½œä¸šæŒ‡å¯¼ä¹¦æ·»åŠ å—æŽ§æ–‡ä»¶è¡¨ Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2024-12-04 10:29:18
 */
public interface InstructionMapper extends BaseMapper<DeviceInstruction> {
    IPage<DeviceOperationInstructionDto> pageByPageQueryOfHomeworkInstructions(Page page, @Param("ew") QueryWrapper<DeviceOperationInstructionDto> ew);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/OperationInstructionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.pojo.OperationInstruction;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡ - ä½œä¸šæŒ‡å¯¼ä¹¦ æ·»åŠ å—æŽ§æ–‡ä»¶ å­ Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2024-12-04 10:43:32
 */
public interface OperationInstructionMapper extends BaseMapper<OperationInstruction> {
    List<DeviceOperationInstructionDto> homeworkGuidebookEditor(Integer instructionId);
}
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.mqtt;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
@Component
public class MQBean {
    @Bean("mqClient") // å¯åЍWEB服务器的时候调用此方法初始化
    public MQClient myMQTTClient(){
        MQClient mqClient = new MQClient();
        return mqClient;
    }
}
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.ruoyi.device.mqtt;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.device.service.CollectBridgeService;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@Component
@Slf4j
public class MQCallback<component> implements MqttCallback {
    private MQClient mqClient; // MQTT连接数据
    private MQConfig mqConfig; // yml配置数据
    private static MQCallback mqCallback;
    @Resource
    private CollectBridgeService collectBridgeService;
    @PostConstruct
    public void init() {
        mqCallback = this;
         // åˆä½¿åŒ–时将已静态化的configParam实例化
        mqCallback.collectBridgeService = this.collectBridgeService;
    }
    public MQCallback(MQClient mqClient, MQConfig mqConfig) {
        this.mqClient = mqClient;
        this.mqConfig = mqConfig;
    }
    /** è¿žæŽ¥ä¸¢å¤±åŽï¼Œä¸€èˆ¬åœ¨è¿™é‡Œé¢è¿›è¡Œé‡è¿ž **/
    @SneakyThrows
    @Override
    public void connectionLost(Throwable cause) {
        /** è¿žæŽ¥ä¸¢å¤±åŽï¼Œä¸€èˆ¬åœ¨è¿™é‡Œé¢è¿›è¡Œé‡è¿ž **/
        if (mqClient != null) {
            while (true) {
                try {
                    log.info("==============》》》[MQTT] è¿žæŽ¥ä¸¢å¤±ï¼Œå°è¯•重连...");
                    MQClient mqttPushClient = new MQClient();
                    mqttPushClient.connect(mqConfig);
                    if (mqClient.getClient().isConnected()) {
                        log.info("=============>>重连成功");
                    }
                    break;
                } catch (Exception e) {
                    log.error("=============>>>[MQTT] è¿žæŽ¥æ–­å¼€ï¼Œé‡è¿žå¤±è´¥ï¼<<=============");
                    continue;
                }
            }
        }
        log.info(cause.getMessage());
    }
    /**
     * MQTT服务器向WEB服务器发送的数据会执行到这里面,官方话称为:订阅后的消息
     * @param topic ä¸»é¢˜ï¼šä¹Ÿç§°ä¸ºåº•层网关唯一标识
     * @param message ä¿¡æ¯
     * @throws Exception æŠ¥é”™
     */
    @Override
    public void messageArrived(String topic, MqttMessage message) throws Exception {
        try {
            String parse = new String(message.getPayload());
            JSONObject jsonObject = JSONObject.parseObject(parse);
            // å¡«å……采集数据
            mqCallback.collectBridgeService.addBridgeValue(jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("============》》接收消息主题异常 : " + e.getMessage());
        }
    }
    /**
     * WEB服务器向MQTT服务器发送的数据会执行到这里面
     * å®˜æ–¹è¯ç§°ä¸ºï¼šå‘布后会执行到这里
     * @param token è¿žæŽ¥token
     */
    @Override
    public void deliveryComplete(IMqttDeliveryToken token) {
//        log.info("==========发布信息={}==========", token.isComplete());
    }
}
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.ruoyi.device.mqtt;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class MQClient {
    private static MqttClient client;
    public static MqttClient getClient() {
        return client;
    }
    public static void setClient(MqttClient client) {
        MQClient.client = client;
    }
    /**
     * WEB服务器连接MQTT服务器的配置
     * @param userName è´¦å·
     * @param password å¯†ç 
     * @param outTime è¶…æ—¶æ—¶é—´
     * @param KeepAlive å¿ƒè·³æ£€æµ‹æ—¶é—´
     * @return
     */
    private MqttConnectOptions getOption(String userName, String password, int outTime, int KeepAlive) {
        MqttConnectOptions option = new MqttConnectOptions();
        // è®¾ç½®æ˜¯å¦æ¸…空session,false表示服务器会保留客户端的连接记录,true表示每次连接到服务器都以新的身份连接
        option.setCleanSession(true);
        // è®¾ç½®è¿žæŽ¥çš„用户名
        option.setUserName(userName);
        // è®¾ç½®è¿žæŽ¥çš„密码
        option.setPassword(password.toCharArray());
        // è®¾ç½®è¶…æ—¶æ—¶é—´ å•位为秒
        option.setConnectionTimeout(outTime);
        // è®¾ç½®ä¼šè¯å¿ƒè·³æ—¶é—´ å•位为秒 æœåŠ¡å™¨ä¼šæ¯éš”(1.5*keepTime)秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
        option.setKeepAliveInterval(KeepAlive);
        // setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息
        // option.setWill(topic, "close".getBytes(), 2, true);
        //设置最大速度
        option.setMaxInflight(1000);
        log.info("================>>>MQTT连接认证成功<<======================");
        return option;
    }
    /**
     * WEB服务器连接MQTT服务器函数
     * @param mqttConfig yml中MQTT的配置
     */
    public void connect(MQConfig mqttConfig) throws MqttException {
        client = new MqttClient(mqttConfig.getUrl(), mqttConfig.getClientId(), new MemoryPersistence());
        MqttConnectOptions options = getOption(mqttConfig.getUsername(), mqttConfig.getPassword(),
                mqttConfig.getTimeout(), mqttConfig.getKeepAlive());
        MQClient.setClient(client);
        //连接失败调用回调函数,重新连接
        client.setCallback(new MQCallback<Object>(this, mqttConfig));
        if (!client.isConnected()) {
            client.connect(options);
            // è®¢é˜…主题
            MQSubscribe.subscribe_0(mqttConfig.getSubscribe());
            log.info("================>>>MQTT连接成功<<======================");
        } else {// è¿™é‡Œçš„逻辑是如果连接不成功就重新连接
            client.disconnect();
            client.connect(options);
        }
    }
    /**
     * WEB服务器与MQTT服务器的断线重连
     * @throws Exception
     */
    public Boolean reConnect() throws Exception {
        Boolean isConnected = false;
        if (null != client) {
            client.connect();
            if (client.isConnected()) {
                isConnected = true;
            }
        }
        return isConnected;
    }
    /**
     * å¼‚常关闭服务,WEB服务器与MQTT服务器的断开连接函数
     */
    @SneakyThrows
    public void close(){
        client.close();
        client.disconnect();
        log.info("================>>异常关闭与mqtt服务器的连接<<======================");
    }
}
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.device.mqtt;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
public class MQConfig {
    /**
     * MQTT-服务端-IP
     */
    @Value("${mqtt.url}")
    private String url;
    /**
     * MQTT-服务端-用户名
     */
    @Value("${mqtt.username}")
    private String username;
    /**
     * MQTT-服务端-密码
     */
    @Value("${mqtt.password}")
    private String password;
    /**
     * è¶…æ—¶æ—¶é—´
     */
    @Value("${mqtt.timeout}")
    private int timeout;
    /**
     * å¿ƒè·³æ£€æµ‹æ—¶é—´
     */
    @Value("${mqtt.keepalive}")
    private int keepAlive;
    /**
     * å¿ƒè·³åŒ…级别
     */
    @Value("${mqtt.qos}")
    private int qos;
    /**
     * æœåŠ¡ç«¯è¿žæŽ¥è¶…æ—¶æ—¶é—´
     */
    @Value("${mqtt.completion-timeout}")
    private int completionTimeout;
    /**
     * clientId
     */
    @Value("${mqtt.clientId}")
    private String clientId;
    /**
     * è®¢é˜…主题
     */
    @Value("${mqtt.subscribe}")
    private String subscribe;
}
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQPublic.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.device.mqtt;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class MQPublic {
    /**
     * é€šä¿¡è´¨é‡qos为0:表示WEB服务器向MQTT服务器只发送一次,不管MQTT服务器有没有收到
     * WEB服务器向MQTT服务器发布数据,此方法封装了publish函数
     * @param topic å‘底层网关发送数据,官方话:称此为主题,向那个主题发送数据 ç½‘关:即主题,设备唯一标识
     * @param pushMessage WEB服务器向MQTT服务器发送的数据
     */
    public void publish_0(int qos, String topic, byte[] pushMessage) {
        publish(0, false, topic, pushMessage);
    }
    /**
     * é€šä¿¡è´¨é‡qos为1:表示WEB服务器向MQTT服务器发送数据,MQTT服务器一定会收到一次数据,如果MQTT服务器没有响应“收到数据”,那么WEB服务器就会一直发送数据
     * WEB服务器向MQTT服务器发布数据,调用此函数,此方法封装了publish函数,通信质量qos为1
     * @param topic å‘底层网关发送数据,官方话:称此为主题,向那个主题发送数据 ç½‘关:即主题,设备唯一标识
     * @param pushMessage WEB服务器向MQTT服务器发送的数据
     */
    public void publish_1(String topic, byte[] pushMessage) {
        publish(1, false, topic, pushMessage);
    }
    /**
     *通信质量qos为2:表示WEB服务器向MQTT服务器发送数据,两者会进行至少两次请求/响应流程,避免数据在传输中的丢失,但是相应的也会消耗计算机中的资源
     * WEB服务器向MQTT服务器发布数据,此方法封装了publish函数,通信质量:2
     * @param topic å‘底层网关发送数据,官方话:称此为主题,向那个主题发送数据 ç½‘关:即主题,设备唯一标识
     * @param pushMessage WEB服务器向MQTT服务器发送的数据
     */
    public void publish_2(String topic, byte[] pushMessage) {
        publish(2,false, topic, pushMessage);
    }
    /**
     * å‘布函数:WEB服务器向MQTT服务器发送数据
     *
     * @param qos é€šä¿¡è´¨é‡
     * @param retained é»˜è®¤ï¼šfalse-非持久化(是指一条消息消费完,就会被删除;持久化,消费完,还会保存在服务器中,当新的订阅者出现,继续给新订阅者消费)
     * @param topic å‘底层网关发送数据,官方话:称此为主题,向那个主题发送数据 ç½‘关:即主题,设备唯一标识
     * @param pushMessage WEB服务器向MQTT服务器发送的数据
     */
    public void publish(int qos, boolean retained, String topic, byte[] pushMessage) {
        MqttMessage message = new MqttMessage();
        message.setQos(qos);
        message.setRetained(retained);
        // å°†String[]数组转换为byte数组发送
        message.setPayload(pushMessage);
        MqttTopic mTopic = MQClient.getClient().getTopic(topic);
        if (null == mTopic) {
            log.error("===============>>>MQTT {} ä¸å­˜åœ¨<<=======================",topic);
        }
        MqttDeliveryToken token;
        try {
            token = mTopic.publish(message);
            token.waitForCompletion();
        } catch (MqttPersistenceException e) {
            e.printStackTrace();
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQSubscribe.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.device.mqtt;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.stereotype.Component;
@Component
public class MQSubscribe {
    /**
     * è®¢é˜…某个主题:MQTT服务器向WEB服务器发送数据
     *主题:也称为底层网关唯一标识
     * @param topic è®¾å¤‡ç¼–号,与底层交互的唯一标识
     * @param qos MQTT服务器向WEB服务器发送数据
     *            qos为0:只向WEB服务器发送一次;
     *            qos为1:至少向WEB服务器发送一次,接收方会响应一个报文;
     *            qos为2:两者会进行至少两次请求/响应流程,避免数据在传输中的丢失
     */
    private static void subscribe(String topic, int qos) {
        try {
            MQClient.getClient().subscribe(topic,qos);
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }
    /**
     * è®¢é˜…某个主题,通信质量:qos默认为0
     * ä¸»é¢˜ï¼šä¹Ÿç§°ä¸ºåº•层网关唯一标识
     * @param topic è®¾å¤‡ç¼–号,与底层交互的唯一标识
     */
    public static void subscribe_0(String topic) {
        subscribe(topic, 0);
    }
    /**
     * è®¢é˜…某个主题,通信质量:qos默认为1
     * ä¸»é¢˜ï¼šä¹Ÿç§°ä¸ºåº•层网关唯一标识
     * @param topic è®¾å¤‡ç¼–号,与底层交互的唯一标识
     */
    public void subscribe_1(String topic) {
        subscribe(topic, 1);
    }
    /**
     * è®¢é˜…某个主题,通信质量:qos默认为2
     * ä¸»é¢˜ï¼šä¹Ÿç§°ä¸ºåº•层网关唯一标识
     * @param topic è®¾å¤‡ç¼–号,与底层交互的唯一标识
     */
    public void subscribe_2(String topic) {
        subscribe(topic, 2);
    }
    public void OffSubscribe(String topic) {
        try {
            MQClient.getClient().unsubscribe(topic);
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * æ•°å­—电桥采集
 *
 * @author zhuo
 * @since 2025-02-19
 */
@Data
@TableName("collect_bridge")
public class CollectBridge {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("委托编号")
    private String entrustCode;
    @ApiModelProperty("采集值")
    private String collectValue;
    @ApiModelProperty("时间")
    private LocalDateTime collectDate;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DataConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.ruoyi.device.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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * <p>
 *
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-07-13 12:23:00
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("device_data_config")
@ApiModel(value = "DataConfig对象", description = "")
public class DataConfig implements Serializable {
    @ApiModelProperty("主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("公式")
    private String formula;
    @ApiModelProperty("参照X")
    private String referx;
    @ApiModelProperty("参照Y")
    private String refery;
    @ApiModelProperty("x")
    private String x;
    @ApiModelProperty("y")
    private String y;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("检验项分类")
    private String inspectionItemClass;
    @ApiModelProperty("检验项目")
    private String inspectionItem;
    @ApiModelProperty("检验项子项")
    private String inspectionItemSubclass;
    @TableField(exist = false)
    @ApiModelProperty("检验项子项")
    private String insProductItem;
    @ApiModelProperty("检验项id")
    private Integer structureItemParameterId;
    @ApiModelProperty("序号")
    private String serialNumber;
    @ApiModelProperty("别名")
    private String anotherName;
    @ApiModelProperty("匹配名称")
    private String matchingName;
    @TableField(select = false, exist = false)
    private Boolean isDevice;
    @TableField(select = false, exist = false)
    private String sample;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/Device.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
package com.ruoyi.device.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.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * è®¾å¤‡(Device)表对象
 */
@TableName(value = "device")
@Data
public class Device implements Serializable {
    @ApiModelProperty(value = "主键")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "设备名称")
    private String deviceName;
    @ApiModelProperty(value = "en设备名称")
    private String enDeviceName;
    @ApiModelProperty(value = "规格型号")
    private String specificationModel;
    @ApiModelProperty(value = "生产厂家")
    private String manufacturer;
    @ApiModelProperty(value = "出厂编号")
    private String factoryNo;
    @ApiModelProperty(value = "管理编号")
    private String managementNumber;
    @ApiModelProperty(value = "技术指标")
    private String technicalIndicators;
    @ApiModelProperty(value = "购置日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime acquisitionDate;
    @ApiModelProperty(value = "校准有效日期")
    private LocalDateTime activationDate;
    @ApiModelProperty(value = "管理人Id")
    private Integer equipmentManager;
    @ApiModelProperty(value = "存放点")
    private String storagePoint;
    @ApiModelProperty(value = "所属部门Id")
    private Integer subordinateDepartmentsId;
    @ApiModelProperty(value = "检验项目Id")
    private String insProductIds;
    @ApiModelProperty(value = "校准服务机构")
    private String calibrationServices;
    @ApiModelProperty(value = "最近校准日期")
    private LocalDateTime lastCalibrationDate;
    @ApiModelProperty(value = "下次校准日期")
    private LocalDateTime nextCalibrationDate;
    @ApiModelProperty(value = "设备类型")
    private String largeCategory;
    @ApiModelProperty(value = "单价")
    private BigDecimal unitPrice;
    @ApiModelProperty(value = "设备状态")
    private Integer deviceStatus;
    @ApiModelProperty(value = "校准周期(月)")
    private String calibrationDate;
    @ApiModelProperty(value = "图片上传")
    private String imageUpload;
    @ApiModelProperty(value = "图片备注")
    private String imageName;
    @ApiModelProperty(value = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty("数采-文件后缀")
    private String fileType;
    @ApiModelProperty("数采-采集地址")
    private String collectUrl;
    @ApiModelProperty("数采-存储地址")
    private String storageUrl;
    @ApiModelProperty("数采-设备IP")
    private String ip;
    @ApiModelProperty("数采-是否为数采设备")
    @TableField(exist = false)
    private Boolean isItADataAcquisitionDevice;
    @ApiModelProperty("数采-委托字段")
    private String entrustCode;
    @ApiModelProperty("数采-样品字段")
    private String sampleCode;
    @ApiModelProperty("数采-db,mdb文件名称")
    private String dbFileName;
    @ApiModelProperty("被授权人")
    private String authorizedPerson;
    @ApiModelProperty("资产编码")
    private String assetCode;
    @ApiModelProperty("产地")
    private String origin;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceAcceptance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备)
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:14
 */
@Getter
@Setter
@TableName("device_acceptance")
@ApiModel(value = "DeviceAcceptance对象", description = "设备验收(装备)")
public class DeviceAcceptance {
    @TableId(value = "acceptance_id", type = IdType.AUTO)
    private Integer acceptanceId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("到货日期")
    private LocalDate arrivalDate;
    @ApiModelProperty("金额")
    private String goldAmount;
    @ApiModelProperty("维修单位")
    private String maintenanceunit;
    @ApiModelProperty("收设备主机和备份情况")
    private String spareParts;
    @ApiModelProperty("安装和调试情况")
    private String installationDebugging;
    @ApiModelProperty("验收情况")
    private String checkSituation;
    @ApiModelProperty("接收签字")
    private String receivingSignature;
    @ApiModelProperty("厂家代表")
    private String producer;
    @ApiModelProperty("接收人")
    private String recipient;
    @ApiModelProperty("接收时间")
    private String recipientDate;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceAcceptanceFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.ruoyi.device.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-12-20 01:45:26
 */
@Getter
@Setter
@TableName("device_acceptance_file")
@ApiModel(value = "DeviceAcceptanceFile对象", description = "设备验收(装备)附件表")
public class DeviceAcceptanceFile implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "acceptance_file_id", type = IdType.AUTO)
    private Integer acceptanceFileId;
    @ApiModelProperty("设备验收id")
    private Integer acceptanceId;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceAccidentReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡äº‹æ•…报告单
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 06:31:12
 */
@Getter
@Setter
@TableName("device_accident_report")
@ApiModel(value = "DeviceAccidentReport对象", description = "设备事故报告单")
public class DeviceAccidentReport {
    @TableId(value = "accident_report_id", type = IdType.AUTO)
    private Integer accidentReportId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("地址")
    private String address;
    @ApiModelProperty("时间")
    private LocalDateTime accidentDate;
    @ApiModelProperty("事故情况描述")
    private String descriptionOfAccident;
    @ApiModelProperty("报告人id")
    private Integer reportUserId;
    @ApiModelProperty("报告人")
    private String reportUser;
    @ApiModelProperty("报告人填写时间")
    private LocalDate reportDate;
    @ApiModelProperty("评估人意见")
    private String assessorOpinion;
    @ApiModelProperty("评估人id")
    private Integer assessorUserId;
    @ApiModelProperty("评估人")
    private String assessorUser;
    @ApiModelProperty("评估人填写时间")
    private LocalDate assessorDate;
    @ApiModelProperty("部门负责人意见")
    private String departmentHeadOpinion;
    @ApiModelProperty("部门负责人id")
    private Integer departmentHeadUserId;
    @ApiModelProperty("部门负责人")
    private String departmentHeadUser;
    @ApiModelProperty("部门负责人填写时间")
    private LocalDate departmentHeadDate;
    @ApiModelProperty("技术负责人意见")
    private String technicalDirectorOpinion;
    @ApiModelProperty("技术负责人id")
    private Integer technicalDirectorUserId;
    @ApiModelProperty("技术负责人")
    private String technicalDirectorUser;
    @ApiModelProperty("技术负责人填写时间")
    private LocalDate technicalDirectorDate;
    @ApiModelProperty("主任意见")
    private String directorHeadOpinion;
    @ApiModelProperty("主任id")
    private Integer directorHeadUserId;
    @ApiModelProperty("主任")
    private String directorHeadUser;
    @ApiModelProperty("主任填写时间")
    private LocalDate directorHeadDate;
    @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:技术负责人意见, 4:主任意见")
    private Integer flowType;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceBorrow.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.ruoyi.device.pojo;
import com.alibaba.excel.annotation.ExcelIgnore;
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.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
 * <p>
 *
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 10:53:51
 */
@Getter
@Setter
@TableName("device_borrow")
@ApiModel(value = "DeviceBorrow对象", description = "设备借用")
@ExcelIgnoreUnannotated
public class DeviceBorrow implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("流程编号")
    @ExcelProperty(value = "流程编号")
    private String processNumber;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("管理编号")
    @ExcelProperty(value = "管理编号")
    private String unifyNumber;
    @ApiModelProperty("借用人")
    @ExcelProperty(value = "借用人")
    private String recipientUser;
    @ExcelProperty(value = "借用人联系方式")
    @ApiModelProperty("借用人联系方式")
    private String borrowerContactInformation;
    @ApiModelProperty("借用时状态")
    @ExcelProperty(value = "借用时状态")
    //0合格;1ç»´ä¿®;2停用;3报废
    private Integer recipientState;
    @ApiModelProperty("借用日期")
    @ExcelProperty(value = "提交日期")
    private Date recipientTime;
    @ApiModelProperty("借出人")
    @ExcelProperty(value = "借出人")
    private String submitUser;
    @ApiModelProperty("借出日期")
    @ExcelProperty(value = "借出日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("当前状态")
    @ExcelProperty(value = "当前状态")
    private String nowState;
    @ApiModelProperty("当前责任人")
    @ExcelProperty(value = "当前责任人")
    private String nowUser;
    @ApiModelProperty("附件")
    //路径
    private String url;
    @ApiModelProperty("附件")
    @ExcelProperty(value = "附件")
    //文件名
    private String fileName;
    @ApiModelProperty("下环节责任人")
    private String nextUser;
    @ApiModelProperty("提交操作人")
    private String submitOperationUser;
    @ApiModelProperty("提交操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime submitOperationTime;
    @ApiModelProperty("归还人")
    private String rebackUser;
    @ApiModelProperty("归还日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime rebackTime;
    @ApiModelProperty("接受状态0合格;1ç»´ä¿®;2停用;3报废")
    private Integer receiveState;
    @ApiModelProperty("设备责任人")
    private String deviceUser;
    @ApiModelProperty("备注")
    private String note;
    @ApiModelProperty("接收操作人")
    private String receiveOperationUser;
    @ApiModelProperty("接收操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receiveOperationTime;
    @ApiModelProperty("设备名称")
    @TableField(select = false, exist = false)
    @ExcelProperty(value = "设备名称")
    private String deviceName;
    @ApiModelProperty("流程跟踪")
    @TableField(select = false, exist = false)
    private List<DeviceLog> deviceLogs;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceCalibrationPlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’主表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:17
 */
@Getter
@Setter
@TableName("device_calibration_plan")
@ApiModel(value = "DeviceCalibrationPlan对象", description = "设备校准计划主表")
public class DeviceCalibrationPlan{
    @TableId(value = "plan_id", type = IdType.AUTO)
    private Integer planId;
    @ApiModelProperty("计划名称")
    private String planName;
    @ApiModelProperty("计划年份")
    private String planYear;
    @ApiModelProperty("编制人")
    private Integer writeUserId;
    @ApiModelProperty("编制时间")
    private LocalDateTime writeTime;
    @ApiModelProperty("批准人")
    private Integer ratifyUserId;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceCalibrationPlanDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:29
 */
@Getter
@Setter
@TableName("device_calibration_plan_detail")
@ApiModel(value = "DeviceCalibrationPlanDetail对象", description = "设备校准计划详情表")
public class DeviceCalibrationPlanDetail{
    @TableId(value = "plan_detail_id", type = IdType.AUTO)
    private Integer planDetailId;
    @ApiModelProperty("计划主表id")
    private Integer planId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("设备名称及型号")
    private String deviceName;
    @ApiModelProperty("设备数量")
    private String deviceAmount;
    @ApiModelProperty("仪器编号")
    private String deviceNumber;
    @ApiModelProperty("检定单位")
    private String verificationUnit;
    @ApiModelProperty("检定周期")
    private String verificationCycles;
    @ApiModelProperty("最近检定时间")
    private LocalDate lastDate;
    @ApiModelProperty("本年计划校准时间")
    private LocalDate planDate;
    @ApiModelProperty("备注")
    private String remark;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
package com.ruoyi.device.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(value = "device_documents")
public class DeviceDocuments implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * æ–‡æ¡£ç±»åž‹ï¼ˆæžšä¸¾ï¼‰
     */
    private String documentType;
    /**
     * åç§°
     */
    private String name;
    /**
     * ç‰ˆæœ¬å·
     */
    private String version;
    /**
     * æ•°é‡
     */
    private Integer quantity;
    /**
     * é¡µæ•°
     */
    private Integer pageCount;
    /**
     * æä¾›å•†
     */
    private String provider;
    /**
     * æä¾›æ—¥æœŸ
     */
    private LocalDateTime provideDate;
    /**
     * å¤‡æ³¨
     */
    private String comments;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime createTime;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("资产编号")
    private String number;
    @ApiModelProperty("原始文件名称")
    private String systemFileName;
    @ApiModelProperty("系统生成文件名称")
    private String fileName;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceExaminePlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’主表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:04
 */
@Getter
@Setter
@TableName("device_examine_plan")
@ApiModel(value = "DeviceExaminePlan对象", description = "设备核查计划主表")
public class DeviceExaminePlan{
    @TableId(value = "plan_id", type = IdType.AUTO)
    private Integer planId;
    @ApiModelProperty("计划名称")
    private String planName;
    @ApiModelProperty("计划名称")
    private String planYear;
    @ApiModelProperty("编制人")
    private Integer writeUserId;
    @ApiModelProperty("编制时间")
    private LocalDateTime writeTime;
    @ApiModelProperty("批准人")
    private Integer ratifyUserId;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceExaminePlanDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:16
 */
@Getter
@Setter
@TableName("device_examine_plan_details")
@ApiModel(value = "DeviceExaminePlanDetails对象", description = "设备核查计划详情表")
public class DeviceExaminePlanDetails {
    @TableId(value = "plan_details_id", type = IdType.AUTO)
    private Integer planDetailsId;
    @ApiModelProperty("主表id")
    private Integer planId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("设备编号")
    private String deviceNumber;
    @ApiModelProperty("计划名称")
    private String deviceName;
    @ApiModelProperty("核查时间")
    private String checkTime;
    @ApiModelProperty("核查指标")
    private String checkIndex;
    @ApiModelProperty("核查方法")
    private String checkMethod;
    @ApiModelProperty("结果如何判定")
    private String howResults;
    @ApiModelProperty("核查责任人id")
    private Integer checkChargerUserId;
    @ApiModelProperty("核查责任人")
    private String checkChargerUser;
    @ApiModelProperty("备注")
    private String remark;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
package com.ruoyi.device.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-12-16 07:14:28
 */
@Getter
@Setter
@TableName("device_examine_record")
@ApiModel(value = "DeviceExamineRecord对象", description = "设备核查记录表")
public class DeviceExamineRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "record_id", type = IdType.AUTO)
    private Integer recordId;
    @ApiModelProperty("设备核查详情id")
    private Integer planDetailsId;
    @ApiModelProperty("精度等级")
    private String accuracyGrade;
    @ApiModelProperty("使用物质名称")
    private String materialName;
    @ApiModelProperty("使用物质管理编号")
    private String materialNumber;
    @ApiModelProperty("使用物质精度/不确定度")
    private String materialAccuracyUncertainty;
    @ApiModelProperty("使用物质规格型号")
    private String materialModel;
    @ApiModelProperty("使用物质核查方式")
    private String materialCheckMethod;
    @ApiModelProperty("使用物质核查项目")
    private String materialCheckItems;
    @ApiModelProperty("温度")
    private String temperature;
    @ApiModelProperty("湿度")
    private String humidity;
    @ApiModelProperty("判定")
    private String determine;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("核查人id")
    private Integer checkerUserId;
    @ApiModelProperty("核查人")
    private String checkerUser;
    @ApiModelProperty("复核人id")
    private Integer reviewUserId;
    @ApiModelProperty("复核人")
    private String reviewUser;
    @ApiModelProperty("审核状态0,不通过, 1通过")
    private Integer reviewStatus;
    @ApiModelProperty("审核备注")
    private String reviewRemark;
    @ApiModelProperty("测试点1")
    private String dataValue1;
    @ApiModelProperty("测试点2")
    private String dataValue2;
    @ApiModelProperty("测试点3")
    private String dataValue3;
    @ApiModelProperty("测试点4")
    private String dataValue4;
    @ApiModelProperty("测试点5")
    private String dataValue5;
    @ApiModelProperty("测试点6")
    private String dataValue6;
    @ApiModelProperty("最大偏差1")
    private String maximun1;
    @ApiModelProperty("最大偏差2")
    private String maximun2;
    @ApiModelProperty("最大偏差3")
    private String maximun3;
    @ApiModelProperty("最大偏差4")
    private String maximun4;
    @ApiModelProperty("最大偏差5")
    private String maximun5;
    @ApiModelProperty("最大偏差6")
    private String maximun6;
    @ApiModelProperty("相对偏差1")
    private String relative1;
    @ApiModelProperty("相对偏差2")
    private String relative2;
    @ApiModelProperty("相对偏差3")
    private String relative3;
    @ApiModelProperty("相对偏差4")
    private String relative4;
    @ApiModelProperty("相对偏差5")
    private String relative5;
    @ApiModelProperty("相对偏差6")
    private String relative6;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecordContrast.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.ruoyi.device.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-12-16 07:14:43
 */
@Getter
@Setter
@TableName("device_examine_record_contrast")
@ApiModel(value = "DeviceExamineRecordContrast对象", description = "设备核查记录对比表")
public class DeviceExamineRecordContrast implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "record_contrast_id", type = IdType.AUTO)
    private Integer recordContrastId;
    @ApiModelProperty("核查方式")
    private String checkMethod;
    @ApiModelProperty("设备核查详情id")
    private Integer planDetailsId;
    @ApiModelProperty("设备idA")
    private Integer aDeviceId;
    @ApiModelProperty("设备idb")
    private Integer bDeviceId;
    @ApiModelProperty("设备idc")
    private Integer cDeviceId;
    @ApiModelProperty("范围不确定度A")
    private String aRangeUncertainty;
    @ApiModelProperty("范围不确定度b")
    private String bRangeUncertainty;
    @ApiModelProperty("范围不确定度c")
    private String cRangeUncertainty;
    @ApiModelProperty("综合判定")
    private String judgment;
    @ApiModelProperty("核查人id")
    private Integer checkerUserId;
    @ApiModelProperty("核查人")
    private String checkerUser;
    @ApiModelProperty("核查日期")
    private LocalDateTime checkerTime;
    @ApiModelProperty("审核人id")
    private Integer reviewUserId;
    @ApiModelProperty("审核人")
    private String reviewUser;
    @ApiModelProperty("审核状态0,不通过, 1通过")
    private Integer reviewStatus;
    @ApiModelProperty("审核备注")
    private String reviewRemark;
    @ApiModelProperty("审核日期")
    private LocalDateTime reviewTime;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecordContrastDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.ruoyi.device.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-12-16 07:14:57
 */
@Getter
@Setter
@TableName("device_examine_record_contrast_details")
@ApiModel(value = "DeviceExamineRecordContrastDetails对象", description = "设备核查记录对比详情表")
public class DeviceExamineRecordContrastDetails implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "record_contrast_details_id", type = IdType.AUTO)
    private Integer recordContrastDetailsId;
    @ApiModelProperty("设备核查详情id")
    private Integer recordContrastId;
    @ApiModelProperty("核查项目")
    private String checkItems;
    @ApiModelProperty("a仪器示值")
    private String indicationA;
    @ApiModelProperty("b仪器示值")
    private String indicationB;
    @ApiModelProperty("c仪器示值")
    private String indicationC;
    @ApiModelProperty("差值")
    private String dValue;
    @ApiModelProperty("偏差")
    private String deviation;
    @ApiModelProperty("判定")
    private String determine;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceExamineRecordDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.ruoyi.device.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-12-16 07:15:11
 */
@Getter
@Setter
@TableName("device_examine_record_detail")
@ApiModel(value = "DeviceExamineRecordDetail对象", description = "设备核查记录详情表")
public class DeviceExamineRecordDetail implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "record_detail_id", type = IdType.AUTO)
    private Integer recordDetailId;
    @ApiModelProperty("设设备核查记录id")
    private Integer recordId;
    @ApiModelProperty("测试点")
    private String testPoint;
    @ApiModelProperty("内容值1")
    private String dataValue1;
    @ApiModelProperty("内容值2")
    private String dataValue2;
    @ApiModelProperty("内容值3")
    private String dataValue3;
    @ApiModelProperty("内容值4")
    private String dataValue4;
    @ApiModelProperty("内容值5")
    private String dataValue5;
    @ApiModelProperty("内容值6")
    private String dataValue6;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceExternalApply.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * åˆ©ç”¨å¤–部设备申请表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 10:28:43
 */
@Getter
@Setter
@TableName("device_external_apply")
@ApiModel(value = "DeviceExternalApply对象", description = "利用外部设备申请表")
public class DeviceExternalApply{
    @TableId(value = "external_apply_id", type = IdType.AUTO)
    private Integer externalApplyId;
    @ApiModelProperty("单位名称")
    private String unitName;
    @ApiModelProperty("地址")
    private String address;
    @ApiModelProperty("仪器名称")
    private String deviceName;
    @ApiModelProperty("仪器型号")
    private String deviceModel;
    @ApiModelProperty("配件")
    private String parts;
    @ApiModelProperty("对方仪器编号")
    private String instrumentNumber;
    @ApiModelProperty("技术指标")
    private String technicalIndex;
    @ApiModelProperty("技术要求")
    private String technicalRequirements;
    @ApiModelProperty("利用原因")
    private String useReason;
    @ApiModelProperty("0申请人id")
    private Integer applicantUserId;
    @ApiModelProperty("0申请人")
    private String applicantUser;
    @ApiModelProperty("0申请时间")
    private LocalDate applicantDate;
    @ApiModelProperty("1部门负责人意见")
    private String departmentHeadOpinion;
    @ApiModelProperty("1部门负责人id")
    private Integer departmentHeadUserId;
    @ApiModelProperty("1部门负责人")
    private String departmentHeadUser;
    @ApiModelProperty("1部门负责人填写时间")
    private LocalDate departmentHeadDate;
    @ApiModelProperty("2计量室意见")
    private String meteringRoomOpinion;
    @ApiModelProperty("2计量室人id")
    private Integer meteringRoomUserId;
    @ApiModelProperty("2计量室人")
    private String meteringRoomUser;
    @ApiModelProperty("2计量室人填写时间")
    private LocalDate meteringRoomDate;
    @ApiModelProperty("3批准人意见")
    private String approverOpinion;
    @ApiModelProperty("3批准人id")
    private Integer approverUserId;
    @ApiModelProperty("3批准人")
    private String approverUser;
    @ApiModelProperty("3批准人填写时间")
    private LocalDate approverDate;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
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 java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * è®¾å¤‡ä½¿ç”¨æŽˆæƒè¡¨
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
@Getter
@Setter
@TableName("device_impower")
@ApiModel(value = "DeviceImpower对象", description = "设备使用授权表")
public class DeviceImpower implements Serializable {
    @ApiModelProperty("授权id")
    @TableId(value = "impower_id", type = IdType.AUTO)
    private Integer impowerId;
    @ApiModelProperty("计划年份")
    private String impowerYear;
    @ApiModelProperty("编制人id")
    private Integer compilerId;
    @ApiModelProperty("编制人")
    private String compiler;
    @ApiModelProperty("编制时间")
    private LocalDateTime datePreparation;
    @ApiModelProperty("审核状态,0未审核,1审核")
    private Integer status;
    @ApiModelProperty("授权id")
    private Integer auditId;
    @ApiModelProperty("授权人")
    private String audit;
    @ApiModelProperty("授权日期")
    private LocalDateTime auditDate;
    @ApiModelProperty("授权信息")
    private String auditRemark;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpowerDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
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 java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
@Getter
@Setter
@TableName("device_impower_details")
@ApiModel(value = "DeviceImpowerDetails对象", description = "设备量值溯源计划详情表")
public class DeviceImpowerDetails implements Serializable {
    @ApiModelProperty("设备量值溯源计划详情id")
    @TableId(value = "impower_detail_id", type = IdType.AUTO)
    private Integer impowerDetailId;
    @ApiModelProperty("设备量值溯源计划id")
    private Integer impowerId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("检测项目")
    private String inspectionItem;
    @ApiModelProperty("被授权人")
    private String delegatedUser;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceInspectionRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡ç‚¹æ£€è®°å½•
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:25:14
 */
@Getter
@Setter
@TableName("device_inspection_record")
@ApiModel(value = "DeviceInspectionRecord对象", description = "")
public class DeviceInspectionRecord implements Serializable {
    @ApiModelProperty("设备点检记录id")
    @TableId(value = "inspection_record_id", type = IdType.AUTO)
    private Integer inspectionRecordId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("测量范围")
    private String measurementScope;
    @ApiModelProperty("点检使用物质名称")
    private String materialName;
    @ApiModelProperty("点检使用物质规格型号")
    private String materialModel;
    @ApiModelProperty("点检使用物质管理编号")
    private String materialManagementNumber;
    @ApiModelProperty("点检使用物质精度等级")
    private String materialAccuracyGrade;
    @ApiModelProperty("温度")
    private String temperature;
    @ApiModelProperty("湿度")
    private String humidity;
    @ApiModelProperty("测试结论")
    private String testConclusion;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("状态(是否复核)0未复核,1复核")
    private Integer status;
    @ApiModelProperty("测试人")
    private String recorder;
    @ApiModelProperty("测试人id")
    private Integer recorderId;
    @ApiModelProperty("复核人")
    private String reviewer;
    @ApiModelProperty("复核人id")
    private Integer reviewerId;
    @ApiModelProperty("复核信息")
    private String reviewerRemark;
    @ApiModelProperty("测试日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime testDate;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("修改人id")
    private Integer updateUserId;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceInspectionRecordDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.ruoyi.device.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-12-16 04:27:32
 */
@Getter
@Setter
@TableName("device_inspection_record_details")
@ApiModel(value = "DeviceInspectionRecordDetails对象", description = "")
public class DeviceInspectionRecordDetails implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("点检详情id")
    @TableId(value = "inspection_record_detail_id", type = IdType.AUTO)
    private Integer inspectionRecordDetailId;
    @ApiModelProperty("点检id")
    private Integer inspectionRecordId;
    @ApiModelProperty("测试项目")
    private String testItems;
    @ApiModelProperty("标准值")
    private String standardValue;
    @ApiModelProperty("实测值")
    private String measuredValue;
    @ApiModelProperty("示值误差")
    private String indicationError;
    @ApiModelProperty("允许误差")
    private String allowableError;
    @ApiModelProperty("单项结论")
    private String singleItemConclusion;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("修改人id")
    private Integer updateUserId;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceInstruction.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.device.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-12-04 10:29:18
 */
@Getter
@Setter
@TableName("device_instruction")
@ApiModel(value = "Instruction对象", description = "作业指导书添加受控文件表")
public class DeviceInstruction implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请编号")
    private String applicationNumber;
    @ApiModelProperty("申请部门")
    private String applicationDepartment;
    @ApiModelProperty("责任人")
    private String personLiable;
    @ApiModelProperty("受控申请说明")
    private String controlledApplicationDescription;
    @ApiModelProperty("系统生成名称")
    private String fileName;
    @ApiModelProperty("系统生成名称")
    private String fileSystemName;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@TableName("device_log") // è®°å½•
public class DeviceLog implements Serializable {
    @TableId(type= IdType.AUTO)
    private Integer id;
    private String operator;
//    @JsonFormat()
    private LocalDateTime operationTime;
    private String operationType;
    private String operationContent;
    private Integer deviceId;
    //关联的表名
    private String relevanceForm;
    //关联的id
    private Integer relevanceId;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.ruoyi.device.pojo;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.deepoove.poi.data.PictureRenderData;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * è®¾å¤‡ç»´æŠ¤æ·»åŠ ç»´æŠ¤è®°å½•è¡¨
 *
 * @author makejava
 * @since 2025-04-17 11:28:56
 */
@Data
@TableName("device_maintenance")
public class DeviceMaintenance {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("维护日期")
    private LocalDate maintenanceDate;
    @ApiModelProperty("维护内容")
    private String maintenanceContent;
    @ApiModelProperty("维护人id")
    private Integer maintenanceUserId;
    @ApiModelProperty("维护人")
    private String maintenanceUserName;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("更新人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(select = false, exist = false)
    @ApiModelProperty("维护人图片")
    private PictureRenderData maintenanceUserUrlRender;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.device.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-12-16 06:10:52
 */
@Getter
@Setter
@TableName("device_maintenance_plan")
@ApiModel(value = "DeviceMaintenancePlan对象", description = "设备保养计划表")
public class DeviceMaintenancePlan implements Serializable {
    @ApiModelProperty("设备保养计划id")
    @TableId(value = "maintenance_plan_id", type = IdType.AUTO)
    private Integer maintenancePlanId;
    @ApiModelProperty("编制人")
    private String compiler;
    @ApiModelProperty("计划名称")
    private String planName;
    @ApiModelProperty("计划年份")
    private String planYear;
    @ApiModelProperty("编制人id")
    private Integer compilerId;
    @ApiModelProperty("编制日期")
    private LocalDateTime datePreparation;
    @ApiModelProperty("审核状态,0未审核,1审核")
    private Integer status;
    @ApiModelProperty("审核人id")
    private Integer auditId;
    @ApiModelProperty("审核人")
    private String audit;
    @ApiModelProperty("审核日期")
    private LocalDateTime auditDate;
    @ApiModelProperty("审核信息")
    private String auditRemark;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenancePlanDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ruoyi.device.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-12-16 06:11:46
 */
@Getter
@Setter
@TableName("device_maintenance_plan_details")
@ApiModel(value = "DeviceMaintenancePlanDetails对象", description = "设备保养计划详情表")
public class DeviceMaintenancePlanDetails implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("保养计划详情id")
    @TableId(value = "maintenance_plan_detail_id", type = IdType.AUTO)
    private Integer maintenancePlanDetailId;
    @ApiModelProperty("保养计划id")
    private Integer maintenancePlanId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("保养关键部位")
    private String maintenanceSite;
    @ApiModelProperty("保养内容")
    private String maintenanceContent;
    @ApiModelProperty("保养周期")
    private String maintenanceIntervals;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceMetric.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.device.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.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@TableName("device_metrics")
public class DeviceMetric implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id; //id
    private Integer deviceId;            // è®¾å¤‡ID
    private String measurementParameter; // è®¡é‡å‚æ•°
    private String rangeOfMeasurement;   // é‡ç¨‹èŒƒå›´
    private String maxPermissibleError;  // æœ€å¤§å…è®¸è¯¯å·®
    private String judgmentCriteria;     // åˆ¤å®šæ ‡å‡†
    private String createdBy;           // åˆ›å»ºäºº
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime creationTime;      // åˆ›å»ºæ—¶é—´
    @ApiModelProperty("calibrate:校准;examine:核查")
    private String type; // ç±»åž‹
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMetricRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½•
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:01
 */
@Getter
@Setter
@TableName("device_metric_record")
@ApiModel(value = "DeviceMetricRecord对象", description = "设备校准 - æ ¡å‡†è®°å½•")
public class DeviceMetricRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("记录编号")
    private String processNumber;
    @ApiModelProperty("计量单位")
    private String unitOfMeasure;
    @ApiModelProperty("校准日期")
    private Date calibrationDate;
    @ApiModelProperty("下次校准日期")
    private Date nextCalibrationDate;
    @ApiModelProperty("计算器具")
    private String calculatingApparatus;
    @ApiModelProperty("计算标准量程")
    private String standardRange;
    @ApiModelProperty("计量标准不确定度")
    private String calibrationStandardUncertainty;
    @ApiModelProperty("依据文件")
    private String byDocument;
    @ApiModelProperty("证书编号")
    private String certificateSerialNumber;
    @ApiModelProperty("状态")
    private String status;
    @ApiModelProperty("原文件名称")
    private String fileName;
    @ApiModelProperty("系统生成文件名称")
    private String systemFileName;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("创建时间 / ç™»è®°æ—¥æœŸ")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("登记人")
    private String createUser;
    @ApiModelProperty("calibrate:校准;examine:核查")
    private String type;
    @ApiModelProperty("确认时间")
    private Date confirmDate;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMetricsCopy.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.device.pojo;
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-09-27 10:20:11
 */
@Getter
@Setter
@TableName("device_metrics_copy")
@ApiModel(value = "DeviceMetricsCopy对象", description = "设备校准 - æ ¡å‡†è®°å½• - æ ¡å‡†æ¡ç›®")
public class DeviceMetricsCopy implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("设备校准 - æ ¡å‡†è®°å½•id")
    private Integer deviceMetricsId;
    @ApiModelProperty("计量参数")
    private String measurementParameter;
    @ApiModelProperty("量程范围")
    private String rangeOfMeasurement;
    @ApiModelProperty("最大允许误差")
    private String maxPermissibleError;
    @ApiModelProperty("判定标准")
    private String judgmentCriteria;
    @ApiModelProperty("创建人")
    private String createdBy;
    @ApiModelProperty("创建时间")
    private LocalDateTime creationTime;
    @ApiModelProperty("是否校准")
    private String isCalibration;
    @ApiModelProperty("判定结果")
    private String result;
    @ApiModelProperty("单项结果说明")
    private String singleResultStatement;
    @ApiModelProperty("calibrate:校准;examine:核查")
    private String type;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.ruoyi.device.pojo;
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>
 * cnas设备使用记录表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
@Getter
@Setter
@TableName("device_record")
@ApiModel(value = "DeviceRecord对象", description = "cnas设备使用记录表")
public class DeviceRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private Integer deviceId;
    @ApiModelProperty("订单id")
    private Integer insOrderId;
    @ApiModelProperty("样品编号")
    private String sampleCode;
    @ApiModelProperty("温度")
    private String temperature;
    @ApiModelProperty("湿度")
    private String humidity;
    @ApiModelProperty("使用前0异常1良好")
    private Integer useBefore;
    @ApiModelProperty("使用后0异常1良好")
    private Integer useAfter;
    @ApiModelProperty("异常情况")
    private String abnormal;
    @ApiModelProperty("使用人id")
    private Integer usePersonId;
    @ApiModelProperty("使用人")
    private String usePerson;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("使用开始日期")
    private LocalDateTime useStartDate;
    @ApiModelProperty("使用结束日期")
    private LocalDateTime useEndDate;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceScrapped.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡æŠ¥åºŸç”³è¯·è¡¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 01:53:47
 */
@Getter
@Setter
@TableName("device_scrapped")
@ApiModel(value = "DeviceScrapped对象", description = "设备报废申请表")
public class DeviceScrapped {
    @TableId(value = "scrapped_id", type = IdType.AUTO)
    private Integer scrappedId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("配件")
    private String parts;
    @ApiModelProperty("报废理由")
    private String reasonsForScrap;
    @ApiModelProperty("申请人id")
    private Integer applicantUserId;
    @ApiModelProperty("申请人")
    private String applicantUser;
    @ApiModelProperty("申请时间")
    private LocalDate applicantDate;
    @ApiModelProperty("部门负责人意见")
    private String departmentHeadOpinion;
    @ApiModelProperty("部门负责人id")
    private Integer departmentHeadUserId;
    @ApiModelProperty("部门负责人")
    private String departmentHeadUser;
    @ApiModelProperty("部门负责人填写时间")
    private LocalDate departmentHeadDate;
    @ApiModelProperty("计量室意见")
    private String meteringRoomOpinion;
    @ApiModelProperty("计量室人id")
    private Integer meteringRoomUserId;
    @ApiModelProperty("计量室人")
    private String meteringRoomUser;
    @ApiModelProperty("计量室人填写时间")
    private LocalDate meteringRoomDate;
    @ApiModelProperty("批准人意见")
    private String approverOpinion;
    @ApiModelProperty("批准人id")
    private Integer approverUserId;
    @ApiModelProperty("批准人")
    private String approverUser;
    @ApiModelProperty("批准人填写时间")
    private LocalDate approverDate;
    @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-device/src/main/java/com/ruoyi/device/pojo/DeviceState.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.device.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
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-09-26 09:51:40
 */
@Getter
@Setter
@TableName("device_state")
@ApiModel(value = "DeviceState对象", description = "设备停用/启用")
public class DeviceState implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("设备停用启用id")
    @TableId(value = "state_id", type = IdType.AUTO)
    private Integer stateId;
    @ApiModelProperty("流程编号")
    private String processNumber;
    @ApiModelProperty("0配件")
    private String accessoryPart;
    @ApiModelProperty("0设备状态")
    private String deviceStatus;
    @ApiModelProperty("0停用启用理由")
    private String reason;
    @ApiModelProperty("0下环节责任人")
    private String submitNextPesponsible;
    @ApiModelProperty("0操作人")
    private String submitOperatingPersonnel;
    @ApiModelProperty("0日期")
    private LocalDateTime submitDate;
    @ApiModelProperty("1部门负责人意见")
    private String departmentReviewOpinion;
    @ApiModelProperty("1下环节责任人")
    private String departmentNextPesponsible;
    @ApiModelProperty("1操作人")
    private String departmentOperatingPersonnel;
    @ApiModelProperty("1日期")
    private LocalDateTime departmentDate;
    @ApiModelProperty("2计量室意见")
    private String measuringRoomReviewOpinion;
    @ApiModelProperty("2下环节责任人")
    private String measuringRoomNextPesponsible;
    @ApiModelProperty("2操作人")
    private String measuringRoomOperatingPersonnel;
    @ApiModelProperty("2日期")
    private LocalDateTime measuringRoomDate;
    @ApiModelProperty("3批准意见")
    private String approvalOpinion;
    @ApiModelProperty("3下环节责任人")
    private String approvalNextPesponsible;
    @ApiModelProperty("3操作人")
    private String approvalOperatingPersonnel;
    @ApiModelProperty("3日期")
    private LocalDateTime approvalDate;
    @ApiModelProperty("当前状态")
    private String currentState;
    @ApiModelProperty("设备Id")
    private Integer deviceId;
    @ApiModelProperty("当前环节负责人")
    private String currentResponsible;
    @ApiModelProperty("提交人")
    @ExcelProperty(value = "提交人")
    private String createUser;
    @ApiModelProperty("提交日期")
    @ExcelProperty(value = "提交日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:44
 */
@Getter
@Setter
@TableName("device_traceability_management")
@ApiModel(value = "DeviceTraceabilityManagement对象", description = "设备量值溯源计划表")
public class DeviceTraceabilityManagement{
    @ApiModelProperty("设备量值溯源计划id")
    @TableId(value = "traceability_management_id", type = IdType.AUTO)
    private Integer traceabilityManagementId;
    @ApiModelProperty("文件名称")
    private String fileName;
    @ApiModelProperty("计划名称")
    private String planName;
    @ApiModelProperty("计划年份")
    private String planYear;
    @ApiModelProperty("编制人id")
    private Integer compilerId;
    @ApiModelProperty("编制人")
    private String compiler;
    @ApiModelProperty("编制时间")
    private LocalDateTime datePreparation;
    @ApiModelProperty("审核状态,0未审核,1审核")
    private Integer status;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("审核人id")
    private Integer auditId;
    @ApiModelProperty("审核人")
    private String audit;
    @ApiModelProperty("审核日期")
    private LocalDateTime auditDate;
    @ApiModelProperty("审核信息")
    private String auditRemark;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceTraceabilityManagementDetails.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.ruoyi.device.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-12-20 02:27:58
 */
@Getter
@Setter
@TableName("device_traceability_management_details")
@ApiModel(value = "DeviceTraceabilityManagementDetails对象", description = "设备量值溯源计划详情表")
public class DeviceTraceabilityManagementDetails implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("设备量值溯源计划详情id")
    @TableId(value = "traceability_management_detail_id", type = IdType.AUTO)
    private Integer traceabilityManagementDetailId;
    @ApiModelProperty("设备量值溯源计划id")
    private Integer traceabilityManagementId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("技术指标参数")
    private String technicalIndexParameters;
    @ApiModelProperty("技术指标要求")
    private String technicalRequirements;
    @ApiModelProperty("检定周期")
    private String verificationCycle;
    @ApiModelProperty("检定单位")
    private String verificationUnit;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/OperationInstruction.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * <p>
 * è®¾å¤‡ - ä½œä¸šæŒ‡å¯¼ä¹¦ æ·»åŠ å—æŽ§æ–‡ä»¶ å­
 * </p>
 *
 * @author
 * @since 2024-12-04 10:43:32
 */
@Getter
@Setter
@TableName("device_operation_instruction")
public class OperationInstruction {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("设备主键id")
    private String deviceId;
    @ApiModelProperty("文件类型")
    private String documentType;
    @ApiModelProperty("文档编号")
    private String documentNumber;
    @ApiModelProperty("文件版本")
    private String documentVersion;
    @ApiModelProperty("作者")
    private String author;
    @ApiModelProperty("提交日期")
    private LocalDate submitDate;
    @ApiModelProperty("文档说明")
    private String documentNote;
    @ApiModelProperty("系统生成名称")
    private String fileName;
    @ApiModelProperty("系统生成名称")
    private String fileSystemName;
    @ApiModelProperty("作业指导书id")
    private Integer instructionId;
    @ApiModelProperty("上传人id")
    private Integer uploader;
    @ApiModelProperty("审批人id")
    private Integer approverId;
    @ApiModelProperty("审批状态")
    private Boolean status;
    @ApiModelProperty("生效时间")
    private LocalDateTime entryIntoForceTime;
    @ApiModelProperty("上传时间")
    private LocalDateTime uploadTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("更新人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
}
cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.device.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.CollectBridge;
/**
 * æ•°å­—电桥采集
 *
 * @author zhuo
 * @since 2025-02-19
 */
public interface CollectBridgeService extends IService<CollectBridge> {
    /**
     * å¡«å……采集数据
     * @param jsonObject
     */
    void addBridgeValue(JSONObject jsonObject);
}
cnas-device/src/main/java/com/ruoyi/device/service/DataConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DataConfigDto;
import com.ruoyi.device.pojo.DataConfig;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-07-13 12:23:00
 */
public interface DataConfigService extends IService<DataConfig> {
    /**
     * ç»´æŠ¤è®¾å¤‡æ–‡ä»¶é…ç½®
     * @param dataConfigList
     */
    void saveDeviceFileConfiguration(DataConfigDto dataConfigList);
    /**
     * æ•°é‡‡é…ç½®
     * @param dataConfigList
     */
    void saveDataAcquisitionConfiguration(DataConfigDto dataConfigList);
    /**
     * æŸ¥è¯¢æ•°é‡‡é…ç½®
     * @param dataConfig
     * @return
     */
    Result<?> queryDataAcquisitionConfiguration(DataConfig dataConfig);
    /**
     * æŸ¥è¯¢æ£€éªŒé¡¹æ•°é‡‡é…ç½®
     * @param dataConfig
     * @return
     */
    Result<?> queryProductConfiguration(DataConfig dataConfig);
    /**
     * æŸ¥è¯¢äº†ç»‘定但是没有配置的检验项
     * @param deviceId
     * @return
     */
    IPage<DataConfig> getNoConfigProduct(Page page, Integer deviceId);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceAcceptanceFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceAcceptanceFile;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备)附件表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:26
 */
public interface DeviceAcceptanceFileService extends IService<DeviceAcceptanceFile> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceAcceptanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceAcceptance;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备) æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:14
 */
public interface DeviceAcceptanceService extends IService<DeviceAcceptance> {
    /**
     * è®¾å¤‡éªŒæ”¶åˆ—表
     * @param page
     * @param deviceAcceptance
     * @return
     */
    IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance);
    boolean uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file);
    /**
     * è®¾å¤‡éªŒæ”¶å¯¼å‡º
     * @param acceptanceId  è®¾å¤‡éªŒæ”¶id
     * @param response   å“åº”体
     * @return
     */
    void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceAccidentReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceAccidentReport;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡äº‹æ•…报告单 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 06:31:12
 */
public interface DeviceAccidentReportService extends IService<DeviceAccidentReport> {
    /**
     * è®¾å¤‡äº‹æ•…报告列表
     * @param page
     * @param deviceAccidentReport
     * @return
     */
    IPage<DeviceAccidentReport> pageDeviceAccidentReport(Page page, DeviceAccidentReport deviceAccidentReport);
    /**
     * æ–°å¢žè®¾å¤‡äº‹æ•…报告
     * @param deviceAccidentReport
     * @return
     */
    boolean addDeviceAccidentReport(DeviceAccidentReport deviceAccidentReport);
    /**
     * å¯¼å‡ºè®¾å¤‡äº‹æ•…报告
     * @param accidentReportId è®¾å¤‡äº‹æ•…报告id
     * @param response å“åº”
     */
    void exportDeviceAccidentReport(Integer accidentReportId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceBorrowService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceBorrow;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 10:53:51
 */
public interface DeviceBorrowService extends IService<DeviceBorrow> {
    IPage<DeviceBorrow> deviceBorrowPage(Page page, DeviceBorrow deviceBorrow);
    int saveDeviceBorrow(DeviceBorrow deviceBorrow);
    DeviceBorrow getDeviceBorrow(Integer id);
    List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceBreakdownMaintenanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceBreakdownMaintenance;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡æ•…障维修表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 04:50:57
 */
public interface DeviceBreakdownMaintenanceService extends IService<DeviceBreakdownMaintenance> {
    /**
     * è®¾å¤‡æ•…障维修列表
     * @param page
     * @param deviceBreakdownMaintenance
     * @return
     */
    IPage<DeviceBreakdownMaintenance> pageDeviceBreakdownMaintenance(Page page, DeviceBreakdownMaintenance deviceBreakdownMaintenance);
    /**
     * æ–°å¢žè®¾å¤‡æ•…障维修
     * @param deviceBreakdownMaintenance
     * @return
     */
    boolean addDeviceBreakdownMaintenance(DeviceBreakdownMaintenance deviceBreakdownMaintenance);
    /**
     * å¯¼å‡ºè®¾å¤‡æ•…障维修
     * @param maintenanceId è®¾å¤‡æ•…障维修id
     * @param response å“åº”
     */
    void exportDeviceBreakdownMaintenance(Integer maintenanceId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceCalibrationPlanDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:29
 */
public interface DeviceCalibrationPlanDetailService extends IService<DeviceCalibrationPlanDetail> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceCalibrationPlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceCalibrationPlanDto;
import com.ruoyi.device.pojo.DeviceCalibrationPlan;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’主表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:17
 */
public interface DeviceCalibrationPlanService extends IService<DeviceCalibrationPlan> {
    /**
     * æ–°å¢žè®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @param calibrationPlanDto
     * @return
     */
    boolean addDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto);
    /**
     * å¯¼å…¥è®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @param file
     * @return
     */
    boolean importDeviceCalibrationPlan(MultipartFile file, String planYear);
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceCalibrationPlan
     * @return
     */
    boolean submiatRatifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan);
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’批准
     * @param DeviceCalibrationPlan
     * @return
     */
    boolean ratifyDeviceCalibrationPlan(DeviceCalibrationPlan DeviceCalibrationPlan);
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’列表
     * @param page
     * @param DeviceCalibrationPlan
     * @return
     */
    IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan deviceCalibrationPlan);
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情列表
     * @param page
     * @param DeviceCalibrationPlanDetails
     * @return
     */
    IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails);
    /**
     * å¯¼å‡ºè®¾å¤‡æ ¡å‡†è®¡åˆ’
     *
     * @param DeviceCalibrationPlanId
     * @param response
     */
    void exportDeviceCalibrationPlanDetail(Integer DeviceCalibrationPlanId, HttpServletResponse response);
    /**
     * æ‰¹é‡ç¼–辑设备校准详情
     * @param calibrationPlanDto
     * @return
     */
    boolean updateDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto);
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¡å‡†è¯¦æƒ…
     * @param planId
     * @return
     */
    DeviceCalibrationPlanDto getDeviceCalibrationPlan(Integer planId);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceDocuments;
/**
 * è®¾å¤‡æ¡£æ¡ˆ
 */
public interface DeviceDocumentsService extends IService<DeviceDocuments> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExaminePlanDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:16
 */
public interface DeviceExaminePlanDetailsService extends IService<DeviceExaminePlanDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExaminePlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceExaminePlanDetailsDto;
import com.ruoyi.device.dto.DeviceExaminePlanDto;
import com.ruoyi.device.pojo.DeviceExaminePlan;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’主表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:04
 */
public interface DeviceExaminePlanService extends IService<DeviceExaminePlan> {
    /**
     * æ–°å¢žè®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param examinePlanDto
     * @return
     */
    boolean addDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto);
    /**
     * å¯¼å…¥è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param file
     * @return
     */
    boolean importDeviceExaminePlan(MultipartFile file);
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceExaminePlan
     * @return
     */
    boolean submitRatifyDeviceExaminePlan(DeviceExaminePlan deviceExaminePlan);
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’批准
     * @param DeviceExaminePlan
     * @return
     */
    boolean ratifyDeviceExaminePlan(DeviceExaminePlan DeviceExaminePlan);
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’列表
     * @param page
     * @param DeviceExaminePlan
     * @return
     */
    IPage<DeviceExaminePlanDto> pageDeviceExaminePlan(Page page, DeviceExaminePlan DeviceExaminePlan);
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情列表
     * @param page
     * @param DeviceExaminePlanDetails
     * @return
     */
    IPage<DeviceExaminePlanDetailsDto> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails DeviceExaminePlanDetails);
    /**
     * å¯¼å‡ºè®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param deviceExaminePlanId è®¾å¤‡æ ¸æŸ¥è®¡åˆ’id
     * @param response å“åº”
     */
    void exportDeviceExaminePlanDetail(Integer deviceExaminePlanId, HttpServletResponse response);
    /**
     * æ‰¹é‡ä¿®æ”¹è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param examinePlanDto
     * @return
     */
    boolean updateDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto);
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
     * @param planId
     * @return
     */
    DeviceExaminePlanDto getDeviceExaminePlan(Integer planId);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordContrastDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•对比详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:57
 */
public interface DeviceExamineRecordContrastDetailsService extends IService<DeviceExamineRecordContrastDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordContrastService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceExamineRecordContrastDto;
import com.ruoyi.device.pojo.DeviceExamineRecordContrast;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•对比表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:43
 */
public interface DeviceExamineRecordContrastService extends IService<DeviceExamineRecordContrast> {
    /**
     * æŸ¥è¯¢æ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    DeviceExamineRecordContrastDto getExamineRecordContrast(Integer planDetailsId);
    /**
     * æ–°å¢žæ ¸æŸ¥å¯¹æ¯”记录
     * @return
     *
     */
    boolean addExamineRecordContrast(DeviceExamineRecordContrastDto deviceExamineRecordContrastDto);
    /**
     * å®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    boolean reviewExamineRecordContrast(DeviceExamineRecordContrastDto deviceExamineRecordContrastDto);
    /**
     * å¯¼å‡ºå®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录
     *
     * @param recordId å®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录id
     * @param response
     * @return
     */
    void exportReviewExamineRecordContrast(Integer recordId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:15:11
 */
public interface DeviceExamineRecordDetailService extends IService<DeviceExamineRecordDetail> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExamineRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceExamineRecordDto;
import com.ruoyi.device.pojo.DeviceExamineRecord;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:28
 */
public interface DeviceExamineRecordService extends IService<DeviceExamineRecord> {
    /**
     * æŸ¥è¯¢æ ¸æŸ¥è®°å½•
     * @return
     */
    DeviceExamineRecordDto getExamineRecord(Integer planDetailsId);
    /**
     * æ–°å¢žæ ¸æŸ¥è®°å½•
     * @return
     */
    boolean addExamineRecord(DeviceExamineRecordDto deviceExamineRecordDto);
    /**
     * å¤æ ¸æ ¸æŸ¥è®°å½•
     * @return
     */
    boolean reviewExamineRecord(DeviceExamineRecordDto deviceExamineRecordDto);
    /**
     * å¯¼å‡ºå¤æ ¸æ ¸æŸ¥è®°å½•
     * @param planDetailsId
     * @param response å“åº”
     */
    void exportReviewExamineRecordDetail(Integer planDetailsId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceExternalApplyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceExternalApply;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * åˆ©ç”¨å¤–部设备申请表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 10:28:43
 */
public interface DeviceExternalApplyService extends IService<DeviceExternalApply> {
    /**
     * åˆ©ç”¨å¤–部设备申请列表
     * @param page
     * @param deviceExternalApply
     * @return
     */
    IPage<DeviceExternalApply> pageDeviceExternalApply(Page page, DeviceExternalApply deviceExternalApply);
    /**
     * æ–°å¢žåˆ©ç”¨å¤–部设备申请
     * @param deviceExternalApply
     * @return
     */
    boolean addDeviceExternalApply(DeviceExternalApply deviceExternalApply);
    /**
     * å¯¼å‡ºåˆ©ç”¨å¤–部设备申请
     *
     * @param externalApplyId å¤–部设备申请id
     * @param response
     */
    void exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
public interface DeviceImpowerDetailsService extends IService<DeviceImpowerDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceImpowerDto;
import com.ruoyi.device.pojo.DeviceImpower;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceImpower;
import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡ä½¿ç”¨æŽˆæƒè¡¨ æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
public interface DeviceImpowerService extends IService<DeviceImpower> {
    /**
     * åˆ†é¡µæŸ¥è¯¢ä½¿ç”¨æŽˆæƒ
     * @param page åˆ†é¡µå‚æ•°
     * @param itemParameter ä½¿ç”¨æŽˆæƒ
     * @return
     */
    Result<IPage<DeviceImpower>> selectDeviceImpowerByPage(@Param("page") Page page, @Param("itemParameter") DeviceImpowerDto itemParameter);
    /**
     * æ–°å¢žä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    Result addImpower(DeviceImpowerDto deviceImpowerDto);
    /**
     * ä¿®æ”¹ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    Result updateImpower(DeviceImpowerDto deviceImpowerDto);
    /**
     * åˆ é™¤ä½¿ç”¨æŽˆæƒ
     * @param deviceImpowerDto ä½¿ç”¨æŽˆæƒ
     */
    Result deleteImpower(DeviceImpowerDto deviceImpowerDto);
    /**
     * æŸ¥è¯¢ä½¿ç”¨æŽˆæƒè¯¦æƒ…
     */
    Result<DeviceImpowerDto> getImpowerDetail(Integer impowerId);
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceImpowerDto
     * @return
     */
    Result submitReviewImpowerStatus(DeviceImpowerDto deviceImpowerDto);
    /**
     * ä½¿ç”¨æŽˆæƒå®¡æ ¸
     */
    Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto);
    /**
     * ä½¿ç”¨æŽˆæƒå¯¼å‡º
     */
    Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceInspectionRecordDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceInspectionRecordDetails;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:27:32
 */
public interface DeviceInspectionRecordDetailsService extends IService<DeviceInspectionRecordDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceInspectionRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceInspectionRecordDto;
import com.ruoyi.device.pojo.DeviceInspectionRecord;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 *  è®¾å¤‡ç‚¹æ£€è®°å½•表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:25:14
 */
public interface DeviceInspectionRecordService extends IService<DeviceInspectionRecord> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ç‚¹æ£€è®°å½•
     * @param page
     */
    Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(Page page, DeviceInspectionRecordDto deviceInspectionRecord);
    /**
     * æŸ¥è¯¢ç‚¹æ£€è¯¦æƒ…
     * @param inspectionRecordId
     * @return
     */
    Result getDeviceInspectionRecord(Integer inspectionRecordId);
    /**
     * æ–°å¢žè®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param deviceInspectionRecord è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    Result addDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord);
    /**
     * ä¿®æ”¹è®¾å¤‡ç‚¹æ£€è®°å½•
     * @param deviceInspectionRecord è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    Result updateInspectionRecordAndDetails(DeviceInspectionRecordDto deviceInspectionRecord);
    /**
     * åˆ é™¤è®¾å¤‡ç‚¹æ£€è®°å½•
     * @param deviceInspectionRecord è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    Result deleteDeviceInspectionRecordOrDetails(DeviceInspectionRecordDto deviceInspectionRecord);
    /**
     * å¤æ ¸ç‚¹æ£€è®°å½•
     * @param deviceExamineRecordDto
     * @return
     */
    Result reviewDeviceInspectionRecord(DeviceInspectionRecordDto deviceExamineRecordDto);
    /**
     * å¯¼å‡ºè®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param deviceInspectionRecordId è®¾å¤‡ç‚¹æ£€è®°å½•id
     * @param response
     */
    Result exportDeviceInspectionRecord(Integer deviceInspectionRecordId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceInstructionService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceInstructionDto;
import com.ruoyi.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.pojo.DeviceInstruction;
import java.util.Map;
/**
 * <p>
 * ä½œä¸šæŒ‡å¯¼ä¹¦æ·»åŠ å—æŽ§æ–‡ä»¶è¡¨ æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2024-12-04 10:29:18
 */
public interface DeviceInstructionService extends IService<DeviceInstruction> {
    IPage<DeviceOperationInstructionDto> pageByPageQueryOfHomeworkInstructions(Page page, DeviceOperationInstructionDto operationInstructionDto);
    void newHomeworkGuidebookAdded(DeviceInstructionDto instructionDto);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
public interface DeviceMaintenancePlanDetailsService extends IService<DeviceMaintenancePlanDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
public interface DeviceMaintenancePlanService extends IService<DeviceMaintenancePlan> {
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param page å½“前页
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * ä¿®æ”¹è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * åˆ é™¤è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * å¯¼å‡ºè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     * @param response          å“åº”
     */
    Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response);
    /**
     * æŸ¥çœ‹è®¾å¤‡ä¿å…»è®¡åˆ’详情
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     * @return
     */
    Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId);
    /**
     * æäº¤å®¡æ ¸
     * @param deviceMaintenancePlanDto
     * @return
     */
    Result submitReviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * å®¡æ ¸è®¾å¤‡ä¿å…»è®¡åˆ’状态
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.pojo.DeviceMaintenance;
import javax.servlet.http.HttpServletResponse;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
 */
public interface DeviceMaintenanceService extends IService<DeviceMaintenance> {
    /**
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @return
     */
    IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance);
    /**
     * å¯¼å‡ºè®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param deviceId
     * @param response
     * @return
     */
    void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMetricRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceMetricRecord;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:01
 */
public interface DeviceMetricRecordService extends IService<DeviceMetricRecord> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMetricsCopyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceMetricsCopy;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• - æ ¡å‡†æ¡ç›® æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:11
 */
public interface DeviceMetricsCopyService extends IService<DeviceMetricsCopy> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceOperationInstructionService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.pojo.OperationInstruction;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡ - ä½œä¸šæŒ‡å¯¼ä¹¦ æ·»åŠ å—æŽ§æ–‡ä»¶ å­ æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2024-12-04 10:43:32
 */
public interface DeviceOperationInstructionService extends IService<OperationInstruction> {
    List<DeviceOperationInstructionDto> homeworkGuidebookEditor(Integer instructionId);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceRecordDto;
import com.ruoyi.device.pojo.DeviceRecord;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * cnas设备使用记录表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
public interface DeviceRecordService extends IService<DeviceRecord> {
    IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber);
    /**
     * å¯¼å‡ºè®¾å¤‡ä½¿ç”¨è®°å½•
     *
     * @param deviceId
     * @param response
     */
    void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceScrappedService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceScrapped;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡æŠ¥åºŸç”³è¯·è¡¨ æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 01:53:47
 */
public interface DeviceScrappedService extends IService<DeviceScrapped> {
    /**
     * è®¾å¤‡æŠ¥åºŸç”³è¯·åˆ—表
     * @param page
     * @param deviceScrapped
     * @return
     */
    IPage<DeviceScrapped> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped);
    /**
     * æ–°å¢žè®¾å¤‡æŠ¥åºŸç”³è¯·
     * @param deviceScrapped
     * @return
     */
    boolean addDeviceScrapped(DeviceScrapped deviceScrapped);
    /**
     * ä¿®æ”¹è®¾å¤‡æŠ¥åºŸç”³è¯·
     * @param scrappedId è®¾å¤‡æŠ¥åºŸç”³è¯·id
     * @return
     */
    Result exportDeviceScrapped(Integer scrappedId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.device.dto.DeviceCollectionDto;
import com.ruoyi.device.dto.DeviceDto;
import com.ruoyi.device.pojo.Device;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
 * è®¾å¤‡(Device)表服务接口
 */
public interface DeviceService extends IService<Device> {
    IPage<DeviceDto> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull);
    int addDeviceParameter(Device itemParameter);
    int delDeviceParameter(Integer id);
    int upDeviceParameter(Device itemParameter);
    List<Device> selectEquipmentOverview();
    List<Device> authorizedPerson();
    List<Device> search(Integer status, String deviceName, String specificationModel, String largeCategory);
    List<Device> selectDeviceByCategory(String inspectionItem, String inspectionItemSubclass,String laboratory);
    DeviceDto selectDeviceByCode(Integer id);
    Result<?> dataAcquisition(HttpServletRequest request, DeviceCollectionDto dto);
    List<Map<String, Object>> treeDevice(String deviceName);
    /**
     * å¯¼å‡ºè®¾å¤‡åˆ—表
     * @param deviceId
     * @param response
     */
    void exportDeviceFile(Integer deviceId, HttpServletResponse response);
    /**
     * å¯¼å‡ºè®¾å¤‡å·¥å…·æ˜Žç»†
     * @param response
     */
    void exportEquipmentDetails(HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceStateService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceStateDto;
import com.ruoyi.device.pojo.DeviceState;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡åœç”¨/启用 æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2024-09-26 09:51:40
 */
public interface DeviceStateService extends IService<DeviceState> {
    IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber);
    /**
     * å¯¼å‡ºè®¾å¤‡çŠ¶æ€
     *
     * @param deviceId
     * @param processNumber
     * @param response
     */
    void exportDeviceStatus(Integer deviceId, String processNumber, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementDetailsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:58
 */
public interface DeviceTraceabilityManagementDetailsService extends IService<DeviceTraceabilityManagementDetails> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:44
 */
public interface DeviceTraceabilityManagementService extends IService<DeviceTraceabilityManagement> {
    /**
     * åˆ†é¡µæŸ¥è¯¢é‡å€¼æº¯æºè®¡åˆ’
     * @param page åˆ†é¡µå‚æ•°
     * @param itemParameter é‡å€¼æº¯æºè®¡åˆ’
     * @return
     */
    Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(@Param("page") Page page, @Param("itemParameter") DeviceTraceabilityManagementDto itemParameter);
    /**
     * æ–°å¢žé‡å€¼æº¯æºè®¡åˆ’
     * @param deviceTraceabilityManagementDto é‡å€¼æº¯æºè®¡åˆ’
     */
    Result addTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
    /**
     * ä¿®æ”¹é‡å€¼æº¯æºè®¡åˆ’
     * @param deviceTraceabilityManagementDto é‡å€¼æº¯æºè®¡åˆ’
     */
    Result updateTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
    /**
     * åˆ é™¤é‡å€¼æº¯æºè®¡åˆ’
     * @param deviceTraceabilityManagementDto é‡å€¼æº¯æºè®¡åˆ’
     */
    Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
    /**
     * æŸ¥è¯¢é‡å€¼æº¯æºè®¡åˆ’详情
     */
    Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId);
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceTraceabilityManagementDto
     * @return
     */
    Result submitReviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
    /**
     * é‡å€¼æº¯æºè®¡åˆ’审核
     */
    Result reviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
    /**
     * é‡å€¼æº¯æºè®¡åˆ’导出
     */
    Result exportDeviceTraceabilityManagementDto(Integer traceabilityManagementId, HttpServletResponse response);
}
cnas-device/src/main/java/com/ruoyi/device/service/IDeviceMetricService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceMetric;
public interface IDeviceMetricService extends IService<DeviceMetric> {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.device.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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.device.mapper.CollectBridgeMapper;
import com.ruoyi.device.pojo.CollectBridge;
import com.ruoyi.device.service.CollectBridgeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
/**
 * æ•°å­—电桥采集
 *
 * @author zhuo
 * @since 2025-02-19
 */
@Service
@Slf4j
public class CollectBridgeServiceImpl extends ServiceImpl<CollectBridgeMapper, CollectBridge> implements CollectBridgeService {
    /**
     * å¡«å……采集数据
     * @param jsonObject
     */
    @Override
    public void addBridgeValue(JSONObject jsonObject) {
        JSONArray dataArray = jsonObject.getJSONArray("data");
        for (int i = 0; i < dataArray.size(); i++) {
            JSONObject listInfo = dataArray.getJSONObject(i);
            // å­˜å‚¨æ•°æ®
            String dataStream = listInfo.getString("dataStream");
            if (dataStream.equals("DQCS.DQCS.SN")) {
                JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
                JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
                String entrustCode = pointsJSONObject.getString("value");
                // è§£æžæ—¶é—´æˆ³
                Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time"));
                LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
                // å…ˆå­˜å‚¨ç¼–号, åŽç»­å­˜å‚¨å€¼
                CollectBridge collectBridge = new CollectBridge();
                collectBridge.setEntrustCode(entrustCode);
                collectBridge.setCollectDate(collectDate);
                baseMapper.insert(collectBridge);
            }
            // å¯„存器地址等于64获取结果值
            if (dataStream.equals("DQCS.DQCS.64")) {
                JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
                JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
                String value = pointsJSONObject.getString("value");
                if (value.equals("64")) {
                    for (int j = 0; j < dataArray.size(); j++) {
                        JSONObject listInfo2 = dataArray.getJSONObject(j);
                        String dataStream2 = listInfo2.getString("dataStream");
                        // å¯„存器地址等于64获取结果值
                        if (dataStream2.equals("DQCS.DQCS.DZZ")) {
                            JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints");
                            JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0);
                            String collectValue = pointsJSONObject2.getString("value");
                            // è§£æžæ—¶é—´æˆ³
                            Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time"));
                            LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
                            // æŸ¥è¯¢æœ€æ–°ä¸€æ¡æ•°æ®
                            CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery()
                                    .orderByDesc(CollectBridge::getCollectDate)
                                    .last("limit 1"));
                            // åˆ¤æ–­ä¸¤æ¡æ•°æ®æ˜¯å¦ç›¸å·®åœ¨10分钟之内和有没有编号
                            if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) &&
                                    StringUtils.isNotBlank(collectBridge.getEntrustCode())) {
                                // ä¿®æ”¹æ£€éªŒå€¼
                                collectBridge.setCollectValue(collectValue);
                                baseMapper.updateById(collectBridge);
                            } else {
                                // åªå­˜å‚¨å€¼
                                CollectBridge bridge = new CollectBridge();
                                bridge.setCollectValue(collectValue);
                                bridge.setCollectDate(collectDate);
                                baseMapper.insert(bridge);
                            }
                        }
                    }
                }
            }
        }
    }
    public static boolean isWithinTenMinutes(LocalDateTime dateTime1, LocalDateTime dateTime2) {
        Duration duration = Duration.between(dateTime1, dateTime2);
        long minutesDifference = Math.abs(duration.toMinutes());
        return minutesDifference <= 10;
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.ruoyi.device.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.core.domain.Result;
import com.ruoyi.device.dto.DataConfigDto;
import com.ruoyi.device.mapper.DataConfigMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.DataConfig;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.service.DataConfigService;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-07-13 12:23:00
 */
@Service
@AllArgsConstructor
public class DataConfigServiceImpl extends ServiceImpl<DataConfigMapper, DataConfig> implements DataConfigService {
    private DeviceMapper deviceMapper;
    private DataConfigMapper dataConfigMapper;
    /**
     * ç»´æŠ¤è®¾å¤‡æ–‡ä»¶é…ç½®
     * @param dataConfigList
     */
    @Override
    public void saveDeviceFileConfiguration(DataConfigDto dataConfigList) {
        if (dataConfigList.getDeviceId() == null) {
            throw new RuntimeException("缺少设备Id");
        }
        Device device = new Device();
        BeanUtils.copyProperties(dataConfigList, device);
        device.setId(dataConfigList.getDeviceId());
        deviceMapper.updateById(device);
    }
    /**
     * æ•°é‡‡é…ç½®
     * @param dataConfigList
     */
    @Override
    public void saveDataAcquisitionConfiguration(DataConfigDto dataConfigList) {
        if (dataConfigList.getDeviceId() == null) {
            throw new RuntimeException("缺少设备id");
        }
        for (DataConfig dataConfig : dataConfigList.getDataConfigList()) {
            if (dataConfig.getStructureItemParameterId() == null) {
                throw new RuntimeException("缺少检验项id");
            }
            dataConfig.setDeviceId(dataConfigList.getDeviceId());
        }
        this.saveOrUpdateBatch(dataConfigList.getDataConfigList());
    }
    @Override
    public Result<?> queryDataAcquisitionConfiguration(DataConfig dataConfig) {
        return Result.success(dataConfigMapper.selectDataConfigList(dataConfig.getDeviceId()));
    }
    /**
     * æŸ¥è¯¢æ£€éªŒé¡¹æ•°é‡‡é…ç½®
     * @param dataConfig
     * @return
     */
    @Override
    public Result<?> queryProductConfiguration(DataConfig dataConfig) {
        if (dataConfig.getStructureItemParameterId() == null) {
            throw new RuntimeException("缺少检测项id");
        }
        List<DataConfig> list = baseMapper.selectList(Wrappers.<DataConfig>lambdaQuery().eq(DataConfig::getStructureItemParameterId, dataConfig.getStructureItemParameterId()));
        return Result.success(list);
    }
    /**
     * æŸ¥è¯¢äº†ç»‘定但是没有配置的检验项
     * @param deviceId
     * @return
     */
    @Override
    public IPage<DataConfig> getNoConfigProduct(Page page, Integer deviceId) {
        return baseMapper.getNoConfigProduct(page, deviceId);
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAcceptanceFileServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceAcceptanceFileMapper;
import com.ruoyi.device.pojo.DeviceAcceptanceFile;
import com.ruoyi.device.service.DeviceAcceptanceFileService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备)附件表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:26
 */
@Service
public class DeviceAcceptanceFileServiceImpl extends ServiceImpl<DeviceAcceptanceFileMapper, DeviceAcceptanceFile> implements DeviceAcceptanceFileService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAcceptanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package com.ruoyi.device.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.device.mapper.DeviceAcceptanceFileMapper;
import com.ruoyi.device.mapper.DeviceAcceptanceMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceAcceptance;
import com.ruoyi.device.pojo.DeviceAcceptanceFile;
import com.ruoyi.device.service.DeviceAcceptanceService;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
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.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
/**
 * <p>
 * è®¾å¤‡éªŒæ”¶(装备) æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 01:45:14
 */
@Service
public class DeviceAcceptanceServiceImpl extends ServiceImpl<DeviceAcceptanceMapper, DeviceAcceptance> implements DeviceAcceptanceService {
    @Resource
    private DeviceAcceptanceFileMapper deviceAcceptanceFileMapper;
    @Resource
    private DeviceMapper deviceMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Value("${wordUrl}")
    private String wordUrl;
    /**
     * è®¾å¤‡éªŒæ”¶åˆ—表
     * @param page
     * @param deviceAcceptance
     * @return
     */
    @Override
    public IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance) {
        return baseMapper.pageDeviceAcceptance(page, QueryWrappers.queryWrappers(deviceAcceptance));
    }
    /**
     * è®¾å¤‡éªŒæ”¶é™„ä»¶
     * @param acceptanceId
     * @param file
     * @return
     */
    @Override
    public boolean uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file) {
        if (acceptanceId == null) {
            throw new ErrorException("缺少验收id");
        }
        String urlString;
        String pathName;
        String path;
        String filename = file.getOriginalFilename();
        String contentType = file.getContentType();
        DeviceAcceptanceFile acceptanceFile = new DeviceAcceptanceFile();
        acceptanceFile.setAcceptanceId(acceptanceId);
        acceptanceFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // æ˜¯å›¾ç‰‡
            path = imgUrl;
            acceptanceFile.setType(1);
        } else {
            // æ˜¯æ–‡ä»¶
            path = wordUrl;
            acceptanceFile.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));
            acceptanceFile.setFileUrl(pathName);
            deviceAcceptanceFileMapper.insert(acceptanceFile);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("附件上传错误");
            return false;
        }
    }
    /**
     * è®¾å¤‡éªŒæ”¶å¯¼å‡º
     * @param acceptanceId  è®¾å¤‡éªŒæ”¶id
     * @param response   å“åº”体
     * @return
     */
    @Override
    public void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response) {
        DeviceAcceptance deviceAcceptance = baseMapper.selectById(acceptanceId);
        if (deviceAcceptance == null) {
            throw new ErrorException("设备验收不存在");
        }
        Device device = null;
        if (deviceAcceptance.getDeviceId() != null) {
            device = deviceMapper.selectById(deviceAcceptance.getDeviceId());
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/acceptance-certificate.docx");
        Configure configure = Configure.builder()
                .bind("deviceInspectionRecordDetailsList", new HackLoopTableRenderPolicy())
                .build();
        Device finalDevice = device;
        String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceAcceptance", deviceAcceptance);
                    put("device", finalDevice);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    deviceName+ "验收单", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAccidentReportServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,190 @@
package com.ruoyi.device.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceAccidentReportDto;
import com.ruoyi.device.mapper.DeviceAccidentReportMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceAccidentReport;
import com.ruoyi.device.service.DeviceAccidentReportService;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
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.LocalDate;
import java.util.HashMap;
/**
 * <p>
 * è®¾å¤‡äº‹æ•…报告单 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 06:31:12
 */
@Service
public class DeviceAccidentReportServiceImpl extends ServiceImpl<DeviceAccidentReportMapper, DeviceAccidentReport> implements DeviceAccidentReportService {
    @Resource
    private UserMapper userMapper;
    @Resource
    private DeviceMapper deivceMapper;
    /**
     * è®¾å¤‡äº‹æ•…报告列表
     * @param page
     * @param deviceAccidentReport
     * @return
     */
    @Override
    public IPage<DeviceAccidentReport> pageDeviceAccidentReport(Page page, DeviceAccidentReport deviceAccidentReport) {
        return baseMapper.pageDeviceAccidentReport(page, QueryWrappers.queryWrappers(deviceAccidentReport));
    }
    /**
     * æ–°å¢žè®¾å¤‡äº‹æ•…报告
     * @param deviceAccidentReport
     * @return
     */
    @Override
    public boolean addDeviceAccidentReport(DeviceAccidentReport deviceAccidentReport) {
        DeviceAccidentReport accidentReport = new DeviceAccidentReport();
        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
        switch (deviceAccidentReport.getFlowType()) {
            case 0:
                // æŠ¥å‘Š
                BeanUtils.copyProperties(deviceAccidentReport, accidentReport);
                accidentReport.setDescriptionOfAccident(deviceAccidentReport.getDescriptionOfAccident());
                accidentReport.setReportUserId(user.getId());
                accidentReport.setReportUser(user.getName());
                accidentReport.setReportDate(LocalDate.now());
                // è¯„估人信息
                User assessorUser = userMapper.selectById(deviceAccidentReport.getAssessorUserId());
                accidentReport.setAssessorUserId(assessorUser.getId());
                accidentReport.setAssessorUser(assessorUser.getName());
                baseMapper.insert(accidentReport);
                break;
            case 1:
                accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
                // è¯„ä¼°
                accidentReport.setAssessorOpinion(deviceAccidentReport.getAssessorOpinion());
                accidentReport.setAssessorDate(LocalDate.now());
                // éƒ¨é—¨è´Ÿè´£äºº
                User departmentHeadUser = userMapper.selectById(deviceAccidentReport.getDepartmentHeadUserId());
                accidentReport.setDepartmentHeadUserId(departmentHeadUser.getId());
                accidentReport.setDepartmentHeadUser(departmentHeadUser.getName());
                baseMapper.updateById(accidentReport);
                break;
            case 2:
                accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
                // éƒ¨é—¨è´Ÿè´£äººæ„è§
                accidentReport.setDepartmentHeadOpinion(deviceAccidentReport.getDepartmentHeadOpinion());
                accidentReport.setDepartmentHeadDate(LocalDate.now());
                // æŠ€æœ¯è´Ÿè´£äººä¿¡æ¯
                User technicalDirectorUser = userMapper.selectById(deviceAccidentReport.getTechnicalDirectorUserId());
                accidentReport.setTechnicalDirectorUserId(technicalDirectorUser.getId());
                accidentReport.setTechnicalDirectorUser(technicalDirectorUser.getName());
                baseMapper.updateById(accidentReport);
                break;
            case 3:
                accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
                // æŠ€æœ¯è´Ÿè´£äººæ„è§
                accidentReport.setTechnicalDirectorOpinion(deviceAccidentReport.getTechnicalDirectorOpinion());
                accidentReport.setTechnicalDirectorDate(LocalDate.now());
                // ä¸»ä»»ä¿¡æ¯
                User directorHeadUser = userMapper.selectById(deviceAccidentReport.getDirectorHeadUserId());
                accidentReport.setDirectorHeadUserId(directorHeadUser.getId());
                accidentReport.setDirectorHeadUser(directorHeadUser.getName());
                baseMapper.updateById(accidentReport);
                break;
            case 4:
                accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
                // ä¸»ä»»æ„è§
                accidentReport.setDirectorHeadOpinion(deviceAccidentReport.getDirectorHeadOpinion());
                accidentReport.setDirectorHeadDate(LocalDate.now());
                accidentReport.setIsFinish(1);
                baseMapper.updateById(accidentReport);
                break;
        }
        return true;
    }
    /**
     * å¯¼å‡ºè®¾å¤‡äº‹æ•…报告
     * @param accidentReportId è®¾å¤‡äº‹æ•…报告id
     * @param response å“åº”
     */
    @Override
    public void exportDeviceAccidentReport(Integer accidentReportId, HttpServletResponse response) {
        // æŸ¥è¯¢äº‹æ•…报告
        DeviceAccidentReportDto deviceAccidentReport = baseMapper.selectDeviceAccidentReportById(accidentReportId);
        Device device = deivceMapper.selectById(deviceAccidentReport.getDeviceId());
        device = device == null ? new Device() : device;
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-accident-report.docx");
        Configure configure = Configure.builder()
                .build();
        Device finalDevice = device;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceAccidentReport", deviceAccidentReport);
                    put("device", finalDevice);
                    // æŠ¥å‘Šäººç­¾å
                    put("reportUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getReportUserId()));
                    // è¯„估人签名
                    put("assessorUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getAssessorUserId()));
                    // éƒ¨é—¨è´Ÿè´£äººç­¾å
                    put("departmentHeadUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getDepartmentHeadUserId()));
                    // æŠ€æœ¯è´Ÿè´£äººç­¾å
                    put("technicalDirectorUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getTechnicalDirectorUserId()));
                    // ä¸»ä»»ç­¾å
                    put("directorHeadUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getDepartmentHeadUserId()));
                }});
        try {
            response.setContentType("application/msword");
            String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
            String fileName = URLEncoder.encode(
                    deviceName + "设备事故报告单", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBorrowServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
package com.ruoyi.device.service.impl;
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.numgen.NumberGenerator;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.mapper.DeviceBorrowMapper;
import com.ruoyi.device.mapper.DeviceLogMapper;
import com.ruoyi.device.pojo.DeviceBorrow;
import com.ruoyi.device.pojo.DeviceLog;
import com.ruoyi.device.service.DeviceBorrowService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
/**
 * <p>
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 10:53:51
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceBorrowServiceImpl extends ServiceImpl<DeviceBorrowMapper, DeviceBorrow> implements DeviceBorrowService {
    @Resource
    private DeviceBorrowMapper deviceBorrowMapper;
    @Resource
    private DeviceLogMapper deviceLogMapper;
    @Resource
    private UserMapper userMapper;
    @Autowired
    private NumberGenerator<DeviceBorrow> numberGenerator;
    @Override
    public IPage<DeviceBorrow> deviceBorrowPage(Page page, DeviceBorrow deviceBorrow) {
        return deviceBorrowMapper.deviceBorrowPage(page, QueryWrappers.queryWrappers(deviceBorrow));
    }
    @Override
    public int saveDeviceBorrow(DeviceBorrow deviceBorrow) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        //新增的时候添加新建流程
        if (ObjectUtils.isEmpty(deviceBorrow.getId())) {
            deviceBorrow.setSubmitUser(user.getName());
            String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
            String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
            String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceBorrow::getProcessNumber);
            deviceBorrow.setProcessNumber(processNumber);
            deviceBorrowMapper.insert(deviceBorrow);
            DeviceLog deviceLog = new DeviceLog();
            deviceLog.setOperator(user.getName());
            deviceLog.setOperationTime(LocalDateTime.now());
            deviceLog.setOperationType("新建");
            deviceLog.setOperationContent("新建流程");
            deviceLog.setRelevanceForm("device_borrow");
            deviceLog.setRelevanceId(deviceBorrow.getId());
            deviceLogMapper.insert(deviceLog);
        } else {
            DeviceBorrow borrow = deviceBorrowMapper.selectById(deviceBorrow.getId());
            deviceBorrowMapper.updateById(deviceBorrow);
            //通过或者驳回增加流程跟踪
            if (deviceBorrow.getNowState().equals("关闭")) {
                DeviceLog deviceLog = new DeviceLog();
                deviceLog.setOperator(user.getName());
                deviceLog.setOperationTime(LocalDateTime.now());
                deviceLog.setOperationType("接收通过");
                deviceLog.setRelevanceForm("device_borrow");
                deviceLog.setRelevanceId(deviceBorrow.getId());
                deviceLogMapper.insert(deviceLog);
            }
            else if (deviceBorrow.getNowState().equals("提交") && borrow.getNowState().equals("接收")) {
                DeviceLog deviceLog = new DeviceLog();
                deviceLog.setOperator(user.getName());
                deviceLog.setOperationTime(LocalDateTime.now());
                deviceLog.setOperationType("接收驳回");
                deviceLog.setRelevanceForm("device_borrow");
                deviceLog.setRelevanceId(deviceBorrow.getId());
                deviceLogMapper.insert(deviceLog);
            }
        }
        return 0;
    }
    @Override
    public DeviceBorrow getDeviceBorrow(Integer id) {
        List<DeviceLog> deviceLogs = deviceLogMapper.selectList(Wrappers.<DeviceLog>lambdaQuery()
                .eq(DeviceLog::getRelevanceForm, "device_borrow")
                .eq(DeviceLog::getRelevanceId, id));
        DeviceBorrow deviceBorrow = deviceBorrowMapper.selectById(id);
        deviceBorrow.setDeviceLogs(deviceLogs);
        return deviceBorrow;
    }
    @Override
    public List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId) {
        return deviceBorrowMapper.getDeviceBorrowBydeviceId(deviceId);
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceBreakdownMaintenanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.ruoyi.device.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceBreakdownMaintenance;
import com.ruoyi.device.mapper.DeviceBreakdownMaintenanceMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.service.DeviceBreakdownMaintenanceService;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
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.LocalDate;
import java.util.HashMap;
/**
 * <p>
 * è®¾å¤‡æ•…障维修表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 04:50:57
 */
@Service
public class DeviceBreakdownMaintenanceServiceImpl extends ServiceImpl<DeviceBreakdownMaintenanceMapper, DeviceBreakdownMaintenance> implements DeviceBreakdownMaintenanceService {
    @Resource
    private UserMapper userMapper;
    @Resource
    private DeviceMapper deivceMapper;
    /**
     * è®¾å¤‡æ•…障维修列表
     * @param page
     * @param deviceBreakdownMaintenance
     * @return
     */
    @Override
    public IPage<DeviceBreakdownMaintenance> pageDeviceBreakdownMaintenance(Page page, DeviceBreakdownMaintenance deviceBreakdownMaintenance) {
        return baseMapper.pageDeviceBreakdownMaintenance(page, QueryWrappers.queryWrappers(deviceBreakdownMaintenance));
    }
    /**
     * æ–°å¢žè®¾å¤‡æ•…障维修
     * @param deviceBreakdownMaintenance
     * @return
     */
    @Override
    public boolean addDeviceBreakdownMaintenance(DeviceBreakdownMaintenance deviceBreakdownMaintenance) {
        DeviceBreakdownMaintenance breakdownMaintenance = new DeviceBreakdownMaintenance();
        //当前登录用户
        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
        switch (deviceBreakdownMaintenance.getFlowType()) {
            case 0:
                BeanUtils.copyProperties(deviceBreakdownMaintenance, breakdownMaintenance);
                // ç”³è¯·
                breakdownMaintenance.setDamageOrMalfunction(deviceBreakdownMaintenance.getDamageOrMalfunction());
                breakdownMaintenance.setApplicantUserId(user.getId());
                breakdownMaintenance.setApplicantUser(user.getName());
                breakdownMaintenance.setRepairDate(deviceBreakdownMaintenance.getRepairDate());
                // å¤„理人信息
                User departmentHeadUser = userMapper.selectById(deviceBreakdownMaintenance.getDepartmentHeadUserId());
                breakdownMaintenance.setApplicantUserId(departmentHeadUser.getId());
                breakdownMaintenance.setApplicantUser(departmentHeadUser.getName());
                baseMapper.insert(breakdownMaintenance);
                break;
            case 1:
                breakdownMaintenance.setMaintenanceId(deviceBreakdownMaintenance.getMaintenanceId());
                // ç”³è¯·éƒ¨é—¨è´Ÿè´£äººæ„è§
                breakdownMaintenance.setDepartmentHeadOpinion(deviceBreakdownMaintenance.getDepartmentHeadOpinion());
                breakdownMaintenance.setDepartmentHeadDate(LocalDate.now());
                baseMapper.updateById(breakdownMaintenance);
                break;
            case 2:
                breakdownMaintenance.setMaintenanceId(deviceBreakdownMaintenance.getMaintenanceId());
                // è®¡é‡å®¤æ„è§
                breakdownMaintenance.setMaintenanceRecord(deviceBreakdownMaintenance.getMaintenanceRecord());
                breakdownMaintenance.setMaintenanceUser(deviceBreakdownMaintenance.getMaintenanceUser());
                breakdownMaintenance.setMaintenanceDate(deviceBreakdownMaintenance.getMaintenanceDate());
                breakdownMaintenance.setIsFinish(1);
                baseMapper.updateById(breakdownMaintenance);
                break;
        }
        return true;
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æ•…障维修
     * @param maintenanceId è®¾å¤‡æ•…障维修id
     * @param response å“åº”
     */
    @Override
    public void exportDeviceBreakdownMaintenance(Integer maintenanceId, HttpServletResponse response) {
        // æŸ¥è¯¢å¤–部设备申请
        DeviceBreakdownMaintenance deviceBreakdownMaintenance = baseMapper.selectById(maintenanceId);
        Device device = null;
        if (deviceBreakdownMaintenance.getDeviceId() != null) {
            device = deivceMapper.selectById(deviceBreakdownMaintenance.getDeviceId());
            device = device == null ? new Device() : device;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-breakdown-maintenance.docx");
        Configure configure = Configure.builder()
                .build();
        Device finalDevice = device;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceBreakdownMaintenance", deviceBreakdownMaintenance);
                    put("device", finalDevice);
                    // ç”³è¯·äººç­¾å
                    put("applicantUrl", UserUtils.getFinalUserSignatureUrl(deviceBreakdownMaintenance.getApplicantUserId()));
                    // éƒ¨é—¨è´Ÿè´£äººç­¾å
                    put("headUrl", UserUtils.getFinalUserSignatureUrl(deviceBreakdownMaintenance.getDepartmentHeadUserId()));
                }});
        try {
            response.setContentType("application/msword");
            String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
            String fileName = URLEncoder.encode(
                    deviceName + "设备故障维修申请表", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceCalibrationPlanDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceCalibrationPlanDetailMapper;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
import com.ruoyi.device.service.DeviceCalibrationPlanDetailService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:29
 */
@Service
public class DeviceCalibrationPlanDetailServiceImpl extends ServiceImpl<DeviceCalibrationPlanDetailMapper, DeviceCalibrationPlanDetail> implements DeviceCalibrationPlanDetailService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceCalibrationPlanServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,357 @@
package com.ruoyi.device.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.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.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceCalibrationPlanDetailDto;
import com.ruoyi.device.dto.DeviceCalibrationPlanDto;
import com.ruoyi.device.excel.upload.DeviceCalibrationPlanDetailUpload;
import com.ruoyi.device.mapper.DeviceCalibrationPlanDetailMapper;
import com.ruoyi.device.mapper.DeviceCalibrationPlanMapper;
import com.ruoyi.device.pojo.DeviceCalibrationPlan;
import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail;
import com.ruoyi.device.service.DeviceCalibrationPlanDetailService;
import com.ruoyi.device.service.DeviceCalibrationPlanService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
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.IOException;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡†è®¡åˆ’主表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 03:58:17
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceCalibrationPlanServiceImpl extends ServiceImpl<DeviceCalibrationPlanMapper, DeviceCalibrationPlan> implements DeviceCalibrationPlanService {
    @Resource
    private DeviceCalibrationPlanDetailMapper deviceCalibrationPlanDetailMapper;
    @Resource
    private DeviceCalibrationPlanDetailService deviceCalibrationPlanDetailService;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private UserMapper userMapper;
    /**
     * æ–°å¢žè®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @param calibrationPlanDto
     * @return
     */
    @Override
    public boolean addDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto) {
        // å½“前登录用户
        Integer userId = SecurityUtils.getUserId().intValue();
        // ç¼–制日期
        calibrationPlanDto.setWriteUserId(userId);
        calibrationPlanDto.setWriteTime(LocalDateTime.now());
        baseMapper.insert(calibrationPlanDto);
        // æ·»åŠ è¯¦æƒ…
        if (CollectionUtils.isNotEmpty(calibrationPlanDto.getCalibrationPlanDetailList())) {
            for (DeviceCalibrationPlanDetail calibrationPlanDetail : calibrationPlanDto.getCalibrationPlanDetailList()) {
                calibrationPlanDetail.setPlanId(calibrationPlanDto.getPlanId());
            }
            deviceCalibrationPlanDetailService.saveBatch(calibrationPlanDto.getCalibrationPlanDetailList());
        }
        return true;
    }
    /**
     * å¯¼å…¥è®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @param file
     * @return
     */
    @Override
    public boolean importDeviceCalibrationPlan(MultipartFile file, String planYear) {
        // å½“前登录用户
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ–‡ä»¶åç§°
        String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
        DeviceCalibrationPlan calibrationPlan = new DeviceCalibrationPlan();
        calibrationPlan.setPlanName(fileName);
        calibrationPlan.setPlanYear(planYear);
        calibrationPlan.setWriteUserId(userId);
        calibrationPlan.setWriteTime(LocalDateTime.now());
        baseMapper.insert(calibrationPlan);
        List<DeviceCalibrationPlanDetail> detailsUploadList = new ArrayList<>();
        // å¯¼å…¥é™„件内容
        try {
            // excel解析
            EasyExcel.read(file.getInputStream(), DeviceCalibrationPlanDetailUpload.class, new AnalysisEventListener<DeviceCalibrationPlanDetailUpload>() {
                @Override
                public void invoke(DeviceCalibrationPlanDetailUpload detailsUpload, AnalysisContext analysisContext) {
                    // åˆ¤æ–­æ˜¯å¦ä¸ºç©º
                    if (StringUtils.isNotBlank(detailsUpload.getDeviceName()) &&
                            StringUtils.isNotBlank(detailsUpload.getDeviceNumber())) {
                        // å¯¹è±¡å¤åˆ¶
                        DeviceCalibrationPlanDetail calibrationPlanDetail = new DeviceCalibrationPlanDetail();
                        BeanUtils.copyProperties(detailsUpload, calibrationPlanDetail);
                        // æ ¼å¼è¯æœ€è¿‘检定时间和本年计划校准时间
                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
                        calibrationPlanDetail.setLastDate(LocalDate.parse(detailsUpload.getLastDate(), formatter));
                        calibrationPlanDetail.setPlanDate(LocalDate.parse(detailsUpload.getLastDate(), formatter));
                        calibrationPlanDetail.setPlanId(calibrationPlan.getPlanId());
                        detailsUploadList.add(calibrationPlanDetail);
                    }
                }
                @Override
                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                }
            }).sheet().doRead();
            deviceCalibrationPlanDetailService.saveBatch(detailsUploadList);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return true;
    }
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceCalibrationPlan
     * @return
     */
    @Override
    public boolean submiatRatifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan) {
        baseMapper.update(null, Wrappers.<DeviceCalibrationPlan>lambdaUpdate()
                .eq(DeviceCalibrationPlan::getPlanId, deviceCalibrationPlan.getPlanId())
                .set(DeviceCalibrationPlan::getRatifyUserId, deviceCalibrationPlan.getRatifyUserId())
                .set(DeviceCalibrationPlan::getRatifyRemark, null)
                .set(DeviceCalibrationPlan::getRatifyStatus, null)
                .set(DeviceCalibrationPlan::getRatifyTime, null)
        );
        DeviceCalibrationPlan calibrationPlan = baseMapper.selectById(deviceCalibrationPlan.getPlanId());
        // å‘送消息
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        // æ¶ˆæ¯å‘送
        InformationNotification info = new InformationNotification();
        // å‘送人
        info.setCreateUser(user.getName());
        info.setMessageType("6");
        info.setTheme("CNAS设备校准计划批准通知");
        info.setContent(calibrationPlan.getPlanName() + "的设备校准计划待批准");
        info.setSenderId(userId);
        // æŽ¥æ”¶äºº
        info.setConsigneeId(deviceCalibrationPlan.getRatifyUserId());
        info.setJumpPath(MenuJumpPathConstants.DEVICE);
        informationNotificationService.addInformationNotification(info);
        // å‘送企业微信通知
        threadPoolTaskExecutor.execute(() -> {
            // æŸ¥è¯¢æŽ¥æ”¶äºº
            User personnel = userMapper.selectById(deviceCalibrationPlan.getPlanId());
            String message = "";
            message += "CNAS设备校准计划批准通知";
            message += "\n请去资源管理-设备一层目录-设备校准计划填写";
            message += "\n" + calibrationPlan.getPlanName() + "的校准计划待批准";
            //发送企业微信消息通知
            try {
                WxCpUtils.inform(personnel.getAccount(), message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        return true;
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’批准
     * @param deviceCalibrationPlan
     * @return
     */
    @Override
    public boolean ratifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan) {
        baseMapper.update(null, Wrappers.<DeviceCalibrationPlan>lambdaUpdate()
                .eq(DeviceCalibrationPlan::getPlanId, deviceCalibrationPlan.getPlanId())
                .set(DeviceCalibrationPlan::getRatifyRemark, deviceCalibrationPlan.getRatifyRemark())
                .set(DeviceCalibrationPlan::getRatifyStatus, deviceCalibrationPlan.getRatifyStatus())
                .set(DeviceCalibrationPlan::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’列表
     * @param page
     * @param deviceCalibrationPlan
     * @return
     */
    @Override
    public IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan deviceCalibrationPlan) {
        return baseMapper.pageDeviceCalibrationPlan(page, QueryWrappers.queryWrappers(deviceCalibrationPlan));
    }
    /**
     * è®¾å¤‡æ ¡å‡†è®¡åˆ’详情列表
     * @param page
     * @param deviceCalibrationPlanDetails
     * @return
     */
    @Override
    public IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) {
        if (deviceCalibrationPlanDetails.getPlanId() == null) {
            return new Page();
        }
        return deviceCalibrationPlanDetailMapper.pageDeviceCalibrationPlanDetail(page, QueryWrappers.queryWrappers(deviceCalibrationPlanDetails));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æ ¡å‡†è®¡åˆ’
     * @param deviceCalibrationPlanId
     * @param response
     */
    @Override
    public void exportDeviceCalibrationPlanDetail(Integer deviceCalibrationPlanId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡æ ¡å‡†è®¡åˆ’
        DeviceCalibrationPlan deviceCalibrationPlan = baseMapper.selectById(deviceCalibrationPlanId);
        DeviceCalibrationPlanDto deviceCalibrationPlanDto = new DeviceCalibrationPlanDto();
        BeanUtils.copyProperties(deviceCalibrationPlan, deviceCalibrationPlanDto);
        // è®¾ç½®ç¼–制和批准时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        deviceCalibrationPlanDto.setWriteTimeStr(deviceCalibrationPlan.getWriteTime() == null ? null : deviceCalibrationPlan.getWriteTime().format(formatter));
        deviceCalibrationPlanDto.setRatifyTimeStr(deviceCalibrationPlan.getRatifyTime() == null ? null : deviceCalibrationPlan.getRatifyTime().format(formatter));
        // æŸ¥è¯¢è®¾å¤‡æ ¡å‡†è®¡åˆ’详情
        List<DeviceCalibrationPlanDetail> deviceCalibrationPlanDetailList = deviceCalibrationPlanDetailMapper.selectList(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery()
                .eq(DeviceCalibrationPlanDetail::getPlanId, deviceCalibrationPlanId)
                .orderByAsc(DeviceCalibrationPlanDetail::getPlanDate));
        // è®¾ç½®åºå· å’Œ æ—¶é—´
        ArrayList<DeviceCalibrationPlanDetailDto> deviceCalibrationPlanDetailDtoList = new ArrayList<>();
        deviceCalibrationPlanDetailList.forEach(deviceCalibrationPlanDetail -> {
            DeviceCalibrationPlanDetailDto deviceCalibrationPlanDetailDto = new DeviceCalibrationPlanDetailDto();
            BeanUtils.copyProperties(deviceCalibrationPlanDetail, deviceCalibrationPlanDetailDto);
            deviceCalibrationPlanDetailDto.setIndex(deviceCalibrationPlanDetailList.indexOf(deviceCalibrationPlanDetail) + 1);
            deviceCalibrationPlanDetailDto.setLastDateStr(deviceCalibrationPlanDetail.getLastDate() == null ? null : deviceCalibrationPlanDetail.getLastDate().format(formatter));
            deviceCalibrationPlanDetailDto.setPlanDateStr(deviceCalibrationPlanDetail.getPlanDate() == null ? null : deviceCalibrationPlanDetail.getPlanDate().format(formatter));
            deviceCalibrationPlanDetailDtoList.add(deviceCalibrationPlanDetailDto);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-calibration-plan.docx");
        Configure configure = Configure.builder()
                .bind("deviceCalibrationPlanDetailDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceCalibrationPlan", deviceCalibrationPlanDto);
                    put("deviceCalibrationPlanDetailDtoList", deviceCalibrationPlanDetailDtoList);
                    //获取编制人的签名地址
                    put("organizationUrl", UserUtils.getFinalUserSignatureUrl(deviceCalibrationPlan.getRatifyUserId()));
                    //获取批准人的签名地址
                    put("approvedUrl", UserUtils.getFinalUserSignatureUrl(deviceCalibrationPlan.getWriteUserId()));
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * æ‰¹é‡ç¼–辑设备校准
     * @param calibrationPlanDto
     * @return
     */
    @Override
    public boolean updateDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto) {
        // å½“前登录用户
        Integer userId = SecurityUtils.getUserId().intValue();
        // ç¼–制日期
        calibrationPlanDto.setWriteUserId(userId);
        calibrationPlanDto.setWriteTime(LocalDateTime.now());
        baseMapper.updateById(calibrationPlanDto);
        // åˆ é™¤åŽŸæœ¬çš„è¯¦æƒ…
        deviceCalibrationPlanDetailService.remove(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery().eq(DeviceCalibrationPlanDetail::getPlanId, calibrationPlanDto.getPlanId()));
        // æ·»åŠ è¯¦æƒ…
        if (CollectionUtils.isNotEmpty(calibrationPlanDto.getCalibrationPlanDetailList())) {
            for (DeviceCalibrationPlanDetail calibrationPlanDetail : calibrationPlanDto.getCalibrationPlanDetailList()) {
                calibrationPlanDetail.setPlanId(calibrationPlanDto.getPlanId());
            }
            deviceCalibrationPlanDetailService.saveBatch(calibrationPlanDto.getCalibrationPlanDetailList());
        }
        return true;
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¡å‡†è¯¦æƒ…
     * @param planId
     * @return
     */
    @Override
    public DeviceCalibrationPlanDto getDeviceCalibrationPlan(Integer planId) {
        DeviceCalibrationPlan calibrationPlan = baseMapper.selectById(planId);
        DeviceCalibrationPlanDto deviceCalibrationPlanDto = new DeviceCalibrationPlanDto();
        BeanUtils.copyProperties(calibrationPlan, deviceCalibrationPlanDto);
        // æŸ¥è¯¢è¯¦æƒ…
        List<DeviceCalibrationPlanDetail> list = deviceCalibrationPlanDetailService.list(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery()
                .eq(DeviceCalibrationPlanDetail::getPlanId, planId)
                .orderByAsc(DeviceCalibrationPlanDetail::getPlanDate));
        deviceCalibrationPlanDto.setCalibrationPlanDetailList(list);
        return deviceCalibrationPlanDto;
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceDocumentsMapper;
import com.ruoyi.device.pojo.DeviceDocuments;
import com.ruoyi.device.service.DeviceDocumentsService;
import org.springframework.stereotype.Service;
/**
 * è®¾å¤‡æ¡£æ¡ˆ
 */
@Service
public class DeviceDocumentsServiceImpl extends ServiceImpl<DeviceDocumentsMapper, DeviceDocuments> implements DeviceDocumentsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceExaminePlanDetailsMapper;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import com.ruoyi.device.service.DeviceExaminePlanDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:16
 */
@Service
public class DeviceExaminePlanDetailsServiceImpl extends ServiceImpl<DeviceExaminePlanDetailsMapper, DeviceExaminePlanDetails> implements DeviceExaminePlanDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExaminePlanServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,349 @@
package com.ruoyi.device.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.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.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceExaminePlanDetailsDto;
import com.ruoyi.device.dto.DeviceExaminePlanDto;
import com.ruoyi.device.excel.upload.DeviceExaminePlanUpload;
import com.ruoyi.device.mapper.DeviceExaminePlanDetailsMapper;
import com.ruoyi.device.mapper.DeviceExaminePlanMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceExaminePlan;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import com.ruoyi.device.service.DeviceExaminePlanDetailsService;
import com.ruoyi.device.service.DeviceExaminePlanService;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
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.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’主表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:04
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceExaminePlanServiceImpl extends ServiceImpl<DeviceExaminePlanMapper, DeviceExaminePlan> implements DeviceExaminePlanService {
    @Resource
    private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
    @Resource
    private DeviceExaminePlanDetailsService deviceExaminePlanDetailsService;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private DeviceMapper deviceMapper;
    @Resource
    private UserMapper userMapper;
    /**
     * æ–°å¢žè®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param examinePlanDto
     * @return
     */
    @Override
    public boolean addDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto) {
        // å½“前登录用户
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ–‡ä»¶åç§°
        examinePlanDto.setWriteUserId(userId);
        examinePlanDto.setWriteTime(LocalDateTime.now());
        baseMapper.insert(examinePlanDto);
        // æ·»åŠ è¯¦æƒ…
        if (CollectionUtils.isNotEmpty(examinePlanDto.getExaminePlanDetailsList())) {
            for (DeviceExaminePlanDetails deviceExaminePlanDetails : examinePlanDto.getExaminePlanDetailsList()) {
                deviceExaminePlanDetails.setPlanId(examinePlanDto.getPlanId());
            }
            deviceExaminePlanDetailsService.saveBatch(examinePlanDto.getExaminePlanDetailsList());
        }
        return true;
    }
    /**
     * å¯¼å…¥è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param file
     * @return
     */
    @Override
    public boolean importDeviceExaminePlan(MultipartFile file) {
        // å½“前登录用户
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ–‡ä»¶åç§°
        String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
        DeviceExaminePlan examinePlan = new DeviceExaminePlan();
        examinePlan.setPlanName(fileName);
        examinePlan.setWriteUserId(userId);
        examinePlan.setWriteTime(LocalDateTime.now());
        baseMapper.insert(examinePlan);
        List<DeviceExaminePlanDetails> examinePlanDetails = new ArrayList<>();
        // å¯¼å…¥é™„件内容
        try {
            // excel解析
            EasyExcel.read(file.getInputStream(), DeviceExaminePlanUpload.class, new AnalysisEventListener<DeviceExaminePlanUpload>() {
                @Override
                public void invoke(DeviceExaminePlanUpload detailsUpload, AnalysisContext analysisContext) {
                    // åˆ¤æ–­æ˜¯å¦ä¸ºç©º
                    if (StringUtils.isNotBlank(detailsUpload.getDeviceName()) &&
                            StringUtils.isNotBlank(detailsUpload.getDeviceNumber())) {
                        // å¯¹è±¡å¤åˆ¶
                        DeviceExaminePlanDetails planDetails = new DeviceExaminePlanDetails();
                        BeanUtils.copyProperties(detailsUpload, planDetails);
                        planDetails.setPlanId(examinePlan.getPlanId());
                        examinePlanDetails.add(planDetails);
                    }
                }
                @Override
                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                }
            }).sheet().doRead();
            for (DeviceExaminePlanDetails examinePlanDetail : examinePlanDetails) {
                Device device = deviceMapper.selectOne(Wrappers.<Device>lambdaQuery()
                        .eq(Device::getManagementNumber, examinePlanDetail.getDeviceNumber().trim()));
                if (device == null) {
                    throw new ErrorException("设备编号" + examinePlanDetail.getDeviceNumber() + "未查询到设备, è¯·é‡æ–°å¯¼å…¥");
                }
                User user = userMapper.selectOne(Wrappers.<User>lambdaQuery()
                        .eq(User::getName, examinePlanDetail.getCheckChargerUser()));
                if (user == null) {
                    throw new ErrorException("设备编号" + examinePlanDetail.getDeviceNumber() + "未查询到核查人");
                }
                examinePlanDetail.setDeviceId(device.getId());
                examinePlanDetail.setCheckChargerUserId(user.getId());
            }
            deviceExaminePlanDetailsService.saveBatch(examinePlanDetails);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return true;
    }
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceExaminePlan
     * @return
     */
    @Override
    public boolean submitRatifyDeviceExaminePlan(DeviceExaminePlan deviceExaminePlan) {
        baseMapper.update(null, Wrappers.<DeviceExaminePlan>lambdaUpdate()
                .eq(DeviceExaminePlan::getPlanId, deviceExaminePlan.getPlanId())
                .set(DeviceExaminePlan::getRatifyUserId, deviceExaminePlan.getRatifyUserId())
                .set(DeviceExaminePlan::getRatifyRemark, null)
                .set(DeviceExaminePlan::getRatifyStatus, null)
                .set(DeviceExaminePlan::getRatifyTime, null)
        );
        DeviceExaminePlan examinePlan = baseMapper.selectById(deviceExaminePlan.getPlanId());
        // å‘送消息
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        // æ¶ˆæ¯å‘送
        InformationNotification info = new InformationNotification();
        // å‘送人
        info.setCreateUser(user.getName());
        info.setMessageType("6");
        info.setTheme("CNAS设备核查计划批准通知");
        info.setContent(examinePlan.getPlanName() + "的设备核查计划待批准");
        info.setSenderId(userId);
        // æŽ¥æ”¶äºº
        info.setConsigneeId(examinePlan.getRatifyUserId());
        info.setJumpPath(MenuJumpPathConstants.DEVICE);
        informationNotificationService.addInformationNotification(info);
        // å‘送企业微信通知
        threadPoolTaskExecutor.execute(() -> {
            // æŸ¥è¯¢æŽ¥æ”¶äºº
            User personnel = userMapper.selectById(examinePlan.getRatifyUserId());
            String message = "";
            message += "CNAS设备核查计划批准通知";
            message += "\n请去资源管理-设备一层目录-设备核查计划填写";
            message += "\n" + examinePlan.getPlanName() + "的校准核查划待批准";
            //发送企业微信消息通知
            try {
                WxCpUtils.inform(personnel.getAccount(), message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        return false;
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’批准
     * @param deviceExaminePlan
     * @return
     */
    @Override
    public boolean ratifyDeviceExaminePlan(DeviceExaminePlan deviceExaminePlan) {
        // å½“前登录用户
        baseMapper.update(null, Wrappers.<DeviceExaminePlan>lambdaUpdate()
                .eq(DeviceExaminePlan::getPlanId, deviceExaminePlan.getPlanId())
                .set(DeviceExaminePlan::getRatifyRemark, deviceExaminePlan.getRatifyRemark())
                .set(DeviceExaminePlan::getRatifyStatus, deviceExaminePlan.getRatifyStatus())
                .set(DeviceExaminePlan::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’列表
     * @param page
     * @param deviceExaminePlan
     * @return
     */
    @Override
    public IPage<DeviceExaminePlanDto> pageDeviceExaminePlan(Page page, DeviceExaminePlan deviceExaminePlan) {
        return baseMapper.deviceExaminePlanDetailsMapper(page, QueryWrappers.queryWrappers(deviceExaminePlan));
    }
    /**
     * è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情列表
     * @param page
     * @param deviceExaminePlanDetails
     * @return
     */
    @Override
    public IPage<DeviceExaminePlanDetailsDto> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails deviceExaminePlanDetails) {
        if (deviceExaminePlanDetails.getPlanId() == null) {
            return new Page();
        }
        return deviceExaminePlanDetailsMapper.pageDeviceExaminePlanDetail(page, QueryWrappers.queryWrappers(deviceExaminePlanDetails));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æ ¸æŸ¥è®¡åˆ’
     * @param deviceExaminePlanId è®¾å¤‡æ ¸æŸ¥è®¡åˆ’id
     * @param response å“åº”体
     */
    @Override
    public void exportDeviceExaminePlanDetail(Integer deviceExaminePlanId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡æ ¸æŸ¥è®¡åˆ’
        DeviceExaminePlanDto deviceExaminePlanDto = baseMapper.selectExamineExaminePlanDto(deviceExaminePlanId);
        // æŸ¥è¯¢è®¾å¤‡æ ¸æŸ¥è®¡åˆ’详情
        List<DeviceExaminePlanDetails> deviceExaminePlanDetailsList = deviceExaminePlanDetailsMapper.selectList(Wrappers.<DeviceExaminePlanDetails>lambdaQuery().eq(DeviceExaminePlanDetails::getPlanId, deviceExaminePlanId)
                .orderByAsc(DeviceExaminePlanDetails::getCheckTime));
        // è®¾ç½®åºå·
        ArrayList<DeviceExaminePlanDetailsDto> deviceExaminePlanDetailsDtoList = new ArrayList<>();
        deviceExaminePlanDetailsList.forEach(deviceExamineRecordContrastDetail -> {
            DeviceExaminePlanDetailsDto deviceExaminePlanDetailsDto = new DeviceExaminePlanDetailsDto();
            BeanUtils.copyProperties(deviceExamineRecordContrastDetail, deviceExaminePlanDetailsDto);
            deviceExaminePlanDetailsDto.setIndex(deviceExaminePlanDetailsList.indexOf(deviceExamineRecordContrastDetail) + 1);
            deviceExaminePlanDetailsDtoList.add(deviceExaminePlanDetailsDto);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/examine-plan-detail.docx");
        Configure configure = Configure.builder()
                .bind("deviceExaminePlanDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceExaminePlan", deviceExaminePlanDto);
                    put("deviceExaminePlanDetailsDtoList", deviceExaminePlanDetailsDtoList);
                    //获取核查人的签名地址
                    put("writeUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExaminePlanDto.getWriteUserId()));
                    //获取审查人的签名地址
                    put("reviewUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExaminePlanDto.getRatifyUserId()));
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public boolean updateDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto) {
        // å½“前登录用户
        Integer userId = SecurityUtils.getUserId().intValue();
        // æ–‡ä»¶åç§°
        examinePlanDto.setWriteUserId(userId);
        examinePlanDto.setWriteTime(LocalDateTime.now());
        baseMapper.updateById(examinePlanDto);
        deviceExaminePlanDetailsService.remove(Wrappers.<DeviceExaminePlanDetails>lambdaQuery()
                .eq(DeviceExaminePlanDetails::getPlanId, examinePlanDto.getPlanId()));
        // æ·»åŠ è¯¦æƒ…
        if (CollectionUtils.isNotEmpty(examinePlanDto.getExaminePlanDetailsList())) {
            for (DeviceExaminePlanDetails deviceExaminePlanDetails : examinePlanDto.getExaminePlanDetailsList()) {
                deviceExaminePlanDetails.setPlanId(examinePlanDto.getPlanId());
            }
            deviceExaminePlanDetailsService.saveBatch(examinePlanDto.getExaminePlanDetailsList());
        }
        return true;
    }
    @Override
    public DeviceExaminePlanDto getDeviceExaminePlan(Integer planId) {
        DeviceExaminePlan examinePlan = baseMapper.selectById(planId);
        DeviceExaminePlanDto deviceExaminePlanDto = new DeviceExaminePlanDto();
        BeanUtils.copyProperties(examinePlan, deviceExaminePlanDto);
        // æŸ¥è¯¢è¯¦æƒ…
        List<DeviceExaminePlanDetails> list = deviceExaminePlanDetailsService.list(Wrappers.<DeviceExaminePlanDetails>lambdaQuery()
                .eq(DeviceExaminePlanDetails::getPlanId, planId)
                .orderByAsc(DeviceExaminePlanDetails::getCheckTime));
        deviceExaminePlanDto.setExaminePlanDetailsList(list);
        return deviceExaminePlanDto;
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordContrastDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceExamineRecordContrastDetailsMapper;
import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
import com.ruoyi.device.service.DeviceExamineRecordContrastDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•对比详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:57
 */
@Service
public class DeviceExamineRecordContrastDetailsServiceImpl extends ServiceImpl<DeviceExamineRecordContrastDetailsMapper, DeviceExamineRecordContrastDetails> implements DeviceExamineRecordContrastDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordContrastServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceExamineRecordContrastDetailsDto;
import com.ruoyi.device.dto.DeviceExamineRecordContrastDto;
import com.ruoyi.device.mapper.DeviceExaminePlanDetailsMapper;
import com.ruoyi.device.mapper.DeviceExamineRecordContrastMapper;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import com.ruoyi.device.pojo.DeviceExamineRecordContrast;
import com.ruoyi.device.pojo.DeviceExamineRecordContrastDetails;
import com.ruoyi.device.service.DeviceExamineRecordContrastDetailsService;
import com.ruoyi.device.service.DeviceExamineRecordContrastService;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•对比表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:43
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceExamineRecordContrastServiceImpl extends ServiceImpl<DeviceExamineRecordContrastMapper, DeviceExamineRecordContrast> implements DeviceExamineRecordContrastService {
    @Resource
    private DeviceExamineRecordContrastDetailsService deviceExamineRecordContrastDetailsService;
    @Resource
    private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
    @Resource
    private UserMapper userMapper;
    /**
     * æŸ¥è¯¢æ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    @Override
    public DeviceExamineRecordContrastDto getExamineRecordContrast(Integer planDetailsId) {
        DeviceExamineRecordContrastDto contrastDto = baseMapper.getExamineRecordContrast(planDetailsId);
        // åˆ¤æ–­æ˜¯å¦ä¸ºç©º
        if (contrastDto == null) {
            contrastDto = new DeviceExamineRecordContrastDto();
            // æŸ¥è¯¢è®¾å¤‡è¯¦æƒ…
            DeviceExaminePlanDetails deviceExaminePlanDetails = deviceExaminePlanDetailsMapper.selectById(planDetailsId);
            contrastDto.setPlanDetailsId(deviceExaminePlanDetails.getPlanDetailsId());
        } else {
            // æŸ¥è¯¢è¯¦æƒ…
            List<DeviceExamineRecordContrastDetails> list = deviceExamineRecordContrastDetailsService.list(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery()
                    .eq(DeviceExamineRecordContrastDetails::getRecordContrastId, contrastDto.getRecordContrastId()));
            contrastDto.setRecordContrastDetailsList(list);
        }
        return contrastDto;
    }
    /**
     * æ–°å¢žæ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    @Override
    public boolean addExamineRecordContrast(DeviceExamineRecordContrastDto dto) {
        if (dto.getPlanDetailsId() == null) {
            throw new ErrorException("缺少计划详细信息id");
        }
        if (dto.getRecordContrastId() == null) {
            Integer userId = SecurityUtils.getUserId().intValue();
            User user = userMapper.selectById(userId);
            dto.setCheckerUserId(userId);
            dto.setCheckerUser(user.getName());
            // æŸ¥è¯¢å®¡æŸ¥äººid
            if (dto.getReviewUserId() != null) {
                User reviewUser = userMapper.selectById(dto.getReviewUserId());
                dto.setReviewUser(reviewUser.getName());
            }
        }
        this.saveOrUpdate(dto);
        // åˆ é™¤å…¨éƒ¨è¯¦æƒ…
        deviceExamineRecordContrastDetailsService.remove(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery()
                .eq(DeviceExamineRecordContrastDetails::getRecordContrastId, dto.getRecordContrastId()));
        //添加详情
        if (CollectionUtils.isNotEmpty(dto.getRecordContrastDetailsList())) {
            for (DeviceExamineRecordContrastDetails details : dto.getRecordContrastDetailsList()) {
                details.setRecordContrastId(dto.getRecordContrastId());
            }
            deviceExamineRecordContrastDetailsService.saveBatch(dto.getRecordContrastDetailsList());
        }
        return false;
    }
    /**
     * å®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录
     * @return
     */
    @Override
    public boolean reviewExamineRecordContrast(DeviceExamineRecordContrastDto dto) {
        if (dto.getPlanDetailsId() == null) {
            throw new ErrorException("缺少计划详细信息id");
        }
        LambdaUpdateWrapper<DeviceExamineRecordContrast> wrapper = Wrappers.<DeviceExamineRecordContrast>lambdaUpdate()
                .eq(DeviceExamineRecordContrast::getPlanDetailsId, dto.getPlanDetailsId())
                .set(DeviceExamineRecordContrast::getReviewStatus, dto.getReviewStatus())
                .set(DeviceExamineRecordContrast::getReviewRemark, dto.getReviewRemark())
                .set(DeviceExamineRecordContrast::getReviewTime, LocalDateTime.now());
        // ä¸º0清除审核人
        if (dto.getReviewStatus().equals(0)) {
            wrapper.set(DeviceExamineRecordContrast::getReviewUserId, null)
                    .set(DeviceExamineRecordContrast::getReviewUser, null);
        }
        this.update(wrapper);
        return true;
    }
    /**
     * å¯¼å‡ºå®¡æ ¸æ ¸æŸ¥å¯¹æ¯”记录
     *
     * @param planDetailsId è¯¦æƒ…id
     * @param response
     */
    @Override
    public void exportReviewExamineRecordContrast(Integer planDetailsId, HttpServletResponse response) {
        // æŸ¥è¯¢å¯¹æ¯”记录
        DeviceExamineRecordContrastDto deviceExamineRecordContrast = baseMapper.selectExamineRecordContrastDto(planDetailsId);
        // æŸ¥è¯¢å¯¹æ¯”记录详情
        List<DeviceExamineRecordContrastDetails> deviceExamineRecordContrastDetailList = deviceExamineRecordContrastDetailsService.list(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery().eq(DeviceExamineRecordContrastDetails::getRecordContrastId, deviceExamineRecordContrast.getRecordContrastId()));
        // è®¾ç½®åºå·
        ArrayList<DeviceExamineRecordContrastDetailsDto> deviceExamineRecordContrastDetailsDtoList = new ArrayList<>();
        deviceExamineRecordContrastDetailList.forEach(deviceExamineRecordContrastDetail -> {
            DeviceExamineRecordContrastDetailsDto deviceExamineRecordContrastDetailsDto = new DeviceExamineRecordContrastDetailsDto();
            BeanUtils.copyProperties(deviceExamineRecordContrastDetail, deviceExamineRecordContrastDetailsDto);
            deviceExamineRecordContrastDetailsDto.setIndex(deviceExamineRecordContrastDetailList.indexOf(deviceExamineRecordContrastDetail) + 1);
            deviceExamineRecordContrastDetailsDtoList.add(deviceExamineRecordContrastDetailsDto);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/review-examine-record-contrast.docx");
        Configure configure = Configure.builder()
                .bind("deviceExamineRecordContrastDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceExamineRecordContrast", deviceExamineRecordContrast);
                    put("deviceExamineRecordContrastDetailsDtoList", deviceExamineRecordContrastDetailsDtoList);
                    //获取核查人的签名地址
                    put("checkerUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordContrast.getCheckerUserId()));
                    //获取审查人的签名地址
                    put("reviewUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordContrast.getReviewUserId()));
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceExamineRecordDetailMapper;
import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
import com.ruoyi.device.service.DeviceExamineRecordDetailService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:15:11
 */
@Service
public class DeviceExamineRecordDetailServiceImpl extends ServiceImpl<DeviceExamineRecordDetailMapper, DeviceExamineRecordDetail> implements DeviceExamineRecordDetailService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExamineRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,238 @@
package com.ruoyi.device.service.impl;
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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceExamineRecordDto;
import com.ruoyi.device.mapper.DeviceExaminePlanDetailsMapper;
import com.ruoyi.device.mapper.DeviceExamineRecordMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceExaminePlanDetails;
import com.ruoyi.device.pojo.DeviceExamineRecord;
import com.ruoyi.device.pojo.DeviceExamineRecordDetail;
import com.ruoyi.device.service.DeviceExamineRecordDetailService;
import com.ruoyi.device.service.DeviceExamineRecordService;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
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.util.HashMap;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡æ ¸æŸ¥è®°å½•表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 07:14:28
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceExamineRecordServiceImpl extends ServiceImpl<DeviceExamineRecordMapper, DeviceExamineRecord> implements DeviceExamineRecordService {
    @Resource
    private DeviceExamineRecordDetailService deviceExamineRecordDetailService;
    @Resource
    private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
    @Resource
    private DeviceMapper deviceMapper;
    @Resource
    private UserMapper userMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    /**
     * æŸ¥è¯¢æ ¸æŸ¥è®°å½•
     *
     * @return
     */
    @Override
    public DeviceExamineRecordDto getExamineRecord(Integer planDetailsId) {
        DeviceExamineRecordDto deviceExamineRecord = baseMapper.getExamineRecord(planDetailsId);
        // åˆ¤æ–­æ˜¯å¦ä¸ºç©º
        if (deviceExamineRecord == null) {
            deviceExamineRecord = new DeviceExamineRecordDto();
            // æŸ¥è¯¢è®¾å¤‡è¯¦æƒ…
            DeviceExaminePlanDetails deviceExaminePlanDetails = deviceExaminePlanDetailsMapper.selectById(planDetailsId);
            Device device = deviceMapper.selectById(deviceExaminePlanDetails.getDeviceId());
            if (device != null) {
                deviceExamineRecord.setDeviceName(device.getDeviceName());
                deviceExamineRecord.setDeviceNumber(device.getManagementNumber());
                deviceExamineRecord.setPlanDetailsId(deviceExaminePlanDetails.getPlanDetailsId());
            }
        } else {
            // æŸ¥è¯¢è¯¦æƒ…
            List<DeviceExamineRecordDetail> list = deviceExamineRecordDetailService.list(Wrappers.<DeviceExamineRecordDetail>lambdaQuery()
                    .eq(DeviceExamineRecordDetail::getRecordId, deviceExamineRecord.getRecordId()));
            deviceExamineRecord.setRecordDetailList(list);
        }
        return deviceExamineRecord;
    }
    /**
     * æ–°å¢žæ ¸æŸ¥è®°å½•
     *
     * @return
     */
    @Override
    public boolean addExamineRecord(DeviceExamineRecordDto deviceExamineRecordDto) {
        if (deviceExamineRecordDto.getPlanDetailsId() == null) {
            throw new ErrorException("缺少计划详细信息id");
        }
        if (deviceExamineRecordDto.getRecordId() == null) {
            Integer userId = SecurityUtils.getUserId().intValue();
            User user = userMapper.selectById(SecurityUtils.getUserId());
            deviceExamineRecordDto.setCheckerUserId(userId);
            deviceExamineRecordDto.setCheckerUser(user.getName());
            // æŸ¥è¯¢å®¡æŸ¥äººid
            if (deviceExamineRecordDto.getReviewUserId() != null) {
                User reviewUser = userMapper.selectById(deviceExamineRecordDto.getReviewUserId());
                deviceExamineRecordDto.setReviewUser(reviewUser.getName());
                // æ¶ˆæ¯å‘送
                InformationNotification info = new InformationNotification();
                // å‘送人
                info.setCreateUser(user.getName());
                info.setMessageType("6");
                info.setTheme("CNAS设备核查计划待批准");
                info.setContent("设备编号为: " + deviceExamineRecordDto.getDeviceNumber() + " è®¾å¤‡æ ¸æŸ¥è®¡åˆ’待审批");
                info.setSenderId(userId);
                // æŽ¥æ”¶äºº
                info.setConsigneeId(deviceExamineRecordDto.getReviewUserId());
                info.setJumpPath(MenuJumpPathConstants.DEVICE);
                informationNotificationService.addInformationNotification(info);
                // å‘送企业微信通知
                threadPoolTaskExecutor.execute(() -> {
                    // æŸ¥è¯¢å‘送人
                    User people = userMapper.selectById(deviceExamineRecordDto.getReviewUserId());
                    String message = "";
                    message += "CNAS设备核查计划待批准";
                    message += "\n请去资源要求-设备-设备核查计划审批";
                    message += "\n" + "设备编号为: " + deviceExamineRecordDto.getDeviceNumber() + "设备核查计划待审批";
                    //发送企业微信消息通知
                    try {
                        WxCpUtils.inform(people.getAccount(), message, null);
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                });
            }
        }
        this.saveOrUpdate(deviceExamineRecordDto);
        // åˆ é™¤å…¨éƒ¨è¯¦æƒ…
        deviceExamineRecordDetailService.remove(Wrappers.<DeviceExamineRecordDetail>lambdaQuery()
                .eq(DeviceExamineRecordDetail::getRecordId, deviceExamineRecordDto.getRecordId()));
        //添加详情
        if (CollectionUtils.isNotEmpty(deviceExamineRecordDto.getRecordDetailList())) {
            for (DeviceExamineRecordDetail deviceExamineRecordDetail : deviceExamineRecordDto.getRecordDetailList()) {
                deviceExamineRecordDetail.setRecordId(deviceExamineRecordDto.getRecordId());
            }
            deviceExamineRecordDetailService.saveBatch(deviceExamineRecordDto.getRecordDetailList());
        }
        return true;
    }
    /**
     * å¤æ ¸æ ¸æŸ¥è®°å½•
     *
     * @return
     */
    @Override
    public boolean reviewExamineRecord(DeviceExamineRecordDto dto) {
        if (dto.getPlanDetailsId() == null) {
            throw new ErrorException("缺少计划详细信息id");
        }
        LambdaUpdateWrapper<DeviceExamineRecord> wrapper = Wrappers.<DeviceExamineRecord>lambdaUpdate()
                .eq(DeviceExamineRecord::getPlanDetailsId, dto.getPlanDetailsId())
                .set(DeviceExamineRecord::getReviewStatus, dto.getReviewStatus())
                .set(DeviceExamineRecord::getReviewRemark, dto.getReviewRemark());
        // ä¸º0清除审核人
        if (dto.getReviewStatus().equals(0)) {
            wrapper.set(DeviceExamineRecord::getReviewUserId, null)
                    .set(DeviceExamineRecord::getReviewUser, null);
        }
        this.update(wrapper);
        return true;
    }
    /**
     * å¯¼å‡ºå¤æ ¸æ ¸æŸ¥è®°å½•
     *
     * @param planDetailsId å¤æ ¸æ ¸æŸ¥è®°å½•id
     * @return
     */
    @Override
    public void exportReviewExamineRecordDetail(Integer planDetailsId, HttpServletResponse response) {
        // æŸ¥è¯¢å¤æ ¸æ ¸æŸ¥è®°å½•
        DeviceExamineRecordDto deviceExamineRecordDto = baseMapper.selectReviewExamineRecordDto(planDetailsId);
        // æŸ¥è¯¢å¤æ ¸æ ¸æŸ¥è®°å½•详情
        List<DeviceExamineRecordDetail> deviceExamineRecordDetailList = deviceExamineRecordDetailService.list(Wrappers.<DeviceExamineRecordDetail>lambdaQuery().eq(DeviceExamineRecordDetail::getRecordId, deviceExamineRecordDto.getRecordId()));
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/examine-record.docx");
        Configure configure = Configure.builder()
                .bind("deviceExamineRecordDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceExamineRecordDto", deviceExamineRecordDto);
                    put("deviceExamineRecordDetailList", deviceExamineRecordDetailList);
                    //获取核查人的签名地址
                    put("checkerUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordDto.getCheckerUserId()));
                    //获取审查人的签名地址
                    put("reviewUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordDto.getReviewUserId()));
                }});
        try {
            response.setContentType("application/msword");
            String deviceName = StringUtils.isNotEmpty(deviceExamineRecordDto.getDeviceName()) ? deviceExamineRecordDto.getDeviceName() : "";
            String fileName = URLEncoder.encode(
                    deviceName+ "核查记录", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceExternalApplyServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
package com.ruoyi.device.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.mapper.DeviceExternalApplyMapper;
import com.ruoyi.device.pojo.DeviceExternalApply;
import com.ruoyi.device.service.DeviceExternalApplyService;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
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.LocalDate;
import java.util.HashMap;
/**
 * <p>
 * åˆ©ç”¨å¤–部设备申请表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 10:28:43
 */
@Service
public class DeviceExternalApplyServiceImpl extends ServiceImpl<DeviceExternalApplyMapper, DeviceExternalApply> implements DeviceExternalApplyService {
    @Resource
    private UserMapper userMapper;
    /**
     * åˆ©ç”¨å¤–部设备申请列表
     * @param page
     * @param deviceExternalApply
     * @return
     */
    @Override
    public IPage<DeviceExternalApply> pageDeviceExternalApply(Page page, DeviceExternalApply deviceExternalApply) {
        return baseMapper.pageDeviceExternalApply(page, QueryWrappers.queryWrappers(deviceExternalApply));
    }
    /**
     * æ–°å¢žåˆ©ç”¨å¤–部设备申请
     * @param deviceExternalApply
     * @return
     */
    @Override
    public boolean addDeviceExternalApply(DeviceExternalApply deviceExternalApply) {
        DeviceExternalApply apply = new DeviceExternalApply();
        // å½“前登录用户信息和部门
        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
        switch (deviceExternalApply.getFlowType()) {
            case 0:
                BeanUtils.copyProperties(deviceExternalApply, apply);
                // ç”³è¯·
                apply.setUseReason(deviceExternalApply.getUseReason());
                apply.setApplicantUserId(user.getId());
                apply.setApplicantUser(user.getName());
                apply.setApplicantDate(LocalDate.now());
                // å¤„理人信息
                User departmentHeadUser = userMapper.selectById(deviceExternalApply.getDepartmentHeadUserId());
                apply.setApplicantUserId(departmentHeadUser.getId());
                apply.setApplicantUser(departmentHeadUser.getName());
                baseMapper.insert(apply);
                break;
            case 1:
                apply.setExternalApplyId(deviceExternalApply.getExternalApplyId());
                // ç”³è¯·éƒ¨é—¨è´Ÿè´£äººæ„è§
                apply.setDepartmentHeadOpinion(deviceExternalApply.getDepartmentHeadOpinion());
                apply.setDepartmentHeadDate(LocalDate.now());
                // è®¡é‡å®¤ä¿¡æ¯
                User meteringRoomUser = userMapper.selectById(deviceExternalApply.getMeteringRoomUserId());
                apply.setMeteringRoomUserId(meteringRoomUser.getId());
                apply.setMeteringRoomUser(meteringRoomUser.getName());
                baseMapper.updateById(apply);
                break;
            case 2:
                apply.setExternalApplyId(deviceExternalApply.getExternalApplyId());
                // è®¡é‡å®¤æ„è§
                apply.setMeteringRoomOpinion(deviceExternalApply.getMeteringRoomOpinion());
                apply.setMeteringRoomDate(LocalDate.now());
                // æ‰¹å‡†äººä¿¡æ¯
                User approverUser = userMapper.selectById(deviceExternalApply.getApproverUserId());
                apply.setApproverUserId(approverUser.getId());
                apply.setApproverUser(approverUser.getName());
                baseMapper.updateById(apply);
                break;
            case 3:
                apply.setExternalApplyId(deviceExternalApply.getExternalApplyId());
                //批准人
                apply.setApproverOpinion(deviceExternalApply.getApproverOpinion());
                apply.setApproverDate(LocalDate.now());
                apply.setIsFinish(1);
                baseMapper.updateById(apply);
                break;
        }
        return true;
    }
    /**
     * å¯¼å‡ºåˆ©ç”¨å¤–部设备申请
     *
     * @param externalApplyId å¤–部设备申请id
     * @param response
     */
    @Override
    public void exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response) {
        // æŸ¥è¯¢å¤–部设备申请
        DeviceExternalApply deviceAccidentReport = baseMapper.selectDeviceExternalById(externalApplyId);
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-external-apply.docx");
        Configure configure = Configure.builder()
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceAccidentReport", deviceAccidentReport);
                    // ç”³è¯·äººç­¾å
                    put("applicantUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getApplicantUserId()));
                    // éƒ¨é—¨è´Ÿè´£äººç­¾å
                    put("departmentHeadUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getDepartmentHeadUserId()));
                    // è®¡é‡å®¤äººç­¾å
                    put("meteringRoomUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getMeteringRoomUserId()));
                    // æ‰¹å‡†äººç­¾å
                    put("approverUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getApproverUserId()));
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.ruoyi.device.mapper.DeviceImpowerDetailsMapper;
import com.ruoyi.device.service.DeviceImpowerDetailsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:39
 */
@Service
public class DeviceImpowerDetailsServiceImpl extends ServiceImpl<DeviceImpowerDetailsMapper, DeviceImpowerDetails> implements DeviceImpowerDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,300 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceImpowerDetailsDto;
import com.ruoyi.device.dto.DeviceImpowerDto;
import com.ruoyi.device.mapper.DeviceImpowerDetailsMapper;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.mapper.DeviceImpowerMapper;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.pojo.DeviceImpowerDetails;
import com.ruoyi.device.service.DeviceImpowerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.service.DeviceImpowerDetailsService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
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;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * è®¾å¤‡ä½¿ç”¨è¡¨ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:23:23
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceImpowerServiceImpl extends ServiceImpl<DeviceImpowerMapper, DeviceImpower> implements DeviceImpowerService {
    @Resource
    private DeviceImpowerDetailsService deviceImpowerDetailsService;
    @Resource
    private DeviceImpowerDetailsMapper deviceImpowerDetailsMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private UserMapper userMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä½¿ç”¨
     *
     * @param page
     * @return
     */
    @Override
    public Result<IPage<DeviceImpower>> selectDeviceImpowerByPage(Page page, DeviceImpowerDto deviceImpowerDto) {
        IPage<DeviceImpower> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceImpowerDto));
        return Result.success(iPage);
    }
    /**
     * æ–°å¢žè®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result addImpower(DeviceImpowerDto deviceImpowerDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        deviceImpowerDto.setCompilerId(userId);
        deviceImpowerDto.setCompiler(user.getName());
        deviceImpowerDto.setDatePreparation(LocalDateTime.now());
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceImpowerDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceImpowerDto.getAuditId());
            deviceImpowerDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceImpowerDto);
        // è¯¦æƒ…赋值并保存
        List<DeviceImpowerDetailsDto> deviceImpowerDetails = deviceImpowerDto.getDeviceImpowerDetails();
        if (CollectionUtils.isNotEmpty(deviceImpowerDetails)) { // è¯¦æƒ…不为空
            List<DeviceImpowerDetails> collect = deviceImpowerDetails.stream().map(detailsDto -> {
                detailsDto.setImpowerId(deviceImpowerDto.getImpowerId()); // ä½¿ç”¨ID
                DeviceImpowerDetails details = new DeviceImpowerDetails();
                BeanUtils.copyProperties(detailsDto, details);
                return details;
            }).collect(Collectors.toList());
            deviceImpowerDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result updateImpower(DeviceImpowerDto deviceImpowerDto) {
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceImpowerDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceImpowerDto.getAuditId());
            deviceImpowerDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceImpowerDto);
        // åˆ é™¤åŽŸæœ¬çš„è¯¦æƒ…
        deviceImpowerDetailsService.remove(Wrappers.<DeviceImpowerDetails>lambdaQuery().eq(DeviceImpowerDetails::getImpowerId, deviceImpowerDto.getImpowerId()));
        // è¯¦æƒ…赋值并保存
        List<DeviceImpowerDetailsDto> deviceImpowerDetails = deviceImpowerDto.getDeviceImpowerDetails();
        if (CollectionUtils.isNotEmpty(deviceImpowerDetails)) { // è¯¦æƒ…不为空
            List<DeviceImpowerDetails> collect = deviceImpowerDetails.stream().map(detailsDto -> {
                detailsDto.setImpowerId(deviceImpowerDto.getImpowerId()); // ä½¿ç”¨ID
                DeviceImpowerDetails details = new DeviceImpowerDetails();
                BeanUtils.copyProperties(detailsDto, details);
                return details;
            }).collect(Collectors.toList());
            deviceImpowerDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * åˆ é™¤è®¾å¤‡ä½¿ç”¨
     *
     * @param deviceImpowerDto è®¾å¤‡ä½¿ç”¨
     */
    @Override
    public Result deleteImpower(DeviceImpowerDto deviceImpowerDto) {
        this.removeById(deviceImpowerDto);
        deviceImpowerDetailsService.remove(Wrappers.<DeviceImpowerDetails>lambdaQuery().eq(DeviceImpowerDetails::getImpowerId, deviceImpowerDto.getImpowerId()));
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è¯¦æƒ…
     *
     * @param impowerId è®¾å¤‡ä½¿ç”¨id
     */
    @Override
    public Result<DeviceImpowerDto> getImpowerDetail(Integer impowerId) {
        // æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨
        DeviceImpower deviceImpower = baseMapper.selectById(impowerId);
        // æŸ¥è¯¢è¯¦æƒ…
        DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto();
        BeanUtils.copyProperties(deviceImpower, deviceImpowerDto);
        deviceImpowerDto.setDeviceImpowerDetails(deviceImpowerDetailsMapper.deviceImpowerDetailsList(impowerId));
        return Result.success(deviceImpowerDto);
    }
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceImpowerDto
     * @return
     */
    @Override
    public Result submitReviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
        User audit = userMapper.selectById(deviceImpowerDto.getAuditId());
        this.update(Wrappers.<DeviceImpower>lambdaUpdate()
                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
                .set(DeviceImpower::getAuditId, audit.getId())
                .set(DeviceImpower::getAudit, audit.getName())
                .set(DeviceImpower::getAuditDate, null)
                .set(DeviceImpower::getStatus, null)
                .set(DeviceImpower::getAuditRemark, null));
        DeviceImpower deviceImpower = baseMapper.selectById(deviceImpowerDto.getImpowerId());
//        // å‘送消息
//        Integer userId = SecurityUtils.getUserId().intValue();
//        User user = userMapper.selectById(userId);
//        // æ¶ˆæ¯å‘送
//        InformationNotification info = new InformationNotification();
//        // å‘送人
//        info.setCreateUser(user.getName());
//        info.setMessageType("6");
//        info.setTheme("CNAS设备使用批准通知");
//        info.setContent(deviceImpower.getPlanYear() + "年的设备使用待批准");
//        info.setSenderId(userId);
//        // æŽ¥æ”¶äºº
//        info.setConsigneeId(audit.getId());
//        info.setJumpPath(MenuJumpPathConstants.DEVICE);
//        informationNotificationService.addInformationNotification(info);
//
//        // å‘送企业微信通知
//        threadPoolTaskExecutor.execute(() -> {
//            String message = "";
//            message += "CNAS设备使用核通知";
//            message += "\n请去资源管理-设备一层目录-设备使用填写";
//            message += "\n" + deviceImpower.getPlanYear() + "年的设备使用待批准";
//            //发送企业微信消息通知
//            try {
//                WxCpUtils.inform(audit.getAccount(), message, null);
//            } catch (Exception e) {
//                throw new RuntimeException(e);
//            }
//        });
        return Result.success();
    }
    /**
     *
     *
     * @param deviceImpowerDto
     */
    @Override
    public Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
        LambdaUpdateWrapper<DeviceImpower> wrapper = Wrappers.<DeviceImpower>lambdaUpdate()
                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
                .set(DeviceImpower::getAuditDate, LocalDateTime.now())
                .set(DeviceImpower::getStatus, deviceImpowerDto.getStatus())        // å®¡æ ¸çŠ¶æ€
                .set(DeviceImpower::getAuditRemark, deviceImpowerDto.getAuditRemark());// å®¡æ ¸å¤‡æ³¨
        this.update(wrapper); // æ›´æ–°
        return Result.success();
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ä½¿ç”¨
     *
     * @param impowerId è®¾å¤‡ä½¿ç”¨id
     */
    @Override
    public Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨æŽˆæƒè®¡åˆ’
        DeviceImpower deviceImpower = baseMapper.selectById(impowerId);
        DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto();
        BeanUtils.copyProperties(deviceImpower, deviceImpowerDto);
        // æ ¼å¼åŒ–日期中英文
        DateTimeFormatter formatterCH = DateTimeFormatter.ofPattern("yyyy å¹´ MM æœˆ dd æ—¥");
        DateTimeFormatter formatterEN = DateTimeFormatter.ofPattern("yyyy 'Year' MM 'Month' dd 'Day'");
        deviceImpowerDto.setAuditDateCH(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterCH));
        deviceImpowerDto.setAuditDateEN(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterEN));
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
        List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(impowerId);
        // è®¾ç½®åºå·
        deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> {
            deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-impower.docx");
        Configure configure = Configure.builder()
                .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceImpower", deviceImpowerDto);
                    put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList);
                    // æŽˆæƒäººåœ°å€
                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getAuditId()));
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceInspectionRecordDetailsMapper;
import com.ruoyi.device.pojo.DeviceInspectionRecordDetails;
import com.ruoyi.device.service.DeviceInspectionRecordDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:27:32
 */
@Service
public class DeviceInspectionRecordDetailsServiceImpl extends ServiceImpl<DeviceInspectionRecordDetailsMapper, DeviceInspectionRecordDetails> implements DeviceInspectionRecordDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,225 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.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.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceInspectionRecordDto;
import com.ruoyi.device.mapper.DeviceInspectionRecordMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceInspectionRecord;
import com.ruoyi.device.pojo.DeviceInspectionRecordDetails;
import com.ruoyi.device.service.DeviceInspectionRecordDetailsService;
import com.ruoyi.device.service.DeviceInspectionRecordService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
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.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡ç‚¹æ£€è®°å½•表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 04:25:14
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceInspectionRecordServiceImpl extends ServiceImpl<DeviceInspectionRecordMapper, DeviceInspectionRecord> implements DeviceInspectionRecordService {
    @Resource
    private UserMapper userMapper;
    @Resource
    private DeviceMapper deviceMapper;
    @Resource
    private DeviceInspectionRecordDetailsService deviceInspectionRecordDetailsService;
    @Resource
    private DeviceInspectionRecordMapper deviceInspectionRecordMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param page å½“前页码
     */
    @Override
    public Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(Page page, DeviceInspectionRecordDto deviceInspectionRecordDto) {
        IPage<DeviceInspectionRecord> iPage = deviceInspectionRecordMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceInspectionRecordDto));
        return Result.success(iPage);
    }
    /**
     * æŸ¥è¯¢ç‚¹æ£€è¯¦æƒ…
     * @param inspectionRecordId
     * @return
     */
    @Override
    public Result getDeviceInspectionRecord(Integer inspectionRecordId) {
        DeviceInspectionRecord deviceInspectionRecord = baseMapper.selectById(inspectionRecordId);
        DeviceInspectionRecordDto dto = new DeviceInspectionRecordDto();
        BeanUtils.copyProperties(deviceInspectionRecord, dto);
        List<DeviceInspectionRecordDetails> list = deviceInspectionRecordDetailsService.list(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, inspectionRecordId));
        dto.setDetails(list);
        return Result.success(dto);
    }
    /**
     * æ–°å¢žè®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param deviceInspectionRecord è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result addDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        deviceInspectionRecord.setRecorderId(userId);
        deviceInspectionRecord.setRecorder(user.getName());
        // æŸ¥è¯¢å¤æ ¸äººid
        if (deviceInspectionRecord.getReviewerId() != null) {
            User reviewUser = userMapper.selectById(deviceInspectionRecord.getReviewerId());
            deviceInspectionRecord.setReviewer(reviewUser.getName());
        }
        this.saveOrUpdate(deviceInspectionRecord);
        if (CollectionUtils.isNotEmpty(deviceInspectionRecord.getDetails())) {
            for (DeviceInspectionRecordDetails detail : deviceInspectionRecord.getDetails()) {
                detail.setInspectionRecordId(deviceInspectionRecord.getInspectionRecordId());
            }
            deviceInspectionRecordDetailsService.saveBatch( deviceInspectionRecord.getDetails());
        }
        return Result.success();
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param deviceInspectionRecord è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @Override
    public Result updateInspectionRecordAndDetails(DeviceInspectionRecordDto deviceInspectionRecord) {
        // æŸ¥è¯¢å¤æ ¸äººid
        if (deviceInspectionRecord.getReviewerId() != null) {
            User reviewUser = userMapper.selectById(deviceInspectionRecord.getReviewerId());
            deviceInspectionRecord.setReviewer(reviewUser.getName());
        }
        this.saveOrUpdate(deviceInspectionRecord);
        deviceInspectionRecordDetailsService.remove(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecord.getInspectionRecordId()));
        if (CollectionUtils.isNotEmpty(deviceInspectionRecord.getDetails())) {
            for (DeviceInspectionRecordDetails detail : deviceInspectionRecord.getDetails()) {
                detail.setInspectionRecordId(deviceInspectionRecord.getInspectionRecordId());
            }
            deviceInspectionRecordDetailsService.saveBatch( deviceInspectionRecord.getDetails());
        }
        return Result.success();
    }
    /**
     * åˆ é™¤è®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param deviceInspectionRecord è®¾å¤‡ç‚¹æ£€è®°å½•
     */
    @Override
    public Result deleteDeviceInspectionRecordOrDetails(DeviceInspectionRecordDto deviceInspectionRecord) {
        this.removeById(deviceInspectionRecord);
        deviceInspectionRecordDetailsService.remove(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecord.getInspectionRecordId()));
        return Result.success();
    }
    /**
     * å¤æ ¸ç‚¹æ£€è®°å½•
     * @param dto
     * @return
     */
    @Override
    public Result reviewDeviceInspectionRecord(DeviceInspectionRecordDto dto) {
        LambdaUpdateWrapper<DeviceInspectionRecord> wrapper = Wrappers.<DeviceInspectionRecord>lambdaUpdate()
                .eq(DeviceInspectionRecord::getInspectionRecordId, dto.getInspectionRecordId())
                .set(DeviceInspectionRecord::getStatus, dto.getStatus())
                .set(DeviceInspectionRecord::getReviewerRemark, dto.getReviewerRemark());
        // ä¸º0清除审核人
        if (dto.getStatus().equals(0)) {
            wrapper.set(DeviceInspectionRecord::getReviewerId, null)
                    .set(DeviceInspectionRecord::getReviewer, null);
        }
        this.update(wrapper);
        return Result.success();
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ç‚¹æ£€è®°å½•
     *
     * @param deviceInspectionRecordId è®¾å¤‡ç‚¹æ£€è®°å½•id
     * @param response                 å“åº”
     */
    @Override
    public Result exportDeviceInspectionRecord(Integer deviceInspectionRecordId, HttpServletResponse response) {
        DeviceInspectionRecord deviceInspectionRecord = baseMapper.selectById(deviceInspectionRecordId);
        DeviceInspectionRecordDto deviceInspectionRecordDto = new DeviceInspectionRecordDto();
        BeanUtils.copyProperties(deviceInspectionRecord, deviceInspectionRecordDto);
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        deviceInspectionRecordDto.setTestDateString(deviceInspectionRecord.getTestDate() == null ? null : deviceInspectionRecord.getTestDate().format(dateFormatter));
        List<DeviceInspectionRecordDetails> deviceInspectionRecordDetailsList = deviceInspectionRecordDetailsService.list(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecordId));
        Integer deviceId = deviceInspectionRecord.getDeviceId();
        Device device = deviceMapper.selectById(deviceId);
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-inspection-record.docx");
        Configure configure = Configure.builder()
                .bind("deviceInspectionRecordDetailsList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceInspectionRecord", deviceInspectionRecordDto);
                    put("deviceInspectionRecordDetailsList", deviceInspectionRecordDetailsList);
                    put("device", device);
                    put("recorderUrl", UserUtils.getFinalUserSignatureUrl(deviceInspectionRecordDto.getRecorderId()));
                    put("reviewerUrl", UserUtils.getFinalUserSignatureUrl(deviceInspectionRecordDto.getReviewerId()));
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    device.getDeviceName() + "点检记录", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInstructionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.ruoyi.device.service.impl;
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.numgen.NumberGenerator;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceInstructionDto;
import com.ruoyi.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.mapper.InstructionMapper;
import com.ruoyi.device.pojo.DeviceInstruction;
import com.ruoyi.device.service.DeviceInstructionService;
import com.ruoyi.device.service.DeviceOperationInstructionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
/**
 * <p>
 * ä½œä¸šæŒ‡å¯¼ä¹¦æ·»åŠ å—æŽ§æ–‡ä»¶è¡¨ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2024-12-04 10:29:18
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceInstructionServiceImpl extends ServiceImpl<InstructionMapper, DeviceInstruction> implements DeviceInstructionService {
    @Autowired
    private DeviceOperationInstructionService operationInstructionService;
    @Autowired
    private NumberGenerator<DeviceInstruction> numberGenerator;
    @Override
    public IPage<DeviceOperationInstructionDto> pageByPageQueryOfHomeworkInstructions(Page page, DeviceOperationInstructionDto operationInstructionDto) {
        return baseMapper.pageByPageQueryOfHomeworkInstructions(page, QueryWrappers.queryWrappers(operationInstructionDto));
    }
    @Override
    public void newHomeworkGuidebookAdded(DeviceInstructionDto instructionDto) {
        if (ObjectUtils.isEmpty(instructionDto.getApplicationNumber())) {
            String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
            String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
            String day = new SimpleDateFormat("dd", Locale.CHINESE).format(new Date());
            String processNumber = numberGenerator.generateNumberWithPrefix(3, "WJSK" + year + month + day, DeviceInstruction::getApplicationNumber);
            instructionDto.setApplicationNumber(processNumber);
        }
        saveOrUpdate(instructionDto);
        if (ObjectUtils.isNotEmpty(instructionDto.getFeTempHumRecordList())) {
            instructionDto.getFeTempHumRecordList().forEach(i -> {
                i.setInstructionId(instructionDto.getId());
                i.setUploader(SecurityUtils.getUserId().intValue());
                i.setUpdateTime(LocalDateTime.now());
            });
            operationInstructionService.saveOrUpdateBatch(instructionDto.getFeTempHumRecordList());
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,197 @@
package com.ruoyi.device.service.impl;
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.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.SysDictData;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.device.dto.DeviceImpowerDetailsDto;
import com.ruoyi.device.dto.DeviceImpowerDto;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceImpower;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.DeviceMaintenanceService;
import com.ruoyi.device.service.DeviceService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
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;
/**
 * è®¾å¤‡ç»´æŠ¤ä¿å…»
 */
@Service
public class DeviceMaintenanceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements DeviceMaintenanceService {
    @Resource
    private DeviceService deviceService;
    @Resource
    private ISysDictTypeService iSysDictTypeService;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢
     * @return
     */
    @Override
    public IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance) {
        if (deviceMaintenance.getDeviceId() == null) {
            return new Page();
        }
        return baseMapper.selectDeviceMaintenancePage(page, QueryWrappers.queryWrappers(deviceMaintenance));
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param deviceId
     * @param response
     */
    @Override
    public void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡ç»´æŠ¤ä¿å…»
        List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
                .eq(DeviceMaintenance::getDeviceId, deviceId));
        // èŽ·å–åˆ°ç¬¬ä¸€ä¸ªè®¾å¤‡ä½¿ç”¨æŽˆæƒ
        DeviceMaintenanceDto deviceMaintenanceDto = new DeviceMaintenanceDto();
        List<SysDictData> sysDictDataList = null;
        if (CollectionUtils.isNotEmpty(deviceMaintenanceList)) {
            BeanUtils.copyProperties(deviceMaintenanceList.get(0), deviceMaintenanceDto);
            // æŸ¥è¯¢è®¾å¤‡ä¿¡æ¯
            Device device = deviceService.getById(deviceId);
            deviceMaintenanceDto.setDeviceName(device.getDeviceName());
            deviceMaintenanceDto.setManagementNumber(device.getManagementNumber());
            //查询维护保养导出字典值
            sysDictDataList = getDeviceMaintenanceDict(device);
        }
        // æ·»åŠ å­—å…¸æžšä¸¾å€¼
        for (DeviceMaintenance deviceMaintenance : deviceMaintenanceList) {
            StringBuilder maintenanceContent = new StringBuilder(deviceMaintenance.getMaintenanceContent());
            if (CollectionUtils.isNotEmpty(sysDictDataList) && StringUtils.isNotBlank(deviceMaintenance.getMaintenanceContent())) {
                maintenanceContent = new StringBuilder();
                List<String> splitList = StrUtil.split(deviceMaintenance.getMaintenanceContent(), ',');
                // å¾ªçŽ¯åˆ¤æ–­æ˜¯å¦æœ‰ä¸€æ ·key
                for (SysDictData sysDictData : sysDictDataList) {
                    if (splitList.contains(sysDictData.getDictLabel())) {
                        maintenanceContent.append("☑").append(sysDictData.getDictLabel()).append(" ");
                    } else {
                        maintenanceContent.append("□").append(sysDictData.getDictLabel()).append(" ");
                    }
                }
            }
            deviceMaintenance.setMaintenanceContent(maintenanceContent.toString());
            // æ·»åŠ ç»´æŠ¤äººå›¾ç‰‡
            deviceMaintenance.setMaintenanceUserUrlRender(UserUtils.getFinalUserSignatureUrl(deviceMaintenance.getMaintenanceUserId()));
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-maintenance.docx");
        Configure configure = Configure.builder()
                .bind("deviceMaintenances", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("device", deviceMaintenanceDto);
                    put("deviceMaintenances", deviceMaintenanceList);
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * ****查询维护保养导出字典值***
     * @param device
     */
    private List<SysDictData> getDeviceMaintenanceDict(Device device) {
        List<SysDictData> sysDictDataList = new ArrayList<>();
        // æŸ¥è¯¢ç»´æŠ¤ä¿å…»å¯¼å‡ºå­—典值
        if (StringUtils.isNotBlank(device.getStoragePoint())) {
            String dictType = null;
            switch (device.getStoragePoint()) {
                case "老化室":
                    dictType = "aging_maintenance_content";
                    break;
                case "老化实验室":
                    dictType = "aging_maintenance_content";
                    break;
                case "电性能实验室":
                    dictType = "electrical_maintenance_content";
                    break;
                case "环境实验室":
                    dictType = "environmental_maintenance_content";
                    break;
                case "燃烧实验室":
                    dictType = "burn_maintenance_content";
                    break;
                case "混炼实验室":
                    dictType = "mixing_maintenance_content";
                    break;
                case "检测中心电性能实验室":
                    dictType = "center_electrical_maintenance_content";
                    break;
                case "恒温二":
                    dictType = "temperature2_maintenance_content";
                    break;
                case "恒温一":
                    dictType = "temperature1_maintenance_content";
                    break;
                case "化学实验室":
                    dictType = "chemistry_maintenance_content";
                    break;
                case "制样室":
                    dictType = "sample_maintenance_content";
                    break;
                case "低温实验室":
                    dictType = "hypothermia_maintenance_content";
                    break;
            }
            sysDictDataList = iSysDictTypeService.selectDictDataByType(dictType);
        }
        return sysDictDataList;
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import com.ruoyi.device.service.DeviceMaintenancePlanDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:11:46
 */
@Service
public class DeviceMaintenancePlanDetailsServiceImpl extends ServiceImpl<DeviceMaintenancePlanDetailsMapper, DeviceMaintenancePlanDetails> implements DeviceMaintenancePlanDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,292 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.mapper.DeviceMaintenancePlanDetailsMapper;
import com.ruoyi.device.mapper.DeviceMaintenancePlanMapper;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import com.ruoyi.device.service.DeviceMaintenancePlanDetailsService;
import com.ruoyi.device.service.DeviceMaintenancePlanService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
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.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * è®¾å¤‡ä¿å…»è®¡åˆ’表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-16 06:10:52
 */
@Service
public class DeviceMaintenancePlanServiceImpl extends ServiceImpl<DeviceMaintenancePlanMapper, DeviceMaintenancePlan> implements DeviceMaintenancePlanService {
    @Resource
    private DeviceMaintenancePlanDetailsService deviceMaintenancePlanDetailsService;
    @Resource
    private DeviceMaintenancePlanDetailsMapper deviceMaintenancePlanDetailsMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private UserMapper userMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param page
     * @return
     */
    @Override
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        IPage<DeviceMaintenancePlan> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceMaintenancePlanDto));
        return Result.success(iPage);
    }
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        deviceMaintenancePlanDto.setCompilerId(userId);
        deviceMaintenancePlanDto.setCompiler(user.getName());
        deviceMaintenancePlanDto.setDatePreparation(LocalDateTime.now());
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceMaintenancePlanDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
            deviceMaintenancePlanDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceMaintenancePlanDto);
        // è¯¦æƒ…赋值并保存
        List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
        if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // è¯¦æƒ…不为空
            List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // éåŽ†è¯¦æƒ…
                deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDetail.getDeviceId()); // è®¾å¤‡ID
                deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // ä¿å…»è®¡åˆ’ID
                DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
                BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
                return planDetails;
            }).collect(Collectors.toList());
            deviceMaintenancePlanDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * ä¿®æ”¹è®¾å¤‡ä¿å…»è®¡åˆ’
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceMaintenancePlanDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
            deviceMaintenancePlanDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceMaintenancePlanDto);
        // åˆ é™¤åŽŸæœ¬çš„è¯¦æƒ…
        deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
        // è¯¦æƒ…赋值并保存
        List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
        if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // è¯¦æƒ…不为空
            List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // éåŽ†è¯¦æƒ…
                deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDto.getDeviceId()); // è®¾å¤‡ID
                deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // ä¿å…»è®¡åˆ’ID
                DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
                BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
                return planDetails;
            }).collect(Collectors.toList());
            deviceMaintenancePlanDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * åˆ é™¤è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        this.removeById(deviceMaintenancePlanDto);
        deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
        return Result.success();
    }
    /**
     * å¯¼å‡ºè®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     * @param response          å“åº”
     */
    @Override
    public Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
        DeviceMaintenancePlanDto deviceMaintenancePlan = baseMapper.selectMaintenancePlanById(maintenancePlanId);
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
        List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetailsDtoList = deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId);
        // è®¾ç½®åºå·
        deviceMaintenancePlanDetailsDtoList.forEach(deviceInspectionRecordDetails -> {
            deviceInspectionRecordDetails.setIndex(deviceMaintenancePlanDetailsDtoList.indexOf(deviceInspectionRecordDetails) + 1);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-plan.docx");
        Configure configure = Configure.builder()
                .bind("deviceMaintenancePlanDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceMaintenancePlan", deviceMaintenancePlan);
                    put("deviceMaintenancePlanDetailsDtoList", deviceMaintenancePlanDetailsDtoList);
                    // ç¼–制人签名地址
                    put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getCompilerId()));
                    // å®¡æ ¸äººç­¾ååœ°å€
                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getAuditId()));
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
     *
     * @param maintenancePlanId è®¾å¤‡ä¿å…»è®¡åˆ’id
     */
    @Override
    public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
        DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(maintenancePlanId);
        // æŸ¥è¯¢è¯¦æƒ…
        DeviceMaintenancePlanDto deviceMaintenancePlanDto = new DeviceMaintenancePlanDto();
        BeanUtils.copyProperties(deviceMaintenancePlan, deviceMaintenancePlanDto);
        deviceMaintenancePlanDto.setDeviceMaintenancePlanDetails(deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId));
        return Result.success(deviceMaintenancePlanDto);
    }
    /**
     * æäº¤å®¡æ ¸
     * @param deviceMaintenancePlanDto
     * @return
     */
    @Override
    public Result submitReviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        User audit = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
        this.update(Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
                .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
                .set(DeviceMaintenancePlan::getAuditId, audit.getId())
                .set(DeviceMaintenancePlan::getAudit, audit.getName())
                .set(DeviceMaintenancePlan::getStatus, null)
                .set(DeviceMaintenancePlan::getAuditRemark, null)
                .set(DeviceMaintenancePlan::getAuditDate, null)
        );
        DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(deviceMaintenancePlanDto.getMaintenancePlanId());
        // å‘送消息
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        // æ¶ˆæ¯å‘送
        InformationNotification info = new InformationNotification();
        // å‘送人
        info.setCreateUser(user.getName());
        info.setMessageType("6");
        info.setTheme("CNAS设备保养计划审核通知");
        info.setContent(deviceMaintenancePlan.getPlanYear() + "年的设备保养计划待审核");
        info.setSenderId(userId);
        // æŽ¥æ”¶äºº
        info.setConsigneeId(audit.getId());
        info.setJumpPath(MenuJumpPathConstants.DEVICE);
        informationNotificationService.addInformationNotification(info);
        // å‘送企业微信通知
        threadPoolTaskExecutor.execute(() -> {
            String message = "";
            message += "CNAS设备保养计划核通知";
            message += "\n请去资源管理-设备一层目录-设备保养计划填写";
            message += "\n" + deviceMaintenancePlan.getPlanYear() + "年的设备保养计划待核";
            //发送企业微信消息通知
            try {
                WxCpUtils.inform(audit.getAccount(), message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        return Result.success();
    }
    /**
     * å®¡æ ¸è®¾å¤‡ä¿å…»è®¡åˆ’
     *
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     */
    @Override
    public Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        LambdaUpdateWrapper<DeviceMaintenancePlan> wrapper = Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
                .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
                .set(DeviceMaintenancePlan::getStatus, deviceMaintenancePlanDto.getStatus())
                .set(DeviceMaintenancePlan::getAuditRemark, deviceMaintenancePlanDto.getAuditRemark())
                .set(DeviceMaintenancePlan::getAuditDate, LocalDateTime.now());
        this.update(wrapper); // æ›´æ–°
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceMetricRecordMapper;
import com.ruoyi.device.pojo.DeviceMetricRecord;
import com.ruoyi.device.service.DeviceMetricRecordService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:01
 */
@Service
public class DeviceMetricRecordServiceImpl extends ServiceImpl<DeviceMetricRecordMapper, DeviceMetricRecord> implements DeviceMetricRecordService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceMetricMapper;
import com.ruoyi.device.pojo.DeviceMetric;
import com.ruoyi.device.service.IDeviceMetricService;
import org.springframework.stereotype.Service;
@Service
public class DeviceMetricServiceImpl extends ServiceImpl<DeviceMetricMapper, DeviceMetric> implements IDeviceMetricService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMetricsCopyServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceMetricsCopyMapper;
import com.ruoyi.device.pojo.DeviceMetricsCopy;
import com.ruoyi.device.service.DeviceMetricsCopyService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡æ ¡å‡† - æ ¡å‡†è®°å½• - æ ¡å‡†æ¡ç›® æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2024-09-27 10:20:11
 */
@Service
public class DeviceMetricsCopyServiceImpl extends ServiceImpl<DeviceMetricsCopyMapper, DeviceMetricsCopy> implements DeviceMetricsCopyService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceOperationInstructionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.dto.DeviceOperationInstructionDto;
import com.ruoyi.device.mapper.OperationInstructionMapper;
import com.ruoyi.device.pojo.OperationInstruction;
import com.ruoyi.device.service.DeviceOperationInstructionService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
 * è®¾å¤‡ - ä½œä¸šæŒ‡å¯¼ä¹¦ æ·»åŠ å—æŽ§æ–‡ä»¶ å­ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2024-12-04 10:43:32
 */
@Service
public class DeviceOperationInstructionServiceImpl extends ServiceImpl<OperationInstructionMapper, OperationInstruction> implements DeviceOperationInstructionService {
    @Override
    public List<DeviceOperationInstructionDto> homeworkGuidebookEditor(Integer instructionId) {
        return baseMapper.homeworkGuidebookEditor(instructionId);
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,148 @@
package com.ruoyi.device.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceRecordDto;
import com.ruoyi.device.excel.DeviceRecordExportWord;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.mapper.DeviceRecordMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceRecord;
import com.ruoyi.device.service.DeviceRecordService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.system.domain.vo.SysRoleVo;
import com.ruoyi.system.mapper.SysRoleMenuMapper;
import org.springframework.beans.BeanUtils;
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.Map;
/**
 * <p>
 * cnas设备使用记录表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-09-21 11:06:47
 */
@Service
public class DeviceRecordServiceImpl extends ServiceImpl<DeviceRecordMapper, DeviceRecord> implements DeviceRecordService {
    @Resource
    private DeviceMapper deviceMapper;
    @Resource
    private SysRoleMenuMapper sysRoleMenuMapper;
    @Override
    public IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
        // todo:仅看自己
        Long userId = SecurityUtils.getUserId();
        // èŽ·å–æƒé™åˆ¤æ–­æ˜¯å¦æ˜¯ä»…çœ‹æˆ‘
        SysRoleVo sysRoleVo = sysRoleMenuMapper.selectRoleMenu("get:device:record", userId);
        Integer testUserId = null;
        //没有仅看我权限跳过
        if (sysRoleVo != null && sysRoleVo.getIsRersonal() != null && sysRoleVo.getIsRersonal().equals(1)) {
            testUserId = SecurityUtils.getUserId().intValue();
        }
        return baseMapper.deviceRecordPage(deviceId, page, sampleCode, managementNumber, testUserId);
    }
    @Override
    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response) {
        // æŸ¥è¯¢cnas设备使用记录
        List<DeviceRecord> deviceList = baseMapper.selectExportList(deviceId, exportDate);
        // è®¾å¤‡ä¿¡æ¯
        Device device = deviceMapper.selectById(deviceId);
        // æŸ¥è¯¢è®¾å¤‡å±žäºŽå“ªä¸ªå®žéªŒå®¤
        String laboratoryName = "装备线缆实验室";
        // è¦æ˜ å°„到word数据
        List<DeviceRecordExportWord> deviceExportList = new ArrayList<>();
        // deviceExportList èµ‹å€¼
        for (DeviceRecord deviceRecord : deviceList) {
            // å¤„理设备 å¼€å§‹ä½¿ç”¨æ—¶é—´ å’Œ ç»“束时间
            String startTime = "";
            String endTime = "";
            String operationDate = "";
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
            if (deviceRecord.getUseStartDate() != null) {
                startTime = deviceRecord.getUseStartDate().format(formatter);
                endTime = deviceRecord.getUseEndDate().format(formatter);
                String[] startTimeSplit = startTime.split(" ");
                String[] endTimeSplit = endTime.split(" ");
                if (startTimeSplit[0].equals(endTimeSplit[0])) {
                    startTime = startTimeSplit[1];
                    endTime = endTimeSplit[1];
                } else {
                    endTime = endTimeSplit[0] + '\n' + endTimeSplit[1];
                    startTime = startTimeSplit[0] + '\n' + startTimeSplit[1];
                }
                DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy.M.d");
                operationDate = deviceRecord.getUseStartDate().format(formatter2);
            }
            // å¤„理使用前和使用后
            String useBeforeString = deviceRecord.getUseBefore() == 0? "异常" : "良好";
            String useAfterString = deviceRecord.getUseAfter() == 0 ? "异常" : "良好";
            DeviceRecordExportWord deviceRecordExportWord = new DeviceRecordExportWord();
            // è¿›è¡Œèµ‹å€¼
            BeanUtils.copyProperties(deviceRecord, deviceRecordExportWord);
            deviceRecordExportWord.setUseBeforeString(useBeforeString); // ä½¿ç”¨å‰
            deviceRecordExportWord.setUseAfterString(useAfterString); // ä½¿ç”¨åŽ
            deviceRecordExportWord.setOperationDate(operationDate); // è®¾å¤‡æ“ä½œæ—¥æœŸ
            deviceRecordExportWord.setUseStartDateString(startTime); // å¼€å§‹æ—¶é—´
            deviceRecordExportWord.setUseEndDateString(endTime); // ç»“束时间
            deviceExportList.add(deviceRecordExportWord);
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/use-record.docx");
        Configure configure = Configure.builder()
                .bind("useRecord", new HackLoopTableRenderPolicy())
                .build();
        String deviceName = device.getDeviceName();
        String managementNumber = device.getManagementNumber();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("useRecord", deviceExportList);
                    put("deviceName", deviceName);
                    put("managementNumber", managementNumber);
                    put("laboratory", laboratoryName);
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceScrappedServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
package com.ruoyi.device.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceScrappedDto;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.mapper.DeviceScrappedMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceScrapped;
import com.ruoyi.device.service.DeviceScrappedService;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
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.LocalDate;
import java.util.HashMap;
/**
 * <p>
 * è®¾å¤‡æŠ¥åºŸç”³è¯·è¡¨ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-17 01:53:47
 */
@Service
public class DeviceScrappedServiceImpl extends ServiceImpl<DeviceScrappedMapper, DeviceScrapped> implements DeviceScrappedService {
    @Resource
    private DeviceMapper deivceMapper;
    @Resource
    private UserMapper userMapper;
    /**
     * è®¾å¤‡æŠ¥åºŸç”³è¯·åˆ—表
     *
     * @param deviceScrapped
     * @return
     */
    @Override
    public IPage<DeviceScrapped> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped) {
        return baseMapper.pageDeviceScrapped(page, QueryWrappers.queryWrappers(deviceScrapped));
    }
    /**
     * æ–°å¢žè®¾å¤‡æŠ¥åºŸç”³è¯·
     *
     * @return
     */
    @Override
    public boolean addDeviceScrapped(DeviceScrapped deviceScrapped) {
        DeviceScrapped scrapped = new DeviceScrapped();
        // å½“前登录用户信息和部门
        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
        switch (deviceScrapped.getFlowType()) {
            case 0:
                BeanUtils.copyProperties(deviceScrapped, scrapped);
                // ç”³è¯·
                scrapped.setReasonsForScrap(deviceScrapped.getReasonsForScrap());
                scrapped.setApplicantUserId(user.getId());
                scrapped.setApplicantUser(user.getName());
                scrapped.setApplicantDate(LocalDate.now());
                // å¤„理人信息
                User departmentHeadUser = userMapper.selectById(deviceScrapped.getDepartmentHeadUserId());
                scrapped.setApplicantUserId(departmentHeadUser.getId());
                scrapped.setApplicantUser(departmentHeadUser.getName());
                baseMapper.insert(scrapped);
                break;
            case 1:
                scrapped.setScrappedId(deviceScrapped.getScrappedId());
                // ç”³è¯·éƒ¨é—¨è´Ÿè´£äººæ„è§
                scrapped.setDepartmentHeadOpinion(deviceScrapped.getDepartmentHeadOpinion());
                scrapped.setDepartmentHeadDate(LocalDate.now());
                // è®¡é‡å®¤ä¿¡æ¯
                User meteringRoomUser = userMapper.selectById(deviceScrapped.getMeteringRoomUserId());
                scrapped.setMeteringRoomUserId(meteringRoomUser.getId());
                scrapped.setMeteringRoomUser(meteringRoomUser.getName());
                baseMapper.updateById(scrapped);
                break;
            case 2:
                scrapped.setScrappedId(deviceScrapped.getScrappedId());
                // è®¡é‡å®¤æ„è§
                scrapped.setMeteringRoomOpinion(deviceScrapped.getMeteringRoomOpinion());
                scrapped.setMeteringRoomDate(LocalDate.now());
                // æ‰¹å‡†äººä¿¡æ¯
                User approverUser = userMapper.selectById(deviceScrapped.getApproverUserId());
                scrapped.setApproverUserId(approverUser.getId());
                scrapped.setApproverUser(approverUser.getName());
                baseMapper.updateById(scrapped);
                break;
            case 3:
                scrapped.setScrappedId(deviceScrapped.getScrappedId());
                //批准人
                scrapped.setApproverOpinion(deviceScrapped.getApproverOpinion());
                scrapped.setApproverDate(LocalDate.now());
                scrapped.setIsFinish(1);
                baseMapper.updateById(scrapped);
                break;
        }
        return true;
    }
    /**
     * å¯¼å‡ºè®¾å¤‡æŠ¥åºŸç”³è¯·
     *
     * @param scrappedId è®¾å¤‡æŠ¥åºŸç”³è¯·id
     * @param response   å“åº”
     * @return ç»“æžœ
     */
    @Override
    public Result<?> exportDeviceScrapped(Integer scrappedId, HttpServletResponse response) {
        // æŸ¥è¯¢æŠ¥åºŸæ•°æ®
        DeviceScrappedDto deviceScrapped = baseMapper.selectDeviceScrappedById(scrappedId);
        if (deviceScrapped == null) {
            return Result.fail("设备报废申请不存在");
        }
        Device device = null;
        if (deviceScrapped.getDeviceId() != null) {
            device = deivceMapper.selectById(deviceScrapped.getDeviceId());
            device = device == null ? new Device() : device;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-scrapped.docx");
        Configure configure = Configure.builder()
                .build();
        Device finalDevice = device;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceScrapped", deviceScrapped);
                    put("device", finalDevice);
                    // ç”³è¯·äººç­¾å
                    put("applicantUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getApplicantUserId()));
                    // éƒ¨é—¨è´Ÿè´£äººç­¾å
                    put("headUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getDepartmentHeadUserId()));
                    // è®¡é‡å®¤ç­¾å
                    put("metrologyRoomUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getMeteringRoomUserId()));
                    // æ‰¹å‡†äººç­¾å
                    put("approverUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getApproverUserId()));
                }});
        try {
            response.setContentType("application/msword");
            String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
            String fileName = URLEncoder.encode(
                    deviceName + "设备报废申请", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,498 @@
package com.ruoyi.device.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.basic.mapper.StructureItemParameterMapper;
import com.ruoyi.basic.pojo.StructureItemParameter;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.device.dto.*;
import com.ruoyi.device.mapper.CollectBridgeMapper;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.mapper.DeviceMetricRecordMapper;
import com.ruoyi.device.pojo.*;
import com.ruoyi.device.service.DataConfigService;
import com.ruoyi.device.service.DeviceService;
import com.ruoyi.device.service.DeviceDocumentsService;
import com.ruoyi.device.utils.DataAcquisition;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.mapper.InsSampleMapper;
import com.ruoyi.inspect.pojo.InsProduct;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.system.mapper.UserMapper;
import lombok.AllArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
 * è®¾å¤‡(Device)表服务实现类
 */
@Service
@AllArgsConstructor
public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
    private DeviceMapper deviceMapper;
    private UserMapper userMapper;
    private StructureItemParameterMapper structureItemParameterMapper;
    private DataConfigService dataConfigService;
    private InsSampleMapper insSampleMapper;
    private DeviceDocumentsService documentService;
    private DeviceMetricRecordMapper deviceMetricRecordMapper;
    private DeviceMaintenanceMapper deviceMaintenanceMapper;
    private CollectBridgeMapper collectBridgeMapper;
    @Override
    public IPage<DeviceDto> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull) {
        IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter), laboratoryNameIsNull);
        return iPage;
    }
    @Override
    public int addDeviceParameter(Device itemParameter) {
        return deviceMapper.insert(itemParameter);
    }
    @Override
    public int delDeviceParameter(Integer id) {
        return deviceMapper.deleteById(id);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public int upDeviceParameter(Device itemParameter) {
        return deviceMapper.updateById(itemParameter);
    }
    @Override
    public List<Device> selectEquipmentOverview() {
        return deviceMapper.selectEquipmentOverview(new Page(1, 10), QueryWrappers.queryWrappers(new Device()));
    }
    @Override
    public List<Device> authorizedPerson() {
        return deviceMapper.authorizedPerson();
    }
    @Override
    public List<Device> search(Integer status, String deviceName, String specificationModel, String largeCategory) {
        return deviceMapper.search(status, deviceName, specificationModel, largeCategory);
    }
    @Override
    public List<Device> selectDeviceByCategory(String inspectionItem, String inspectionItemSubclass, String laboratory) {
        List<Integer> id;
        try {
            id = structureItemParameterMapper.selectList(Wrappers.<StructureItemParameter>lambdaQuery()
                    .eq(StructureItemParameter::getInspectionItem, inspectionItem)
                    .eq(ObjectUtils.isNotEmpty(inspectionItemSubclass), StructureItemParameter::getInspectionItemSubclass, inspectionItemSubclass)
                    .eq(ObjectUtils.isNotEmpty(laboratory), StructureItemParameter::getLaboratory, laboratory)
                    .select(StructureItemParameter::getId)).stream().map(StructureItemParameter::getId).collect(Collectors.toList());
        } catch (Exception e) {
            return null;
        }
        List<Device> devices = deviceMapper.selectList(Wrappers.<Device>lambdaQuery()
                .eq(Device::getDeviceStatus, 0)
                .isNotNull(Device::getInsProductIds));
        List<Device> devices2 = new ArrayList<>();
        for (Device device : devices) {
            String[] ids = device.getInsProductIds().split(",");
            for (String i : ids) {
                if (ObjectUtils.isNotEmpty(i)) {
                    if (id.contains(Integer.parseInt(i))) {
                        devices2.add(device);
                        break;
                    }
                }
            }
        }
        return devices2;
    }
    @Override
    public DeviceDto selectDeviceByCode(Integer id) {
        DeviceDto deviceDto = deviceMapper.selectDeviceByCode(id);
        List<Integer> ids = new ArrayList<>();
        if (Strings.isNotEmpty(deviceDto.getAuthorizedPerson())) {
            if (deviceDto.getAuthorizedPerson().equals("null")) {
                deviceDto.setAuthorizedPerson("[]");
            }
            ids = JSON.parseArray(deviceDto.getAuthorizedPerson(), Integer.class);
        }
        String name = "";
        if (!ids.isEmpty()) {
            name = userMapper.selectBatchIds(ids).stream().map(User::getName).collect(Collectors.joining(","));
        }
        deviceDto.setAuthorizedPersonName(name);
        //查询设备校准信息
        DeviceMetricRecord calibrate = getDeviceMetricRecord(id, "calibrate");
        deviceDto.setCalibrateNo(calibrate.getCertificateSerialNumber());
        // åˆ°äº†åœç”¨æ—¥æœŸï¼Œè‡ªåŠ¨å°†çŠ¶æ€æ”¹ä¸ºåœç”¨
        if (deviceDto.getNextCalibrationDate() != null) {
            if (LocalDateTime.now().isAfter(deviceDto.getNextCalibrationDate())) {
                // todo: è®¾å¤‡è¿è¡ŒçŠ¶æ€å­—å…¸
//                List<Enums> enums = enumService.selectEnumByCategory("设备状态");
//                List<Enums> status = enums.stream().filter(item -> item.getLabel().equals("停用")).collect(Collectors.toList());
//                deviceDto.setDeviceStatus(Integer.parseInt(status.get(0).getValue()));
                deviceMapper.updateById(deviceDto);
            }
        }
        return deviceDto;
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¡å‡†/核查记录
     * @param deviceId
     * @param type
     * @return
     */
    public DeviceMetricRecord getDeviceMetricRecord(int deviceId, String type){
        return Optional.ofNullable(
                deviceMetricRecordMapper.selectOne(Wrappers.<DeviceMetricRecord>lambdaQuery()
                        .eq(DeviceMetricRecord::getDeviceId, deviceId)
                        .eq(DeviceMetricRecord::getType, type)
                        .orderByDesc(DeviceMetricRecord::getCreateTime)
                        .last("limit 1"))).orElse(new DeviceMetricRecord());
    }
    @Override
    public Result<?> dataAcquisition(HttpServletRequest request, DeviceCollectionDto dto) {
        // æŸ¥è¯¢æ£€éªŒé¡¹
        List<Integer> itemIds = dto.getItemIds();
        if (CollectionUtils.isEmpty(itemIds)) {
            throw new ErrorException("没有需要数采的检验项");
        }
        List<InsProduct> insProducts = insSampleMapper.selectProductResult(itemIds);
        // æŸ¥è¯¢æ£€éªŒé¡¹ç»‘定的id
        List<Integer> itemParameterIds = insProducts.stream().map(InsProduct::getStructureItemParameterId).collect(Collectors.toList());
        Set<String> deviceCodeSet = new LinkedHashSet<>();
        for (InsProduct product : insProducts) {
            // æŸ¥è¯¢è®¾å¤‡
            // æ·»åŠ è®¾å¤‡ç¼–å·
            if (product.getInsProductResult() != null) {
                List<JSONObject> jsonObjects = JSON.parseArray(product.getInsProductResult().getEquipValue(), JSONObject.class);
                for (JSONObject jsonObject : jsonObjects) {
                    if (!"".equals(jsonObject.get("v") + "")) {
                        List<String> v = StrUtil.split(jsonObject.get("v") + "", ",");
                        deviceCodeSet.addAll(v);
                    }
                }
            }
        }
        if (CollectionUtils.isEmpty(deviceCodeSet)) {
            throw new ErrorException("未选择设备信息");
        }
        // èŽ·å–è®¾å¤‡é›†åˆ
        List<Device> deviceList = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
                .in(Device::getManagementNumber, deviceCodeSet)
                .isNotNull(Device::getIp)
                .ne(Device::getIp, ""));
        if (CollectionUtils.isEmpty(deviceList)) {
            throw new ErrorException("无设备配置采集绑定信息");
        }
        // æ•°é‡‡è¿”回信息
        Map<String, Object> map = new HashMap<>();
        for (Device device : deviceList) {
            String ip = device.getIp();
            // æ ¹æ®æ£€éªŒé¡¹èŽ·å–config
            List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
                    .in(DataConfig::getStructureItemParameterId, itemParameterIds)
                    .eq(DataConfig::getDeviceId, device.getId()));
            // èŽ·å–è®¾å¤‡é…ç½®ç±»
            // åˆ¤æ–­è®¾å¤‡æ˜¯å¦æ˜¯æ•°å­—ç›´æ¡¥
            if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) {
                map.putAll(dataCollectBridge(list, device, dto.getEntrustCode()));
            } else {
                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag()));
            }
        }
        // 4、造循环次数,参与公式计算
        if (ObjectUtils.isNotEmpty(map)) {
            Map<String, Object> frequency = DataAcquisition.createFrequency(dto.getEntrustCode(), dto.getEntrustCode(), map);
            return Result.success(frequency);
        } else {
            return Result.success(null);
        }
    }
    /**
     * èŽ·å–æ•°å­—ç›´æ¡¥æ£€æµ‹ä¿¡æ¯
     * @return
     */
    public Map<String, ?> dataCollectBridge(List<DataConfig> dataConfig, Device device, String entrustCode) {
        // æ‹¼æŽ¥åå­—
        Map<String, List<DataConfig>> userMap = dataConfig.stream()
                .peek(i -> {
                    String itemName = i.getInspectionItem();
                    if (StringUtils.isNotBlank(i.getInspectionItemClass())) {
                        itemName += "@" + i.getInspectionItemClass();
                    }
                    String name = i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? itemName + "," : itemName + "," + i.getInspectionItemSubclass();
                    // æ·»åŠ æ£€éªŒé¡¹åç§°
                    i.setInsProductItem(name);
                })
                .collect(Collectors.groupingBy(DataConfig::getInsProductItem));
        Map<String, Object> map = new HashMap<>();
        userMap.forEach((k, v) -> {
            List<String> resultValue = new ArrayList<>();
            // æŸ¥è¯¢ç›´æ¡¥ç”µæµç”µé˜»æ•°é‡‡å€¼
            List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
                    .like(CollectBridge::getEntrustCode, entrustCode)
                    .orderByAsc(CollectBridge::getCollectDate));
            resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("equipName", device.getDeviceName());
            hashMap.put("equipValue", device.getManagementNumber());
            hashMap.put("result", resultValue);
            map.put(k, hashMap);
        });
        return map;
    }
    @Override
    public List<Map<String, Object>> treeDevice(String deviceName) {
        List<Map<String, Object>> listMap = deviceMapper.treeDevice(deviceName);
        return listMap;
    }
    @Override
    public void exportDeviceFile(Integer deviceId, HttpServletResponse response) {
        // è®¾å¤‡ä¿¡æ¯
        Device device = baseMapper.selectById(deviceId);
        // è®¾å¤‡æ¡£æ¡ˆ
        List<DeviceDocuments> documentList = documentService.list(Wrappers.<DeviceDocuments>lambdaQuery().eq(DeviceDocuments::getDeviceId, deviceId));
        // è®¾å¤‡æ ¡å‡†è¡¨
        List<DeviceMetricRecord> deviceMetricRecordList = deviceMetricRecordMapper.selectList(Wrappers.<DeviceMetricRecord>lambdaQuery().eq(DeviceMetricRecord::getDeviceId, deviceId));
        // è®¾å¤‡ç»´ä¿®è¡¨
        List<DeviceMaintenance> deviceMaintenanceList = deviceMaintenanceMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery().eq(DeviceMaintenance::getDeviceId, deviceId));
        // è¿”回给word的数据列表 åˆ†ä¸ºå·¦å³ä¸¤åˆ—数据
        List<DocumentExportWordDto> documentExportWordDtoList = new ArrayList<>();
        // ç»™æ¡£æ¡ˆåŠ åºå· å¹¶å·¦å³åˆ†ä¸ºå·¦å³ä¸¤åˆ—在word中显示
        extracted(documentList, documentExportWordDtoList);
        // å°†æ ¡å‡†è¡¨å’Œç»´ä¿®è¡¨æ”¾å…¥ä¸€ä¸ªå¯¹è±¡ä¸­æ–¹ä¾¿word表格中显示
        List<DeviceMetricRecordAndMaintenanceDto> deviceMetricRecordAndMaintenanceDtoList = getDeviceMetricRecordAndMaintenanceDtoList(deviceMetricRecordList, deviceMaintenanceList);
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-document.docx");
        Configure configure = Configure.builder()
                .bind("document", new HackLoopTableRenderPolicy())
                .bind("deviceMetricRecordAndMaintenanceDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("device", device);
                    put("document", documentExportWordDtoList); // æ¡£æ¡ˆ
                    put("deviceMetricRecordAndMaintenanceDtoList", deviceMetricRecordAndMaintenanceDtoList); // æ ¡å‡†è¡¨ å’Œ ç»´ä¿®è¡¨
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    device.getDeviceName() + "档案", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    private List<DeviceMetricRecordAndMaintenanceDto> getDeviceMetricRecordAndMaintenanceDtoList(List<DeviceMetricRecord> deviceMetricRecordList, List<DeviceMaintenance> deviceMaintenanceList) {
        // è®¾å¤‡æ ¡å‡†è¡¨å’Œè®¾å¤‡ç»´ä¿®è¡¨çš„集合
        List<DeviceMetricRecordAndMaintenanceDto> deviceMetricRecordAndMaintenanceDtoList = new ArrayList<>();
        // è®¾å¤‡æ ¡å‡†è¡¨å’Œè®¾å¤‡ç»´ä¿®è¡¨çš„长度可能不一样 å–最大值 ä¸å¤Ÿçš„用空数据填充
        int metricRecordSize = deviceMetricRecordList.size();
        int maintenanceSize = deviceMaintenanceList.size();
        int size = Math.max(metricRecordSize, maintenanceSize);
        // ç»™ æ ¡éªŒå’Œç»´ä¿®å¯¹è±¡ èµ‹å€¼
        for (int i = 0; i < size; i++) {
            // æ ¡éªŒå’Œç»´ä¿®å¯¹è±¡
            DeviceMetricRecordAndMaintenanceDto deviceMetricRecordAndMaintenanceDto = new DeviceMetricRecordAndMaintenanceDto();
            // è®¾ç½®åºå·
            deviceMetricRecordAndMaintenanceDto.setIndex(i + 1);
            // æ ¡å‡†è¡¨æ•°æ®
            if (metricRecordSize > i) {
                // è®¾ç½®æ—¥æœŸæ ¼å¼
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                // èŽ·å–è®¾å¤‡æ ¡å‡†è¡¨æ•°æ®
                DeviceMetricRecord deviceMetricRecord = deviceMetricRecordList.get(i);
                // è®¾ç½®æ ¡å‡†æ—¥æœŸ
                deviceMetricRecordAndMaintenanceDto.setCalibrationDateString(sdf.format(deviceMetricRecord.getCalibrationDate()));
                // è®¾ç½®è¯ä¹¦ç¼–号
                deviceMetricRecordAndMaintenanceDto.setCertificateNumber(deviceMetricRecord.getCertificateSerialNumber());
                // è®¾ç½®æœ‰æ•ˆæœŸ
                deviceMetricRecordAndMaintenanceDto.setValidityDateString(sdf.format(deviceMetricRecord.getNextCalibrationDate()));
                // è®¾ç½®æ ¡å‡†æœ‰æ•ˆæ—¥æœŸ
                deviceMetricRecordAndMaintenanceDto.setValidityDateString(sdf.format(deviceMetricRecord.getConfirmDate()));
                // è®¾ç½®æ£€éªŒç»“æžœ
                deviceMetricRecordAndMaintenanceDto.setJudgement(deviceMetricRecord.getStatus());
            }
            // ç»´ä¿®è¡¨æ•°æ®
            if (maintenanceSize > i) {
                // èŽ·å–è®¾å¤‡ç»´ä¿®è¡¨æ•°æ®
                DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(i);
                DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                // ç»´ä¿®æ—¥æœŸ
                deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getMaintenanceDate().format(dateTimeFormatter));
                // å¤„理方法
                deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getMaintenanceContent());
                // å¤‡æ³¨
                deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getRemark());
            }
            deviceMetricRecordAndMaintenanceDtoList.add(deviceMetricRecordAndMaintenanceDto);
        }
        return deviceMetricRecordAndMaintenanceDtoList;
    }
    /**
     * ç»™æ¡£æ¡ˆåŠ åºå· å¹¶å·¦å³åˆ†ä¸ºå·¦å³ä¸¤åˆ—在word中显示
     *
     * @param documentList              æ¡£æ¡ˆåˆ—表
     * @param documentExportWordDtoList è¿”回给word的数据列表
     */
    private static void extracted(List<DeviceDocuments> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
        // ç»™æ¡£æ¡ˆåŠ åºå·   å¹¶ä¸”分为左右两个列表在word中显示
        for (int i = 0; i < documentList.size(); i++) {
            // åˆ›å»ºword表格中一行的数据对象
            DocumentExportWordDto documentExportWordDto = new DocumentExportWordDto();
            // èŽ·å–æ¡£æ¡ˆä¿¡æ¯
            DeviceDocuments document = documentList.get(i);
            // æ ¼å¼åŒ–日期
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            // æ ¹æ®åºå· åˆ†åˆ«åŠ å…¥ä¸¤ä¸ªåˆ—è¡¨
            if (i % 2 == 0) {
                // å¥‡æ•°åœ¨å·¦åˆ—
                documentExportWordDto.setIndex1(i + 1);
                documentExportWordDto.setName1(document.getName());
                documentExportWordDto.setQuantity1(document.getQuantity());
                documentExportWordDto.setPageCount1(document.getPageCount());
                documentExportWordDto.setArchiveDateString1(document.getProvideDate().format(dateTimeFormatter));
            } else {
                // å¶æ•°åœ¨å³åˆ—
                documentExportWordDto.setIndex2(i + 1);
                documentExportWordDto.setName2(document.getName());
                documentExportWordDto.setQuantity2(document.getQuantity());
                documentExportWordDto.setPageCount2(document.getPageCount());
                documentExportWordDto.setArchiveDateString2(document.getProvideDate().format(dateTimeFormatter));
            }
            // æŠŠä¸€è¡Œæ•°æ®å¯¹è±¡åŠ å…¥åˆ—è¡¨
            documentExportWordDtoList.add(documentExportWordDto);
        }
    }
    @Override
    public void exportEquipmentDetails(HttpServletResponse response) {
        List<Device> deviceList = baseMapper.selectList(null);
        List<DeviceExport> deviceExportList = new ArrayList<>();
        int index = 1;
        for (Device device : deviceList) {
            Integer equipmentManager = device.getEquipmentManager();
            String equipmentManagerName = null;
            if (equipmentManager != null) {
                User user = userMapper.selectById(equipmentManager);
                if (user != null) {
                    equipmentManagerName = user.getName();
                }
            }
            DeviceExport deviceExport = new DeviceExport();
            BeanUtils.copyProperties(device, deviceExport);
            deviceExport.setIndex(index);
            deviceExport.setEquipmentManagerName(equipmentManagerName);
            deviceExportList.add(deviceExport);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/quipment-details.docx");
        Configure configure = Configure.builder()
                .bind("deviceList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceList", deviceExportList);
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceStateServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package com.ruoyi.device.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.basic.mapper.LaboratoryMapper;
import com.ruoyi.basic.pojo.Laboratory;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.device.dto.DeviceStateDto;
import com.ruoyi.device.mapper.DeviceStateMapper;
import com.ruoyi.device.pojo.DeviceState;
import com.ruoyi.device.service.DeviceStateService;
import com.ruoyi.framework.exception.ErrorException;
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.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
/**
 * <p>
 * è®¾å¤‡åœç”¨/启用 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2024-09-26 09:51:40
 */
@Service
public class DeviceStateServiceImpl extends ServiceImpl<DeviceStateMapper, DeviceState> implements DeviceStateService {
    @Resource
    private LaboratoryMapper laboratoryMapper;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Override
    public IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber) {
        return baseMapper.getDeviceStatePage(deviceId, page, processNumber);
    }
    @Override
    public void exportDeviceStatus(Integer deviceId, String processNumber, HttpServletResponse response) {
        // æ ¹æ®æµç¨‹ç¼–号 æŸ¥è¯¢cnas设备状态
        DeviceStateDto deviceStateDto = baseMapper.getDeviceStatePage(deviceId,new Page<DeviceStateDto>(1,1), processNumber).getRecords().get(0);
        // å¯¹æ—¶é—´è¿›è¡Œä¿®æ”¹
        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日");
        deviceStateDto.setSubmitDateString(deviceStateDto.getSubmitDate() != null ? deviceStateDto.getSubmitDate().format(format) : "  å¹´ æœˆ æ—¥");
        deviceStateDto.setDepartmentDateString(deviceStateDto.getDepartmentDate() != null? deviceStateDto.getDepartmentDate().format(format) : "  å¹´ æœˆ æ—¥");
        deviceStateDto.setMeasuringRoomDateString(deviceStateDto.getMeasuringRoomDate() != null? deviceStateDto.getMeasuringRoomDate().format(format) : "  å¹´ æœˆ æ—¥");
        deviceStateDto.setApprovalDateString(deviceStateDto.getApprovalDate() != null? deviceStateDto.getApprovalDate().format(format) : "  å¹´ æœˆ æ—¥");
        // æŸ¥è¯¢è®¾å¤‡å±žäºŽå“ªä¸ªå®žéªŒå®¤
        String laboratoryName;
        String largeCategory = deviceStateDto.getLargeCategory();
        if (StringUtils.isNotBlank(largeCategory)) {
            largeCategory = largeCategory.substring(0, 1);
            Laboratory laboratory = laboratoryMapper.selectOne(Wrappers.<Laboratory>lambdaQuery()
                    .eq(Laboratory::getLaboratoryNumber, largeCategory)
                    .select(Laboratory::getLaboratoryName));
            laboratoryName = laboratory.getLaboratoryName();
        } else {
            laboratoryName = "";
        }
        //todo: è®¾å¤‡çŠ¶æ€æŸ¥è¯¢ç­¾ååœ°å€ æš‚时人名查询
        //获取申请人的签名地址
        String applicantUrl = null;
        if (deviceStateDto.getSubmitOperatingPersonnel() != null) {
            applicantUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
                            .eq(User::getName, deviceStateDto.getSubmitOperatingPersonnel()))
                    .getSignatureUrl();
            if (StringUtils.isBlank(applicantUrl)) {
                throw new ErrorException("找不到申请人的签名");
            }
        }
        //获取部门负责人的签名地址
        String headOfDepartmentUrl = null;
        if (deviceStateDto.getDepartmentNextPesponsible() != null) {
            headOfDepartmentUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
                    .eq(User::getName, deviceStateDto.getDepartmentNextPesponsible()))
                    .getSignatureUrl();
            if (StringUtils.isBlank(headOfDepartmentUrl)) {
                throw new ErrorException("找不到部门负责人的签名");
            }
        }
        //获取计量室复测人的签名地址
        String measurementRoomUrl = null;
        if (deviceStateDto.getMeasuringRoomNextPesponsible() != null) {
            measurementRoomUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
                            .eq(User::getName, deviceStateDto.getMeasuringRoomNextPesponsible()))
                    .getSignatureUrl();
            if (StringUtils.isBlank(measurementRoomUrl)) {
                throw new ErrorException("找不到计量室复测人的签名");
            }
        }
        //获取批准人的签名地址
        String approvedUrl = null;
        if (deviceStateDto.getApprovalNextPesponsible() != null) {
            approvedUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
                            .eq(User::getName, deviceStateDto.getApprovalNextPesponsible()))
                    .getSignatureUrl();
            if (StringUtils.isBlank(approvedUrl)) {
                throw new ErrorException("找不到批准人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-status.docx");
        Configure configure = Configure.builder()
                .build();
        String finalApplicantUrl = applicantUrl; // ç”³è¯·äººçš„签名地址
        String finalHeadOfDepartmentUrl = headOfDepartmentUrl; // éƒ¨é—¨è´Ÿè´£äººçš„签名地址
        String finalMeasurementRoomUrl = measurementRoomUrl; // è®¡é‡å®¤å¤æµ‹äººçš„签名地址
        String finalApprovedUrl = approvedUrl; // æ‰¹å‡†äººçš„签名地址
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceStateDto", deviceStateDto);
                    put("submitOperatingPersonnelUrl", StringUtils.isNotBlank(finalApplicantUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApplicantUrl).create() : null);
                    put("departmentNextPesponsibleUrl", StringUtils.isNotBlank(finalHeadOfDepartmentUrl) ? Pictures.ofLocal(imgUrl + "/" + finalHeadOfDepartmentUrl).create() : null);
                    put("measuringRoomNextPesponsibleUrl", StringUtils.isNotBlank(finalMeasurementRoomUrl) ? Pictures.ofLocal(imgUrl + "/" + finalMeasurementRoomUrl).create() : null);
                    put("approvalNextPesponsibleUrl", StringUtils.isNotBlank(finalApprovedUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApprovedUrl).create() : null);
                    put("laboratory", laboratoryName);
                }});
        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();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceTraceabilityManagementDetailsMapper;
import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
import com.ruoyi.device.service.DeviceTraceabilityManagementDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:58
 */
@Service
public class DeviceTraceabilityManagementDetailsServiceImpl extends ServiceImpl<DeviceTraceabilityManagementDetailsMapper, DeviceTraceabilityManagementDetails> implements DeviceTraceabilityManagementDetailsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,292 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.constant.MenuJumpPathConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDetailsDto;
import com.ruoyi.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.mapper.DeviceTraceabilityManagementDetailsMapper;
import com.ruoyi.device.mapper.DeviceTraceabilityManagementMapper;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
import com.ruoyi.device.pojo.DeviceTraceabilityManagementDetails;
import com.ruoyi.device.service.DeviceTraceabilityManagementDetailsService;
import com.ruoyi.device.service.DeviceTraceabilityManagementService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
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.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-12-20 02:27:44
 */
@Service
public class DeviceTraceabilityManagementServiceImpl extends ServiceImpl<DeviceTraceabilityManagementMapper, DeviceTraceabilityManagement> implements DeviceTraceabilityManagementService {
    @Resource
    private DeviceTraceabilityManagementDetailsService deviceTraceabilityManagementDetailsService;
    @Resource
    private DeviceTraceabilityManagementDetailsMapper deviceTraceabilityManagementDetailsMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InformationNotificationService informationNotificationService;
    @Resource
    private UserMapper userMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     *
     * @param page
     * @return
     */
    @Override
    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(Page page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        IPage<DeviceTraceabilityManagement> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceTraceabilityManagementDto));
        return Result.success(iPage);
    }
    /**
     * æ–°å¢žè®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     *
     * @param deviceTraceabilityManagementDto è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     */
    @Override
    public Result addTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        deviceTraceabilityManagementDto.setCompilerId(userId);
        deviceTraceabilityManagementDto.setCompiler(user.getName());
        deviceTraceabilityManagementDto.setDatePreparation(LocalDateTime.now());
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceTraceabilityManagementDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
            deviceTraceabilityManagementDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceTraceabilityManagementDto);
        // è¯¦æƒ…赋值并保存
        List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails = deviceTraceabilityManagementDto.getDeviceTraceabilityManagementDetails();
        if (CollectionUtils.isNotEmpty(deviceTraceabilityManagementDetails)) { // è¯¦æƒ…不为空
            List<DeviceTraceabilityManagementDetails> collect = deviceTraceabilityManagementDetails.stream().map(detailsDto -> {
                detailsDto.setTraceabilityManagementId(deviceTraceabilityManagementDto.getTraceabilityManagementId()); // é‡å€¼æº¯æºè®¡åˆ’ID
                DeviceTraceabilityManagementDetails details = new DeviceTraceabilityManagementDetails();
                BeanUtils.copyProperties(detailsDto, details);
                return details;
            }).collect(Collectors.toList());
            deviceTraceabilityManagementDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * ä¿®æ”¹è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     *
     * @param deviceTraceabilityManagementDto è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     */
    @Override
    public Result updateTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        // æŸ¥è¯¢å®¡æ ¸äººid
        if (deviceTraceabilityManagementDto.getAuditId() != null) {
            User auditUser = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
            deviceTraceabilityManagementDto.setAudit(auditUser.getName());
        }
        this.saveOrUpdate(deviceTraceabilityManagementDto);
        // åˆ é™¤åŽŸæœ¬çš„è¯¦æƒ…
        deviceTraceabilityManagementDetailsService.remove(Wrappers.<DeviceTraceabilityManagementDetails>lambdaQuery().eq(DeviceTraceabilityManagementDetails::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId()));
        // è¯¦æƒ…赋值并保存
        List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails = deviceTraceabilityManagementDto.getDeviceTraceabilityManagementDetails();
        if (CollectionUtils.isNotEmpty(deviceTraceabilityManagementDetails)) { // è¯¦æƒ…不为空
            List<DeviceTraceabilityManagementDetails> collect = deviceTraceabilityManagementDetails.stream().map(detailsDto -> {
                detailsDto.setTraceabilityManagementId(deviceTraceabilityManagementDto.getTraceabilityManagementId()); // é‡å€¼æº¯æºè®¡åˆ’ID
                DeviceTraceabilityManagementDetails details = new DeviceTraceabilityManagementDetails();
                BeanUtils.copyProperties(detailsDto, details);
                return details;
            }).collect(Collectors.toList());
            deviceTraceabilityManagementDetailsService.saveBatch(collect);
        }
        return Result.success();
    }
    /**
     * åˆ é™¤è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     *
     * @param deviceTraceabilityManagementDto è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     */
    @Override
    public Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        this.removeById(deviceTraceabilityManagementDto);
        deviceTraceabilityManagementDetailsService.remove(Wrappers.<DeviceTraceabilityManagementDetails>lambdaQuery().eq(DeviceTraceabilityManagementDetails::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId()));
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’详情
     *
     * @param traceabilityManagementId è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’id
     */
    @Override
    public Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId) {
        // æŸ¥è¯¢è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
        DeviceTraceabilityManagement deviceTraceabilityManagement = baseMapper.selectById(traceabilityManagementId);
        // æŸ¥è¯¢è¯¦æƒ…
        DeviceTraceabilityManagementDto deviceTraceabilityManagementDto = new DeviceTraceabilityManagementDto();
        BeanUtils.copyProperties(deviceTraceabilityManagement, deviceTraceabilityManagementDto);
        deviceTraceabilityManagementDto.setDeviceTraceabilityManagementDetails(deviceTraceabilityManagementDetailsMapper.deviceTraceabilityManagementDetailsList(traceabilityManagementId));
        return Result.success(deviceTraceabilityManagementDto);
    }
    /**
     * æäº¤æ‰¹å‡†
     * @param deviceTraceabilityManagementDto
     * @return
     */
    @Override
    public Result submitReviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        User audit = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
        this.update(Wrappers.<DeviceTraceabilityManagement>lambdaUpdate()
                .eq(DeviceTraceabilityManagement::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId())
                .set(DeviceTraceabilityManagement::getAuditId, audit.getId())
                .set(DeviceTraceabilityManagement::getAudit, audit.getName())
                .set(DeviceTraceabilityManagement::getAuditDate, null)
                .set(DeviceTraceabilityManagement::getStatus, null)
                .set(DeviceTraceabilityManagement::getAuditRemark, null));
        DeviceTraceabilityManagement deviceTraceabilityManagement = baseMapper.selectById(deviceTraceabilityManagementDto.getTraceabilityManagementId());
        // å‘送消息
        Integer userId = SecurityUtils.getUserId().intValue();
        User user = userMapper.selectById(userId);
        // æ¶ˆæ¯å‘送
        InformationNotification info = new InformationNotification();
        // å‘送人
        info.setCreateUser(user.getName());
        info.setMessageType("6");
        info.setTheme("CNAS设备量值溯源计划批准通知");
        info.setContent(deviceTraceabilityManagement.getPlanYear() + "年的设备量值溯源计划待批准");
        info.setSenderId(userId);
        // æŽ¥æ”¶äºº
        info.setConsigneeId(audit.getId());
        info.setJumpPath(MenuJumpPathConstants.DEVICE);
        informationNotificationService.addInformationNotification(info);
        // å‘送企业微信通知
        threadPoolTaskExecutor.execute(() -> {
            String message = "";
            message += "CNAS设备量值溯源计划核通知";
            message += "\n请去资源管理-设备一层目录-设备量值溯源计划填写";
            message += "\n" + deviceTraceabilityManagement.getPlanYear() + "年的设备量值溯源计划待批准";
            //发送企业微信消息通知
            try {
                WxCpUtils.inform(audit.getAccount(), message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        return Result.success();
    }
    /**
     * å®¡æ ¸è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     *
     * @param deviceTraceabilityManagementDto è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     */
    @Override
    public Result reviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        LambdaUpdateWrapper<DeviceTraceabilityManagement> wrapper = Wrappers.<DeviceTraceabilityManagement>lambdaUpdate()
                .eq(DeviceTraceabilityManagement::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId())
                .set(DeviceTraceabilityManagement::getAuditDate, LocalDateTime.now())
                .set(DeviceTraceabilityManagement::getStatus, deviceTraceabilityManagementDto.getStatus())        // å®¡æ ¸çŠ¶æ€
                .set(DeviceTraceabilityManagement::getAuditRemark, deviceTraceabilityManagementDto.getAuditRemark());// å®¡æ ¸å¤‡æ³¨
        this.update(wrapper); // æ›´æ–°
        return Result.success();
    }
    /**
     * å¯¼å‡ºè®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’
     *
     * @param traceabilityManagementId è®¾å¤‡é‡å€¼æº¯æºè®¡åˆ’id
     */
    @Override
    public Result exportDeviceTraceabilityManagementDto(Integer traceabilityManagementId, HttpServletResponse response) {
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’
        DeviceTraceabilityManagementDto deviceTraceabilityManagement = baseMapper.selectDeviceTraceabilityManagementById(traceabilityManagementId);
        // æŸ¥è¯¢è®¾å¤‡ä¿å…»è®¡åˆ’详情
        List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetailsDtoList = deviceTraceabilityManagementDetailsMapper.deviceTraceabilityManagementDetailsList(traceabilityManagementId);
        // è®¾ç½®åºå·
        deviceTraceabilityManagementDetailsDtoList.forEach(deviceTraceabilityManagementDetails -> {
            deviceTraceabilityManagementDetails.setIndex(deviceTraceabilityManagementDetailsDtoList.indexOf(deviceTraceabilityManagementDetails) + 1);
        });
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/traceability-management-details.docx");
        Configure configure = Configure.builder()
                .bind("deviceTraceabilityManagementDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceTraceabilityManagement", deviceTraceabilityManagement);
                    put("deviceTraceabilityManagementDetailsDtoList", deviceTraceabilityManagementDetailsDtoList);
                    // ç¼–制人签名地址
                    put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceTraceabilityManagement.getCompilerId()));
                    // å®¡æ ¸äººç­¾ååœ°å€
                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceTraceabilityManagement.getAuditId()));
                }});
        try {
            response.setContentType("application/msword");
            String finalFileName = deviceTraceabilityManagement.getFileName() == null ? "" : deviceTraceabilityManagement.getFileName() + "_";
            String fileName = URLEncoder.encode(
                    finalFileName+ "设备量值溯源计划", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
}
cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.ruoyi.device.task;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceRecordDto;
import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.mapper.DeviceRecordMapper;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceRecord;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * è®¾å¤‡ä½¿ç”¨è®°å½•提醒
 */
@Component
public class DeviceRecordSchedule {
    @Resource
    private DeviceMapper deviceMapper;
    @Resource
    private DeviceRecordMapper deviceRecordMapper;
    @Resource
    private UserMapper userMapper;
    @Resource
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    /**
     * æé†’填写设备使用记录
     */
//    @Scheduled(cron = "0/5 * * * * *")
    @Scheduled(cron = "0 0 9 * * 6") // æ¯å‘¨å…­æ‰§è¡Œä¸€æ¬¡
    public void task1() {
        // æŸ¥è¯¢æœªå¡«å†™çš„设备使用记录
        List<DeviceRecordDto> deviceRecords = deviceRecordMapper.selectNotFilled();
        Map<Integer, List<DeviceRecordDto>> userPersonIdMap = deviceRecords.stream().collect(Collectors.groupingBy(DeviceRecord::getUsePersonId));
        userPersonIdMap.forEach((userId, recordList) -> {
            threadPoolTaskExecutor.execute(() -> {
                // ä¼ä¸šå¾®ä¿¡é€šçŸ¥å¡«å†™è®¾å¤‡ä½¿ç”¨è®°å½•
                User user = userMapper.selectById(userId);
                String message = "";
                message += "设备使用记录未填写提醒通知";
                for (DeviceRecordDto deviceRecord : recordList) {
                    message += "\n设备名称编号: " + deviceRecord.getDeviceName() + "-" + deviceRecord.getManagementNumber();
                    message += "\n委托编号: " + deviceRecord.getSampleCode();
                    message += "\n";
                }
                message += "\n请去填写设备使用记录";
                //发送企业微信消息通知
                try {
                    WxCpUtils.inform(user.getAccount(), message, null);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            });
        });
    }
    /**
     * æ¯å¤©9点执行一次 é™¤äº†æ˜ŸæœŸå¤©
     * åˆ¤æ–­æ˜¯å¦æœ‰è®¾å¤‡åˆ°è¾¾æ ¡å‡†æœ‰æ•ˆæœŸ
     */
//    @Scheduled(cron = "0/10 * * * * *")
    @Scheduled(cron = "0 0 9 * * 1-6") // æ¯å¤©9点执行一次 é™¤äº†æ˜ŸæœŸå¤©
    public void task2() {
        // æŸ¥è¯¢åˆ°è¾¾æ ¡å‡†æœ‰æ•ˆæœŸçš„设备-提前5天
        List<Device> deviceList = deviceMapper.selectOverdueDevice();
        Map<Integer, List<Device>> userPersonIdMap = deviceList.stream().collect(Collectors.groupingBy(Device::getEquipmentManager));
        userPersonIdMap.forEach((userId, recordList) -> {
            threadPoolTaskExecutor.execute(() -> {
                // ä¼ä¸šå¾®ä¿¡é€šçŸ¥å¡«å†™è®¾å¤‡ä½¿ç”¨è®°å½•
                User user = userMapper.selectById(userId);
                String message = "";
                message += "设备到达校准有效期";
                for (Device deviceRecord : recordList) {
                    message += "\n设备名称: " + deviceRecord.getDeviceName();
                    message += "\n设备编号: " + deviceRecord.getManagementNumber();
                    message += "\n校准有效期: " + deviceRecord.getActivationDate();
                    message += "\n";
                }
                message += "\n请去进行设备校准";
                //发送企业微信消息通知
                try {
                    WxCpUtils.inform(user.getAccount(), message, null);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            });
        });
    }
}
cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,861 @@
package com.ruoyi.device.utils;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.ruoyi.device.pojo.DataConfig;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.framework.exception.ErrorException;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class DataAcquisition {
    private static final String HTTP = "http://";
    private static final String GETFILE = ":9527/lims/getFile"; // èŽ·å–æ–‡ä»¶æŽ¥å£
    private static final String MOVEFILE = ":9527/lims/moveFile"; // æ–‡ä»¶ç§»åŠ¨åœ°å€
    private static final String splitIdentifier = "@-@"; // è‡ªå®šä¹‰å”¯ä¸€æ ‡è¯†åˆ†å‰²ç¬¦
    public static final String frequency = "frequency";
    /**
     * æ•°é‡‡å…¥å£
     *
     * @param dataConfig
     * @param device
     * @return
     */
    public static Map<String, Object> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip, String cableTag) {
        // åˆ¤æ–­æ˜¯å¦æ˜¯å½±åƒæµ‹é‡ä»ª
        if (device.getManagementNumber().equals("JCZX-ZB-OP07001")) {
            if (device.getFileType().equals(".xlsx")) {
                String url = device.getCollectUrl() + "\\" + sampleCode.replace("/", "");
                if (StringUtils.isNotBlank(dataConfig.get(0).getAnotherName())) {
                    url += dataConfig.get(0).getAnotherName() ;
                }
                url += ".xlsx";
                device.setCollectUrl(url);
            }
        }
        // åˆ¤æ–­æ˜¯å¦æ˜¯ç”µç¼†ç‡ƒçƒ§çƒŸå¯†åº¦æµ‹é‡ç³»ç»Ÿ
        if (device.getManagementNumber().equals("JCZX-ZB-ZT03002")) {
            if (device.getFileType().equals(".txt")) {
                device.setCollectUrl(device.getCollectUrl() + "\\-" + sampleCode.replace("/", ""));
            }
        }
        /**
         * filePath æ–‡ä»¶é‡‡é›†è·¯å¾„
         * fileExtension æ–‡ä»¶åŽç¼€
         * entrustCode å§”托编号
         * sampleCode æ ·å“ç¼–号
         * mdbEntrustCode mdb文件需要:委托编号字段 ä¸ºä»€ä¹ˆæ²¡æœ‰åŽ»è¿™ä¸ªmdb前缀呢?因为已经给客户的部分电脑上安装了采集器,而用户不接受重新安装采集器,所以就没有去除
         * mdbSampleCode mdb文件需要:样品编号字段
         */
        String http = HTTP + ip + GETFILE +
                "?filePath=" + device.getCollectUrl() +
                "&fileExtension=" + device.getFileType() +
                "&entrustCode=" + entrustCode +
                "&sampleCode=" + sampleCode +
                "&mdbEntrustCode=" + device.getEntrustCode() +
                "&mdbSampleCode=" + device.getSampleCode() +
                "&dbFileName=" + device.getDbFileName();
        String result = null;
        try {
            result = HttpUtil.get(http);
        } catch (IORuntimeException e) {
            e.printStackTrace();
            throw new ErrorException("所在电脑未安装或未启动:LIMS文件采集器!");
        }
        JSONObject jsonObject = JSON.parseObject(result);
        if (Objects.equals(jsonObject.get("code"), 1)) {
            if (ObjectUtils.isEmpty(jsonObject.get("msg"))) {
                throw new ErrorException("未查询到文件!可能该路径(" + device.getCollectUrl() + ")下并没有所需(" + device.getFileType() +")文件!");
            } else {
                throw new ErrorException(jsonObject.get("msg") + "");
            }
        } else {
            String data = jsonObject.get("data") + "";
            // è€ƒè™‘到一个检测项可能会存在多个数采配置,所以需要进行分组
            Map<String, List<DataConfig>> userMap = dataConfig.stream()
                    .peek(i -> {
                        String itemName = i.getInspectionItem();
                        if (StringUtils.isNotBlank(i.getInspectionItemClass())) {
                            itemName += "@" + i.getInspectionItemClass();
                        }
                        String name = i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? itemName + "," : itemName + "," + i.getInspectionItemSubclass();
                        // æ·»åŠ æ£€éªŒé¡¹åç§°
                        i.setInsProductItem(name);
                    })
                    .collect(Collectors.groupingBy(DataConfig::getInsProductItem));
            Map<String, Object> map;
            switch (device.getFileType()) {
                case ".docx":
                    map = analysisString(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".xlsx":
                    map = analysisList(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".txt":
                    map = analysisTxt(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".csv":
                    map = analysisList(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".mdb":
                    // åˆ¤æ–­æ˜¯å¦æ˜¯æ‹‰åŠ›æœº
                    if (device.getManagementNumber().equals("JCZX-ZB-FF01014")) {
                        map = analysisMdbByPull(data, userMap, device, cableTag);
                    } else {
                        map = analysisMdb(data, userMap, device);
                    }
                    break;
                case ".db":
                    map = analysisDb(data, userMap, device);
                    break;
                case ".png":
                    map = readPngString(data, userMap, device);
                    break;
                default:
                    map = null;
                    break;
            }
            // å¦‚果存在存储地址,则移动地址
            if (ObjectUtils.isNotEmpty(device.getStorageUrl())) {
                String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl() + "&fileType=" + device.getFileType();
                HttpUtil.get(s);
            }
            return map;
        }
    }
    public static Map<String, Object> createFrequency(String entrustCode, String sampleCode, Map<String, Object> map) {
        Set<String> set = new LinkedHashSet<>();
        map.forEach((key, value) -> {
            String[] split = key.split(",");
            String inspectionItem = split[0];
            // åªè¦æœ‰ä¸€ä¸ªä¸ä¸ºç©ºå°±set进去
            if (ObjectUtils.isNotEmpty(value)) {
                set.add(inspectionItem);
            }
        });
        Map<String, Object> result = new HashMap<>();
        for (String inspectionItemKey : set) {
            Map<String, Object> hashMap = new HashMap<>();
            map.forEach((key, value) -> {
                String[] split = key.split(",");
                String inspectionItem = split[0];
                if (inspectionItemKey.equals(inspectionItem)) {
                    if (split.length > 1) {
                        hashMap.put(split[1], value);
                    } else {
                        hashMap.put("", value);
                    }
                }
            });
            String frequency = createKey(entrustCode, sampleCode, inspectionItemKey);
            hashMap.put("frequency", frequency);
            result.put(inspectionItemKey, hashMap);
        }
        return result;
    }
    public static String createKey(String entrustCode, String sampleCode, String inspectionItemKey) {
        return "1";
    }
    /**
     * éœ€è¦é€šè¿‡X,Y轴定位
     *
     * @param data
     * @param dataConfig
     * @return
     */
    private static Map<String, Object> analysisDb(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
        JSONObject jsonObject = JSON.parseObject(data);
        Map<String, Object> map = new HashMap<>();
        if (jsonObject.isEmpty()) {
            return map;
        }
        JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
        dataConfig.forEach((k, v) -> {
            AtomicInteger numberOfDataEntries = new AtomicInteger();
            List<Object> list = new ArrayList<>();
            for (int config = 0; config < v.size(); config++) {
                String refery = getRefer(v.get(config).getRefery());
                for (int i = 0; i < dataList.size(); i++) {
                    JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
                    Object o = jsonObject1.get(refery);
                    if (ObjectUtils.isNotEmpty(o)) {
                        numberOfDataEntries.addAndGet(1);
                        list.add(o);
                    }
                }
            }
            // æ‹¼æŽ¥æ•°é‡‡é…ç½®
            List<Object> result = new ArrayList<>();
            for (int i = 0; i < numberOfDataEntries.get(); i++) {
                String aggregate = "";
                for (int j = 0; j < v.size(); j++) {
                    int index;
                    if (j == 0) {
                        index = i;
                    } else {
                        index = numberOfDataEntries.get() + i;
                    }
                    aggregate += list.get(index).toString() + ",";
                }
                int lastIndex = aggregate.lastIndexOf(",");
                String substring = aggregate.substring(0, lastIndex);
                result.add(substring);
            }
            // è¿›è¡Œå…¬å¼è®¡ç®—
            Object resultValue = calculationFormula(result, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * @param data
     * @param dataConfig
     * @return
     */
    private static Map<String, Object> analysisMdb(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
        JSONObject jsonObject = JSON.parseObject(data);
        Map<String, Object> map = new HashMap<>();
        if (jsonObject.isEmpty()) {
            return map;
        }
        JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
        dataConfig.forEach((k, v) -> {
            DataConfig configVo = v.get(0);
            AtomicInteger numberOfDataEntries = new AtomicInteger();
            List<Object> list = new ArrayList<>();
            for (int config = 0; config < v.size(); config++) {
                String refery = getRefer(v.get(config).getRefery());
                for (int i = 0; i < dataList.size(); i++) {
                    JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
                    Object o = jsonObject1.get(refery);
                    if (ObjectUtils.isNotEmpty(o)) {
                        numberOfDataEntries.addAndGet(1);
                        list.add(o);
                    }
                }
            }
            // æ‹¼æŽ¥æ•°é‡‡é…ç½®
            List<Object> result = new ArrayList<>();
            for (int i = 0; i < numberOfDataEntries.get(); i++) {
                String aggregate = "";
                for (int j = 0; j < v.size(); j++) {
                    int index;
                    if (j == 0) {
                        index = i;
                    } else {
                        index = numberOfDataEntries.get() + i;
                    }
                    aggregate += list.get(index).toString() + ",";
                }
                int lastIndex = aggregate.lastIndexOf(",");
                String substring = aggregate.substring(0, lastIndex);
                result.add(substring);
            }
            // è¿›è¡Œå…¬å¼è®¡ç®—
            Object resultValue = calculationFormula(result, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * æ‹‰åŠ›æœºæ•°é‡‡
     *
     * @param data
     * @param dataConfig
     * @return
     */
    private static Map<String, Object> analysisMdbByPull(String data, Map<String, List<DataConfig>> dataConfig, Device device, String cableTag) {
        JSONObject jsonObject = JSON.parseObject(data);
        Map<String, Object> map = new HashMap<>();
        if (jsonObject.isEmpty()) {
            return map;
        }
        JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
        dataConfig.forEach((k, v) -> {
            List<Map<String, String>> resultValue = new ArrayList<>();
            DataConfig configVo = v.get(0);
            for (int i = 0; i < dataList.size(); i++) {
                JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
                // èŽ·å–æ—¶é—´
                String dDate = jsonObject1.getString("dDate");
                String dTime = jsonObject1.getString("dTime");
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
                // è§£æžç¬¬ä¸€ä¸ªæ—¥æœŸæ—¶é—´å­—符串
                LocalDateTime dateTime1 = LocalDateTime.parse(dDate, formatter);
                // èŽ·å–å¹´æœˆæ—¥
                String yearMonthDay = dateTime1.toLocalDate().toString();
                // è§£æžç¬¬äºŒä¸ªæ—¥æœŸæ—¶é—´å­—符串
                LocalDateTime dateTime2 = LocalDateTime.parse(dTime, formatter);
                // èŽ·å–æ—¶åˆ†
                String hourMinute = dateTime2.toLocalTime().toString();
                // æ‹¼æŽ¥å¹´æœˆæ—¥å’Œæ—¶åˆ†
                String mergedDateTime = yearMonthDay + " " + hourMinute;
                // èŽ·å–åŽšåº¦
                String report = jsonObject1.getString("Report");
                String thickness = extractValue(report, "厚度:\\s*(\\S*?)~");
                // èŽ·å–æ‹‰ä¼¸å¼ºåº¦ä¼¸é•¿çŽ‡
                String result = "";
                if (StringUtils.isNotBlank(configVo.getMatchingName()) && configVo.getMatchingName().contains("拉伸强度")) {
                    result = extractValue(report, "拉伸强度:\\s*(\\S*?)~");
                }
                //判断检验子项是否是拉伸强度
                if (StringUtils.isNotBlank(configVo.getMatchingName()) && configVo.getMatchingName().contains("伸长率")) {
                    result = extractValue(report, "伸长率:\\s*(\\S*?)~");
                }
                Map<String, String> reportMap = new HashMap<>();
                reportMap.put("mergedDateTime", mergedDateTime);
                reportMap.put("thickness", thickness);
                reportMap.put("result", result);
                resultValue.add(reportMap);
            }
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("equipName", device.getDeviceName());
            hashMap.put("equipValue", device.getManagementNumber());
            hashMap.put("result", resultValue);
            map.put(k, hashMap);
        });
        return map;
    }
    private static String extractValue(String input, String regex) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        return matcher.find() ? matcher.group(1) : null;
    }
    private static Pattern SPATTERN = Pattern.compile("([-+])?\\d+(\\.\\d+)?");
    /**
     * åªéœ€Xè½´
     *
     * @param data       é‡‡é›†åˆ°çš„æ–‡ä»¶å­—符串
     * @param dataConfig ç”¨æˆ·é…ç½®å¥½çš„x,y轴定位数据与参照物
     * @return
     */
    private static Map<String, Object> readPngString(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
        Map<String, Object> map = new HashMap<>();
        dataConfig.forEach((k, v) -> {
            List<Object> list = new ArrayList<>();
            for (int config = 0; config < v.size(); config++) {
                String referx = getRefer(v.get(config).getReferx());
                String result = null;
                // é€šè¿‡\n将字符串分割为行
                String[] aColumnY = data.split("\n");
                List<String> list1 = new ArrayList<>();
                // è¯¥å¾ªçŽ¯å¾—å‡ºç”¨æˆ·é…ç½®çš„yè½´
                for (int i = 0; i < aColumnY.length; i++) {
                    String addDataWithSpaces = referx.replaceAll("", " ");
                    int x = getXOrY(v.get(config).getX(), k, "X");
                    if (aColumnY[i].contains(addDataWithSpaces)) {
                        Matcher matcher = SPATTERN.matcher(aColumnY[i]);
                        while (matcher.find()) {
                            String group = matcher.group();
                            list1.add(group);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(list1)) {
                        result = list1.get(x);
                    }
                }
                if (ObjectUtils.isNotEmpty(result)) {
                    list.add(result);
                }
            }
            // è¿›è¡Œå…¬å¼è®¡ç®—
            Object resultValue = calculationFormula(list, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * ä»Žæ–‡ä»¶ä¸­æå–出来的文字,如果有公式,进行公式计算,否则取列表第一个值
     *
     * @param list       æå–出的数字
     * @param dataConfig å­˜å‚¨å…¬å¼çš„对象
     * @return
     */
    private static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem, Device device) {
        if (list.size() == 0) {
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("equipName", device.getDeviceName());
            hashMap.put("equipValue", device.getManagementNumber());
            hashMap.put("result", null);
            return hashMap;
        }
        ArrayList<Object> listResult = new ArrayList<>();
        Map<String, Object> hashMap = new HashMap<>();
        // å¦‚果不为空,进行公式计算
        if (ObjectUtils.isNotEmpty(dataConfig.getFormula())) {
            // å¦åˆ™ï¼šæ²¡æœ‰å…¬å¼ä»£è¡¨ä¸éœ€è¦è®¡ç®—,直接提取List里面的数据
            if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
                String s = calculationFormulaList(list, dataConfig.getFormula());
                listResult.add(s);
            } else {
                list.forEach(i -> {
                    List<Object> strings = Arrays.asList(i.toString().split(","));
                    String s = calculationFormulaList(strings, dataConfig.getFormula());
                    listResult.add(s);
                });
            }
        } else {
            listResult.addAll(list);
        }
        // ä¸ºäº†ç»™å‰ç«¯åšæ•°æ®åŒºåˆ†
        if (listResult.size() > 1) {
            hashMap.put("result", listResult);
        } else {
            hashMap.put("result", listResult.get(0).toString());
        }
        hashMap.put("equipName", device.getDeviceName());
        hashMap.put("equipValue", device.getManagementNumber());
        return hashMap;
    }
    /**
     * è§£æžString数据
     *
     * @param data       é‡‡é›†åˆ°çš„æ–‡ä»¶å­—符串
     * @param dataConfig ç”¨æˆ·é…ç½®å¥½çš„x,y轴定位数据与参照物
     * @return
     */
    private static Map<String, Object> analysisTxt(String data, Map<String, List<DataConfig>> dataConfig,
                                                   Device device, String entrustCode, String sampleCode) {
        Map<String, Object> map = new HashMap<>();
        dataConfig.forEach((k, v) -> {
            List<Object> list = new ArrayList<>();
            // å§”托编号与样品编号不存在,定:1、Y定范围,X定横坐标;2、只存在Y;3、只存在X
            if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
                // åˆ¤æ–­æ˜¯å¦æ˜¯çƒŸå¯†åº¦
                if (device.getManagementNumber().equals("JCZX-ZB-ZT03002")) {
                    // æŒ‰è¡Œåˆ†å‰²æ•°æ®
                    String[] lines = data.split("\n");
                    // æå–最后一行的第一个数字
                    String lastLine = lines[lines.length - 1];
                    String firstNumber = lastLine.split("\t")[0];
                    list.add(firstNumber);
                } else {
                    list = analyzeData(data, v, k, ",");
                }
                // å§”托编号与样品编号存在
            } else if (ObjectUtils.isNotEmpty(device.getEntrustCode()) && ObjectUtils.isNotEmpty(device.getSampleCode())) {
                list = analyzeDataEntrustCodAndSampleCode(data, v, k, ",", device, entrustCode, sampleCode);
            }
            // è¿›è¡Œå…¬å¼è®¡ç®—
            Object resultValue = calculationFormula(list, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * @param data       é‡‡é›†åˆ°çš„æ–‡ä»¶å­—符串
     * @param dataConfig ç”¨æˆ·é…ç½®å¥½çš„x,y轴定位数据与参照物
     * @return
     */
    private static Map<String, Object> analysisString(String data, Map<String, List<DataConfig>> dataConfig, Device device,
                                                      String entrustCode, String sampleCode) {
        String processingDataAfterSpaces = data
                .replaceAll("  +", splitIdentifier)
                .replaceAll("\r", "")
                .replaceAll(" ", "");
        Map<String, Object> map = new HashMap<>();
        dataConfig.forEach((k, v) -> {
            List<Object> list = new ArrayList<>();
            // å§”托编号与样品编号不存在,定:1、Y定范围,X定横坐标;2、只存在Y;3、只存在X
            if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
                list = analyzeData(processingDataAfterSpaces, v, k, splitIdentifier);
                // å§”托编号与样品编号存在
            } else if (ObjectUtils.isNotEmpty(device.getEntrustCode()) && ObjectUtils.isNotEmpty(device.getSampleCode())) {
                list = analyzeDataEntrustCodAndSampleCode(processingDataAfterSpaces, v, k, splitIdentifier, device, entrustCode, sampleCode);
            }
            // è¿›è¡Œå…¬å¼è®¡ç®—
            Object resultValue = calculationFormula(list, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * å–X,Y两个定位
     *
     * @param data       é‡‡é›†åˆ°çš„æ–‡ä»¶å­—符串
     * @param dataConfig ç”¨æˆ·é…ç½®å¥½çš„x,y轴定位数据与参照物
     * @return
     */
    public static Map<String, Object> analysisList(String data, Map<String, List<DataConfig>> dataConfig,
                                                   Device device, String entrustCode, String sampleCode) {
        Map<String, Object> map = new HashMap<>();
        dataConfig.forEach((k, v) -> {
            List<Object> list = new ArrayList<>();
            // å§”托编号与样品编号不存在,定:1、Y定范围,X定横坐标;2、只存在Y;3、只存在X
            if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
                list = analyzeData(data, v, k, splitIdentifier);
                // å§”托编号与样品编号存在
            } else if (ObjectUtils.isNotEmpty(device.getEntrustCode()) && ObjectUtils.isNotEmpty(device.getSampleCode())) {
                list = analyzeDataEntrustCodAndSampleCode(data, v, k, splitIdentifier, device, entrustCode, sampleCode);
            }
            // è¿›è¡Œå…¬å¼è®¡ç®—
            Object resultValue = calculationFormula(list, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    private static List<Object> analyzeDataEntrustCodAndSampleCode(String data, List<DataConfig> v, String k, String splitIdentifier,
                                                                   Device device, String entrustCodeValue, String sampleCodeValue) {
        entrustCodeValue = entrustCodeValue.replaceAll(" ", "");
        sampleCodeValue = sampleCodeValue.replaceAll(" ", "");
        // æœ€ç»ˆç»“æžœ
        List<Object> list = new ArrayList<>();
        int numberOfDataEntries = 0;
        // å–entrustCode与sampleCode所在位
        for (int config = 0; config < v.size(); config++) {
            numberOfDataEntries = 0;
            Integer entrustCodeY = null;
            Integer sampleCodeY = null;
            Integer referYCoordinate = null;
            String refery = getRefer(v.get(config).getRefery());
            String entrustCode = getRefer(device.getEntrustCode()); // å§”托编号字段
            String sampleCode = getRefer(device.getSampleCode()); // æ ·å“ç¼–号字段
            if (ObjectUtils.isEmpty(refery)) {
                continue;
            }
            // åŽ»é™¤æ‰€æœ‰çš„ç©ºæ ¼ï¼Œé€šè¿‡\n将字符串分割为行
            String[] aColumnY = data.replaceAll(" ", "").split("\n");
            for (int i = 0; i < aColumnY.length; i++) {
                // å¦‚果通过判断,定位到Yè½´
                if (aColumnY[i].contains(entrustCode) && aColumnY[i].contains(sampleCode)) {
                    String[] aLine = aColumnY[i].split(splitIdentifier);
                    for (int j = 0; j < aLine.length; j++) {
                        if (aLine[j].contains(entrustCode)) {
                            entrustCodeY = j;
                        }
                        if (aLine[j].contains(sampleCode) ) {
                            sampleCodeY = j;
                        }
                        if (aLine[j].contains(refery)) {
                            referYCoordinate = j;
                        }
                    }
                }
                if (ObjectUtils.isNotEmpty(entrustCodeY) && ObjectUtils.isNotEmpty(sampleCodeY) && ObjectUtils.isNotEmpty(referYCoordinate)) {
                    String[] aLine = aColumnY[i].split(splitIdentifier);
                    try {
                        if (aLine[entrustCodeY].contains(entrustCodeValue) && aLine[sampleCodeY].contains(sampleCodeValue)) {
                            String result = aLine[referYCoordinate];
                            // é˜²æ­¢è®¡ç®—公式的时候出现:[null] è¿™ç§æ•°æ®
                            if (ObjectUtils.isNotEmpty(result)) {
                                numberOfDataEntries += 1;
                                list.add(result);
                            }
                        }
                    } catch (Exception e) {}
                }
            }
        }
        // æ‹¼æŽ¥æ•°é‡‡é…ç½®
        List<Object> result = new ArrayList<>();
        for (int i = 0; i < numberOfDataEntries; i++) {
            String aggregate = "";
            for (int j = 0; j < v.size(); j++) {
                int index;
                if (j == 0) {
                    index = i;
                } else {
                    index = numberOfDataEntries + i;
                }
                aggregate += list.get(index).toString() + ",";
            }
            int lastIndex = aggregate.lastIndexOf(",");
            String substring = aggregate.substring(0, lastIndex);
            result.add(substring);
        }
        return result;
    }
    // ç”±äºŽåœ¨æ–¹æ³•中会大量的判断,所以做一个方法
    private static int getXOrY(String value, String k, String tips) {
        try {
            return Integer.parseInt(value);
        } catch (NumberFormatException e) {
            throw new ErrorException(k + ":未配置" + tips + "坐标轴的值!");
        }
    }
    // é˜²æ­¢å‚照物为空报错,进行判断如果为空赋值空字符
    private static String getRefer(String refer) {
        return ObjectUtils.isNotEmpty(refer) ? refer.replaceAll(" ", "") : "";
    }
    /**
     * å§”托编号与样品编号都为空执行
     *
     * @param data
     * @param v
     * @param k
     * @param split
     * @return
     */
    public static List<Object> analyzeData(String data, List<DataConfig> v, String k, String split) {
        List<Object> list = new ArrayList<>();
        for (int config = 0; config < v.size(); config++) {
            // å–两个用户配置的参照物
            String referx = getRefer(v.get(config).getReferx());
            String refery = getRefer(v.get(config).getRefery());
            if (ObjectUtils.isEmpty(refery) && ObjectUtils.isEmpty(referx)) {
                continue;
            }
            // æœ€ç»ˆç»“æžœ
            List<Object> result = new ArrayList<>();
            // é€šè¿‡\n将字符串分割为行
            String[] aColumnY = data.replaceAll(" ", "").split("\n");
            Integer end = null;
            // é‡‡é›†æ•°æ®ï¼šYè½´
            for (int i = 0; i < aColumnY.length; i++) {
                // å¦‚æžœY参照不为空与X参照为空则执行,同时该行包含Y参照
                if (ObjectUtils.isNotEmpty(refery) && ObjectUtils.isEmpty(referx) && aColumnY[i].contains(refery)) {
                    // å–Y坐标值
                    int y = getXOrY(v.get(config).getY(), k, "Y");
                    String[] aLineX = aColumnY[i].split(split);
                    for (int j = 0; j < aLineX.length; j++) {
                        if (aLineX[j].contains(refery)) {
                            String[] split1 = new String[0];
                            try {
                                split1 = aColumnY[i + y].split(split);
                            } catch (Exception e) {
                                throw new ErrorException(k + ":Y轴定位超出!");
                            }
                            try {
                                result.add(split1[j]);
                            } catch (Exception e) {
                                throw new ErrorException(k + ":X轴定位超出!");
                            }
                        }
                    }
                    // å¦‚æžœY参照不为空与X参照不为空则执行,此处Y定区域
                } else if (ObjectUtils.isNotEmpty(refery) && ObjectUtils.isNotEmpty(referx)) {
                    // å–x的值,防止报错
                    int x = getXOrY(v.get(config).getX(), k, "X");
                    // å–Y坐标值
                    int y = getXOrY(v.get(config).getY(), k, "Y");
                    // ç¼“å­˜Y的结束值
                    if (ObjectUtils.isEmpty(end) && aColumnY[i].contains(refery)) {
                        end = i + y;
                    }
                    // åˆ¤æ–­æ˜¯å¦åœ¨å‚照物为起到,Y坐标值为最终范围
                    if (ObjectUtils.isNotEmpty(end) && i <= end) {
                        String[] aLineX = aColumnY[i].split(split);
                        for (int j = 0; j < aLineX.length; j++) {
                            if (aLineX[j].contains(referx)) {
                                try {
                                    result.add(aLineX[j + x]);
                                } catch (Exception e) {
                                    throw new ErrorException(k + ":X轴定位超出!");
                                }
                                break;
                            }
                        }
                    }
                    // å¦‚æžœX参照不为空同时该行包含X参照,则执行下面的代码
                } else if (aColumnY[i].contains(referx) && ObjectUtils.isEmpty(refery)) {
                    String[] aLineX = aColumnY[i].split(split);
                    // å–x的值,防止报错
                    int x = getXOrY(v.get(config).getX(), k, "X");
                    for (int j = 0; j < aLineX.length; j++) {
                        if (aLineX[j].contains(referx)) {
                            try {
                                result.add(aLineX[j + x]);
                            } catch (Exception e) {
                                throw new ErrorException(k + ":X轴定位超出!");
                            }
                        }
                    }
                }
            }
            // é˜²æ­¢è®¡ç®—公式的时候出现:[null] è¿™ç§æ•°æ®
            if (ObjectUtils.isNotEmpty(result)) {
//                String formatProcessing = getFormatProcessing(result);
                list.addAll(result);
            }
        }
        return list;
    }
    public static String getFormatProcessing(String value) {
        value = value.replaceAll("%", "");
        if (value.contains("=")) {
            String[] split = value.split("=");
            return split[split.length - 1];
        } else if (value.contains(":")) {
            String[] split = value.split(":");
            return split[split.length - 1];
        } else {
            return value;
        }
    }
    public static String getIp(HttpServletRequest request) {
        String ipAddress = request.getRemoteAddr();
        // é˜²æ­¢å›žçŽ¯åœ°å€å˜ä¸ºIPv6
        return ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
    }
    public static String calculationFormulaList(List<Object> list, String formula) {
        //首先将list转换为bigdecmic
        List<BigDecimal> bigDecimalList = list.stream()
                .map(obj -> {
                    return new BigDecimal((obj).toString());
                }).collect(Collectors.toList());
        //将中文的(转换英文的())
        formula = formula.replace("(", "(")
                .replace(")", ")")
                .replace(",", ",");
        //然后提取公式
        String strs = formula.substring(0, formula.indexOf("("));
        String upperStr = strs.toUpperCase();
        if (upperStr.matches(".*\\d.*")) {
            upperStr = "";
        }
        //然后获取最外面括号里面的值,再根据","分割
        int start = formula.indexOf("(");
        int end = -1;
        int a = 0;
        for (int i = start; i < formula.length(); i++) {
            char c = formula.charAt(i);
            if (c == '(') {
                a++;
            } else if (c == ')') {
                a--;
                if (a == 0) {
                    end = i;
                }
            }
        }
        if (start == -1 || end == -1) {
            throw new ErrorException("公式括号不匹配: " + formula);
        }
        String argumentsStr = formula.substring(start + 1, end);
        List<String> arguments = new ArrayList<>();
        int bracketCount = 0;
        StringBuilder currentArgument = new StringBuilder();
        for (char c : argumentsStr.toCharArray()) {
            if (c == ',' && bracketCount == 0) {
                arguments.add(currentArgument.toString());
                currentArgument.setLength(0);
            } else {
                if (c == '(') bracketCount++;
                if (c == ')') bracketCount--;
                currentArgument.append(c);
            }
        }
        arguments.add(currentArgument.toString());
        String[] bracketStrs = arguments.toArray(new String[0]);
        List<BigDecimal> results = new ArrayList<>();
        for (String expr : bracketStrs) {
            Pattern pattern = Pattern.compile("([A-Z])(\\d+)");
            Matcher matcher = pattern.matcher(expr);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                String letter = matcher.group(1);
                int index = Integer.parseInt(matcher.group(2)) - 1; // å°†1-based转为0-based
                if (index < bigDecimalList.size()) {
                    matcher.appendReplacement(sb, bigDecimalList.get(index).toString());
                } else {
                    throw new RuntimeException("公式中的下标 " + index + " è¶…出范围");
                }
            }
            matcher.appendTail(sb);
            // è®¡ç®—表达式
            ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
            try {
                Object result = engine.eval(sb.toString());
                results.add(new BigDecimal(result.toString()));
            } catch (Exception e) {
                throw new IllegalArgumentException("无法计算公式: " + sb, e);
            }
        }
        // æ ¹æ®å‡½æ•°åç§°è¿›è¡Œç›¸åº”计算
        BigDecimal finalResult;
        if (upperStr.equals("") || upperStr == null) {
            finalResult = results.get(0);
        } else {
            switch (upperStr) {
                case "MAX":
                    finalResult = results.stream().max(BigDecimal::compareTo)
                            .orElseThrow(() -> new IllegalArgumentException("无法计算MAX值"));
                    break;
                case "MIN":
                    finalResult = results.stream().min(BigDecimal::compareTo)
                            .orElseThrow(() -> new IllegalArgumentException("无法计算MIN值"));
                    break;
                case "SUM":
                    finalResult = results.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
                    break;
                case "ABS":
                    finalResult = results.stream().map(BigDecimal::abs).reduce(BigDecimal.ZERO, BigDecimal::add);
                    break;
                case "AVERAGE":
                    finalResult = results.stream().reduce(BigDecimal.ZERO, BigDecimal::divide)
                            .divide(BigDecimal.valueOf(results.size()), 2, BigDecimal.ROUND_HALF_UP);
                    break;
                case "MEDIAN":
                    int size = results.size();
                    if (size % 2 == 1) {
                        finalResult = results.get(size / 2);
                    } else {
                        BigDecimal sum = results.get(size / 2 - 1).add(results.get(size / 2));
                        finalResult = sum.divide(BigDecimal.valueOf(2), 2, BigDecimal.ROUND_HALF_UP);
                    }
                    break;
                default:
                    throw new UnsupportedOperationException("暂不支持函数: " + upperStr);
            }
        }
        return finalResult.toString();
        // å¦åˆ™ï¼šæ²¡æœ‰å…¬å¼ä»£è¡¨ä¸éœ€è¦è®¡ç®—,直接提取List里面的数据
    }
}
cnas-device/src/main/resources/mapper/DataConfigMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
<?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.device.mapper.DataConfigMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.device.pojo.DataConfig">
        <id column="id" property="id" />
        <result column="formula" property="formula" />
        <result column="referx" property="referx" />
        <result column="refery" property="refery" />
        <result column="x" property="x" />
        <result column="y" property="y" />
    </resultMap>
    <select id="selectDataConfigList" resultType="com.ruoyi.device.dto.DeviceConfigDtoPage">
        SELECT ddc.*,
               d.device_name,
               sip.sample
        FROM device_data_config ddc
                 left join device d on ddc.device_id = d.id
                 left join structure_item_parameter sip on sip.id = ddc.structure_item_parameter_id
        where d.id = #{deviceId}
        order by ddc.id desc
    </select>
    <select id="deleteDataConfig" resultType="integer">
        SELECT ddc.id
        FROM device d
                 left join structure_item_parameter ip on not FIND_IN_SET(ip.id, d.ins_product_ids)
                 inner join device_data_config ddc on ddc.device_id = d.id and ddc.structure_item_parameter_id = ip.id
    </select>
    <select id="getNoConfigProduct" resultType="com.ruoyi.device.pojo.DataConfig">
        SELECT d.id device_id,
               ip.inspection_item,
               ip.inspection_item_class,
               ip.inspection_item_subclass                          ,
               ip.sample,
               ip.id                                                                          structureItemParameterId,
               ddc.id
        FROM structure_item_parameter ip
                 left join device d on FIND_IN_SET(d.id, ip.device_ids)
                 left join device_data_config ddc on ddc.device_id = d.id and ddc.structure_item_parameter_id = ip.id
        where d.id = #{deviceId}
          and ddc.id is null
        order by ip.sample
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceAcceptanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?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.device.mapper.DeviceAcceptanceMapper">
    <!-- è®¾å¤‡éªŒæ”¶åˆ—表 -->
    <select id="pageDeviceAcceptance" resultType="com.ruoyi.device.pojo.DeviceAcceptance">
        select * from (
        select *
        from device_acceptance
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceAccidentReportMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
<?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.device.mapper.DeviceAccidentReportMapper">
    <!-- è®¾å¤‡äº‹æ•…报告列表 -->
    <select id="pageDeviceAccidentReport" resultType="com.ruoyi.device.pojo.DeviceAccidentReport">
        select * from (
        select *
        from device_accident_report
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectDeviceAccidentReportById" resultType="com.ruoyi.device.dto.DeviceAccidentReportDto">
        select
            d.*,
            date_format(d.accident_date,'%Y-%m-%d') accidentDateStr, -- æ—¶é—´
            date_format(d.report_date,'%Y-%m-%d') reportDateStr, -- æŠ¥å‘Šäººå¡«å†™æ—¶é—´
            date_format(d.assessor_date,'%Y-%m-%d') assessorDateStr, -- è¯„估人填写时间
            date_format(d.department_head_date,'%Y-%m-%d') departmentHeadDateStr, -- éƒ¨é—¨è´Ÿè´£äººå¡«å†™æ—¶é—´
            date_format(d.technical_director_date,'%Y-%m-%d') technicalDirectorDateStr, -- æŠ€æœ¯è´Ÿè´£äººå¡«å†™æ—¶é—´
            date_format(d.director_head_date,'%Y-%m-%d') directorHeadDateStr -- ä¸»ä»»å¡«å†™æ—¶é—´
        from device_accident_report d
        where d.accident_report_id = #{accidentReportId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceBorrowMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?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.device.mapper.DeviceBorrowMapper">
    <select id="deviceBorrowPage" resultType="com.ruoyi.device.pojo.DeviceBorrow">
        select * from (
        select db.*,device_name
        from device_borrow db
        left join device on db.device_id=device.id
        )a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getDeviceBorrowBydeviceId" resultType="com.ruoyi.device.pojo.DeviceBorrow">
        select db.*,device_name
        from device_borrow db
                 left join device on db.device_id=device.id
        where device_id=#{deviceId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceBreakdownMaintenanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?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.device.mapper.DeviceBreakdownMaintenanceMapper">
    <!--设备故障维修列表-->
    <select id="pageDeviceBreakdownMaintenance" resultType="com.ruoyi.device.dto.DeviceBreakdownMaintenance">
        select * from (
        select *
        from device_breakdown_maintenance
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?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.device.mapper.DeviceCalibrationPlanDetailMapper">
    <!-- è®¾å¤‡æ ¡å‡†è®¡åˆ’详情列表 -->
    <select id="pageDeviceCalibrationPlanDetail" resultType="com.ruoyi.device.pojo.DeviceCalibrationPlanDetail">
        select * from (
        select *
        from device_calibration_plan_detail
        order by plan_date asc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?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.device.mapper.DeviceCalibrationPlanMapper">
    <!-- è®¾å¤‡æ ¡å‡†è®¡åˆ’列表 -->
    <select id="pageDeviceCalibrationPlan" resultType="com.ruoyi.device.dto.DeviceCalibrationPlanDto">
        select *
        from (select cqm.*,
        u1.name write_name,
        u3.name ratify_name
        from device_calibration_plan cqm
        left join user u1 on u1.id = cqm.write_user_id
        left join user u3 on u3.id = cqm.ratify_user_id
        order by cqm.create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
<?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.device.mapper.DeviceExaminePlanDetailsMapper">
    <!--设备核查计划详情列表-->
    <select id="pageDeviceExaminePlanDetail" resultType="com.ruoyi.device.dto.DeviceExaminePlanDetailsDto">
        select * from (
        select d.*,
        CASE
        WHEN dc.review_status = 0 THEN 3
        WHEN dc.review_status = 1 THEN 2
        WHEN dc.record_id IS NOT NULL THEN 1
        ELSE 0 END record_status,
        CASE
        WHEN dd.review_status = 0 THEN 3
        WHEN dd.review_status = 1 THEN 2
        WHEN dd.record_contrast_id IS NOT NULL THEN 1
        ELSE 0 END record_contrast_status
        from device_examine_plan_details d
        left join device_examine_record dc on d.plan_details_id = dc.plan_details_id
        left join device_examine_record_contrast dd on dd.plan_details_id = dc.plan_details_id
        order by check_time asc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceExaminePlanMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
<?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.device.mapper.DeviceExaminePlanMapper">
    <!-- è®¾å¤‡æ ¸æŸ¥è®¡åˆ’列表 -->
    <select id="deviceExaminePlanDetailsMapper" resultType="com.ruoyi.device.dto.DeviceExaminePlanDto">
        select *
        from (select cqm.*,
        u1.name write_name,
        u3.name ratify_name
        from device_examine_plan cqm
        left join user u1 on u1.id = cqm.write_user_id
        left join user u3 on u3.id = cqm.ratify_user_id
        order by cqm.create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectExamineExaminePlanDto" resultType="com.ruoyi.device.dto.DeviceExaminePlanDto">
        select
            cqm.*,
            date_format(cqm.write_time, '%Y-%m-%d') writeTimeStr,
            date_format(cqm.ratify_time, '%Y-%m-%d') ratifyTimeStr,
            date_format(cqm.create_time, '%Y') year,
            u1.name write_name,
            u3.name ratify_name
        from device_examine_plan cqm
        left join user u1 on u1.id = cqm.write_user_id
        left join user u3 on u3.id = cqm.ratify_user_id
        where cqm.plan_id = #{deviceExaminePlanId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceExamineRecordContrastMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
<?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.device.mapper.DeviceExamineRecordContrastMapper">
    <!-- æŸ¥è¯¢æ ¸æŸ¥å¯¹æ¯”记录 -->
    <select id="getExamineRecordContrast" resultType="com.ruoyi.device.dto.DeviceExamineRecordContrastDto">
        select derc.*,
               d1.device_name aDeviceName,
               d1.management_number aDeviceNumber,
               d2.device_name bDeviceName,
               d2.management_number bDeviceNumber,
               d3.device_name cDeviceName,
               d3.management_number cDeviceNumber
        from device_examine_record_contrast derc
                 left join device d1 on d1.id = derc.a_device_id
                 left join device d2 on d2.id = derc.a_device_id
                 left join device d3 on d3.id = derc.a_device_id
        where derc.plan_details_id = #{planDetailsId}
    </select>
    <select id="selectExamineRecordContrastDto"
            resultType="com.ruoyi.device.dto.DeviceExamineRecordContrastDto">
        select derc.*,
               d1.device_name aDeviceName,
               d1.management_number aDeviceNumber,
               d2.device_name bDeviceName,
               d2.management_number bDeviceNumber,
               d3.device_name cDeviceName,
               d3.management_number cDeviceNumber,
               DATE_FORMAT(derc.create_time, '%Y-%m-%d') checkerTimeStr,
               DATE_FORMAT(derc.review_time, '%Y-%m-%d') reviewTimeStr,
               d1.storage_point labName
        from device_examine_record_contrast derc
                 left join device d1 on d1.id = derc.a_device_id
                 left join device d2 on d2.id = derc.a_device_id
                 left join device d3 on d3.id = derc.a_device_id
        where derc.plan_details_id = #{planDetailsId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceExamineRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<?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.device.mapper.DeviceExamineRecordMapper">
    <select id="getExamineRecord" resultType="com.ruoyi.device.dto.DeviceExamineRecordDto">
        select der.*,
               d.device_name,
               d.management_number deviceNumber
        from device_examine_record der
                 left join device_examine_plan_details depd on depd.plan_details_id = der.plan_details_id
                 left join device d on d.id = depd.device_id
        where der.plan_details_id = #{planDetailsId}
    </select>
    <select id="selectReviewExamineRecordDto" resultType="com.ruoyi.device.dto.DeviceExamineRecordDto">
        select der.*,
               Date_Format(der.update_time, '%Y-%m-%d') updateTimeStr,
               d.device_name,
               d.management_number deviceNumber
        from device_examine_record der
                 left join device_examine_plan_details depd on depd.plan_details_id = der.plan_details_id
                 left join device d on d.id = depd.device_id
        where der.plan_details_id = #{planDetailsId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceExternalApplyMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?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.device.mapper.DeviceExternalApplyMapper">
    <!--利用外部设备申请列表-->
    <select id="pageDeviceExternalApply" resultType="com.ruoyi.device.pojo.DeviceExternalApply">
        select * from (
        select *
        from device_external_apply
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectDeviceExternalById" resultType="com.ruoyi.device.pojo.DeviceExternalApply">
        select
            dea.*
        from device_external_apply dea
        where dea.external_apply_id = #{externalApplyId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceImpowerDetailsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<?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.device.mapper.DeviceImpowerDetailsMapper">
    <!-- æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è¯¦æƒ… -->
    <select id="deviceImpowerDetailsList" resultType="com.ruoyi.device.dto.DeviceImpowerDetailsDto">
        select
            did.*,
            d.device_name,
            d.specification_model,
            d.management_number
        from device_impower_details did
                 left join device d on did.device_id = d.id
        where did.impower_id = #{impowerId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceImpowerMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
<?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.device.mapper.DeviceImpowerMapper">
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceImpower">
        select
        *
        from device_impower
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceInspectionRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<?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.device.mapper.DeviceInspectionRecordMapper">
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceInspectionRecord">
        select * from ( SELECT *
        from device_inspection_record ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?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.device.mapper.DeviceMaintenanceMapper">
    <!-- è®¾å¤‡ç»´æŠ¤åˆ†é¡µæŸ¥è¯¢ -->
    <select id="selectDeviceMaintenancePage" resultType="com.ruoyi.device.dto.DeviceMaintenanceDto">
        select * from (
        select db.*,
        d.device_name,
        d.management_number
        from device_maintenance db
        left join device d on db.device_id = d.id)a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
        order by maintenance_date desc
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?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.device.mapper.DeviceMaintenancePlanDetailsMapper">
    <select id="deviceInspectionRecordDetailsList"
            resultType="com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto">
        select
            dmpd.*,
            d.device_name,
            d.management_number device_number,
            d.specification_model,
            d.management_number,
            d.storage_point
        from device_maintenance_plan_details dmpd
        left join device d on dmpd.device_id = d.id
        where dmpd.maintenance_plan_id = #{maintenancePlanId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?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.device.mapper.DeviceMaintenancePlanMapper">
    <!-- æ ¹æ®è®¾å¤‡id查询设备的保养计划 -->
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceMaintenancePlan">
        select
            *
        from device_maintenance_plan
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectMaintenancePlanById" resultType="com.ruoyi.device.dto.DeviceMaintenancePlanDto">
        select
            dmp.*,
            date_format(dmp.date_preparation, '%Y-%m-%d') as datePreparationStr,
            date_format(dmp.audit_date, '%Y-%m-%d') as auditDateStr
        from device_maintenance_plan dmp
        where dmp.maintenance_plan_id = #{maintenancePlanId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,196 @@
<?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.device.mapper.DeviceMapper">
    <select id="selectDeviceParameter" resultType="com.ruoyi.device.pojo.Device">
        select * from(
        select id,
        large_category,
        date_production,
        equipment_manager,
        authorized_person,
        device_name,
        internal_code,
        asset_code,
        calibration_date,
        scrap_time,
        acceptance_records,
        subclass,
        factory_no,
        acquisition_date,
        accurate_measurement,
        specification_model,
        device_status,
        storage_point,
        activation_date,
        latest_traceability,
        down_time,
        maintenance_records,
        manufacturer,
        detection_type,
        _costs,
        calibration_certicate,
        create_user,
        create_time,
        update_user,
        update_time,
        status
        from device
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectEquipmentOverview" resultType="com.ruoyi.device.pojo.Device">
        select * from(
        select id,
        device_name,
        specification_model,
        device_status,
        create_user,
        status,
        update_time
        from device
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="authorizedPerson" resultType="com.ruoyi.device.pojo.Device">
        select id,
               authorized_person
        from device
    </select>
    <select id="search" resultType="com.ruoyi.device.pojo.Device">
        select *
        from device
        <where>
            <if test="deviceName!=null and deviceName!=''">
                and device_name like concat('%',#{deviceName},'%')
            </if>
            <if test="status!=null and status!=''">
                and device_status = status
            </if>
            <if test="specificationModel!=null and specificationModel!= ''">
                and specification_model = #{specificationModel}
            </if>
            <if test="largeCategory!=null">
                and large_category = #{largeCategory}
            </if>
            <if test="largeCategory == 'null'">
                and (large_category = '' or large_category is null)
            </if>
        </where>
    </select>
    <select id="selectDeviceImage" resultType="com.ruoyi.device.pojo.Device">
        select (image_upload, create_user, create_time) values (#{image_upload}
             , #{createUser}
             , #{createTime})
    </select>
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.dto.DeviceDto">
        select * from(
        SELECT
        d.*,
        cmr.calibration_date as last_calibration_date_two,
        cmr.next_calibration_date as next_calibration_date_two,
        GROUP_CONCAT(distinct inspection_item SEPARATOR ';') AS insProductItem,
        u.name ,
        l.laboratory_name
        FROM
        device d
        LEFT JOIN `user` u ON u.id = d.equipment_manager
        LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
        LEFT JOIN device_metric_record cmr ON d.id = cmr.device_id
        LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids)
        <where>
            <if test="laboratoryNameIsNull != null and laboratoryNameIsNull == true">
                l.laboratory_name is null
            </if>
            AND cmr.type = 'calibrate' or cmr.type is null or cmr.type = ''
        </where>
        GROUP BY
        d.id,
        u.name, l.laboratory_name
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getInspectionItemSubclass" resultType="map">
        SELECT ip.inspection_item,
               if(ip.inspection_item_subclass is not null and ip.inspection_item_subclass != '',
                  ip.inspection_item_subclass, ip.inspection_item) inspection_item_subclass
        FROM ins_product ip
        where ip.ins_sample_id = #{id}
    </select>
    <resultMap id="treeDeviceDto" type="map">
        <result property="label" column="laboratory_name"/>
        <result property="value" column="value" />
        <collection property="children" resultMap="storagePointMap" javaType="List"/>
    </resultMap>
    <resultMap id="storagePointMap" type="map">
        <result property="value" column="value"/>
        <result property="label" column="storage_point"/>
        <collection property="children" resultMap="deviceNameMap" javaType="List"/>
    </resultMap>
    <resultMap id="deviceNameMap" type="map">
        <result property="value" column="id"/>
        <result property="label" column="device_name"/>
        <result property="activationDate" column="activation_date"/>
        <result property="managementNumber" column="management_number"/>
    </resultMap>
    <select id="treeDevice" resultMap="treeDeviceDto">
        select
        d.id,
        case when l.laboratory_name is null || l.laboratory_name ='' then '其他' else l.laboratory_name end as laboratory_name,
        case when d.storage_point is null || d.storage_point ='' then '其他' else d.storage_point end as storage_point,
        d.device_name,
        d.management_number,
        null as value,
        d.activation_date
        from device d
        LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
        <where>
            <if test="deviceName!=null and deviceName!=''">
                and device_name like concat('%',#{deviceName},'%')
            </if>
        </where>
    </select>
    <select id="selectDeviceByCode" resultType="com.ruoyi.device.dto.DeviceDto">
        SELECT d.*,
               GROUP_CONCAT(DISTINCT inspection_item SEPARATOR ';') AS ins_product_item,
               l.laboratory_name,
               u1.name                                                 equipmentManager_name,
               u2.name                                                 authorized_person_name
        FROM device d
                 LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids)
                 LEFT JOIN laboratory l ON d.subordinate_departments_id = l.id
                 LEFT JOIN user u1 ON u1.id = d.equipment_manager
                 LEFT JOIN user u2 ON u2.id = d.authorized_person
        WHERE d.id = #{id}
        GROUP BY d.id,
                 l.laboratory_name,
                 u1.name,
                 u2.name
    </select>
    <!-- æŸ¥è¯¢åˆ°è¾¾æ ¡å‡†æœ‰æ•ˆæœŸçš„设备-提前5天 -->
    <select id="selectOverdueDevice" resultType="com.ruoyi.device.pojo.Device">
        SELECT *
        FROM device
        WHERE
        -- ç­›é€‰å‡º activation_date åœ¨å½“前日期前五天内的数据
        activation_date BETWEEN now() AND now() + INTERVAL 5 DAY
        -- ç­›é€‰å‡º activation_date å·²ç»è¶…过当前日期的数据
        OR activation_date &lt; now()
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceScrappedMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
<?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.device.mapper.DeviceScrappedMapper">
    <!-- è®¾å¤‡æŠ¥åºŸç”³è¯·åˆ—表 -->
    <select id="pageDeviceScrapped" resultType="com.ruoyi.device.pojo.DeviceScrapped">
        select * from (
        select *
        from device_scrapped
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectDeviceScrappedById" resultType="com.ruoyi.device.dto.DeviceScrappedDto">
        select
            *,
            date_format(applicant_date,'%Yå¹´%m月%d日') as applicantDateStr,
            date_format(department_head_date,'%Yå¹´%m月%d日') as departmentHeadDateStr,
            date_format(metering_room_date,'%Yå¹´%m月%d日') as meteringRoomDateStr,
            date_format(approver_date,'%Yå¹´%m月%d日') as approverDateStr
        from device_scrapped
        where scrapped_id = #{scrappedId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceStateMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
<?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.device.mapper.DeviceStateMapper">
    <select id="getDeviceStatePage" resultType="com.ruoyi.device.dto.DeviceStateDto">
        select ds.*,
               d.device_name,
               d.management_number,
               d.specification_model,
               d.large_category
        from device_state ds
                 left join device d on d.id = ds.device_id
        where ds.device_id = #{deviceId}
        <if test="processNumber != '' and processNumber != null">
            and ds.process_number like concat('%', #{processNumber}, '%')
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?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.device.mapper.DeviceTraceabilityManagementDetailsMapper">
    <select id="deviceTraceabilityManagementDetailsList"
            resultType="com.ruoyi.device.dto.DeviceTraceabilityManagementDetailsDto">
        select
            dtmd.*,
            d.device_name,
            d.specification_model,
            d.management_number
        from device_traceability_management_details dtmd
                 left join device d on dtmd.device_id = d.id
        where dtmd.traceability_management_id = #{traceabilityManagementId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?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.device.mapper.DeviceTraceabilityManagementMapper">
    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.DeviceTraceabilityManagement">
        select
        *
        from device_traceability_management
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectDeviceTraceabilityManagementById"
            resultType="com.ruoyi.device.dto.DeviceTraceabilityManagementDto">
        select
            dtm.*,
            date_format(dtm.date_preparation, '%Y-%m-%d') as datePreparationStr,
            date_format(dtm.audit_date, '%Y-%m-%d') as auditDateStr
        from device_traceability_management dtm
        where dtm.traceability_management_id = #{traceabilityManagementId}
    </select>
</mapper>
cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
<?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.device.mapper.DeviceRecordMapper">
    <select id="deviceRecordPage" resultType="com.ruoyi.device.dto.DeviceRecordDto">
        select dr.*,
               d.device_name,
               d.management_number
        from device_record dr
                 left join device d on d.id = dr.device_id
        where 1=1
        <if test="deviceId != null">
            and dr.device_id = #{deviceId}
        </if>
        <if test="sampleCode != '' and sampleCode != null">
            and dr.sample_code like concat('%', #{sampleCode}, '%')
        </if>
        <if test="managementNumber != '' and managementNumber != null">
            and d.management_number like concat('%', #{managementNumber}, '%')
        </if>
        <if test="userId != null">
            and dr.use_person_id = #{userId}
            and dr.use_start_date is null
        </if>
        ORDER BY (dr.use_start_date IS NULL) desc , dr.use_start_date DESC
    </select>
    <select id="selectNotFilled" resultType="com.ruoyi.device.dto.DeviceRecordDto">
        select dr.*,
               d.device_name,
               d.management_number
        from device_record dr
                 left join device d on d.id = dr.device_id
        where dr.use_start_date is null
    </select>
    <!-- æŸ¥è¯¢å¯¼å‡ºè®¾å¤‡ä½¿ç”¨è®°å½• -->
    <select id="selectExportList" resultType="com.ruoyi.device.dto.DeviceRecordDto">
        select dr.*
        from device_record dr
        where dr.use_start_date is not null
        <if test="deviceId != null">
            and dr.device_id = #{deviceId}
        </if>
        <if test="exportDate != '' and exportDate != null">
            and DATE_FORMAT(dr.use_start_date, '%Y-%m') = #{exportDate}
        </if>
        ORDER BY dr.use_start_date asc
    </select>
</mapper>
cnas-device/src/main/resources/mapper/InstructionMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
<?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.device.mapper.InstructionMapper">
    <select id="pageByPageQueryOfHomeworkInstructions" resultType="com.ruoyi.device.dto.DeviceOperationInstructionDto">
        SELECT
        doi.*,di.*,
        d.device_name deviceName,
        d.management_number deviceNumber,
        d.specification_model deviceModel,
        u.name uploaderName,
        u1.name approverName
        FROM
        device_operation_instruction doi
        LEFT JOIN device_instruction di ON di.id = doi.instruction_id
        left join device d on d.id = doi.device_id
        left join user u on u.id = doi.uploader
        left join user u1 on u1.id = doi.approver_id
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-device/src/main/resources/mapper/OperationInstructionMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<?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.device.mapper.OperationInstructionMapper">
    <select id="homeworkGuidebookEditor" resultType="com.ruoyi.device.dto.DeviceOperationInstructionDto">
        SELECT
            doi.*,d.device_name, d.management_number device_number, d.specification_model device_model
        FROM
            device_operation_instruction doi
                left join device d on d.id = doi.device_id
        where doi.instruction_id = #{instructionId}
    </select>
</mapper>
cnas-device/src/main/resources/static/word/acceptance-certificate.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-accident-report.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-breakdown-maintenance.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-calibration-plan.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-document.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-external-apply.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-impower.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-inspection-record.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-maintenance.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-scrapped.docx
Binary files differ
cnas-device/src/main/resources/static/word/device-status.docx
Binary files differ
cnas-device/src/main/resources/static/word/examine-plan-detail.docx
Binary files differ
cnas-device/src/main/resources/static/word/examine-record.docx
Binary files differ
cnas-device/src/main/resources/static/word/incident-report.docx
Binary files differ
cnas-device/src/main/resources/static/word/maintenance-plan.docx
Binary files differ
cnas-device/src/main/resources/static/word/maintenance-records.docx
Binary files differ
cnas-device/src/main/resources/static/word/quipment-details.docx
Binary files differ
cnas-device/src/main/resources/static/word/review-examine-record-contrast.docx
Binary files differ
cnas-device/src/main/resources/static/word/traceability-management-details.docx
Binary files differ
cnas-device/src/main/resources/static/word/use-record.docx
Binary files differ
cnas-manage/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<?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>
    </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,140 @@
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 updateClientSatisfaction(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) {
        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,117 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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,120 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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) {
        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,118 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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,104 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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,126 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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,125 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.apache.poi.ss.formula.functions.T;
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) {
        return Result.success(manageControlPlanListService.getPageList(page));
    }
    @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();
    }
    @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) {
        Integer userId = SecurityUtils.getUserId().intValue();
        manageControlPlanList.setEditor(userId);
        manageControlPlanList.setEditorDate(LocalDateTime.now());
        manageControlPlanListService.saveOrUpdate(manageControlPlanList);
    }
    @ApiOperation(value = "删除")
    @DeleteMapping("/deleteSignificantRiskFactorAnalysis")
    public void deleteSignificantRiskFactorAnalysis(Integer id) {
        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,90 @@
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.deepoove.poi.data.style.*;
import com.ruoyi.manage.pojo.ManageDocumentAlter;
import com.ruoyi.manage.service.ManageDocumentAlterService;
import com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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-11 11:04:01
 */
@Api(tags = "管理体系文件的控制")
@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(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,84 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-11-09 02:37:35
 */
@Api(tags = "管理体系文件的控制")
@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,83 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å—控 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-11-08 02:54:44
 */
@Api(tags = "管理体系文件的控制")
@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,85 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-11-09 09:18:24
 */
@Api(tags = "管理体系文件的控制")
@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,77 @@
package com.ruoyi.manage.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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 java.io.IOException;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-11-08 11:08:11
 */
@Api(tags = "管理体系文件的控制")
@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,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.dto.ManageMeetingDto;
import com.ruoyi.manage.service.ManageMeetingService;
import com.deepoove.poi.data.style.*;
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,53 @@
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 com.deepoove.poi.data.style.*;
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,76 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-11-14 10:29:18
 */
@Api(tags = "记录的控制")
@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 = "导出文件修订申请审批记录")
    @GetMapping("/exportOutManageRecordAudit")
    public Result exportOutManageRecordAudit(ManageRecordAudit manageRecordAudit, HttpServletResponse response) {
        return Result.success(manageRecordAuditService.exportOutManageRecordAudit(manageRecordAudit,response));
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCancelController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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.time.LocalDate;
import java.util.Map;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2024-11-13 01:27:22
 */
@Api(tags = "记录的控制")
@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){
        try {
            return Result.success(manageRecordCancelService.exportInManageRecordCancel(file));
        }catch (Exception e){
            return Result.fail(e.getMessage());
        }
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordCheckController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.style.*;
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 com.deepoove.poi.data.style.*;
import com.deepoove.poi.data.style.*;
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-12 02:31:36
 */
@Api(tags = "记录的控制")
@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 cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIntervalsTotalController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordIssueRecycleController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordTotalController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRecordVerifyController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewProgramFileController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageReviewReportController.java cnas-manage/src/main/java/com/ruoyi/manage/controller/ManageRiskAssessmentResultsController.java cnas-manage/src/main/java/com/ruoyi/manage/dto/ClientSatisfactionDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalCheckDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalCorrectDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalImplementDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalMeetingDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalMeetingParticipantDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/InternalPlanDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageDocumentIssueRecycleDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageMeetingDto.java cnas-manage/src/main/java/com/ruoyi/manage/dto/ManageMeetingParticipantsDto.java cnas-manage/src/main/java/com/ruoyi/manage/excel/ManageDocumentListListener.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ClientSatisfactionAnalyseFileMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ClientSatisfactionMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCheckDetailMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCheckMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCorrectFileMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalCorrectMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalImplementDetailMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalImplementMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalMeetingDetailMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalMeetingMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalPlanDetailMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalPlanMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/InternalReportMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageControlPlanListMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentAlterMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentCancelMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentControlledMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentIssueRecycleMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageDocumentListMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageMeetingMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageMeetingParticipantsMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordAuditMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordCancelMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordCheckMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIntervalsMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIntervalsTotalMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordIssueRecycleMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordTotalMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRecordVerifyMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewProgramFileMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewProgramMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageReviewReportMapper.java cnas-manage/src/main/java/com/ruoyi/manage/mapper/ManageRiskAssessmentResultsMapper.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ClientSatisfaction.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ClientSatisfactionAnalyseFile.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCheck.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCheckDetail.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCorrect.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalCorrectFile.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalImplement.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalImplementDetail.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalMeeting.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalMeetingDetail.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalPlan.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalPlanDetail.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/InternalReport.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageControlPlanList.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentAlter.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentCancel.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentControlled.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentIssueRecycle.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageDocumentList.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageMeeting.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageMeetingParticipants.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordAudit.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCancel.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordCheck.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervals.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIntervalsTotal.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordIssueRecycle.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordTotal.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRecordVerify.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewProgram.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewProgramFile.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageReviewReport.java cnas-manage/src/main/java/com/ruoyi/manage/pojo/ManageRiskAssessmentResults.java cnas-manage/src/main/java/com/ruoyi/manage/schedule/ManageRecordTotalSchedule.java cnas-manage/src/main/java/com/ruoyi/manage/service/ClientSatisfactionService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCheckDetailService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCheckService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCorrectFileService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalCorrectService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalImplementDetailService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalImplementService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalMeetingDetailService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalMeetingService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalPlanDetailService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalPlanService.java cnas-manage/src/main/java/com/ruoyi/manage/service/InternalReportService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageControlPlanListService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentAlterService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentCancelService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentControlledService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentIssueRecycleService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageDocumentListService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageMeetingParticipantsService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageMeetingService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordAuditService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordCancelService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordCheckService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIntervalsService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIntervalsTotalService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordIssueRecycleService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordTotalService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRecordVerifyService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewProgramFileService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewProgramService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageReviewReportService.java cnas-manage/src/main/java/com/ruoyi/manage/service/ManageRiskAssessmentResultsService.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ClientSatisfactionServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCheckDetailServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCheckServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCorrectFileServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalCorrectServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalImplementDetailServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalImplementServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingDetailServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalPlanDetailServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalPlanServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalReportServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageControlPlanListServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentCancelServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentIssueRecycleServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageMeetingParticipantsServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageMeetingServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordAuditServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsTotalServiceImpl.java 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 cnas-personnel/pom.xml cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonCommunicationAbilityController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonJobResponsibilitiesController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPersonnelCapacityController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonPostAuthorizationRecordController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonRewardPunishmentRecordController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingController.java cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonTrainingRecordController.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDetailsDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoWorkDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonJobResponsibilitiesDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPostAuthorizationRecordDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonRewardPunishmentRecordDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDetailedDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordListDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordSubmitDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordExportDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordPersonDetailedDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/dto/UserPageDto.java cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonRewardPunishmentRecordExcel.java cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedListener.java cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedUpload.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoFileMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoWorkMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedFileMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoFile.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfoWork.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonJobResponsibilities.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPersonnelCapacity.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPostAuthorizationRecord.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonRewardPunishmentRecord.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTraining.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailed.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailedFile.java cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingRecord.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoFileService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoWorkService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPostAuthorizationRecordService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonRewardPunishmentRecordService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingDetailedService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingRecordService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoFileServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoWorkServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonRewardPunishmentRecordServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml cnas-personnel/src/main/resources/mapper/PersonJobResponsibilitiesMapper.xml cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml cnas-personnel/src/main/resources/mapper/PersonPostAuthorizationRecordMapper.xml cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml cnas-personnel/src/main/resources/mapper/PersonTrainingDetailedMapper.xml cnas-personnel/src/main/resources/mapper/PersonTrainingMapper.xml cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml cnas-personnel/src/main/resources/static/communication-deal.docx cnas-personnel/src/main/resources/static/credentials-deal.docx cnas-personnel/src/main/resources/static/explain-deal.docx cnas-personnel/src/main/resources/static/person-basic-info.docx cnas-personnel/src/main/resources/static/person-training-record.docx cnas-personnel/src/main/resources/static/person-training.docx cnas-personnel/src/main/resources/static/personnel-capacity.docx cnas-personnel/src/main/resources/static/super-vise-plan.docx cnas-personnel/src/main/resources/static/supervision-control-sheet.docx cnas-personnel/src/main/resources/static/supervision-processing-sheet.docx cnas-personnel/src/main/resources/static/supervision-record.docx cnas-personnel/src/main/resources/static/training-record.docx cnas-process/pom.xml cnas-process/src/main/java/com/ruoyi/process/controller/InconsistentDistributionController.java cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessComplainController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessDealController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessEvaluateController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodVerifyController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessSampleController.java cnas-process/src/main/java/com/ruoyi/process/controller/ProcessTotaldealController.java cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseManagementReviewController.java cnas-process/src/main/java/com/ruoyi/process/dto/ImageDemoData.java cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionDto.java cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderDto.java cnas-process/src/main/java/com/ruoyi/process/dto/InspectionOrderExportDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessComplainDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessDealDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewArchivedDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewBackupsDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodVerifyCalibrationsFileDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodVerifyDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodVerifyExportWordDto.java cnas-process/src/main/java/com/ruoyi/process/dto/ProcessReportDto.java cnas-process/src/main/java/com/ruoyi/process/dto/QualityMonitorDetailsDto.java cnas-process/src/main/java/com/ruoyi/process/dto/QualityMonitorDetailsEvaluateDto.java cnas-process/src/main/java/com/ruoyi/process/dto/QualityMonitorDto.java cnas-process/src/main/java/com/ruoyi/process/dto/QualitySuperviseDetailsAccordingDto.java cnas-process/src/main/java/com/ruoyi/process/dto/QualitySuperviseDetailsCorrectDto.java cnas-process/src/main/java/com/ruoyi/process/dto/QualitySuperviseDetailsDto.java cnas-process/src/main/java/com/ruoyi/process/dto/SampleItemDto.java cnas-process/src/main/java/com/ruoyi/process/excel/QualityMonitorDetailsUpload.java cnas-process/src/main/java/com/ruoyi/process/excel/QualitySuperviseDetailsUpload.java cnas-process/src/main/java/com/ruoyi/process/mapper/InconsistentDistributionDetailMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/InconsistentDistributionMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderDetailMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessComplainMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessDealMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessEvaluateMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewArchivedMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyCalibrationsFileMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyMachineAttachmentMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyMethodFileMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodVerifyWorkFileMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessReportMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessSampleMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessTotaldealMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsEvaluateFileMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsEvaluateMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorDetailsRatifyMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualityMonitorMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsAccordingMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsCorrectFileMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsCorrectMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseDetailsRecordMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseManagementReviewMapper.java cnas-process/src/main/java/com/ruoyi/process/mapper/QualitySuperviseMapper.java cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistribution.java cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrder.java cnas-process/src/main/java/com/ruoyi/process/pojo/InspectionOrderDetail.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessComplain.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessDeal.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessEvaluate.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNewArchived.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNewBackups.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerify.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyCalibrationsFile.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyMachineAttachment.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyMethodFile.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodVerifyWorkFile.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessSample.java cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessTotaldeal.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitor.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetails.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetailsEvaluate.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetailsEvaluateFile.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualityMonitorDetailsRatify.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySupervise.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetails.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsAccording.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsCorrect.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsCorrectFile.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseDetailsRecord.java cnas-process/src/main/java/com/ruoyi/process/pojo/QualitySuperviseManagementReview.java cnas-process/src/main/java/com/ruoyi/process/service/InconsistentDistributionDetailService.java cnas-process/src/main/java/com/ruoyi/process/service/InconsistentDistributionService.java cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderDetailService.java cnas-process/src/main/java/com/ruoyi/process/service/InspectionOrderService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessComplainService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessDealService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessEvaluateService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewArchivedService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewBackupsService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyCalibrationsFileService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyMachineAttachmentService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyMethodFileService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodVerifyWorkFileService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessSampleService.java cnas-process/src/main/java/com/ruoyi/process/service/ProcessTotaldealService.java cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorDetailsEvaluateService.java cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorDetailsRatifyService.java cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorDetailsService.java cnas-process/src/main/java/com/ruoyi/process/service/QualityMonitorService.java cnas-process/src/main/java/com/ruoyi/process/service/QualitySuperviseDetailsService.java cnas-process/src/main/java/com/ruoyi/process/service/QualitySuperviseManagementReviewService.java cnas-process/src/main/java/com/ruoyi/process/service/QualitySuperviseService.java cnas-process/src/main/java/com/ruoyi/process/service/impl/CnasProcessMethodVerifyCalibrationsFileServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/CnasProcessMethodVerifyWorkFileServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionDetailServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderDetailServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessComplainServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessDealServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessEvaluateServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewArchivedServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewBackupsServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyMachineAttachmentServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyMethodFileServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessSampleServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorDetailsEvaluateServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorDetailsRatifyServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorDetailsServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualityMonitorServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseDetailsServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseManagementReviewServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java cnas-process/src/main/java/com/ruoyi/process/task/QualitySuperviseSchedule.java cnas-process/src/main/resources/mapper/InconsistentDistributionDetailMapper.xml cnas-process/src/main/resources/mapper/InconsistentDistributionMapper.xml cnas-process/src/main/resources/mapper/InspectionOrderDetailMapper.xml cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml cnas-process/src/main/resources/mapper/ProcessComplainMapper.xml cnas-process/src/main/resources/mapper/ProcessDealMapper.xml cnas-process/src/main/resources/mapper/ProcessEvaluateMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodSearchNewArchivedMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodSearchNewBackupsMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodVerifyCalibrationsFileMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodVerifyMachineAttachmentMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodVerifyMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodVerifyMethodFileMapper.xml cnas-process/src/main/resources/mapper/ProcessMethodVerifyWorkFileMapper.xml cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml cnas-process/src/main/resources/mapper/ProcessReportMapper.xml cnas-process/src/main/resources/mapper/ProcessSampleMapper.xml cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.xml cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateFileMapper.xml cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateMapper.xml cnas-process/src/main/resources/mapper/QualityMonitorDetailsMapper.xml cnas-process/src/main/resources/mapper/QualityMonitorDetailsRatifyMapper.xml cnas-process/src/main/resources/mapper/QualityMonitorMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseDetailsAccordingMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectFileMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseDetailsMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseDetailsRecordMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseManagementReviewMapper.xml cnas-process/src/main/resources/mapper/QualitySuperviseMapper.xml cnas-process/src/main/resources/static/excel/check-records.xlsx cnas-process/src/main/resources/static/inconsistent-distribution.docx cnas-process/src/main/resources/static/inspection-order.docx cnas-process/src/main/resources/static/method-verify.docx cnas-process/src/main/resources/static/quality-monitor-details-ratify.docx cnas-process/src/main/resources/static/quality-monitor-evaluate.docx cnas-process/src/main/resources/static/quality-monitor.docx cnas-process/src/main/resources/static/quality-supervise.docx cnas-process/src/main/resources/static/report-deal.docx cnas-process/src/main/resources/static/sample-deal.docx cnas-process/src/main/resources/static/sample-receive.docx cnas-process/src/main/resources/static/supervise-detail-correct.docx cnas-process/src/main/resources/static/supervise-management-eview.docx cnas-process/src/main/resources/static/supervision-detail-according.docx cnas-process/src/main/resources/static/supervision-detail-record.docx cnas-require/pom.xml cnas-require/src/main/java/com/ruoyi/require/controller/FeCalibrationScheduleController.java cnas-require/src/main/java/com/ruoyi/require/controller/FeIlluminationController.java cnas-require/src/main/java/com/ruoyi/require/controller/FeLightningProtectionController.java cnas-require/src/main/java/com/ruoyi/require/controller/FePowerStableController.java cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceAcceptanceController.java cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceController.java cnas-require/src/main/java/com/ruoyi/require/controller/FeStandardSubstanceRecordController.java cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java cnas-require/src/main/java/com/ruoyi/require/dto/AcceptanceDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationAddDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationExportDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableAddDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableExportDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java cnas-require/src/main/java/com/ruoyi/require/dto/ForeignRegisterDto.java cnas-require/src/main/java/com/ruoyi/require/dto/InternalWastesDto.java cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesListDto.java cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java cnas-require/src/main/java/com/ruoyi/require/dto/SupplierManagementDto.java cnas-require/src/main/java/com/ruoyi/require/excel/FeCalibrationScheduleExport.java cnas-require/src/main/java/com/ruoyi/require/excel/FeLightningProtectionExcel.java cnas-require/src/main/java/com/ruoyi/require/excel/FeStandardSubstanceExcel.java cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java cnas-require/src/main/java/com/ruoyi/require/mapper/CollectLaboratoryMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/CollectTemperatureHumidityMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeCalibrationScheduleMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationDetectionAreaMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeLightningProtectionMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeMeasuredQuantityMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FePowerStableMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceAcceptanceMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeStandardSubstanceRecordMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumDateMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/ForeignRegisterMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesDetailMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesContentsMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesListMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/SupplierManagementMapper.java cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java cnas-require/src/main/java/com/ruoyi/require/pojo/CollectLaboratory.java cnas-require/src/main/java/com/ruoyi/require/pojo/CollectTemperatureHumidity.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeCalibrationSchedule.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeIllumination.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeIlluminationDetectionArea.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeMeasuredQuantity.java cnas-require/src/main/java/com/ruoyi/require/pojo/FePowerStable.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstance.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptance.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceAcceptanceInspection.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeStandardSubstanceRecord.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumRecord.java cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastes.java cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastesDetail.java cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesContents.java cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesList.java cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java cnas-require/src/main/java/com/ruoyi/require/pojo/SupplierManagement.java cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java cnas-require/src/main/java/com/ruoyi/require/service/FeCalibrationScheduleService.java cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationDetectionAreaService.java cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationService.java cnas-require/src/main/java/com/ruoyi/require/service/FeLightningProtectionService.java cnas-require/src/main/java/com/ruoyi/require/service/FeMeasuredQuantityService.java cnas-require/src/main/java/com/ruoyi/require/service/FePowerStableService.java cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceInspectionService.java cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceAcceptanceService.java cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceRecordService.java cnas-require/src/main/java/com/ruoyi/require/service/FeStandardSubstanceService.java cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumDateService.java cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumRecordService.java cnas-require/src/main/java/com/ruoyi/require/service/ForeignRegisterService.java cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesDetailService.java cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesService.java cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesContentsService.java cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesListService.java cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java cnas-require/src/main/java/com/ruoyi/require/service/SupplierManagementService.java cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeCalibrationScheduleServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationDetectionAreaServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeLightningProtectionServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeMeasuredQuantityServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FePowerStableServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/ForeignRegisterServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesDetailServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesContentsServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesListServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/SupplierManagementServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceDetailsVo.java cnas-require/src/main/java/com/ruoyi/require/vo/AcceptanceVo.java cnas-require/src/main/java/com/ruoyi/require/vo/SubstanceRecordVo.java cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml cnas-require/src/main/resources/mapper/FePowerStableMapper.xml cnas-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml cnas-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml cnas-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml cnas-require/src/main/resources/mapper/InternalWastesMapper.xml cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml cnas-require/src/main/resources/static/foreign-register.docx cnas-require/src/main/resources/static/illumination.docx cnas-require/src/main/resources/static/internal-wastes.docx cnas-require/src/main/resources/static/power-stable.docx cnas-require/src/main/resources/static/temp_hum_date.docx inspect-server/pom.xml inspect-server/src/main/java/com/ruoyi/basic/pojo/InsSample.java (已删除) inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/FinishProductSpotCheckController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InformationNotificationController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InsProductDeviationWarningController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InsReportController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/ReportController.java inspect-server/src/main/java/com/ruoyi/inspect/controller/WarehouseController.java inspect-server/src/main/java/com/ruoyi/inspect/dto/CopperInsOrderDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/CostStatisticsDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/DataAnalysisDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/EnterFactoryReport.java inspect-server/src/main/java/com/ruoyi/inspect/dto/HistoryDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsStockQueryDTO.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderDeviceRecordDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderPlanDTO.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderPlanProductDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsOrderUpdateDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsPlaceOrderDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsProductAnalysisDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsProductBindingDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsProductDeviationWarningDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsReportExport.java inspect-server/src/main/java/com/ruoyi/inspect/dto/InsulatingDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/OmitOrderProductDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/ProcurementSuppliesListEDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/ProductResultDto2.java inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/RawMaterialStandardTreeDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/ReportPageDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleOrderDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto2.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductExportDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductRawAnalysisDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckQuarterDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckYearDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/UnqualifiedHandlerDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseCellAndSampleDto.java inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseDto.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/CommonOaMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/DataAnalysisMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderDeviceRecordMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderFactoryVerifyItemMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderFactoryVerifyMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderFileMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderStandardTemplateMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderStateMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderTemplateMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductDeviationWarningDetailMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductDeviationWarningMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductResultMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductUserMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsReportMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleUserMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerFileMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedRetestProductMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedRetestResultMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/RawMaterialOrderTemplateMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterItemMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearItemMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseCellMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseHistoryMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseMapper.java inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseShelfMapper.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/CommonOa.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrder.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderDeviceRecord.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderFactoryVerify.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderFactoryVerifyItem.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderFile.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderStandardTemplate.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderState.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderTemplate.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProduct.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductDeviationWarning.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductDeviationWarningDetail.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductResult.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsProductUser.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsReport.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsSample.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsSampleUser.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedHandler.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedHandlerFile.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedRetestProduct.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnqualifiedRetestResult.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/RawMaterialOrderTemplate.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckQuarter.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckQuarterItem.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckYear.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/SpotCheckYearItem.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/Warehouse.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseCell.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseHistory.java inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseShelf.java inspect-server/src/main/java/com/ruoyi/inspect/service/CommonOaService.java inspect-server/src/main/java/com/ruoyi/inspect/service/DataAnalysisService.java inspect-server/src/main/java/com/ruoyi/inspect/service/FinishProductSpotCheckService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderDeviceRecordService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderFactoryVerifyItemService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderFileService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderStandardTemplateService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderStateService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderTemplateService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsProductDeviationWarningDetailService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsProductDeviationWarningService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsProductService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsReportService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsSampleService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerFileService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedRetestProductService.java inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderService.java inspect-server/src/main/java/com/ruoyi/inspect/service/RawMaterialOrderTemplateService.java inspect-server/src/main/java/com/ruoyi/inspect/service/ReportService.java inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckQuarterItemService.java inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckYearItemService.java inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseCellService.java inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseService.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/CommonOaServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/DataAnalysisServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderDeviceRecordServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderFactoryVerifyItemServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderFileServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderStandardTemplateServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderStateServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderTemplateServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductDeviationWarningDetailServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductDeviationWarningServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsSampleServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerFileServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedRetestProductServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderTemplateServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReportServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckQuarterItemServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckYearItemServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseCellServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseServiceImpl.java inspect-server/src/main/java/com/ruoyi/inspect/task/RawMaterIalSchedule.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 inspect-server/src/main/java/com/ruoyi/inspect/vo/DeviationAnalyzeVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPlanTaskSwitchVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPlanVO.java inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPrintingVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/ProductVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/RawMaterialSupplierVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/RawProductAnalysisVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/SampleDefectsChildrenVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/SampleDefectsFatherVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/SampleVo.java inspect-server/src/main/java/com/ruoyi/inspect/vo/UnqualifiedHandlerVO.java inspect-server/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar inspect-server/src/main/resources/lib/license.xml inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml inspect-server/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml inspect-server/src/main/resources/mapper/InsOrderMapper.xml inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml inspect-server/src/main/resources/mapper/InsOrderStateMapper.xml inspect-server/src/main/resources/mapper/InsOrderTemplateMapper.xml inspect-server/src/main/resources/mapper/InsProductDeviationWarningDetailMapper.xml inspect-server/src/main/resources/mapper/InsProductDeviationWarningMapper.xml inspect-server/src/main/resources/mapper/InsProductMapper.xml inspect-server/src/main/resources/mapper/InsProductResultMapper.xml inspect-server/src/main/resources/mapper/InsProductUserMapper.xml inspect-server/src/main/resources/mapper/InsReportMapper.xml inspect-server/src/main/resources/mapper/InsSampleMapper.xml inspect-server/src/main/resources/mapper/InsSampleUserMapper.xml inspect-server/src/main/resources/mapper/InsUnqualifiedHandlerMapper.xml inspect-server/src/main/resources/mapper/InsUnqualifiedRetestProductMapper.xml inspect-server/src/main/resources/mapper/RawMaterialOrderTemplateMapper.xml inspect-server/src/main/resources/mapper/SpotCheckQuarterItemMapper.xml inspect-server/src/main/resources/mapper/SpotCheckQuarterMapper.xml inspect-server/src/main/resources/mapper/SpotCheckYearMapper.xml inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml inspect-server/src/main/resources/mapper/WarehouseHistoryMapper.xml inspect-server/src/main/resources/mapper/WarehouseMapper.xml inspect-server/src/main/resources/static/factory_verify.docx inspect-server/src/main/resources/static/report-template.docx inspect-server/src/main/resources/static/small-report-template.docx inspect-server/src/main/resources/static/spot_check_quarter.docx inspect-server/src/main/resources/static/spot_check_year.docx performance-server/pom.xml performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryCorrectionHoursController.java performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOriginalHoursController.java performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOutputWorkingHoursController.java performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursController.java performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursDayController.java performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java performance-server/src/main/java/com/ruoyi/performance/controller/ShiftTimeController.java performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryAllDto.java performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOriginalHoursLookDto.java performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOutputWorkingHoursTemporaryDto.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/AuxiliaryOutputWorkingHoursTemporaryMapper.java performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryWorkingHoursDayMapper.java performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryWorkingHoursMapper.java performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryOutputWorkingHoursTemporary.java performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryOutputWorkingHoursTemporaryService.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/AuxiliaryOutputWorkingHoursTemporaryServiceImpl.java performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursServiceImpl.java performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursTemporaryMapper.xml performance-server/src/main/resources/mapper/AuxiliaryWorkingHoursDayMapper.xml performance-server/src/main/resources/mapper/AuxiliaryWorkingHoursMapper.xml performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml pom.xml ruoyi-admin/pom.xml ruoyi-admin/src/main/java/com/ruoyi/CodeGenerator.java ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java ruoyi-admin/src/main/java/com/ruoyi/web/MqttApplicationRunner.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Company.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/Person.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonDto.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonnelHeaderApi.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/dto/UpdateUserDto.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CompaniesController.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CustomController.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java ruoyi-admin/src/main/resources/application-druid.yml ruoyi-admin/src/main/resources/application-prod.yml ruoyi-admin/src/main/resources/application-test.yml ruoyi-admin/src/main/resources/application-ztzb.yml ruoyi-admin/src/main/resources/application.yml ruoyi-admin/src/main/resources/banner.txt ruoyi-admin/src/main/resources/i18n/messages.properties ruoyi-admin/src/main/resources/logback.xml ruoyi-common/pom.xml ruoyi-common/src/main/java/com/ruoyi/common/annotation/PersonalScope.java ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java ruoyi-common/src/main/java/com/ruoyi/common/config/PersonnelProperties.java ruoyi-common/src/main/java/com/ruoyi/common/config/SsoBean.java ruoyi-common/src/main/java/com/ruoyi/common/config/WechatProperty.java ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java ruoyi-common/src/main/java/com/ruoyi/common/constant/DictDataConstants.java ruoyi-common/src/main/java/com/ruoyi/common/constant/InsOrderTypeConstants.java ruoyi-common/src/main/java/com/ruoyi/common/constant/MenuJumpPathConstants.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentDto.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotification.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/InformationNotificationDto.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java ruoyi-common/src/main/java/com/ruoyi/common/handler/MybatisHandler.java ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflow.java ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflowResponse.java ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableField.java ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableRecord.java ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowTable.java ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequest.java ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequestResponse.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAResult.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequest.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpGet.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpPost.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestSoap.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestInfo.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableField.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableRecord.java ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowTable.java ruoyi-common/src/main/java/com/ruoyi/common/oa/ObjectFactory.java ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflow.java ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflowResponse.java ruoyi-common/src/main/java/com/ruoyi/common/oa/package-info.java ruoyi-common/src/main/java/com/ruoyi/common/utils/ApplicationContextHolder.java ruoyi-common/src/main/java/com/ruoyi/common/utils/Base64.java ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java ruoyi-common/src/main/java/com/ruoyi/common/utils/GZipUtil.java ruoyi-common/src/main/java/com/ruoyi/common/utils/IndustryChainUtils.java ruoyi-common/src/main/java/com/ruoyi/common/utils/LimsDateUtil.java ruoyi-common/src/main/java/com/ruoyi/common/utils/Md5Util.java ruoyi-common/src/main/java/com/ruoyi/common/utils/MyUtil.java ruoyi-common/src/main/java/com/ruoyi/common/utils/QueryWrappers.java ruoyi-common/src/main/java/com/ruoyi/common/utils/SignatureImageUtil.java ruoyi-common/src/main/java/com/ruoyi/common/utils/WxCpUtils.java ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java ruoyi-common/src/main/resources/ttf/signature.ttf ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PersonalScopeAspect.java ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java ruoyi-framework/src/main/java/com/ruoyi/framework/exception/ErrorException.java ruoyi-framework/src/main/java/com/ruoyi/framework/exception/MyFileException.java ruoyi-framework/src/main/java/com/ruoyi/framework/model/SsoOauthTokenModel.java ruoyi-framework/src/main/java/com/ruoyi/framework/model/SsoUserInfoModel.java ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsByOpenIdServiceImpl.java ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java ruoyi-framework/src/main/java/com/ruoyi/framework/web/ssoAuth/SsoCodeAuthenticationProvider.java ruoyi-framework/src/main/java/com/ruoyi/framework/web/ssoAuth/SsoCodeAuthenticationToken.java ruoyi-generator/pom.xml (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java (已删除) ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java (已删除) ruoyi-generator/src/main/resources/generator.yml (已删除) ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml (已删除) ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml (已删除) ruoyi-generator/src/main/resources/vm/java/controller.java.vm (已删除) ruoyi-generator/src/main/resources/vm/java/domain.java.vm (已删除) ruoyi-generator/src/main/resources/vm/java/mapper.java.vm (已删除) ruoyi-generator/src/main/resources/vm/java/service.java.vm (已删除) ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm (已删除) ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm (已删除) ruoyi-generator/src/main/resources/vm/js/api.js.vm (已删除) ruoyi-generator/src/main/resources/vm/sql/sql.vm (已删除) ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm (已删除) ruoyi-generator/src/main/resources/vm/vue/index.vue.vm (已删除) ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm (已删除) ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm (已删除) ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm (已删除) ruoyi-quartz/pom.xml (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJobLog.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/CronUtils.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/JobInvokeUtil.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzJobExecution.java (已删除) ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java (已删除) ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml (已删除) ruoyi-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml (已删除) ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysRoleVo.java ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/UserVo.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/InformationNotificationMapper.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserMapper.java ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java ruoyi-system/src/main/java/com/ruoyi/system/service/InformationNotificationService.java ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InformationNotificationServiceImpl.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml ruoyi-system/src/main/resources/mapper/system/InformationNotificationMapper.xml ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml ruoyi-system/src/main/resources/mapper/system/UserMapper.xml