From c9e36e23b3f95f6027d78483dfc23021d1ec6261 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 20 十二月 2024 10:56:02 +0800
Subject: [PATCH] cnas8模块
---
framework/src/main/java/com/yuanchu/mom/utils/MatrixToImageWriter.java | 20
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckDetailServiceImpl.java | 19
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordAuditServiceImpl.java | 679 ++
cnas-manage/src/main/resources/mapper/ManageRecordCancelMapper.xml | 34
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentAlter.java | 129
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentControlledService.java | 35
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java | 235
inspect-server/src/main/java/com/yuanchu/mom/utils/XWPFDocumentUtils.java | 119
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordAuditController.java | 102
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordTotalService.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordAuditService.java | 29
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalReport.java | 123
cnas-manage/src/main/resources/mapper/ManageRecordAuditMapper.xml | 50
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordAudit.java | 149
cnas-manage/src/main/resources/mapper/ClientSatisfactionAnalyseFileMapper.xml | 18
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanMapper.java | 30
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementDetailService.java | 15
cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar | 0
cnas-manage/src/main/resources/mapper/InternalPlanDetailMapper.xml | 6
cnas-manage/src/main/resources/static/internal-check.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheckDetail.java | 64
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalMeetingController.java | 104
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingParticipantsServiceImpl.java | 42
cnas-manage/src/main/resources/mapper/ManageReviewProgramFileMapper.xml | 17
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentIssueRecycle.java | 122
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewReportServiceImpl.java | 140
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java | 124
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplementDetail.java | 64
cnas-manage/src/main/resources/mapper/ManageRecordVerifyMapper.xml | 23
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentListService.java | 28
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingDetailServiceImpl.java | 20
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCancelController.java | 95
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIssueRecycleService.java | 30
cnas-manage/src/main/resources/static/check-deal.docx | 0
cnas-manage/src/main/resources/mapper/ManageControlPlanListMapper.xml | 33
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsTotalService.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentListMapper.java | 22
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageControlPlanListMapper.java | 21
cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx | 0
cnas-manage/src/main/resources/mapper/ManageDocumentControlledMapper.xml | 42
cnas-manage/src/main/resources/mapper/ManageRecordIntervalsTotalMapper.xml | 33
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectServiceImpl.java | 321 +
cnas-manage/src/main/java/com/yuanchu/mom/dto/ClientSatisfactionDto.java | 50
cnas-manage/src/main/resources/mapper/ManageDocumentCancelMapper.xml | 44
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentAlterMapper.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCancel.java | 92
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanDetailService.java | 16
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingDetailMapper.java | 16
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCheckDto.java | 20
cnas-manage/src/main/resources/mapper/ManageRiskAssessmentResultsMapper.xml | 38
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCheckController.java | 119
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCorrectDto.java | 28
cnas-manage/pom.xml | 48
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalPlanController.java | 129
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIssueRecycleController.java | 86
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrectFile.java | 57
cnas-manage/src/main/resources/static/internal-plan.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionAnalyseFileMapper.java | 27
framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java | 5
cnas-manage/src/main/java/com/yuanchu/mom/excel/ManageDocumentListListener.java | 40
cnas-manage/src/main/resources/mapper/ManageRecordTotalMapper.xml | 32
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalPlanDto.java | 20
cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRiskAssessmentResultsController.java | 125
cnas-manage/src/main/resources/static/intervals-deal.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramFileService.java | 25
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramServiceImpl.java | 131
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeeting.java | 62
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentListServiceImpl.java | 136
cnas-manage/src/main/resources/mapper/InternalPlanMapper.xml | 14
cnas-manage/src/main/resources/mapper/InternalMeetingDetailMapper.xml | 6
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRiskAssessmentResultsMapper.java | 21
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentIssueRecycleService.java | 34
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRiskAssessmentResultsServiceImpl.java | 124
framework/src/main/java/com/yuanchu/mom/utils/Jwt.java | 1
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentCancelServiceImpl.java | 143
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckDetailService.java | 15
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramFileMapper.java | 16
cnas-manage/src/main/resources/static/internal-implement.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java | 166
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanDetailMapper.java | 18
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementService.java | 70
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageDocumentIssueRecycleDto.java | 31
cnas-manage/src/main/resources/static/review-program.docx | 0
cnas-manage/src/main/resources/static/internal-report.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageControlPlanList.java | 80
cnas-manage/src/main/resources/mapper/ManageRecordIntervalsMapper.xml | 27
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentControlled.java | 107
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingDto.java | 16
cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingParticipantsDto.java | 22
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewReportService.java | 25
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckDetailMapper.java | 17
cnas-manage/src/main/resources/static/audit-deal.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramFileController.java | 44
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentControlledMapper.java | 23
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageControlPlanListService.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRiskAssessmentResultsService.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsTotalServiceImpl.java | 503 +
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentList.java | 93
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionMapper.java | 36
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentCancel.java | 114
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordVerifyService.java | 27
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentControlledController.java | 89
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentIssueRecycleMapper.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentIssueRecycleServiceImpl.java | 204
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfaction.java | 95
cnas-manage/src/main/resources/mapper/ManageDocumentIssueRecycleMapper.xml | 54
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeeting.java | 57
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRiskAssessmentResults.java | 102
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectFileService.java | 16
cnas-manage/src/main/resources/static/internal-correct.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeetingDetail.java | 59
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanService.java | 78
cnas-manage/src/main/java/com/yuanchu/mom/vo/ReviewProgramDetailsVo.java | 21
cnas-manage/src/main/resources/mapper/ManageDocumentListMapper.xml | 26
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingParticipantsMapper.java | 16
inspect-server/src/main/java/com/yuanchu/mom/utils/HackLoopTableRenderPolicy.java | 154
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCheckMapper.java | 21
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingParticipantsService.java | 22
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordVerifyController.java | 74
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordTotalServiceImpl.java | 427 +
cnas-manage/src/main/resources/static/cancel-deal.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordTotal.java | 83
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordVerifyServiceImpl.java | 160
cnas-manage/src/main/resources/mapper/ManageRecordIssueRecycleMapper.xml | 33
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsMapper.java | 21
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCheckController.java | 99
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIssueRecycleMapper.java | 21
cnas-manage/src/main/resources/static/review-report.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageControlPlanListVo.java | 20
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalReportController.java | 127
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java | 205
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsTotalMapper.java | 21
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsController.java | 84
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramController.java | 77
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramMapper.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentIssueRecycleController.java | 93
cnas-manage/src/main/resources/static/verify-deal.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewReport.java | 105
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCheckServiceImpl.java | 475 +
cnas-manage/src/main/resources/mapper/ManageMeetingMapper.xml | 32
cnas-manage/src/main/resources/static/review-meet.docx | 0
cnas-manage/src/main/resources/mapper/ManageReviewProgramMapper.xml | 41
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsService.java | 30
cnas-manage/src/main/java/com/yuanchu/mom/service/ClientSatisfactionService.java | 59
cnas-manage/src/main/resources/mapper/ManageReviewReportMapper.xml | 48
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordTotalMapper.java | 21
cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageRiskAssessmentResultsVo.java | 21
cnas-manage/src/main/resources/mapper/ManageDocumentAlterMapper.xml | 48
cnas-manage/src/main/resources/mapper/InternalMeetingMapper.xml | 18
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentCancelMapper.java | 23
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectFileServiceImpl.java | 20
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplement.java | 108
cnas-manage/src/main/resources/mapper/ClientSatisfactionMapper.xml | 48
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectFileMapper.java | 18
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlan.java | 101
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsTotalController.java | 60
performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java | 1
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectMapper.java | 23
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentAlterService.java | 35
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordTotalController.java | 58
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java | 256
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingMapper.java | 27
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingService.java | 64
cnas-manage/src/main/resources/static/analysis-risk-factors.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckService.java | 70
framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java | 25
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordVerify.java | 69
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckMapper.java | 28
cnas-manage/src/main/resources/mapper/ManageRecordCheckMapper.xml | 35
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordVerifyMapper.java | 22
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentListController.java | 87
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCheckService.java | 31
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingController.java | 72
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervalsTotal.java | 83
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentAlterServiceImpl.java | 290 +
cnas-manage/src/main/resources/static/recycle-deal.docx | 0
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramService.java | 28
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCheck.java | 84
framework/src/main/java/com/yuanchu/mom/utils/DateImageUtil.java | 61
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewReportController.java | 70
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervals.java | 73
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIssueRecycleServiceImpl.java | 699 ++
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingDto.java | 22
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageControlPlanListController.java | 125
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCancelService.java | 28
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementDetailServiceImpl.java | 19
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrect.java | 121
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectService.java | 66
cnas-manage/src/main/resources/static/internal-meeting.docx | 0
cnas-manage/src/main/resources/mapper/InternalCorrectFileMapper.xml | 18
cnas-manage/src/main/resources/lib/license.xml | 13
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentControlledServiceImpl.java | 241
cnas-manage/src/main/java/com/yuanchu/mom/controller/ClientSatisfactionController.java | 148
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgram.java | 84
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java | 234
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalImplementDto.java | 19
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCancelMapper.java | 21
cnas-manage/src/main/resources/mapper/InternalReportMapper.xml | 14
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingService.java | 28
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementMapper.java | 28
cnas-manage/src/main/java/com/yuanchu/mom/schedule/ManageRecordTotalSchedule.java | 37
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalReportService.java | 47
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCorrectController.java | 120
cnas-manage/src/main/resources/mapper/InternalImplementMapper.xml | 14
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java | 165
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeetingParticipants.java | 57
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfactionAnalyseFile.java | 55
cnas-manage/src/main/resources/mapper/InternalCorrectMapper.xml | 15
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingMapper.java | 22
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementDetailMapper.java | 17
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheck.java | 81
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ClientSatisfactionServiceImpl.java | 189
cnas-manage/src/main/resources/mapper/InternalCheckMapper.xml | 15
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentCancelController.java | 90
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingParticipantsController.java | 57
cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingDetailService.java | 16
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanDetailServiceImpl.java | 20
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramFileServiceImpl.java | 78
cnas-manage/src/main/java/com/yuanchu/mom/vo/MeetingParticipantsDetailsVo.java | 17
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordAuditMapper.java | 21
cnas-manage/src/main/resources/mapper/ManageMeetingParticipantsMapper.xml | 17
cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewReportMapper.java | 22
framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java | 24
cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalReportMapper.java | 28
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsServiceImpl.java | 526 +
cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCancelServiceImpl.java | 484 +
/dev/null | 67
cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlanDetail.java | 89
cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalImplementController.java | 121
cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingParticipantDto.java | 32
cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentCancelService.java | 33
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgramFile.java | 53
cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentAlterController.java | 98
cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIssueRecycle.java | 89
235 files changed, 16,530 insertions(+), 85 deletions(-)
diff --git a/cnas-manage/pom.xml b/cnas-manage/pom.xml
new file mode 100644
index 0000000..732d4be
--- /dev/null
+++ b/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>
\ No newline at end of file
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ClientSatisfactionController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ClientSatisfactionController.java
new file mode 100644
index 0000000..b4bba3a
--- /dev/null
+++ b/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 淇敼浜篿d
+ */
+ @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));
+ }
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCheckController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCheckController.java
new file mode 100644
index 0000000..3fe182d
--- /dev/null
+++ b/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);
+ }
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCorrectController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalCorrectController.java
new file mode 100644
index 0000000..d72564e
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalImplementController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalImplementController.java
new file mode 100644
index 0000000..04f4117
--- /dev/null
+++ b/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);
+ }
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalMeetingController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalMeetingController.java
new file mode 100644
index 0000000..0aea14d
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalPlanController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalPlanController.java
new file mode 100644
index 0000000..07fa2ff
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalReportController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/InternalReportController.java
new file mode 100644
index 0000000..be5ac5b
--- /dev/null
+++ b/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);
+ }
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageControlPlanListController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageControlPlanListController.java
new file mode 100644
index 0000000..40ba8a5
--- /dev/null
+++ b/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("璇峰鍏xcel鏂囦欢锛�");
+ }
+ 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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentAlterController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentAlterController.java
new file mode 100644
index 0000000..d66f5ba
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentCancelController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentCancelController.java
new file mode 100644
index 0000000..4fc2648
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentControlledController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentControlledController.java
new file mode 100644
index 0000000..0f23d5c
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentIssueRecycleController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentIssueRecycleController.java
new file mode 100644
index 0000000..518c16c
--- /dev/null
+++ b/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);
+ }
+
+
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentListController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageDocumentListController.java
new file mode 100644
index 0000000..a52f6bb
--- /dev/null
+++ b/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();
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingController.java
new file mode 100644
index 0000000..0c61079
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingParticipantsController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageMeetingParticipantsController.java
new file mode 100644
index 0000000..1eed684
--- /dev/null
+++ b/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();
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordAuditController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordAuditController.java
new file mode 100644
index 0000000..07e7697
--- /dev/null
+++ b/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));
+ }
+
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCancelController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCancelController.java
new file mode 100644
index 0000000..8b44924
--- /dev/null
+++ b/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));
+ }
+
+
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCheckController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordCheckController.java
new file mode 100644
index 0000000..a5d9397
--- /dev/null
+++ b/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));
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsController.java
new file mode 100644
index 0000000..55482d2
--- /dev/null
+++ b/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));
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsTotalController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIntervalsTotalController.java
new file mode 100644
index 0000000..4555ca9
--- /dev/null
+++ b/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));
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIssueRecycleController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordIssueRecycleController.java
new file mode 100644
index 0000000..00e50a2
--- /dev/null
+++ b/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));
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordTotalController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordTotalController.java
new file mode 100644
index 0000000..5ab8394
--- /dev/null
+++ b/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));
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordVerifyController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRecordVerifyController.java
new file mode 100644
index 0000000..c9de721
--- /dev/null
+++ b/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));
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramController.java
new file mode 100644
index 0000000..659255b
--- /dev/null
+++ b/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);
+ }
+
+
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramFileController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewProgramFileController.java
new file mode 100644
index 0000000..9011b94
--- /dev/null
+++ b/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();
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewReportController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageReviewReportController.java
new file mode 100644
index 0000000..11bcf01
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRiskAssessmentResultsController.java b/cnas-manage/src/main/java/com/yuanchu/mom/controller/ManageRiskAssessmentResultsController.java
new file mode 100644
index 0000000..a1424dc
--- /dev/null
+++ b/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("璇峰鍏xcel鏂囦欢锛�");
+ }
+ 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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/ClientSatisfactionDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/ClientSatisfactionDto.java
new file mode 100644
index 0000000..4f12ed3
--- /dev/null
+++ b/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: 瀹㈡埛婊℃剰搴﹁皟鏌ュ鍑篧ord
+ */
+@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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCheckDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCheckDto.java
new file mode 100644
index 0000000..8aafb43
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCorrectDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalCorrectDto.java
new file mode 100644
index 0000000..b12349f
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalImplementDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalImplementDto.java
new file mode 100644
index 0000000..97a419a
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingDto.java
new file mode 100644
index 0000000..4ef5594
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingParticipantDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalMeetingParticipantDto.java
new file mode 100644
index 0000000..c06dcc3
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalPlanDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/InternalPlanDto.java
new file mode 100644
index 0000000..e8720cc
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageDocumentIssueRecycleDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageDocumentIssueRecycleDto.java
new file mode 100644
index 0000000..dc52d84
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingDto.java
new file mode 100644
index 0000000..8fda17c
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingParticipantsDto.java b/cnas-manage/src/main/java/com/yuanchu/mom/dto/ManageMeetingParticipantsDto.java
new file mode 100644
index 0000000..1ae5d85
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/excel/ManageDocumentListListener.java b/cnas-manage/src/main/java/com/yuanchu/mom/excel/ManageDocumentListListener.java
new file mode 100644
index 0000000..3a01c3d
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionAnalyseFileMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionAnalyseFileMapper.java
new file mode 100644
index 0000000..7cdd146
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ClientSatisfactionMapper.java
new file mode 100644
index 0000000..3ed83b4
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckDetailMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckDetailMapper.java
new file mode 100644
index 0000000..e14a3db
--- /dev/null
+++ b/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> {
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCheckMapper.java
new file mode 100644
index 0000000..88c9dc3
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectFileMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectFileMapper.java
new file mode 100644
index 0000000..efcff9c
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalCorrectMapper.java
new file mode 100644
index 0000000..81983f8
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementDetailMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementDetailMapper.java
new file mode 100644
index 0000000..13ac608
--- /dev/null
+++ b/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> {
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalImplementMapper.java
new file mode 100644
index 0000000..f9eecee
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingDetailMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingDetailMapper.java
new file mode 100644
index 0000000..92b76de
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalMeetingMapper.java
new file mode 100644
index 0000000..d8d45ec
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanDetailMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanDetailMapper.java
new file mode 100644
index 0000000..0ac7b65
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalPlanMapper.java
new file mode 100644
index 0000000..736b6dd
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalReportMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/InternalReportMapper.java
new file mode 100644
index 0000000..0a4846b
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageControlPlanListMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageControlPlanListMapper.java
new file mode 100644
index 0000000..ccb67d5
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentAlterMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentAlterMapper.java
new file mode 100644
index 0000000..3f0c472
--- /dev/null
+++ b/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);
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentCancelMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentCancelMapper.java
new file mode 100644
index 0000000..04357d7
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentControlledMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentControlledMapper.java
new file mode 100644
index 0000000..448a809
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentIssueRecycleMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentIssueRecycleMapper.java
new file mode 100644
index 0000000..ad02ae4
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentListMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageDocumentListMapper.java
new file mode 100644
index 0000000..db5ade5
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingMapper.java
new file mode 100644
index 0000000..facf5b8
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingParticipantsMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageMeetingParticipantsMapper.java
new file mode 100644
index 0000000..d7393a8
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordAuditMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordAuditMapper.java
new file mode 100644
index 0000000..904c471
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCancelMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCancelMapper.java
new file mode 100644
index 0000000..ea280dd
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCheckMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordCheckMapper.java
new file mode 100644
index 0000000..6c9b6f1
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsMapper.java
new file mode 100644
index 0000000..66391e8
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsTotalMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIntervalsTotalMapper.java
new file mode 100644
index 0000000..530a672
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIssueRecycleMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordIssueRecycleMapper.java
new file mode 100644
index 0000000..200583f
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordTotalMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordTotalMapper.java
new file mode 100644
index 0000000..99ff7f2
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordVerifyMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRecordVerifyMapper.java
new file mode 100644
index 0000000..eca16f0
--- /dev/null
+++ b/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);
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramFileMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramFileMapper.java
new file mode 100644
index 0000000..24cbe57
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewProgramMapper.java
new file mode 100644
index 0000000..05becd9
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewReportMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageReviewReportMapper.java
new file mode 100644
index 0000000..6be4a8b
--- /dev/null
+++ b/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);
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRiskAssessmentResultsMapper.java b/cnas-manage/src/main/java/com/yuanchu/mom/mapper/ManageRiskAssessmentResultsMapper.java
new file mode 100644
index 0000000..df5c3ef
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfaction.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfaction.java
new file mode 100644
index 0000000..183fb3f
--- /dev/null
+++ b/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("纭浜篒d")
+ 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;
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfactionAnalyseFile.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ClientSatisfactionAnalyseFile.java
new file mode 100644
index 0000000..825f0c5
--- /dev/null
+++ b/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("鍒涘缓浜篿d")
+ @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;
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheck.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheck.java
new file mode 100644
index 0000000..1500c51
--- /dev/null
+++ b/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("缂栧埗浜篿d")
+ private Integer writeUserId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String writeUserName;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime writeTime;
+
+ @ApiModelProperty("鎵瑰噯浜篿d")
+ 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;
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheckDetail.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCheckDetail.java
new file mode 100644
index 0000000..20454d0
--- /dev/null
+++ b/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("妫�鏌ヤ富琛╥d")
+ 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;
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrect.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrect.java
new file mode 100644
index 0000000..86885ad
--- /dev/null
+++ b/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("鎻愬嚭浜篿d")
+ private Integer raiseUserId;
+
+ @ApiModelProperty("鎻愬嚭浜�")
+ private String raiseUserName;
+
+ @ApiModelProperty("鎻愬嚭鏃堕棿")
+ private LocalDate raiseTime;
+
+ @ApiModelProperty("鍘熷洜鍒嗘瀽")
+ private String causeResult;
+
+ @ApiModelProperty("鍘熷洜鍒嗘瀽璐d换閮ㄩ棬")
+ private String causeDepartment;
+
+ @ApiModelProperty("鍘熷洜鍒嗘瀽浜篿d")
+ private Integer causeUserId;
+
+ @ApiModelProperty("鍘熷洜鍒嗘瀽浜�")
+ private String causeUserName;
+
+ @ApiModelProperty("鍘熷洜鍒嗘瀽鏃堕棿")
+ private LocalDate causeTime;
+
+ @ApiModelProperty("绾犳鎺柦")
+ private String correctResult;
+
+ @ApiModelProperty("鎻愬嚭閮ㄩ棬纭")
+ private String raiseDepartmentAffirm;
+
+ @ApiModelProperty("绾犳璐d换閮ㄩ棬")
+ private String correctDepartment;
+
+ @ApiModelProperty("绾犳浜篿d")
+ private Integer correctUserId;
+
+ @ApiModelProperty("绾犳")
+ private String correctUserName;
+
+ @ApiModelProperty("绾犳鏃堕棿")
+ private LocalDate correctTime;
+
+ @ApiModelProperty("楠岃瘉缁撴灉")
+ private String validationResult;
+
+ @ApiModelProperty("楠岃瘉閮ㄩ棬")
+ private String validationDepartment;
+
+ @ApiModelProperty("楠岃瘉浜篿d")
+ 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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrectFile.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalCorrectFile.java
new file mode 100644
index 0000000..f19353e
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplement.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplement.java
new file mode 100644
index 0000000..885d68e
--- /dev/null
+++ b/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("缂栧埗浜篿d")
+ private Integer writeUserId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String writeUserName;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime writeTime;
+
+ @ApiModelProperty("鎵瑰噯浜篿d")
+ 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;
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplementDetail.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalImplementDetail.java
new file mode 100644
index 0000000..e37c441
--- /dev/null
+++ b/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("璐d换浜�")
+ 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;
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeeting.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeeting.java
new file mode 100644
index 0000000..7d8afc8
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeetingDetail.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalMeetingDetail.java
new file mode 100644
index 0000000..7bfefc9
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlan.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlan.java
new file mode 100644
index 0000000..c4c4a9f
--- /dev/null
+++ b/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("缂栧埗浜篿d")
+ private Integer writeUserId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String writeUserName;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private LocalDateTime writeTime;
+
+ @ApiModelProperty("瀹℃牳浜篿d")
+ private Integer examineUserId;
+
+ @ApiModelProperty("瀹℃牳浜�")
+ private String examineUserName;
+
+ @ApiModelProperty("瀹℃牳鏃堕棿")
+ private LocalDateTime examineTime;
+
+ @ApiModelProperty("瀹℃牳鐘舵��,0 涓嶉�氳繃, 1 閫氳繃")
+ private Integer examineStatus;
+
+ @ApiModelProperty("瀹℃牳淇℃伅")
+ private String examineRemark;
+
+ @ApiModelProperty("鎵瑰噯浜篿d")
+ 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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlanDetail.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalPlanDetail.java
new file mode 100644
index 0000000..2180904
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalReport.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/InternalReport.java
new file mode 100644
index 0000000..9630a73
--- /dev/null
+++ b/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("瀹℃牳璐d换鍒�")
+ 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("瀹℃牳浜篿d")
+ 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("璐ㄩ噺璐熻矗浜篿d")
+ 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;
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageControlPlanList.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageControlPlanList.java
new file mode 100644
index 0000000..a1ace8f
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentAlter.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentAlter.java
new file mode 100644
index 0000000..fff4983
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentCancel.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentCancel.java
new file mode 100644
index 0000000..103fa54
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentControlled.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentControlled.java
new file mode 100644
index 0000000..a8154d4
--- /dev/null
+++ b/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("璐d换浜�")
+ private Integer dutyUser;
+
+ @TableField(select = false,exist = false)
+ @ValueTableShow(value = 5, name = "璐d换浜�")
+ 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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentIssueRecycle.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentIssueRecycle.java
new file mode 100644
index 0000000..bf69e3d
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentList.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageDocumentList.java
new file mode 100644
index 0000000..aaba609
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeeting.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeeting.java
new file mode 100644
index 0000000..32150c6
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeetingParticipants.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageMeetingParticipants.java
new file mode 100644
index 0000000..d494e60
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordAudit.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordAudit.java
new file mode 100644
index 0000000..4a1ca25
--- /dev/null
+++ b/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;
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCancel.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCancel.java
new file mode 100644
index 0000000..f56769d
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCheck.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordCheck.java
new file mode 100644
index 0000000..5482561
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervals.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervals.java
new file mode 100644
index 0000000..b35c2f0
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervalsTotal.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIntervalsTotal.java
new file mode 100644
index 0000000..9a675bc
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIssueRecycle.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordIssueRecycle.java
new file mode 100644
index 0000000..b969d26
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordTotal.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordTotal.java
new file mode 100644
index 0000000..9a552fd
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordVerify.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRecordVerify.java
new file mode 100644
index 0000000..d8603f2
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgram.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgram.java
new file mode 100644
index 0000000..bc9f438
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgramFile.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewProgramFile.java
new file mode 100644
index 0000000..eae79fc
--- /dev/null
+++ b/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("璁″垝琛↖D")
+ 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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewReport.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageReviewReport.java
new file mode 100644
index 0000000..a2ac16d
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRiskAssessmentResults.java b/cnas-manage/src/main/java/com/yuanchu/mom/pojo/ManageRiskAssessmentResults.java
new file mode 100644
index 0000000..4937f69
--- /dev/null
+++ b/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("瀹℃壒浜篿d")
+ private Integer approval;
+
+ @ApiModelProperty("瀹℃壒鏃ユ湡")
+ private LocalDateTime approvalDate;
+
+ @ApiModelProperty("鎵瑰噯浜篿d")
+ private Integer approve;
+
+ @ApiModelProperty("鎵瑰噯鏃ユ湡")
+ private LocalDateTime approveDate;
+
+ @ApiModelProperty("鎵瑰噯鐘舵��1锛氶�氳繃锛�2锛氫笉閫氳繃")
+ private Integer approveStatus;
+
+ @ApiModelProperty("瀹℃壒鐘舵��1锛氶�氳繃锛�2锛氫笉閫氳繃")
+ private Integer approvalStatus;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/schedule/ManageRecordTotalSchedule.java b/cnas-manage/src/main/java/com/yuanchu/mom/schedule/ManageRecordTotalSchedule.java
new file mode 100644
index 0000000..1b047eb
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ClientSatisfactionService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ClientSatisfactionService.java
new file mode 100644
index 0000000..888582c
--- /dev/null
+++ b/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 淇敼浜篿d
+ */
+ void confirmClientSatisfaction(ClientSatisfaction clientSatisfaction, Integer userId);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckDetailService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckDetailService.java
new file mode 100644
index 0000000..82a0b62
--- /dev/null
+++ b/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> {
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCheckService.java
new file mode 100644
index 0000000..3b2a359
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectFileService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectFileService.java
new file mode 100644
index 0000000..fa865e2
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalCorrectService.java
new file mode 100644
index 0000000..43e3500
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementDetailService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementDetailService.java
new file mode 100644
index 0000000..ee08337
--- /dev/null
+++ b/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> {
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalImplementService.java
new file mode 100644
index 0000000..0826437
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingDetailService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingDetailService.java
new file mode 100644
index 0000000..f030b8b
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalMeetingService.java
new file mode 100644
index 0000000..b6894c2
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanDetailService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanDetailService.java
new file mode 100644
index 0000000..a62126a
--- /dev/null
+++ b/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> {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalPlanService.java
new file mode 100644
index 0000000..b00ab39
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalReportService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/InternalReportService.java
new file mode 100644
index 0000000..ad68850
--- /dev/null
+++ b/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);
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageControlPlanListService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageControlPlanListService.java
new file mode 100644
index 0000000..99c5f2a
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentAlterService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentAlterService.java
new file mode 100644
index 0000000..43aaa29
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentCancelService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentCancelService.java
new file mode 100644
index 0000000..9bdeae9
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentControlledService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentControlledService.java
new file mode 100644
index 0000000..a08a0e1
--- /dev/null
+++ b/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 ;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentIssueRecycleService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentIssueRecycleService.java
new file mode 100644
index 0000000..ec70c97
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentListService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageDocumentListService.java
new file mode 100644
index 0000000..b57e488
--- /dev/null
+++ b/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);
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingParticipantsService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingParticipantsService.java
new file mode 100644
index 0000000..4eb172a
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageMeetingService.java
new file mode 100644
index 0000000..4a10212
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordAuditService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordAuditService.java
new file mode 100644
index 0000000..85dd2e5
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCancelService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCancelService.java
new file mode 100644
index 0000000..59d9770
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCheckService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordCheckService.java
new file mode 100644
index 0000000..b872cbb
--- /dev/null
+++ b/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);
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsService.java
new file mode 100644
index 0000000..d3d676c
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsTotalService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIntervalsTotalService.java
new file mode 100644
index 0000000..c7ee0d5
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIssueRecycleService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordIssueRecycleService.java
new file mode 100644
index 0000000..3a31c36
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordTotalService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordTotalService.java
new file mode 100644
index 0000000..29ede06
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordVerifyService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRecordVerifyService.java
new file mode 100644
index 0000000..790779c
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramFileService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramFileService.java
new file mode 100644
index 0000000..5d7d6c6
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewProgramService.java
new file mode 100644
index 0000000..fcabe18
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewReportService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageReviewReportService.java
new file mode 100644
index 0000000..c643efa
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRiskAssessmentResultsService.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/ManageRiskAssessmentResultsService.java
new file mode 100644
index 0000000..366cd7a
--- /dev/null
+++ b/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);
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ClientSatisfactionServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ClientSatisfactionServiceImpl.java
new file mode 100644
index 0000000..c264185
--- /dev/null
+++ b/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 淇敼浜篿d
+ */
+ @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);
+ }
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckDetailServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckDetailServiceImpl.java
new file mode 100644
index 0000000..688590b
--- /dev/null
+++ b/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 {
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java
new file mode 100644
index 0000000..dad5ee6
--- /dev/null
+++ b/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("瀵煎嚭澶辫触");
+ }
+
+ }
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectFileServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectFileServiceImpl.java
new file mode 100644
index 0000000..0e805a4
--- /dev/null
+++ b/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 {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCorrectServiceImpl.java
new file mode 100644
index 0000000..0b04e34
--- /dev/null
+++ b/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());//鎻愬嚭浜篿d
+ correct.setRaiseUserName(user.getName());// 鎻愬嚭浜�
+ correct.setRaiseTime(LocalDate.now());// 鎻愬嚭鏃堕棿
+
+ // 鍘熷洜鍒嗘瀽浜轰俊鎭�
+ User causeUser = userMapper.selectById(detailsCorrect.getCauseUserId());
+ String causeDepartmentLims = userMapper.selectUserDepartmentLimsName(causeUser.getId());
+
+ correct.setCauseDepartment(causeDepartmentLims);//鍘熷洜鍒嗘瀽璐d换閮ㄩ棬
+ correct.setCauseUserId(causeUser.getId());//1鍘熷洜鍒嗘瀽浜篿d
+ 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绾犳璐d换閮ㄩ棬
+ correct.setCorrectUserId(correctUser.getId());//2绾犳浜篿d
+ 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楠岃瘉浜篿d
+ 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("鎵句笉鍒扮籂姝d汉鐨勭鍚�");
+ }
+ }
+
+ // 楠岃瘉浜�
+ 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("瀵煎嚭澶辫触");
+ }
+
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementDetailServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementDetailServiceImpl.java
new file mode 100644
index 0000000..24bc7c7
--- /dev/null
+++ b/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 {
+
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java
new file mode 100644
index 0000000..332c041
--- /dev/null
+++ b/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("瀵煎嚭澶辫触");
+ }
+
+ }
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingDetailServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingDetailServiceImpl.java
new file mode 100644
index 0000000..8c8f776
--- /dev/null
+++ b/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 {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java
new file mode 100644
index 0000000..2952c5f
--- /dev/null
+++ b/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("瀵煎嚭澶辫触");
+ }
+
+ }
+
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanDetailServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanDetailServiceImpl.java
new file mode 100644
index 0000000..5521e9e
--- /dev/null
+++ b/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 {
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java
new file mode 100644
index 0000000..be7fa8d
--- /dev/null
+++ b/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("瀵煎嚭澶辫触");
+ }
+
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java
new file mode 100644
index 0000000..11ccf7d
--- /dev/null
+++ b/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("鎵句笉鍒拌川閲忚礋璐d汉鐨勭鍚�");
+ }
+ }
+
+ // 鑾峰彇璺緞
+ 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("瀵煎嚭澶辫触");
+ }
+ }
+}
+
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java
new file mode 100644
index 0000000..9cc919a
--- /dev/null
+++ b/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("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentAlterServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentAlterServiceImpl.java
new file mode 100644
index 0000000..87651e5
--- /dev/null
+++ b/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 {
+ //濡傛灉鏄瓨妗d笉鍙敤,閭e氨灏嗘枃浠舵竻鍗曠殑鐘舵�佹敼涓烘棤鏁�
+ 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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentCancelServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentCancelServiceImpl.java
new file mode 100644
index 0000000..0524c1a
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentControlledServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentControlledServiceImpl.java
new file mode 100644
index 0000000..3959288
--- /dev/null
+++ b/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();
+ }
+
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentIssueRecycleServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentIssueRecycleServiceImpl.java
new file mode 100644
index 0000000..03e229b
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentListServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageDocumentListServiceImpl.java
new file mode 100644
index 0000000..069a2d7
--- /dev/null
+++ b/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;
+ }
+ //鐢熸垚涓�涓┖鐨凱DF鏂囦欢
+ File file = new File(pdfPath.replace(".pdf", ".pdf"));
+ os = new FileOutputStream(file);
+ //瑕佽浆鎹㈢殑word鏂囦欢
+ com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
+ doc.save(os, SaveFormat.PDF);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (os != null) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingParticipantsServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingParticipantsServiceImpl.java
new file mode 100644
index 0000000..99cde8f
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java
new file mode 100644
index 0000000..0f337ae
--- /dev/null
+++ b/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骞碝M鏈坉d鏃�");
+ 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("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordAuditServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordAuditServiceImpl.java
new file mode 100644
index 0000000..78432bf
--- /dev/null
+++ b/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);
+ }
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCancelServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCancelServiceImpl.java
new file mode 100644
index 0000000..fe5b50e
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCheckServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordCheckServiceImpl.java
new file mode 100644
index 0000000..dd370a3
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsServiceImpl.java
new file mode 100644
index 0000000..70ea942
--- /dev/null
+++ b/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鈥溾垰鈥漷able in the suitability column is suitable for this document, the鈥溍椻�漷able 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);
+ }
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsTotalServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIntervalsTotalServiceImpl.java
new file mode 100644
index 0000000..f287332
--- /dev/null
+++ b/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骞碝M鏈坉d鏃�")));
+ 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鈥溾垰鈥漷able in the suitability column is suitable for this document, the鈥溍椻�漷able 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骞碝M鏈坉d鏃�")));
+ 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);
+ }
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIssueRecycleServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordIssueRecycleServiceImpl.java
new file mode 100644
index 0000000..741324f
--- /dev/null
+++ b/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);
+ }
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordTotalServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordTotalServiceImpl.java
new file mode 100644
index 0000000..70756d1
--- /dev/null
+++ b/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骞碝M鏈坉d鏃�")));
+ 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骞碝M鏈坉d鏃�")));
+ 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;
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordVerifyServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRecordVerifyServiceImpl.java
new file mode 100644
index 0000000..52a4436
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramFileServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramFileServiceImpl.java
new file mode 100644
index 0000000..d94a889
--- /dev/null
+++ b/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("闄勪欢涓婁紶閿欒");
+ }
+
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewProgramServiceImpl.java
new file mode 100644
index 0000000..ca3d0ba
--- /dev/null
+++ b/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骞碝M鏈坉d鏃�");
+ //缂栧埗浜虹鍚�
+ 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);
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewReportServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageReviewReportServiceImpl.java
new file mode 100644
index 0000000..74ba0e5
--- /dev/null
+++ b/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骞碝M鏈坉d鏃�");
+ //瀹屾垚鏃堕棿
+ 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("瀵煎嚭澶辫触");
+ }
+
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRiskAssessmentResultsServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageRiskAssessmentResultsServiceImpl.java
new file mode 100644
index 0000000..d8f058a
--- /dev/null
+++ b/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("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageControlPlanListVo.java b/cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageControlPlanListVo.java
new file mode 100644
index 0000000..3c78628
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageRiskAssessmentResultsVo.java b/cnas-manage/src/main/java/com/yuanchu/mom/vo/ManageRiskAssessmentResultsVo.java
new file mode 100644
index 0000000..f9d04f8
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/vo/MeetingParticipantsDetailsVo.java b/cnas-manage/src/main/java/com/yuanchu/mom/vo/MeetingParticipantsDetailsVo.java
new file mode 100644
index 0000000..0d78a6b
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/vo/ReviewProgramDetailsVo.java b/cnas-manage/src/main/java/com/yuanchu/mom/vo/ReviewProgramDetailsVo.java
new file mode 100644
index 0000000..b7874bd
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar b/cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar
new file mode 100644
index 0000000..84320cf
--- /dev/null
+++ b/cnas-manage/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar
Binary files differ
diff --git a/cnas-manage/src/main/resources/lib/license.xml b/cnas-manage/src/main/resources/lib/license.xml
new file mode 100644
index 0000000..ecd46c1
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ClientSatisfactionAnalyseFileMapper.xml b/cnas-manage/src/main/resources/mapper/ClientSatisfactionAnalyseFileMapper.xml
new file mode 100644
index 0000000..0c04e8d
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ClientSatisfactionMapper.xml b/cnas-manage/src/main/resources/mapper/ClientSatisfactionMapper.xml
new file mode 100644
index 0000000..a2b22ce
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalCheckMapper.xml b/cnas-manage/src/main/resources/mapper/InternalCheckMapper.xml
new file mode 100644
index 0000000..fe9e1bd
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalCorrectFileMapper.xml b/cnas-manage/src/main/resources/mapper/InternalCorrectFileMapper.xml
new file mode 100644
index 0000000..a0f81b4
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalCorrectMapper.xml b/cnas-manage/src/main/resources/mapper/InternalCorrectMapper.xml
new file mode 100644
index 0000000..cdf1395
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalImplementMapper.xml b/cnas-manage/src/main/resources/mapper/InternalImplementMapper.xml
new file mode 100644
index 0000000..46444c2
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalMeetingDetailMapper.xml b/cnas-manage/src/main/resources/mapper/InternalMeetingDetailMapper.xml
new file mode 100644
index 0000000..3654cce
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalMeetingMapper.xml b/cnas-manage/src/main/resources/mapper/InternalMeetingMapper.xml
new file mode 100644
index 0000000..705652b
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalPlanDetailMapper.xml b/cnas-manage/src/main/resources/mapper/InternalPlanDetailMapper.xml
new file mode 100644
index 0000000..3ca2756
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalPlanMapper.xml b/cnas-manage/src/main/resources/mapper/InternalPlanMapper.xml
new file mode 100644
index 0000000..f4de125
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/InternalReportMapper.xml b/cnas-manage/src/main/resources/mapper/InternalReportMapper.xml
new file mode 100644
index 0000000..099438a
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageControlPlanListMapper.xml b/cnas-manage/src/main/resources/mapper/ManageControlPlanListMapper.xml
new file mode 100644
index 0000000..646cd6a
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageDocumentAlterMapper.xml b/cnas-manage/src/main/resources/mapper/ManageDocumentAlterMapper.xml
new file mode 100644
index 0000000..d60b533
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageDocumentCancelMapper.xml b/cnas-manage/src/main/resources/mapper/ManageDocumentCancelMapper.xml
new file mode 100644
index 0000000..45e16f2
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageDocumentControlledMapper.xml b/cnas-manage/src/main/resources/mapper/ManageDocumentControlledMapper.xml
new file mode 100644
index 0000000..4ee95ee
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageDocumentIssueRecycleMapper.xml b/cnas-manage/src/main/resources/mapper/ManageDocumentIssueRecycleMapper.xml
new file mode 100644
index 0000000..ec95c4b
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageDocumentListMapper.xml b/cnas-manage/src/main/resources/mapper/ManageDocumentListMapper.xml
new file mode 100644
index 0000000..e54f15a
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageMeetingMapper.xml b/cnas-manage/src/main/resources/mapper/ManageMeetingMapper.xml
new file mode 100644
index 0000000..a864dad
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageMeetingParticipantsMapper.xml b/cnas-manage/src/main/resources/mapper/ManageMeetingParticipantsMapper.xml
new file mode 100644
index 0000000..6d9f87a
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordAuditMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordAuditMapper.xml
new file mode 100644
index 0000000..08fa197
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordCancelMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordCancelMapper.xml
new file mode 100644
index 0000000..af3b51f
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordCheckMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordCheckMapper.xml
new file mode 100644
index 0000000..ee1dd06
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordIntervalsMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordIntervalsMapper.xml
new file mode 100644
index 0000000..8a3b93a
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordIntervalsTotalMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordIntervalsTotalMapper.xml
new file mode 100644
index 0000000..ff447ff
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordIssueRecycleMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordIssueRecycleMapper.xml
new file mode 100644
index 0000000..cbe1c81
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordTotalMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordTotalMapper.xml
new file mode 100644
index 0000000..77f8ef8
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRecordVerifyMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRecordVerifyMapper.xml
new file mode 100644
index 0000000..4b5bfec
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageReviewProgramFileMapper.xml b/cnas-manage/src/main/resources/mapper/ManageReviewProgramFileMapper.xml
new file mode 100644
index 0000000..245c054
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageReviewProgramMapper.xml b/cnas-manage/src/main/resources/mapper/ManageReviewProgramMapper.xml
new file mode 100644
index 0000000..819e878
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageReviewReportMapper.xml b/cnas-manage/src/main/resources/mapper/ManageReviewReportMapper.xml
new file mode 100644
index 0000000..c7e60f5
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/mapper/ManageRiskAssessmentResultsMapper.xml b/cnas-manage/src/main/resources/mapper/ManageRiskAssessmentResultsMapper.xml
new file mode 100644
index 0000000..8e91e62
--- /dev/null
+++ b/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>
diff --git a/cnas-manage/src/main/resources/static/analysis-risk-factors.docx b/cnas-manage/src/main/resources/static/analysis-risk-factors.docx
new file mode 100644
index 0000000..2a43d7a
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/analysis-risk-factors.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/audit-deal.docx b/cnas-manage/src/main/resources/static/audit-deal.docx
new file mode 100644
index 0000000..5f10163
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/audit-deal.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/cancel-deal.docx b/cnas-manage/src/main/resources/static/cancel-deal.docx
new file mode 100644
index 0000000..fee34ad
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/cancel-deal.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/check-deal.docx b/cnas-manage/src/main/resources/static/check-deal.docx
new file mode 100644
index 0000000..20a6735
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/check-deal.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx b/cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx
new file mode 100644
index 0000000..dca145e
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/customer-satisfaction-questionnaire.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/internal-check.docx b/cnas-manage/src/main/resources/static/internal-check.docx
new file mode 100644
index 0000000..7875182
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/internal-check.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/internal-correct.docx b/cnas-manage/src/main/resources/static/internal-correct.docx
new file mode 100644
index 0000000..abf9817
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/internal-correct.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/internal-implement.docx b/cnas-manage/src/main/resources/static/internal-implement.docx
new file mode 100644
index 0000000..6dcf362
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/internal-implement.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/internal-meeting.docx b/cnas-manage/src/main/resources/static/internal-meeting.docx
new file mode 100644
index 0000000..f126cbf
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/internal-meeting.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/internal-plan.docx b/cnas-manage/src/main/resources/static/internal-plan.docx
new file mode 100644
index 0000000..83890be
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/internal-plan.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/internal-report.docx b/cnas-manage/src/main/resources/static/internal-report.docx
new file mode 100644
index 0000000..480641f
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/internal-report.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/intervals-deal.docx b/cnas-manage/src/main/resources/static/intervals-deal.docx
new file mode 100644
index 0000000..4cb9c58
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/intervals-deal.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/recycle-deal.docx b/cnas-manage/src/main/resources/static/recycle-deal.docx
new file mode 100644
index 0000000..bc57eb3
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/recycle-deal.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/review-meet.docx b/cnas-manage/src/main/resources/static/review-meet.docx
new file mode 100644
index 0000000..a9cfd92
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/review-meet.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/review-program.docx b/cnas-manage/src/main/resources/static/review-program.docx
new file mode 100644
index 0000000..eb57164
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/review-program.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/review-report.docx b/cnas-manage/src/main/resources/static/review-report.docx
new file mode 100644
index 0000000..4054db5
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/review-report.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx b/cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx
new file mode 100644
index 0000000..af89f9d
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/risk-factor-identification-risk.docx
Binary files differ
diff --git a/cnas-manage/src/main/resources/static/verify-deal.docx b/cnas-manage/src/main/resources/static/verify-deal.docx
new file mode 100644
index 0000000..f7929c2
--- /dev/null
+++ b/cnas-manage/src/main/resources/static/verify-deal.docx
Binary files differ
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/DateImageUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/DateImageUtil.java
new file mode 100644
index 0000000..7acd7cc
--- /dev/null
+++ b/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());
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java
index 00e2ca6..195b688 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java
+++ b/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));
}
/**
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
index d539429..54eaa1d 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
+++ b/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;
+ }
+
}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/Jwt.java b/framework/src/main/java/com/yuanchu/mom/utils/Jwt.java
index d37268d..379e977 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/Jwt.java
+++ b/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 {
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/MatrixToImageWriter.java b/framework/src/main/java/com/yuanchu/mom/utils/MatrixToImageWriter.java
index cd217c2..b9219a0 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/MatrixToImageWriter.java
+++ b/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;
/**
* 閰嶇疆鍥惧儚鍐欏叆鍣�
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java
index 4281311..4b84672 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java
+++ b/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;
}
+
+ /**
+ * 鍒ゆ柇鏄惁涓篹xcel
+ * @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");
+ }
}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java b/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java
deleted file mode 100644
index ff6e615..0000000
--- a/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.yuanchu.mom.utils;
-
-import cn.hutool.http.HttpRequest;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.yuanchu.mom.exception.ErrorException;
-import com.yuanchu.mom.vo.Result;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import java.util.HashMap;
-import java.util.Map;
-
-@Data
-@Slf4j
-@Component
-//浼佷笟寰俊瀵规帴鎺ュ彛
-public class QYWXApi {
-
-
- public static final String WWA_423654_B_975441_AC = "wwa423654b975441ac";
- final String ip = "https://qyapi.weixin.qq.com/";
- final String corpid = WWA_423654_B_975441_AC;
- final String corpsecret = "rQ1_ddKBVW5qVSMNK_p0EnR3Z2OHrAMxGahBKTKWYxE";
-
-
- /**
- * 浼佷笟寰俊鑾峰彇token
- *
- * @return
- */
- public String getToken() {
- try {
- Map<String, Object> map = new HashMap<>();
- map.put("corpid", corpid);
- map.put("corpsecret", corpsecret);
- String result = HttpRequest.get(ip + "cgi-bin/gettoken")
- .contentType("application/x-www-form-urlencoded")
- .form(map).execute().body();
- JSONObject jsonObject = JSONObject.parseObject(result);
- return jsonObject.getString("access_token");
- } catch (Exception e) {
- throw new RuntimeException("token鑾峰彇寮傚父");
- }
- }
-
- /**
- * 鍙戦�佸簲鐢ㄥ崱鐗囨秷鎭�
- *
- * @param map
- * @return
- */
- public void send(Map map) {
- try {
- String result = HttpRequest.post(ip + "cgi-bin/message/send?access_token=" + getToken())
- .contentType("application/json")
- .body(JSONArray.toJSONString(map)).execute().body();
- JSONObject jsonObject = JSONObject.parseObject(result);
- if (jsonObject.getInteger("errcode") == 0) {
- } else {
- throw new ErrorException("浼佷笟寰俊鎺ㄩ�佹秷鎭け璐�" + jsonObject.getString("errmsg"));
- }
- } catch (Exception e) {
- throw new ErrorException("浼佷笟寰俊鎺ㄩ�佹秷鎭け璐�,鑾峰彇寮傚父:" + e.getMessage());
- }
- }
-}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/HackLoopTableRenderPolicy.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/HackLoopTableRenderPolicy.java
new file mode 100644
index 0000000..feeaa5a
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/XWPFDocumentUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/XWPFDocumentUtils.java
new file mode 100644
index 0000000..5850d0a
--- /dev/null
+++ b/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);
+ }
+ }
+ }
+}
+
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
index 80dcba5..ee5effa 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
+++ b/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;
--
Gitblit v1.9.3