zss
2024-12-20 c9e36e23b3f95f6027d78483dfc23021d1ec6261
cnas8模块
已修改6个文件
已删除1个文件
已添加228个文件
16615 ■■■■■ 文件已修改
cnas-manage/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ClientSatisfactionController.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCheckController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCorrectController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalImplementController.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalMeetingController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalPlanController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalReportController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageControlPlanListController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentAlterController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentCancelController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentControlledController.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentIssueRecycleController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentListController.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingParticipantsController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordAuditController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCancelController.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCheckController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsTotalController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIssueRecycleController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordTotalController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordVerifyController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramFileController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewReportController.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRiskAssessmentResultsController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/ClientSatisfactionDto.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCheckDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCorrectDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalImplementDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingParticipantDto.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalPlanDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageDocumentIssueRecycleDto.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingParticipantsDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/excel/ManageDocumentListListener.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionAnalyseFileMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectFileMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanDetailMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalReportMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageControlPlanListMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentAlterMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentCancelMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentControlledMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentIssueRecycleMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentListMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingParticipantsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordAuditMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCancelMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCheckMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsTotalMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIssueRecycleMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordTotalMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordVerifyMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramFileMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewReportMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRiskAssessmentResultsMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfaction.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfactionAnalyseFile.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheck.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheckDetail.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrect.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrectFile.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplement.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplementDetail.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeeting.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeetingDetail.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlan.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlanDetail.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalReport.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageControlPlanList.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentAlter.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentCancel.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentControlled.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentIssueRecycle.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentList.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeeting.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeetingParticipants.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordAudit.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCancel.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCheck.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervals.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervalsTotal.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIssueRecycle.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordTotal.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordVerify.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgram.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgramFile.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewReport.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRiskAssessmentResults.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/schedule/ManageRecordTotalSchedule.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ClientSatisfactionService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckDetailService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectFileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectService.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementDetailService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanService.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalReportService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageControlPlanListService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentAlterService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentCancelService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentControlledService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentIssueRecycleService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentListService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingParticipantsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordAuditService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCancelService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCheckService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsTotalService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIssueRecycleService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordTotalService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordVerifyService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramFileService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewReportService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRiskAssessmentResultsService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ClientSatisfactionServiceImpl.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectFileServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectServiceImpl.java 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentAlterServiceImpl.java 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentCancelServiceImpl.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentControlledServiceImpl.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentIssueRecycleServiceImpl.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentListServiceImpl.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingParticipantsServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordAuditServiceImpl.java 679 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCancelServiceImpl.java 484 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCheckServiceImpl.java 475 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsServiceImpl.java 526 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsTotalServiceImpl.java 503 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIssueRecycleServiceImpl.java 699 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordTotalServiceImpl.java 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordVerifyServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramFileServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramServiceImpl.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewReportServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRiskAssessmentResultsServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageControlPlanListVo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageRiskAssessmentResultsVo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/vo/MeetingParticipantsDetailsVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/yuanchu/mom/vo/ReviewProgramDetailsVo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | 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 | 历史
framework/src/main/java/com/yuanchu/mom/utils/DateImageUtil.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/Jwt.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/MatrixToImageWriter.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/utils/HackLoopTableRenderPolicy.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/utils/XWPFDocumentUtils.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<?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>mom</artifactId>
        <groupId>com.yuanchu.mom</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cnas-manage</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cnas-manage</name>
    <description>cnas-manage</description>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>user-server</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>framework</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>inspect-server</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>cnas-server</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
cnas-manage/src/main/java/com/yuanchu/mom/controller/ClientSatisfactionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,148 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.mapper.ClientSatisfactionAnalyseFileMapper;
import com.yuanchu.mom.pojo.ClientSatisfaction;
import com.yuanchu.mom.pojo.ClientSatisfactionAnalyseFile;
import com.yuanchu.mom.service.ClientSatisfactionService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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 data
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "客户满意度调查列表")
    @PostMapping("/pageClientSatisfaction")
    public Result<IPage<ClientSatisfaction>> pageClientSatisfaction(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ClientSatisfaction clientSatisfaction = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ClientSatisfaction.class);
        return Result.success(clientSatisfactionService.pageClientSatisfaction(page, clientSatisfaction));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥æ–°å¢ž
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "客户满意度调查新增")
    @PostMapping("/addClientSatisfaction")
    public Result addClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction){
        return Result.success(clientSatisfactionService.save(clientSatisfaction));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥ä¿®æ”¹
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "客户满意度调查新增")
    @PostMapping("/updateClientSatisfaction")
    public Result updateClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction){
        return Result.success(clientSatisfactionService.updateById(clientSatisfaction));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥ä¿®æ”¹
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "客户满意度调查新增")
    @GetMapping("/delClientSatisfaction")
    public Result updateClientSatisfaction(Integer clientSatisfactionId){
        return Result.success(clientSatisfactionService.removeById(clientSatisfactionId));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     * @param clientSatisfactionId
     * @param response
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "客户满意导出")
    @GetMapping("/exportWordClientSatisfaction")
    public Result exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response){
        clientSatisfactionService.exportWordClientSatisfaction(clientSatisfactionId, response);
        return Result.success();
    }
    /**
     * ç¡®è®¤å®¢æˆ·æ»¡æ„åº¦
     * @param clientSatisfaction è¦ä¿®æ”¹å®¢æˆ·æ»¡æ„åº¦çš„状态对象
     * @param userId ä¿®æ”¹äººid
     */
    @ValueAuth
    @ApiOperation(value = "确认客户满意度")
    @GetMapping("/confirmClientSatisfaction")
    public void confirmClientSatisfaction(ClientSatisfaction clientSatisfaction, Integer userId){
        clientSatisfactionService.confirmClientSatisfaction(clientSatisfaction, userId);
    }
    /**
     * æ–°å¢žå®¢æˆ·åˆ†æžé™„ä»¶
     * @param file
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "新增户分析附件")
    @PostMapping("/uploadAnalyseFile")
    public Result<?> uploadAnalyseFile(MultipartFile file) {
        return Result.success(clientSatisfactionService.uploadAnalyseFile(file));
    }
    /**
     * æŸ¥è¯¢æˆ·åˆ†æžé™„ä»¶
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "查询户分析附件")
    @PostMapping("/pageAnalyseFile")
    public Result<IPage<ClientSatisfactionAnalyseFile>> pageAnalyseFile(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ClientSatisfactionAnalyseFile analyseFile = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ClientSatisfactionAnalyseFile.class);
        return Result.success(clientSatisfactionService.pageAnalyseFile(page, analyseFile));
    }
    /**
     * åˆ é™¤æˆ·åˆ†æžé™„ä»¶
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "删除户分析附件")
    @GetMapping("/delAnalyseFile")
    public Result delAnalyseFile(Integer analyseFileId){
        return Result.success(clientSatisfactionAnalyseFileMapper.deleteById(analyseFileId));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCheckController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.InternalCheckDto;
import com.yuanchu.mom.pojo.InternalCheck;
import com.yuanchu.mom.service.InternalCheckService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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 data
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审检查分页查询")
    @PostMapping("/pageInternalCheck")
    public Result<IPage<InternalCheckDto>> pageInternalCheck(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InternalCheck internalCheck = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalCheck.class);
        return Result.success(internalCheckService.pageInternalCheck(page, internalCheck));
    }
    /**
     * å†…审检查新增
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审检查新增")
    @PostMapping("/addInternalCheck")
    public Result addInternalCheck(@RequestBody InternalCheckDto internalCheck){
        return Result.success(internalCheckService.addInternalCheck(internalCheck));
    }
    /**
     * å†…审检查修改
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审检查修改")
    @PostMapping("/updateInternalCheck")
    public Result updateInternalCheck(@RequestBody InternalCheckDto internalCheck){
        return Result.success(internalCheckService.updateInternalCheck(internalCheck));
    }
    /**
     * å†…审检查删除
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审检查删除")
    @GetMapping("/delInternalCheck")
    public Result delInternalCheck(Integer checkId){
        return Result.success(internalCheckService.delInternalCheck(checkId));
    }
    /**
     * å†…审检查查看详情
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审检查查看详情")
    @GetMapping("/getInternalCheckOne")
    public Result<InternalCheckDto> getInternalCheckOne(Integer checkId){
        return Result.success(internalCheckService.getInternalCheckOne(checkId));
    }
    /**
     * å†…审检查批准
     * @return
     */
    @ValueClassify("内审检查")
    @ApiOperation(value = "内审检查批准")
    @PostMapping("/ratifyInternalCheck")
    public Result ratifyInternalCheck(@RequestBody InternalCheckDto internalCheck){
        return Result.success(internalCheckService.ratifyInternalCheck(internalCheck));
    }
    /**
     * å¯¼å‡ºå†…审检查
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出内审检查")
    @GetMapping("/exportInternalCheck")
    public void exportInternalCheck(Integer checkId, HttpServletResponse response){
        internalCheckService.exportInternalCheck(checkId, response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCorrectController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.mapper.InternalCorrectFileMapper;
import com.yuanchu.mom.pojo.InternalCorrect;
import com.yuanchu.mom.pojo.InternalCorrectFile;
import com.yuanchu.mom.service.InternalCorrectService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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
     */
    @ValueAuth
    @ApiOperation(value = "新增内审管理纠正处理")
    @PostMapping("/addInternalCorrect")
    public Result addInternalCorrect(@RequestBody InternalCorrect internalCorrect){
        return Result.success(internalCorrectService.addInternalCorrect(internalCorrect));
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正处理
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "查询内审管理纠正处理")
    @GetMapping("/getInternalCorrect")
    public Result<InternalCorrect> getInternalCorrect(Integer correctId){
        return Result.success(internalCorrectService.getInternalCorrect(correctId));
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施列表
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "查询内审管理纠正措施列表")
    @PostMapping("/pageInternalCorrect")
    public Result<IPage<InternalCorrect>> pageInternalCorrect(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InternalCorrect detailsCorrect = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalCorrect.class);
        return Result.success(internalCorrectService.pageInternalCorrect(page, detailsCorrect));
    }
    /**
     * æ–°å¢žå†…审管理纠正措施附件
     * @param correctId
     * @param file
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "新增内审管理纠正措施附件")
    @PostMapping("/uploadInternalCorrectFile")
    public Result<?> uploadInternalCorrectFile(Integer correctId, MultipartFile file) {
        return Result.success(internalCorrectService.uploadInternalCorrectFile(correctId, file));
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施附件
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "查询内审管理纠正措施附件")
    @GetMapping("/getInternalCorrectFileList")
    public Result<List<InternalCorrectFile>> getInternalCorrectFileList(Integer correctId){
        return Result.success(internalCorrectService.getInternalCorrectFileList(correctId));
    }
    /**
     * åˆ é™¤å†…审管理纠正措施附件
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "删除内审管理纠正措施附件")
    @GetMapping("/delInternalCorrectFile")
    public Result delInternalCorrectFile(Integer correctFileId){
        return Result.success(internalCorrectFileMapper.deleteById(correctFileId));
    }
    /**
     * å¯¼å‡ºçº æ­£æŽªæ–½
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出纠正措施")
    @GetMapping("/exportInternalCorrect")
    public void exportInternalCorrect(Integer correctId, HttpServletResponse response){
        internalCorrectService.exportInternalCorrect(correctId, response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalImplementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.InternalImplementDto;
import com.yuanchu.mom.pojo.ClientSatisfaction;
import com.yuanchu.mom.pojo.InternalImplement;
import com.yuanchu.mom.service.InternalImplementService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
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 data
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审实施计划分页查询")
    @PostMapping("/pageInternalImplement")
    public Result<IPage<InternalImplementDto>> pageInternalImplement(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InternalImplement internalImplement = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalImplement.class);
        return Result.success(internalImplementService.pageInternalImplement(page, internalImplement));
    }
    /**
     * å†…审实施计划新增
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审实施计划新增")
    @PostMapping("/addInternalImplement")
    public Result addInternalImplement(@RequestBody InternalImplementDto internalImplement){
        return Result.success(internalImplementService.addInternalImplement(internalImplement));
    }
    /**
     * å†…审实施计划修改
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审实施计划修改")
    @PostMapping("/updateInternalImplement")
    public Result updateInternalImplement(@RequestBody InternalImplementDto internalImplement){
        return Result.success(internalImplementService.updateInternalImplement(internalImplement));
    }
    /**
     * å†…审实施计划删除
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审实施计划删除")
    @GetMapping("/delInternalImplement")
    public Result delInternalImplement(Integer implementId){
        return Result.success(internalImplementService.delInternalImplement(implementId));
    }
    /**
     * å†…审实施计划查看详情
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审实施计划查看详情")
    @GetMapping("/getInternalImplementOne")
    public Result<InternalImplementDto> getInternalImplementOne(Integer implementId){
        return Result.success(internalImplementService.getInternalImplementOne(implementId));
    }
    /**
     * å†…审实施计划批准
     * @return
     */
    @ValueClassify("内审实施计划")
    @ApiOperation(value = "内审实施计划批准")
    @PostMapping("/ratifyInternalImplement")
    public Result ratifyInternalImplement(@RequestBody InternalImplementDto internalImplement){
        return Result.success(internalImplementService.ratifyInternalImplement(internalImplement));
    }
    /**
     * å¯¼å‡ºå†…审实施计划
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出内审实施计划")
    @GetMapping("/exportInternalImplement")
    public void exportInternalImplement(Integer implementId, HttpServletResponse response){
        internalImplementService.exportInternalImplement(implementId, response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalMeetingController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.dto.InternalMeetingDto;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.yuanchu.mom.service.InternalMeetingService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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 data
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审会议分页查询")
    @PostMapping("/pageInternalMeeting")
    public Result<IPage<InternalMeetingDto>> pageInternalMeeting(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InternalMeeting internalMeeting = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalMeeting.class);
        return Result.success(internalMeetingService.pageInternalMeeting(page, internalMeeting));
    }
    /**
     * å†…审会议新增
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审会议新增")
    @PostMapping("/addInternalMeeting")
    public Result addInternalMeeting(@RequestBody InternalMeetingDto internalMeeting){
        return Result.success(internalMeetingService.addInternalMeeting(internalMeeting));
    }
    /**
     * å†…审会议修改
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审会议修改")
    @PostMapping("/updateInternalMeeting")
    public Result updateInternalMeeting(@RequestBody InternalMeetingDto internalMeeting){
        return Result.success(internalMeetingService.updateInternalMeeting(internalMeeting));
    }
    /**
     * å†…审会议删除
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审会议删除")
    @GetMapping("/delInternalMeeting")
    public Result delInternalMeeting(Integer meetingId){
        return Result.success(internalMeetingService.delInternalMeeting(meetingId));
    }
    /**
     * å†…审会议查看详情
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审会议查看详情")
    @GetMapping("/getInternalMeetingOne")
    public Result<InternalMeetingDto> getInternalMeetingOne(Integer meetingId){
        return Result.success(internalMeetingService.getInternalMeetingOne(meetingId));
    }
    /**
     * å¯¼å‡ºå†…审会议
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出内审会议")
    @GetMapping("/exportInternalMeeting")
    public void exportInternalMeeting(Integer meetingId, HttpServletResponse response){
        internalMeetingService.exportInternalMeeting(meetingId, response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalPlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.InternalImplementDto;
import com.yuanchu.mom.dto.InternalPlanDto;
import com.yuanchu.mom.pojo.InternalPlan;
import com.yuanchu.mom.service.InternalPlanService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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 data
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审年度计划分页查询")
    @PostMapping("/pageInternalPlan")
    public Result<IPage<InternalPlanDto>> pageInternalPlan(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InternalPlan internalPlan = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalPlan.class);
        return Result.success(internalPlanService.pageInternalPlan(page, internalPlan));
    }
    /**
     * å†…审年度计划新增
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审年度计划新增")
    @PostMapping("/addInternalPlan")
    public Result addInternalPlan(@RequestBody InternalPlanDto internalPlan){
        return Result.success(internalPlanService.addInternalPlan(internalPlan));
    }
    /**
     * å†…审年度计划修改
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审年度计划修改")
    @PostMapping("/updateInternalPlan")
    public Result updateInternalPlan(@RequestBody InternalPlanDto internalPlan){
        return Result.success(internalPlanService.updateInternalPlan(internalPlan));
    }
    /**
     * å†…审年度计划删除
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审年度计划删除")
    @GetMapping("/delInternalPlan")
    public Result delInternalPlan(Integer planId){
        return Result.success(internalPlanService.delInternalPlan(planId));
    }
    /**
     * å†…审年度计划查看详情
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审年度计划查看详情")
    @GetMapping("/getInternalPlanOne")
    public Result<InternalPlanDto> getInternalPlanOne(Integer planId){
        return Result.success(internalPlanService.getInternalPlanOne(planId));
    }
    /**
     * å†…审年度计划审核
     * @return
     */
    @ValueClassify("内审年度计划")
    @ApiOperation(value = "内审年度计划审核")
    @PostMapping("/examineInternalPlan")
    public Result examineInternalPlan(@RequestBody InternalPlanDto internalPlanDto){
        return Result.success(internalPlanService.examineInternalPlan(internalPlanDto));
    }
    /**
     * å†…审年度计划批准
     * @return
     */
    @ValueClassify("内审年度计划")
    @ApiOperation(value = "内审实施计划批准")
    @PostMapping("/ratifyInternalPlan")
    public Result ratifyInternalPlan(@RequestBody InternalPlanDto internalPlanDto){
        return Result.success(internalPlanService.ratifyInternalPlan(internalPlanDto));
    }
    /**
     * å¯¼å‡ºå†…审年度计划
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出内审年度计划")
    @GetMapping("/exportInternalPlan")
    public void exportInternalPlan(Integer planId, HttpServletResponse response){
        internalPlanService.exportInternalImplement(planId, response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.InternalReport;
import com.yuanchu.mom.service.InternalReportService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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 data
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审报告分页查询")
    @PostMapping("/pageInternalReport")
    public Result<IPage<InternalReport>> pageInternalReport(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InternalReport internalReport = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalReport.class);
        return Result.success(internalReportService.pageInternalReport(page, internalReport));
    }
    /**
     * å†…审报告新增
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审报告新增")
    @PostMapping("/addInternalReport")
    public Result addInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.save(internalReport));
    }
    /**
     * å†…审报告修改
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审报告修改")
    @PostMapping("/updateInternalReport")
    public Result updateInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.updateById(internalReport));
    }
    /**
     * å†…审报告删除
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审报告删除")
    @GetMapping("/delInternalReport")
    public Result delInternalReport(Integer reportId){
        return Result.success(internalReportService.removeById(reportId));
    }
    /**
     * å†…审报告查看详情
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "内审报告查看详情")
    @GetMapping("/getInternalReportOne")
    public Result<InternalReport> getInternalReportOne(Integer reportId){
        return Result.success(internalReportService.getById(reportId));
    }
    /**
     * å†…审检查审核
     * @return
     */
    @ValueClassify("内审报告")
    @ApiOperation(value = "内审检查审核")
    @PostMapping("/examineInternalReport")
    public Result examineInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.ratifyInternalCheck(internalReport));
    }
    /**
     * å†…审报告质量负责人填写
     * @return
     */
    @ValueClassify("内审报告")
    @ApiOperation(value = "内审报告质量负责人填写")
    @PostMapping("/qualityInternalReport")
    public Result qualityInternalReport(@RequestBody InternalReport internalReport){
        return Result.success(internalReportService.qualityInternalReport(internalReport));
    }
    /**
     * å¯¼å‡ºå†…审报告
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出内审报告")
    @GetMapping("/exportInternalReport")
    public void exportInternalReport(Integer reportId, HttpServletResponse response){
        internalReportService.exportInternalReport(reportId, response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageControlPlanListController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
package com.yuanchu.mom.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.pojo.ManageControlPlanList;
import com.yuanchu.mom.service.ManageControlPlanListService;
import com.yuanchu.mom.utils.MyUtil;
import com.yuanchu.mom.vo.ManageControlPlanListVo;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
@Api(tags = "重大风险因素分析及控制计划清单")
@RestController
@RequestMapping("/manageControlPlanList")
public class ManageControlPlanListController {
    @Resource
    private ManageControlPlanListService manageControlPlanListService;
    @Autowired
    private GetLook getLook;
    @ValueClassify(value = "重大风险因素分析及控制计划清单")
    @ApiOperation(value = "分页查询")
    @GetMapping("/getPageList")
    public Result<IPage<ManageControlPlanListVo>> getPageList(Page page){
        IPage<ManageControlPlanListVo> ipage = manageControlPlanListService.getPageList(page);
        return Result.success(ipage);
    }
    @ValueClassify(value = "重大风险因素分析及控制计划清单")
    @ApiOperation(value = "批准")
    @GetMapping("/approvalOfControlPlanChecklist")
    public Result<?> approvalOfControlPlanChecklist(Integer approve, Integer status){
        manageControlPlanListService.update(Wrappers.<ManageControlPlanList>lambdaUpdate()
                .set(ManageControlPlanList::getApprove, approve)
                .set(ManageControlPlanList::getApproveStatus, status)
                .set(ManageControlPlanList::getApproveDate, LocalDateTime.now()));
        return Result.success();
    }
    @ValueClassify(value = "重大风险因素分析及控制计划清单")
    @ApiOperation(value = "审批")
    @GetMapping("/riskAnalysisApprovalOfControlPlanChecklist")
    public Result<?> riskAnalysisApprovalOfControlPlanChecklist(Integer approval, Integer status){
        manageControlPlanListService.update(Wrappers.<ManageControlPlanList>lambdaUpdate()
                .set(ManageControlPlanList::getApproval, approval)
                .set(ManageControlPlanList::getApprovalStatus, status)
                .set(ManageControlPlanList::getApprovalDate, LocalDateTime.now()));
        return Result.success();
    }
    @ValueClassify(value = "重大风险因素分析及控制计划清单")
    @ApiOperation(value = "导入")
    @PostMapping("/importControlPlanList")
    public void importControlPlanList(MultipartFile file) throws IOException {
        boolean excelFile = MyUtil.isExcelFile(file);
        if (!excelFile) {
            throw new ErrorException("请导入excel文件!");
        }
        EasyExcel.read(file.getInputStream(), ManageControlPlanList.class, new PageReadListener<ManageControlPlanList>(dataList -> {
            Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
            dataList.forEach(i -> {
                i.setEditor(userId);
                i.setEditorDate(LocalDateTime.now());
                i.setApproveStatus(0);
                i.setApprovalStatus(0);
            });
            manageControlPlanListService.saveOrUpdateBatch(dataList);
        })).sheet().doRead();
    }
    @ValueClassify(value = "重大风险因素分析及控制计划清单")
    @ApiOperation(value = "新增")
    @PostMapping("/analysisOfMajorRiskFactorsAdded")
    public void analysisOfMajorRiskFactorsAdded(@RequestBody ManageControlPlanList manageControlPlanList) throws IOException {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        manageControlPlanList.setEditor(userId);
        manageControlPlanList.setEditorDate(LocalDateTime.now());
        manageControlPlanListService.saveOrUpdate(manageControlPlanList);
    }
    @ValueClassify(value = "重大风险因素分析及控制计划清单")
    @ApiOperation(value = "删除")
    @GetMapping("/deleteSignificantRiskFactorAnalysis")
    public void deleteSignificantRiskFactorAnalysis(Integer id) throws IOException {
        manageControlPlanListService.removeById(id);
    }
    /**
     * å¯¼å‡ºäººå‘˜åŸ¹è®­è®¡åˆ’
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "重大风险因素分析及控制计划清单")
    @GetMapping("/exportSignificantRiskFactors")
    public void exportSignificantRiskFactors(HttpServletResponse response){
        manageControlPlanListService.exportPersonTraining(response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentAlterController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageDocumentAlter;
import com.yuanchu.mom.pojo.ManageDocumentCancel;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.service.ManageDocumentAlterService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
@RestController
@RequestMapping("/manageDocumentAlter")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageDocumentAlterController {
    @Resource
    private ManageDocumentAlterService manageDocumentAlterService;
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "分页查询文件变更")
    @PostMapping("/pageManageDocumentAlter")
    public Result pageManageDocumentAlter(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageDocumentAlter manageDocumentAlter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentAlter.class);
        return Result.success(manageDocumentAlterService.pageManageDocumentAlter(page, manageDocumentAlter));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "删除文件变更")
    @PostMapping("/delManageDocumentAlter")
    public Result delManageDocumentAlter(Integer id){
        return Result.success(manageDocumentAlterService.delManageDocumentAlter(id));
    }
    @ValueAuth
    @ApiOperation(value = "查看文件变更")
    @PostMapping("/getManageDocumentAlter")
    public Result getManageDocumentAlter(Integer id){
        return Result.success(manageDocumentAlterService.getManageDocumentAlter(id));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "新增文件变更")
    @PostMapping("/addManageDocumentAlter")
    public Result addManageDocumentAlter(ManageDocumentAlter manageDocumentAlter){
        return Result.success(manageDocumentAlterService.addManageDocumentAlter(manageDocumentAlter));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件变更")
    @PostMapping("/doManageDocumentAlter")
    public Result doManageDocumentAlter(ManageDocumentAlter manageDocumentAlter){
        return Result.success(manageDocumentAlterService.doManageDocumentAlter(manageDocumentAlter));
    }
    @ValueAuth
    @ApiOperation(value = "审核文件变更")
    @PostMapping("/checkManageDocumentAlter")
    public Result checkManageDocumentAlter(ManageDocumentAlter manageDocumentAlter){
        return Result.success(manageDocumentAlterService.checkManageDocumentAlter(manageDocumentAlter));
    }
    @ValueAuth
    @ApiOperation(value = "审核查看附件")
    @PostMapping("/checkManageDocumentAlterPdf")
    public void checkManageDocumentAlterPdf(Long id, HttpServletResponse response)throws Exception {
        manageDocumentAlterService.checkManageDocumentAlterPdf(id,response);
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "导出文件变更")
    @PostMapping("/exportManageDocumentAlter")
    public void exportManageDocumentAlter(@RequestBody Map<String, Object> data,HttpServletResponse response) throws Exception {
        ManageDocumentAlter manageDocumentAlter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentAlter.class);
        manageDocumentAlterService.exportManageDocumentAlter(manageDocumentAlter,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentCancelController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageDocumentCancel;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.service.ManageDocumentCancelService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
@RestController
@RequestMapping("/manageDocumentCancel")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageDocumentCancelController {
    @Resource
    private ManageDocumentCancelService manageDocumentCancelService;
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "分页查询文件作废")
    @PostMapping("/pageManageDocumentCancel")
    public Result pageManageDocumentCancel(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageDocumentCancel manageDocumentCancel = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentCancel.class);
        return Result.success(manageDocumentCancelService.pageManageDocumentCancel(page, manageDocumentCancel));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "新增文件作废")
    @PostMapping("/addManageDocumentCancel")
    public Result addManageDocumentCancel(@RequestBody ManageDocumentCancel manageDocumentCancel) {
        return Result.success(manageDocumentCancelService.addManageDocumentCancel(manageDocumentCancel));
    }
    @ValueAuth
    @ApiOperation(value = "审核文件作废")
    @PostMapping("/checkManageDocumentCancel")
    public Result checkManageDocumentCancel(Integer id, String state) {
        return Result.success(manageDocumentCancelService.checkManageDocumentCancel(id, state));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "删除文件作废")
    @PostMapping("/delManageDocumentCancel")
    public Result delManageDocumentCancel(Integer id) {
        return Result.success(manageDocumentCancelService.delManageDocumentCancel(id));
    }
    @ValueAuth
    @ApiOperation(value = "查看文件作废")
    @PostMapping("/getManageDocumentCancel")
    public Result getManageDocumentCancel(Integer id) {
        return Result.success(manageDocumentCancelService.getManageDocumentCancel(id));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件作废")
    @PostMapping("/doManageDocumentCancel")
    public Result doManageDocumentCancel(@RequestBody ManageDocumentCancel manageDocumentCancel) {
        return Result.success(manageDocumentCancelService.doManageDocumentCancel(manageDocumentCancel));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "导出文件作废")
    @PostMapping("/exportManageDocumentCancel")
    public void exportManageDocumentCancel(@RequestBody Map<String, Object> data,HttpServletResponse response) throws Exception {
        ManageDocumentCancel manageDocumentCancel = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentCancel.class);
        manageDocumentCancelService.exportManageDocumentCancel(manageDocumentCancel,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentControlledController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.pojo.ManageDocumentList;
import com.yuanchu.mom.service.ManageDocumentControlledService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å—控 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
@RestController
@RequestMapping("/manageDocumentControlled")
@CustomClazzName(name = "体系管理要求",index = 10)
public class ManageDocumentControlledController {
    @Resource
    private ManageDocumentControlledService manageDocumentControlledService;
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "分页查询文件受控")
    @PostMapping("/pageManageDocumentControlled")
    public Result pageManageDocumentControlled(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageDocumentControlled manageDocumentControlled = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentControlled.class);
        return Result.success(manageDocumentControlledService.pageManageDocumentControlled(page, manageDocumentControlled));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "新增文件受控")
    @PostMapping("/addManageDocumentControlled")
    public Result addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled){
        return Result.success(manageDocumentControlledService.addManageDocumentControlled(manageDocumentControlled));
    }
    @ValueAuth
    @ApiOperation(value = "查看文件受控")
    @PostMapping("/getManageDocumentControlled")
    public Result getManageDocumentControlled(Long id){
        return Result.success(manageDocumentControlledService.getManageDocumentControlled(id));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件受控")
    @PostMapping("/doManageDocumentControlled")
    public Result doManageDocumentControlled(ManageDocumentControlled manageDocumentControlled){
        return Result.success(manageDocumentControlledService.doManageDocumentControlled(manageDocumentControlled));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "删除文件受控")
    @PostMapping("/delManageDocumentControlled")
    public Result delManageDocumentControlled(Long id){
        return Result.success(manageDocumentControlledService.delManageDocumentControlled(id));
    }
    @ValueAuth
    @ApiOperation(value = "审核文件受控")
    @PostMapping("/checkManageDocumentControlled")
    public Result checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled){
        return Result.success(manageDocumentControlledService.checkManageDocumentControlled(manageDocumentControlled));
    }
    @ValueAuth
    @ApiOperation(value = "审核查看附件")
    @PostMapping("/checkManageDocumentControlledPdf")
    public void checkManageDocumentControlledPdf(Long id, HttpServletResponse response)throws Exception {
        manageDocumentControlledService.checkManageDocumentControlledPdf(id,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentIssueRecycleController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.ManageDocumentIssueRecycleDto;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.ManageDocumentIssueRecycleService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
@RestController
@RequestMapping("/manageDocumentIssueRecycle")
@CustomClazzName(name = "体系管理要求",index = 10)
public class ManageDocumentIssueRecycleController {
    @Resource
    private ManageDocumentIssueRecycleService manageDocumentIssueRecycleService;
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "分页查询文件发放回收")
    @PostMapping("/pageManageDocumentIssueRecycle")
    public Result pageManageDocumentIssueRecycle(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageDocumentIssueRecycleDto  manageDocumentIssueRecycleDto  = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentIssueRecycleDto.class);
        return Result.success(manageDocumentIssueRecycleService.pageManageDocumentIssueRecycle(page, manageDocumentIssueRecycleDto));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "新增文件发放回收")
    @PostMapping("/addManageDocumentIssueRecycle")
    public Result addManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle){
        return Result.success(manageDocumentIssueRecycleService.addManageDocumentIssueRecycle(manageDocumentIssueRecycle));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "删除文件发放回收")
    @PostMapping("/delManageDocumentIssueRecycle")
    public Result delManageDocumentIssueRecycle(Long id){
        return Result.success(manageDocumentIssueRecycleService.delManageDocumentIssueRecycle(id));
    }
    @ValueAuth
    @ApiOperation(value = "查看文件发放回收")
    @PostMapping("/getManageDocumentIssueRecycle")
    public Result getManageDocumentIssueRecycle(Long id){
        return Result.success(manageDocumentIssueRecycleService.getManageDocumentIssueRecycle(id));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件发放回收")
    @PostMapping("/doManageDocumentIssueRecycle")
    public Result doManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle){
        return Result.success(manageDocumentIssueRecycleService.doManageDocumentIssueRecycle(manageDocumentIssueRecycle));
    }
    @ValueAuth
    @ApiOperation(value = "审核文件发放回收")
    @PostMapping("/checkManageDocumentIssueRecycle")
    public Result checkManageDocumentIssueRecycle(Integer id,String documentState){
        return Result.success(manageDocumentIssueRecycleService.checkManageDocumentIssueRecycle(id,documentState));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "导出文件发放回收")
    @PostMapping("/exportManageDocumentIssueRecycle")
    public void exportManageDocumentIssueRecycle(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentIssueRecycleDto.class);
        manageDocumentIssueRecycleService.exportManageDocumentIssueRecycle(manageDocumentIssueRecycleDto,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentListController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.yuanchu.mom.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.excel.ManageDocumentListListener;
import com.yuanchu.mom.mapper.ManageDocumentListMapper;
import com.yuanchu.mom.pojo.ManageDocumentList;
import com.yuanchu.mom.pojo.Warehouse;
import com.yuanchu.mom.service.ManageDocumentListService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
@RestController
@RequestMapping("/manageDocumentList")
@CustomClazzName(name = "体系管理要求",index = 10)
public class ManageDocumentListController {
    @Resource
    private ManageDocumentListService manageDocumentListService;
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "分页查询文件清单")
    @PostMapping("/pageManageDocumentList")
    public Result pageManageDocumentList(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageDocumentList manageDocumentList = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageDocumentList.class);
        return Result.success(manageDocumentListService.pageManageDocumentList(page, manageDocumentList));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "编辑文件清单")
    @PostMapping("/doManageDocumentList")
    public Result doManageDocumentList(@RequestBody ManageDocumentList manageDocumentList) {
        return Result.success(manageDocumentListService.updateById(manageDocumentList));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "编辑文件清单")
    @PostMapping("/delManageDocumentList")
    public Result delManageDocumentList(Integer id) {
        return Result.success(manageDocumentListService.removeById(id));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @ApiOperation(value = "上传附件-文件清单")
    @PostMapping("/uploadFileManageDocumentList")
    public Result uploadFileManageDocumentList(Integer id, MultipartFile file) {
        return Result.success(manageDocumentListService.uploadFile(id,file));
    }
    @ValueClassify(value = "管理体系文件的控制")
    @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/yuanchu/mom/controller/ManageMeetingController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.ManageMeetingDto;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.service.ManageMeetingService;
import com.yuanchu.mom.vo.Result;
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;
    @ValueClassify(value = "管理评审会议记录")
    @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);
    }
    @ValueClassify(value = "管理评审会议记录")
    @ApiOperation(value = "新增会议记录")
    @PostMapping("/addMeeting")
    public Result addMeeting(@RequestBody ManageMeetingDto dto){
        manageMeetingService.addMeeting(dto);
        return Result.success();
    }
    @ValueClassify(value = "管理评审会议记录")
    @ApiOperation(value = "编辑会议记录")
    @PutMapping("/modifyMeeting")
    public Result modifyMeeting(@RequestBody ManageMeetingDto manageMeetingDto){
        return Result.success(manageMeetingService.modifyMeeting(manageMeetingDto));
    }
    @ValueClassify(value = "管理评审会议记录")
    @ApiOperation(value = "删除会议记录")
    @DeleteMapping("/deleteMeeting")
    public Result deleteMeeting(Integer id){
        return Result.success(manageMeetingService.removeById(id));
    }
    @ValueClassify(value = "管理评审会议记录")
    @ApiOperation(value = "下载会议记录")
    @PostMapping("/exportMeeting")
    public void exportMeeting(Integer id, HttpServletResponse response){
        manageMeetingService.exportMeeting(id,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingParticipantsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.yuanchu.mom.controller;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.yuanchu.mom.service.ManageMeetingParticipantsService;
import com.yuanchu.mom.vo.MeetingParticipantsDetailsVo;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
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;
    @ValueClassify(value = "管理评审会议记录参会人员")
    @ApiOperation(value = "查询会议记录参会人员")
    @GetMapping("/getParticipants")
    public Result<MeetingParticipantsDetailsVo> getParticipants(Integer id){
        return Result.success(manageMeetingParticipantsService.getParticipants(id));
    }
    @ValueClassify(value = "管理评审会议记录参会人员")
    @ApiOperation(value = "新增会议记录参会人员")
    @PostMapping("/add")
    public Result addParticipants(List<ManageMeetingParticipants> list){
        manageMeetingParticipantsService.saveBatch(list);
        return Result.success();
    }
    @ValueClassify(value = "管理评审会议记录参会人员")
    @ApiOperation(value = "删除会议记录参会人员")
    @DeleteMapping("/delete")
    public Result deleteParticipants(List<Integer> ids){
        manageMeetingParticipantsService.removeByIds(ids);
        return Result.success();
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordAuditController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordAudit;
import com.yuanchu.mom.pojo.ManageRecordCancel;
import com.yuanchu.mom.service.ManageRecordAuditService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
@RestController
@RequestMapping("/manageRecordAudit")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordAuditController {
    @Resource
    private ManageRecordAuditService manageRecordAuditService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "分页查询文件修订申请审批记录")
    @PostMapping("/pageManageRecordAudit")
    public Result pageManageRecordAudit(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordAudit manageRecordAudit = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordAudit.class);
        return Result.success(manageRecordAuditService.pageManageRecordAudit(page, manageRecordAudit));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "新增文件修订申请审批记录")
    @PostMapping("/addManageRecordAudit")
    public Result addManageRecordAudit( ManageRecordAudit manageRecordAudit){
        return Result.success(manageRecordAuditService.addManageRecordAudit(manageRecordAudit));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件修订申请审批记录")
    @PostMapping("/doManageRecordAudit")
    public Result doManageRecordAudit(ManageRecordAudit manageRecordAudit){
        return Result.success(manageRecordAuditService.doManageRecordAudit(manageRecordAudit));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "删除文件修订申请审批记录")
    @PostMapping("/delManageRecordAudit")
    public Result delManageRecordAudit(Integer id){
        return Result.success(manageRecordAuditService.removeById(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "批准文件修订申请审批记录")
    @PostMapping("/ratifyManageRecordAudit")
    public Result ratifyManageRecordAudit(Integer id){
        return Result.success(manageRecordAuditService.ratifyManageRecordAudit(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "申请部门主管意见文件修订申请审批记录")
    @PostMapping("/manageRecordAudit1")
    public void manageRecordAudit1(){
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "原制定部门意见文件修订申请审批记录")
    @PostMapping("/manageRecordAudit2")
    public void manageRecordAudit2(){
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "原审核部门意见文件修订申请审批记录")
    @PostMapping("/manageRecordAudit3")
    public void manageRecordAudit3(){
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导出文件修订申请审批记录")
    @PostMapping("/exportOutManageRecordAudit")
    public Result exportOutManageRecordAudit(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        ManageRecordAudit manageRecordAudit = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordAudit.class);
        return Result.success(manageRecordAuditService.exportOutManageRecordAudit(manageRecordAudit,response));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCancelController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordCancel;
import com.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.yuanchu.mom.service.ManageRecordCancelService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.util.Map;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
@RestController
@RequestMapping("/manageRecordCancel")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordCancelController {
    @Resource
    private ManageRecordCancelService manageRecordCancelService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "分页查询作废文件销毁记录")
    @PostMapping("/pageManageRecordCancel")
    public Result pageManageRecordCancel(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordCancel manageRecordCancel = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordCancel.class);
        return Result.success(manageRecordCancelService.pageManageRecordCancel(page, manageRecordCancel));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "新增作废文件销毁记录")
    @PostMapping("/addManageRecordCancel")
    public Result addManageRecordCancel(@RequestBody ManageRecordCancel manageRecordCancel){
        manageRecordCancel.setCreateTime(LocalDate.now());
        return Result.success(manageRecordCancelService.save(manageRecordCancel));
    }
    @ValueAuth
    @ApiOperation(value = "编辑作废文件销毁记录")
    @PostMapping("/doManageRecordCancel")
    public Result doManageRecordCancel(@RequestBody ManageRecordCancel manageRecordCancel){
        return Result.success(manageRecordCancelService.updateById(manageRecordCancel));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "删除作废文件销毁记录")
    @PostMapping("/delManageRecordCancel")
    public Result delManageRecordCancel(Integer id){
        return Result.success(manageRecordCancelService.removeById(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "批准作废文件销毁记录")
    @PostMapping("/ratifyManageRecordCancel")
    public Result ratifyManageRecordCancel(Integer id,String ratifyState){
        return Result.success(manageRecordCancelService.ratifyManageRecordCancel(id,ratifyState));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导出作废文件销毁记录")
    @PostMapping("/exportOutManageRecordCancel")
    public Result exportOutManageRecordCancel(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        ManageRecordCancel manageRecordCancel = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordCancel.class);
        return Result.success(manageRecordCancelService.exportOutManageRecordCancel(manageRecordCancel,response));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导入作废文件销毁记录")
    @PostMapping("/exportInManageRecordCancel")
    public Result exportInManageRecordCancel(MultipartFile file){
        return Result.success(manageRecordCancelService.exportInManageRecordCancel(file));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCheckController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordCheck;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.service.ManageRecordCheckService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.websocket.HandshakeResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
@RestController
@RequestMapping("/manageRecordCheck")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordCheckController {
    @Resource
    private ManageRecordCheckService manageRecordCheckService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "分页查询文件审批记录")
    @PostMapping("/pageManageRecordCheck")
    public Result pageManageRecordCheck(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordCheck manageRecordCheck = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordCheck.class);
        return Result.success(manageRecordCheckService.pageManageRecordCheck(page, manageRecordCheck));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "新增文件审批记录")
    @PostMapping("/addManageRecordCheck")
    public Result addManageRecordCheck(@RequestBody ManageRecordCheck manageRecordCheck) {
        return Result.success(manageRecordCheckService.save(manageRecordCheck));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件审批记录")
    @PostMapping("/doManageRecordCheck")
    public Result doManageRecordCheck(@RequestBody ManageRecordCheck manageRecordCheck) {
        return Result.success(manageRecordCheckService.updateById(manageRecordCheck));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "删除文件审批记录")
    @PostMapping("/delManageRecordCheck")
    public Result delManageRecordCheck(Integer id) {
        return Result.success(manageRecordCheckService.removeById(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "审核文件审批记录")
    @PostMapping("/checkManageRecordCheck")
    public Result checkManageRecordCheck(Integer id,String checkState) {
        return Result.success(manageRecordCheckService.checkManageRecordCheck(id,checkState));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "批准文件审批记录")
    @PostMapping("/ratifyManageRecordCheck")
    public Result ratifyManageRecordCheck(Integer id,String ratifyState) {
        return Result.success(manageRecordCheckService.ratifyManageRecordCheck(id,ratifyState));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导出文件审批记录")
    @PostMapping("/exportOutManageRecordCheck")
    public Result exportOutManageRecordCheck(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        ManageRecordCheck manageRecordCheck = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordCheck.class);
        return Result.success(manageRecordCheckService.exportOutManageRecordCheck(manageRecordCheck,response));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导入文件审批记录")
    @PostMapping("/exportInManageRecordCheck")
    public Result exportInManageRecordCheck(MultipartFile file){
        return Result.success(manageRecordCheckService.exportInManageRecordCheck(file));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordIntervals;
import com.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.yuanchu.mom.service.ManageRecordIntervalsService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
@RestController
@RequestMapping("/manageRecordIntervals")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordIntervalsController {
    @Resource
    private ManageRecordIntervalsService manageRecordIntervalsService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "分页查询文件定期审查记录")
    @PostMapping("/pageManageRecordIntervals")
    public Result pageManageRecordIntervals(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordIntervals manageRecordIntervals = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordIntervals.class);
        return Result.success(manageRecordIntervalsService.pageManageRecordIntervals(page, manageRecordIntervals));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "新增文件定期审查记录")
    @PostMapping("/addManageRecordIntervals")
    public Result addManageRecordIntervals(@RequestBody ManageRecordIntervals manageRecordIntervals) {
        return Result.success(manageRecordIntervalsService.addManageRecordIntervals(manageRecordIntervals));
    }
    @ValueAuth
    @ApiOperation(value = "编辑文件定期审查记录")
    @PostMapping("/doManageRecordIntervals")
    public Result doManageRecordIntervals(@RequestBody ManageRecordIntervals manageRecordIntervals) {
        return Result.success(manageRecordIntervalsService.updateById(manageRecordIntervals));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "删除文件定期审查记录")
    @PostMapping("/delManageRecordIntervals")
    public Result delManageRecordIntervals(Integer id) {
        return Result.success(manageRecordIntervalsService.delManageRecordIntervals(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导出文件定期审查记录")
    @PostMapping("/exportOutManageRecordIntervals")
    public Result exportOutManageRecordIntervals(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        ManageRecordIntervals manageRecordIntervals  = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordIntervals.class);
        return Result.success(manageRecordIntervalsService.exportOutManageRecordIntervals(manageRecordIntervals,response));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导入文件定期审查记录")
    @PostMapping("/exportInManageRecordIntervals")
    public Result exportInManageRecordIntervals(MultipartFile file){
        return Result.success(manageRecordIntervalsService.exportInManageRecordIntervals(file));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsTotalController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordIntervalsTotal;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.service.ManageRecordIntervalsTotalService;
import com.yuanchu.mom.service.ManageRecordTotalService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
@RestController
@RequestMapping("/manageRecordIntervalsTotal")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordIntervalsTotalController {
    @Resource
    private ManageRecordIntervalsTotalService manageRecordIntervalsTotalService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "查询文件定期审查记录历史列表")
    @PostMapping("/pageManageRecordIntervalsTotal")
    public Result pageManageRecordIntervalsTotal(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordIntervalsTotal.class);
        return Result.success(manageRecordIntervalsTotalService.pageManageRecordIntervalsTotal(page, manageRecordIntervalsTotal));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "提交文件定期审查记录历史列表")
    @PostMapping("/submitManageRecordIntervalsTotal")
    public Result submitManageRecordIntervalsTotal(Integer id) {
        return Result.success(manageRecordIntervalsTotalService.submitManageRecordIntervalsTotal(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "批准文件定期审查记录历史列表")
    @PostMapping("/ratifyManageRecordIntervalsTotal")
    public Result ratifyManageRecordIntervalsTotal(Integer id, String ratifyState) {
        return Result.success(manageRecordIntervalsTotalService.ratifyManageRecordIntervalsTotal(id, ratifyState));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIssueRecycleController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageRecordCheck;
import com.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.yuanchu.mom.service.ManageRecordIssueRecycleService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
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.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
@RestController
@RequestMapping("/manageRecordIssueRecycle")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordIssueRecycleController {
    @Resource
    private ManageRecordIssueRecycleService manageRecordIssueRecycleService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "分页查询所有文件的发放与回收记录")
    @PostMapping("/pageManageRecordIssueRecycle")
    public Result pageManageRecordIssueRecycle(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordIssueRecycle manageRecordIssueRecycle = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordIssueRecycle.class);
        return Result.success(manageRecordIssueRecycleService.pageManageRecordIssueRecycle(page, manageRecordIssueRecycle));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "删除所有文件的发放与回收记录")
    @PostMapping("/delManageRecordIssueRecycle")
    public Result delManageRecordIssueRecycle(Integer id){
        return Result.success(manageRecordIssueRecycleService.removeById(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "新增所有文件的发放与回收记录")
    @PostMapping("/addManageRecordIssueRecycle")
    public Result addManageRecordIssueRecycle(@RequestBody ManageRecordIssueRecycle manageRecordIssueRecycle){
        return Result.success(manageRecordIssueRecycleService.addManageRecordIssueRecycle(manageRecordIssueRecycle));
    }
    @ValueAuth
    @ApiOperation(value = "编辑所有文件的发放与回收记录")
    @PostMapping("/doManageRecordIssueRecycle")
    public Result doManageRecordIssueRecycle(@RequestBody ManageRecordIssueRecycle manageRecordIssueRecycle){
        return Result.success(manageRecordIssueRecycleService.doManageRecordIssueRecycle(manageRecordIssueRecycle));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导出所有文件的发放与回收记录")
    @PostMapping("/exportOutManageRecordIssueRecycle")
    public Result exportOutManageRecordIssueRecycle(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        ManageRecordIssueRecycle manageRecordIssueRecycle = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordIssueRecycle.class);
        return Result.success(manageRecordIssueRecycleService.exportOutManageRecordIssueRecycle(manageRecordIssueRecycle,response));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导入所有文件的发放与回收记录")
    @PostMapping("/exportInManageRecordIssueRecycle")
    public Result exportInManageRecordIssueRecycle(MultipartFile file){
        return Result.success(manageRecordIssueRecycleService.exportInManageRecordIssueRecycle(file));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordTotalController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.service.ManageRecordTotalService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
@RestController
@RequestMapping("/manageRecordTotal")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordTotalController {
    @Resource
    private ManageRecordTotalService manageRecordTotalService;
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "查询外来文件确认记录历史列表")
    @PostMapping("/pageManageRecordTotal")
    public Result pageManageRecordTotal(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordTotal manageRecordTotal = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordTotal.class);
        return Result.success(manageRecordTotalService.pageManageRecordTotal(page, manageRecordTotal));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "提交外来文件确认记录历史列表")
    @PostMapping("/submitManageRecordTotal")
    public Result submitManageRecordTotal(Integer id) {
        return Result.success(manageRecordTotalService.submitManageRecordTotal(id));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "批准外来文件确认记录历史列表")
    @PostMapping("/ratifyManageRecordTotal")
    public Result ratifyManageRecordTotal(Integer id, String ratifyState) {
        return Result.success(manageRecordTotalService.ratifyManageRecordTotal(id, ratifyState));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordVerifyController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageRecordVerify;
import com.yuanchu.mom.service.ManageRecordVerifyService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
@RestController
@RequestMapping("/manageRecordVerify")
@CustomClazzName(name = "体系管理要求", index = 10)
public class ManageRecordVerifyController {
    @Resource
    private ManageRecordVerifyService manageRecordVerifyService;
    @ValueAuth
    @ApiOperation(value = "查询外来文件确认记录详情")
    @PostMapping("/pageManageRecordVerify")
    public Result pageManageRecordVerify(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        ManageRecordVerify manageRecordVerify = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ManageRecordVerify.class);
        return Result.success(manageRecordVerifyService.pageManageRecordVerify(page, manageRecordVerify));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "新增外来文件确认记录")
    @PostMapping("/addManageRecordVerify")
    public Result addManageRecordVerify(@RequestBody ManageRecordVerify manageRecordVerify) {
        return Result.success(manageRecordVerifyService.addManageRecordVerify(manageRecordVerify));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "删除外来文件确认记录")
    @PostMapping("/delManageRecordVerify")
    public Result delManageRecordVerify(Integer id) {
        return Result.success(manageRecordVerifyService.delManageRecordVerify(id));
    }
    @ValueAuth
    @ApiOperation(value = "修改外来文件确认记录")
    @PostMapping("/doManageRecordVerify")
    public Result doManageRecordVerify(@RequestBody ManageRecordVerify manageRecordVerify) {
        return Result.success(manageRecordVerifyService.updateById(manageRecordVerify));
    }
    @ValueClassify(value = "记录的控制")
    @ApiOperation(value = "导入外来文件确认记录")
    @PostMapping("/exportManageRecordVerify")
    public Result exportManageRecordVerify(MultipartFile file) {
        return Result.success(manageRecordVerifyService.exportManageRecordVerify(file));
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.service.ManageDocumentListService;
import com.yuanchu.mom.service.ManageReviewProgramService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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.time.LocalDateTime;
import java.util.Map;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
@Api(tags = "管理评审计划")
@RestController
@RequestMapping("/manageReviewProgram")
public class ManageReviewProgramController {
    @Resource
    private ManageReviewProgramService manageReviewProgramService;
    @ValueClassify(value = "管理评审计划")
    @ApiOperation(value = "查询评审计划")
    @GetMapping("/getPageReviewProgram")
    public Result<IPage<ManageReviewProgram>> getPageReviewProgram(Page page, String startTime,String endTime, String judgingLocation) throws Exception {
        IPage<ManageReviewProgram> ipage = manageReviewProgramService.page(page,startTime,endTime,judgingLocation);
        return Result.success(ipage);
    }
    @ValueClassify(value = "管理评审计划")
    @ApiOperation(value = "新增评审计划")
    @PostMapping("/addReviewProgram")
    public Result addReviewProgram(@RequestBody ManageReviewProgram manageReviewProgram){
        return Result.success(manageReviewProgramService.addReviewProgram(manageReviewProgram));
    }
    @ValueClassify(value = "管理评审计划")
    @ApiOperation(value = "编辑评审计划")
    @PutMapping("/modifyReviewProgram")
    public Result modifyReviewProgram(@RequestBody ManageReviewProgram manageReviewProgram){
        return Result.success(manageReviewProgramService.updateById(manageReviewProgram));
    }
    @ValueClassify(value = "管理评审计划")
    @ApiOperation(value = "删除评审计划")
    @DeleteMapping("/deleteReviewProgram")
    public Result deleteReviewProgram( Integer id){
        return Result.success(manageReviewProgramService.removeById(id));
    }
    @ValueClassify(value = "管理评审计划")
    @ApiOperation(value = "下载评审计划")
    @PostMapping("/exportReviewProgram")
    public void exportReviewProgram(Integer id, HttpServletResponse response){
        manageReviewProgramService.exportReviewProgram(id,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramFileController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.yuanchu.mom.controller;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.service.ManageReviewProgramFileService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
@RestController
@RequestMapping("/manageReviewProgramFile")
public class ManageReviewProgramFileController {
    @Resource
    private ManageReviewProgramFileService manageReviewProgramFileService;
    @ValueClassify(value = "管理评审计划文件")
    @ApiOperation(value = "查询评审计划文件")
    @GetMapping("/selectReviewProgramFile")
    public Result selectReviewProgramFile(Integer id){
        return Result.success(manageReviewProgramFileService.selectFile(id));
    }
    @ValueClassify(value = "管理评审计划文件")
    @ApiOperation(value = "新增评审计划文件")
    @PostMapping("/addReviewProgramFile")
    public Result addReviewProgramFile(MultipartFile file,Integer id){
        manageReviewProgramFileService.addFile(file,id);
        return Result.success();
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageReviewReport;
import com.yuanchu.mom.service.ManageMeetingService;
import com.yuanchu.mom.service.ManageReviewReportService;
import com.yuanchu.mom.vo.Result;
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 javax.websocket.HandshakeResponse;
/**
 * <p>
 * ç®¡ç†è¯„审报告 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
@Api(tags = "管理评审报告")
@RestController
@RequestMapping("/manageReviewReport")
public class ManageReviewReportController {
    @Resource
    private ManageReviewReportService manageReviewReportService;
    @ValueClassify(value = "管理评审报告")
    @ApiOperation(value = "查询管理评审报告")
    @GetMapping("/getPageReviewReport")
    public Result<IPage<ManageReviewReport>> getPageReviewReport(Page page, String startTime, String endTime, String place) {
        IPage<ManageReviewReport> ipage = manageReviewReportService.page(page,startTime,endTime,place);
        return Result.success(ipage);
    }
    @ValueClassify(value = "管理评审报告")
    @ApiOperation(value = "新增管理评审报告")
    @PostMapping("/addReviewReport")
    public Result addReviewReport(@RequestBody ManageReviewReport manageReviewReport){
        return Result.success(manageReviewReportService.save(manageReviewReport));
    }
    @ValueClassify(value = "管理评审报告")
    @ApiOperation(value = "编辑管理评审报告")
    @PutMapping("/modifyReviewReport")
    public Result modifyReviewReport(@RequestBody ManageReviewReport manageReviewReport){
        return Result.success(manageReviewReportService.updateById(manageReviewReport));
    }
    @ValueClassify(value = "管理评审报告")
    @ApiOperation(value = "删除管理评审报告")
    @DeleteMapping("/deleteReviewReport")
    public Result deleteReviewReport(Integer id){
        return Result.success(manageReviewReportService.removeById(id));
    }
    @ValueClassify(value = "管理评审报告")
    @ApiOperation(value = "下载管理评审报告")
    @PostMapping("/exportReviewReport")
    public void exportReviewReport(Integer id , HttpServletResponse response){
        manageReviewReportService.exportReviewReport(id,response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRiskAssessmentResultsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
package com.yuanchu.mom.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.enums.CellExtraTypeEnum;
import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.pojo.ManageRiskAssessmentResults;
import com.yuanchu.mom.service.ManageRiskAssessmentResultsService;
import com.yuanchu.mom.utils.MyUtil;
import com.yuanchu.mom.vo.ManageRiskAssessmentResultsVo;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
@Api(tags = "危险因素辨识与风险评价结果一览表")
@RestController
@RequestMapping("/manageRiskAssessmentResults")
public class ManageRiskAssessmentResultsController {
    @Autowired
    private GetLook getLook;
    @Resource
    private ManageRiskAssessmentResultsService manageRiskAssessmentResultsService;
    @ValueClassify(value = "危险因素辨识与风险评价结果一览")
    @ApiOperation(value = "分页查询")
    @GetMapping("/getPageResults")
    public Result<IPage<ManageRiskAssessmentResultsVo>> getPageResults(Page page) {
        IPage<ManageRiskAssessmentResultsVo> ipage = manageRiskAssessmentResultsService.getPageResults(page);
        return Result.success(ipage);
    }
    @ValueClassify(value = "危险因素辨识与风险评价结果一览")
    @ApiOperation(value = "批准")
    @GetMapping("/hazardIdentificationAndRiskApproval")
    public Result<?> hazardIdentificationAndRiskApproval(Integer approve, Integer status) {
        manageRiskAssessmentResultsService.update(Wrappers.<ManageRiskAssessmentResults>lambdaUpdate()
                .set(ManageRiskAssessmentResults::getApprove, approve)
                .set(ManageRiskAssessmentResults::getApproveStatus, status)
                .set(ManageRiskAssessmentResults::getApproveDate, LocalDateTime.now()));
        return Result.success();
    }
    @ValueClassify(value = "危险因素辨识与风险评价结果一览")
    @ApiOperation(value = "审批")
    @GetMapping("/dangerousRiskApproval")
    public Result<?> dangerousRiskApproval(Integer approval, Integer status) {
        manageRiskAssessmentResultsService.update(Wrappers.<ManageRiskAssessmentResults>lambdaUpdate()
                .set(ManageRiskAssessmentResults::getApproval, approval)
                .set(ManageRiskAssessmentResults::getApprovalStatus, status)
                .set(ManageRiskAssessmentResults::getApprovalDate, LocalDateTime.now()));
        return Result.success();
    }
    @ValueClassify(value = "危险因素辨识与风险评价结果一览")
    @ApiOperation(value = "导入")
    @PostMapping("/riskAssessmentImport")
    public void riskAssessmentImport(MultipartFile file) throws IOException {
        boolean excelFile = MyUtil.isExcelFile(file);
        if (!excelFile) {
            throw new ErrorException("请导入excel文件!");
        }
        EasyExcel.read(file.getInputStream(), ManageRiskAssessmentResults.class, new PageReadListener<ManageRiskAssessmentResults>(dataList -> {
            Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
            dataList.forEach(i -> {
                i.setEditor(userId);
                i.setEditorDate(LocalDateTime.now());
                i.setApproveStatus(0);
                i.setApprovalStatus(0);
            });
            manageRiskAssessmentResultsService.saveOrUpdateBatch(dataList);
        })).extraRead(CellExtraTypeEnum.MERGE).sheet().doRead();
    }
    @ValueClassify(value = "危险因素辨识与风险评价结果一览")
    @ApiOperation(value = "新增")
    @PostMapping("/addNewRiskFactors")
    public void addNewRiskFactors(@RequestBody ManageRiskAssessmentResults manageRiskAssessmentResults) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        manageRiskAssessmentResults.setEditor(userId);
        manageRiskAssessmentResults.setEditorDate(LocalDateTime.now());
        manageRiskAssessmentResultsService.saveOrUpdate(manageRiskAssessmentResults);
    }
    @ValueClassify(value = "危险因素辨识与风险评价结果一览")
    @ApiOperation(value = "删除")
    @GetMapping("/removeRiskFactors")
    public void removeRiskFactors(Integer id) {
        manageRiskAssessmentResultsService.removeById(id);
    }
    /**
     * å¯¼å‡ºäººå‘˜åŸ¹è®­è®¡åˆ’
     * @return
     */
    @ValueAuth
    @ApiOperation(value = "导出危险因素辨识与风险评价结果一览")
    @GetMapping("/exportHazardFactorIdentification")
    public void exportPersonTraining(HttpServletResponse response){
        manageRiskAssessmentResultsService.exportPersonTraining(response);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/ClientSatisfactionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.ClientSatisfaction;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Author: yuan
 * Date: 2024-12-16 æ˜ŸæœŸä¸€ 10:38:30
 * Description: å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥å¯¼å‡ºWord
 */
@Data
public class ClientSatisfactionDto extends ClientSatisfaction {
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private String serviceAttitude0;
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private String serviceAttitude1;
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private String serviceAttitude2;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private String technicalCompetence0;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private String technicalCompetence1;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private String technicalCompetence2;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private String inspectionWork0;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private String inspectionWork1;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private String inspectionWork2;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private String reasonableFees0;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private String reasonableFees1;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private String reasonableFees2;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCheckDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InternalCheck;
import com.yuanchu.mom.pojo.InternalCheckDetail;
import com.yuanchu.mom.pojo.InternalImplementDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/11
 */
@Data
public class InternalCheckDto extends InternalCheck {
    @ApiModelProperty("检查详情")
    private List<InternalCheckDetail> checkDetailList;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCorrectDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InternalCorrect;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
/**
 * @Author zhuo
 * @Date 2024/11/19
 */
@Data
public class InternalCorrectDto extends InternalCorrect {
    @ApiModelProperty("提出时间")
    private String raiseTimeString;
    @ApiModelProperty("原因分析时间")
    private String causeTimeString;
    @ApiModelProperty("纠正时间")
    private String correctTimeString;
    @ApiModelProperty("验证时间")
    private String validationTimeString;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalImplementDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InternalImplement;
import com.yuanchu.mom.pojo.InternalImplementDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/11
 */
@Data
public class InternalImplementDto extends InternalImplement {
    @ApiModelProperty("计划详情")
    private List<InternalImplementDetail> implementDetailList;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.yuanchu.mom.pojo.InternalMeetingDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/12
 */
@Data
public class InternalMeetingDto extends InternalMeeting {
    @ApiModelProperty("参加人")
    private List<InternalMeetingDetail> meetingDetailList;
    @ApiModelProperty("参加人信息")
    private String participantName;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingParticipantDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.yuanchu.mom.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å‚加人员对象
 *
 * @Author zhuo
 * @Date 2024/11/19
 */
@Data
public class InternalMeetingParticipantDto {
    @ApiModelProperty("参加人员1")
    private String userName1;
    @ApiModelProperty("部门1")
    private String department1;
    @ApiModelProperty("参加人员2")
    private String userName2;
    @ApiModelProperty("部门2")
    private String department2;
    @ApiModelProperty("参加人员3")
    private String userName3;
    @ApiModelProperty("部门3")
    private String department3;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalPlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InternalMeetingDetail;
import com.yuanchu.mom.pojo.InternalPlan;
import com.yuanchu.mom.pojo.InternalPlanDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @Author zhuo
 * @Date 2024/11/13
 */
@Data
public class InternalPlanDto extends InternalPlan {
    @ApiModelProperty("计划详情")
    private List<InternalPlanDetail> planDetailList;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageDocumentIssueRecycleDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.yuanchu.mom.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.pojo.ManageDocumentIssueRecycle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
@Data
@ExcelIgnoreUnannotated
public class ManageDocumentIssueRecycleDto extends ManageDocumentIssueRecycle {
    @ApiModelProperty("发放人")
    @ValueTableShow(6)
    @ExcelProperty(value = "发放人")
    private String issueUserName;
    @ApiModelProperty("回收人")
    @ValueTableShow(8)
    @ExcelProperty(value = "回收人")
    private String recycleUserName;
    @ApiModelProperty("接收人")
    @ExcelProperty(value = "接收人")
    private String receiveUserName;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import lombok.Data;
import java.util.List;
@Data
public class ManageMeetingDto extends ManageMeeting {
    private List<ManageMeetingParticipants> list;
    private String participant;
}
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingParticipantsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
@Data
public class ManageMeetingParticipantsDto {
    @ApiModelProperty("参加人员1")
    private String userName1;
    @ApiModelProperty("部门1")
    private String department1;
    @ApiModelProperty("参加人员2")
    private String userName2;
    @ApiModelProperty("部门2")
    private String department2;
}
cnas-manage/src/main/java/com/yuanchu/mom/excel/ManageDocumentListListener.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.yuanchu.mom.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.yuanchu.mom.pojo.ManageDocumentList;
import com.yuanchu.mom.service.ManageDocumentListService;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ManageDocumentListListener extends AnalysisEventListener<ManageDocumentList> {
    private static final int BATCH_COUNT = 1000;
    List<ManageDocumentList> list = new ArrayList<>();
    private ManageDocumentListService manageDocumentListService;
    public ManageDocumentListListener(ManageDocumentListService manageDocumentListService) {
        this.manageDocumentListService = manageDocumentListService;
    }
    @Override
    public void invoke(ManageDocumentList data, AnalysisContext analysisContext) {
        list.add(data);
        if (list.size() >= BATCH_COUNT) {
            save();
            list.clear();
        }
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        save();
    }
    private void save() {
        manageDocumentListService.importExcel(list);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionAnalyseFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ClientSatisfactionAnalyseFile;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å®¢æˆ·æ»¡æ„åº¦åˆ†æžé™„ä»¶
 *
 * @author makejava
 * @since 2024-11-09
 */
@Mapper
public interface ClientSatisfactionAnalyseFileMapper extends BaseMapper<ClientSatisfactionAnalyseFile> {
    /**
     * å®¢æˆ·åˆ†æžé™„件列表
     * @param page
     * @return
     */
    IPage<ClientSatisfactionAnalyseFile> pageAnalyseFile(Page page, @Param("ew") QueryWrapper<ClientSatisfactionAnalyseFile> ew);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.ClientSatisfactionDto;
import com.yuanchu.mom.pojo.ClientSatisfaction;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Mapper
public interface ClientSatisfactionMapper extends BaseMapper<ClientSatisfaction> {
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     * @param page
     * @param ew
     * @return
     */
    IPage<ClientSatisfaction> pageClientSatisfaction(Page page, @Param("ew") QueryWrapper<ClientSatisfaction> ew);
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     * @param clientSatisfactionId
     * @return
     */
    ClientSatisfactionDto exportWordClientSatisfaction(Integer clientSatisfactionId);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.InternalCheckDetail;
import org.apache.ibatis.annotations.Mapper;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalCheckDetailMapper extends BaseMapper<InternalCheckDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.InternalCheckDto;
import com.yuanchu.mom.pojo.InternalCheck;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalCheckMapper extends BaseMapper<InternalCheck> {
    /**
     * å†…审检查分页查询
     * @param page
     * @return
     */
    IPage<InternalCheckDto> pageInternalCheck(Page page, @Param("ew") QueryWrapper<InternalCheck> ew);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.pojo.InternalCorrectFile;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å†…审管理纠正措施附件表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
@Mapper
public interface InternalCorrectFileMapper extends BaseMapper<InternalCorrectFile> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.InternalCorrect;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å†…审管理纠正处理表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Mapper
public interface InternalCorrectMapper extends BaseMapper<InternalCorrect> {
    IPage<InternalCorrect> pageInternalAccording(Page page, @Param("ew") QueryWrapper<InternalCorrect> ew);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.InternalImplementDetail;
import org.apache.ibatis.annotations.Mapper;
/**
 * å†…审实施计划详情
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalImplementDetailMapper extends BaseMapper<InternalImplementDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.InternalImplementDto;
import com.yuanchu.mom.pojo.InternalImplement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalImplementMapper extends BaseMapper<InternalImplement> {
    /**
     * å†…审实施计划分页查询
     * @param page
     * @return
     */
    IPage<InternalImplementDto> pageInternalImplement(Page page, @Param("ew") QueryWrapper<InternalImplement> ew);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.pojo.InternalMeetingDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * å†…审会议详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
public interface InternalMeetingDetailMapper extends BaseMapper<InternalMeetingDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.InternalMeetingDto;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å†…审会议表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
public interface InternalMeetingMapper extends BaseMapper<InternalMeeting> {
    /**
     * å†…审会议分页查询
     * @param page
     * @return
     */
    IPage<InternalMeetingDto> pageInternalMeeting(Page page, @Param("ew") QueryWrapper<InternalMeeting> ew);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.pojo.InternalPlanDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å†…审年度计划详情表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
@Mapper
public interface InternalPlanDetailMapper extends BaseMapper<InternalPlanDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.InternalPlanDto;
import com.yuanchu.mom.pojo.InternalPlan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å†…审年度计划 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Mapper
public interface InternalPlanMapper extends BaseMapper<InternalPlan> {
    /**
     * å†…审年度计划分页查询
     * @param page
     * @param ew
     * @return
     */
    IPage<InternalPlanDto> pageInternalPlan(Page page, @Param("ew") QueryWrapper<InternalPlan> ew);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalReportMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.InternalReport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Mapper
public interface InternalReportMapper extends BaseMapper<InternalReport> {
    /**
     * å†…审报告分页查询
     * @param page
     * @param internalReportQueryWrapper
     * @return
     */
    IPage<InternalReport> pageInternalReport(Page page, @Param("ew") QueryWrapper<InternalReport> internalReportQueryWrapper);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageControlPlanListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageControlPlanList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.vo.ManageControlPlanListVo;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
public interface ManageControlPlanListMapper extends BaseMapper<ManageControlPlanList> {
    IPage<ManageControlPlanListVo> getPageList(Page page, @Param("itSExporting") Boolean itSExporting);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentAlterMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageDocumentAlter;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
public interface ManageDocumentAlterMapper extends BaseMapper<ManageDocumentAlter> {
    IPage<ManageDocumentAlter> pageManageDocumentAlter(Page page, @Param("ew") QueryWrapper<ManageDocumentAlter> queryWrappers);
    ManageDocumentAlter getManageDocumentAlter(Integer id);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentCancelMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageDocumentCancel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
public interface ManageDocumentCancelMapper extends BaseMapper<ManageDocumentCancel> {
    IPage<ManageDocumentCancel> pageManageDocumentCancel(Page page, @Param("ew") QueryWrapper<ManageDocumentCancel> queryWrappers);
    ManageDocumentCancel getManageDocumentCancel(Integer id);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentControlledMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageDocumentControlled;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å—控 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
public interface ManageDocumentControlledMapper extends BaseMapper<ManageDocumentControlled> {
    IPage<ManageDocumentControlled> pageManageDocumentControlled(Page page, @Param("ew") QueryWrapper<ManageDocumentControlled> queryWrappers);
    ManageDocumentControlled getManageDocumentControlled(Long id);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentIssueRecycleMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.ManageDocumentIssueRecycleDto;
import com.yuanchu.mom.pojo.ManageDocumentIssueRecycle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
public interface ManageDocumentIssueRecycleMapper extends BaseMapper<ManageDocumentIssueRecycle> {
    IPage<ManageDocumentIssueRecycleDto> pageManageDocumentIssueRecycle(Page page, @Param("ew") QueryWrapper<ManageDocumentIssueRecycleDto> queryWrappers);
    ManageDocumentIssueRecycleDto getManageDocumentIssueRecycle(Long id);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageDocumentList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
public interface ManageDocumentListMapper extends BaseMapper<ManageDocumentList> {
    IPage<ManageDocumentList> pageManageDocumentList(Page page, @Param("ew") QueryWrapper<ManageDocumentList> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.ManageMeetingDto;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
public interface ManageMeetingMapper extends BaseMapper<ManageMeeting> {
    IPage<ManageMeetingDto> page(Page page, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("place") String place);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingParticipantsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
public interface ManageMeetingParticipantsMapper extends BaseMapper<ManageMeetingParticipants> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordAuditMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordAudit;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
public interface ManageRecordAuditMapper extends BaseMapper<ManageRecordAudit> {
    IPage<ManageRecordAudit> pageManageRecordAudit(Page page, @Param("ew") QueryWrapper<ManageRecordAudit> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCancelMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordCancel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
public interface ManageRecordCancelMapper extends BaseMapper<ManageRecordCancel> {
    IPage<ManageRecordCancel> pageManageRecordCancel(Page page, @Param("ew") QueryWrapper<ManageRecordCancel> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCheckMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordCheck;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
public interface ManageRecordCheckMapper extends BaseMapper<ManageRecordCheck> {
    IPage<ManageRecordCheck> pageManageRecordCheck(Page page, @Param("ew") QueryWrapper<ManageRecordCheck> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordIntervals;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
public interface ManageRecordIntervalsMapper extends BaseMapper<ManageRecordIntervals> {
    IPage<ManageRecordIntervals> pageManageRecordIntervals(Page page, @Param("ew") QueryWrapper<ManageRecordIntervals> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsTotalMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordIntervalsTotal;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
public interface ManageRecordIntervalsTotalMapper extends BaseMapper<ManageRecordIntervalsTotal> {
    IPage<ManageRecordIntervalsTotal> pageManageRecordIntervalsTotal(Page page, @Param("ew") QueryWrapper<ManageRecordIntervalsTotal> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIssueRecycleMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
public interface ManageRecordIssueRecycleMapper extends BaseMapper<ManageRecordIssueRecycle> {
    IPage<ManageRecordIssueRecycle> pageManageRecordIssueRecycle(Page page, @Param("ew") QueryWrapper<ManageRecordIssueRecycle> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordTotalMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordTotal;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
public interface ManageRecordTotalMapper extends BaseMapper<ManageRecordTotal> {
    IPage<ManageRecordTotal> pageProcessTotaldeal(Page page, @Param("ew") QueryWrapper<ManageRecordTotal> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordVerifyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageRecordVerify;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å¤–来文件确认记录 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
public interface ManageRecordVerifyMapper extends BaseMapper<ManageRecordVerify> {
    IPage<ManageRecordVerify> pageManageRecordVerify(Page page, @Param("ew") QueryWrapper<ManageRecordVerify> queryWrappers);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.pojo.ManageReviewProgramFile;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
public interface ManageReviewProgramFileMapper extends BaseMapper<ManageReviewProgramFile> {
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ManageReviewProgram;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
public interface ManageReviewProgramMapper extends BaseMapper<ManageReviewProgram> {
    IPage<ManageReviewProgram> page(Page page, @Param("startTime") String startTime,@Param("endTime") String endTime,@Param("judgingLocation") String judgingLocation);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewReportMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageReviewReport;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * ç®¡ç†è¯„审报告 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
public interface ManageReviewReportMapper extends BaseMapper<ManageReviewReport> {
    IPage<ManageReviewReport> page(Page page, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("place") String place);
}
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRiskAssessmentResultsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRiskAssessmentResults;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.vo.ManageRiskAssessmentResultsVo;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
public interface ManageRiskAssessmentResultsMapper extends BaseMapper<ManageRiskAssessmentResults> {
    IPage<ManageRiskAssessmentResultsVo> getPageResults(Page page, @Param("itSExporting") Boolean itSExporting);
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfaction.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Data
@TableName("cnas_client_satisfaction")
public class ClientSatisfaction {
    @TableId(type = IdType.AUTO)
    private Integer clientSatisfactionId;
    @ApiModelProperty("单位名称")
    private String unitName;
    @ApiModelProperty("姓名")
    private String userName;
    @ApiModelProperty("填写日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate fillDate;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("联系电话")
    private String contactNumber;
    @ApiModelProperty("服务态度, 0:满意, 1:一般, 2:不满意")
    private Integer serviceAttitude;
    @ApiModelProperty("服务态度建议")
    private String serviceAttitudeSuggestion;
    @ApiModelProperty("技术能力, 0:满意, 1:一般, 2:不满意")
    private Integer technicalCompetence;
    @ApiModelProperty("技术能力建议")
    private String technicalCompetenceSuggestion;
    @ApiModelProperty("检测工作, 0:满意, 1:一般, 2:不满意")
    private Integer inspectionWork;
    @ApiModelProperty("检测工作建议")
    private String inspectionWorkSuggestion;
    @ApiModelProperty("收费合理性, 0:满意, 1:一般, 2:不满意")
    private Integer reasonableFees;
    @ApiModelProperty("收费合理性建议")
    private String reasonableFeesSuggestion;
    @ApiModelProperty("确认人")
    private String confirmPerson;
    @ApiModelProperty("确认人Id")
    private Integer confirmPersonId;
    @ApiModelProperty("确认状态, 0:未确认, 1:确认")
    private Integer confirmStatus;
    @ApiModelProperty("备注(对我们的希望)")
    private String remark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfactionAnalyseFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.yuanchu.mom.pojo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å®¢æˆ·æ»¡æ„åº¦åˆ†æžé™„ä»¶
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Data
@TableName("cnas_client_satisfaction_analyse_file")
public class ClientSatisfactionAnalyseFile {
    @TableId(type = IdType.AUTO)
    private Integer analyseFileId;
    @ApiModelProperty("类型:1图片/2文件")
    private Integer type;
    @ApiModelProperty("附件路径")
    private String fileUrl;
    @ApiModelProperty("附件名称")
    private String fileName;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人")
    @TableField(select = false,exist = false)
    private String userName;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheck.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package com.yuanchu.mom.pojo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_check")
public class InternalCheck {
    @TableId(type = IdType.AUTO)
    private Integer checkId;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("部门负责人")
    private String departmentHead;
    @ApiModelProperty("审核员")
    private String auditor;
    @ApiModelProperty("审核日期")
    private String reviewDate;
    @ApiModelProperty("编制人id")
    private Integer writeUserId;
    @ApiModelProperty("编制人")
    private String writeUserName;
    @ApiModelProperty("编制时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime writeTime;
    @ApiModelProperty("批准人id")
    private Integer ratifyUserId;
    @ApiModelProperty("批准人")
    private String ratifyUserName;
    @ApiModelProperty("批准时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ratifyTime;
    @ApiModelProperty("批准状态, 0 ä¸é€šè¿‡, 1通过")
    private Integer ratifyStatus;
    @ApiModelProperty("批准内容")
    private String ratifyRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheckDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.yuanchu.mom.pojo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_check_detail")
public class InternalCheckDetail {
    @TableId(type = IdType.AUTO)
    private Integer checkDetailId;
    @ApiModelProperty("检查主表id")
    private Integer checkId;
    @ApiModelProperty("要素条款")
    private String element;
    @ApiModelProperty("审核内容")
    private String content;
    @ApiModelProperty("审核方式")
    private String method;
    @ApiModelProperty("审核结果记录")
    private String resultRecords;
    @ApiModelProperty("不符合性质")
    private String nonNature;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    // å¯¼å‡ºä½¿ç”¨
    @TableField(select = false, exist = false)
    private Integer index;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
package com.yuanchu.mom.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.LocalDate;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * å†…审管理纠正处理表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Data
@TableName("cnas_internal_correct")
@ApiModel(value = "InternalCorrect对象", description = "内审管理纠正处理表")
public class InternalCorrect {
    @TableId(value = "correct_id", type = IdType.AUTO)
    private Integer correctId;
    @ApiModelProperty("不合格描述")
    private String raiseResult;
    @ApiModelProperty("vde专家发现")
    private String vdeRaiseResult;
    @ApiModelProperty("提出部门")
    private String raiseDepartment;
    @ApiModelProperty("提出人id")
    private Integer raiseUserId;
    @ApiModelProperty("提出人")
    private String raiseUserName;
    @ApiModelProperty("提出时间")
    private LocalDate raiseTime;
    @ApiModelProperty("原因分析")
    private String causeResult;
    @ApiModelProperty("原因分析责任部门")
    private String causeDepartment;
    @ApiModelProperty("原因分析人id")
    private Integer causeUserId;
    @ApiModelProperty("原因分析人")
    private String causeUserName;
    @ApiModelProperty("原因分析时间")
    private LocalDate causeTime;
    @ApiModelProperty("纠正措施")
    private String correctResult;
    @ApiModelProperty("提出部门确认")
    private String raiseDepartmentAffirm;
    @ApiModelProperty("纠正责任部门")
    private String correctDepartment;
    @ApiModelProperty("纠正人id")
    private Integer correctUserId;
    @ApiModelProperty("纠正")
    private String correctUserName;
    @ApiModelProperty("纠正时间")
    private LocalDate correctTime;
    @ApiModelProperty("验证结果")
    private String validationResult;
    @ApiModelProperty("验证部门")
    private String validationDepartment;
    @ApiModelProperty("验证人id")
    private Integer validationUserId;
    @ApiModelProperty("验证人")
    private String validationUserName;
    @ApiModelProperty("验证时间")
    private LocalDate validationTime;
    @ApiModelProperty("是否结束, 0: æœªç»“束, 1:已结束")
    private Integer isFinish;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @TableField(exist = false,select = false)
    @ApiModelProperty("流程, 0:不符合工作情况记录, 1处理措施, 2:纠正措施, 3:是否通知客户可恢复工作")
    private Integer flowType;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrectFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.yuanchu.mom.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.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * å†…审管理纠正措施附件表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
@Data
@TableName("cnas_internal_correct_file")
@ApiModel(value = "InternalCorrectFile对象", description = "内审管理纠正措施附件表")
public class InternalCorrectFile {
    @TableId(type = IdType.AUTO)
    private Integer correctFileId;
    @ApiModelProperty("内审纠正措施id")
    private Integer correctId;
    @ApiModelProperty("类型:1图片/2文件")
    private Integer type;
    @ApiModelProperty("附件路径")
    private String fileUrl;
    @ApiModelProperty("附件名称")
    private String fileName;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
package com.yuanchu.mom.pojo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_implement")
public class InternalImplement {
    @TableId(type = IdType.AUTO)
    private Integer implementId;
    @ApiModelProperty("审核目的")
    private String purposes;
    @ApiModelProperty("审核性质")
    private String nature;
    @ApiModelProperty("审核范围")
    private String scope;
    @ApiModelProperty("审核依据")
    private String basis;
    @ApiModelProperty("审核组长")
    private String teamLeader;
    @ApiModelProperty("内审员")
    private String internalAuditor;
    @ApiModelProperty("审核时间")
    private String reviewDate;
    @ApiModelProperty("审核方法")
    private String auditMethod;
    @ApiModelProperty("会议开始时间")
    private String firstMeetingTime;
    @ApiModelProperty("末次会议时间")
    private String lastMeetingTime;
    @ApiModelProperty("审核报告提交日期")
    private String submitTime;
    @ApiModelProperty("审核报告发放范围")
    private String submitScope;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("编制人id")
    private Integer writeUserId;
    @ApiModelProperty("编制人")
    private String writeUserName;
    @ApiModelProperty("编制时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime writeTime;
    @ApiModelProperty("批准人id")
    private Integer ratifyUserId;
    @ApiModelProperty("批准人")
    private String ratifyUserName;
    @ApiModelProperty("批准时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ratifyTime;
    @ApiModelProperty("批准状态, 0 ä¸é€šè¿‡, 1通过")
    private Integer ratifyStatus;
    @ApiModelProperty("批准内容")
    private String ratifyRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplementDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.yuanchu.mom.pojo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å†…审实施计划详情
 *
 * @author makejava
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_implement_detail")
public class InternalImplementDetail {
    @TableId(type = IdType.AUTO)
    private Integer implementDetailId;
    @ApiModelProperty("实施计划主表id")
    private Integer implementId;
    @ApiModelProperty("时间")
    private String implement;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("责任人")
    private String responsible;
    @ApiModelProperty("审核员")
    private String auditor;
    @ApiModelProperty("审核内容")
    private String reviewContent;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    // å¯¼å‡ºä½¿ç”¨
    @TableField(select = false, exist = false)
    private Integer index;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeeting.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.yuanchu.mom.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.Data;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * å†…审会议表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
@Data
@TableName("cnas_internal_meeting")
@ApiModel(value = "InternalMeeting对象", description = "内审会议表")
public class InternalMeeting {
    @TableId(value = "meeting_id", type = IdType.AUTO)
    private Integer meetingId;
    @ApiModelProperty("时间")
    private String meetingDate;
    @ApiModelProperty("主持人")
    private String compere;
    @ApiModelProperty("地点")
    private String place;
    @ApiModelProperty("会议主题")
    private String subject;
    @ApiModelProperty("参加人员")
    private String participant;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeetingDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.yuanchu.mom.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.Data;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * å†…审会议详情表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
@Data
@TableName("cnas_internal_meeting_detail")
@ApiModel(value = "InternalMeetingDetail对象", description = "内审会议详情表")
public class InternalMeetingDetail {
    @TableId(value = "meeting_detail_id", type = IdType.AUTO)
    private Integer meetingDetailId;
    @ApiModelProperty("会议主表id")
    private Integer meetingId;
    @ApiModelProperty("参加人员id")
    private Integer userId;
    @ApiModelProperty("参加人员")
    private String userName;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.yuanchu.mom.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.Data;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * å†…审年度计划
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Data
@TableName("cnas_internal_plan")
@ApiModel(value = "InternalPlan对象", description = "内审年度计划")
public class InternalPlan {
    @TableId(value = "plan_id", type = IdType.AUTO)
    private Integer planId;
    @ApiModelProperty("内审目的")
    private String purpose;
    @ApiModelProperty("内生范围")
    private String scope;
    @ApiModelProperty("内审依据")
    private String basis;
    @ApiModelProperty("组长")
    private String leader;
    @ApiModelProperty("组员")
    private String crew;
    @ApiModelProperty("编制人id")
    private Integer writeUserId;
    @ApiModelProperty("编制人")
    private String writeUserName;
    @ApiModelProperty("编制时间")
    private LocalDateTime writeTime;
    @ApiModelProperty("审核人id")
    private Integer examineUserId;
    @ApiModelProperty("审核人")
    private String examineUserName;
    @ApiModelProperty("审核时间")
    private LocalDateTime examineTime;
    @ApiModelProperty("审核状态,0 ä¸é€šè¿‡, 1 é€šè¿‡")
    private Integer examineStatus;
    @ApiModelProperty("审核信息")
    private String examineRemark;
    @ApiModelProperty("批准人id")
    private Integer ratifyUserId;
    @ApiModelProperty("批准人")
    private String ratifyUserName;
    @ApiModelProperty("批准时间")
    private LocalDateTime ratifyTime;
    @ApiModelProperty("批准状态,0 ä¸é€šè¿‡, 1 é€šè¿‡")
    private Integer ratifyStatus;
    @ApiModelProperty("批准信息")
    private String ratifyRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlanDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.yuanchu.mom.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.Data;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * å†…审年度计划详情表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
@Data
@TableName("cnas_internal_plan_detail")
@ApiModel(value = "InternalPlanDetail对象", description = "内审年度计划详情表")
public class InternalPlanDetail {
    @TableId(value = "plan_detail_id", type = IdType.AUTO)
    private Integer planDetailId;
    @ApiModelProperty("内审年度计划id")
    private Integer planId;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("一月")
    private String january;
    @ApiModelProperty("二月")
    private String february;
    @ApiModelProperty("三月")
    private String march;
    @ApiModelProperty("四月")
    private String april;
    @ApiModelProperty("五月")
    private String may;
    @ApiModelProperty("六月")
    private String june;
    @ApiModelProperty("七月")
    private String july;
    @ApiModelProperty("八月")
    private String august;
    @ApiModelProperty("九月")
    private String september;
    @ApiModelProperty("十月")
    private String october;
    @ApiModelProperty("十一月")
    private String november;
    @ApiModelProperty("十二月")
    private String december;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
package com.yuanchu.mom.pojo;
import java.time.LocalDateTime;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Data
@TableName("cnas_internal_report")
public class InternalReport {
    @TableId(type = IdType.AUTO)
    private Integer reportId;
    @ApiModelProperty("审核依据")
    private String purposes;
    @ApiModelProperty("审核依据")
    private String basis;
    @ApiModelProperty("审核日期")
    private String reviewDate;
    @ApiModelProperty("审核方法")
    private String method;
    @ApiModelProperty("审核范围")
    private String scope;
    @ApiModelProperty("审核责任制")
    private String responsible;
    @ApiModelProperty("审核组长")
    private String leader;
    @ApiModelProperty("审核员")
    private String auditor;
    @ApiModelProperty("审核组分工情况")
    private String division;
    @ApiModelProperty("审核概况")
    private String overview;
    @ApiModelProperty("结论性评价")
    private String conclusion;
    @ApiModelProperty("改进建议")
    private String suggest;
    @ApiModelProperty("完成纠正措施所需时间")
    private String actionDate;
    @ApiModelProperty("总体跟进确认人")
    private String followUser;
    @ApiModelProperty("总体跟进确认记录")
    private String followRecord;
    @ApiModelProperty("本报告发放范围")
    private String reportScope;
    @ApiModelProperty("审核人id")
    private Integer examineUserId;
    @ApiModelProperty("审核人")
    private String examineUserName;
    @ApiModelProperty("审核时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime examineTime;
    @ApiModelProperty("审核状态,0 ä¸é€šè¿‡, 1 é€šè¿‡")
    private Integer examineStatus;
    @ApiModelProperty("审核信息")
    private String examineRemark;
    @ApiModelProperty("质量负责人id")
    private Integer qualityUserId;
    @ApiModelProperty("质量负责人")
    private String qualityUserName;
    @ApiModelProperty("质量负责人填写时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime qualityTime;
    @ApiModelProperty("质量负责人状态, 0 ä¸é€šè¿‡, 1通过")
    private Integer qualityStatus;
    @ApiModelProperty("质量负责人意见")
    private String qualityRemark;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageControlPlanList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import 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 2024-11-15 02:58:30
 */
@Getter
@Setter
@TableName("cnas_manage_control_plan_list")
@ApiModel(value = "ManageControlPlanList对象", description = "重大风险因素分析及控制计划清单")
public class ManageControlPlanList implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("作业活动")
    @ExcelProperty("作业活动")
    private String jobActivity;
    @ApiModelProperty("风险因素类别")
    @ExcelProperty("风险因素类别")
    private String category;
    @ApiModelProperty("风险因素描述")
    @ExcelProperty("风险因素描述")
    private String description;
    @ApiModelProperty("可导致的事故")
    @ExcelProperty("可导致的事故")
    private String result;
    @ApiModelProperty("是否不可承受风险")
    @ExcelProperty("是否不可承受风险")
    private String intolerable;
    @ApiModelProperty("控制计划")
    @ExcelProperty("控制计划")
    private String plan;
    @ApiModelProperty("编制id")
    private Integer editor;
    @ApiModelProperty("日期")
    private LocalDateTime editorDate;
    @ApiModelProperty("审批id")
    private Integer approval;
    @ApiModelProperty("日期")
    private LocalDateTime approvalDate;
    @ApiModelProperty("批准id")
    private Integer approve;
    @ApiModelProperty("批准日期")
    private LocalDateTime approveDate;
    @ApiModelProperty("批准状态1:通过;2:不通过")
    private Integer approveStatus;
    @ApiModelProperty("审批状态1:通过;2:不通过")
    private Integer approvalStatus;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentAlter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
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.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
@Getter
@Setter
@TableName("cnas_manage_document_alter")
@ApiModel(value = "ManageDocumentAlter对象", description = "文件变更")
@ExcelIgnoreUnannotated
public class ManageDocumentAlter extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请编号")
    @ValueTableShow(1)
    @ExcelProperty("申请编号")
    private String code;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(select = false, exist = false)
    @ValueTableShow(value = 2, name = "申请人")
    @ExcelProperty("申请人")
    private String createUserName;
    @TableField(select = false, exist = false)
    @ApiModelProperty("申请部门")
    private String createUserDepartLims;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("期望变更时间")
    @ValueTableShow(4)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty("期望变更时间")
    private LocalDate expectAlterDate;
    @ApiModelProperty("实际变更时间")
    @ValueTableShow(5)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty("实际变更时间")
    private LocalDate actuallyAlterDate;
    @ApiModelProperty("状态")
    @ValueTableShow(6)
    @ExcelProperty("状态")
    private String state;
    @ApiModelProperty("审批人")
    private Integer checkUser;
    @TableField(select = false, exist = false)
    @ExcelProperty("审批人")
    private String checkUserName;
    @ApiModelProperty("变更说明")
    @ValueTableShow(3)
    @ExcelProperty("变更说明")
    private String alterNote;
    @ApiModelProperty("变更前编号")
    private String alterBeforeCode;
    @ApiModelProperty("变更前名称")
    private String alterBeforeName;
    @ApiModelProperty("变更前版本")
    private String alterBeforeVersion;
    @ApiModelProperty("变更后编号")
    private String alterAfterCode;
    @ApiModelProperty("变更后名称")
    private String alterAfterName;
    @ApiModelProperty("变更后版本")
    private String alterAfterVersion;
    @ApiModelProperty("变更后附件")
    private String alterAfterUrl;
    @ApiModelProperty("变更后附件")
    @TableField(select = false,exist = false)
    private MultipartFile file;
    @ApiModelProperty("前一版本处理方式")
    private String method;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentCancel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
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.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
@Getter
@Setter
@TableName("cnas_manage_document_cancel")
@ApiModel(value = "ManageDocumentCancel对象", description = "文件作废")
@ExcelIgnoreUnannotated
public class ManageDocumentCancel extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("申请人")
    @TableField(select = false,exist = false)
    @ValueTableShow(2)
    @ExcelProperty("申请人")
    private String createUserName;
    @ApiModelProperty("申请人部门")
    @TableField(select = false,exist = false)
    private String createUserDepartLims;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("文件编号")
    @ValueTableShow(1)
    @ExcelProperty("文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    private String name;
    @ApiModelProperty("文件版本")
    private String version;
    @ApiModelProperty("文件状态")
    private String documentState;
    @ApiModelProperty("作废方式")
    private String method;
    @ApiModelProperty("作废说明")
    @ValueTableShow(3)
    @ExcelProperty("作废说明")
    private String cancelNote;
    @ApiModelProperty("审批人")
    private Integer checkUser;
    @ExcelProperty("审批人")
    @TableField(select = false, exist = false)
    private String checkUserName;
    @ApiModelProperty("期望作废时间")
    @ValueTableShow(4)
    @ExcelProperty("期望作废日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expectCancelDate;
    @ApiModelProperty("实际作废日期")
    @ValueTableShow(5)
    @ExcelProperty("实际作废日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate actuallyCancelDate;
    @ApiModelProperty("作废状态")
    @ValueTableShow(6)
    @ExcelProperty("作废状态")
    private String state;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentControlled.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.yuanchu.mom.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.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
/**
 * <p>
 * æ–‡ä»¶å—控
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
@Getter
@Setter
@TableName("cnas_manage_document_controlled")
@ApiModel(value = "ManageDocumentControlled对象", description = "文件受控")
public class ManageDocumentControlled extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("申请文件编号")
    @ValueTableShow(1)
    private String documentCode;
    @ApiModelProperty("文件类别")
    @ValueTableShow(2)
    private String type;
    @ApiModelProperty("文件名称")
    private String name;
    @ApiModelProperty("文件版本")
    private String version;
    @ApiModelProperty("作者")
    private String writer;
    @ApiModelProperty("提交日期")
    @ValueTableShow(5)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate submitDate;
    @ApiModelProperty("说明")
    @ValueTableShow(4)
    private String instructions;
    @ApiModelProperty("申请状态")
    @ValueTableShow(6)
    private String state;
    @ApiModelProperty("附件地址")
    private String url;
    @ApiModelProperty("责任人")
    private Integer dutyUser;
    @TableField(select = false,exist = false)
    @ValueTableShow(value = 5, name = "责任人")
    private String dutyUserName;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ValueTableShow(value = 2, name = "申请人")
    @TableField(select = false, exist = false)
    private String createUserName;
    @ApiModelProperty("申请部门")
    @TableField(select = false, exist = false)
    private String createUserDepartLims;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    @ValueTableShow(value = 3, name = "申请时间")
    @JsonFormat(pattern = "yyyy-MM-dd  HH:mm:ss")
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @TableField(select = false, exist = false)
    private MultipartFile file;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentIssueRecycle.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
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.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.Pattern;
/**
 * <p>
 * æ–‡ä»¶å‘放回收
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
@Getter
@Setter
@TableName("cnas_manage_document_issue_recycle")
@ApiModel(value = "ManageDocumentIssueRecycle对象", description = "文件发放回收")
public class ManageDocumentIssueRecycle extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ValueTableShow(1)
    @ExcelProperty(value = "文件编号")
    private String documentCode;
    @ApiModelProperty("文件名称")
    @ValueTableShow(2)
    @ExcelProperty(value = "文件名称")
    private String name;
    @ApiModelProperty("文件版本")
    @ValueTableShow(3)
    @ExcelProperty(value = "文件版本")
    private String version;
    @ApiModelProperty("状态")
    @ExcelProperty(value = "状态")
    private String state;
    @ApiModelProperty("文件状态")
    @ValueTableShow(4)
    @ExcelProperty(value = "文件状态")
    private String documentState;
    @ApiModelProperty("发放编号")
    @ValueTableShow(5)
    @ExcelProperty(value = "发放编号")
    private String issueCode;
    @ApiModelProperty("发放人")
    private Integer issueUser;
    @ApiModelProperty("发放日期")
    @ValueTableShow(7)
    @ExcelProperty(value = "发放日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate issueDate;
    @ApiModelProperty("发放说明")
    private String issueNote;
    @ApiModelProperty("接收人")
    private Integer receiveUser;
    @ApiModelProperty("接收时间")
    private LocalDate receiveDate;
    @ApiModelProperty("回收编号")
    private String recycleCode;
    @ApiModelProperty("回收人")
    private Integer recycleUser;
    @ApiModelProperty("回收日期")
    @ValueTableShow(9)
    @ExcelProperty(value = "回收日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate recycleDate;
    @ApiModelProperty("回收说明")
    private String recycleNote;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("附件")
    private String url;
    @TableField(select = false,exist = false)
    private MultipartFile file;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
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.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
@Getter
@Setter
@TableName("cnas_manage_document_list")
@ApiModel(value = "ManageDocumentList对象", description = "文件清单")
@ExcelIgnoreUnannotated
public class ManageDocumentList extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ValueTableShow(1)
    @ExcelProperty(value = "文件编号")
    private String documentCode;
    @ApiModelProperty("类别")
    @ValueTableShow(2)
    @ExcelProperty(value = "类别")
    private String type;
    @ApiModelProperty("名称")
    @ValueTableShow(3)
    @ExcelProperty(value = "名称")
    private String name;
    @ApiModelProperty("文件版本")
    @ValueTableShow(4)
    @ExcelProperty(value = "文件版本")
    private String version;
    @ApiModelProperty("作者")
    @ValueTableShow(5)
    @ExcelProperty(value = "作者")
    private String writer;
    @ApiModelProperty("生效日期")
    @ValueTableShow(6)
    @ExcelProperty(value = "生效日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveDate;
    @ApiModelProperty("文件状态")
    @ValueTableShow(7)
    @ExcelProperty(value = "文件状态")
    private String state;
    @ApiModelProperty("附件地址")
    private String url;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeeting.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.yuanchu.mom.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 2024-11-11 09:33:47
 */
@Getter
@Setter
@TableName("cnas_manage_meeting")
@ApiModel(value = "ManageMeeting对象", description = "")
public class ManageMeeting implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("会议时间")
    private LocalDateTime meetingTime;
    @ApiModelProperty("会议地点")
    private String place;
    @ApiModelProperty("主持人")
    private String compere;
    @ApiModelProperty("会议内容摘要")
    private String content;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeetingParticipants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.yuanchu.mom.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 2024-11-11 09:34:27
 */
@Getter
@Setter
@TableName("cnas_manage_meeting_participants")
@ApiModel(value = "ManageMeetingParticipants对象", description = "")
public class ManageMeetingParticipants implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("参会人员")
    private Integer participants;
    @TableField(select = false,exist = false)
    private String userName;
    @ApiModelProperty("部门")
    private String department;
    @ApiModelProperty("会议id")
    private Integer meetingId;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordAudit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
package com.yuanchu.mom.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.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½•
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
@Getter
@Setter
@TableName("cnas_manage_record_audit")
@ApiModel(value = "ManageRecordAudit对象", description = "文件修订申请审批记录")
public class ManageRecordAudit extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ValueTableShow(1)
    private String documentCode;
    @ApiModelProperty("文件名称")
    private String documentName;
    @ApiModelProperty("章节号")
    @ValueTableShow(2)
    private String capter;
    @ApiModelProperty("页码")
    @ValueTableShow(3)
    private String pages;
    @ApiModelProperty("修订次数")
    @ValueTableShow(4)
    private Integer number;
    @ApiModelProperty("修改前版本号")
    @ValueTableShow(5)
    private String beforeVersion;
    @ApiModelProperty("修改后版本号")
    @ValueTableShow(6)
    private String afterVersion;
    @ApiModelProperty("修改内容")
    @ValueTableShow(7)
    private String alterThing;
    @ApiModelProperty("修订人")
    private Integer alterUser;
    @TableField(select = false, exist = false)
    @ValueTableShow(value = 8, name = "修订人")
    private String alterUserName;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false, exist = false)
    @ValueTableShow(value = 9, name = "批准人")
    private String ratifyUserName;
    //批准人签名
    @TableField(select = false, exist = false)
    private String ratifyUserUrl;
    @ApiModelProperty("日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ValueTableShow(10)
    private LocalDate date;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    //申请人
    @TableField(select = false, exist = false)
    private String createUserName;
    //申请部门
    @TableField(select = false, exist = false)
    private String createUserDepart;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("变化原因")
    private String reason;
    @ApiModelProperty("原分发部门")
    private String beforeDepart;
    @ApiModelProperty("修订后分发部门")
    private String afterDepart;
    @ApiModelProperty("申请部门主管意见")
    private String applicant;
    @ApiModelProperty("原制定部门意见")
    private String formulation;
    @ApiModelProperty("原审核部门意见")
    private String audit;
    @ApiModelProperty("修订作废")
    private String method;
    @ApiModelProperty("原附件")
    private String beforeUrl;
    @ApiModelProperty("修订后附件")
    private String afterUrl;
    @TableField(select = false, exist = false)
    private MultipartFile file;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCancel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.yuanchu.mom.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.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
@Getter
@Setter
@TableName("cnas_manage_record_cancel")
@ApiModel(value = "ManageRecordCancel对象", description = "作废文件销魂记录")
public class ManageRecordCancel extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ValueTableShow(1)
    private String documentCode;
    @ApiModelProperty("文件名称")
    @ValueTableShow(2)
    private String documentName;
    @ApiModelProperty("数量")
    @ValueTableShow(3)
    private Integer qty;
    @ApiModelProperty("销毁原因")
    @ValueTableShow(4)
    private String reason;
    @ApiModelProperty("申请人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(select = false,exist = false)
    @ValueTableShow(value = 5,name = "申请人")
    private String createUserName;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ValueTableShow(6)
    private LocalDate createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @TableField(select = false,exist = false)
    @ValueTableShow(value = 7,name = "批准人")
    private String ratifyUserName;
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ValueTableShow(8)
    private LocalDate ratifyTime;
    @ApiModelProperty("备注")
    @ValueTableShow(9)
    private String remark;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCheck.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.yuanchu.mom.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 java.io.Serializable;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录)
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
@Getter
@Setter
@TableName("cnas_manage_record_check")
@ApiModel(value = "ManageRecordCheck对象", description = "文件审批记录(含修订后再次审批记录)")
public class ManageRecordCheck extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件名称")
    @ValueTableShow(1)
    private String documentName;
    @ApiModelProperty("文件编号")
    @ValueTableShow(2)
    private String documentCode;
    @ApiModelProperty("版/次")
    @ValueTableShow(3)
    private String documentVersion;
    @ApiModelProperty("编制人")
    @ValueTableShow(value = 4,name = "编制")
    private Integer writeUser;
    @TableField(select = false,exist = false)
    private String writeUserName;
    @ApiModelProperty("审核人")
    @ValueTableShow(value = 5,name = "审核")
    private Integer checkUser;
    @TableField(select = false,exist = false)
    private String checkUserName;
    @ApiModelProperty("审核状态")
    private String checkState;
    @ApiModelProperty("批准人")
    @ValueTableShow(value = 6,name = "批准")
    private Integer ratifyUser;
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    @ApiModelProperty("批准状态")
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @ValueTableShow(7)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyDate;
    @ApiModelProperty("备注")
    @ValueTableShow(8)
    private String remark;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervals.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.yuanchu.mom.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 com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
@Getter
@Setter
@TableName("cnas_manage_record_intervals")
@ApiModel(value = "ManageRecordIntervals对象", description = "文件定期审查记录")
public class ManageRecordIntervals extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件名称")
    @ValueTableShow(1)
    private String documentName;
    @ApiModelProperty("文件编号")
    @ValueTableShow(2)
    private String documentCode;
    @ApiModelProperty("版本号")
    @ValueTableShow(3)
    private String documentVersion;
    @ApiModelProperty("修订号")
    @ValueTableShow(4)
    private String revision;
    @ApiModelProperty("适宜性")
    @ValueTableShow(5)
    private String suitability;
    @ApiModelProperty("备注")
    @ValueTableShow(6)
    private String remark;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("外键关联,外来文件确认历史记录id")
    private Integer recordIntervalsTotalId;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervalsTotal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.yuanchu.mom.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 java.io.Serializable;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
@Getter
@Setter
@TableName("cnas_manage_record_intervals_total")
@ApiModel(value = "ManageRecordIntervalsTotal对象", description = "文件定期审查记录总历史记录表")
public class ManageRecordIntervalsTotal extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @ValueTableShow(value = 5,name = "批准人")
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    @ApiModelProperty("批准结果")
    @ValueTableShow(7)
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @ValueTableShow(6)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyDate;
    @ApiModelProperty("批准人签名")
    private String ratifyUrl;
    @ApiModelProperty("拟制人")
    private Integer submitUser;
    @ValueTableShow(value = 3,name = "拟制人")
    @TableField(select = false,exist = false)
    private String submitUserName;
    @ApiModelProperty("拟制人签名")
    private String submitUrl;
    @ApiModelProperty("拟制日期")
    @ValueTableShow(4)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate submitDate;
    @ApiModelProperty("年份")
    @ValueTableShow(1)
    private String year;
    @ApiModelProperty("总数量")
    @ValueTableShow(2)
    private Integer totalNum;
    @ApiModelProperty("生成申请表的路径")
    private String url;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIssueRecycle.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.yuanchu.mom.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 java.io.Serializable;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
@Getter
@Setter
@TableName("cnas_manage_record_issue_recycle")
@ApiModel(value = "ManageRecordIssueRecycle对象", description = "所有文件(内、外部文件)的发放与回收记录")
public class ManageRecordIssueRecycle extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件编号")
    @ValueTableShow(1)
    private String documentCode;
    @ApiModelProperty("文件名称")
    @ValueTableShow(2)
    private String documentName;
    @ApiModelProperty("版号")
    @ValueTableShow(3)
    private String documentVersion;
    @ApiModelProperty("份数")
    @ValueTableShow(4)
    private String pages;
    @ApiModelProperty("文件类别")
    @ValueTableShow(5)
    private String documentType;
    @ApiModelProperty("分发号")
    @ValueTableShow(6)
    private String number;
    @ApiModelProperty("接收部门")
    @ValueTableShow(7)
    private String departLims;
    @ApiModelProperty("接受人")
    private Integer receiveUser;
    @TableField(select = false,exist = false)
    @ValueTableShow(value = 6,name = "接受人")
    private String receiveUserName;
    @ApiModelProperty("接受日期")
    @ValueTableShow(8)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate receiveDate;
    @ApiModelProperty("签收人")
    private Integer signedUser;
    @TableField(select = false,exist = false)
    @ValueTableShow(value = 9,name = "签收人")
    private String signedUserName;
    @ApiModelProperty("签收日期")
    @ValueTableShow(10)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate signedDate;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordTotal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.yuanchu.mom.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 java.io.Serializable;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
@Getter
@Setter
@TableName("cnas_manage_record_total")
@ApiModel(value = "ManageRecordTotal对象", description = "外来文件确认记录总历史记录表")
public class ManageRecordTotal extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("批准人")
    private Integer ratifyUser;
    @ValueTableShow(value = 5,name = "批准人")
    @TableField(select = false,exist = false)
    private String ratifyUserName;
    @ApiModelProperty("批准结果")
    @ValueTableShow(7)
    private String ratifyState;
    @ApiModelProperty("批准日期")
    @ValueTableShow(6)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate ratifyDate;
    @ApiModelProperty("批准人签名")
    private String ratifyUrl;
    @ApiModelProperty("拟制人")
    private Integer submitUser;
    @ValueTableShow(value = 3,name = "拟制人")
    @TableField(select = false,exist = false)
    private String submitUserName;
    @ApiModelProperty("拟制人签名")
    private String submitUrl;
    @ApiModelProperty("拟制日期")
    @ValueTableShow(4)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate submitDate;
    @ApiModelProperty("年份")
    @ValueTableShow(1)
    private String year;
    @ApiModelProperty("总数量")
    @ValueTableShow(2)
    private Integer totalNum;
    @ApiModelProperty("生成申请表的路径")
    private String url;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordVerify.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * å¤–来文件确认记录
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
@Getter
@Setter
@TableName("cnas_manage_record_verify")
@ApiModel(value = "ManageRecordVerify对象", description = "外来文件确认记录")
public class ManageRecordVerify extends OrderBy implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("外来文件名称")
    @ValueTableShow(1)
    private String documentName;
    @ApiModelProperty("文件编号")
    @ValueTableShow(2)
    private String documentCode;
    @ApiModelProperty("标准规范名称")
    @ValueTableShow(3)
    private String standardName;
    @ApiModelProperty("标准号")
    @ValueTableShow(4)
    private String standardCode;
    @ApiModelProperty("生效日期")
    @ValueTableShow(5)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveDate;
    @ApiModelProperty("作废日期")
    @ValueTableShow(6)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate cancelDate;
    @ApiModelProperty("备注")
    @ValueTableShow(7)
    private String note;
    @ApiModelProperty("外键关联,外来文件确认历史记录id")
    private Integer manageRecordTotalId;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgram.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.yuanchu.mom.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 2024-11-09 03:05:42
 */
@Getter
@Setter
@TableName("cnas_manage_review_program")
@ApiModel(value = "ManageReviewProgram对象", description = "")
public class ManageReviewProgram implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("评审时间")
    private LocalDateTime reviewTime;
    @ApiModelProperty("评审地点")
    private String judgingLocation;
    @ApiModelProperty("评审目的")
    private String judgingPurpose;
    @ApiModelProperty("评审方式")
    private String judgingMethod;
    @ApiModelProperty("参加人员")
    private String participants;
    @ApiModelProperty("评审范围")
    private String judgingScope;
    @ApiModelProperty("评审依据")
    private String judgingBasis;
    @ApiModelProperty("评审主要内容")
    private String mainContext;
    @ApiModelProperty("准备工作要求")
    private String preparationRequirements;
    @ApiModelProperty("编制")
    private String editor;
    @ApiModelProperty("编制日期")
    private LocalDateTime editorDate;
    @ApiModelProperty("批准")
    private String approve;
    @ApiModelProperty("批准日期")
    private LocalDateTime approveDate;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgramFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.yuanchu.mom.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 2024-11-09 04:15:47
 */
@Getter
@Setter
@TableName("cnas_manage_review_program_file")
@ApiModel(value = "ManageReviewProgramFile对象", description = "")
public class ManageReviewProgramFile implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("文件名称")
    private String fileName;
    @ApiModelProperty("计划表ID")
    private Integer reviewId;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    private String url;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.yuanchu.mom.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 2024-11-12 04:44:39
 */
@Getter
@Setter
@TableName("cnas_manage_review_report")
@ApiModel(value = "ManageReviewReport对象", description = "管理评审报告")
public class ManageReviewReport implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("目的")
    private String objective;
    @ApiModelProperty("地点")
    private String place;
    @ApiModelProperty("主持人")
    private String compere;
    @ApiModelProperty("记录人")
    private String recordPeople;
    @ApiModelProperty("日期")
    private LocalDateTime date;
    @ApiModelProperty("页次")
    private Integer page;
    @ApiModelProperty("评审方式")
    private String judgingMethod;
    @ApiModelProperty("评审依据")
    private String reviewBasis;
    @ApiModelProperty("出席人员")
    private String attendess;
    @ApiModelProperty("评审输入情况")
    private String reviewInputs;
    @ApiModelProperty("评审过程概况")
    private String reviewProcess;
    @ApiModelProperty("主要议题概述")
    private String mainTopic;
    @ApiModelProperty("事项")
    private String matters;
    @ApiModelProperty("负责人")
    private String head;
    @ApiModelProperty("完成日期")
    private LocalDateTime completionDate;
    @ApiModelProperty("跟踪确认人")
    private String trackingConfirmed;
    @ApiModelProperty("跟踪情况确认记录")
    private String follerUp;
    @ApiModelProperty("体系评价")
    private String overallEvaluation;
    @ApiModelProperty("审核")
    private String audit;
    @ApiModelProperty("批准")
    private String approval;
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRiskAssessmentResults.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import 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 2024-11-15 02:58:51
 */
@Getter
@Setter
@TableName("cnas_manage_risk_assessment_results")
@ApiModel(value = "ManageRiskAssessmentResults对象", description = "危险因素辨识与风险评价结果一览表")
public class ManageRiskAssessmentResults implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    @ExcelIgnore
    private Integer id;
    @ApiModelProperty("地点/活动")
    @ExcelProperty(value = "地点/活动", index = 0)
    private String venue;
    @ApiModelProperty("危险因素")
    @ExcelProperty(value = "危险因素", index = 1)
    private String hazard;
    @ApiModelProperty("可能导致的事故")
    @ExcelProperty(value = "可能导致的事故", index = 2)
    private String accidents;
    @ApiModelProperty("对人可能造成的危害")
    @ExcelProperty(value = "对人可能造成的危害", index = 3)
    private String injury;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "L"})
    private String riskL;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "E"})
    private String riskE;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "C"})
    private String riskC;
    @ApiModelProperty("风险评价")
    @ExcelProperty(value = {"风险评价", "D"})
    private String riskD;
    @ApiModelProperty("风险等级")
    @ExcelProperty(value = "风险等级", index = 8)
    private String level;
    @ApiModelProperty("评价结论")
    @ExcelProperty(value = "评价结论", index = 9)
    private String conclusion;
    @ApiModelProperty("控制措施")
    @ExcelProperty(value = "控制措施", index = 10)
    private String measures;
    @ApiModelProperty("编制id")
    private Integer editor;
    @ApiModelProperty("编制日期")
    private LocalDateTime editorDate;
    @ApiModelProperty("审批人id")
    private Integer approval;
    @ApiModelProperty("审批日期")
    private LocalDateTime approvalDate;
    @ApiModelProperty("批准人id")
    private Integer approve;
    @ApiModelProperty("批准日期")
    private LocalDateTime approveDate;
    @ApiModelProperty("批准状态1:通过;2:不通过")
    private Integer approveStatus;
    @ApiModelProperty("审批状态1:通过;2:不通过")
    private Integer approvalStatus;
}
cnas-manage/src/main/java/com/yuanchu/mom/schedule/ManageRecordTotalSchedule.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.yuanchu.mom.schedule;
import com.yuanchu.mom.mapper.ManageRecordIntervalsTotalMapper;
import com.yuanchu.mom.pojo.ManageRecordIntervalsTotal;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.service.ManageRecordIntervalsTotalService;
import com.yuanchu.mom.service.ManageRecordTotalService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@Component
public class ManageRecordTotalSchedule {
    @Resource
    private ManageRecordTotalService manageRecordTotalService;
    @Resource
    private ManageRecordIntervalsTotalService manageRecordIntervalsTotalService;
    @Scheduled(cron = "0 0 2 1 1 ?") //每年1月1号2点
    public void manageRecordTotal() {
        ManageRecordTotal manageRecordTotal = new ManageRecordTotal();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        Calendar calendar = Calendar.getInstance();
        String formattedDate = sdf.format(calendar.getTime());
        manageRecordTotal.setYear(formattedDate);
        manageRecordTotalService.save(manageRecordTotal);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = new ManageRecordIntervalsTotal();
        manageRecordIntervalsTotal.setYear(formattedDate);
        manageRecordIntervalsTotalService.save(manageRecordIntervalsTotal);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ClientSatisfactionService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.ClientSatisfaction;
import com.yuanchu.mom.pojo.ClientSatisfactionAnalyseFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
public interface ClientSatisfactionService extends IService<ClientSatisfaction> {
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     * @param page
     * @param clientSatisfaction
     * @return
     */
    IPage<ClientSatisfaction> pageClientSatisfaction(Page page, ClientSatisfaction clientSatisfaction);
    /**
     * æ–°å¢žå®¢æˆ·åˆ†æžé™„ä»¶
     * @param file
     * @return
     */
    boolean uploadAnalyseFile(MultipartFile file);
    /**
     * æŸ¥è¯¢å®¢æˆ·åˆ†æžé™„ä»¶
     * @param page
     * @param analyseFile
     * @return
     */
    IPage<ClientSatisfactionAnalyseFile> pageAnalyseFile(Page page, ClientSatisfactionAnalyseFile analyseFile);
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     *
     * @param clientSatisfactionId
     * @param response
     */
    void exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response);
    /**
     * ç¡®è®¤å®¢æˆ·æ»¡æ„åº¦
     *
     * @param clientSatisfaction è¦ä¿®æ”¹å®¢æˆ·æ»¡æ„åº¦çš„状态对象
     * @param userId             ä¿®æ”¹äººid
     */
    void confirmClientSatisfaction(ClientSatisfaction clientSatisfaction, Integer userId);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.InternalCheckDetail;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalCheckDetailService extends IService<InternalCheckDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.InternalCheckDto;
import com.yuanchu.mom.pojo.InternalCheck;
import com.yuanchu.mom.pojo.InternalCheck;
import javax.servlet.http.HttpServletResponse;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalCheckService extends IService<InternalCheck> {
    /**
     * å†…审检查分页查询
     * @param page
     * @param internalCheck
     * @return
     */
    IPage<InternalCheckDto> pageInternalCheck(Page page, InternalCheck internalCheck);
    /**
     * å†…审检查新增
     * @param internalCheck
     * @return
     */
    boolean addInternalCheck(InternalCheckDto internalCheck);
    /**
     * å†…审检查修改
     * @param internalCheck
     * @return
     */
    boolean updateInternalCheck(InternalCheckDto internalCheck);
    /**
     * å†…审检查删除
     * @param checkId
     * @return
     */
    boolean delInternalCheck(Integer checkId);
    /**
     * å†…审检查查看详情
     * @param checkId
     * @return
     */
    InternalCheckDto getInternalCheckOne(Integer checkId);
    /**
     * å†…审检查批准
     * @param internalCheck
     * @return
     */
    boolean ratifyInternalCheck(InternalCheckDto internalCheck);
    /**
     * å¯¼å‡ºå†…审检查
     * @param checkId
     * @param response
     */
    void exportInternalCheck(Integer checkId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.InternalCorrectFile;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * å†…审管理纠正措施附件表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
public interface InternalCorrectFileService extends IService<InternalCorrectFile> {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.InternalCorrect;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.InternalCorrectFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * <p>
 * å†…审管理纠正处理表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
public interface InternalCorrectService extends IService<InternalCorrect> {
    /**
     * æ–°å¢žå†…审管理纠正处理信息
     * @param InternalAccording
     * @return
     */
    boolean addInternalCorrect(InternalCorrect InternalAccording);
    /**
     * æŸ¥è¯¢å†…审管理纠正处理
     * @param correctId
     * @return
     */
    InternalCorrect getInternalCorrect(Integer correctId);
    /**
     * æŸ¥è¯¢å†…审管理纠正措施列表
     * @param page
     * @param detailsCorrect
     * @return
     */
    IPage<InternalCorrect> pageInternalCorrect(Page page, InternalCorrect detailsCorrect);
    /**
     * æ–°å¢žå†…审管理纠正措施附件
     * @param correctId
     * @param file
     * @return
     */
    boolean uploadInternalCorrectFile(Integer correctId, MultipartFile file);
    /**
     * æŸ¥è¯¢å†…审管理纠正措施附件
     * @param correctId
     * @return
     */
    List<InternalCorrectFile> getInternalCorrectFileList(Integer correctId);
    /**
     * å¯¼å‡ºçº æ­£æŽªæ–½
     * @param correctId
     * @param response
     */
    void exportInternalCorrect(Integer correctId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.InternalImplementDetail;
/**
 * å†…审实施计划详情
 *
 * @author makejava
 * @since 2024-11-11
 */
public interface InternalImplementDetailService extends IService<InternalImplementDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.InternalImplementDto;
import com.yuanchu.mom.pojo.ClientSatisfaction;
import com.yuanchu.mom.pojo.InternalImplement;
import javax.servlet.http.HttpServletResponse;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalImplementService extends IService<InternalImplement> {
    /**
     * å†…审实施计划分页查询
     * @param page
     * @param internalImplement
     * @return
     */
    IPage<InternalImplementDto> pageInternalImplement(Page page, InternalImplement internalImplement);
    /**
     * å†…审实施计划新增
     * @param internalImplement
     * @return
     */
    boolean addInternalImplement(InternalImplementDto internalImplement);
    /**
     * å†…审实施计划修改
     * @param internalImplement
     * @return
     */
    boolean updateInternalImplement(InternalImplementDto internalImplement);
    /**
     * å†…审实施计划删除
     * @param implementId
     * @return
     */
    boolean delInternalImplement(Integer implementId);
    /**
     * å†…审实施计划查看详情
     * @param implementId
     * @return
     */
    InternalImplementDto getInternalImplementOne(Integer implementId);
    /**
     * å†…审实施计划批准
     * @param internalImplement
     * @return
     */
    boolean ratifyInternalImplement(InternalImplementDto internalImplement);
    /**
     * å¯¼å‡ºå†…审实施计划
     * @param implementId
     * @param response
     */
    void exportInternalImplement(Integer implementId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.InternalMeetingDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * å†…审会议详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
public interface InternalMeetingDetailService extends IService<InternalMeetingDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.InternalMeetingDto;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * å†…审会议表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
public interface InternalMeetingService extends IService<InternalMeeting> {
    /**
     * å†…审会议分页查询
     * @param page
     * @param internalMeeting
     * @return
     */
    IPage<InternalMeetingDto> pageInternalMeeting(Page page, InternalMeeting internalMeeting);
    /**
     * å†…审会议新增
     * @param internalMeeting
     * @return
     */
    boolean addInternalMeeting(InternalMeetingDto internalMeeting);
    /**
     * å†…审会议修改
     * @param internalMeeting
     * @return
     */
    boolean updateInternalMeeting(InternalMeetingDto internalMeeting);
    /**
     * å†…审会议删除
     * @param meetingId
     * @return
     */
    boolean delInternalMeeting(Integer meetingId);
    /**
     * å†…审会议查看详情
     * @param meetingId
     * @return
     */
    InternalMeetingDto getInternalMeetingOne(Integer meetingId);
    /**
     * å¯¼å‡ºå†…审会议
     * @param meetingId
     * @param response
     */
    void exportInternalMeeting(Integer meetingId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.InternalPlanDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * å†…审年度计划详情表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
public interface InternalPlanDetailService extends IService<InternalPlanDetail> {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.InternalPlanDto;
import com.yuanchu.mom.pojo.InternalPlan;
import com.yuanchu.mom.pojo.InternalPlan;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * å†…审年度计划 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
public interface InternalPlanService extends IService<InternalPlan> {
    /**
     * å†…审年度计划分页查询
     * @param page
     * @param internalPlan
     * @return
     */
    IPage<InternalPlanDto> pageInternalPlan(Page page, InternalPlan internalPlan);
    /**
     * å†…审年度计划新增
     * @param internalPlan
     * @return
     */
    boolean addInternalPlan(InternalPlanDto internalPlan);
    /**
     * å†…审年度计划修改
     * @param internalPlan
     * @return
     */
    boolean updateInternalPlan(InternalPlanDto internalPlan);
    /**
     * å†…审年度计划删除
     * @param planId
     * @return
     */
    boolean delInternalPlan(Integer planId);
    /**
     * å†…审年度计划查看详情
     * @param planId
     * @return
     */
    InternalPlanDto getInternalPlanOne(Integer planId);
    /**
     * å†…审年度计划审核
     * @param internalPlanDto
     * @return
     */
    boolean examineInternalPlan(InternalPlanDto internalPlanDto);
    /**
     * å†…审年度计划批准
     * @param internalPlanDto
     * @return
     */
    boolean ratifyInternalPlan(InternalPlanDto internalPlanDto);
    /**
     * å¯¼å‡ºå†…审年度计划
     * @param planId
     * @param response
     */
    void exportInternalImplement(Integer planId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.InternalReport;
import javax.servlet.http.HttpServletResponse;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
public interface InternalReportService extends IService<InternalReport> {
    /**
     * å†…审报告分页查询
     * @param page
     * @param internalReport
     * @return
     */
    IPage<InternalReport> pageInternalReport(Page page, InternalReport internalReport);
    /**
     * å†…审报告审核
     * @param internalReport
     * @return
     */
    boolean ratifyInternalCheck(InternalReport internalReport);
    /**
     * è´¨é‡éƒ¨ç»ç†å¡«å†™
     * @param internalReport
     * @return
     */
    boolean qualityInternalReport(InternalReport internalReport);
    /**
     * å¯¼å‡ºå†…审报告
     * @param reportId
     * @param response
     */
    void exportInternalReport(Integer reportId, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageControlPlanListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageControlPlanList;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.vo.ManageControlPlanListVo;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
public interface ManageControlPlanListService extends IService<ManageControlPlanList> {
    IPage<ManageControlPlanListVo> getPageList(Page page);
    void exportPersonTraining(HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentAlterService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageDocumentAlter;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
public interface ManageDocumentAlterService extends IService<ManageDocumentAlter> {
    Map<String,Object> pageManageDocumentAlter(Page page, ManageDocumentAlter manageDocumentAlter);
    ManageDocumentAlter getManageDocumentAlter(Integer id);
    int addManageDocumentAlter(ManageDocumentAlter manageDocumentAlter);
    int doManageDocumentAlter(ManageDocumentAlter manageDocumentAlter);
    int checkManageDocumentAlter(ManageDocumentAlter manageDocumentAlter);
    void checkManageDocumentAlterPdf(Long id, HttpServletResponse response) throws Exception;
    void exportManageDocumentAlter(ManageDocumentAlter manageDocumentAlter, HttpServletResponse response) throws Exception;
    int delManageDocumentAlter(Integer id);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentCancelService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageDocumentCancel;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
public interface ManageDocumentCancelService extends IService<ManageDocumentCancel> {
    Map<String,Object> pageManageDocumentCancel(Page page, ManageDocumentCancel manageDocumentCancel);
    int addManageDocumentCancel(ManageDocumentCancel manageDocumentCancel);
    int checkManageDocumentCancel(Integer id, String state);
    ManageDocumentCancel getManageDocumentCancel(Integer id);
    void exportManageDocumentCancel(ManageDocumentCancel manageDocumentCancel, HttpServletResponse response) throws Exception;
    int delManageDocumentCancel(Integer id);
    int doManageDocumentCancel(ManageDocumentCancel manageDocumentCancel);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentControlledService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å—控 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
public interface ManageDocumentControlledService extends IService<ManageDocumentControlled> {
    Map<String,Object> pageManageDocumentControlled(Page page, ManageDocumentControlled manageDocumentControlled);
    int addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled);
    int delManageDocumentControlled(Long id);
    ManageDocumentControlled getManageDocumentControlled(Long id);
    int doManageDocumentControlled(ManageDocumentControlled manageDocumentControlled);
    int checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled);
    void checkManageDocumentControlledPdf(Long id, HttpServletResponse response) throws Exception ;
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentIssueRecycleService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.ManageDocumentIssueRecycleDto;
import com.yuanchu.mom.pojo.ManageDocumentIssueRecycle;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
public interface ManageDocumentIssueRecycleService extends IService<ManageDocumentIssueRecycle> {
    Map<String,Object> pageManageDocumentIssueRecycle(Page page, ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto);
    ManageDocumentIssueRecycleDto getManageDocumentIssueRecycle(Long id);
    void exportManageDocumentIssueRecycle(ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto, HttpServletResponse response) throws Exception;
    int checkManageDocumentIssueRecycle(Integer id, String documentState);
    int addManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle);
    int doManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle);
    int delManageDocumentIssueRecycle(Long id);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageDocumentList;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
public interface ManageDocumentListService extends IService<ManageDocumentList> {
    Map<String,Object> pageManageDocumentList(Page page, ManageDocumentList manageDocumentList);
    int uploadFile(Integer id, MultipartFile file);
    void importExcel(List<ManageDocumentList> list);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingParticipantsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.vo.MeetingParticipantsDetailsVo;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
public interface ManageMeetingParticipantsService extends IService<ManageMeetingParticipants> {
    MeetingParticipantsDetailsVo getParticipants(Integer id);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.ManageMeetingDto;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
public interface ManageMeetingService extends IService<ManageMeeting> {
    IPage<ManageMeetingDto> page(Page page, String startTime, String endTime, String place);
    void addMeeting(ManageMeetingDto dto);
    int modifyMeeting(ManageMeetingDto manageMeetingDto);
    void exportMeeting(Integer id, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordAuditService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordAudit;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
public interface ManageRecordAuditService extends IService<ManageRecordAudit> {
    Map<String,Object> pageManageRecordAudit(Page page, ManageRecordAudit manageRecordAudit);
    int addManageRecordAudit(ManageRecordAudit manageRecordAudit);
    int doManageRecordAudit(ManageRecordAudit manageRecordAudit);
    int ratifyManageRecordAudit(Integer id);
    String exportOutManageRecordAudit(ManageRecordAudit manageRecordAudit, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCancelService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordCancel;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
public interface ManageRecordCancelService extends IService<ManageRecordCancel> {
    Map<String,Object> pageManageRecordCancel(Page page, ManageRecordCancel manageRecordCancel);
    int ratifyManageRecordCancel(Integer id, String ratifyState);
    String exportOutManageRecordCancel(ManageRecordCancel manageRecordCancel, HttpServletResponse response);
    int exportInManageRecordCancel(MultipartFile file);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCheckService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordCheck;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
public interface ManageRecordCheckService extends IService<ManageRecordCheck> {
    Map<String,Object> pageManageRecordCheck(Page page, ManageRecordCheck manageRecordCheck);
    int checkManageRecordCheck(Integer id, String checkState);
    int ratifyManageRecordCheck(Integer id, String ratifyState);
    String exportOutManageRecordCheck(ManageRecordCheck manageRecordCheck, HttpServletResponse response);
    int exportInManageRecordCheck(MultipartFile file);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordIntervals;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
public interface ManageRecordIntervalsService extends IService<ManageRecordIntervals> {
    Map<String,Object> pageManageRecordIntervals(Page page, ManageRecordIntervals manageRecordIntervals);
    String exportOutManageRecordIntervals(ManageRecordIntervals manageRecordIntervals, HttpServletResponse response);
    int exportInManageRecordIntervals(MultipartFile file);
    int addManageRecordIntervals(ManageRecordIntervals manageRecordIntervals);
    int delManageRecordIntervals(Integer id);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsTotalService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordIntervalsTotal;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
public interface ManageRecordIntervalsTotalService extends IService<ManageRecordIntervalsTotal> {
    Map<String,Object> pageManageRecordIntervalsTotal(Page page, ManageRecordIntervalsTotal manageRecordIntervalsTotal);
    int submitManageRecordIntervalsTotal(Integer id);
    int ratifyManageRecordIntervalsTotal(Integer id, String ratifyState);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIssueRecycleService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
public interface ManageRecordIssueRecycleService extends IService<ManageRecordIssueRecycle> {
    Map<String,Object> pageManageRecordIssueRecycle(Page page, ManageRecordIssueRecycle manageRecordIssueRecycle);
    String exportOutManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle, HttpServletResponse response);
    int exportInManageRecordIssueRecycle(MultipartFile file);
    int addManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle);
    int doManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordTotalService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
public interface ManageRecordTotalService extends IService<ManageRecordTotal> {
    Map<String,Object> pageManageRecordTotal(Page page, ManageRecordTotal manageRecordTotal);
    int submitManageRecordTotal(Integer id);
    int ratifyManageRecordTotal(Integer id, String ratifyState);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordVerifyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRecordVerify;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
public interface ManageRecordVerifyService extends IService<ManageRecordVerify> {
    Map<String,Object> pageManageRecordVerify(Page page, ManageRecordVerify manageRecordVerify);
    int addManageRecordVerify(ManageRecordVerify manageRecordVerify);
    int delManageRecordVerify(Integer id);
    int exportManageRecordVerify(MultipartFile file);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.ManageReviewProgramFile;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.vo.ReviewProgramDetailsVo;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
public interface ManageReviewProgramFileService extends IService<ManageReviewProgramFile> {
    ReviewProgramDetailsVo selectFile(Integer id);
    void addFile(MultipartFile file,Integer id);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.Map;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
public interface ManageReviewProgramService extends IService<ManageReviewProgram> {
    IPage<ManageReviewProgram> page(Page page,String startTime,String endTime, String judgingLocation);
    void exportReviewProgram(Integer id, HttpServletResponse response);
    int addReviewProgram(ManageReviewProgram manageReviewProgram);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageReviewReport;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * ç®¡ç†è¯„审报告 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
public interface ManageReviewReportService extends IService<ManageReviewReport> {
    IPage<ManageReviewReport> page(Page page, String startTime, String endTime, String place);
    void exportReviewReport(Integer id, HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRiskAssessmentResultsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManageRiskAssessmentResults;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.vo.ManageRiskAssessmentResultsVo;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
public interface ManageRiskAssessmentResultsService extends IService<ManageRiskAssessmentResults> {
    IPage<ManageRiskAssessmentResultsVo> getPageResults(Page page);
    void exportPersonTraining(HttpServletResponse response);
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ClientSatisfactionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.dto.ClientSatisfactionDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ClientSatisfactionAnalyseFileMapper;
import com.yuanchu.mom.mapper.ClientSatisfactionMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ClientSatisfaction;
import com.yuanchu.mom.pojo.ClientSatisfactionAnalyseFile;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ClientSatisfactionService;
import com.yuanchu.mom.utils.QueryWrappers;
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;
/**
 * å®¢æˆ·æ»¡æ„åº¦
 *
 * @author zhuo
 * @since 2024-11-09
 */
@Service
public class ClientSatisfactionServiceImpl extends ServiceImpl<ClientSatisfactionMapper, ClientSatisfaction> implements ClientSatisfactionService {
    @Resource
    private ClientSatisfactionAnalyseFileMapper clientSatisfactionAnalyseFileMapper;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Value("${wordUrl}")
    private String wordUrl;
    /**
     * å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥åˆ—表
     *
     * @param page
     * @param clientSatisfaction
     * @return
     */
    @Override
    public IPage<ClientSatisfaction> pageClientSatisfaction(Page page, ClientSatisfaction clientSatisfaction) {
        return baseMapper.pageClientSatisfaction(page, QueryWrappers.queryWrappers(clientSatisfaction));
    }
    /**
     * æ–°å¢žå®¢æˆ·åˆ†æžé™„ä»¶
     *
     * @param file
     * @return
     */
    @Override
    public boolean uploadAnalyseFile(MultipartFile file) {
        String urlString;
        String pathName;
        String path;
        String filename = file.getOriginalFilename();
        String contentType = file.getContentType();
        ClientSatisfactionAnalyseFile analyseFile = new ClientSatisfactionAnalyseFile();
        analyseFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // æ˜¯å›¾ç‰‡
            path = imgUrl;
            analyseFile.setType(1);
        } else {
            // æ˜¯æ–‡ä»¶
            path = wordUrl;
            analyseFile.setType(2);
        }
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            analyseFile.setFileUrl(pathName);
            clientSatisfactionAnalyseFileMapper.insert(analyseFile);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            throw new ErrorException(e.getMessage());
        }
    }
    /**
     * æŸ¥è¯¢å®¢æˆ·åˆ†æžé™„ä»¶
     *
     * @param page
     * @param analyseFile
     * @return
     */
    @Override
    public IPage<ClientSatisfactionAnalyseFile> pageAnalyseFile(Page page, ClientSatisfactionAnalyseFile analyseFile) {
        return clientSatisfactionAnalyseFileMapper.pageAnalyseFile(page, QueryWrappers.queryWrappers(analyseFile));
    }
    /**
     * å®¢æˆ·æ»¡æ„åº¦å¯¼å‡º
     *
     * @param clientSatisfactionId
     * @param response
     */
    @Override
    public void exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response) {
        // æŸ¥è¯¢å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥
        ClientSatisfactionDto clientSatisfaction = baseMapper.exportWordClientSatisfaction(clientSatisfactionId);
        if (clientSatisfaction == null) {
            throw new RuntimeException("客户满意度调查不存在");
        }
        // æŸ¥è¯¢ç¡®è®¤äººçš„签名
        String confirmPersonUrl = null;
        // çŠ¶æ€ä¸ºç¡®è®¤ä¸”ç¡®è®¤äººä¸ä¸ºç©º
        if (clientSatisfaction.getConfirmStatus() != null && clientSatisfaction.getConfirmStatus() != 0 && clientSatisfaction.getConfirmPersonId() != null) {
            confirmPersonUrl = userMapper.selectById(clientSatisfaction.getConfirmPersonId()).getSignatureUrl();
            if (StringUtils.isBlank(confirmPersonUrl)) {
                throw new ErrorException("找不到验证人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/customer-satisfaction-questionnaire.docx");
        ConfigureBuilder builder = Configure.builder();
        String finalConfirmPersonUrl = confirmPersonUrl;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("clientSatisfaction", clientSatisfaction);
                    put("finalConfirmPersonUrl", StringUtils.isNotBlank(finalConfirmPersonUrl) ? Pictures.ofLocal(imgUrl + "/" + finalConfirmPersonUrl).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "客户满意度", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * ç¡®è®¤å®¢æˆ·æ»¡æ„åº¦
     *
     * @param clientSatisfaction è¦ä¿®æ”¹å®¢æˆ·æ»¡æ„åº¦çš„状态对象
     * @param userId             ä¿®æ”¹äººid
     */
    @Override
    public void confirmClientSatisfaction(ClientSatisfaction clientSatisfaction, Integer userId) {
        User user = userMapper.selectById(userId);
        if (user != null) {
            clientSatisfaction.setConfirmPerson(user.getName());
            clientSatisfaction.setConfirmPersonId(user.getId());
        }
        clientSatisfaction.setConfirmStatus(1);
        baseMapper.updateById(clientSatisfaction);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.InternalCheckDetailMapper;
import com.yuanchu.mom.pojo.InternalCheckDetail;
import com.yuanchu.mom.service.InternalCheckDetailService;
import org.springframework.stereotype.Service;
/**
 * å†…审检查详情表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
public class InternalCheckDetailServiceImpl extends ServiceImpl<InternalCheckDetailMapper, InternalCheckDetail> implements InternalCheckDetailService {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,234 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.InternalCheckDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.InternalCheckMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.pojo.InternalCheck;
import com.yuanchu.mom.service.InternalCheckService;
import com.yuanchu.mom.service.InternalCheckDetailService;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
 * å†…审检查表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalCheckServiceImpl extends ServiceImpl<InternalCheckMapper, InternalCheck> implements InternalCheckService {
    @Resource
    private InternalCheckDetailService internalCheckDetailService;
    @Resource
    private GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审检查分页查询
     * @param page
     * @param internalCheck
     * @return
     */
    @Override
    public IPage<InternalCheckDto> pageInternalCheck(Page page, InternalCheck internalCheck) {
        return baseMapper.pageInternalCheck(page, QueryWrappers.queryWrappers(internalCheck));
    }
    /**
     * å†…审检查新增
     * @param internalCheck
     * @return
     */
    @Override
    public boolean addInternalCheck(InternalCheckDto internalCheck) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        // æ·»åŠ ç¼–åˆ¶äºº
        User user = userMapper.selectById(userId);
        internalCheck.setWriteTime(LocalDateTime.now());
        internalCheck.setWriteUserId(user.getId());
        internalCheck.setWriteUserName(user.getName());
        baseMapper.insert(internalCheck);
        // æ–°å¢žè¯¦æƒ…
        for (InternalCheckDetail internalCheckDetail : internalCheck.getCheckDetailList()) {
            internalCheckDetail.setCheckId(internalCheck.getCheckId());
        }
        internalCheckDetailService.saveBatch(internalCheck.getCheckDetailList());
        return true;
    }
    /**
     * å†…审检查修改
     * @param internalCheck
     * @return
     */
    @Override
    public boolean updateInternalCheck(InternalCheckDto internalCheck) {
        baseMapper.updateById(internalCheck);
        // åˆ é™¤ä¹‹å‰çš„详情
        internalCheckDetailService.remove(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, internalCheck.getCheckId()));
        // æ–°å¢žè¯¦æƒ…
        for (InternalCheckDetail internalCheckDetail : internalCheck.getCheckDetailList()) {
            internalCheckDetail.setCheckId(internalCheck.getCheckId());
        }
        internalCheckDetailService.saveBatch(internalCheck.getCheckDetailList());
        return true;
    }
    /**
     * å†…审检查删除
     * @param CheckId
     * @return
     */
    @Override
    public boolean delInternalCheck(Integer CheckId) {
        internalCheckDetailService.remove(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, CheckId));
        baseMapper.deleteById(CheckId);
        return true;
    }
    /**
     * å†…审检查查看详情
     * @param CheckId
     * @return
     */
    @Override
    public InternalCheckDto getInternalCheckOne(Integer CheckId) {
        InternalCheck internalCheck = baseMapper.selectById(CheckId);
        InternalCheckDto internalCheckDto = new InternalCheckDto();
        BeanUtils.copyProperties(internalCheck, internalCheckDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalCheckDto.setCheckDetailList(internalCheckDetailService.list(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, CheckId)));
        return internalCheckDto;
    }
    /**
     * å†…审检查批准
     * @param internalCheck
     * @return
     */
    @Override
    public boolean ratifyInternalCheck(InternalCheckDto internalCheck) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalCheck>lambdaUpdate()
                .eq(InternalCheck::getCheckId, internalCheck.getCheckId())
                .set(InternalCheck::getRatifyUserId, userId)
                .set(InternalCheck::getRatifyUserName, user.getName())
                .set(InternalCheck::getRatifyRemark, internalCheck.getRatifyRemark())
                .set(InternalCheck::getRatifyStatus, internalCheck.getRatifyStatus())
                .set(InternalCheck::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审检查
     * @param checkId
     * @param response
     */
    @Override
    public void exportInternalCheck(Integer checkId, HttpServletResponse response) {
        InternalCheck internalCheck = baseMapper.selectById(checkId);
        //获取提交人的签名地址
        String writeUrl = userMapper.selectById(internalCheck.getWriteUserId()).getSignatureUrl();
        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (internalCheck.getRatifyUserId() != null) {
            ratifyUrl = userMapper.selectById(internalCheck.getRatifyUserId()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        // æŸ¥è¯¢è¯¦æƒ…
        List<InternalCheckDetail> internalCheckDetails = internalCheckDetailService.list(Wrappers.<InternalCheckDetail>lambdaQuery()
                .eq(InternalCheckDetail::getCheckId, checkId));
        int index = 1;
        for (InternalCheckDetail detail : internalCheckDetails) {
            detail.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-check.docx");
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("checkDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("check", internalCheck);
                    put("checkDetailList", internalCheckDetails);
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", internalCheck.getWriteTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalCheck.getWriteTime())).create() : null);
                    put("ratifyDateUrl", internalCheck.getRatifyTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalCheck.getRatifyTime())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审检查", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectFileServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.service.impl;
import com.yuanchu.mom.pojo.InternalCorrectFile;
import com.yuanchu.mom.mapper.InternalCorrectFileMapper;
import com.yuanchu.mom.service.InternalCorrectFileService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å†…审管理纠正措施附件表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:38
 */
@Service
public class InternalCorrectFileServiceImpl extends ServiceImpl<InternalCorrectFileMapper, InternalCorrectFile> implements InternalCorrectFileService {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,321 @@
package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.InternalCorrectDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.InternalCorrectFileMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.InternalCorrect;
import com.yuanchu.mom.mapper.InternalCorrectMapper;
import com.yuanchu.mom.pojo.InternalCorrectFile;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.InternalCorrectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * å†…审管理纠正处理表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 04:00:15
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalCorrectServiceImpl extends ServiceImpl<InternalCorrectMapper, InternalCorrect> implements InternalCorrectService {
    @Resource
    private InternalCorrectFileMapper internalCorrectFileMapper;
    @Resource
    private GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public boolean addInternalCorrect(InternalCorrect detailsCorrect) {
        InternalCorrect correct = new InternalCorrect();
        // å½“前登录用户信息和部门
        User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
        String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
        switch (detailsCorrect.getFlowType()) {
            // ä¸åˆæ ¼æå‡º
            case 0:
                correct.setRaiseResult(detailsCorrect.getRaiseResult());//不合格表述
                correct.setVdeRaiseResult(detailsCorrect.getVdeRaiseResult());//vde专家发现
                correct.setRaiseDepartment(departmentLimsName);//提出部门
                correct.setRaiseUserId(user.getId());//提出人id
                correct.setRaiseUserName(user.getName());// æå‡ºäºº
                correct.setRaiseTime(LocalDate.now());// æå‡ºæ—¶é—´
                // åŽŸå› åˆ†æžäººä¿¡æ¯
                User causeUser = userMapper.selectById(detailsCorrect.getCauseUserId());
                String causeDepartmentLims = userMapper.selectUserDepartmentLimsName(causeUser.getId());
                correct.setCauseDepartment(causeDepartmentLims);//原因分析责任部门
                correct.setCauseUserId(causeUser.getId());//1原因分析人id
                correct.setCauseUserName(causeUser.getName());// 1原因分析人
                baseMapper.insert(correct);
                break;
            // åŽŸå› åˆ†æž
            case 1:
                correct.setCorrectId(detailsCorrect.getCorrectId());
                correct.setCauseResult(detailsCorrect.getCauseResult());//原因分析
                correct.setCauseTime(LocalDate.now());// 1原因分析时间
                // çº æ­£äººä¿¡æ¯
                User correctUser = userMapper.selectById(detailsCorrect.getCorrectUserId());
                String correctUserDepartmentLims = userMapper.selectUserDepartmentLimsName(correctUser.getId());
                correct.setCorrectDepartment(correctUserDepartmentLims);//2纠正责任部门
                correct.setCorrectUserId(correctUser.getId());//2纠正人id
                correct.setCorrectUserName(correctUser.getName());// 2纠正人
                baseMapper.updateById(correct);
                break;
            // çº æ­£æŽªæ–½
            case 2:
                correct.setCorrectId(detailsCorrect.getCorrectId());
                correct.setCorrectResult(detailsCorrect.getCorrectResult());//2纠正措施
                correct.setRaiseDepartmentAffirm(detailsCorrect.getRaiseDepartmentAffirm());//2提出部门确认
                correct.setCorrectTime(LocalDate.now());// 2纠正时间
                // éªŒè¯äººä¿¡æ¯
                User validationUser = userMapper.selectById(detailsCorrect.getValidationUserId());
                String validationUserDepartmentLims = userMapper.selectUserDepartmentLimsName(validationUser.getId());
                correct.setValidationDepartment(validationUserDepartmentLims);//3验证部门
                correct.setValidationUserId(validationUser.getId());//3验证人id
                correct.setValidationUserName(validationUser.getName());// 3验证人
                baseMapper.updateById(correct);
                break;
            // éªŒè¯ç»“æžœ
            case 3:
                correct.setCorrectId(detailsCorrect.getCorrectId());
                correct.setValidationResult(detailsCorrect.getValidationResult());//3验证结果
                correct.setValidationTime(LocalDate.now());// 3验证时间
                correct.setIsFinish(1);
                baseMapper.updateById(correct);
                break;
        }
        return true;
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正处理
     * @param correctId
     * @return
     */
    @Override
    public InternalCorrect getInternalCorrect(Integer correctId) {
        InternalCorrect detailsCorrect;
        detailsCorrect = baseMapper.selectOne(Wrappers.<InternalCorrect>lambdaQuery()
                .eq(InternalCorrect::getCorrectId, correctId));
        if (detailsCorrect == null) {
            detailsCorrect = new InternalCorrect();
        }
        return detailsCorrect;
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施列表
     * @param page
     * @param detailsCorrect
     * @return
     */
    @Override
    public IPage<InternalCorrect> pageInternalCorrect(Page page, InternalCorrect detailsCorrect) {
        return baseMapper.pageInternalAccording(page, QueryWrappers.queryWrappers(detailsCorrect));
    }
    /**
     * æ–°å¢žå†…审管理纠正措施附件
     * @param InternalCorrectId
     * @param file
     * @return
     */
    @Override
    public boolean uploadInternalCorrectFile(Integer InternalCorrectId, MultipartFile file) {
        if (InternalCorrectId == null) {
            throw new ErrorException("缺少纠正措施id");
        }
        String urlString;
        String pathName;
        String path;
        String filename = file.getOriginalFilename();
        String contentType = file.getContentType();
        InternalCorrectFile InternalCorrectFile = new InternalCorrectFile();
        InternalCorrectFile.setCorrectId(InternalCorrectId);
        InternalCorrectFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // æ˜¯å›¾ç‰‡
            path = imgUrl;
            InternalCorrectFile.setType(1);
        } else {
            // æ˜¯æ–‡ä»¶
            path = wordUrl;
            InternalCorrectFile.setType(2);
        }
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            InternalCorrectFile.setFileUrl(pathName);
            internalCorrectFileMapper.insert(InternalCorrectFile);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            throw new ErrorException(e.getMessage());
        }
    }
    /**
     * æŸ¥è¯¢å†…审管理纠正措施附件
     * @param correctId
     * @return
     */
    @Override
    public List<InternalCorrectFile> getInternalCorrectFileList(Integer correctId) {
        return internalCorrectFileMapper.selectList(Wrappers.<InternalCorrectFile>lambdaQuery()
                .eq(InternalCorrectFile::getCorrectId, correctId));
    }
    /**
     * å¯¼å‡ºçº æ­£æŽªæ–½
     * @param correctId
     * @param response
     */
    @Override
    public void exportInternalCorrect(Integer correctId, HttpServletResponse response) {
        InternalCorrect internalCorrect = baseMapper.selectById(correctId);
        InternalCorrectDto internalCorrectDto = new InternalCorrectDto();
        BeanUtils.copyProperties(internalCorrect, internalCorrectDto);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        // æå‡ºæ—¶é—´
        internalCorrectDto.setRaiseTimeString(internalCorrect.getRaiseTime() != null
                ? internalCorrect.getRaiseTime().format(formatter) : null);
        // åŽŸå› åˆ†æžæ—¶é—´
        internalCorrectDto.setCauseTimeString(internalCorrect.getCauseTime() != null
                ? internalCorrect.getCauseTime().format(formatter) : null);
        // çº æ­£æ—¶é—´
        internalCorrectDto.setCorrectTimeString(internalCorrect.getCorrectTime() != null
                ? internalCorrect.getCorrectTime().format(formatter) : null);
        // éªŒè¯æ—¶é—´
        internalCorrectDto.setValidationTimeString(internalCorrect.getValidationTime() != null
                ? internalCorrect.getValidationTime().format(formatter) : null);
        // æå‡ºäººç­¾å
        String raiseUrl = null;
        if (internalCorrect.getRaiseUserId() != null) {
            raiseUrl = userMapper.selectById(internalCorrect.getRaiseUserId()).getSignatureUrl();
            if (StringUtils.isBlank(raiseUrl)) {
                throw new ErrorException("找不到提出人的签名");
            }
        }
        // åŽŸå› åˆ†æžäºº
        String causeUrl = null;
        if (internalCorrect.getCauseUserId() != null) {
            causeUrl = userMapper.selectById(internalCorrect.getCauseUserId()).getSignatureUrl();
            if (StringUtils.isBlank(causeUrl)) {
                throw new ErrorException("找不到原因分析人的签名");
            }
        }
        // çº æ­£äºº
        String correctUrl = null;
        if (internalCorrect.getCorrectUserId() != null) {
            correctUrl = userMapper.selectById(internalCorrect.getCorrectUserId()).getSignatureUrl();
            if (StringUtils.isBlank(correctUrl)) {
                throw new ErrorException("找不到纠正人的签名");
            }
        }
        // éªŒè¯äºº
        String validationUrl = null;
        if (internalCorrect.getValidationUserId() != null) {
            validationUrl = userMapper.selectById(internalCorrect.getValidationUserId()).getSignatureUrl();
            if (StringUtils.isBlank(validationUrl)) {
                throw new ErrorException("找不到验证人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-correct.docx");
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        String finalRaiseUrl = raiseUrl;
        String finalCauseUrl = causeUrl;
        String finalCorrectUrl = correctUrl;
        String finalValidationUrl = validationUrl;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("correct", internalCorrectDto);
                    put("raiseUrl", StringUtils.isNotBlank(finalRaiseUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRaiseUrl).create() : null);
                    put("causeUrl", StringUtils.isNotBlank(finalCauseUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCauseUrl).create() : null);
                    put("correctUrl", StringUtils.isNotBlank(finalCorrectUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCorrectUrl).create() : null);
                    put("validationUrl", StringUtils.isNotBlank(finalValidationUrl) ? Pictures.ofLocal(imgUrl + "/" + finalValidationUrl).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审纠正措施", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.InternalImplementDetailMapper;
import com.yuanchu.mom.pojo.InternalImplementDetail;
import com.yuanchu.mom.service.InternalImplementDetailService;
import org.springframework.stereotype.Service;
/**
 * å†…审实施计划详情
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
public class InternalImplementDetailServiceImpl extends ServiceImpl<InternalImplementDetailMapper, InternalImplementDetail> implements InternalImplementDetailService {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,235 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.InternalImplementDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.InternalImplementMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.InternalImplement;
import com.yuanchu.mom.pojo.InternalImplementDetail;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.InternalImplementDetailService;
import com.yuanchu.mom.service.InternalImplementService;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import com.yuanchu.mom.util.XWPFDocumentUtils;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
 * å†…审实施计划
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalImplementServiceImpl extends ServiceImpl<InternalImplementMapper, InternalImplement> implements InternalImplementService {
    @Resource
    private InternalImplementDetailService internalImplementDetailService;
    @Resource
    private GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审实施计划分页查询
     * @param page
     * @param internalImplement
     * @return
     */
    @Override
    public IPage<InternalImplementDto> pageInternalImplement(Page page, InternalImplement internalImplement) {
        return baseMapper.pageInternalImplement(page, QueryWrappers.queryWrappers(internalImplement));
    }
    /**
     * å†…审实施计划新增
     * @param internalImplement
     * @return
     */
    @Override
    public boolean addInternalImplement(InternalImplementDto internalImplement) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        // æ·»åŠ ç¼–åˆ¶äºº
        User user = userMapper.selectById(userId);
        internalImplement.setWriteTime(LocalDateTime.now());
        internalImplement.setWriteUserId(user.getId());
        internalImplement.setWriteUserName(user.getName());
        baseMapper.insert(internalImplement);
        // æ–°å¢žè¯¦æƒ…
        for (InternalImplementDetail internalImplementDetail : internalImplement.getImplementDetailList()) {
            internalImplementDetail.setImplementId(internalImplement.getImplementId());
        }
        internalImplementDetailService.saveBatch(internalImplement.getImplementDetailList());
        return true;
    }
    /**
     * å†…审实施计划修改
     * @param internalImplement
     * @return
     */
    @Override
    public boolean updateInternalImplement(InternalImplementDto internalImplement) {
        baseMapper.updateById(internalImplement);
        // åˆ é™¤ä¹‹å‰çš„详情
        internalImplementDetailService.remove(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, internalImplement.getImplementId()));
        // æ–°å¢žè¯¦æƒ…
        for (InternalImplementDetail internalImplementDetail : internalImplement.getImplementDetailList()) {
            internalImplementDetail.setImplementId(internalImplement.getImplementId());
        }
        internalImplementDetailService.saveBatch(internalImplement.getImplementDetailList());
        return true;
    }
    /**
     * å†…审实施计划删除
     * @param implementId
     * @return
     */
    @Override
    public boolean delInternalImplement(Integer implementId) {
        internalImplementDetailService.remove(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, implementId));
        baseMapper.deleteById(implementId);
        return true;
    }
    /**
     * å†…审实施计划查看详情
     * @param implementId
     * @return
     */
    @Override
    public InternalImplementDto getInternalImplementOne(Integer implementId) {
        InternalImplement internalImplement = baseMapper.selectById(implementId);
        InternalImplementDto internalImplementDto = new InternalImplementDto();
        BeanUtils.copyProperties(internalImplement, internalImplementDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalImplementDto.setImplementDetailList(internalImplementDetailService.list(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, implementId)));
        return internalImplementDto;
    }
    /**
     * å†…审实施计划批准
     * @param internalImplement
     * @return
     */
    @Override
    public boolean ratifyInternalImplement(InternalImplementDto internalImplement) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalImplement>lambdaUpdate()
                .eq(InternalImplement::getImplementId, internalImplement.getImplementId())
                .set(InternalImplement::getRatifyUserId, userId)
                .set(InternalImplement::getRatifyUserName, user.getName())
                .set(InternalImplement::getRatifyRemark, internalImplement.getRatifyRemark())
                .set(InternalImplement::getRatifyStatus, internalImplement.getRatifyStatus())
                .set(InternalImplement::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审实施计划
     * @param implementId
     * @param response
     */
    @Override
    public void exportInternalImplement(Integer implementId, HttpServletResponse response) {
        InternalImplement internalImplement = baseMapper.selectById(implementId);
        //获取提交人的签名地址
        String writeUrl = userMapper.selectById(internalImplement.getWriteUserId()).getSignatureUrl();
        if (StringUtils.isBlank(writeUrl)) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (internalImplement.getRatifyUserId() != null) {
            ratifyUrl = userMapper.selectById(internalImplement.getRatifyUserId()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到批准人的签名");
            }
        }
        // æŸ¥è¯¢è¯¦æƒ…
        List<InternalImplementDetail> detailList = internalImplementDetailService.list(Wrappers.<InternalImplementDetail>lambdaQuery()
                .eq(InternalImplementDetail::getImplementId, implementId));
        int index = 1;
        for (InternalImplementDetail detail : detailList) {
            detail.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-implement.docx");
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("implementDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("implement", internalImplement);
                    put("implementDetailList", detailList);
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", internalImplement.getWriteTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalImplement.getWriteTime())).create() : null);
                    put("ratifyDateUrl", internalImplement.getRatifyTime() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(internalImplement.getRatifyTime())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    internalImplement.getPurposes(), "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.service.impl;
import com.yuanchu.mom.pojo.InternalMeetingDetail;
import com.yuanchu.mom.mapper.InternalMeetingDetailMapper;
import com.yuanchu.mom.service.InternalMeetingDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å†…审会议详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:56:13
 */
@Service
public class InternalMeetingDetailServiceImpl extends ServiceImpl<InternalMeetingDetailMapper, InternalMeetingDetail> implements InternalMeetingDetailService {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,205 @@
package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.InternalMeetingDto;
import com.yuanchu.mom.dto.InternalMeetingParticipantDto;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.yuanchu.mom.pojo.InternalMeetingDetail;
import com.yuanchu.mom.pojo.InternalMeeting;
import com.yuanchu.mom.mapper.InternalMeetingMapper;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.InternalMeetingDetailService;
import com.yuanchu.mom.service.InternalMeetingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * å†…审会议表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:50:44
 */
@Service
@AllArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class InternalMeetingServiceImpl extends ServiceImpl<InternalMeetingMapper, InternalMeeting> implements InternalMeetingService {
    private InternalMeetingDetailService internalMeetingDetailService;
    private GetLook getLook;
    private UserMapper userMapper;
    /**
     * å†…审会议分页查询
     * @param page
     * @param internalMeeting
     * @return
     */
    @Override
    public IPage<InternalMeetingDto> pageInternalMeeting(Page page, InternalMeeting internalMeeting) {
        return baseMapper.pageInternalMeeting(page, QueryWrappers.queryWrappers(internalMeeting));
    }
    /**
     * å†…审会议新增
     * @param internalMeeting
     * @return
     */
    @Override
    public boolean addInternalMeeting(InternalMeetingDto internalMeeting) {
        baseMapper.insert(internalMeeting);
//        // æ–°å¢žè¯¦æƒ…
//        for (InternalMeetingDetail internalMeetingDetail : internalMeeting.getMeetingDetailList()) {
//            internalMeetingDetail.setMeetingId(internalMeeting.getMeetingId());
//        }
//        internalMeetingDetailService.saveBatch(internalMeeting.getMeetingDetailList());
        return true;
    }
    /**
     * å†…审会议修改
     * @param internalMeeting
     * @return
     */
    @Override
    public boolean updateInternalMeeting(InternalMeetingDto internalMeeting) {
        baseMapper.updateById(internalMeeting);
        // åˆ é™¤ä¹‹å‰çš„详情
//        internalMeetingDetailService.remove(Wrappers.<InternalMeetingDetail>lambdaQuery()
//                .eq(InternalMeetingDetail::getMeetingId, internalMeeting.getMeetingId()));
//
//        // æ–°å¢žè¯¦æƒ…
//        for (InternalMeetingDetail internalMeetingDetail : internalMeeting.getMeetingDetailList()) {
//            internalMeetingDetail.setMeetingId(internalMeeting.getMeetingId());
//        }
        internalMeetingDetailService.saveBatch(internalMeeting.getMeetingDetailList());
        return true;
    }
    /**
     * å†…审会议删除
     * @param MeetingId
     * @return
     */
    @Override
    public boolean delInternalMeeting(Integer MeetingId) {
        internalMeetingDetailService.remove(Wrappers.<InternalMeetingDetail>lambdaQuery()
                .eq(InternalMeetingDetail::getMeetingId, MeetingId));
        baseMapper.deleteById(MeetingId);
        return true;
    }
    /**
     * å†…审会议查看详情
     * @param MeetingId
     * @return
     */
    @Override
    public InternalMeetingDto getInternalMeetingOne(Integer MeetingId) {
        InternalMeeting internalMeeting = baseMapper.selectById(MeetingId);
        InternalMeetingDto internalMeetingDto = new InternalMeetingDto();
        BeanUtils.copyProperties(internalMeeting, internalMeetingDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalMeetingDto.setMeetingDetailList(internalMeetingDetailService.list(Wrappers.<InternalMeetingDetail>lambdaQuery()
                .eq(InternalMeetingDetail::getMeetingId, MeetingId)));
        return internalMeetingDto;
    }
    /**
     * å¯¼å‡ºå†…审会议
     * @param meetingId
     * @param response
     */
    @Override
    public void exportInternalMeeting(Integer meetingId, HttpServletResponse response) {
        InternalMeeting internalMeeting = baseMapper.selectById(meetingId);
        // æœ€å¤§è¡Œæ•°
        int max = 11;
        // æŸ¥è¯¢å‚加人员
        List<Map<String, String>> mapList = userMapper.selectNameAnddepartment(internalMeeting.getParticipant());
        // åˆ›å»ºç©ºå¯¹è±¡
        List<InternalMeetingParticipantDto> participants = new ArrayList<>();
        for (int i = 0; i < max; i++) {
            InternalMeetingParticipantDto participant = new InternalMeetingParticipantDto();
            participants.add(participant);
        }
        int count = 0;
        // æ·»åŠ å‚åŠ äººå‘˜
        for (Map<String, String> stringMap : mapList) {
            // åˆ¤æ–­æœ‰æ²¡æœ‰åˆ°11行
            if (count >= max * 2) {
                participants.get(count - max * 2).setUserName3(stringMap.get("userName"));
                participants.get(count - max * 2).setDepartment3(stringMap.get("department"));
            } else if (count >= max){
                participants.get(count - max).setUserName2(stringMap.get("userName"));
                participants.get(count - max).setDepartment2(stringMap.get("department"));
            } else {
                participants.get(count).setUserName1(stringMap.get("userName"));
                participants.get(count).setDepartment1(stringMap.get("department"));
            }
            count ++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-meeting.docx");
        Configure configure = Configure.builder()
                .bind("meetingDetails", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("meeting", internalMeeting);
                    put("meetingDetails", participants);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    internalMeeting.getMeetingDate() + "内审会议签到", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.service.impl;
import com.yuanchu.mom.pojo.InternalPlanDetail;
import com.yuanchu.mom.mapper.InternalPlanDetailMapper;
import com.yuanchu.mom.service.InternalPlanDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å†…审年度计划详情表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:28:48
 */
@Service
public class InternalPlanDetailServiceImpl extends ServiceImpl<InternalPlanDetailMapper, InternalPlanDetail> implements InternalPlanDetailService {
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,256 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.InternalPlanDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.pojo.InternalPlan;
import com.yuanchu.mom.mapper.InternalPlanMapper;
import com.yuanchu.mom.service.InternalPlanDetailService;
import com.yuanchu.mom.service.InternalPlanService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
 * å†…审年度计划 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 03:27:47
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalPlanServiceImpl extends ServiceImpl<InternalPlanMapper, InternalPlan> implements InternalPlanService {
    @Resource
    private InternalPlanDetailService internalPlanDetailService;
    @Resource
    private GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审年度计划分页查询
     * @param page
     * @param internalPlan
     * @return
     */
    @Override
    public IPage<InternalPlanDto> pageInternalPlan(Page page, InternalPlan internalPlan) {
        return baseMapper.pageInternalPlan(page, QueryWrappers.queryWrappers(internalPlan));
    }
    /**
     * å†…审年度计划新增
     * @param internalPlan
     * @return
     */
    @Override
    public boolean addInternalPlan(InternalPlanDto internalPlan) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        // æ·»åŠ ç¼–åˆ¶äºº
        User user = userMapper.selectById(userId);
        internalPlan.setWriteTime(LocalDateTime.now());
        internalPlan.setWriteUserId(user.getId());
        internalPlan.setWriteUserName(user.getName());
        baseMapper.insert(internalPlan);
        // æ–°å¢žè¯¦æƒ…
        for (InternalPlanDetail internalPlanDetail : internalPlan.getPlanDetailList()) {
            internalPlanDetail.setPlanId(internalPlan.getPlanId());
        }
        internalPlanDetailService.saveBatch(internalPlan.getPlanDetailList());
        return true;
    }
    /**
     * å†…审年度计划修改
     * @param internalPlan
     * @return
     */
    @Override
    public boolean updateInternalPlan(InternalPlanDto internalPlan) {
        baseMapper.updateById(internalPlan);
        // åˆ é™¤ä¹‹å‰çš„详情
        internalPlanDetailService.remove(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, internalPlan.getPlanId()));
        // æ–°å¢žè¯¦æƒ…
        for (InternalPlanDetail internalPlanDetail : internalPlan.getPlanDetailList()) {
            internalPlanDetail.setPlanId(internalPlan.getPlanId());
        }
        internalPlanDetailService.saveBatch(internalPlan.getPlanDetailList());
        return true;
    }
    /**
     * å†…审年度计划删除
     * @param planId
     * @return
     */
    @Override
    public boolean delInternalPlan(Integer planId) {
        internalPlanDetailService.remove(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, planId));
        baseMapper.deleteById(planId);
        return true;
    }
    /**
     * å†…审年度计划查看详情
     * @param planId
     * @return
     */
    @Override
    public InternalPlanDto getInternalPlanOne(Integer planId) {
        InternalPlan internalPlan = baseMapper.selectById(planId);
        InternalPlanDto internalPlanDto = new InternalPlanDto();
        BeanUtils.copyProperties(internalPlan, internalPlanDto);
        // æŸ¥è¯¢è¯¦ç»†ä¿¡æ¯
        internalPlanDto.setPlanDetailList(internalPlanDetailService.list(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, planId)));
        return internalPlanDto;
    }
    /**
     * å†…审年度计划审核
     * @param internalPlanDto
     * @return
     */
    @Override
    public boolean examineInternalPlan(InternalPlanDto internalPlanDto) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalPlan>lambdaUpdate()
                .eq(InternalPlan::getPlanId, internalPlanDto.getPlanId())
                .set(InternalPlan::getExamineUserId, userId)
                .set(InternalPlan::getExamineUserName, user.getName())
                .set(InternalPlan::getExamineRemark, internalPlanDto.getExamineRemark())
                .set(InternalPlan::getExamineStatus, internalPlanDto.getExamineStatus())
                .set(InternalPlan::getExamineTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å†…审年度计划批准
     * @param internalPlanDto
     * @return
     */
    @Override
    public boolean ratifyInternalPlan(InternalPlanDto internalPlanDto) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalPlan>lambdaUpdate()
                .eq(InternalPlan::getPlanId, internalPlanDto.getPlanId())
                .set(InternalPlan::getRatifyUserId, userId)
                .set(InternalPlan::getRatifyUserName, user.getName())
                .set(InternalPlan::getRatifyRemark, internalPlanDto.getRatifyRemark())
                .set(InternalPlan::getRatifyStatus, internalPlanDto.getRatifyStatus())
                .set(InternalPlan::getRatifyTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审年度计划
     * @param planId
     * @param response
     */
    @Override
    public void exportInternalImplement(Integer planId, HttpServletResponse response) {
        InternalPlan internalPlan = baseMapper.selectById(planId);
        //获取提交人的签名地址
        String writeUrl = userMapper.selectById(internalPlan.getWriteUserId()).getSignatureUrl();
        if (StringUtils.isBlank(writeUrl)) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取审核人的签名地址
        String examineUrl = null;
        if (internalPlan.getExamineUserId() != null) {
            examineUrl = userMapper.selectById(internalPlan.getExamineUserId()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到审核人的签名");
            }
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (internalPlan.getRatifyUserId() != null) {
            ratifyUrl = userMapper.selectById(internalPlan.getRatifyUserId()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到批准人的签名");
            }
        }
        // æŸ¥è¯¢è¯¦æƒ…
        List<InternalPlanDetail> planDetails = internalPlanDetailService.list(Wrappers.<InternalPlanDetail>lambdaQuery()
                .eq(InternalPlanDetail::getPlanId, planId));
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-plan.docx");
        String finalExamineUrl = examineUrl;
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("planDetailList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("plan", internalPlan);
                    put("planDetailList", planDetails);
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审年度计划", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,165 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.InternalReportMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.InternalCheck;
import com.yuanchu.mom.pojo.InternalReport;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.InternalReportService;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
/**
 * å†…审报告表
 *
 * @author zhuo
 * @since 2024-11-11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class InternalReportServiceImpl extends ServiceImpl<InternalReportMapper, InternalReport> implements InternalReportService {
    @Resource
    private GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    /**
     * å†…审报告分页查询
     * @param page
     * @param internalReport
     * @return
     */
    @Override
    public IPage<InternalReport> pageInternalReport(Page page, InternalReport internalReport) {
        return baseMapper.pageInternalReport(page, QueryWrappers.queryWrappers(internalReport));
    }
    /**
     * å†…审报告审核
     * @param internalReport
     * @return
     */
    @Override
    public boolean ratifyInternalCheck(InternalReport internalReport) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalReport>lambdaUpdate()
                .eq(InternalReport::getReportId, internalReport.getReportId())
                .set(InternalReport::getExamineUserId, userId)
                .set(InternalReport::getExamineUserName, user.getName())
                .set(InternalReport::getExamineRemark, internalReport.getExamineRemark())
                .set(InternalReport::getExamineStatus, internalReport.getExamineStatus())
                .set(InternalReport::getExamineTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å†…审报告质量负责人填写
     * @param internalReport
     * @return
     */
    @Override
    public boolean qualityInternalReport(InternalReport internalReport) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        baseMapper.update(null, Wrappers.<InternalReport>lambdaUpdate()
                .eq(InternalReport::getReportId, internalReport.getReportId())
                .set(InternalReport::getQualityUserId, userId)
                .set(InternalReport::getQualityUserName, user.getName())
                .set(InternalReport::getQualityRemark, internalReport.getQualityRemark())
                .set(InternalReport::getQualityStatus, internalReport.getQualityStatus())
                .set(InternalReport::getQualityTime, LocalDateTime.now())
        );
        return true;
    }
    /**
     * å¯¼å‡ºå†…审报告
     * @param reportId
     * @param response
     */
    @Override
    public void exportInternalReport(Integer reportId, HttpServletResponse response) {
        InternalReport internalReport = baseMapper.selectById(reportId);
        //获取审核人的签名地址
        String examineUrl = null;
        if (internalReport.getExamineUserId() != null) {
            examineUrl = userMapper.selectById(internalReport.getExamineUserId()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到审核人的签名");
            }
        }
        //获取质量负责人的签名地址
        String qualityUrl = null;
        if (internalReport.getQualityUserId() != null) {
            qualityUrl = userMapper.selectById(internalReport.getQualityUserId()).getSignatureUrl();
            if (StringUtils.isBlank(qualityUrl)) {
                throw new ErrorException("找不到质量负责人的签名");
            }
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-report.docx");
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        String finalExamineUrl = examineUrl;
        String finalQualityUrl = qualityUrl;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("report", internalReport);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).create() : null);
                    put("qualityUrl", StringUtils.isNotBlank(finalQualityUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).create() : null);
                    put("examineTime", internalReport.getExamineTime() != null ? internalReport.getExamineTime().format(formatter) : null);
                    put("qualityTime", internalReport.getQualityTime() != null ? internalReport.getQualityTime().format(formatter) : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "内审报告", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageControlPlanList;
import com.yuanchu.mom.mapper.ManageControlPlanListMapper;
import com.yuanchu.mom.service.ManageControlPlanListService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.vo.ManageControlPlanListVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
/**
 * <p>
 * é‡å¤§é£Žé™©å› ç´ åˆ†æžåŠæŽ§åˆ¶è®¡åˆ’清单 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:30
 */
@Service
public class ManageControlPlanListServiceImpl extends ServiceImpl<ManageControlPlanListMapper, ManageControlPlanList> implements ManageControlPlanListService {
    @Autowired
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Override
    public IPage<ManageControlPlanListVo> getPageList(Page page) {
        return baseMapper.getPageList(page, false);
    }
    @Override
    public void exportPersonTraining(HttpServletResponse response) {
        // æŸ¥è¯¢è¯¦æƒ…
        IPage<ManageControlPlanListVo> detailedDtos = baseMapper.getPageList(new Page(1, -1), true);
        if (detailedDtos.getRecords().isEmpty()) {
            throw new ErrorException("审核通过的数据为空!请审核通过后在导出");
        }
        ManageControlPlanListVo manageRiskAssessmentResultsVo = detailedDtos.getRecords().get(0);
        //获取编制人的签名地址
        String writeUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getEditor()).getSignatureUrl();
        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取复核人的签名地址
        String examineUrl = null;
        if (manageRiskAssessmentResultsVo.getApproval() != null) {
            examineUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getApproval()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (manageRiskAssessmentResultsVo.getApproval() != null) {
            ratifyUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getApproval()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        int index = 1;
        for (ManageControlPlanListVo detailedDto : detailedDtos.getRecords()) {
            detailedDto.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/analysis-risk-factors.docx");
        String finalExamineUrl = examineUrl;
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("trainingDetailedList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("trainingDetailedList", detailedDtos.getRecords());
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", manageRiskAssessmentResultsVo.getEditorDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getEditorDate())).create() : null);
                    put("examineDateUrl", manageRiskAssessmentResultsVo.getApproveDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getApproveDate())).create() : null);
                    put("ratifyDateUrl", manageRiskAssessmentResultsVo.getApproveDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getApproveDate())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "危险因素辨识与风险评价结果一览", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentAlterServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,290 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.ManageDocumentAlterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å˜æ›´ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 11:04:01
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentAlterServiceImpl extends ServiceImpl<ManageDocumentAlterMapper, ManageDocumentAlter> implements ManageDocumentAlterService {
    @Resource
    private ManageDocumentAlterMapper manageDocumentAlterMapper;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Resource
    GetLook getLook;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    private ManageDocumentCancelMapper manageDocumentCancelMapper;
    @Resource
    private ManageRecordAuditMapper manageRecordAuditMapper;
    @Override
    public Map<String, Object> pageManageDocumentAlter(Page page, ManageDocumentAlter manageDocumentAlter) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageDocumentAlter.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageManageDocumentCancel");
        if (map1.get("look") == 1) manageDocumentAlter.setCreateUser(map1.get("userId"));
        map.put("body", manageDocumentAlterMapper.pageManageDocumentAlter(page, QueryWrappers.queryWrappers(manageDocumentAlter)));
        return map;
    }
    @Override
    public ManageDocumentAlter getManageDocumentAlter(Integer id) {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.getManageDocumentAlter(id);
        String limsName = userMapper.selectUserDepartmentLimsName(manageDocumentAlter.getCreateUser());
        manageDocumentAlter.setCreateUserDepartLims(limsName);
        return manageDocumentAlter;
    }
    @Override
    public int addManageDocumentAlter(ManageDocumentAlter manageDocumentAlter) {
        /*新增8.4的文件修订申请审批记录*/
        ManageRecordAudit manageRecordAudit = new ManageRecordAudit();
        manageRecordAudit.setDocumentCode(manageDocumentAlter.getAlterBeforeCode());
        manageRecordAudit.setDocumentName(manageDocumentAlter.getAlterBeforeName());
        manageRecordAudit.setBeforeVersion(manageDocumentAlter.getAlterBeforeVersion());
        manageRecordAudit.setAfterVersion(manageDocumentAlter.getAlterAfterVersion());
        manageRecordAudit.setReason(manageDocumentAlter.getAlterNote());
        manageRecordAudit.setAlterUser(getLook.selectPowerByMethodAndUserId(null).get("userId"));
        manageRecordAudit.setMethod("修订");
        if (ObjectUtils.isNotEmpty(manageDocumentAlter.getFile())) {
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentAlter.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageDocumentAlter.setAlterAfterUrl(pathName);
            manageRecordAudit.setAfterUrl(pathName);
        }
        manageRecordAuditMapper.insert(manageRecordAudit);
        return manageDocumentAlterMapper.insert(manageDocumentAlter);
    }
    @Override
    public int doManageDocumentAlter(ManageDocumentAlter manageDocumentAlter) {
        ManageDocumentAlter manageDocumentAlter1= manageDocumentAlterMapper.selectById(manageDocumentAlter.getId());
        if (ObjectUtils.isNotEmpty(manageDocumentAlter.getFile())) {
            if (ObjectUtils.isNotEmpty(manageDocumentAlter1.getAlterAfterUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + manageDocumentAlter1.getAlterAfterUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentAlter.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentAlter.setAlterAfterUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
    }
    @Override
    public int checkManageDocumentAlter(ManageDocumentAlter manageDocumentAlter) {
        ManageDocumentAlter oldManageDocumentAlter = manageDocumentAlterMapper.selectById(manageDocumentAlter.getId());
        if (manageDocumentAlter.getState().equals("通过")) {
            /*将文件盖章*/
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + oldManageDocumentAlter.getAlterAfterUrl());
            oldFile.delete();
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentAlter.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentAlter.setAlterAfterUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            /*其余相关处理*/
            if (oldManageDocumentAlter.getMethod().equals("作废")){
                //新增到作废申请里面
                ManageDocumentCancel manageDocumentCancel = new ManageDocumentCancel();
                manageDocumentCancel.setDocumentCode(oldManageDocumentAlter.getAlterBeforeCode());
                manageDocumentCancel.setName(oldManageDocumentAlter.getAlterBeforeName());
                manageDocumentCancel.setVersion(oldManageDocumentAlter.getAlterBeforeVersion());
                manageDocumentCancel.setCancelNote("文件变更,变更的文件编号是"+oldManageDocumentAlter.getAlterAfterCode());
                manageDocumentCancelMapper.insert(manageDocumentCancel);
                //删除文件清单
                manageDocumentListMapper.delete(Wrappers.<ManageDocumentList>lambdaQuery()
                        .eq(ManageDocumentList::getDocumentCode,oldManageDocumentAlter.getAlterBeforeCode()));
                //新增文件清单
                ManageDocumentList manageDocumentList = new ManageDocumentList();
                manageDocumentList.setDocumentCode(oldManageDocumentAlter.getAlterAfterCode());
                manageDocumentList.setName(oldManageDocumentAlter.getAlterAfterName());
                manageDocumentList.setVersion(oldManageDocumentAlter.getAlterAfterVersion());
                manageDocumentList.setState("有效");
                manageDocumentList.setEffectiveDate(LocalDate.now());
                manageDocumentList.setUrl(pathName);
                manageDocumentListMapper.insert(manageDocumentList);
                /*新增8.4的文件修订申请审批记录*/
                ManageRecordAudit manageRecordAudit = new ManageRecordAudit();
                manageRecordAudit.setDocumentCode(manageDocumentCancel.getDocumentCode());
                manageRecordAudit.setDocumentName(manageDocumentCancel.getName());
                manageRecordAudit.setAlterThing("作废");
                manageRecordAudit.setMethod("作废");
                manageRecordAuditMapper.insert(manageRecordAudit);
            }else {
                //如果是存档不可用,那就将文件清单的状态改为无效
                manageDocumentListMapper.update(null,Wrappers.<ManageDocumentList>lambdaUpdate()
                        .eq(ManageDocumentList::getDocumentCode,oldManageDocumentAlter.getAlterBeforeCode())
                        .set(ManageDocumentList::getState,"无效"));
            }
        }
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(oldManageDocumentAlter.getAlterAfterCode());
        manageRecordCheck.setDocumentName(oldManageDocumentAlter.getAlterAfterName());
        manageRecordCheck.setDocumentVersion(oldManageDocumentAlter.getAlterAfterVersion());
        manageRecordCheck.setWriteUser(oldManageDocumentAlter.getCreateUser());
        manageRecordCheck.setCheckUser(oldManageDocumentAlter.getCheckUser());
        manageRecordCheck.setCheckState(manageDocumentAlter.getState());
        manageRecordCheck.setRemark(manageDocumentAlter.getAlterNote());
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
    }
    @Override
    public void checkManageDocumentAlterPdf(Long id, HttpServletResponse response) throws Exception {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.selectById(id);
        File file = new File(wordUrl + "/" + manageDocumentAlter.getAlterAfterUrl());
        FileInputStream fileInputStream = new FileInputStream(file);
        response.setContentType("application/pdf");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "inline;filename=" + file.getName());
        response.setContentLength((int)file.length());
        OutputStream os = response.getOutputStream();
        // å°†æ–‡ä»¶å†…容写入输出流
        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = fileInputStream.read(buffer)) != -1) {
            os.write(buffer, 0, bytesRead);
        }
        os.flush();
        os.close();
    }
    @Override
    public void exportManageDocumentAlter(ManageDocumentAlter manageDocumentAlter, HttpServletResponse response) throws Exception {
        List<ManageDocumentAlter> data = manageDocumentAlterMapper.pageManageDocumentAlter(new Page(-1, -1), QueryWrappers.queryWrappers(manageDocumentAlter)).getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String fileName = URLEncoder.encode("文件变更列表导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "文件变更列表导出").head(ManageDocumentAlter.class).build();
            excelWriter.write(data, mainSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int delManageDocumentAlter(Integer id) {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.selectById(id);
        /*删除8.4的文件修订申请审批记录*/
        manageRecordAuditMapper.delete(Wrappers.<ManageRecordAudit>lambdaQuery()
        .eq(ManageRecordAudit::getDocumentCode,manageDocumentAlter.getAlterBeforeCode())
        .eq(ManageRecordAudit::getDocumentName,manageDocumentAlter.getAlterBeforeName())
        .eq(ManageRecordAudit::getBeforeVersion,manageDocumentAlter.getAlterBeforeVersion())
        .eq(ManageRecordAudit::getAfterVersion,manageDocumentAlter.getAlterAfterVersion())
        .eq(ManageRecordAudit::getReason,manageDocumentAlter.getAlterNote())
        .eq(ManageRecordAudit::getAlterUser,manageDocumentAlter.getCreateUser())
        .eq(ManageRecordAudit::getMethod,"修订"));
        return manageDocumentAlterMapper.deleteById(id);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentCancelServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,143 @@
package com.yuanchu.mom.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.ManageDocumentCancelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶ä½œåºŸ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 02:37:35
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentCancelServiceImpl extends ServiceImpl<ManageDocumentCancelMapper, ManageDocumentCancel> implements ManageDocumentCancelService {
    @Resource
    private ManageDocumentCancelMapper manageDocumentCancelMapper;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Resource
    private ManageRecordAuditMapper manageRecordAuditMapper;
    @Resource
    GetLook getLook;
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    private UserMapper userMapper;
    @Override
    public Map<String, Object> pageManageDocumentCancel(Page page, ManageDocumentCancel manageDocumentCancel) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageDocumentCancel.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageManageDocumentCancel");
        if (map1.get("look") == 1) manageDocumentCancel.setCreateUser(map1.get("userId"));
        map.put("body", manageDocumentCancelMapper.pageManageDocumentCancel(page, QueryWrappers.queryWrappers(manageDocumentCancel)));
        return map;
    }
    @Override
    public int addManageDocumentCancel(ManageDocumentCancel manageDocumentCancel) {
        manageDocumentCancel.setState("待审核");
        /*新增8.4的文件修订申请审批记录*/
        ManageRecordAudit manageRecordAudit = new ManageRecordAudit();
        manageRecordAudit.setDocumentCode(manageDocumentCancel.getDocumentCode());
        manageRecordAudit.setDocumentName(manageDocumentCancel.getName());
        manageRecordAudit.setAlterThing("作废");
        manageRecordAudit.setMethod("作废");
        manageRecordAuditMapper.insert(manageRecordAudit);
        return manageDocumentCancelMapper.insert(manageDocumentCancel);
    }
    @Override
    public int checkManageDocumentCancel(Integer id, String state) {
        ManageDocumentCancel manageDocumentCancel = manageDocumentCancelMapper.selectById(id);
        if (state.equals("通过")){
            //删除文件清单对应数据
            manageDocumentListMapper.delete(Wrappers.<ManageDocumentList>lambdaQuery().eq(ManageDocumentList::getDocumentCode,manageDocumentCancel.getDocumentCode()));
        }
        manageDocumentCancel.setState(state);
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(manageDocumentCancel.getDocumentCode());
        manageRecordCheck.setDocumentName(manageDocumentCancel.getName());
        manageRecordCheck.setDocumentVersion(manageDocumentCancel.getVersion());
        manageRecordCheck.setWriteUser(manageDocumentCancel.getCreateUser());
        manageRecordCheck.setCheckUser(manageDocumentCancel.getCheckUser());
        manageRecordCheck.setCheckState(manageDocumentCancel.getState());
        manageRecordCheck.setRemark(manageDocumentCancel.getCancelNote());
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentCancelMapper.updateById(manageDocumentCancel);
    }
    @Override
    public ManageDocumentCancel getManageDocumentCancel(Integer id) {
        ManageDocumentCancel manageDocumentCancel = manageDocumentCancelMapper.getManageDocumentCancel(id);
        String limsName = userMapper.selectUserDepartmentLimsName(manageDocumentCancel.getCreateUser());
        manageDocumentCancel.setCreateUserDepartLims(limsName);
        return manageDocumentCancel;
    }
    @Override
    public void exportManageDocumentCancel(ManageDocumentCancel manageDocumentCancel, HttpServletResponse response) throws Exception{
        List<ManageDocumentCancel> data = manageDocumentCancelMapper.pageManageDocumentCancel(new Page(-1, -1), QueryWrappers.queryWrappers(manageDocumentCancel)).getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String fileName = URLEncoder.encode("文件作废列表导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "文件作废列表导出").head(ManageDocumentCancel.class).build();
            excelWriter.write(data, mainSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int delManageDocumentCancel(Integer id) {
        ManageDocumentCancel manageDocumentCancel = manageDocumentCancelMapper.selectById(id);
        /*删除8.4的文件修订申请审批记录*/
        manageRecordAuditMapper.delete(Wrappers.<ManageRecordAudit>lambdaQuery()
        .eq(ManageRecordAudit::getDocumentCode,manageDocumentCancel.getDocumentCode())
        .eq(ManageRecordAudit::getDocumentName,manageDocumentCancel.getName())
        .eq(ManageRecordAudit::getMethod,"作废"));
        return manageDocumentCancelMapper.deleteById(id);
    }
    @Override
    public int doManageDocumentCancel(ManageDocumentCancel manageDocumentCancel) {
        return manageDocumentCancelMapper.updateById(manageDocumentCancel);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentControlledServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,241 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageDocumentListMapper;
import com.yuanchu.mom.mapper.ManageRecordCheckMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.mapper.ManageDocumentControlledMapper;
import com.yuanchu.mom.pojo.ManageDocumentList;
import com.yuanchu.mom.pojo.ManageRecordCheck;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageDocumentControlledService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.service.UserService;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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 javax.swing.*;
import java.io.*;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
/**
 * <p>
 * æ–‡ä»¶å—控 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 02:54:44
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentControlledServiceImpl extends ServiceImpl<ManageDocumentControlledMapper, ManageDocumentControlled> implements ManageDocumentControlledService {
    @Resource
    private ManageDocumentControlledMapper manageDocumentControlledMapper;
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Resource
    GetLook getLook;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Override
    public Map<String, Object> pageManageDocumentControlled(Page page, ManageDocumentControlled manageDocumentControlled) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageDocumentControlled.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageManageDocumentControlled");
        if (map1.get("look") == 1) manageDocumentControlled.setCreateUser(map1.get("userId"));
        map.put("body", manageDocumentControlledMapper.pageManageDocumentControlled(page, QueryWrappers.queryWrappers(manageDocumentControlled)));
        return map;
    }
    @Override
    public int addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
        manageDocumentControlled.setState("待审核");
        String urlString;
        String pathName;
        String path;
        if (ObjectUtils.isNotEmpty(manageDocumentControlled.getFile())) {
            MultipartFile file = manageDocumentControlled.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageDocumentControlled.setUrl(pathName);
        }
        return manageDocumentControlledMapper.insert(manageDocumentControlled);
    }
    @Override
    public int delManageDocumentControlled(Long id) {
        ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.selectById(id);
        if (ObjectUtils.isNotEmpty(manageDocumentControlled.getUrl())) {
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + manageDocumentControlled.getUrl());
            oldFile.delete();
        }
        return manageDocumentControlledMapper.deleteById(id);
    }
    @Override
    public ManageDocumentControlled getManageDocumentControlled(Long id) {
        ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.getManageDocumentControlled(id);
        //获取部门信息
        String departmentLimsName = userMapper.selectUserDepartmentLimsName(manageDocumentControlled.getCreateUser());
        manageDocumentControlled.setCreateUserDepartLims(departmentLimsName);
        return manageDocumentControlled;
    }
    @Override
    public int doManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
        ManageDocumentControlled manageDocumentControlled1 = manageDocumentControlledMapper.selectById(manageDocumentControlled.getId());
        if (ObjectUtils.isNotEmpty(manageDocumentControlled.getFile())) {
            if (ObjectUtils.isNotEmpty(manageDocumentControlled1.getUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + manageDocumentControlled1.getUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentControlled.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentControlled.setUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageDocumentControlledMapper.updateById(manageDocumentControlled);
    }
    @Override
    public int checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
        ManageDocumentControlled documentControlled = manageDocumentControlledMapper.selectById(manageDocumentControlled.getId());
        if (manageDocumentControlled.getState().equals("通过")) {
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + documentControlled.getUrl());
            oldFile.delete();
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentControlled.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentControlled.setUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            //将文件受控已知文件清单
            ManageDocumentList manageDocumentList = new ManageDocumentList();
            manageDocumentList.setDocumentCode(documentControlled.getDocumentCode());
            manageDocumentList.setType(documentControlled.getType());
            manageDocumentList.setName(documentControlled.getName());
            manageDocumentList.setVersion(documentControlled.getVersion());
            manageDocumentList.setWriter(documentControlled.getWriter());
            manageDocumentList.setEffectiveDate(LocalDate.now());
            manageDocumentList.setState("有效");
            manageDocumentList.setUrl(manageDocumentControlled.getUrl());
            manageDocumentListMapper.insert(manageDocumentList);
        }
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(documentControlled.getDocumentCode());
        manageRecordCheck.setDocumentName(documentControlled.getName());
        manageRecordCheck.setDocumentVersion(documentControlled.getVersion());
        manageRecordCheck.setWriteUser(userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName,documentControlled.getWriter())).getId());
        manageRecordCheck.setCheckUser(documentControlled.getDutyUser());
        manageRecordCheck.setCheckState(manageDocumentControlled.getState());
        manageRecordCheck.setRemark(documentControlled.getInstructions());
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentControlledMapper.updateById(manageDocumentControlled);
    }
    @Override
    public void checkManageDocumentControlledPdf(Long id, HttpServletResponse response) throws Exception {
        ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.selectById(id);
        File file = new File(wordUrl + "/" + manageDocumentControlled.getUrl());
        FileInputStream fileInputStream = new FileInputStream(file);
        response.setContentType("application/pdf");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "inline;filename=" + file.getName());
        response.setContentLength((int)file.length());
        OutputStream os = response.getOutputStream();
        // å°†æ–‡ä»¶å†…容写入输出流
        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = fileInputStream.read(buffer)) != -1) {
            os.write(buffer, 0, bytesRead);
        }
        os.flush();
        os.close();
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentIssueRecycleServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.ManageDocumentIssueRecycleDto;
import com.yuanchu.mom.mapper.ManageRecordCheckMapper;
import com.yuanchu.mom.mapper.ManageRecordIssueRecycleMapper;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.mapper.ManageDocumentIssueRecycleMapper;
import com.yuanchu.mom.service.ManageDocumentIssueRecycleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å‘放回收 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 09:18:24
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageDocumentIssueRecycleServiceImpl extends ServiceImpl<ManageDocumentIssueRecycleMapper, ManageDocumentIssueRecycle> implements ManageDocumentIssueRecycleService {
    @Resource
    private ManageDocumentIssueRecycleMapper manageDocumentIssueRecycleMapper;
    @Resource
    GetLook getLook;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Resource
    private ManageRecordIssueRecycleMapper manageRecordIssueRecycleMapper;
    @Override
    public Map<String, Object> pageManageDocumentIssueRecycle(Page page, ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageDocumentIssueRecycleDto.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageManageDocumentIssueRecycle");
        if (map1.get("look") == 1) manageDocumentIssueRecycleDto.setCreateUser(map1.get("userId"));
        map.put("body", manageDocumentIssueRecycleMapper.pageManageDocumentIssueRecycle(page, QueryWrappers.queryWrappers(manageDocumentIssueRecycleDto)));
        return map;
    }
    @Override
    public ManageDocumentIssueRecycleDto getManageDocumentIssueRecycle(Long id) {
        return manageDocumentIssueRecycleMapper.getManageDocumentIssueRecycle(id);
    }
    @Override
    public void exportManageDocumentIssueRecycle(ManageDocumentIssueRecycleDto manageDocumentIssueRecycleDto, HttpServletResponse response)throws Exception {
        List<ManageDocumentIssueRecycleDto> data = manageDocumentIssueRecycleMapper.pageManageDocumentIssueRecycle(new Page(-1, -1), QueryWrappers.queryWrappers(manageDocumentIssueRecycleDto)).getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String fileName = URLEncoder.encode("文件发放回收导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "文件发放回收导出").head(ManageDocumentIssueRecycleDto.class).build();
            excelWriter.write(data, mainSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int checkManageDocumentIssueRecycle(Integer id, String documentState) {
        ManageDocumentIssueRecycle manageDocumentIssueRecycle = manageDocumentIssueRecycleMapper.selectById(id);
        manageDocumentIssueRecycle.setDocumentState(documentState);
        /*新增8.4的文件审批记录*/
        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
        manageRecordCheck.setDocumentCode(manageDocumentIssueRecycle.getDocumentCode());
        manageRecordCheck.setDocumentName(manageDocumentIssueRecycle.getName());
        manageRecordCheck.setDocumentVersion(manageDocumentIssueRecycle.getVersion());
        manageRecordCheck.setCheckUser(manageDocumentIssueRecycle.getReceiveUser());
        manageRecordCheck.setCheckState(documentState);
        manageRecordCheckMapper.insert(manageRecordCheck);
        return manageDocumentIssueRecycleMapper.updateById(manageDocumentIssueRecycle);
    }
    @Override
    public int addManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle) {
        manageDocumentIssueRecycle.setDocumentState("待审核");
        if (ObjectUtils.isNotEmpty(manageDocumentIssueRecycle.getFile())){
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentIssueRecycle.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageDocumentIssueRecycle.setUrl(pathName);
        }
        /*新增8.3的发放与回收记录*/
        ManageRecordIssueRecycle manageRecordIssueRecycle = new ManageRecordIssueRecycle();
        manageRecordIssueRecycle.setDocumentCode(manageDocumentIssueRecycle.getDocumentCode());
        manageRecordIssueRecycle.setDocumentName(manageDocumentIssueRecycle.getName());
        manageRecordIssueRecycle.setDocumentVersion(manageDocumentIssueRecycle.getVersion());
        manageRecordIssueRecycle.setReceiveUser(manageDocumentIssueRecycle.getIssueUser());
        manageRecordIssueRecycle.setReceiveDate(manageDocumentIssueRecycle.getIssueDate());
        manageRecordIssueRecycleMapper.insert(manageRecordIssueRecycle);
        return manageDocumentIssueRecycleMapper.insert(manageDocumentIssueRecycle);
    }
    @Override
    public int doManageDocumentIssueRecycle(ManageDocumentIssueRecycle manageDocumentIssueRecycle) {
        ManageDocumentIssueRecycle documentIssueRecycle = manageDocumentIssueRecycleMapper.selectById(manageDocumentIssueRecycle.getId());
        //判读是否是回收
        if (ObjectUtils.isNotEmpty(manageDocumentIssueRecycle.getRecycleUser())){
            /*新增8.3的发放与回收记录*/
            ManageRecordIssueRecycle manageRecordIssueRecycle = manageRecordIssueRecycleMapper.selectOne(Wrappers.<ManageRecordIssueRecycle>lambdaQuery()
                    .eq(ManageRecordIssueRecycle::getDocumentCode, documentIssueRecycle.getDocumentCode())
                    .eq(ManageRecordIssueRecycle::getDocumentName, documentIssueRecycle.getName())
                    .eq(ManageRecordIssueRecycle::getDocumentVersion, documentIssueRecycle.getVersion())
                    .eq(ManageRecordIssueRecycle::getReceiveUser, documentIssueRecycle.getIssueUser())
                    .eq(ManageRecordIssueRecycle::getReceiveDate, documentIssueRecycle.getIssueDate()));
            manageRecordIssueRecycle.setSignedUser(manageDocumentIssueRecycle.getRecycleUser());
            manageRecordIssueRecycle.setSignedDate(manageDocumentIssueRecycle.getRecycleDate());
            manageRecordIssueRecycleMapper.updateById(manageRecordIssueRecycle);
        }
        if (ObjectUtils.isNotEmpty(manageDocumentIssueRecycle.getFile())) {
            if (ObjectUtils.isNotEmpty(documentIssueRecycle.getUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + documentIssueRecycle.getUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageDocumentIssueRecycle.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageDocumentIssueRecycle.setUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageDocumentIssueRecycleMapper.updateById(manageDocumentIssueRecycle);
    }
    @Override
    public int delManageDocumentIssueRecycle(Long id) {
        ManageDocumentIssueRecycle documentIssueRecycle = manageDocumentIssueRecycleMapper.selectById(id);
        manageRecordIssueRecycleMapper.delete(Wrappers.<ManageRecordIssueRecycle>lambdaQuery()
                .eq(ManageRecordIssueRecycle::getDocumentCode, documentIssueRecycle.getDocumentCode())
                .eq(ManageRecordIssueRecycle::getDocumentName, documentIssueRecycle.getName())
                .eq(ManageRecordIssueRecycle::getDocumentVersion, documentIssueRecycle.getVersion())
                .eq(ManageRecordIssueRecycle::getReceiveUser, documentIssueRecycle.getIssueUser())
                .eq(ManageRecordIssueRecycle::getReceiveDate, documentIssueRecycle.getIssueDate()));
        return manageDocumentIssueRecycleMapper.deleteById(id);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.UUID;
import com.alibaba.excel.EasyExcel;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.excel.ManageDocumentListListener;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.pojo.Company;
import com.yuanchu.mom.pojo.InsOrderFile;
import com.yuanchu.mom.pojo.ManageDocumentList;
import com.yuanchu.mom.mapper.ManageDocumentListMapper;
import com.yuanchu.mom.service.ManageDocumentListService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
 * æ–‡ä»¶æ¸…单
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-08 11:08:11
 */
@Service
public class ManageDocumentListServiceImpl extends ServiceImpl<ManageDocumentListMapper, ManageDocumentList> implements ManageDocumentListService {
    @Resource
    private ManageDocumentListMapper manageDocumentListMapper;
    @Resource
    GetLook getLook;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public Map<String, Object> pageManageDocumentList(Page page, ManageDocumentList manageDocumentList) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageDocumentList.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageManageDocumentList");
        if (map1.get("look") == 1) manageDocumentList.setCreateUser(map1.get("userId"));
        map.put("body", manageDocumentListMapper.pageManageDocumentList(page, QueryWrappers.queryWrappers(manageDocumentList)));
        return map;
    }
    @Override
    public int uploadFile(Integer id, MultipartFile file) {
        String urlString;
        String pathName;
        String path;
        ManageDocumentList manageDocumentList = manageDocumentListMapper.selectById(id);
        if (ObjectUtils.isNotEmpty(manageDocumentList.getUrl())){
            // åˆ é™¤æ—§æ–‡ä»¶
            File oldFile = new File(wordUrl + "/" + manageDocumentList.getUrl());
            oldFile.delete();
        }
        //上传新文件
        path = wordUrl;
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("附件上传错误");
            return 0;
        }
        manageDocumentList.setUrl(pathName);
        return manageDocumentListMapper.updateById(manageDocumentList);
    }
    @Override
    public void importExcel(List<ManageDocumentList> list) {
        if (CollectionUtil.isEmpty(list)) {
            return;
        }
        list = list.stream().filter(manageDocumentList -> ObjectUtils.isNotEmpty(manageDocumentList.getName())).collect(Collectors.toList());
        saveBatch(list);
    }
    public String wordToPdf(String wordPath, String pdfPath) {
        FileOutputStream os = null;
        try {
            InputStream is = new ClassPathResource("/lib/license.xml").getInputStream();
            License license = new License();
            license.setLicense(is);
            if (!license.getIsLicensed()) {
                System.out.println("License验证不通过...");
                return null;
            }
            //生成一个空的PDF文件
            File file = new File(pdfPath.replace(".pdf", ".pdf"));
            os = new FileOutputStream(file);
            //要转换的word文件
            com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
            doc.save(os, SaveFormat.PDF);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingParticipantsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yuanchu.mom.mapper.ManageMeetingMapper;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.yuanchu.mom.mapper.ManageMeetingParticipantsMapper;
import com.yuanchu.mom.service.ManageMeetingParticipantsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.vo.MeetingParticipantsDetailsVo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:34:27
 */
@Service
public class ManageMeetingParticipantsServiceImpl extends ServiceImpl<ManageMeetingParticipantsMapper, ManageMeetingParticipants> implements ManageMeetingParticipantsService {
    @Resource
    private ManageMeetingMapper manageMeetingMapper;
    @Override
    public MeetingParticipantsDetailsVo getParticipants(Integer id) {
        ManageMeeting manageMeeting = manageMeetingMapper.selectById(id);
        QueryWrapper<ManageMeetingParticipants> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("meeting_id",id);
        List<ManageMeetingParticipants> participantsList = this.baseMapper.selectList(queryWrapper);
        MeetingParticipantsDetailsVo vo = new MeetingParticipantsDetailsVo();
        vo.setManageMeeting(manageMeeting);
        vo.setParticipantsList(participantsList);
        return vo;
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,166 @@
package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.FilePictureRenderData;
import com.yuanchu.mom.dto.InternalMeetingParticipantDto;
import com.yuanchu.mom.dto.ManageMeetingDto;
import com.yuanchu.mom.dto.ManageMeetingParticipantsDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.DepartmentMapper;
import com.yuanchu.mom.mapper.ManageMeetingParticipantsMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.mapper.ManageMeetingMapper;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageMeetingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.sql.Wrapper;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-11 09:33:47
 */
@Service
public class ManageMeetingServiceImpl extends ServiceImpl<ManageMeetingMapper, ManageMeeting> implements ManageMeetingService {
    @Resource
    private ManageMeetingParticipantsMapper manageMeetingParticipantsMapper;
    @Autowired
    private UserMapper userMapper;
    @Override
    public IPage<ManageMeetingDto> page(Page page, String startTime, String endTime, String place) {
        IPage<ManageMeetingDto> iPage = this.baseMapper.page(page, startTime, endTime, place);
        for (ManageMeetingDto record : iPage.getRecords()) {
            List<ManageMeetingParticipants> manageMeetingParticipants = manageMeetingParticipantsMapper.selectList(Wrappers.<ManageMeetingParticipants>lambdaQuery().eq(ManageMeetingParticipants::getMeetingId, record.getId()));
            String collect = manageMeetingParticipants.stream().map(manageMeetingParticipants1 -> {
                return manageMeetingParticipants1.getParticipants() + "";
            }).collect(Collectors.joining(","));
            record.setParticipant(collect);
        }
        return iPage;
    }
    @Override
    public void addMeeting(ManageMeetingDto dto) {
        this.baseMapper.insert(dto);
        String[] ids = dto.getParticipant().split(",");
        List<ManageMeetingParticipants> list = new ArrayList<>();
        for (String id : ids) {
            User user = userMapper.selectById(id);
            ManageMeetingParticipants participants = new ManageMeetingParticipants();
            participants.setMeetingId(dto.getId());
            participants.setParticipants(Integer.parseInt(id));
            participants.setDepartment(user.getDepartment());
            list.add(participants);
        }
        list.forEach(v -> manageMeetingParticipantsMapper.insert(v));
    }
    @Override
    public int modifyMeeting(ManageMeetingDto manageMeetingDto) {
        this.baseMapper.updateById(manageMeetingDto);
        manageMeetingParticipantsMapper.delete(Wrappers.<ManageMeetingParticipants>lambdaQuery().eq(ManageMeetingParticipants::getMeetingId, manageMeetingDto.getId()));
        String[] ids = manageMeetingDto.getParticipant().split(",");
        List<ManageMeetingParticipants> list = new ArrayList<>();
        for (String id : ids) {
            User user = userMapper.selectById(id);
            ManageMeetingParticipants participants = new ManageMeetingParticipants();
            participants.setMeetingId(manageMeetingDto.getId());
            participants.setParticipants(Integer.parseInt(id));
            participants.setDepartment(user.getDepartment());
            list.add(participants);
        }
        list.forEach(v -> manageMeetingParticipantsMapper.insert(v));
        return 0;
    }
    @Override
    public void exportMeeting(Integer id, HttpServletResponse response) {
        ManageMeeting meeting = baseMapper.selectById(id);
        // æŸ¥è¯¢å‚加人员
        List<ManageMeetingParticipants> manageMeetingParticipants = manageMeetingParticipantsMapper.selectList(Wrappers.<ManageMeetingParticipants>lambdaQuery().eq(ManageMeetingParticipants::getMeetingId, id));
        List<ManageMeetingParticipants> list = manageMeetingParticipants.stream().map(manageMeetingParticipants1 -> {
            manageMeetingParticipants1.setUserName(userMapper.selectById(manageMeetingParticipants1.getParticipants()).getName());
            manageMeetingParticipants1.setDepartment(userMapper.selectUserDepartmentLimsName(manageMeetingParticipants1.getParticipants()));
            return manageMeetingParticipants1;
        }).collect(Collectors.toList());
        // åˆ›å»ºç©ºå¯¹è±¡
        List<ManageMeetingParticipantsDto> participants = new ArrayList<>();
        // æ·»åŠ å‚åŠ äººå‘˜
        for (int i = 0; i < list.size(); i++) {
            // åˆ¤æ–­æœ‰æ²¡æœ‰åˆ°11行
            if (i % 2 == 0) {
                ManageMeetingParticipantsDto manageMeetingParticipantsDto = new ManageMeetingParticipantsDto();
                manageMeetingParticipantsDto.setUserName1(list.get(i).getUserName());
                manageMeetingParticipantsDto.setDepartment1(list.get(i).getDepartment());
                participants.add(manageMeetingParticipantsDto);
            } else {
                participants.get((i-1)/2).setUserName2(list.get(i).getUserName());
                participants.get((i-1)/2).setDepartment2(list.get(i).getDepartment());
            }
        }
        InputStream inputStream = this.getClass().getResourceAsStream("/static/review-meet.docx");
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日");
        Configure configure = Configure.builder()
                .bind("meetingDetails", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("meeting", meeting);
                    put("meetingTime", meeting.getMeetingTime().format(formatter));
                    put("meetingDetails", participants);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "管理评审会议记录", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordAuditServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,679 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageDocumentAlter;
import com.yuanchu.mom.pojo.ManageRecordAudit;
import com.yuanchu.mom.mapper.ManageRecordAuditMapper;
import com.yuanchu.mom.pojo.ManageRecordCancel;
import com.yuanchu.mom.service.ManageRecordAuditService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.util.*;
/**
 * <p>
 * æ–‡ä»¶ä¿®è®¢ç”³è¯·å®¡æ‰¹è®°å½• æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-14 10:29:18
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordAuditServiceImpl extends ServiceImpl<ManageRecordAuditMapper, ManageRecordAudit> implements ManageRecordAuditService {
    @Resource
    private ManageRecordAuditMapper manageRecordAuditMapper;
    @Resource
    private UserMapper userMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    GetLook getLook;
    @Override
    public Map<String, Object> pageManageRecordAudit(Page page, ManageRecordAudit manageRecordAudit) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordAudit.class));
        IPage<ManageRecordAudit> manageRecordAuditIPage = manageRecordAuditMapper.pageManageRecordAudit(page, QueryWrappers.queryWrappers(manageRecordAudit));
        for (ManageRecordAudit record : manageRecordAuditIPage.getRecords()) {
            String limsName = userMapper.selectUserDepartmentLimsName(record.getCreateUser());
            record.setCreateUserDepart(limsName);
        }
        map.put("body", manageRecordAuditIPage);
        return map;
    }
    @Override
    public int addManageRecordAudit(ManageRecordAudit manageRecordAudit) {
        if (ObjectUtils.isNotEmpty(manageRecordAudit.getFile())) {
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageRecordAudit.getFile();
            //上传新文件
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
            manageRecordAudit.setAfterUrl(pathName);
        }
        manageRecordAudit.setCreateTime(LocalDate.now());
        return manageRecordAuditMapper.insert(manageRecordAudit);
    }
    @Override
    public int doManageRecordAudit(ManageRecordAudit manageRecordAudit) {
        ManageRecordAudit recordAudit= manageRecordAuditMapper.selectById(manageRecordAudit.getId());
        if (ObjectUtils.isNotEmpty(manageRecordAudit.getFile())) {
            if (ObjectUtils.isNotEmpty(recordAudit.getAfterUrl())) {
                // åˆ é™¤æ—§æ–‡ä»¶
                File oldFile = new File(wordUrl + "/" + recordAudit.getAfterUrl());
                oldFile.delete();
            }
            //上传新文件
            String urlString;
            String pathName;
            String path;
            MultipartFile file = manageRecordAudit.getFile();
            path = wordUrl;
            try {
                File realpath = new File(path);
                if (!realpath.exists()) {
                    realpath.mkdirs();
                }
                pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                urlString = realpath + "/" + pathName;
                file.transferTo(new File(urlString));
                manageRecordAudit.setAfterUrl(pathName);
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("附件上传错误");
                return 0;
            }
        }
        return manageRecordAuditMapper.updateById(manageRecordAudit);
    }
    @Override
    public int ratifyManageRecordAudit(Integer id) {
        ManageRecordAudit recordAudit = manageRecordAuditMapper.selectById(id);
        recordAudit.setRatifyUser(getLook.selectPowerByMethodAndUserId(null).get("userId"));
        return manageRecordAuditMapper.updateById(recordAudit);
    }
    @Override
    public String exportOutManageRecordAudit(ManageRecordAudit manageRecordAudit, HttpServletResponse response) {
        List<ManageRecordAudit> manageRecordAuditList = manageRecordAuditMapper.pageManageRecordAudit(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordAudit)).getRecords();
        for (ManageRecordAudit record : manageRecordAuditList) {
            String limsName = userMapper.selectUserDepartmentLimsName(record.getCreateUser());
            record.setCreateUserDepart(limsName);
        }
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/audit-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> auditList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordAuditList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 11; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.∑1");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number∑2");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("章节号@Chapter number∑3");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("页码@Page number∑4");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订次数@Number of revisions∑5");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5 || j == 6) {
                                //第六列
                                textRenderData.setText("版本号 Version number∑6");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第七列
                                textRenderData.setText("修订内容@Revision of contents∑7");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                //第八列
                                textRenderData.setText("修订人@Revised∑8");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 9 ) {
                                //第九列
                                textRenderData.setText("批准人@Approver∑9");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十列
                                textRenderData.setText("日期@Date∑10");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 1) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.∑1");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number∑2");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("章节号@Chapter number∑3");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("页码@Page number∑4");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订次数@Number of revisions∑5");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5 ) {
                                //第六列
                                textRenderData.setText("修改前@Before modification");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("修改后@After modification");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j == 7) {
                                //第七列
                                textRenderData.setText("修订内容@Revision of contents∑7");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                //第八列
                                textRenderData.setText("修订人@Revised∑8");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 9 ) {
                                //第九列
                                textRenderData.setText("批准人@Approver∑9");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十列
                                textRenderData.setText("日期@Date∑10");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getCapter());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getPages());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getNumber()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getBeforeVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getAfterVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getAlterThing());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getAlterUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }else if (j == 9) {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getRatifyUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else {
                                try {
                                    textRenderData.setText(manageRecordAuditList.get((i - 2) + (index1 - 1) * 15).getDate()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("audit", tableRenderData);
                table.put("index1", index1);
                auditList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("cancelList", auditList);
                }});
        String name = UUID.randomUUID() + "_文件修订表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCancelServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,484 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.controller.ManageRecordCancelController;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageRecordIssueRecycleMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageRecordCancel;
import com.yuanchu.mom.mapper.ManageRecordCancelMapper;
import com.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageRecordCancelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
 * ä½œåºŸæ–‡ä»¶é”€é­‚记录 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 01:27:22
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordCancelServiceImpl extends ServiceImpl<ManageRecordCancelMapper, ManageRecordCancel> implements ManageRecordCancelService {
    @Resource
    private ManageRecordCancelMapper manageRecordCancelMapper;
    @Resource
    private GetLook getLook;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Override
    public Map<String, Object> pageManageRecordCancel(Page page, ManageRecordCancel manageRecordCancel) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordCancel.class));
        map.put("body", manageRecordCancelMapper.pageManageRecordCancel(page, QueryWrappers.queryWrappers(manageRecordCancel)));
        return map;
    }
    @Override
    public int ratifyManageRecordCancel(Integer id, String ratifyState) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        ManageRecordCancel manageRecordCancel = manageRecordCancelMapper.selectById(id);
        manageRecordCancel.setRatifyUser(userId);
        manageRecordCancel.setRatifyTime(LocalDate.now());
        manageRecordCancel.setRatifyState(ratifyState);
        return manageRecordCancelMapper.updateById(manageRecordCancel);
    }
    @Override
    public String exportOutManageRecordCancel(ManageRecordCancel manageRecordCancel, HttpServletResponse response) {
        List<ManageRecordCancel> manageRecordCancelList = manageRecordCancelMapper.pageManageRecordCancel(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordCancel)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/cancel-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> cancelList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordCancelList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 16; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 10; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件(记录)名称@File (record) name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("数量@Quantity");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("销毁原因@Reason for destruction");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("申请人@Applicant");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("日期@Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第八列
                                textRenderData.setText("批准@Approve");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8 ) {
                                //第九列
                                textRenderData.setText("日期@Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getQty()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getReason());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getCreateUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getCreateTime()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getRatifyUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getRatifyTime()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }else {
                                try {
                                    textRenderData.setText(manageRecordCancelList.get((i - 1) + (index1 - 1) * 15).getRemark());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("cancel", tableRenderData);
                table.put("index1", index1);
                cancelList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("cancelList", cancelList);
                }});
        String name = UUID.randomUUID() + "_文件销毁申请表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordCancel(MultipartFile file) {
        List<ManageRecordCancel> manageRecordCancelList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 10) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
                        ManageRecordCancel manageRecordCancel = new ManageRecordCancel();
                        manageRecordCancel.setDocumentCode(row.getCell(1).getText());
                        manageRecordCancel.setDocumentName(row.getCell(2).getText());
                        manageRecordCancel.setQty(Integer.valueOf(row.getCell(3).getText()));
                        manageRecordCancel.setReason(row.getCell(4).getText());
                        try {
                            manageRecordCancel.setCreateUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(5).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCancel.setCreateUser(null);
                        }
                        try {
                            manageRecordCancel.setRatifyUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(7).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCancel.setRatifyUser(null);
                        }
                        try {
                            manageRecordCancel.setCreateTime(LocalDate.parse(row.getCell(6).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordCancel.setCreateTime(null);
                        }
                        try {
                            manageRecordCancel.setRatifyTime(LocalDate.parse(row.getCell(8).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordCancel.setRatifyTime(null);
                        }
                        manageRecordCancel.setRemark(row.getCell(9).getText());
                        ManageRecordCancel cancel = manageRecordCancelMapper.selectOne(Wrappers.<ManageRecordCancel>lambdaQuery()
                                .eq(ManageRecordCancel::getDocumentCode, manageRecordCancel.getDocumentCode())
                                .eq(ManageRecordCancel::getDocumentName, manageRecordCancel.getDocumentName()));
                        if (ObjectUtils.isNotEmpty(cancel)) {
                            manageRecordCancel.setId(cancel.getId());
                        }
                        manageRecordCancelList.add(manageRecordCancel);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordCancelList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCheckServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,475 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageRecordCheck;
import com.yuanchu.mom.mapper.ManageRecordCheckMapper;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.pojo.ManageRecordVerify;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageRecordCheckService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ–‡ä»¶å®¡æ‰¹è®°å½•(含修订后再次审批记录) æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 02:31:36
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordCheckServiceImpl extends ServiceImpl<ManageRecordCheckMapper, ManageRecordCheck> implements ManageRecordCheckService {
    @Resource
    private ManageRecordCheckMapper manageRecordCheckMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Resource
    GetLook getLook;
    @Override
    public Map<String, Object> pageManageRecordCheck(Page page, ManageRecordCheck manageRecordCheck) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordCheck.class));
        map.put("body", manageRecordCheckMapper.pageManageRecordCheck(page, QueryWrappers.queryWrappers(manageRecordCheck)));
        return map;
    }
    @Override
    public int checkManageRecordCheck(Integer id, String checkState) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        ManageRecordCheck manageRecordCheck = manageRecordCheckMapper.selectById(id);
        manageRecordCheck.setCheckState(checkState);
        manageRecordCheck.setCheckUser(userId);
        return manageRecordCheckMapper.updateById(manageRecordCheck);
    }
    @Override
    public int ratifyManageRecordCheck(Integer id, String ratifyState) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        ManageRecordCheck manageRecordCheck = manageRecordCheckMapper.selectById(id);
        manageRecordCheck.setRatifyState(ratifyState);
        manageRecordCheck.setRatifyUser(userId);
        return manageRecordCheckMapper.updateById(manageRecordCheck);
    }
    @Override
    public String exportOutManageRecordCheck(ManageRecordCheck manageRecordCheck, HttpServletResponse response) {
        List<ManageRecordCheck> manageRecordCheckList = manageRecordCheckMapper.pageManageRecordCheck(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordCheck)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/check-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> checkList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordCheckList.size(); c++) {
            //超过20行换页
            if (c % 20 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 21; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 9; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件名称@File name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版/次@Edition/time");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("编制@Editor");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("审核@Audit");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("批准@Approve");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第八列
                                textRenderData.setText("批准日期@Date of approve");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第九列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        } else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentName();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getWriteUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getCheckUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getRatifyUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getRatifyDate() + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordCheckList.get((i - 1) + (index1 - 1) * 20).getRemark());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("check", tableRenderData);
                table.put("index1", index1);
                checkList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("checkList", checkList);
                }});
        String name = UUID.randomUUID() + "_文件审批记录" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        String path = wordUrl + "/" + name;
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordCheck(MultipartFile file) {
        List<ManageRecordCheck> manageRecordCheckList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 9) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
                        ManageRecordCheck manageRecordCheck = new ManageRecordCheck();
                        manageRecordCheck.setDocumentName(row.getCell(1).getText());
                        manageRecordCheck.setDocumentCode(row.getCell(2).getText());
                        manageRecordCheck.setDocumentVersion(row.getCell(3).getText());
                        try {
                            manageRecordCheck.setWriteUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(4).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCheck.setWriteUser(null);
                        }
                        try {
                            manageRecordCheck.setCheckUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(5).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCheck.setCheckUser(null);
                        }
                        try {
                            manageRecordCheck.setRatifyUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(6).getText())).getId());
                        } catch (Exception e) {
                            manageRecordCheck.setRatifyUser(null);
                        }
                        try {
                            manageRecordCheck.setRatifyDate(LocalDate.parse(row.getCell(7).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordCheck.setRatifyDate(null);
                        }
                        manageRecordCheck.setRemark(row.getCell(8).getText());
                        ManageRecordCheck check = manageRecordCheckMapper.selectOne(Wrappers.<ManageRecordCheck>lambdaQuery()
                                .eq(ManageRecordCheck::getDocumentCode, manageRecordCheck.getDocumentCode())
                                .eq(ManageRecordCheck::getDocumentName, manageRecordCheck.getDocumentName())
                                .eq(ManageRecordCheck::getDocumentVersion, manageRecordCheck.getDocumentVersion()));
                        if (ObjectUtils.isNotEmpty(check)) {
                            manageRecordCheck.setId(check.getId());
                        }
                        manageRecordCheckList.add(manageRecordCheck);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordCheckList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,526 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageRecordIntervalsTotalMapper;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.mapper.ManageRecordIntervalsMapper;
import com.yuanchu.mom.service.ManageRecordIntervalsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½• æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 10:54:31
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordIntervalsServiceImpl extends ServiceImpl<ManageRecordIntervalsMapper, ManageRecordIntervals> implements ManageRecordIntervalsService {
    @Resource
    private ManageRecordIntervalsMapper manageRecordIntervalsMapper;
    @Resource
    private ManageRecordIntervalsTotalMapper manageRecordIntervalsTotalMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Override
    public Map<String, Object> pageManageRecordIntervals(Page page, ManageRecordIntervals manageRecordIntervals) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordIntervals.class));
        map.put("body", manageRecordIntervalsMapper.pageManageRecordIntervals(page, QueryWrappers.queryWrappers(manageRecordIntervals)));
        return map;
    }
    @Override
    public String exportOutManageRecordIntervals(ManageRecordIntervals manageRecordIntervals, HttpServletResponse response) {
        List<ManageRecordIntervals> manageRecordIntervalsList = manageRecordIntervalsMapper.pageManageRecordIntervals(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordIntervals)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/intervals-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> intervalsList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordIntervalsList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 7; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件名称@File name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版本号@Version number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订号@Revision number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("适宜性@Suitability");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第七列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 16) {
                            //最后一行
                            textRenderData.setText("注:适宜性一栏打“√”表此文件适宜,“×”表示不适宜,文件需修订或作废。@Note:The“√”table in the suitability column is suitable for this document, the“×”table is not suitable,and the document needs to berevised or invalidated @审查日期: @Review Date:@参加审查人员签名:@Signatures of the reviewers particip ating in the review:∑1");
                            renderData.add(textRenderData);
                            paragraphRenderData.setContents(renderData);
                            paragraphRenderDataList.add(paragraphRenderData);
                            cellRenderData.setParagraphs(paragraphRenderDataList);
                            cells.add(cellRenderData);
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i -1) + (index1 - 1) * 15).getRevision());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getSuitability());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getRemark() );
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("intervals", tableRenderData);
                table.put("index1", index1);
                intervalsList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("intervalsList", intervalsList);
                }});
        String name = UUID.randomUUID() + "_文件定期审查记录表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordIntervals(MultipartFile file) {
        List<ManageRecordIntervals> manageRecordIntervalsList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //获取当前年份
        LocalDate currentDate = LocalDate.now();
        // å®šä¹‰æ—¥æœŸæ ¼å¼
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        // æ ¼å¼åŒ–当前日期
        String currentMonth = currentDate.format(formatter);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectOne(Wrappers.<ManageRecordIntervalsTotal>lambdaQuery().eq(ManageRecordIntervalsTotal::getYear, currentMonth));
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 7) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
                        ManageRecordIntervals manageRecordIntervals = new ManageRecordIntervals();
                        manageRecordIntervals.setDocumentName(row.getCell(1).getText());
                        manageRecordIntervals.setDocumentCode(row.getCell(2).getText());
                        manageRecordIntervals.setDocumentVersion(row.getCell(3).getText());
                        manageRecordIntervals.setRevision(row.getCell(4).getText());
                        manageRecordIntervals.setSuitability(row.getCell(5).getText());
                        manageRecordIntervals.setRemark(row.getCell(6).getText());
                        manageRecordIntervals.setRecordIntervalsTotalId(manageRecordIntervalsTotal.getId());
                        ManageRecordIntervals intervals = manageRecordIntervalsMapper.selectOne(Wrappers.<ManageRecordIntervals>lambdaQuery()
                                .eq(ManageRecordIntervals::getDocumentCode, manageRecordIntervals.getDocumentCode())
                                .eq(ManageRecordIntervals::getDocumentName, manageRecordIntervals.getDocumentName())
                                .eq(ManageRecordIntervals::getRecordIntervalsTotalId, manageRecordIntervalsTotal.getId())
                                .eq(ManageRecordIntervals::getDocumentVersion, manageRecordIntervals.getDocumentVersion()));
                        if (ObjectUtils.isNotEmpty(intervals)) {
                            manageRecordIntervals.setId(intervals.getId());
                        }
                        manageRecordIntervalsList.add(manageRecordIntervals);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordIntervalsList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
    @Override
    public int addManageRecordIntervals(ManageRecordIntervals manageRecordIntervals) {
        //获取当前年份
        LocalDate currentDate = LocalDate.now();
        // å®šä¹‰æ—¥æœŸæ ¼å¼
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        // æ ¼å¼åŒ–当前日期
        String currentMonth = currentDate.format(formatter);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectOne(Wrappers.<ManageRecordIntervalsTotal>lambdaQuery().eq(ManageRecordIntervalsTotal::getYear, currentMonth));
        manageRecordIntervals.setRecordIntervalsTotalId(manageRecordIntervalsTotal.getId());
        manageRecordIntervalsMapper.insert(manageRecordIntervals);
        manageRecordIntervalsTotal.setTotalNum(1 + manageRecordIntervalsTotal.getTotalNum());
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    @Override
    public int delManageRecordIntervals(Integer id) {
        ManageRecordIntervals manageRecordIntervals = manageRecordIntervalsMapper.selectById(id);
        manageRecordIntervalsMapper.deleteById(id);
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectById(manageRecordIntervals.getRecordIntervalsTotalId());
        manageRecordIntervalsTotal.setTotalNum(manageRecordIntervalsTotal.getTotalNum() - 1);
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsTotalServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,503 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageRecordIntervalsMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.mapper.ManageRecordIntervalsTotalMapper;
import com.yuanchu.mom.service.ManageRecordIntervalsTotalService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
 * æ–‡ä»¶å®šæœŸå®¡æŸ¥è®°å½•总历史记录表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 01:12:11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordIntervalsTotalServiceImpl extends ServiceImpl<ManageRecordIntervalsTotalMapper, ManageRecordIntervalsTotal> implements ManageRecordIntervalsTotalService {
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private ManageRecordIntervalsTotalMapper manageRecordIntervalsTotalMapper;
    @Resource
    private ManageRecordIntervalsMapper manageRecordIntervalsMapper;
    @Override
    public Map<String, Object> pageManageRecordIntervalsTotal(Page page, ManageRecordIntervalsTotal manageRecordIntervalsTotal) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordIntervalsTotal.class));
        map.put("body", manageRecordIntervalsTotalMapper.pageManageRecordIntervalsTotal(page, QueryWrappers.queryWrappers(manageRecordIntervalsTotal)));
        return map;
    }
    @Override
    public int submitManageRecordIntervalsTotal(Integer id) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到填表人的电子签名,请上传自己的电子签名!");
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectById(id);
        manageRecordIntervalsTotal.setSubmitUser(userId);
        manageRecordIntervalsTotal.setSubmitDate(LocalDate.now());
        manageRecordIntervalsTotal.setSubmitUrl(user.getSignatureUrl());
        //生成样品处理申请表并将填表人的电子签名印上
        manageRecordIntervalsTotal.setUrl(recordTotaldeal(id,user.getSignatureUrl()));
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    @Override
    public int ratifyManageRecordIntervalsTotal(Integer id, String ratifyState) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到批准人的电子签名,请上传自己的电子签名!");
        ManageRecordIntervalsTotal manageRecordIntervalsTotal = manageRecordIntervalsTotalMapper.selectById(id);
        manageRecordIntervalsTotal.setRatifyUser(userId);
        manageRecordIntervalsTotal.setRatifyState(ratifyState);
        manageRecordIntervalsTotal.setRatifyDate(LocalDate.now());
        manageRecordIntervalsTotal.setRatifyUrl(user.getSignatureUrl());
        //将批准人的签名印上
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        wordInsertUrl(new HashMap<String, Object>() {{
            put("ratifyDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear());
            put("ratifyDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日")));
            put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
        }},  wordUrl+"/"+manageRecordIntervalsTotal.getUrl());
        return manageRecordIntervalsTotalMapper.updateById(manageRecordIntervalsTotal);
    }
    public int wordInsertUrl(Map<String, Object> map, String url) {
        XWPFTemplate template = XWPFTemplate.compile(url).render(map);
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(url)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return 1;
    }
    private String recordTotaldeal(Integer id,String signatureUrl){
        List<ManageRecordIntervals> manageRecordIntervalsList = manageRecordIntervalsMapper.selectList(Wrappers.<ManageRecordIntervals>lambdaQuery().eq(ManageRecordIntervals::getRecordIntervalsTotalId,id));
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/intervals-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> intervalsList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordIntervalsList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 7; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件名称@File name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版本号@Version number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("修订号@Revision number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("适宜性@Suitability");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第七列
                                textRenderData.setText("备注@Remark");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 16) {
                            //最后一行
                            textRenderData.setText("注:适宜性一栏打“√”表此文件适宜,“×”表示不适宜,文件需修订或作废。@Note:The“√”table in the suitability column is suitable for this document, the“×”table is not suitable,and the document needs to berevised or invalidated @审查日期: @Review Date:@参加审查人员签名:@Signatures of the reviewers particip ating in the review:∑22");
                            renderData.add(textRenderData);
                            paragraphRenderData.setContents(renderData);
                            paragraphRenderDataList.add(paragraphRenderData);
                            cellRenderData.setParagraphs(paragraphRenderDataList);
                            cells.add(cellRenderData);
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i -1) + (index1 - 1) * 15).getRevision());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getSuitability());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordIntervalsList.get((i - 1) + (index1 - 1) * 15).getRemark() );
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("intervals", tableRenderData);
                table.put("index1", index1);
                intervalsList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("intervalsList", intervalsList);
                    put("submitDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日")));
                    put("submitDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear());
                    put("ratifyDate", "{{ratifyDate}}");
                    put("ratifyDateEn","{{ratifyDateEn}}");
                    put("ratifyUrl", null);
                    put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl));
                }});
        String name = UUID.randomUUID() + "_文件定期审查记录表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIssueRecycleServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,699 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageRecordCheck;
import com.yuanchu.mom.pojo.ManageRecordIssueRecycle;
import com.yuanchu.mom.mapper.ManageRecordIssueRecycleMapper;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageRecordIssueRecycleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
 * æ‰€æœ‰æ–‡ä»¶(内、外部文件)的发放与回收记录 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-13 09:11:05
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordIssueRecycleServiceImpl extends ServiceImpl<ManageRecordIssueRecycleMapper, ManageRecordIssueRecycle> implements ManageRecordIssueRecycleService {
    @Resource
    private ManageRecordIssueRecycleMapper manageRecordIssueRecycleMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    private UserMapper userMapper;
    @Override
    public Map<String, Object> pageManageRecordIssueRecycle(Page page, ManageRecordIssueRecycle manageRecordIssueRecycle) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordIssueRecycle.class));
        map.put("body", manageRecordIssueRecycleMapper.pageManageRecordIssueRecycle(page, QueryWrappers.queryWrappers(manageRecordIssueRecycle)));
        return map;
    }
    @Override
    public String exportOutManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle, HttpServletResponse response) {
        List<ManageRecordIssueRecycle> manageRecordIssueRecycleList = manageRecordIssueRecycleMapper.pageManageRecordIssueRecycle(new Page(-1, -1), QueryWrappers.queryWrappers(manageRecordIssueRecycle)).getRecords();
        //生成检验报告发放登记表
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/recycle-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        List<Map<String, Object>> recycleList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordIssueRecycleList.size(); c++) {
            //超过15行换页
            if (c % 15 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 17; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 12; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.∑1");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number∑2");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件名称@File name∑3");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版号@Edition number∑4");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("份数@Number of copies∑5");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("文件类别@File category∑6");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("分发号@Distribution number∑7");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第八列
                                textRenderData.setText("接收部门@Receiving department∑8");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8 || j == 9) {
                                //第九列
                                textRenderData.setText("发放 Issue∑9");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 10 || j == 11) {
                                //第八列
                                textRenderData.setText("回收 Reclaim∑10");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else if (i == 1) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.∑1");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列
                                textRenderData.setText("文件编号@File number∑2");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列
                                textRenderData.setText("文件名称@File name∑3");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列
                                textRenderData.setText("版号@Edition number∑4");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列
                                textRenderData.setText("份数@Number of copies∑5");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列
                                textRenderData.setText("文件类别@File category∑6");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列
                                textRenderData.setText("分发号@Distribution number∑7");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                //第八列
                                textRenderData.setText("接收部门@Receiving department∑8");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                //第九列
                                textRenderData.setText("接受人@Recipients");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 9) {
                                //第十列
                                textRenderData.setText("日期@Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 10) {
                                //第十一列
                                textRenderData.setText("签收人@Signatory");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                //第十二列
                                textRenderData.setText("日期@Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try {
                                    String insReportCode = manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getDocumentCode();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getDocumentVersion());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getPages());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getDocumentType());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getNumber());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 7) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getDepartLims());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 8) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getReceiveUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 9) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getReceiveDate() + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 10) {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getSignedUserName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else {
                                try {
                                    textRenderData.setText(manageRecordIssueRecycleList.get((i - 2) + (index1 - 1) * 15).getSignedDate() + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("recycle", tableRenderData);
                table.put("index1", index1);
                recycleList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("size", finalIndex);
                    put("recycleList", recycleList);
                }});
        String name = UUID.randomUUID() + "_所有文件的发放与回收记录" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String path = wordUrl + "/" + name;
        // å¤„理合并单元格的问题
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
            XWPFDocument document = new XWPFDocument(stream);
            List<XWPFTable> xwpfTables = document.getTables();
            for (int i = 0; i < xwpfTables.size(); i++) {
                Set<String> set1 = new HashSet<>();
                Map<String, Map<String, Integer>> maps = new HashMap<>();
                for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("∑") > -1) {
                            String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                            if (set1.add(split[1])) {
                                Map<String, Integer> map = new HashMap<>();
                                map.put("sr", j);
                                map.put("sc", k);
                                map.put("er", j + 0);
                                map.put("ec", k + 0);
                                maps.put(split[1], map);
                            } else {
                                Map<String, Integer> map1 = maps.get(split[1]);
                                if (j == map1.get("sr")) {
                                    map1.put("ec", map1.get("ec") + 1);
                                } else if (k == map1.get("sc")) {
                                    map1.put("er", map1.get("er") + 1);
                                }
                            }
                            String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                            xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER);
                        }
                    }
                }
                // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
                List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
                entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
                // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
                List<String> list = new ArrayList<>();
                for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                    list.add(entry.getKey());
                }
                for (int a = list.size() - 1; a >= 0; a--) {
                    Map<String, Integer> v = maps.get(list.get(a));
                    for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                        if (v.get("ec") > v.get("sc")) {
                            try {
                                mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
//                                TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                            } catch (Exception e) {
                            }
                        }
                    }
                    if (v.get("er") > v.get("sr")) {
                        try {
                            mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
//                            TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                        } catch (Exception e) {
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream = new FileOutputStream(path);
            document.write(fileOutputStream);
            fileOutputStream.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
    @Override
    public int exportInManageRecordIssueRecycle(MultipartFile file) {
        List<ManageRecordIssueRecycle> manageRecordIssueRecycleList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                for (int i = 2; i < rows.size(); i++) { // ä»Žç¬¬ä¸‰è¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 12) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
                        ManageRecordIssueRecycle manageRecordIssueRecycle = new ManageRecordIssueRecycle();
                        manageRecordIssueRecycle.setDocumentCode(row.getCell(1).getText());
                        manageRecordIssueRecycle.setDocumentName(row.getCell(2).getText());
                        manageRecordIssueRecycle.setDocumentVersion(row.getCell(3).getText());
                        manageRecordIssueRecycle.setPages(row.getCell(4).getText());
                        manageRecordIssueRecycle.setDocumentType(row.getCell(5).getText());
                        manageRecordIssueRecycle.setNumber(row.getCell(6).getText());
                        manageRecordIssueRecycle.setDepartLims(row.getCell(7).getText());
                        try {
                            manageRecordIssueRecycle.setReceiveUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(8).getText())).getId());
                        } catch (Exception e) {
                            manageRecordIssueRecycle.setReceiveUser(null);
                        }
                        try {
                            manageRecordIssueRecycle.setSignedUser(userMapper.selectOne(Wrappers.<User>lambdaQuery()
                                    .eq(User::getName, row.getCell(10).getText())).getId());
                        } catch (Exception e) {
                            manageRecordIssueRecycle.setSignedUser(null);
                        }
                        try {
                            manageRecordIssueRecycle.setReceiveDate(LocalDate.parse(row.getCell(9).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordIssueRecycle.setReceiveDate(null);
                        }
                        try {
                            manageRecordIssueRecycle.setSignedDate(LocalDate.parse(row.getCell(11).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordIssueRecycle.setSignedDate(null);
                        }
                        ManageRecordIssueRecycle issueRecycle = manageRecordIssueRecycleMapper.selectOne(Wrappers.<ManageRecordIssueRecycle>lambdaQuery()
                                .eq(ManageRecordIssueRecycle::getDocumentCode, manageRecordIssueRecycle.getDocumentCode())
                                .eq(ManageRecordIssueRecycle::getDocumentName, manageRecordIssueRecycle.getDocumentName())
                                .eq(ManageRecordIssueRecycle::getDocumentVersion, manageRecordIssueRecycle.getDocumentVersion()));
                        if (ObjectUtils.isNotEmpty(issueRecycle)) {
                            manageRecordIssueRecycle.setId(issueRecycle.getId());
                        }
                        manageRecordIssueRecycleList.add(manageRecordIssueRecycle);
                    }
                }
            }
            saveOrUpdateBatch(manageRecordIssueRecycleList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
    @Override
    public int addManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle) {
        return manageRecordIssueRecycleMapper.insert(manageRecordIssueRecycle);
    }
    @Override
    public int doManageRecordIssueRecycle(ManageRecordIssueRecycle manageRecordIssueRecycle) {
        return manageRecordIssueRecycleMapper.updateById(manageRecordIssueRecycle);
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordTotalServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,427 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.*;
import com.deepoove.poi.data.style.*;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageRecordVerifyMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.mapper.ManageRecordTotalMapper;
import com.yuanchu.mom.pojo.ManageRecordVerify;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageRecordTotalService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.commons.io.IOUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录总历史记录表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:30:08
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordTotalServiceImpl extends ServiceImpl<ManageRecordTotalMapper, ManageRecordTotal> implements ManageRecordTotalService {
    @Resource
    private ManageRecordTotalMapper manageRecordTotalMapper;
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    GetLook getLook;
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private ManageRecordVerifyMapper manageRecordVerifyMapper;
    @Override
    public Map<String, Object> pageManageRecordTotal(Page page, ManageRecordTotal manageRecordTotal) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordTotal.class));
        map.put("body", manageRecordTotalMapper.pageProcessTotaldeal(page, QueryWrappers.queryWrappers(manageRecordTotal)));
        return map;
    }
    @Override
    public int submitManageRecordTotal(Integer id) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到填表人的电子签名,请上传自己的电子签名!");
        ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectById(id);
        manageRecordTotal.setSubmitUser(userId);
        manageRecordTotal.setSubmitDate(LocalDate.now());
        manageRecordTotal.setSubmitUrl(user.getSignatureUrl());
        //生成样品处理申请表并将填表人的电子签名印上
        manageRecordTotal.setUrl(recordTotaldeal(id,user.getSignatureUrl()));
        return manageRecordTotalMapper.updateById(manageRecordTotal);
    }
    @Override
    public int ratifyManageRecordTotal(Integer id, String ratifyState) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        User user = userMapper.selectById(userId);
        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到批准人的电子签名,请上传自己的电子签名!");
        ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectById(id);
        manageRecordTotal.setRatifyUser(userId);
        manageRecordTotal.setRatifyState(ratifyState);
        manageRecordTotal.setRatifyDate(LocalDate.now());
        manageRecordTotal.setRatifyUrl(user.getSignatureUrl());
        //将批准人的签名印上
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        wordInsertUrl(new HashMap<String, Object>() {{
            put("ratifyDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear());
            put("ratifyDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日")));
            put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
        }},  wordUrl+"/"+manageRecordTotal.getUrl());
        return manageRecordTotalMapper.updateById(manageRecordTotal);
    }
    public int wordInsertUrl(Map<String, Object> map, String url) {
        XWPFTemplate template = XWPFTemplate.compile(url).render(map);
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(url)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return 1;
    }
    private String recordTotaldeal(Integer id,String signatureUrl){
        List<ManageRecordVerify> manageRecordVerifies = manageRecordVerifyMapper.selectList(Wrappers.<ManageRecordVerify>lambdaQuery().eq(ManageRecordVerify::getManageRecordTotalId,id));
        String url;
        try {
            InputStream inputStream = this.getClass().getResourceAsStream("/static/verify-deal.docx");
            File file = File.createTempFile("temp", ".tmp");
            OutputStream outputStream = new FileOutputStream(file);
            IOUtils.copy(inputStream, outputStream);
            url = file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            throw new ErrorException("找不到模板文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        List<Map<String, Object>> verifyList = new ArrayList<>();
        Integer index = 1;
        Integer index1 = 1;
        for (int c = 0; c < manageRecordVerifies.size(); c++) {
            //超过21行换页
            if (c % 20 == 0) {
                List<RowRenderData> rows = new ArrayList<>();
                //表格的行数
                for (int i = 0; i < 21; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    for (int j = 0; j < 8; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            if (j == 0) {
                                //第一列序号
                                textRenderData.setText("序号@No.");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                //第二列样品名称
                                textRenderData.setText("外来文件名称@Foreign file name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 2) {
                                //第三列样品编号
                                textRenderData.setText("文件编号@File number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 3) {
                                //第四列供样单位
                                textRenderData.setText("标准规范名称@Standard specification name");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 4) {
                                //第五列数量
                                textRenderData.setText("标准号@Stanard number");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 5) {
                                //第六列处理方式
                                textRenderData.setText("生效日期@Effective Date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 6) {
                                //第七列处理方式
                                textRenderData.setText("作废日期@Void date");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }else {
                                //第八列时间
                                textRenderData.setText("备注@Remaek");
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                        else {
                            //其他行
                            if (j == 0) {
                                //第一列
                                try{
                                    String sampleName = manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getDocumentName();
                                    textRenderData.setText(index + "");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                index++;
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            } else if (j == 1) {
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getDocumentName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j == 2) {
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getDocumentCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j == 3) {
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getStandardName());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j == 4) {
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getStandardCode());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j == 5) {
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getEffectiveDate()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else if (j==6){
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getCancelDate()+"");
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                            else {
                                try{
                                    textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getNote());
                                } catch (Exception e) {
                                    textRenderData.setText("");
                                }
                                renderData.add(textRenderData);
                                paragraphRenderData.setContents(renderData);
                                paragraphRenderDataList.add(paragraphRenderData);
                                cellRenderData.setParagraphs(paragraphRenderDataList);
                                cells.add(cellRenderData);
                            }
                        }
                    }
                    rowRenderData.setCells(cells);
                    if (rowRenderData.getCells().size() != 0) {
                        rows.add(rowRenderData);
                    }
                }
                TableRenderData tableRenderData = new TableRenderData();
                tableRenderData.setRows(rows);
                int countSize = tableRenderData.getRows().get(0).getCells().size();
                for (RowRenderData row : tableRenderData.getRows()) {
                    if (row.getCells().size() != countSize) {
                        throw new ErrorException("每行单元格不相等");
                    }
                }
                TableStyle tableStyle = new TableStyle();
                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
                tableStyle.setAlign(TableRowAlign.CENTER);
                BorderStyle borderStyle = new BorderStyle();
                borderStyle.setColor("000000");
                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
                borderStyle.setSize(14);
                tableStyle.setLeftBorder(borderStyle);
                tableStyle.setTopBorder(borderStyle);
                tableStyle.setRightBorder(borderStyle);
                tableStyle.setBottomBorder(borderStyle);
                tableRenderData.setTableStyle(tableStyle);
                Map<String, Object> table = new HashMap<>();
                table.put("verify", tableRenderData);
                table.put("index1", index1);
                verifyList.add(table);
                index1++;
            }
        }
        Integer finalIndex = index1;
        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("verifyList", verifyList);
                    put("size", finalIndex);
                    put("submitDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日")));
                    put("submitDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear());
                    put("ratifyDate", "{{ratifyDate}}");
                    put("ratifyDateEn","{{ratifyDateEn}}");
                    put("ratifyUrl", null);
                    put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl));
                }});
        String name = UUID.randomUUID() + "_样品处理申请表" + ".docx";
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //处理中英文换行的问题
        String path = wordUrl + "/" + name;
        try {
            FileInputStream stream1 = new FileInputStream(path);
            XWPFDocument document1 = new XWPFDocument(stream1);
            List<XWPFTable> xwpfTables1 = document1.getTables();
            for (int i = 0; i < xwpfTables1.size(); i++) {
                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                            String[] split = text.split("@");
                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                            XWPFRun run = xwpfParagraph.createRun();
                            run.setText(split[0]);
                            if (ObjectUtils.isNotNull(split[1])) {
                                run.addBreak();
                                run.setText(split[1]);
                            }
                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                        }
                    }
                }
            }
            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
            document1.write(fileOutputStream1);
            fileOutputStream1.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return name;
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordVerifyServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageRecordTotalMapper;
import com.yuanchu.mom.pojo.ManageRecordTotal;
import com.yuanchu.mom.pojo.ManageRecordVerify;
import com.yuanchu.mom.mapper.ManageRecordVerifyMapper;
import com.yuanchu.mom.service.ManageRecordVerifyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * å¤–来文件确认记录 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 10:29:44
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ManageRecordVerifyServiceImpl extends ServiceImpl<ManageRecordVerifyMapper, ManageRecordVerify> implements ManageRecordVerifyService {
    @Resource
    private ManageRecordVerifyMapper manageRecordVerifyMapper;
    @Resource
    private ManageRecordTotalMapper manageRecordTotalMapper;
    @Override
    public Map<String, Object> pageManageRecordVerify(Page page, ManageRecordVerify manageRecordVerify) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(ManageRecordVerify.class));
        if (ObjectUtils.isEmpty(manageRecordVerify.getManageRecordTotalId())) {
            //获取当前年份
            LocalDate currentDate = LocalDate.now();
            // å®šä¹‰æ—¥æœŸæ ¼å¼
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
            // æ ¼å¼åŒ–当前日期
            String currentMonth = currentDate.format(formatter);
            //查询历史
            ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectOne(Wrappers.<ManageRecordTotal>lambdaQuery().eq(ManageRecordTotal::getYear, currentMonth));
            manageRecordVerify.setManageRecordTotalId(manageRecordTotal.getId());
        }
        map.put("body", manageRecordVerifyMapper.pageManageRecordVerify(page, QueryWrappers.queryWrappers(manageRecordVerify)));
        return map;
    }
    @Override
    public int addManageRecordVerify(ManageRecordVerify manageRecordVerify) {
        //获取当前年份
        LocalDate currentDate = LocalDate.now();
        // å®šä¹‰æ—¥æœŸæ ¼å¼
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        // æ ¼å¼åŒ–当前日期
        String currentMonth = currentDate.format(formatter);
        ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectOne(Wrappers.<ManageRecordTotal>lambdaQuery().eq(ManageRecordTotal::getYear, currentMonth));
        manageRecordVerify.setManageRecordTotalId(manageRecordTotal.getId());
        manageRecordVerifyMapper.insert(manageRecordVerify);
        manageRecordTotal.setTotalNum(1 + manageRecordTotal.getTotalNum());
        return manageRecordTotalMapper.updateById(manageRecordTotal);
    }
    @Override
    public int delManageRecordVerify(Integer id) {
        ManageRecordVerify manageRecordVerify = manageRecordVerifyMapper.selectById(id);
        manageRecordVerifyMapper.deleteById(id);
        ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectById(manageRecordVerify.getManageRecordTotalId());
        manageRecordTotal.setTotalNum(manageRecordTotal.getTotalNum() - 1);
        return manageRecordTotalMapper.updateById(manageRecordTotal);
    }
    @Override
    public int exportManageRecordVerify(MultipartFile file) {
        List<ManageRecordVerify> manageRecordVerifyList = new ArrayList<>();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //获取当前年份
        LocalDate currentDate = LocalDate.now();
        // å®šä¹‰æ—¥æœŸæ ¼å¼
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
        // æ ¼å¼åŒ–当前日期
        String currentMonth = currentDate.format(formatter);
        ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectOne(Wrappers.<ManageRecordTotal>lambdaQuery().eq(ManageRecordTotal::getYear, currentMonth));
        try {
            InputStream inputStream = file.getInputStream();
            XWPFDocument document = new XWPFDocument(inputStream);
            List<XWPFTable> tables = document.getTables();
            if (tables.isEmpty()) {
                throw new ErrorException("文档中没有表格");
            }
            for (XWPFTable table : tables) {
                List<XWPFTableRow> rows = table.getRows();
                if (rows.size() <= 1) {
                    throw new ErrorException("表格没有数据行");
                }
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 8) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
                        ManageRecordVerify manageRecordVerify = new ManageRecordVerify();
                        manageRecordVerify.setDocumentName(row.getCell(1).getText());
                        manageRecordVerify.setDocumentCode(row.getCell(2).getText());
                        manageRecordVerify.setStandardName(row.getCell(3).getText());
                        manageRecordVerify.setStandardCode(row.getCell(4).getText());
                        try {
                            manageRecordVerify.setEffectiveDate(LocalDate.parse(row.getCell(5).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordVerify.setEffectiveDate(null);
                        }
                        try {
                            manageRecordVerify.setCancelDate(LocalDate.parse(row.getCell(6).getText(), dateTimeFormatter));
                        } catch (Exception e) {
                            manageRecordVerify.setCancelDate(null);
                        }
                        manageRecordVerify.setNote(row.getCell(7).getText());
                        manageRecordVerify.setManageRecordTotalId(manageRecordTotal.getId());
                        if (manageRecordVerifyMapper.selectCount(Wrappers.<ManageRecordVerify>lambdaQuery()
                                .eq(ManageRecordVerify::getDocumentCode, manageRecordVerify.getDocumentCode())
                                .eq(ManageRecordVerify::getDocumentName, manageRecordVerify.getDocumentName())
                                .eq(ManageRecordVerify::getStandardName, manageRecordVerify.getStandardName())
                                .eq(ManageRecordVerify::getStandardCode, manageRecordVerify.getStandardCode())
                                .eq(ManageRecordVerify::getManageRecordTotalId, manageRecordVerify.getManageRecordTotalId())) <= 0) {
                            manageRecordVerifyList.add(manageRecordVerify);
                        }
                    }
                }
            }
            saveBatch(manageRecordVerifyList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramFileServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yuanchu.mom.mapper.ManageReviewProgramMapper;
import com.yuanchu.mom.pojo.InsOrderFile;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.pojo.ManageReviewProgramFile;
import com.yuanchu.mom.mapper.ManageReviewProgramFileMapper;
import com.yuanchu.mom.service.ManageReviewProgramFileService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.FileSaveUtil;
import com.yuanchu.mom.vo.ReviewProgramDetailsVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.util.List;
/**
 * <p>
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 04:15:47
 */
@Service
public class ManageReviewProgramFileServiceImpl extends ServiceImpl<ManageReviewProgramFileMapper, ManageReviewProgramFile> implements ManageReviewProgramFileService {
    @Value("${wordUrl}")
    private String wordUrl;
    @Resource
    ManageReviewProgramMapper manageReviewProgramMapper;
    @Override
    public ReviewProgramDetailsVo selectFile(Integer id) {
        ManageReviewProgram program = manageReviewProgramMapper.selectById(id);
        LambdaQueryWrapper<ManageReviewProgramFile> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ManageReviewProgramFile::getReviewId, id);
        List<ManageReviewProgramFile> files = list(queryWrapper);
        ReviewProgramDetailsVo vo = new ReviewProgramDetailsVo();
        vo.setProgram(program);
        vo.setFileList(files);
        return vo;
    }
    @Override
    public void addFile(MultipartFile file, Integer id) {
        String urlString;
        String pathName;
        String path;
        String filename = file.getOriginalFilename();
        ManageReviewProgramFile manageReviewProgramFile = new ManageReviewProgramFile();
        manageReviewProgramFile.setFileName(filename);
        manageReviewProgramFile.setReviewId(id);
        // æ˜¯æ–‡ä»¶
        path = wordUrl;
        try {
            File realpath = new File(path);
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            manageReviewProgramFile.setUrl(pathName);
            this.baseMapper.insert(manageReviewProgramFile);
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("附件上传错误");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.FilePictureRenderData;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageDocumentControlled;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.mapper.ManageReviewProgramMapper;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageReviewProgramService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.QueryWrappers;
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.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-09 03:05:42
 */
@Service
public class ManageReviewProgramServiceImpl extends ServiceImpl<ManageReviewProgramMapper, ManageReviewProgram> implements ManageReviewProgramService {
    @Resource
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private GetLook getLook;
    @Override
    public IPage<ManageReviewProgram> page(Page page, String startTime,String endTime, String judgingLocation) {
        IPage<ManageReviewProgram> iPage = this.baseMapper.page(page,startTime,endTime,judgingLocation);
        return iPage;
    }
    @Override
    public void exportReviewProgram(Integer id, HttpServletResponse response) {
        ManageReviewProgram reviewProgram = baseMapper.selectById(id);
        List<String> name = new ArrayList<>();
        for (String s : reviewProgram.getParticipants().split(",")) {
            User user = userMapper.selectById(Integer.parseInt(s));
            name.add(user.getName());
        }
        String participantsName = name.stream().collect(Collectors.joining(","));
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日");
        //编制人签名
        User user1 = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName, reviewProgram.getEditor()));
        if (ObjectUtils.isEmpty(user1.getSignatureUrl())){
            throw new ErrorException(user1.getName()+"没有上传个人签名,请上传!");
        }
        String signatureUrl1 = user1.getSignatureUrl();
        //批准人签名
        if (ObjectUtils.isEmpty(reviewProgram.getApprove())){
            throw new ErrorException("没有进行批准");
        }
        User user2 = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName, reviewProgram.getApprove()));
        if (ObjectUtils.isEmpty(user2.getSignatureUrl())){
            throw new ErrorException(user2.getName()+"没有上传个人签名,请上传!");
        }
        String signatureUrl2 = user2.getSignatureUrl();
        InputStream inputStream = this.getClass().getResourceAsStream("/static/review-program.docx");
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("reviewProgram", reviewProgram);
                    put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl1));
                    put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl2));
                    put("editorDate", reviewProgram.getEditorDate().format(formatter));
                    put("approveDate", reviewProgram.getApproveDate().format(formatter));
                    put("participantsName",participantsName);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "管理评审计划", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public int addReviewProgram(ManageReviewProgram manageReviewProgram) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        String name = userMapper.selectById(userId).getName();
        manageReviewProgram.setEditor(name);
        manageReviewProgram.setEditorDate(LocalDateTime.now());
        return baseMapper.insert(manageReviewProgram);
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewReportServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,140 @@
package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.data.FilePictureRenderData;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageReviewReport;
import com.yuanchu.mom.mapper.ManageReviewReportMapper;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ManageReviewReportService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * ç®¡ç†è¯„审报告 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-12 04:44:39
 */
@Service
public class ManageReviewReportServiceImpl extends ServiceImpl<ManageReviewReportMapper, ManageReviewReport> implements ManageReviewReportService {
    @Resource
    UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Override
    public IPage<ManageReviewReport> page(Page page, String startTime, String endTime, String place) {
        IPage<ManageReviewReport> iPage = this.baseMapper.page(page, startTime, endTime, place);
        return iPage;
    }
    @Override
    public void exportReviewReport(Integer id, HttpServletResponse response) {
        ManageReviewReport manageReviewReport = baseMapper.selectById(id);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MM月dd日");
        //完成时间
        String completionDate = "";
        if (ObjectUtils.isNotEmpty(manageReviewReport.getCompletionDate())) {
            completionDate = manageReviewReport.getCompletionDate().format(formatter);
        }
        //出席人员
        String attendessName=null;
        if (ObjectUtils.isNotEmpty(manageReviewReport.getAttendess())) {
            List<String> name = new ArrayList<>();
            for (String s : manageReviewReport.getAttendess().split(",")) {
                User user = userMapper.selectById(Integer.parseInt(s));
                name.add(user.getName());
            }
            attendessName = name.stream().collect(Collectors.joining(","));
        }
        //日期
        String createTime = manageReviewReport.getCreateTime().format(formatter);
        //审核人
        String signatureUrl1 = null;
        if (ObjectUtils.isNotEmpty(manageReviewReport.getAudit())) {
            User user1 = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName, manageReviewReport.getAudit()));
            if (ObjectUtils.isEmpty(user1.getSignatureUrl())) {
                throw new ErrorException(user1.getName() + "的个人签名没有上传");
            }
            signatureUrl1 = user1.getSignatureUrl();
        }
        //批准人
        String signatureUrl2 = null;
        if (ObjectUtils.isNotEmpty(manageReviewReport.getApproval())) {
            User user2 = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName, manageReviewReport.getApproval()));
            if (ObjectUtils.isEmpty(user2.getSignatureUrl())) {
                throw new ErrorException(user2.getName() + "的个人签名没有上传");
            }
            signatureUrl2 = user2.getSignatureUrl();
        }
        InputStream inputStream = this.getClass().getResourceAsStream("/static/review-report.docx");
        ConfigureBuilder builder = Configure.builder();
        builder.useSpringEL(true);
        String finalCompletionDate = completionDate;
        FilePictureRenderData picture1=null;
        FilePictureRenderData picture2=null;
        if (signatureUrl1!=null){
             picture1 = new FilePictureRenderData(100, 50, imgUrl + "/" + signatureUrl1);
        }
        if (signatureUrl2!=null) {
             picture2 = new FilePictureRenderData(100, 50, imgUrl + "/" + signatureUrl2);
        }
        FilePictureRenderData finalPicture1 = picture1;
        FilePictureRenderData finalPicture2 = picture2;
        String finalAttendessName = attendessName;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                new HashMap<String, Object>() {{
                    put("report", manageReviewReport);
                    put("completionDate", finalCompletionDate);
                    put("date", manageReviewReport.getDate().format(formatter));
                    put("createTime", createTime);
                    put("examineUrl", finalPicture1);
                    put("ratifyUrl", finalPicture2);
                    put("attendessName", finalAttendessName);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "评审报告", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRiskAssessmentResultsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Pictures;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ManageRiskAssessmentResultsMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ManageRiskAssessmentResults;
import com.yuanchu.mom.service.ManageRiskAssessmentResultsService;
import com.yuanchu.mom.utils.DateImageUtil;
import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
import com.yuanchu.mom.vo.ManageRiskAssessmentResultsVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
/**
 * <p>
 * å±é™©å› ç´ è¾¨è¯†ä¸Žé£Žé™©è¯„价结果一览表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:58:51
 */
@Service
public class ManageRiskAssessmentResultsServiceImpl extends ServiceImpl<ManageRiskAssessmentResultsMapper, ManageRiskAssessmentResults> implements ManageRiskAssessmentResultsService {
    @Autowired
    private UserMapper userMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Override
    public IPage<ManageRiskAssessmentResultsVo> getPageResults(Page page) {
        return baseMapper.getPageResults(page, false);
    }
    @Override
    public void exportPersonTraining(HttpServletResponse response) {
        // æŸ¥è¯¢è¯¦æƒ…
        IPage<ManageRiskAssessmentResultsVo> detailedDtos = baseMapper.getPageResults(new Page(1, -1), true);
        if (detailedDtos.getRecords().isEmpty()) {
            throw new ErrorException("审核通过的数据为空!请审核通过后在导出");
        }
        ManageRiskAssessmentResultsVo manageRiskAssessmentResultsVo = detailedDtos.getRecords().get(0);
        //获取编制人的签名地址
        String writeUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getEditor()).getSignatureUrl();
        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
            throw new ErrorException("找不到检验人的签名");
        }
        //获取复核人的签名地址
        String examineUrl = null;
        if (manageRiskAssessmentResultsVo.getApproval() != null) {
            examineUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getApproval()).getSignatureUrl();
            if (StringUtils.isBlank(examineUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        //获取批准人的签名地址
        String ratifyUrl = null;
        if (manageRiskAssessmentResultsVo.getApproval() != null) {
            ratifyUrl = userMapper.selectById(manageRiskAssessmentResultsVo.getApproval()).getSignatureUrl();
            if (StringUtils.isBlank(ratifyUrl)) {
                throw new ErrorException("找不到复核人的签名");
            }
        }
        int index = 1;
        for (ManageRiskAssessmentResultsVo detailedDto : detailedDtos.getRecords()) {
            detailedDto.setIndex(index);
            index++;
        }
        // èŽ·å–è·¯å¾„
        InputStream inputStream = this.getClass().getResourceAsStream("/static/risk-factor-identification-risk.docx");
        String finalExamineUrl = examineUrl;
        String finalRatifyUrl = ratifyUrl;
        Configure configure = Configure.builder()
                .bind("trainingDetailedList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("trainingDetailedList", detailedDtos.getRecords());
                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create() : null);
                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
                    put("writeDateUrl", manageRiskAssessmentResultsVo.getEditorDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getEditorDate())).create() : null);
                    put("examineDateUrl", manageRiskAssessmentResultsVo.getApproveDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getApproveDate())).create() : null);
                    put("ratifyDateUrl", manageRiskAssessmentResultsVo.getApproveDate() != null ?
                            Pictures.ofStream(DateImageUtil.createDateImage(manageRiskAssessmentResultsVo.getApproveDate())).create() : null);
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "危险因素辨识与风险评价结果一览", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
}
cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageControlPlanListVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.vo;
import com.yuanchu.mom.pojo.ManageControlPlanList;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ManageControlPlanListVo extends ManageControlPlanList {
    @ApiModelProperty("编制姓名")
    private String editorName;
    @ApiModelProperty("审批姓名")
    private String approvalName;
    @ApiModelProperty("批准姓名")
    private String approveName;
    @ApiModelProperty("导出")
    private Integer index;
}
cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageRiskAssessmentResultsVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.vo;
import com.yuanchu.mom.pojo.ManageRiskAssessmentResults;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ManageRiskAssessmentResultsVo extends ManageRiskAssessmentResults {
    @ApiModelProperty("编制姓名")
    private String editorName;
    @ApiModelProperty("审批姓名")
    private String approvalName;
    @ApiModelProperty("批准姓名")
    private String approveName;
    @ApiModelProperty("导出序号")
    private Integer index;
}
cnas-manage/src/main/java/com/yuanchu/mom/vo/MeetingParticipantsDetailsVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.yuanchu.mom.vo;
import com.yuanchu.mom.pojo.ManageMeeting;
import com.yuanchu.mom.pojo.ManageMeetingParticipants;
import com.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.pojo.ManageReviewProgramFile;
import lombok.Data;
import java.util.List;
@Data
public class MeetingParticipantsDetailsVo {
    private ManageMeeting manageMeeting;
    private List<ManageMeetingParticipants> participantsList;
}
cnas-manage/src/main/java/com/yuanchu/mom/vo/ReviewProgramDetailsVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.yuanchu.mom.vo;
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.yuanchu.mom.pojo.ManageReviewProgram;
import com.yuanchu.mom.pojo.ManageReviewProgramFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ReviewProgramDetailsVo {
    private ManageReviewProgram program;
    private List<ManageReviewProgramFile> fileList;
}
cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar
Binary files differ
cnas-manage/src/main/resources/lib/license.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<License>
    <Data>
        <Products>
            <Product>Aspose.Total for Java</Product>
            <Product>Aspose.Words for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>20991231</SubscriptionExpiry>
        <LicenseExpiry>20991231</LicenseExpiry>
        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
    </Data>
    <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>
cnas-manage/src/main/resources/mapper/ClientSatisfactionAnalyseFileMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
<?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.yuanchu.mom.mapper.ClientSatisfactionAnalyseFileMapper">
    <!-- å®¢æˆ·æ»¡æ„åº¦åˆ†æžé™„件列表 -->
    <select id="pageAnalyseFile" resultType="com.yuanchu.mom.pojo.ClientSatisfactionAnalyseFile">
        select *
        from (select ccf.*,
                     u.name user_name
              from cnas_client_satisfaction_analyse_file ccf
                       left join user u on u.id = ccf.create_user
              order by ccf.create_time desc
             ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ClientSatisfactionMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<?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.yuanchu.mom.mapper.ClientSatisfactionMapper">
    <!-- å®¢æˆ·æ»¡æ„åº¦è°ƒæŸ¥ -->
    <select id="pageClientSatisfaction" resultType="com.yuanchu.mom.pojo.ClientSatisfaction">
        select *
        from (select *
              from cnas_client_satisfaction
              order by create_time desc
             ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="exportWordClientSatisfaction" resultType="com.yuanchu.mom.dto.ClientSatisfactionDto">
        select *,
               CASE WHEN service_attitude = 0 THEN '☑'
                   ELSE '□' END AS serviceAttitude0,
               CASE WHEN service_attitude = 1 THEN '☑'
                   ELSE '□' END AS serviceAttitude1,
               CASE WHEN service_attitude = 2 THEN '☑'
                   ELSE '□' END AS serviceAttitude2,
               service_attitude_suggestion,
               CASE WHEN technical_competence = 0 THEN '☑'
                    ELSE '□' END AS technicalCompetence0,
               CASE WHEN technical_competence = 1 THEN '☑'
                    ELSE '□' END AS technicalCompetence1,
               CASE WHEN technical_competence = 2 THEN '☑'
                    ELSE '□' END AS technicalCompetence2,
               technical_competence_suggestion,
               CASE WHEN inspection_work = 0 THEN '☑'
                    ELSE '□' END AS inspectionWork0,
               CASE WHEN inspection_work = 1 THEN '☑'
                    ELSE '□' END AS inspectionWork1,
               CASE WHEN inspection_work = 2 THEN '☑'
                    ELSE '□' END AS inspectionWork2,
               inspection_work_suggestion,
               CASE WHEN reasonable_fees = 0 THEN '☑'
                    ELSE '□' END AS reasonableFees0,
               CASE WHEN reasonable_fees = 1 THEN '☑'
                    ELSE '□' END AS reasonableFees1,
               CASE WHEN reasonable_fees = 2 THEN '☑'
                    ELSE '□' END AS reasonableFees2
        from cnas_client_satisfaction
        where client_satisfaction_id = #{clientSatisfactionId}
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/InternalCheckMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<?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.yuanchu.mom.mapper.InternalCheckMapper">
    <!-- å†…部审查分页查询 -->
    <select id="pageInternalCheck" resultType="com.yuanchu.mom.dto.InternalCheckDto">
        select *
        from (select *
        from cnas_internal_check
        order by create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/InternalCorrectFileMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
<?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.yuanchu.mom.mapper.InternalCorrectFileMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.InternalCorrectFile">
        <id column="supervise_details_correct_file_id" property="superviseDetailsCorrectFileId" />
        <result column="correct_id" property="correctId" />
        <result column="type" property="type" />
        <result column="file_url" property="fileUrl" />
        <result column="file_name" property="fileName" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
</mapper>
cnas-manage/src/main/resources/mapper/InternalCorrectMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<?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.yuanchu.mom.mapper.InternalCorrectMapper">
    <select id="pageInternalAccording" resultType="com.yuanchu.mom.pojo.InternalCorrect">
        select *
        from (select *
        from cnas_internal_correct
        order by create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/InternalImplementMapper.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.yuanchu.mom.mapper.InternalImplementMapper">
    <!-- å†…审实施计划分页查询 -->
    <select id="pageInternalImplement" resultType="com.yuanchu.mom.dto.InternalImplementDto">
        select *
        from (select *
              from cnas_internal_implement
              order by create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/InternalMeetingDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
<?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.yuanchu.mom.mapper.InternalMeetingDetailMapper">
</mapper>
cnas-manage/src/main/resources/mapper/InternalMeetingMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
<?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.yuanchu.mom.mapper.InternalMeetingMapper">
    <select id="pageInternalMeeting" resultType="com.yuanchu.mom.dto.InternalMeetingDto">
        select *
        from (select cim.*,
        (select GROUP_CONCAT(name)
        from user
        where find_in_set(id, cim.participant)) participant_name
        from cnas_internal_meeting cim
        order by cim.create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/InternalPlanDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
<?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.yuanchu.mom.mapper.InternalPlanDetailMapper">
</mapper>
cnas-manage/src/main/resources/mapper/InternalPlanMapper.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.yuanchu.mom.mapper.InternalPlanMapper">
    <!-- å†…审年度计划分页查询 -->
    <select id="pageInternalPlan" resultType="com.yuanchu.mom.dto.InternalPlanDto">
        select *
        from (select *
        from cnas_internal_plan
        order by create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/InternalReportMapper.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.yuanchu.mom.mapper.InternalReportMapper">
    <!-- å†…审报告分页查询 -->
    <select id="pageInternalReport" resultType="com.yuanchu.mom.pojo.InternalReport">
        select *
        from (select *
        from cnas_internal_report
        order by create_time desc) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageControlPlanListMapper.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.yuanchu.mom.mapper.ManageControlPlanListMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageControlPlanList">
        <id column="id" property="id" />
        <result column="job_activity" property="jobActivity" />
        <result column="category" property="category" />
        <result column="description" property="description" />
        <result column="result" property="result" />
        <result column="intolerable" property="intolerable" />
        <result column="plan" property="plan" />
        <result column="editor" property="editor" />
        <result column="editor_date" property="editorDate" />
        <result column="approval" property="approval" />
        <result column="approval_date" property="approvalDate" />
        <result column="approve" property="approve" />
        <result column="approve_date" property="approveDate" />
    </resultMap>
    <select id="getPageList" resultType="com.yuanchu.mom.vo.ManageControlPlanListVo">
        select c.*, u1.name editor_name, u2.name approval_name, u3.name approve_name
        from cnas_manage_control_plan_list c
                 left join user u1 on u1.id = c.editor
                 left join user u2 on u2.id = c.approval
                 left join user u3 on u3.id = c.approve
        <if test="itSExporting == true">
            where c.approve_status = 1
            and c.approval_status = 1
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageDocumentAlterMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<?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.yuanchu.mom.mapper.ManageDocumentAlterMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageDocumentAlter">
        <id column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="create_user" property="createUser"/>
        <result column="createUserName" property="createUserName"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="expect_alter_date" property="expectAlterDate"/>
        <result column="actually_alter_date" property="actuallyAlterDate"/>
        <result column="state" property="state"/>
        <result column="check_user" property="checkUser"/>
        <result column="checkUserName" property="checkUserName"/>
        <result column="alter_note" property="alterNote"/>
        <result column="alter_before_code" property="alterBeforeCode"/>
        <result column="alter_before_name" property="alterBeforeName"/>
        <result column="alter_before_version" property="alterBeforeVersion"/>
        <result column="alter_after_code" property="alterAfterCode"/>
        <result column="alter_after_name" property="alterAfterName"/>
        <result column="alter_after_version" property="alterAfterVersion"/>
        <result column="alter_after_url" property="alterAfterUrl"/>
        <result column="method" property="method"/>
    </resultMap>
    <select id="pageManageDocumentAlter" resultMap="BaseResultMap">
        select * from (select cmda.*,
        name createUserName
        from cnas_manage_document_alter cmda
        left join user u on cmda.create_user = u.id) A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getManageDocumentAlter" resultMap="BaseResultMap">
        select cmda.*,
               u1.name createUserName,
               u2.name checkUserName
        from cnas_manage_document_alter cmda
                 left join user u1 on cmda.create_user = u1.id
                 left join user u2 on cmda.check_user = u2.id
        where cmda.id = #{id}
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageDocumentCancelMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
<?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.yuanchu.mom.mapper.ManageDocumentCancelMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageDocumentCancel">
        <id column="id" property="id"/>
        <result column="create_user" property="createUser"/>
        <result column="createUserName" property="createUserName"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="document_code" property="documentCode"/>
        <result column="name" property="name"/>
        <result column="version" property="version"/>
        <result column="document_state" property="documentState"/>
        <result column="method" property="method"/>
        <result column="cancel_note" property="cancelNote"/>
        <result column="check_user" property="checkUser"/>
        <result column="checkUserName" property="checkUserName"/>
        <result column="expect_cancel_date" property="expectCancelDate"/>
        <result column="actually_cancel_date" property="actuallyCancelDate"/>
        <result column="state" property="state"/>
    </resultMap>
    <select id="pageManageDocumentCancel" resultMap="BaseResultMap">
        select * from (select mdc.*,
        u.name createUserName
        from cnas_manage_document_cancel mdc
        left join user u on mdc.create_user = u.id)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getManageDocumentCancel" resultMap="BaseResultMap">
        select mdc.*,
               u1.name createUserName,
               u2.name checkUserName
        from cnas_manage_document_cancel mdc
                 left join user u1 on mdc.create_user = u1.id
                 left join user u2 on mdc.check_user = u2.id
        where mdc.id=#{id}
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageDocumentControlledMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
<?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.yuanchu.mom.mapper.ManageDocumentControlledMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageDocumentControlled">
        <id column="id" property="id"/>
        <result column="document_code" property="documentCode"/>
        <result column="type" property="type"/>
        <result column="name" property="name"/>
        <result column="version" property="version"/>
        <result column="writer" property="writer"/>
        <result column="submit_date" property="submitDate"/>
        <result column="instructions" property="instructions"/>
        <result column="state" property="state"/>
        <result column="url" property="url"/>
        <result column="duty_user" property="dutyUser"/>
        <result column="dutyUserName" property="dutyUserName"/>
        <result column="create_user" property="createUser"/>
        <result column="createUserName" property="createUserName"/>
        <result column="createUserDepartLims" property="createUserDepartLims"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
    <select id="pageManageDocumentControlled" resultMap="BaseResultMap">
        select * from (select cmdc.*, u1.name createUserName, u2.name dutyUserName
        from cnas_manage_document_controlled cmdc
        left join user u1 on cmdc.create_user = u1.id
        left join user u2 on cmdc.duty_user = u2.id)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getManageDocumentControlled" resultMap="BaseResultMap">
        select cmdc.*, u1.name createUserName, u2.name dutyUserName
        from cnas_manage_document_controlled cmdc
                 left join user u1 on cmdc.create_user = u1.id
                 left join user u2 on cmdc.duty_user = u2.id
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageDocumentIssueRecycleMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
<?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.yuanchu.mom.mapper.ManageDocumentIssueRecycleMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageDocumentIssueRecycle">
        <id column="id" property="id"/>
        <result column="document_code" property="documentCode"/>
        <result column="name" property="name"/>
        <result column="version" property="version"/>
        <result column="state" property="state"/>
        <result column="document_state" property="documentState"/>
        <result column="issue_code" property="issueCode"/>
        <result column="issue_user" property="issueUser"/>
        <result column="issue_date" property="issueDate"/>
        <result column="issue_note" property="issueNote"/>
        <result column="receive_user" property="receiveUser"/>
        <result column="receive_date" property="receiveDate"/>
        <result column="recycle_code" property="recycleCode"/>
        <result column="recycle_user" property="recycleUser"/>
        <result column="recycle_date" property="recycleDate"/>
        <result column="recycle_note" property="recycleNote"/>
        <result column="create_user" property="createUser"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="url" property="url"/>
    </resultMap>
    <select id="pageManageDocumentIssueRecycle" resultType="com.yuanchu.mom.dto.ManageDocumentIssueRecycleDto">
        select * from (select cmdir.*,
        u1.name issueUserName,
        u2.name recycleUserName,
        u3.name receiveUserName
        from cnas_manage_document_issue_recycle cmdir
        left join user u1 on issue_user=u1.id
        left join user u2 on recycle_user=u2.id
        left join user u3 on receive_user=u3.id) A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getManageDocumentIssueRecycle" resultType="com.yuanchu.mom.dto.ManageDocumentIssueRecycleDto">
        select cmdir.*,
               u1.name issueUserName,
               u2.name recycleUserName,
               u3.name receiveUserNmae
        from cnas_manage_document_issue_recycle cmdir
                 left join user u1 on issue_user=u1.id
                 left join user u2 on recycle_user=u2.id
                 left join user u3 on receive_user=u3.id
        where cmdir.id=#{id}
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageDocumentListMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?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.yuanchu.mom.mapper.ManageDocumentListMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageDocumentList">
        <id column="id" property="id"/>
        <result column="document_code" property="documentCode"/>
        <result column="type" property="type"/>
        <result column="name" property="name"/>
        <result column="version" property="version"/>
        <result column="writer" property="writer"/>
        <result column="effective_date" property="effectiveDate"/>
        <result column="state" property="state"/>
        <result column="url" property="url"/>
        <result column="create_user" property="createUser"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
    <select id="pageManageDocumentList" resultType="com.yuanchu.mom.pojo.ManageDocumentList">
        select * from (select * from cnas_manage_document_list ) A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageMeetingMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
<?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.yuanchu.mom.mapper.ManageMeetingMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageMeeting">
        <id column="id" property="id" />
        <result column="meeting_time" property="meetingTime" />
        <result column="place" property="place" />
        <result column="compere" property="compere" />
        <result column="content" property="content" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <select id="page" resultType="com.yuanchu.mom.dto.ManageMeetingDto">
        select cmm.* from cnas_manage_meeting  cmm
        <where>
            <if test="startTime != null and startTime != ''">
                meeting_time >= #{startTime}
            </if>
            <if test="endTime != null and endTime != ''">
                and #{endTime} >= meeting_time
            </if>
            <if test="place != null and place != ''">
                and place = #{place}
            </if>
        </where>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageMeetingParticipantsMapper.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.yuanchu.mom.mapper.ManageMeetingParticipantsMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageMeetingParticipants">
        <id column="id" property="id" />
        <result column="participants" property="participants" />
        <result column="department" property="department" />
        <result column="meeting_id" property="meetingId" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordAuditMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
<?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.yuanchu.mom.mapper.ManageRecordAuditMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordAudit">
        <id column="id" property="id"/>
        <result column="document_code" property="documentCode"/>
        <result column="document_name" property="documentName"/>
        <result column="capter" property="capter"/>
        <result column="pages" property="pages"/>
        <result column="number" property="number"/>
        <result column="before_version" property="beforeVersion"/>
        <result column="after_version" property="afterVersion"/>
        <result column="alter_thing" property="alterThing"/>
        <result column="alter_user" property="alterUser"/>
        <result column="alterUserName" property="alterUserName"/>
        <result column="ratify_user" property="ratifyUser"/>
        <result column="ratifyUserName" property="ratifyUserName"/>
        <result column="ratifyUserUrl" property="ratifyUserUrl"/>
        <result column="date" property="date"/>
        <result column="create_user" property="createUser"/>
        <result column="createUserName" property="createUserName"/>
        <result column="createUserDepart" property="createUserDepart"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="reason" property="reason"/>
        <result column="before_depart" property="beforeDepart"/>
        <result column="after_depart" property="afterDepart"/>
        <result column="applicant" property="applicant"/>
        <result column="formulation" property="formulation"/>
        <result column="audit" property="audit"/>
        <result column="method" property="method"/>
    </resultMap>
    <select id="pageManageRecordAudit" resultMap="BaseResultMap">
        select * from (select cmra.*,
        u1.name createUserName,
        u2.name alterUserName,
        u3.signature_url ratifyUserUrl,
        u3.name ratifyUserName
        from cnas_manage_record_audit cmra
        left join user u1 on cmra.create_user = u1.id
        left join user u2 on cmra.alter_user = u2.id
        left join user u3 on cmra.ratify_user = u3.id)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordCancelMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
<?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.yuanchu.mom.mapper.ManageRecordCancelMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordCancel">
        <id column="id" property="id"/>
        <result column="document_code" property="documentCode"/>
        <result column="document_name" property="documentName"/>
        <result column="qty" property="qty"/>
        <result column="reason" property="reason"/>
        <result column="create_user" property="createUser"/>
        <result column="createUserName" property="createUserName"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="ratify_user" property="ratifyUser"/>
        <result column="ratify_state" property="ratifyState"/>
        <result column="ratifyUserName" property="ratifyUserName"/>
        <result column="ratify_time" property="ratifyTime"/>
        <result column="remark" property="remark"/>
    </resultMap>
    <select id="pageManageRecordCancel" resultMap="BaseResultMap">
        select * from (select cmrc.*,
        u1.name createUserName,
        u2.name ratifyUserName
        from cnas_manage_record_cancel cmrc
        left join user u1 on cmrc.create_user = u1.id
        left join user u2 on cmrc.ratify_user = u2.id)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordCheckMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
<?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.yuanchu.mom.mapper.ManageRecordCheckMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordCheck">
        <id column="id" property="id"/>
        <result column="document_name" property="documentName"/>
        <result column="document_code" property="documentCode"/>
        <result column="document_version" property="documentVersion"/>
        <result column="write_user" property="writeUser"/>
        <result column="writeUserName" property="writeUserName"/>
        <result column="check_user" property="checkUser"/>
        <result column="checkUserName" property="checkUserName"/>
        <result column="check_state" property="checkState"/>
        <result column="ratify_user" property="ratifyUser"/>
        <result column="ratifyUserName" property="ratifyUserName"/>
        <result column="ratify_state" property="ratifyState"/>
        <result column="ratify_date" property="ratifyDate"/>
        <result column="remark" property="remark"/>
    </resultMap>
    <select id="pageManageRecordCheck" resultMap="BaseResultMap">
        select * from (select cmrc.*,
        u1.name writeUserName,
        u2.name checkUserName,
        u3.name ratifyUserName
        from cnas_manage_record_check cmrc
        left join user u1 on write_user=u1.id
        left join user u2 on check_user=u2.id
        left join user u3 on ratify_user=u3.id)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordIntervalsMapper.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.yuanchu.mom.mapper.ManageRecordIntervalsMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordIntervals">
        <id column="id" property="id"/>
        <result column="document_name" property="documentName"/>
        <result column="document_code" property="documentCode"/>
        <result column="document_version" property="documentVersion"/>
        <result column="revision" property="revision"/>
        <result column="suitability" property="suitability"/>
        <result column="remark" property="remark"/>
        <result column="create_user" property="createUser"/>
        <result column="update_user" property="updateUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="record_intervals_total_id" property="recordIntervalsTotalId"/>
    </resultMap>
    <select id="pageManageRecordIntervals" resultMap="BaseResultMap">
        select *
        from (select * from cnas_manage_record_intervals) A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordIntervalsTotalMapper.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.yuanchu.mom.mapper.ManageRecordIntervalsTotalMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordIntervalsTotal">
        <id column="id" property="id" />
        <result column="ratify_user" property="ratifyUser"/>
        <result column="ratifyUserName" property="ratifyUserName"/>
        <result column="ratify_state" property="ratifyState"/>
        <result column="ratify_date" property="ratifyDate"/>
        <result column="ratify_url" property="ratifyUrl"/>
        <result column="submit_user" property="submitUser"/>
        <result column="submitUserName" property="submitUserName"/>
        <result column="submit_url" property="submitUrl"/>
        <result column="submit_date" property="submitDate"/>
        <result column="year" property="year"/>
        <result column="total_num" property="totalNum"/>
        <result column="url" property="url"/>
    </resultMap>
    <select id="pageManageRecordIntervalsTotal" resultMap="BaseResultMap">
        select * from (select cmrit.*,
        u1.name submitUserName,
        u2.name ratifyUserName
        from cnas_manage_record_intervals_total cmrit
        left join user u1 on u1.id=submit_user
        left join user u2 on u2.id=ratify_user)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordIssueRecycleMapper.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.yuanchu.mom.mapper.ManageRecordIssueRecycleMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordIssueRecycle">
        <id column="id" property="id"/>
        <result column="document_code" property="documentCode"/>
        <result column="document_name" property="documentName"/>
        <result column="document_version" property="documentVersion"/>
        <result column="pages" property="pages"/>
        <result column="document_type" property="documentType"/>
        <result column="number" property="number"/>
        <result column="depart_lims" property="departLims"/>
        <result column="receive_user" property="receiveUser"/>
        <result column="receiveUserName" property="receiveUserName"/>
        <result column="receive_date" property="receiveDate"/>
        <result column="signed_user" property="signedUser"/>
        <result column="signedUserName" property="signedUserName"/>
        <result column="signed_date" property="signedDate"/>
    </resultMap>
    <select id="pageManageRecordIssueRecycle" resultMap="BaseResultMap">
        select * from (select cmrir.*,
        u1.name receiveUserName,
        u2.name signedUserName
        from cnas_manage_record_issue_recycle cmrir
        left join user u1 on receive_user=u1.id
        left join user u2 on signed_user=u2.id)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordTotalMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
<?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.yuanchu.mom.mapper.ManageRecordTotalMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordTotal">
        <id column="id" property="id"/>
        <result column="ratify_user" property="ratifyUser"/>
        <result column="ratifyUserName" property="ratifyUserName"/>
        <result column="ratify_state" property="ratifyState"/>
        <result column="ratify_date" property="ratifyDate"/>
        <result column="ratify_url" property="ratifyUrl"/>
        <result column="submit_user" property="submitUser"/>
        <result column="submitUserName" property="submitUserName"/>
        <result column="submit_url" property="submitUrl"/>
        <result column="submit_date" property="submitDate"/>
        <result column="year" property="year"/>
        <result column="total_num" property="totalNum"/>
        <result column="url" property="url"/>
    </resultMap>
    <select id="pageProcessTotaldeal" resultMap="BaseResultMap">
        select * from (select cmrt.*,
        u1.name submitUserName,
        u2.name ratifyUserName
        from cnas_manage_record_total cmrt
        left join user u1 on u1.id=submit_user
        left join user u2 on u2.id=ratify_user)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRecordVerifyMapper.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.yuanchu.mom.mapper.ManageRecordVerifyMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRecordVerify">
        <id column="id" property="id"/>
        <result column="document_name" property="documentName"/>
        <result column="document_code" property="documentCode"/>
        <result column="standard_name" property="standardName"/>
        <result column="standard_code" property="standardCode"/>
        <result column="effective_date" property="effectiveDate"/>
        <result column="cancel_date" property="cancelDate"/>
        <result column="note" property="note"/>
        <result column="manage_record_total_id" property="manageRecordTotalId"/>
    </resultMap>
    <select id="pageManageRecordVerify" resultMap="BaseResultMap">
        select * from (select * from cnas_manage_record_verify)A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageReviewProgramFileMapper.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.yuanchu.mom.mapper.ManageReviewProgramFileMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageReviewProgramFile">
        <id column="id" property="id" />
        <result column="file_name" property="fileName" />
        <result column="review_id" property="reviewId" />
        <result column="url" property="url" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
</mapper>
cnas-manage/src/main/resources/mapper/ManageReviewProgramMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
<?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.yuanchu.mom.mapper.ManageReviewProgramMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageReviewProgram">
        <id column="id" property="id" />
        <result column="review_time" property="reviewTime" />
        <result column="judging_location" property="judgingLocation" />
        <result column="judging_purpose" property="judgingPurpose" />
        <result column="judging_method" property="judgingMethod" />
        <result column="participants" property="participants" />
        <result column="judging_scope" property="judgingScope" />
        <result column="judging_basis" property="judgingBasis" />
        <result column="main_context" property="mainContext" />
        <result column="preparation_requirements" property="preparationRequirements" />
        <result column="editor" property="editor" />
        <result column="editor_date" property="editorDate" />
        <result column="approve" property="approve" />
        <result column="approve_date" property="approveDate" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <select id="page" resultType="com.yuanchu.mom.pojo.ManageReviewProgram">
        select * from cnas_manage_review_program
        <where>
            <if test="startTime != null and startTime != ''">
                 review_time >= #{startTime}
            </if>
            <if test="endTime != null and endTime != ''">
                and #{endTime} >= review_time
            </if>
            <if test="judgingLocation != null and judgingLocation != ''">
                and judging_location = #{judgingLocation}
            </if>
        </where>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageReviewReportMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<?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.yuanchu.mom.mapper.ManageReviewReportMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageReviewReport">
        <id column="id" property="id" />
        <result column="objective" property="objective" />
        <result column="place" property="place" />
        <result column="compere" property="compere" />
        <result column="record_people" property="recordPeople" />
        <result column="date" property="date" />
        <result column="page" property="page" />
        <result column="judging_method" property="judgingMethod" />
        <result column="review_basis" property="reviewBasis" />
        <result column="attendess" property="attendess" />
        <result column="review_inputs" property="reviewInputs" />
        <result column="review_process" property="reviewProcess" />
        <result column="main_topic" property="mainTopic" />
        <result column="matters" property="matters" />
        <result column="head" property="head" />
        <result column="completion_date" property="completionDate" />
        <result column="tracking_confirmed" property="trackingConfirmed" />
        <result column="foller_up" property="follerUp" />
        <result column="overall_evaluation" property="overallEvaluation" />
        <result column="audit" property="audit" />
        <result column="approval" property="approval" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <select id="page" resultType="com.yuanchu.mom.pojo.ManageReviewReport">
        select * from cnas_manage_review_report
        <where>
            <if test="startTime != null and startTime != ''">
                `date` >= #{startTime}
            </if>
            <if test="endTime != null and endTime != ''">
                and #{endTime} >= `date`
            </if>
            <if test="place != null and place != ''">
                and place = #{place}
            </if>
        </where>
    </select>
</mapper>
cnas-manage/src/main/resources/mapper/ManageRiskAssessmentResultsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
<?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.yuanchu.mom.mapper.ManageRiskAssessmentResultsMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ManageRiskAssessmentResults">
        <id column="id" property="id" />
        <result column="venue" property="venue" />
        <result column="hazard" property="hazard" />
        <result column="accidents" property="accidents" />
        <result column="injury" property="injury" />
        <result column="risk_L" property="riskL" />
        <result column="risk_E" property="riskE" />
        <result column="risk_C" property="riskC" />
        <result column="risk_D" property="riskD" />
        <result column="level" property="level" />
        <result column="conclusion" property="conclusion" />
        <result column="measures" property="measures" />
        <result column="editor" property="editor" />
        <result column="editor_date" property="editorDate" />
        <result column="approval" property="approval" />
        <result column="approval_date" property="approvalDate" />
        <result column="approve" property="approve" />
        <result column="approve_date" property="approveDate" />
    </resultMap>
    <select id="getPageResults" resultType="com.yuanchu.mom.vo.ManageRiskAssessmentResultsVo">
        select c.*, u1.name editor_name, u2.name approval_name, u3.name approve_name
        from cnas_manage_risk_assessment_results c
                 left join user u1 on u1.id = c.editor
                 left join user u2 on u2.id = c.approval
                 left join user u3 on u3.id = c.approve
        <if test="itSExporting == true">
            where c.approve_status = 1
            and c.approval_status = 1
        </if>
    </select>
</mapper>
cnas-manage/src/main/resources/static/analysis-risk-factors.docx
Binary files differ
cnas-manage/src/main/resources/static/audit-deal.docx
Binary files differ
cnas-manage/src/main/resources/static/cancel-deal.docx
Binary files differ
cnas-manage/src/main/resources/static/check-deal.docx
Binary files differ
cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx
Binary files differ
cnas-manage/src/main/resources/static/internal-check.docx
Binary files differ
cnas-manage/src/main/resources/static/internal-correct.docx
Binary files differ
cnas-manage/src/main/resources/static/internal-implement.docx
Binary files differ
cnas-manage/src/main/resources/static/internal-meeting.docx
Binary files differ
cnas-manage/src/main/resources/static/internal-plan.docx
Binary files differ
cnas-manage/src/main/resources/static/internal-report.docx
Binary files differ
cnas-manage/src/main/resources/static/intervals-deal.docx
Binary files differ
cnas-manage/src/main/resources/static/recycle-deal.docx
Binary files differ
cnas-manage/src/main/resources/static/review-meet.docx
Binary files differ
cnas-manage/src/main/resources/static/review-program.docx
Binary files differ
cnas-manage/src/main/resources/static/review-report.docx
Binary files differ
cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx
Binary files differ
cnas-manage/src/main/resources/static/verify-deal.docx
Binary files differ
framework/src/main/java/com/yuanchu/mom/utils/DateImageUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.yuanchu.mom.utils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
 * @Author zhuo
 * @Date 2024/9/28
 */
public class DateImageUtil {
    /**
     * ç”Ÿæˆ å½“前日期的画布
     * @return
     */
    public static InputStream createDateImage(LocalDateTime date) {
        int width = 80;
        int height = 20;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
        if (date == null) {
            date = LocalDateTime.now();
        }
        String s = date.format(formatter);
        Font font = new Font("Serif", Font.BOLD, 10);
        // åˆ›å»ºä¸€ä¸ªç”»å¸ƒï¼ˆèƒŒæ™¯é€æ˜Žï¼‰
        BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        // èŽ·å–ç”»å¸ƒçš„ç”»ç¬”
        Graphics2D g2 = (Graphics2D) bi.getGraphics();
        // å¼€å§‹ç»˜å›¾
        g2.setComposite(AlphaComposite.Src); // ç¡®ä¿ç»˜å›¾æ—¶æ˜¯é€æ˜ŽèƒŒæ™¯
        g2.setBackground(new Color(0, 0, 0, 0)); // èƒŒæ™¯è‰²ä¸ºé€æ˜Ž
        g2.clearRect(0, 0, width, height);
        g2.setPaint(new Color(0, 0, 0)); // è®¾ç½®ç»˜åˆ¶é¢œè‰²
        FontRenderContext context = g2.getFontRenderContext();
        Rectangle2D bounds = font.getStringBounds(s, context);
        double x = (width - bounds.getWidth()) / 2;
        double y = (height - bounds.getHeight()) / 2;
        double ascent = -bounds.getY();
        double baseY = y + ascent;
        g2.drawString(s, (int) x, (int) baseY);
        g2.dispose(); // é‡Šæ”¾ç”»ç¬”资源
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        try {
            ImageIO.write(bi, "png", os);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return new ByteArrayInputStream(os.toByteArray());
    }
}
framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java
@@ -6,7 +6,9 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.FileSystemUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import java.io.ByteArrayInputStream;
import java.io.File;
@@ -69,6 +71,9 @@
    }
    public static Boolean DeleteFile(String fileName) {
        if (ObjectUtils.isEmpty(fileName)) {
            return false;
        }
        return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName));
    }
    /**
framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
@@ -17,7 +17,11 @@
        String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
        int num;
        num = systemLogMapper.countRowsByNow(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
        if (tableName.equals("ins_order")) {
            num = systemLogMapper.countRowsByNow2(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
        } else {
            num = systemLogMapper.countRowsByNow(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
        }
        String nums = num + "";
        if (nums.length() == 1) nums = "00" + num;
        else if (nums.length() == 2) nums = "0" + num;
@@ -25,14 +29,29 @@
    }
    //检验单委托单号的生成规则
    public String giveCode2(String code, String tableName, String symbol, String patten) {
    public String giveCode2(String code, Long companyId, String laboratory, String tableName, String symbol, String patten) {
        String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
        int num;
        num = systemLogMapper.countRowsByNow2(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
        num = systemLogMapper.countRowsByNow3(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + 1;
        String nums = num + "";
        if (nums.length() == 1) nums = "00" + num;
        else if (nums.length() == 2) nums = "0" + num;
        return code + (date2 == null ? date : date2) + symbol + nums;
    }
    //检验单生成外部委托编号的规则
    public String giveCode3(String code, Long companyId, String laboratory, String tableName, String symbol, String patten) {
        String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
        int num;
        num = systemLogMapper.countRowsByNow4(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + 1;
        String nums = num + "";
        if (nums.length() == 1) nums = "0000" + num;
        else if (nums.length() == 2) nums = "000" + num;
        else if (nums.length() == 3) nums = "00" + num;
        else if (nums.length() == 4) nums = "0" + num;
        return code + (date2 == null ? date : date2) + symbol + nums;
    }
}
framework/src/main/java/com/yuanchu/mom/utils/Jwt.java
@@ -9,7 +9,6 @@
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Component
public class Jwt {
framework/src/main/java/com/yuanchu/mom/utils/MatrixToImageWriter.java
@@ -1,5 +1,13 @@
package com.yuanchu.mom.utils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.yuanchu.mom.exception.ErrorException;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
@@ -7,18 +15,6 @@
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.yuanchu.mom.exception.ErrorException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
 * é…ç½®å›¾åƒå†™å…¥å™¨
framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom.utils;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -39,7 +40,7 @@
     * @return è¿”回随机加密盐
     */
    public static String getSalt(int n) {
        char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@#$%^&*()+-=/[];~.".toCharArray();
        char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@$%^&*.?".toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            char c = chars[new Random().nextInt(chars.length)];
@@ -74,4 +75,25 @@
        String sixIncr = String.format("%06d", incrNum);
        return prefix + timeStr + sixIncr;
    }
    /**
     * åˆ¤æ–­æ˜¯å¦ä¸ºexcel
     * @param file
     * @return
     */
    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");
    }
}
framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/yuanchu/mom/utils/HackLoopTableRenderPolicy.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
/*
 * Copyright 2014-2020 Sayi
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.yuanchu.mom.utils;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.exception.RenderException;
import com.deepoove.poi.policy.RenderPolicy;
import com.deepoove.poi.render.compute.RenderDataCompute;
import com.deepoove.poi.render.processor.DocumentProcessor;
import com.deepoove.poi.resolver.TemplateResolver;
import com.deepoove.poi.template.ElementTemplate;
import com.deepoove.poi.template.MetaTemplate;
import com.deepoove.poi.template.run.RunTemplate;
import com.deepoove.poi.util.ReflectionUtils;
import com.deepoove.poi.util.TableTools;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import java.util.Iterator;
import java.util.List;
/**
 * Hack for loop table row
 *
 * @author Sayi
 *
 */
public class HackLoopTableRenderPolicy implements RenderPolicy {
    private String prefix;
    private String suffix;
    private boolean onSameLine;
    public HackLoopTableRenderPolicy() {
        this(false);
    }
    public HackLoopTableRenderPolicy(boolean onSameLine) {
        this("[", "]", onSameLine);
    }
    public HackLoopTableRenderPolicy(String prefix, String suffix) {
        this(prefix, suffix, false);
    }
    public HackLoopTableRenderPolicy(String prefix, String suffix, boolean onSameLine) {
        this.prefix = prefix;
        this.suffix = suffix;
        this.onSameLine = onSameLine;
    }
    @Override
    public void render(ElementTemplate eleTemplate, Object data, XWPFTemplate template) {
        RunTemplate runTemplate = (RunTemplate) eleTemplate;
        XWPFRun run = runTemplate.getRun();
        try {
            if (!TableTools.isInsideTable(run)) {
                throw new IllegalStateException(
                        "The template tag " + runTemplate.getSource() + " must be inside a table");
            }
            XWPFTableCell tagCell = (XWPFTableCell) ((XWPFParagraph) run.getParent()).getBody();
            XWPFTable table = tagCell.getTableRow().getTable();
            run.setText("", 0);
            int templateRowIndex = getTemplateRowIndex(tagCell);
            if (null != data && data instanceof Iterable) {
                Iterator<?> iterator = ((Iterable<?>) data).iterator();
                XWPFTableRow templateRow = table.getRow(templateRowIndex);
                int insertPosition = templateRowIndex;
                TemplateResolver resolver = new TemplateResolver(template.getConfig().copy(prefix, suffix));
                boolean firstFlag = true;
                while (iterator.hasNext()) {
                    insertPosition = templateRowIndex++;
                    XWPFTableRow nextRow = table.insertNewTableRow(insertPosition);
                    setTableRow(table, templateRow, insertPosition);
                    // double set row
                    XmlCursor newCursor = templateRow.getCtRow().newCursor();
                    newCursor.toPrevSibling();
                    XmlObject object = newCursor.getObject();
                    nextRow = new XWPFTableRow((CTRow) object, table);
                    if (!firstFlag) {
                        // update VMerge cells for non-first row
                        List<XWPFTableCell> tableCells = nextRow.getTableCells();
                        for (XWPFTableCell cell : tableCells) {
                            CTTcPr tcPr = TableTools.getTcPr(cell);
                            CTVMerge vMerge = tcPr.getVMerge();
                            if (null == vMerge) continue;
                            if (STMerge.RESTART == vMerge.getVal()) {
                                vMerge.setVal(STMerge.CONTINUE);
                            }
                        }
                    } else {
                        firstFlag = false;
                    }
                    setTableRow(table, nextRow, insertPosition);
                    RenderDataCompute dataCompute = template.getConfig().getRenderDataComputeFactory()
                            .newCompute(iterator.next());
                    List<XWPFTableCell> cells = nextRow.getTableCells();
                    cells.forEach(cell -> {
                        List<MetaTemplate> templates = resolver.resolveBodyElements(cell.getBodyElements());
                        new DocumentProcessor(template, resolver, dataCompute).process(templates);
                    });
                }
            }
            table.removeRow(templateRowIndex);
            afterloop(table, data);
        } catch (Exception e) {
            throw new RenderException("HackLoopTable for " + eleTemplate + "error: " + e.getMessage(), e);
        }
    }
    private int getTemplateRowIndex(XWPFTableCell tagCell) {
        XWPFTableRow tagRow = tagCell.getTableRow();
        return onSameLine ? getRowIndex(tagRow) : (getRowIndex(tagRow) + 1);
    }
    protected void afterloop(XWPFTable table, Object data) {
    }
    @SuppressWarnings("unchecked")
    private void setTableRow(XWPFTable table, XWPFTableRow templateRow, int pos) {
        List<XWPFTableRow> rows = (List<XWPFTableRow>) ReflectionUtils.getValue("tableRows", table);
        rows.set(pos, templateRow);
        table.getCTTbl().setTrArray(pos, templateRow.getCtRow());
    }
    private int getRowIndex(XWPFTableRow row) {
        List<XWPFTableRow> rows = row.getTable().getRows();
        return rows.indexOf(row);
    }
}
inspect-server/src/main/java/com/yuanchu/mom/utils/XWPFDocumentUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package com.yuanchu.mom.utils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import java.util.*;
/**
 * @Author zhuo
 * @Date 2024/11/16
 */
public class XWPFDocumentUtils {
    public static void updateMergeByDocument(XWPFDocument document) {
        // å¤„理合并单元格的问题
        List<XWPFTable> xwpfTables = document.getTables();
        for (int i = 0; i < xwpfTables.size(); i++) {
            Set<String> set1 = new HashSet<>();
            Map<String, Map<String, Integer>> maps = new HashMap<>();
            for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) {
                for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) {
                    if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().contains("∑")) {
                        String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑");
                        if (set1.add(split[1])) {
                            Map<String, Integer> map = new HashMap<>();
                            map.put("sr", j);
                            map.put("sc", k);
                            map.put("er", j + 0);
                            map.put("ec", k + 0);
                            maps.put(split[1], map);
                        } else {
                            Map<String, Integer> map1 = maps.get(split[1]);
                            if (j == map1.get("sr")) {
                                map1.put("ec", map1.get("ec") + 1);
                            } else if (k == map1.get("sc")) {
                                map1.put("er", map1.get("er") + 1);
                            }
                        }
                        String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("∑")[0];
                        xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                        xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str);
                        xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
                        xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);
                    }
                }
            }
            // å•元格排序, é¿å…æ ¼å¼é”™ä¹±
            List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet());
            entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc"));
            // æŒ‰ç…§é¡ºåºæ·»åŠ è¿›é›†åˆ
            List<String> list = new ArrayList<>();
            for (Map.Entry<String, Map<String, Integer>> entry : entries) {
                list.add(entry.getKey());
            }
            for (int a = list.size() - 1; a >= 0; a--) {
                Map<String, Integer> v = maps.get(list.get(a));
                for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) {
                    if (v.get("ec") > v.get("sc")) {
                        try {
                            mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec"));
                        } catch (Exception e) {
                        }
                    }
                }
                if (v.get("er") > v.get("sr")) {
                    try {
                        mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er"));
                    } catch (Exception e) {
                    }
                }
            }
        }
        //处理中英文换行的问题
        List<XWPFTable> xwpfTables1 = document.getTables();
        for (int i = 0; i < xwpfTables1.size(); i++) {
            for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
                for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
                    if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
                        String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
                        String[] split = text.split("@");
                        xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
                        XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
                        XWPFRun run = xwpfParagraph.createRun();
                        run.setText(split[0]);
                        if (ObjectUtils.isNotNull(split[1])) {
                            run.addBreak();
                            run.setText(split[1]);
                        }
                        xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
                    }
                }
            }
        }
    }
    // æ°´å¹³åˆå¹¶å•元格
    private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
        for (int i = fromCol; i <= toCol; i++) {
            if (i == fromCol) {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
    // åž‚直合并单元格
    private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
        for (int i = fromRow; i <= toRow; i++) {
            if (i == fromRow) {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }
}
performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
@@ -13,7 +13,6 @@
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.AuxiliaryWorkingHoursDayService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.MyUtil;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;