From 12291480d592402398c3ba76e8de6006da5c2612 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 07 三月 2025 11:16:00 +0800 Subject: [PATCH] 搬迁人员 --- cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java | 27 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlanDetails.java | 73 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/FileGeneralServiceImpl.java | 162 + cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java | 13 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonJobResponsibilitiesDto.java | 16 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingFileServiceImpl.java | 14 cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsUpload.java | 28 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java | 101 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonJobResponsibilities.java | 78 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionRecordServiceImpl.java | 125 cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml | 135 ruoyi-framework/src/main/java/com/ruoyi/framework/util/TestApi.java | 25 cnas-personnel/src/main/resources/static/supervision-record.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java | 338 ++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java | 27 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionProcessingSheet.java | 99 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanDetailsServiceImpl.java | 43 ruoyi-framework/src/main/java/com/ruoyi/framework/util/HeaderToken.java | 5 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java | 30 cnas-personnel/src/main/resources/static/supervision-processing-sheet.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java | 25 cnas-personnel/src/main/resources/mapper/PersonSupervisionProcessingSheetMapper.xml | 28 cnas-personnel/src/main/resources/static/communication-deal.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionControlSheetMapper.java | 25 ruoyi-common/src/main/java/com/ruoyi/common/core/dto/UserPageDto.java | 24 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordExportDto.java | 32 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordDto.java | 23 cnas-personnel/src/main/resources/static/supervision-control-sheet.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTraining.java | 83 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanServiceImpl.java | 327 ++ cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionProcessingSheetDto.java | 40 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java | 67 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java | 271 + cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java | 61 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java | 50 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordPersonDetailedDto.java | 28 cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedListener.java | 81 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java | 43 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionProcessingSheetServiceImpl.java | 119 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java | 9 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java | 37 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDto.java | 21 cnas-personnel/src/main/java/com/ruoyi/personnel/service/FileGeneralService.java | 19 cnas-personnel/src/main/resources/static/explain-deal.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java | 114 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java | 42 cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedUpload.java | 44 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java | 48 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPostAuthorizationRecord.java | 74 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanMapper.java | 21 performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java | 2 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrackRecordService.java | 23 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java | 363 ++ cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java | 27 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingRecord.java | 41 cnas-personnel/src/main/resources/mapper/PersonTrainingMapper.xml | 72 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrackRecordServiceImpl.java | 33 cnas-personnel/src/main/resources/mapper/PersonSupervisionRecordMapper.xml | 78 ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml | 34 cnas-personnel/pom.xml | 11 performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryWorkingHoursDay.java | 93 ruoyi-system/pom.xml | 2 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionControlSheet.java | 113 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanService.java | 32 cnas-personnel/src/main/resources/static/credentials-deal.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionControlSheetExportDto.java | 74 cnas-personnel/src/main/resources/static/person-training-record.docx | 0 cnas-personnel/src/main/resources/mapper/PersonJobResponsibilitiesMapper.xml | 39 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonRewardPunishmentRecordService.java | 31 ruoyi-system/src/main/java/com/ruoyi/system/domain/AuthApi.java | 4 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDetailsDto.java | 14 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPostAuthorizationRecordDto.java | 14 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java | 136 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionRecord.java | 107 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDetailsDto.java | 66 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java | 20 cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml | 101 cnas-personnel/src/main/resources/mapper/PersonTrainingDetailedMapper.xml | 98 cnas-personnel/src/main/resources/static/personnel-capacity.docx | 0 cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml | 58 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonRewardPunishmentRecord.java | 61 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDto.java | 26 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonRewardPunishmentRecordDto.java | 14 cnas-personnel/src/main/java/com/ruoyi/personnel/enumeration/AttachmentType.java | 46 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java | 38 cnas-personnel/src/main/resources/static/person-training.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrackRecord.java | 83 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonRewardPunishmentRecordServiceImpl.java | 36 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingFile.java | 41 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java | 121 cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml | 168 + cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonRewardPunishmentRecordExcel.java | 34 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionRecordDto.java | 33 ruoyi-system/src/main/java/com/ruoyi/system/service/DepartmentLimsService.java | 25 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java | 37 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java | 26 cnas-personnel/src/main/resources/static/person-deal.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/schedule/PersonSchedule.java | 54 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java | 2 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordListDto.java | 37 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java | 29 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java | 113 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDetailedDto.java | 35 cnas-personnel/src/main/resources/mapper/PersonSupervisePlanMapper.xml | 36 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java | 24 cnas-personnel/src/main/resources/mapper/PersonPostAuthorizationRecordMapper.xml | 40 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentLimsServiceImpl.java | 86 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java | 20 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPostAuthorizationRecordService.java | 27 cnas-personnel/src/main/resources/mapper/PersonTrackRecordMapper.xml | 47 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingRecordService.java | 60 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java | 48 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java | 376 ++ cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionProcessingSheetService.java | 24 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingFileService.java | 7 cnas-personnel/src/main/resources/static/training-record.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailed.java | 124 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionControlSheetService.java | 24 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java | 3 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java | 47 cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java | 7 cnas-personnel/src/main/resources/mapper/PersonSupervisePlanDetailsMapper.xml | 42 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlan.java | 66 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java | 1081 +++++++ cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsListener.java | 42 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionProcessingSheetMapper.java | 24 cnas-personnel/src/main/resources/mapper/PersonSupervisionControlSheetMapper.xml | 41 cnas-personnel/src/main/resources/static/super-vise-plan.docx | 0 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordSubmitDto.java | 34 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java | 14 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionControlSheetServiceImpl.java | 155 + cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml | 31 cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPersonnelCapacity.java | 122 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionRecordService.java | 33 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingDetailedService.java | 47 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java | 20 cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingUpdateDto.java | 17 ruoyi-common/src/main/java/com/ruoyi/common/core/dto/DepartmentDto.java | 23 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java | 21 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingFileMapper.java | 9 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java | 21 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanDetailsService.java | 26 142 files changed, 8,660 insertions(+), 49 deletions(-) diff --git a/cnas-personnel/pom.xml b/cnas-personnel/pom.xml index 6b94b71..3a630d5 100644 --- a/cnas-personnel/pom.xml +++ b/cnas-personnel/pom.xml @@ -40,6 +40,17 @@ <groupId>com.ruoyi</groupId> <artifactId>inspect-server</artifactId> </dependency> + + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>cnas-process</artifactId> + </dependency> + + <dependency> + <groupId>com.belerweb</groupId> + <artifactId>pinyin4j</artifactId> + <version>2.5.1</version> + </dependency> </dependencies> </project> diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDetailsDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDetailsDto.java new file mode 100644 index 0000000..29bbc78 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDetailsDto.java @@ -0,0 +1,66 @@ +package com.ruoyi.personnel.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * Author: yuan + * Date: 2024-12-13 鏄熸湡浜� 13:52:52 + * Description: + */ +@Data +public class PersonBasicInfoDetailsDto { + + @ApiModelProperty("鐢ㄦ埛id") + private Integer userId; + + @ApiModelProperty("鐢ㄦ埛濮撳悕") + private String name; + + @ApiModelProperty("鍏ヨ亴鏃堕棿") + private String entryTimeStr; + + @ApiModelProperty("瀹為檯瀹炰範缁撴潫") + private String endPracticalPracticeStr; + + @ApiModelProperty("绫嶈疮") + private String nativePlace; + + @ApiModelProperty("韬唤璇佸彿") + private String identityCard; + + @ApiModelProperty("韬唤璇佸湴鍧�") + private String idAddress; + + @ApiModelProperty("鐢ㄦ埛鎵嬫満鍙�") + private String phone; + + @ApiModelProperty("姣曚笟闄㈡牎") + private String graduatedInstitutions1; + + @ApiModelProperty("涓撲笟") + private String major1; + + @ApiModelProperty("姣曚笟鏃堕棿1") + private LocalDateTime graduationTime1; + + @ApiModelProperty("鏈�楂樺鍘�") + private String officialAcademicRedentials; + + @ApiModelProperty("鏈�楂樺浣�") + private String highestDegree; + + @ApiModelProperty("鑱岀О") + private String professionalTitle; + + // 鑱屼笟鑳藉姏 + + @ApiModelProperty("绱ф�ヨ仈绯讳汉") + private String emergencyContact; + + @ApiModelProperty("绱ф�ヨ仈绯讳汉鐢佃瘽") + private String emergencyContactPhone; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java new file mode 100644 index 0000000..b5cd643 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonBasicInfoDto.java @@ -0,0 +1,47 @@ +package com.ruoyi.personnel.dto; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.ruoyi.personnel.pojo.PersonBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +@ExcelIgnoreUnannotated +public class PersonBasicInfoDto extends PersonBasicInfo { + @ApiModelProperty(value = "璐﹀彿") + @ExcelProperty("鍛樺伐缂栧彿") + private String account; + + @ApiModelProperty(value = "濮撳悕") + @ExcelProperty("濮撳悕") + private String name; + + @ApiModelProperty(value = "濮撳悕(鑻辨枃)") + private String nameEn; + + @ApiModelProperty(value = "骞撮緞") + private Integer age; + + @ApiModelProperty(value = "鐢佃瘽鍙风爜") + @ExcelProperty("鎵嬫満鍙�") + private String phone; + + @ApiModelProperty(value = "閭") + private String email; + + @ApiModelProperty(value = "閮ㄩ棬") + private String department; + + @ApiModelProperty(value = "lims缁勭粐鏋舵瀯") + private String departLimsId; + + @ApiModelProperty(value = "绛惧悕鐓х墖鍦板潃") + private String signatureUrl; + + @ApiModelProperty(value = "鑷韩鐓х墖鍦板潃") + private String pictureUrl; + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java new file mode 100644 index 0000000..d3cb18e --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonCommunicationAbilityDto.java @@ -0,0 +1,14 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonCommunicationAbility; +import lombok.Data; + +@Data +public class PersonCommunicationAbilityDto extends PersonCommunicationAbility { + + private String userName; + + private String account; + + private String createUserName; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonJobResponsibilitiesDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonJobResponsibilitiesDto.java new file mode 100644 index 0000000..096f8d3 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonJobResponsibilitiesDto.java @@ -0,0 +1,16 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonJobResponsibilities; +import lombok.Data; + +@Data +public class PersonJobResponsibilitiesDto extends PersonJobResponsibilities { + + private String incumbentName; + + private String supervisorName; + + private String departLimsName; + + private String account; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java new file mode 100644 index 0000000..39ef429 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityDto.java @@ -0,0 +1,30 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonPersonnelCapacity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonPersonnelCapacityDto extends PersonPersonnelCapacity { + + @ApiModelProperty("鎻愪氦浜哄鍚�") + private String submitOperatingPersonnelName; + + @ApiModelProperty("鎿嶄綔浜哄鍚�") + private String confirmOperatingPersonnelName; + + @ApiModelProperty("浜哄憳濮撳悕") + private String userName; + + @ApiModelProperty("宀椾綅鍚嶇О") + private String postName; + + @ApiModelProperty("宀椾綅鑱岃矗") + private String responsibilities; + + @ApiModelProperty("宸ヤ綔缁忓巻") + private String placeWork; + + @ApiModelProperty("涓撲笟") + private String major; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java new file mode 100644 index 0000000..20526b6 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPersonnelCapacityExportDto.java @@ -0,0 +1,101 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonPersonnelCapacity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author zhuo + * @Date 2024/11/28 + */ +@Data +public class PersonPersonnelCapacityExportDto extends PersonPersonnelCapacity { + + @ApiModelProperty("宀椾綅鍚嶇О") + private String postName; + + @ApiModelProperty("浜哄憳濮撳悕") + private String userName; + + @ApiModelProperty("瀛﹀巻") + private String officialAcademicRedentials; + + @ApiModelProperty("涓撲笟") + private String major; + + @ApiModelProperty("鑱岀О") + private String professionalTitle; + + @ApiModelProperty("宸ヤ綔缁忓巻") + private String placeWork; + + @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(1锛氱鍚�)") + private String academicConformNot1 = "鈻�"; + @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)") + private String academicConformNot2 = "鈻�"; + @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(3锛氫笉閫傜敤)") + private String academicConformNot3 = "鈻�"; + + @ApiModelProperty("鐩稿叧骞撮檺 绗﹀悎涓庡惁(1锛氱鍚�)") + private String relatedYearsConformNot1 = "鈻�"; + @ApiModelProperty("鐩稿叧骞撮檺 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)") + private String relatedYearsConformNot2 = "鈻�"; + @ApiModelProperty("鐩稿叧骞撮檺 绗﹀悎涓庡惁(3锛氫笉閫傜敤)") + private String relatedYearsConformNot3 = "鈻�"; + + @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(1锛氱鍚�)") + private String relatedTrainingConformNot1 = "鈻�"; + @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)") + private String relatedTrainingConformNot2 = "鈻�"; + @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(3锛氫笉閫傜敤)") + private String relatedTrainingConformNot3 = "鈻�"; + + @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(1锛氱鍚�)") + private String relevantExperienceConformNot1 = "鈻�"; + @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)") + private String relevantExperienceConformNot2 = "鈻�"; + @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(3锛氫笉閫傜敤)") + private String relevantExperienceConformNot3 = "鈻�"; + + @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(1锛氱鍚�)") + private String workLicenseConformNot1 = "鈻�"; + @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)") + private String workLicenseConformNot2 = "鈻�"; + @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(3锛氫笉閫傜敤)") + private String workLicenseConformNot3 = "鈻�"; + + @ApiModelProperty("宀椾綅鑱岃矗1(鐔熸倝鏈矖浣嶇殑浜у搧妫�娴嬫牱鍝佸埗澶囧拰鐩稿叧浜у搧鍩虹鐭ヨ瘑)") + private String jobResponsibilities1 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗2(鐔熸倝鏈矖浣嶆牱鍝佹娴嬫祦绋�)") + private String jobResponsibilities2 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗3(姝g‘鐔熺粌鎿嶄綔鏈矖浣嶄华琛ㄨ澶�)") + private String jobResponsibilities3 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗4(鐔熸倝鏈矖浣嶇浉鍏虫娴嬫爣鍑�)") + private String jobResponsibilities4 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗5(鐔熸倝鏈矖浣嶄骇鍝佹�ц兘鍙婄粨鏋滃垽鏂�佸垎鏋�)") + private String jobResponsibilities5 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗6(瀹屾垚鐩稿簲鐨勫巶楠屻�佽璇�)") + private String jobResponsibilities6 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗7(缂栧啓鐩稿叧妫�娴嬫墜椤�)") + private String jobResponsibilities7 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗8(浜嗚В浠櫒璁惧鍩烘湰缁撴瀯涓庣畝鍗曠淮鎶や繚鍏�)") + private String jobResponsibilities8 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗9(鍏峰鎶�鑳藉煿璁殑鑳藉姏)") + private String jobResponsibilities9 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗10(鍏峰妫�娴嬩华鍣ㄦ敼閫犺兘鍔�)") + private String jobResponsibilities10 = "鈻�"; + + @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(1锛氱鍚�)") + private String jobResponsibilitiesConformNot1 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(2锛氫笉绗﹀悎)") + private String jobResponsibilitiesConformNot2 = "鈻�"; + @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(3锛氫笉閫傜敤)") + private String jobResponsibilitiesConformNot3 = "鈻�"; + + @ApiModelProperty("缁煎悎璇勪环1(鍙儨浠昏宀椾綅)") + private String comprehensiveAssessment1 = "鈻�"; + @ApiModelProperty("缁煎悎璇勪环2(鍙竟鍩硅杈逛笂宀�)") + private String comprehensiveAssessment2 = "鈻�"; + @ApiModelProperty("缁煎悎璇勪环3(涓嶈儨浠昏宀椾綅)") + private String comprehensiveAssessment3 = "鈻�"; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPostAuthorizationRecordDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPostAuthorizationRecordDto.java new file mode 100644 index 0000000..33dd76c --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonPostAuthorizationRecordDto.java @@ -0,0 +1,14 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord; +import lombok.Data; + +@Data +public class PersonPostAuthorizationRecordDto extends PersonPostAuthorizationRecord { + + private String userName; + + private String account; + + private String createUserName; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonRewardPunishmentRecordDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonRewardPunishmentRecordDto.java new file mode 100644 index 0000000..5be270b --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonRewardPunishmentRecordDto.java @@ -0,0 +1,14 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonRewardPunishmentRecord; +import lombok.Data; + +@Data +public class PersonRewardPunishmentRecordDto extends PersonRewardPunishmentRecord { + + private String userName; + + private String account; + + private String createUserName; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDetailsDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDetailsDto.java new file mode 100644 index 0000000..7399b6d --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDetailsDto.java @@ -0,0 +1,14 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonSupervisePlanDetails; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonSupervisePlanDetailsDto extends PersonSupervisePlanDetails { + + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDto.java new file mode 100644 index 0000000..b80fedb --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisePlanDto.java @@ -0,0 +1,21 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonSupervisePlan; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonSupervisePlanDto extends PersonSupervisePlan { + + @ApiModelProperty(value = "瀹℃牳浜�") + private String approvalName; + + @ApiModelProperty(value = "缂栧埗浜�") + private String organizationPersonName; + + @ApiModelProperty(value = "缂栧埗浜�") + private String createName; + + @ApiModelProperty("褰撳墠鐧诲綍浜�") + private Integer currentId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionControlSheetExportDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionControlSheetExportDto.java new file mode 100644 index 0000000..c830632 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionControlSheetExportDto.java @@ -0,0 +1,74 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonSupervisionControlSheet; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author zhuo + * @Date 2024/11/26 + */ +@Data +public class PersonSupervisionControlSheetExportDto extends PersonSupervisionControlSheet { + + @ApiModelProperty("1鍙戠敓閮ㄩ棬") + private String occurrenceDepartmentString; + + @ApiModelProperty("1閮ㄩ棬璐熻矗浜�") + private String departmentHead; + + @ApiModelProperty("1鍙戠幇閮ㄩ棬") + private String discovererDepartment; + + @ApiModelProperty("1鍙戠幇閮ㄩ棬-鏃ユ湡") + private String discovererDateString; + + @ApiModelProperty("2琚洃鐫d汉") + private String supervisedPerson; + + @ApiModelProperty("3璐d换閮ㄩ棬") + private String responsibleDepartment; + + @ApiModelProperty("3璐d换閮ㄩ棬 鏃ユ湡") + private String responsibleDepartmentDateString; + + @ApiModelProperty("4绾犳鎺柦 鏃ユ湡") + private String correctiveMeasureDateString; + + @ApiModelProperty("5璐ㄩ噺璐熻矗浜烘棩鏈�") + private String qualitySupervisorDateString; + + @ApiModelProperty("4绾犳鎺柦澶勭悊鍗曡窡韪�(鏄�)") + private String correctiveMeasureFollowTracksYes = "鈻�"; + @ApiModelProperty("4绾犳鎺柦澶勭悊鍗曡窡韪�(鍚�)") + private String correctiveMeasureFollowTracksNo = "鈻�"; + + + @ApiModelProperty("5鏄惁閫氱煡瀹㈡埛(鏄�)") + private String whetherInformCustomerYes = "鈻�"; + @ApiModelProperty("5鏄惁閫氱煡瀹㈡埛(鍚�)") + private String whetherInformCustomerNo = "鈻�"; + + + @ApiModelProperty("5鏄惁鎭㈠宸ヤ綔(1锛氭槸锛�2锛氬惁)") + private String whetherResumeWorkYes = "鈻�"; + @ApiModelProperty("5鏄惁鎭㈠宸ヤ綔(1锛氭槸锛�2锛氬惁)") + private String whetherResumeWorkNo = "鈻�"; + + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞0(绠$悊璇勫)") + private String discoveryApproach0 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞1(鍐呴儴瀹℃牳)") + private String discoveryApproach1 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞2(妫�娴嬭繃绋嬫帶鍒�)") + private String discoveryApproach2 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞3(鍐呴儴璐ㄩ噺鎺у埗)") + private String discoveryApproach3 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞4(鍐呴儴鐩戠潱)") + private String discoveryApproach4 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞5(澶栭儴璇勫/妫�鏌�)") + private String discoveryApproach5 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞6(椤惧鎶曡瘔/鎰忚鍙嶉)") + private String discoveryApproach6 = "鈻�"; + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞7(鍏朵粬)") + private String discoveryApproach7 = "鈻�"; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionProcessingSheetDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionProcessingSheetDto.java new file mode 100644 index 0000000..a616071 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionProcessingSheetDto.java @@ -0,0 +1,40 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonSupervisionProcessingSheet; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author zhuo + * @Date 2024/11/26 + */ +@Data +public class PersonSupervisionProcessingSheetDto extends PersonSupervisionProcessingSheet { + + @ApiModelProperty("1 鎻愬嚭閮ㄩ棬") + private String proposingDepartment; + + @ApiModelProperty("1 鎻愬嚭閮ㄩ棬 鏃ユ湡") + private String proposingDepartmentDateString; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽 閮ㄩ棬") + private String causeAnalysis; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽 閮ㄩ棬") + private String causeAnalysisDepartment; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽 鏃ユ湡") + private String causeAnalysisDateString; + + @ApiModelProperty("3 绾犳鎺柦") + private String correctiveAction; + + @ApiModelProperty("3 绾犳鎺柦 鏃ユ湡") + private String correctiveActionDateString; + + @ApiModelProperty("4 楠岃瘉閮ㄩ棬") + private String verificationDepartment; + + @ApiModelProperty("4 楠岃瘉閮ㄩ棬 鏃ユ湡") + private String verificationDepartmentDateString; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionRecordDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionRecordDto.java new file mode 100644 index 0000000..2fd3e97 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonSupervisionRecordDto.java @@ -0,0 +1,33 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonSupervisionRecord; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonSupervisionRecordDto extends PersonSupervisionRecord { + + @ApiModelProperty("妫�娴嬩汉鍛樺鍚�") + private String testerName; + + @ApiModelProperty("鐩戠潱鍛樺鍚�") + private String supervisorName; + + @ApiModelProperty("浜哄憳list 濮撳悕id") + private String personnelName; + + @ApiModelProperty("鎶�鏈礋璐d汉濮撳悕") + private String technicalDirectorName; + + @ApiModelProperty("鎺у埗鍗曠姸鎬�") + private String currentStateControl; + + @ApiModelProperty("澶勭悊鍗曠姸鎬�") + private String currentStateProcessing; + + @ApiModelProperty("妫�娴嬫棩鏈�") + private String detectionDateString; + + @ApiModelProperty("鏄惁闇�瑕佺籂姝f帾鏂� 1闇�瑕� ") + private String correctiveMeasure; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDetailedDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDetailedDto.java new file mode 100644 index 0000000..666db0a --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDetailedDto.java @@ -0,0 +1,35 @@ +package com.ruoyi.personnel.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.personnel.pojo.PersonTrainingDetailed; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonTrainingDetailedDto extends PersonTrainingDetailed { + + @ApiModelProperty("涓惧姙閮ㄩ棬鍚嶇О") + private String holdingDepartmentName; + + @ApiModelProperty("鍩硅璁插笀鍚嶇О") + private String trainingLecturerName; + + @ApiModelProperty("褰撳墠鐧诲綍浜烘槸鍚﹁棰�") + private Boolean whetherClaim; + + + @ApiModelProperty("鍩硅鏃ユ湡") + private String trainingDateString; + + @ApiModelProperty("鎶ュ悕浜烘暟") + private Integer enrollment; + + // 瀵煎嚭浣跨敤 + @TableField(select = false, exist = false) + @ApiModelProperty("搴忓彿(瀵煎嚭浣跨敤)") + private Integer index; + + private Integer departId; + + private Integer isDisabled; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDto.java new file mode 100644 index 0000000..3fd6e42 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingDto.java @@ -0,0 +1,26 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonTraining; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "PersonTrainingDto瀵硅薄", description = "鍩硅璁″垝") +public class PersonTrainingDto extends PersonTraining { + + @ApiModelProperty("缂栧埗浜哄鍚�") + private String compilerName; + + @ApiModelProperty("瀹℃牳浜哄鍚�") + private String reviewerName; + + @ApiModelProperty("鎵瑰噯浜哄鍚�") + private String approverName; + + @ApiModelProperty("鍒涘缓浜哄鍚�") + private String createUserName; + + @ApiModelProperty("褰撳墠鐧诲綍浜篿d") + private Integer currentId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordDto.java new file mode 100644 index 0000000..445bef7 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordDto.java @@ -0,0 +1,23 @@ +package com.ruoyi.personnel.dto; + +import com.ruoyi.personnel.pojo.PersonTrainingRecord; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonTrainingRecordDto extends PersonTrainingRecord { + @ApiModelProperty(value = "濮撳悕") + private String userName; + + @ApiModelProperty(value = "宸ュ彿") + private String account; + + @ApiModelProperty(value = "瑙掕壊") + private String roleName; + + @ApiModelProperty(value = "鐢佃瘽鍙风爜") + private String phone; + + @ApiModelProperty(value = "閮ㄩ棬") + private String department; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordListDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordListDto.java new file mode 100644 index 0000000..da61ed1 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordListDto.java @@ -0,0 +1,37 @@ +package com.ruoyi.personnel.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class PersonTrainingRecordListDto { + + @ApiModelProperty(value = "鐢ㄦ埛id") + private Integer userId; + + @ApiModelProperty("鍛樺伐缂栧彿") + private String account; + + @ApiModelProperty("鐢ㄦ埛濮撳悕") + private String name; + + @ApiModelProperty("鎵�鍦ㄩ儴闂�") + private String departLimsName; + + @ApiModelProperty("鑱岀О") + private String professionalTitle; + + @ApiModelProperty("鏈�楂樺鍘�") + private String officialAcademicRedentials; + + @ApiModelProperty("鍏ュ崟浣嶆椂闂�") + private LocalDateTime unitTime; + + @ApiModelProperty("鍏ュ崟浣嶆椂闂�") + private String unitTimeSting; + + @ApiModelProperty("涓撲笟") + private String major1; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordSubmitDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordSubmitDto.java new file mode 100644 index 0000000..9f9a24f --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingRecordSubmitDto.java @@ -0,0 +1,34 @@ +package com.ruoyi.personnel.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class PersonTrainingRecordSubmitDto{ + + @ApiModelProperty("骞村害璁″垝鏄庣粏ID") + private Integer trainingDetailedId; + + @ApiModelProperty("鑰冩牳鏂瑰紡") + private String assessmentMethod; + + @ApiModelProperty("鏈鍩硅缁煎悎璇勪环") + private String comprehensiveAssessment; + + @ApiModelProperty("璇勪环浜�") + private Integer assessmentUserId; + + @ApiModelProperty("璇勪环鏃堕棿") + private LocalDate assessmentDate; + + private String state; + + @ApiModelProperty("璇炬椂") + private Integer classHour; + + private String trainingAbstract; + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingUpdateDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingUpdateDto.java new file mode 100644 index 0000000..cbf6383 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/PersonTrainingUpdateDto.java @@ -0,0 +1,17 @@ +package com.ruoyi.personnel.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PersonTrainingUpdateDto { + + @ApiModelProperty("涓婚敭id") + private Integer id; + + @ApiModelProperty("瀹℃牳/鎵瑰噯 澶囨敞") + private String remarks; + + @ApiModelProperty("瀹℃牳/鎵瑰噯 鐘舵��") + private Integer status; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordExportDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordExportDto.java new file mode 100644 index 0000000..320af2a --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordExportDto.java @@ -0,0 +1,32 @@ +package com.ruoyi.personnel.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author zhuo + * @Date 2024/11/25 + */ +@Data +public class TrainingRecordExportDto { + + @ApiModelProperty("鐢ㄦ埛鍚嶇О1") + private String userName1; + + @ApiModelProperty("閮ㄩ棬1") + private String department1; + + @ApiModelProperty("鑰冩牳缁撴灉1") + private String examinationResults1; + + @ApiModelProperty("鐢ㄦ埛鍚嶇О2") + private String userName2; + + @ApiModelProperty("閮ㄩ棬1") + private String department2; + + @ApiModelProperty("鑰冩牳缁撴灉1") + private String examinationResults2; + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordPersonDetailedDto.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordPersonDetailedDto.java new file mode 100644 index 0000000..3a593a0 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/dto/TrainingRecordPersonDetailedDto.java @@ -0,0 +1,28 @@ +package com.ruoyi.personnel.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class TrainingRecordPersonDetailedDto { + + @ApiModelProperty("鍩硅鏃ユ湡") + private String trainingDateString; + + @ApiModelProperty("鍩硅鏃ユ湡") + private Date trainingDate; + + @ApiModelProperty("鍩硅鍐呭") + private String trainingContent; + + @ApiModelProperty("璇炬椂") + private Integer classHour; + + @ApiModelProperty("鑰冩牳缁撴灉") + private String examinationResults; + + @ApiModelProperty("澶囨敞") + private String remarks; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/enumeration/AttachmentType.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/enumeration/AttachmentType.java new file mode 100644 index 0000000..54feb00 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/enumeration/AttachmentType.java @@ -0,0 +1,46 @@ +package com.ruoyi.personnel.enumeration; + +public enum AttachmentType { + // 璁惧鏍″噯琛ㄥ悕 + SBJZ(1,"device_metric_record"), + // 鍩硅璁″垝 鏄庣粏琛� + PXJH(2,"cnas_person_training_detailed"), + // 鍏ヨ亴鎺堟潈璁板綍 + RZSQ(3,"cnas_person_post_authorization_record"), + ; + + private Integer type; + private String value; + + AttachmentType(Integer type, String value) { + this.type = type; + this.value = value; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static String getTypeValue(Integer type) { + AttachmentType.values(); + for(AttachmentType attachmentType : AttachmentType.values()) { + if(attachmentType.getType().equals(type)) return attachmentType.getValue(); + } + return ""; + } + + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonRewardPunishmentRecordExcel.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonRewardPunishmentRecordExcel.java new file mode 100644 index 0000000..84456f3 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonRewardPunishmentRecordExcel.java @@ -0,0 +1,34 @@ +package com.ruoyi.personnel.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class PersonRewardPunishmentRecordExcel { + @ExcelProperty("鍛樺伐缂栧彿") + private String account; + + @ExcelProperty("濮撳悕") + private String userName; + + @ExcelProperty("濂栨儵绾у埆") + private String rewardPunishLevel; + + @ExcelProperty("濂栨儵鍚嶇О") + private String rewardPunishName; + + @ExcelProperty("濂栨儵鏃堕棿") + private String rewardPunishTime; + + @ExcelProperty("濂栨儵鍗曚綅") + private String rewardPunishWorkUnit; + + @ExcelProperty("濂栨儵鍐呭") + private String rewardPunishContent; + + @ExcelProperty("鍒涘缓鏃堕棿") + private String createTime; + + @ExcelProperty("鍒涘缓浜�") + private String createUserName; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsListener.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsListener.java new file mode 100644 index 0000000..65da2a1 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsListener.java @@ -0,0 +1,42 @@ +package com.ruoyi.personnel.excel; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.ruoyi.personnel.service.PersonSupervisePlanDetailsService; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class PersonSupervisePlanDetailsListener extends AnalysisEventListener<PersonSupervisePlanDetailsUpload> { + + private Integer planId; + + private static final int BATCH_COUNT = 1000; + List<PersonSupervisePlanDetailsUpload> list = new ArrayList<>(); + + private PersonSupervisePlanDetailsService personSupervisePlanDetailsService; + + public PersonSupervisePlanDetailsListener(PersonSupervisePlanDetailsService personSupervisePlanDetailsService) { + this.personSupervisePlanDetailsService = personSupervisePlanDetailsService; + } + + @Override + public void invoke(PersonSupervisePlanDetailsUpload data, AnalysisContext context) { + list.add(data); + if (list.size() >= BATCH_COUNT) { + save(); + list.clear(); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + save(); + } + + private void save() { + personSupervisePlanDetailsService.importExcel(list, this.planId); + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsUpload.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsUpload.java new file mode 100644 index 0000000..2a4bc2e --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonSupervisePlanDetailsUpload.java @@ -0,0 +1,28 @@ +package com.ruoyi.personnel.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class PersonSupervisePlanDetailsUpload { + + @ExcelProperty("鐩戠潱鏃ユ湡") + private LocalDateTime superviseDate; + + @ExcelProperty("鐩戠潱鐩殑") + private String superviseDes; + + @ExcelProperty("琚洃鐫d汉鍛�") + private String supervisePerson; + + @ExcelProperty("澶囨敞") + private String remarks; + + @ExcelProperty("鐩戠潱椤圭洰") + private String superviseProject; + + @ExcelProperty("鐩戠潱鍘熷洜") + private String superviseReason; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedListener.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedListener.java new file mode 100644 index 0000000..8bbba20 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedListener.java @@ -0,0 +1,81 @@ +package com.ruoyi.personnel.excel; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.ruoyi.personnel.service.PersonTrainingDetailedService; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Data +@Slf4j +public class PersonTrainingDetailedListener extends AnalysisEventListener<PersonTrainingDetailedUpload> { + + private Integer planId; + + private static Boolean FLAG = true; + + private static final int BATCH_COUNT = 1000; + + List<PersonTrainingDetailedUpload> list = new ArrayList<>(); + + private PersonTrainingDetailedService personTrainingDetailedService; + + public PersonTrainingDetailedListener(PersonTrainingDetailedService personTrainingDetailedService,Integer planId) { + this.personTrainingDetailedService = personTrainingDetailedService; + this.planId = planId; + } + + @Override + public void invoke(PersonTrainingDetailedUpload data, AnalysisContext context) { + log.info("瑙f瀽鍒颁竴鏉℃暟鎹畕}", JSON.toJSONString(data)); + int count = 0; + int count1 = 0; + // 濡傛灉鏁版嵁鍏ㄤ负绌� 閭d箞灏变笉鍦ㄧ户缁坊鍔� + Field[] fields = data.getClass().getDeclaredFields(); + for (Field field : fields) { + count1++; + field.setAccessible(true); + try { + Object o = field.get(data); // 鑾峰彇瀛楁鍊� + if(Objects.isNull(o) || StringUtils.isEmpty(o.toString())) { + count++; + } + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + if(count == count1) { + FLAG = false; + } + if(FLAG) { + list.add(data); + } + if (list.size() >= BATCH_COUNT) { + save(); + list.clear(); + } + + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + log.info("鎵�鏈夋暟鎹В鏋愬畬鎴恵}",list.size()); + save(); + // 鎵�鏈夋暟鎹В鏋愬畬鎴� 灏咶LAG鏇存柊涓簍rue + if(!FLAG) { + FLAG = true; + } + } + + private void save() { + personTrainingDetailedService.importExcel(list, this.planId); + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedUpload.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedUpload.java new file mode 100644 index 0000000..cff7e22 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/excel/PersonTrainingDetailedUpload.java @@ -0,0 +1,44 @@ +package com.ruoyi.personnel.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class PersonTrainingDetailedUpload { + +// @ExcelProperty("鍩硅鐩爣") + @ExcelProperty(index = 1) + private String trainingObjectives; + +// @ExcelProperty("鍩硅鍐呭") + @ExcelProperty(index = 2) + private String trainingContent; + +// @ExcelProperty("鍩硅鏂瑰紡") + @ExcelProperty(index = 3) + private String trainingMode; + +// @ExcelProperty("鍙傚姞瀵硅薄") + @ExcelProperty(index = 4) + private String participants; + +// @ExcelProperty("涓惧姙閮ㄩ棬") + @ExcelProperty(index = 5) + private String holdingDepartment; + +// @ExcelProperty("鍩硅璁插笀") + @ExcelProperty(index = 6) + private String trainingLecturerName; + +// @ExcelProperty("鍩硅鏃堕棿") + @ExcelProperty(index = 7) + private String trainingDate; + +// @ExcelProperty("璇炬椂") + @ExcelProperty(index = 8) + private String classHour; + +// @ExcelProperty("澶囨敞") + @ExcelProperty(index = 9) + private String remarks; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java new file mode 100644 index 0000000..9fee604 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/AnnexMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.personnel.pojo.Annex; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AnnexMapper extends BaseMapper<Annex> { +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java new file mode 100644 index 0000000..adb5fb7 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java @@ -0,0 +1,37 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.dto.DepartmentDto; +import com.ruoyi.personnel.dto.PersonBasicInfoDto; +import com.ruoyi.personnel.pojo.PersonBasicInfo; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-08-30 09:19:57 + */ +public interface PersonBasicInfoMapper extends BaseMapper<PersonBasicInfo> { + + List<DepartmentDto> selectLimsUser(); + + PersonBasicInfoDto getCNASPersonnelInfo(Integer userId); + + IPage<Map<String, Object>> basicInformationOfPersonnelSelectPage(Page page, Integer departmentId); + + /** + * 浜哄憳鍩烘湰淇℃伅鍒嗛〉鏌ヨ + * @param page + * @param name + * @param departmentId + * @return + */ + IPage<Map<String, Object>> selectPersonBasecInfoAndUser(Page page, String name, Integer departmentId); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java new file mode 100644 index 0000000..0888b35 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonCommunicationAbilityMapper.java @@ -0,0 +1,21 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonCommunicationAbilityDto; +import com.ruoyi.personnel.pojo.PersonCommunicationAbility; +import org.apache.ibatis.annotations.Param; + +/** + * <p> + * 娌熼�氳兘鍔� Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 12:00:57 + */ +public interface PersonCommunicationAbilityMapper extends BaseMapper<PersonCommunicationAbility> { + + IPage<PersonCommunicationAbilityDto> personPersonCommunicationAbilityPage(Page page, @Param("departLimsId") Integer departLimsId, @Param("userId") Integer userId, @Param("userName") String userName); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java new file mode 100644 index 0000000..a46e3bf --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonJobResponsibilitiesMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonJobResponsibilitiesDto; +import com.ruoyi.personnel.pojo.PersonJobResponsibilities; + +/** + * <p> + * 宀椾綅鑱岃矗 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 02:07:49 + */ +public interface PersonJobResponsibilitiesMapper extends BaseMapper<PersonJobResponsibilities> { + + IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, String userId, String departmentId, String userName); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java new file mode 100644 index 0000000..b2bb671 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPersonnelCapacityMapper.java @@ -0,0 +1,29 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityDto; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto; +import com.ruoyi.personnel.pojo.PersonPersonnelCapacity; +import org.apache.ibatis.annotations.Param; + +/** + * <p> + * 浜哄憳鑳藉姏 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 11:26:18 + */ +public interface PersonPersonnelCapacityMapper extends BaseMapper<PersonPersonnelCapacity> { + + IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName); + + /** + * 鏌ヨ浜哄憳鑳藉姏鎺ュ彛 + * @param id + * @return + */ + PersonPersonnelCapacityExportDto selectExportPersonnelCapacity(@Param("id") Integer id); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java new file mode 100644 index 0000000..1121811 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonPostAuthorizationRecordMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonPostAuthorizationRecordDto; +import com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord; + +/** + * <p> + * 浠昏亴鎺堟潈璁板綍 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 10:48:17 + */ +public interface PersonPostAuthorizationRecordMapper extends BaseMapper<PersonPostAuthorizationRecord> { + + IPage<PersonPostAuthorizationRecordDto> personPostAuthorizationRecordPage(Page page, Integer departLimsId, Integer userId, String userName); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java new file mode 100644 index 0000000..a77cb79 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonRewardPunishmentRecordMapper.java @@ -0,0 +1,26 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonRewardPunishmentRecordDto; +import com.ruoyi.personnel.excel.PersonRewardPunishmentRecordExcel; +import com.ruoyi.personnel.pojo.PersonRewardPunishmentRecord; + +import java.util.Date; +import java.util.List; + +/** + * <p> + * 濂栨儵璁板綍 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-08 11:25:02 + */ +public interface PersonRewardPunishmentRecordMapper extends BaseMapper<PersonRewardPunishmentRecord> { + + IPage<PersonRewardPunishmentRecordDto> rewardPunishmentPage(Page page, Integer userId, String userName, Date startTime, Date endTime, Integer departmentId); + + List<PersonRewardPunishmentRecordExcel> rewardPunishmentExport(Integer userId, Integer departmentId, String userName, Date startTime, Date endTime); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java new file mode 100644 index 0000000..67fd119 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanDetailsMapper.java @@ -0,0 +1,21 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.framework.mybatis_config.MyBaseMapper; +import com.ruoyi.personnel.dto.PersonSupervisePlanDetailsDto; +import com.ruoyi.personnel.pojo.PersonSupervisePlanDetails; + +/** + * <p> + * 鐩戠潱璁″垝 - 瀛� Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:17:02 + */ +public interface PersonSupervisePlanDetailsMapper extends MyBaseMapper<PersonSupervisePlanDetails> { + + IPage<PersonSupervisePlanDetailsDto> pageByDate(Page page, String date, String project, Integer planId); + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanMapper.java new file mode 100644 index 0000000..801e00a --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisePlanMapper.java @@ -0,0 +1,21 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonSupervisePlanDto; +import com.ruoyi.personnel.pojo.PersonSupervisePlan; + +/** + * <p> + * 鐩戠潱璁″垝 - 鐖� Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:14:45 + */ +public interface PersonSupervisePlanMapper extends BaseMapper<PersonSupervisePlan> { + + IPage<PersonSupervisePlanDto> pageByPerson(Page page, String organizationPerson,Integer departId); + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionControlSheetMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionControlSheetMapper.java new file mode 100644 index 0000000..b5b3c4e --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionControlSheetMapper.java @@ -0,0 +1,25 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.personnel.dto.PersonSupervisionControlSheetExportDto; +import com.ruoyi.personnel.pojo.PersonSupervisionControlSheet; +import org.apache.ibatis.annotations.Param; + +/** + * <p> + * 鐩戠潱璁板綍 - 鎺у埗鍗� Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:18:57 + */ +public interface PersonSupervisionControlSheetMapper extends BaseMapper<PersonSupervisionControlSheet> { + + /** + * 鏌ヨ鐩戠潱璁板綍鎺у埗鍗� + * @param supervisionRecordId + */ + PersonSupervisionControlSheetExportDto selectSupervisionControl(@Param("supervisionRecordId") Integer supervisionRecordId); + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionProcessingSheetMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionProcessingSheetMapper.java new file mode 100644 index 0000000..50e78ba --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionProcessingSheetMapper.java @@ -0,0 +1,24 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.personnel.dto.PersonSupervisionProcessingSheetDto; +import com.ruoyi.personnel.pojo.PersonSupervisionProcessingSheet; +import org.apache.ibatis.annotations.Param; + +/** + * <p> + * 鐩戠潱璁板綍 - 澶勭悊鍗� Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:35:58 + */ +public interface PersonSupervisionProcessingSheetMapper extends BaseMapper<PersonSupervisionProcessingSheet> { + + /** + * 鏌ヨ浜哄憳鐩戠潱璁板綍澶勭悊鍗� + * @param supervisionRecordId + * @return + */ + PersonSupervisionProcessingSheetDto selectProcessingSheet(@Param("supervisionRecordId") Integer supervisionRecordId); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java new file mode 100644 index 0000000..d49cbd0 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonSupervisionRecordMapper.java @@ -0,0 +1,27 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonSupervisionRecordDto; +import com.ruoyi.personnel.pojo.PersonSupervisionRecord; + +/** + * <p> + * 鐩戠潱璁板綍 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 04:16:49 + */ +public interface PersonSupervisionRecordMapper extends BaseMapper<PersonSupervisionRecord> { + + IPage<PersonSupervisionRecordDto> personSupervisionRecordPage(Page page, Integer userId, Integer departLimsId, String userName); + + /** + * 鏌ヨ鐩戠潱璁板綍璇︽儏 + * @param id + * @return + */ + PersonSupervisionRecordDto selectPersonSupervisionRecord(Integer id); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java new file mode 100644 index 0000000..d631e0c --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrackRecordMapper.java @@ -0,0 +1,24 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.pojo.PersonTrackRecord; + +import java.util.List; + +/** + * <p> + * 宸ヤ綔灞ュ巻 Mapper 鎺ュ彛 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-02 03:13:03 + */ +public interface PersonTrackRecordMapper extends BaseMapper<PersonTrackRecord> { + + IPage<PersonTrackRecord> personTrackRecordSelect(Page page, String userId, String departLimsId); + + List<PersonTrackRecord> personTrackRecordExport(String userId, String departLimsId); + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java new file mode 100644 index 0000000..1319c16 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java @@ -0,0 +1,43 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.framework.mybatis_config.MyBaseMapper; +import com.ruoyi.personnel.dto.PersonTrainingDetailedDto; +import com.ruoyi.personnel.pojo.PersonTrainingDetailed; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * <p> + * 鍩硅璁″垝璇︽儏 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:46:27 + */ +public interface PersonTrainingDetailedMapper extends MyBaseMapper<PersonTrainingDetailed> { + + IPage<PersonTrainingDetailedDto> queryTheAnnualPlanDetailsTable(Page page, + String trainingLecturerName, + String courseCode, String trainingDate, + Integer id, + Integer userId, + Integer loginUserId, + Integer state); + + /** + * 鏍规嵁涓昏〃id鏌ヨ璇︽儏 + * @param trainingId + * @return + */ + List<PersonTrainingDetailedDto> selectTrainingList(@Param("trainingId") Integer trainingId); + + /** + * 鏌ヨ璇︾粏 + * @param id + * @return + */ + PersonTrainingDetailedDto selectTrainingDetail(@Param("id") Integer id); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingFileMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingFileMapper.java new file mode 100644 index 0000000..29f94cf --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingFileMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.personnel.pojo.PersonTrainingFile; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PersonTrainingFileMapper extends BaseMapper<PersonTrainingFile> { +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java new file mode 100644 index 0000000..9563357 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonTrainingDto; +import com.ruoyi.personnel.pojo.PersonTraining; + +/** + * <p> + * 鍩硅璁″垝 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:11:49 + */ +public interface PersonTrainingMapper extends BaseMapper<PersonTraining> { + + IPage<PersonTrainingDto> personTrainingSelect(Page page, String compilerName, Integer departLimsId); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java new file mode 100644 index 0000000..a10ed81 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java @@ -0,0 +1,67 @@ +package com.ruoyi.personnel.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.personnel.dto.PersonTrainingRecordDto; +import com.ruoyi.personnel.dto.PersonTrainingRecordListDto; +import com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto; +import com.ruoyi.personnel.pojo.PersonTrainingRecord; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * <p> + * 鍩硅璁板綍 Mapper 鎺ュ彛 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-12 04:50:48 + */ +public interface PersonTrainingRecordMapper extends BaseMapper<PersonTrainingRecord> { + + List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(Integer trainingDetailedId, String userName); + + IPage<PersonTrainingRecordListDto> personnelTrainingPersonnel(Page page, String userName, Integer userId, Integer departLimsId); + + IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetails(Page page, Integer userId); + + /** + * 鏍规嵁璇︽儏id鏌ヨ鍩硅浜哄憳 + * @param trainingDetailedId + * @return + */ + List<PersonTrainingRecordDto> selectListByTrainingDetailedId(@Param("trainingDetailedId") Integer trainingDetailedId); + + /** + * 鏌ヨ浜哄憳淇℃伅 + * @param userId + * @return + */ + PersonTrainingRecordListDto selectUserTraining(@Param("userId") Integer userId); + + /** + * 鏍规嵁鐢ㄦ埛id鏌ヨ鍩硅璁板綍 + * @param userId + * @return + */ + List<TrainingRecordPersonDetailedDto> selectPersonDetailedDtos(Integer userId); + + /** + * 鏍规嵁鐢ㄦ埛id鍜屽勾浠芥煡璇汉鍛樻槑缁� 鍩硅璁板綍 + * @param page + * @param userId + * @param year + * @return + */ + IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetailsOfUserIdAndYear(Page page, Integer userId, Integer year); + + /** + * 鏍规嵁鐢ㄦ埛id鍜屽勾浠芥煡璇汉鍛樻槑缁� 鍩硅璁板綍瀵煎嚭 + * @param userId + * @param trainingDate + * @return + */ + List<TrainingRecordPersonDetailedDto> selectPersonDetailedDtosByTrainingDate(Integer userId, Integer year); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java new file mode 100644 index 0000000..bbf2017 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/Annex.java @@ -0,0 +1,48 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@TableName("cnas_annex") +@ApiModel("浜哄憳鍩烘湰淇℃伅闄勪欢琛�") +public class Annex implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "user琛╥d") + private Integer userId; + + @ApiModelProperty(value = "璇佷欢鍙�") + private String idNumber; + + @ApiModelProperty(value = "鍙戣瘉鍗曚綅") + private String issueUnit; + + @ApiModelProperty(value = "鏂囦欢鍚嶇О") + private String fileName; + + @ApiModelProperty(value = "绾у埆") + private String level; + + @ApiModelProperty(value = "鏈夋晥鏈�") + private String periodValidity; + + @ApiModelProperty(value = "娣诲姞鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "澶嶅嵃浠�") + private String copy; + + @ApiModelProperty(value = "鍘熶欢") + private String original; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java new file mode 100644 index 0000000..98f92b1 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonBasicInfo.java @@ -0,0 +1,271 @@ +package com.ruoyi.personnel.pojo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDate; + +/** + * <p> + * + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-08-30 09:19:57 + */ +@Getter +@Setter +@TableName("cnas_person_basic_info") +@ApiModel(value = "PersonBasicInfo瀵硅薄", description = "") +public class PersonBasicInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("褰撳墠鐘舵��") + private String currentState; + + @ApiModelProperty("鍏ヨ亴鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + private LocalDate entryTime; + + @ApiModelProperty("褰撳墠鑱屽姟") + private String currentPosition; + + @ApiModelProperty("宀椾綅") + private String post; + + @ApiModelProperty("閮ㄩ棬缂栧彿") + private String departmentCode; + @ApiModelProperty("鑱岀О") + @ExcelProperty("鑱岀О") + private String professionalTitle; + + @ApiModelProperty("鎬у埆") + private String sex; + + @ApiModelProperty("浜哄憳鍒嗙被") + private String personnelClassification; + + @ApiModelProperty("鍑虹敓鏃ユ湡") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate dateBirth; + + @ApiModelProperty("韬唤璇佸彿") + @ExcelProperty("璇佷欢鍙风爜") + private String identityCard; + + @ApiModelProperty("姘戞棌") + private String nation; + + @ApiModelProperty("鏀挎不闈㈣矊") + private String politicalStatus; + + @ApiModelProperty("鏈�楂樺鍘�") + @ExcelProperty("鏈�楂樺鍘�") + private String officialAcademicRedentials; + + @ApiModelProperty("姣曚笟鏃堕棿1") + @ExcelProperty("姣曚笟鏃堕棿") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate graduationTime1; + + @ApiModelProperty("姣曚笟闄㈡牎1") + @ExcelProperty("姣曚笟闄㈡牎") + private String graduatedInstitutions1; + + @ApiModelProperty("涓撲笟1") + @ExcelProperty("鎵�瀛︿笓涓�") + private String major1; + + @ApiModelProperty("姣曚笟鏃堕棿2") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate graduationTime2; + + @ApiModelProperty("姣曚笟闄㈡牎2") + private String graduatedInstitutions2; + + @ApiModelProperty("涓撲笟2") + private String major2; + + @ApiModelProperty("鎵嬫満鍙�") + private String telephone; + + @ApiModelProperty("璁″垝瀹炰範缁撴潫") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate endPlannedInternship; + + @ApiModelProperty("瀹為檯瀹炰範缁撴潫") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate endPracticalPractice; + + @ApiModelProperty("绂昏亴鏃ユ湡") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate dateDeparture; + + @ApiModelProperty("妗岄潰鍥剧墖") + private String desktopPicture; + + @ApiModelProperty("闄勪欢璧勬枡") + private String attachmentInformation; + + @ApiModelProperty("澶囨敞") + private String remarks; + + @ApiModelProperty("鐢ㄦ埛琛紙user锛塱d") + private Integer userId; +// + @ApiModelProperty("宸ュ彿") + private String jobNumber; + + @ApiModelProperty("鍛樺伐瀛愮紪鍙�") + private String subordinateNumber; + + @ApiModelProperty("鍏徃鍚嶇О") + private String corporateName; + + @ApiModelProperty("宀椾綅绫诲埆") + private String postType; + + @ApiModelProperty("宀椾綅缂栧彿") + private String postCode; + + @ApiModelProperty("宀椾綅鍚嶇О") + private String postName; + + @ApiModelProperty("鍏ラ泦鍥㈡椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @ExcelProperty("鍏ラ泦鍥㈡椂闂�") + private LocalDate groupTime; + + @ApiModelProperty("鍏ュ崟浣嶆椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + @ExcelProperty("鍏ュ崟浣嶆椂闂�") + private LocalDate unitTime; + + @ApiModelProperty("骞撮緞") + private Integer personBasicInfoAge; + + + @ApiModelProperty("鐩存帴涓婄骇") + private String reportingTo; + + + @ApiModelProperty("鍔冲姩鍏崇郴") + private String laborRelations; + + @ApiModelProperty("璇曠敤寮�濮嬫椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + private LocalDate trialStartTime; + + @ApiModelProperty("璇曠敤缁撴潫鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + private LocalDate trialEndTime; + + @ApiModelProperty("绫嶈疮") + @ExcelProperty("绫嶈疮") + private String nativePlace; + + @ApiModelProperty("璇佷欢绫诲瀷") + private String idType; + + @ApiModelProperty("璇佷欢鏈夋晥鏈�") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + private LocalDate validityPeriod; + + @ApiModelProperty("濠氬Щ鐘跺喌") + private String maritalStatus; + + @ApiModelProperty("璇佷欢鍦板潃") + @ExcelProperty("璇佷欢鍦板潃") + private String idAddress; + + @ApiModelProperty("璇佷欢璇︾粏鍦板潃") + private String idDetailAddress; + + @ApiModelProperty("鐜板眳鍦板潃") + private String currentAddress; + + @ApiModelProperty("鐜板眳璇︾粏鍦板潃") + private String currentDetailAddress; + + @ApiModelProperty("閫佽揪鍦板潃") + private String serviceAddress; + + @ApiModelProperty("閫佽揪璇︾粏鍦板潃") + private String serviceDetailAddress; + + @ApiModelProperty("鏄惁閫�浼嶅啗浜�") + private String retiredSoldiers; + + @ApiModelProperty("鍏ュ厷/鍥㈡椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(updateStrategy = FieldStrategy.IGNORED) // 涓虹┖鍙互鏇存柊 + private LocalDate dumplingTime; + + @ApiModelProperty("鐭彿") + private String cornet; + + @ApiModelProperty("鍔炲叕鐢佃瘽") + private String officePhone; + + @ApiModelProperty("璁$畻鏈虹瓑绾�") + private String ncre; + + @ApiModelProperty("鏈�楂樺浣�") + @ExcelProperty("鏈�楂樺浣�") + private String highestDegree; + + @ApiModelProperty("鏄惁鍏ㄦ棩鍒�") + private Integer fullTime; + + @ApiModelProperty("鏄惁灞炰簬涓ぉ") + private Integer enroll; + + @ApiModelProperty("XX灞婂ぇ瀛︾敓") + private String collegeStudents; + + @ApiModelProperty("绱ф�ヨ仈绯讳汉") + @ExcelProperty("绱ф�ヨ仈绯讳汉") + private String emergencyContact; + + @ApiModelProperty("绱ф�ヨ仈绯讳汉鐢佃瘽") + @ExcelProperty("绱ф�ヨ仈绯讳汉鐢佃瘽") + private String emergencyContactPhone; + + + @ApiModelProperty("鍏徃閭") + private String companyEmail; + + @ApiModelProperty("鏈�鍚庢洿鏂版椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDate lastUpdateTime; + + @ApiModelProperty("璇曢獙瀹�") + private String sonLaboratory; + + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java new file mode 100644 index 0000000..4df192d --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonCommunicationAbility.java @@ -0,0 +1,61 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 娌熼�氳褰� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 12:00:57 + */ +@Getter +@Setter +@TableName("cnas_person_communication_ability") +@ApiModel(value = "PersonCommunicationAbility瀵硅薄", description = "娌熼�氳褰�") +public class PersonCommunicationAbility implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("娌熼�氫汉id") + private String userId; + + @ApiModelProperty("娌熼�氭椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime communicationTime; + + @ApiModelProperty("娌熼�氬湴鐐�") + private String communicationPlace; + + @ApiModelProperty("娌熼�氬唴瀹�") + private String communicationContent; + + @ApiModelProperty("鍒涘缓浜篿d") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "鏇存柊浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonJobResponsibilities.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonJobResponsibilities.java new file mode 100644 index 0000000..55536fb --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonJobResponsibilities.java @@ -0,0 +1,78 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 宀椾綅鑱岃矗 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 02:07:49 + */ +@Getter +@Setter +@TableName("cnas_person_job_responsibilities") +@ApiModel(value = "PersonJobResponsibilities瀵硅薄", description = "宀椾綅鑱岃矗") +public class PersonJobResponsibilities implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("1宀椾綅鍚嶇О") + private String postName; + + @ApiModelProperty("1宸ヤ綔鐩爣") + private String jobObjective; + + @ApiModelProperty("1宀椾綅鑱岃矗") + private String jobResponsibilities; + + @ApiModelProperty("1浠昏亴浜篿d") + private String incumbentId; + + @ApiModelProperty("1 鎻愪氦鎿嶄綔浜�") + private String submittingOperator; + + @ApiModelProperty("1鎻愪氦鏃ユ湡") + private LocalDateTime submittingDate; + + @ApiModelProperty("2 浠昏亴浜� 涓荤id") + private Integer supervisorId; + + @ApiModelProperty("2 浠昏亴浜� 鎿嶄綔浜�") + private String incumbentOperator; + + @ApiModelProperty("2 浠昏亴浜� 鏃ユ湡") + private LocalDateTime incumbentDate; + + @ApiModelProperty("3 涓荤 鎿嶄綔浜�") + private String supervisorOperator; + + @ApiModelProperty("3 涓荤 鏃ユ湡") + private LocalDateTime supervisorDate; + + @ApiModelProperty(value = "鍒涘缓浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("褰撳墠鐘舵��") + private String currentState; + + @ApiModelProperty(value = "鍒涘缓鏃ユ湡 / 鎻愪氦鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("褰撳墠璐熻矗浜�") + private String currentResponsible; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPersonnelCapacity.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPersonnelCapacity.java new file mode 100644 index 0000000..89790fb --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPersonnelCapacity.java @@ -0,0 +1,122 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 浜哄憳鑳藉姏 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 11:26:18 + */ +@Getter +@Setter +@TableName("cnas_person_personnel_capacity") +@ApiModel(value = "PersonPersonnelCapacity瀵硅薄", description = "浜哄憳鑳藉姏") +public class PersonPersonnelCapacity implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("瀛﹀巻") + private String academicDegree; + + @ApiModelProperty("瀛﹀巻 绗﹀悎涓庡惁(1锛氱鍚堬紱2锛氫笉绗﹀悎锛�3锛氫笉閫傜敤)") + private Integer academicConformNot; + + @ApiModelProperty("瀛﹀巻 澶囨敞") + private String academicRemarks; + + @ApiModelProperty("鐩稿叧骞撮檺") + private String relatedYears; + + @ApiModelProperty("鐩稿叧骞撮檺 绗﹀悎涓庡惁(1锛氱鍚堬紱2锛氫笉绗﹀悎锛�3锛氫笉閫傜敤)") + private Integer relatedYearsConformNot; + + @ApiModelProperty("鐩稿叧骞撮檺 澶囨敞") + private String relatedYearsRemarks; + + @ApiModelProperty("鐩稿叧鍩硅") + private String relatedTraining; + + @ApiModelProperty("鐩稿叧鍩硅 绗﹀悎涓庡惁(1锛氱鍚堬紱2锛氫笉绗﹀悎锛�3锛氫笉閫傜敤)") + private Integer relatedTrainingConformNot; + + @ApiModelProperty("鐩稿叧鍩硅 澶囨敞") + private String relatedTrainingRemarks; + + @ApiModelProperty("鐩稿叧缁忛獙") + private String relevantExperience; + + @ApiModelProperty("鐩稿叧缁忛獙 绗﹀悎涓庡惁(1锛氱鍚堬紱2锛氫笉绗﹀悎锛�3锛氫笉閫傜敤)") + private Integer relevantExperienceConformNot; + + @ApiModelProperty("鐩稿叧缁忛獙 澶囨敞") + private String relevantExperienceRemarks; + + @ApiModelProperty("涓婂矖璇�") + private String workLicense; + + @ApiModelProperty("涓婂矖璇� 绗﹀悎涓庡惁(1锛氱鍚堬紱2锛氫笉绗﹀悎锛�3锛氫笉閫傜敤)") + private Integer workLicenseConformNot; + + @ApiModelProperty("涓婂矖璇� 澶囨敞") + private String workLicenseRemarks; + + @ApiModelProperty("宀椾綅鑱岃矗") + private String jobResponsibilities; + + @ApiModelProperty("宀椾綅鑱岃矗 绗﹀悎涓庡惁(1锛氱鍚堬紱2锛氫笉绗﹀悎锛�3锛氫笉閫傜敤)") + private Integer jobResponsibilitiesConformNot; + + @ApiModelProperty("宀椾綅鑱岃矗 澶囨敞") + private String jobResponsibilitiesRemarks; + + @ApiModelProperty("缁煎悎璇勪环") + private String comprehensiveAssessment; + + @ApiModelProperty("1 鎻愪氦id 鎿嶄綔浜�") + private Integer submitOperatingPersonnelId; + + @ApiModelProperty("1 鎻愪氦 鏃ユ湡") + private LocalDateTime submitDate; + + @ApiModelProperty("2 纭浜� userId涓婚敭") + private Integer confirmOperatingPersonnelId; + + @ApiModelProperty("2 纭浜� 鏃ユ湡") + private LocalDateTime confirmDate; + + @ApiModelProperty(value = "鍒涘缓鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鏇存柊鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鍒涘缓浜�", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "鏇存柊浜�", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "浜哄憳濮撳悕 id") + private Integer userId; + + @ApiModelProperty(value = "鑱岀О") + private String technicalPost; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPostAuthorizationRecord.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPostAuthorizationRecord.java new file mode 100644 index 0000000..f341b83 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonPostAuthorizationRecord.java @@ -0,0 +1,74 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 浠昏亴鎺堟潈璁板綍 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 10:48:17 + */ +@Getter +@Setter +@TableName("cnas_person_post_authorization_record") +@ApiModel(value = "PersonPostAuthorizationRecord瀵硅薄", description = "浠昏亴鎺堟潈璁板綍") +public class PersonPostAuthorizationRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("璇佷功缂栧彿") + private String certificateNumber; + + @ApiModelProperty("琚换鑱屼汉鍛榠d") + private String userId; + + @ApiModelProperty("浠昏亴宀椾綅") + private String post; + + @ApiModelProperty("鎿嶄綔绫诲瀷") + private String operationType; + + @ApiModelProperty("鍘熸枃浠跺悕绉�") + private String fileName; + + @ApiModelProperty("绯荤粺鐢熸垚鏂囦欢鍚嶇О") + private String systemFileName; + + @ApiModelProperty("澶囨敞") + private String remarks; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鏇存柊浜篿d",hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "鍒涘缓浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("鐞嗚鐭ヨ瘑鑰冭瘯鎴愮哗") + private String num1; + + @ApiModelProperty("鎿嶄綔鎶�鑳借�冭瘯鎴愮哗") + private String num2; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonRewardPunishmentRecord.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonRewardPunishmentRecord.java new file mode 100644 index 0000000..ab8bea1 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonRewardPunishmentRecord.java @@ -0,0 +1,61 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 濂栨儵璁板綍 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-08 11:25:02 + */ +@Getter +@Setter +@TableName("cnas_person_reward_punishment_record") +@ApiModel(value = "PersonRewardPunishmentRecord瀵硅薄", description = "濂栨儵璁板綍") +public class PersonRewardPunishmentRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("濂栨儵绾у埆") + private String rewardPunishLevel; + + @ApiModelProperty("濂栨儵鍚嶇О") + private String rewardPunishName; + + @ApiModelProperty("濂栨儵鏃堕棿") + private LocalDateTime rewardPunishTime; + + @ApiModelProperty("濂栨儵鍗曚綅") + private String rewardPunishWorkUnit; + + @ApiModelProperty("濂栨儵鍐呭") + private String rewardPunishContent; + + @ApiModelProperty("鐢ㄦ埛id") + private Integer userId; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鍒涘缓浜�", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlan.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlan.java new file mode 100644 index 0000000..b00cdce --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlan.java @@ -0,0 +1,66 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 鐩戠潱璁″垝 - 鐖� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:14:45 + */ +@Data +@TableName("cnas_person_supervise_plan") +@ApiModel(value = "PersonSupervisePlan瀵硅薄", description = "鐩戠潱璁″垝 - 鐖�") +public class PersonSupervisePlan implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("鏂囦欢鍚嶇О") + private String fileName; + + @ApiModelProperty("缂栧埗浜篿d") + private Integer organizationPersonId; + + @ApiModelProperty("缂栧埗鏃ユ湡") + private LocalDateTime organizationDate; + + @ApiModelProperty("鎵瑰噯浜篿d") + private Integer approvalId; + + @ApiModelProperty("鎵瑰噯浜烘棩鏈�") + private LocalDateTime approvalDate; + + @ApiModelProperty("鎵瑰噯鐘舵��(1閫氳繃/0涓嶉�氳繃)") + private Integer approvalStatus; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鍒涘缓浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鏇存柊浜篿d",hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty("閮ㄩ棬id") + private Integer departId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlanDetails.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlanDetails.java new file mode 100644 index 0000000..94bc93b --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisePlanDetails.java @@ -0,0 +1,73 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * <p> + * 鐩戠潱璁″垝 - 瀛� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:17:02 + */ +@Getter +@Setter +@TableName("cnas_person_supervise_plan_details") +@ApiModel(value = "PersonSupervisePlanDetails瀵硅薄", description = "鐩戠潱璁″垝 - 瀛�") +public class PersonSupervisePlanDetails implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("鐩戠潱鏃ユ湡") + private LocalDate superviseDate; + + @ApiModelProperty("鐩戠潱鐩殑") + private String superviseDes; + + @ApiModelProperty("琚洃鐫d汉鍛�") + private String supervisePerson; + + @ApiModelProperty("澶囨敞") + private String remarks; + + @ApiModelProperty("鐩戠潱椤圭洰") + private String superviseProject; + + @ApiModelProperty("鐩戠潱鍘熷洜") + private String superviseReason; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鍒涘缓浜�", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("鐩戠潱璁″垝 - 鐖� id") + private Integer planId; + + //搴忓彿, 瀵煎嚭浣跨敤 + @TableField(select = false, exist = false) + private Integer index; + + // 瀵煎嚭浣跨敤 + @TableField(select = false, exist = false) + @ApiModelProperty("鐩戠潱鏃ユ湡") + private String superviseDateString; + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionControlSheet.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionControlSheet.java new file mode 100644 index 0000000..c8ec2fc --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionControlSheet.java @@ -0,0 +1,113 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * <p> + * 鐩戠潱璁板綍 - 鎺у埗鍗� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:18:57 + */ +@Getter +@Setter +@TableName("cnas_person_supervision_control_sheet") +@ApiModel(value = "PersonSupervisionControlSheet瀵硅薄", description = "鐩戠潱璁板綍 - 鎺у埗鍗�") +public class PersonSupervisionControlSheet implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("1鍙戠敓閮ㄩ棬id") + private Integer occurrenceDepartment; + + @ApiModelProperty("1閮ㄩ棬璐熻矗浜篿d") + private Integer departmentHeadId; + + @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞瀛楀吀id") + private String discoveryApproach; + + @ApiModelProperty("1涓嶇鍚堝伐浣滅殑璇︾粏璁板綍") + private String notConformDetails; + + @ApiModelProperty("1涓嶇鍚堢殑渚濇嵁鍙婃潯娆惧彿") + private String nonConformityClause; + + @ApiModelProperty("1鍙戠幇閮ㄩ棬 璐熻矗浜篿d") + private Integer discovererId; + + @ApiModelProperty("1鍙戠幇閮ㄩ棬 - 鏃ユ湡") + private LocalDateTime discovererDate; + + @ApiModelProperty("2琚洃鐫d汉id") + private Integer supervisedPersonId; + + @ApiModelProperty("2琚洃鐫d汉 - 鏃ユ湡") + private String supervisedPersonDate; + + @ApiModelProperty("3娑堥櫎涓嶇鍚堝伐浣滄墍閲囧彇鐨勬帾鏂�") + private String treatmentMeasures; + + + @ApiModelProperty("3璐d换閮ㄩ棬") + private Integer responsibleDepartmentId; + + @ApiModelProperty("3璐d换閮ㄩ棬 璐熻矗浜篿d") + private Integer responsibleDepartmentPersonId; + + @ApiModelProperty("3璐d换閮ㄩ棬 鏃ユ湡") + private LocalDateTime responsibleDepartmentDate; + + @ApiModelProperty("4鏄惁闇�瑕侀噰鍙栫籂姝f帾鏂�") + private Integer correctiveMeasure; + + @ApiModelProperty("4绾犳鎺柦澶勭悊鍗曡窡韪�") + private Integer correctiveMeasureFollowTracks; + + @ApiModelProperty("4绾犳鎺柦 鎶�鏈礋璐d汉id") + private Integer correctiveMeasurePersonId; + + @ApiModelProperty("4绾犳鎺柦 鏃ユ湡") + private LocalDateTime correctiveMeasureDate; + + @ApiModelProperty("5鏄惁閫氱煡瀹㈡埛(1锛氭槸锛�2锛氬惁)") + private Integer whetherInformCustomer; + + @ApiModelProperty("5鏄惁鎭㈠宸ヤ綔(1锛氭槸锛�2锛氬惁)") + private Integer whetherResumeWork; + + @ApiModelProperty("5璐ㄩ噺璐熻矗浜篿d") + private Integer qualitySupervisorId; + + @ApiModelProperty("5璐ㄩ噺璐熻矗浜烘棩鏈�") + private LocalDateTime qualitySupervisorDate; + + @ApiModelProperty(value = "鎻愪氦浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("褰撳墠鐘舵��") + private String currentState; + + @ApiModelProperty(value = "鍒涘缓鏃ユ湡 / 鎻愪氦鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDate createTime; + + @ApiModelProperty("褰撳墠璐熻矗浜�") + private String currentResponsible; + + @ApiModelProperty("鐩戠潱璁板綍id") + private Integer supervisionRecordId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionProcessingSheet.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionProcessingSheet.java new file mode 100644 index 0000000..78ea814 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionProcessingSheet.java @@ -0,0 +1,99 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 鐩戠潱璁板綍 - 澶勭悊鍗� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:35:58 + */ +@Getter +@Setter +@TableName("cnas_person_supervision_processing_sheet") +@ApiModel(value = "PersonSupervisionProcessingSheet瀵硅薄", description = "鐩戠潱璁板綍 - 澶勭悊鍗�") +public class PersonSupervisionProcessingSheet implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "processing_id", type = IdType.AUTO) + private Integer processingId; + + @ApiModelProperty("1 涓嶇鍚堟垨鍋忕浜嬪疄鐨勬弿杩�") + private String descriptionNonconformity; + + @ApiModelProperty("1 鎻愬嚭閮ㄩ棬") + private String proposingDepartment; + + @ApiModelProperty("1 鎻愬嚭閮ㄩ棬 浜哄憳 id") + private Integer proposingDepartmentPersonId; + + @ApiModelProperty("1 鎻愬嚭閮ㄩ棬 鏃ユ湡") + private LocalDateTime proposingDepartmentDate; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽") + private String causeAnalysis; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽 閮ㄩ棬") + private Integer causeAnalysisId; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽 閮ㄩ棬 浜哄憳 id") + private Integer causeAnalysisPersonId; + + @ApiModelProperty("2 鍘熷洜鍒嗘瀽 鏃ユ湡") + private LocalDateTime causeAnalysisDate; + + @ApiModelProperty("3 绾犳鎺柦") + private String correctiveMeasure; + + @ApiModelProperty("3 绾犳鎺柦 鎻愬嚭瑕佹眰閮ㄩ棬纭") + private String requestDepartmentConfirmation; + + @ApiModelProperty("3 绾犳鎺柦 閮ㄩ棬") + private Integer correctiveDepartId; + + @ApiModelProperty("3 绾犳鎺柦 浜哄憳id") + private Integer correctiveActionId; + + @ApiModelProperty("3 绾犳鎺柦 鏃ユ湡") + private LocalDateTime correctiveActionDate; + + @ApiModelProperty("4 瀹炴柦楠岃瘉缁撴灉") + private String implementationVerificationResults; + + @ApiModelProperty("4 楠岃瘉閮ㄩ棬") + private String verificationDepartment; + + @ApiModelProperty("4 楠岃瘉閮ㄩ棬 浜哄憳id") + private Integer verificationDepartmentPersonId; + + @ApiModelProperty("4 楠岃瘉閮ㄩ棬 鏃ユ湡") + private LocalDateTime verificationDepartmentDate; + + @ApiModelProperty(value = "鎻愪氦浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("褰撳墠鐘舵��") + private String currentState; + + @ApiModelProperty(value = "鍒涘缓鏃ユ湡 / 鎻愪氦鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("褰撳墠璐熻矗浜�") + private String currentResponsible; + + @ApiModelProperty("鐩戠潱璁板綍id") + private Integer supervisionRecordId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionRecord.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionRecord.java new file mode 100644 index 0000000..2afe658 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonSupervisionRecord.java @@ -0,0 +1,107 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * <p> + * 鐩戠潱璁板綍 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 04:16:49 + */ +@Getter +@Setter +@TableName("cnas_person_supervision_record") +@ApiModel(value = "PersonSupervisionRecord瀵硅薄", description = "鐩戠潱璁板綍") +public class PersonSupervisionRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("妫�娴嬩汉鍛榠d") + private Integer testerId; + + @ApiModelProperty("鐩戠潱鍛榠d") + private Integer supervisorId; + + @ApiModelProperty("妫�娴嬮」鐩�") + private String testItem; + + @ApiModelProperty("鏍峰搧缂栧彿") + private String sampleNumber; + + @ApiModelProperty("妫�娴嬫柟娉�") + private String testMethod; + + @ApiModelProperty("妫�娴嬭褰�") + private String testingRecords; + + @ApiModelProperty("妫�娴嬫棩鏈�") + private LocalDate detectionDate; + + @ApiModelProperty("浜哄憳id") + private String personnel; + + @ApiModelProperty("浠櫒璁惧") + private String instrumentEquipment; + + @ApiModelProperty("宸ヤ綔鐜") + private String workingEnvironment; + + @ApiModelProperty("鏍峰搧閲囬泦") + private String sampleCollection; + + @ApiModelProperty("鏍峰搧鐨勫噯澶�") + private String samplePreparation; + + @ApiModelProperty("妫�娴嬫姤鍛�") + private String testReport; + + @ApiModelProperty("鐩戠潱鎯呭喌璇勪环") + private String evaluationSupervisionSituation; + + @ApiModelProperty("涓嶇鍚堝鐞嗘剰瑙�") + private String doNotMeetTheHandlingOpinions; + + @ApiModelProperty("鎶�鏈礋璐d汉id") + private Integer technicalDirector; + + @ApiModelProperty("鎶�鏈礋璐d汉瀹℃壒鏃ユ湡") + private LocalDateTime technicalDirectorDate; + + @ApiModelProperty(value = "鍒涘缓鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鏇存柊鏃ユ湡", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鍒涘缓浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "鏇存柊浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty("褰撳墠璐熻矗浜�") + private String currentResponsible; + + @ApiModelProperty("褰撳墠鐘舵��") + private String currentState; + + private Integer departLimsId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrackRecord.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrackRecord.java new file mode 100644 index 0000000..7d3f8ad --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrackRecord.java @@ -0,0 +1,83 @@ +package com.ruoyi.personnel.pojo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 宸ヤ綔灞ュ巻 + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-02 03:13:03 + */ +@Getter +@Setter +@TableName("cnas_person_track_record") +@ApiModel(value = "PersonTrackRecord瀵硅薄", description = "宸ヤ綔灞ュ巻") +@ExcelIgnoreUnannotated +public class PersonTrackRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelIgnore + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ColumnWidth(value = 18) + @ExcelProperty(value = "璧峰鏃堕棿") + @ApiModelProperty("璧峰鏃堕棿") + private LocalDateTime startTime; + + @ExcelProperty(value = "缁撴潫鏃堕棿") + @ColumnWidth(value = 18) + @ApiModelProperty("缁撴潫鏃堕棿") + private LocalDateTime endTime; + + @ExcelProperty(value = "宸ヤ綔鍗曚綅") + @ApiModelProperty("宸ヤ綔鍗曚綅") + private String placeWork; + + @ExcelProperty(value = "閮ㄩ棬") + @ApiModelProperty("閮ㄩ棬") + private String department; + + @ExcelProperty(value = "鑱屽姟") + @ApiModelProperty("鑱屽姟") + private String post; + + @ExcelProperty(value = "澶囨敞") + @ApiModelProperty("澶囨敞") + private String remarks; + + @ColumnWidth(value = 18) + @ExcelProperty(value = "鍒涘缓鏃堕棿") + @ApiModelProperty("鍒涘缓鏃堕棿") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("鍒涘缓浜�") + @TableField(fill = FieldFill.INSERT) + private String createUser; + + @ApiModelProperty("鐢ㄦ埛琛紙user锛塱d") + private Integer userId; + + private String fileName; + + @TableField(exist = false,select = false) + @ExcelProperty(value = "鐢ㄦ埛鍚嶇О") + @ApiModelProperty("鐢ㄦ埛鍚嶇О") + private String name; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTraining.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTraining.java new file mode 100644 index 0000000..e8df335 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTraining.java @@ -0,0 +1,83 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * <p> + * 鍩硅璁″垝 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:11:49 + */ +@Getter +@Setter +@TableName("cnas_person_training") +@ApiModel(value = "PersonTraining瀵硅薄", description = "鍩硅璁″垝") +public class PersonTraining implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("鏂囦欢鍚嶇О") + private String fileName; + + @ApiModelProperty("缂栧埗浜篿d") + private Integer compilerId; + + @ApiModelProperty("缂栧埗鏃ユ湡") + private LocalDateTime compilationDate; + + @ApiModelProperty("瀹℃牳浜篿d") + private Integer reviewerId; + + @ApiModelProperty("瀹℃牳鏃ユ湡") + private LocalDateTime auditDate; + + @ApiModelProperty("瀹℃牳鐘舵��") + private Integer reviewerStatus; + + @ApiModelProperty("瀹℃牳澶囨敞") + private String auditRemarks; + + @ApiModelProperty("鎵瑰噯浜篿d") + private Integer approverId; + + @ApiModelProperty("鎵瑰噯澶囨敞") + private String approvalRemarks; + + @ApiModelProperty("鎵瑰噯鐘舵��(1锛氭壒鍑嗭紱2锛氫笉鎵瑰噯)") + private Integer approvalStatus; + + @ApiModelProperty("鎵瑰噯鏃ユ湡") + private LocalDateTime approvalDate; + + @ApiModelProperty("鍒涘缓鏃ユ湡") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty("鍒涘缓浜篿d") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty("鏇存柊鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty("鏇存柊浜篿d") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty("閮ㄩ棬id") + private Integer departId; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailed.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailed.java new file mode 100644 index 0000000..0156f38 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingDetailed.java @@ -0,0 +1,124 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * <p> + * 鍩硅璁″垝璇︽儏 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:46:27 + */ +@Getter +@Setter +@TableName("cnas_person_training_detailed") +@ApiModel(value = "PersonTrainingDetailed瀵硅薄", description = "鍩硅璁″垝璇︽儏") +public class PersonTrainingDetailed implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("鍩硅璁″垝") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("璇剧▼缂栧彿") + private String courseCode; + + @ApiModelProperty("鍩硅鐩爣") + private String trainingObjectives; + + @ApiModelProperty("鍩硅鍐呭") + private String trainingContent; + + @ApiModelProperty("鍩硅鏂瑰紡") + private String trainingMode; + + // 鏈紑濮� ==> 杩涜涓� ==> 宸茬粨鏉� ==> 宸插畬鎴� + @ApiModelProperty("鐘舵��(1锛氬凡瀹屾垚锛�2锛氳繘琛屼腑锛�3: 鏈紑濮嬶紱4锛氬凡缁撴潫)") + private Integer state; + + @ApiModelProperty("鍙傚姞瀵硅薄") + private String participants; + + @ApiModelProperty("涓惧姙閮ㄩ棬") + private Integer holdingDepartment; + + @ApiModelProperty("鍩硅鍦扮偣") + private String placeTraining; + + @ApiModelProperty("鍩硅璁插笀_id") + private String trainingLecturerId; + + @ApiModelProperty("鍩硅鏃ユ湡") + private String trainingDate; + + @ApiModelProperty("鍏蜂綋鏃ユ湡") + private String trainingDateTwo; + + @ApiModelProperty("寮�濮嬫椂闂�") + private String openingTime; + + @ApiModelProperty("缁撴潫鏃堕棿") + private String endTime; + + @ApiModelProperty("璇鹃瀛﹀垎") + private String projectCredits; + + @ApiModelProperty("璇炬椂") + private Double classHour; + + @ApiModelProperty("澶囨敞") + private String remarks; + + @ApiModelProperty("鍩硅璁″垝id") + private Integer planId; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鍒涘缓浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "鏇存柊浜篿d", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty("鑰冩牳鏂瑰紡") + private String assessmentMethod; + + @ApiModelProperty("鏈鍩硅缁煎悎璇勪环") + private String comprehensiveAssessment; + + @ApiModelProperty("璇勪环浜�") + private Integer assessmentUserId; + + @ApiModelProperty("璇勪环鏃堕棿") + private LocalDate assessmentDate; + + @ApiModelProperty("璺緞") + private String url; + + @ApiModelProperty("鏂囦欢鍚嶇О") + private String imgName; + + @ApiModelProperty("鍩硅鎽樿") + private String trainingAbstract; + + @TableField(exist = false) + private String organizingDepartment; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingFile.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingFile.java new file mode 100644 index 0000000..c8a2cab --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingFile.java @@ -0,0 +1,41 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("cnas_person_training_file") +public class PersonTrainingFile { + + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("骞村害璁″垝鏄庣粏琛╥d") + private Integer detailId; + + @ApiModelProperty("鏂囦欢璺緞") + private String fileUrl; + + @ApiModelProperty("鏂囦欢鍚嶇О") + private String fileName; + + @ApiModelProperty("鍒涘缓浜�") + private Integer createUser; + + @ApiModelProperty("鍒涘缓鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime createTime; + + @ApiModelProperty("鏋氫妇琛ㄥ悕") + private String enumAttachmentType; + + @TableField(exist = false) + private String mime; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingRecord.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingRecord.java new file mode 100644 index 0000000..593941b --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/pojo/PersonTrainingRecord.java @@ -0,0 +1,41 @@ +package com.ruoyi.personnel.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * <p> + * 鍩硅璁板綍 + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-12 04:50:48 + */ +@Getter +@Setter +@TableName("cnas_person_training_record") +@ApiModel(value = "PersonTrainingRecord瀵硅薄", description = "鍩硅璁板綍") +public class PersonTrainingRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("涓婚敭id") + @TableId(value = "training_record_id", type = IdType.AUTO) + private Integer trainingRecordId; + + @ApiModelProperty("鐢ㄦ埛琛ㄦ牸锛坲ser锛変富閿�") + private Integer userId; + + @ApiModelProperty("鍩硅璁″垝璇︽儏 - 瀛� id") + private Integer courseId; + + @ApiModelProperty("鑰冩牳缁撴灉") + private String examinationResults; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/schedule/PersonSchedule.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/schedule/PersonSchedule.java new file mode 100644 index 0000000..b3e66e9 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/schedule/PersonSchedule.java @@ -0,0 +1,54 @@ +package com.ruoyi.personnel.schedule; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.personnel.pojo.PersonTrainingDetailed; +import com.ruoyi.personnel.service.PersonTrainingDetailedService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.Date; +import java.util.List; + +@Component +public class PersonSchedule { + + @Resource + private PersonTrainingDetailedService personTrainingDetailedService; + + /** + * 褰撳墠璇剧▼灏忎簬褰撳墠鏃堕棿锛屽苟涓旂姸鎬佷负2锛氳繘琛屼腑锛�3: 鏈紑濮嬫洿鏂扮姸鎬佷负4锛氬凡缁撴潫 + */ + @Scheduled(cron = "0 0/15 * * * ?") //15鍒嗛挓鎵ц涓�娆� + //@Scheduled(cron = "0/10 * * * * ?") //姣�10绉掓墽琛屼竴娆� + public void testScheduleTask() { + // 鑾峰彇褰撳ぉ鐨勬墍鏈夊煿璁绋� + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdfWithTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String newDate = sdf.format(date); + List<PersonTrainingDetailed> list = personTrainingDetailedService.list(Wrappers.<PersonTrainingDetailed>lambdaQuery() + .eq(PersonTrainingDetailed::getState, 2) + .or().eq(PersonTrainingDetailed::getState, 3) + .le(PersonTrainingDetailed::getTrainingDateTwo, newDate)); + list.forEach(i -> { + LocalDate parse = LocalDate.parse(i.getTrainingDateTwo()); + Date date1 = Date.from(parse.atStartOfDay(ZoneId.systemDefault()).toInstant()); + String trainingDate = sdf.format(date1); + String endTime = trainingDate + " " + i.getEndTime(); + try { + Date endNewTime = sdfWithTime.parse(endTime); + // 鏃ユ湡瓒呭嚭 + if (endNewTime.before(date)) { + i.setState(4); + personTrainingDetailedService.updateById(i); + } + } catch (ParseException e) {} + }); + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java new file mode 100644 index 0000000..8de7b15 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/AnnexService.java @@ -0,0 +1,7 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.pojo.Annex; + +public interface AnnexService extends IService<Annex> { +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/FileGeneralService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/FileGeneralService.java new file mode 100644 index 0000000..0be0c42 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/FileGeneralService.java @@ -0,0 +1,19 @@ +package com.ruoyi.personnel.service; + + +import com.ruoyi.personnel.pojo.PersonTrainingFile; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +public interface FileGeneralService { + + void fileUpload(MultipartFile file, String suffix, Integer id,Integer type); + + List<PersonTrainingFile> selectFile(Integer id,Integer type); + + void delFile(Integer id); + + void fileDownLoad(Integer id, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java new file mode 100644 index 0000000..482aa69 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonBasicInfoService.java @@ -0,0 +1,50 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.dto.DepartmentDto; +import com.ruoyi.common.core.dto.UserPageDto; +import com.ruoyi.personnel.dto.PersonBasicInfoDto; +import com.ruoyi.personnel.pojo.PersonBasicInfo; +import com.ruoyi.personnel.pojo.PersonTrainingFile; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-08-30 09:19:57 + */ +public interface PersonBasicInfoService extends IService<PersonBasicInfo> { + + List<DepartmentDto> selectCNSAPersonTree(); + + Map<String,Object> getCNASPersonnelInfo(Integer userId); + + void saveCNASPersonnelInfo(PersonBasicInfoDto personBasicInfoDto); + + IPage<Map<String, Object>> basicInformationOfPersonnelSelectPage(Page page, String name, Integer departmentId); + + void exportPersonBasicInfo(UserPageDto userPageDto, HttpServletResponse response) throws Exception; + + String exportPersonBasicInfoById(Integer id, HttpServletResponse response); + + void saveDeviceCalibrationFile(MultipartFile file, String suffix, Integer id); + + List<PersonTrainingFile> getDeviceCalibrationFile(Integer id); + + void delDeviceCalibrationFile(Integer id); + + void downLoadDeviceCalibrationFile(Integer id ,HttpServletResponse response); + + void getEmployees(Integer departId); + + void getEmployee(Integer userId); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java new file mode 100644 index 0000000..a5186be --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonCommunicationAbilityService.java @@ -0,0 +1,25 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonCommunicationAbilityDto; +import com.ruoyi.personnel.pojo.PersonCommunicationAbility; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 娌熼�氳兘鍔� 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 12:00:57 + */ +public interface PersonCommunicationAbilityService extends IService<PersonCommunicationAbility> { + + IPage<PersonCommunicationAbilityDto> personPersonCommunicationAbilityPage(Page page, + Integer departLimsId, Integer userId, String userName); + + void exportPersonCommunicationAbility(Integer id, HttpServletResponse response)throws Exception; +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java new file mode 100644 index 0000000..2afa074 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonJobResponsibilitiesService.java @@ -0,0 +1,27 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonJobResponsibilitiesDto; +import com.ruoyi.personnel.pojo.PersonJobResponsibilities; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 宀椾綅鑱岃矗 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 02:07:49 + */ +public interface PersonJobResponsibilitiesService extends IService<PersonJobResponsibilities> { + + IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, + String userId, + String departmentId, + String userName); + + void exportPersonJobResponsibilities(Integer id, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java new file mode 100644 index 0000000..1a7890e --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPersonnelCapacityService.java @@ -0,0 +1,37 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityDto; +import com.ruoyi.personnel.pojo.PersonPersonnelCapacity; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 浜哄憳鑳藉姏 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 11:26:18 + */ +public interface PersonPersonnelCapacityService extends IService<PersonPersonnelCapacity> { + + IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName); + + /** + * 瀵煎嚭浜哄憳鑳藉姏 + * @param id + * @param response + */ + void exportPersonnelCapacity(Integer id, HttpServletResponse response); + + + /** + * 浜哄憳鑳藉姏纭 + * @param id + * @return + */ + boolean confirmPersonnelCapacity(Integer id); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPostAuthorizationRecordService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPostAuthorizationRecordService.java new file mode 100644 index 0000000..3c23bfe --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonPostAuthorizationRecordService.java @@ -0,0 +1,27 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonPostAuthorizationRecordDto; +import com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 浠昏亴鎺堟潈璁板綍 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 10:48:17 + */ +public interface PersonPostAuthorizationRecordService extends IService<PersonPostAuthorizationRecord> { + + IPage<PersonPostAuthorizationRecordDto> personPostAuthorizationRecordPage(Page page, + Integer departLimsId, + Integer userId, + String userName); + + void exportPersonPostAuthorizationRecord(Integer id, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonRewardPunishmentRecordService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonRewardPunishmentRecordService.java new file mode 100644 index 0000000..0f2dfdc --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonRewardPunishmentRecordService.java @@ -0,0 +1,31 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonRewardPunishmentRecordDto; +import com.ruoyi.personnel.excel.PersonRewardPunishmentRecordExcel; +import com.ruoyi.personnel.pojo.PersonRewardPunishmentRecord; + +import java.util.Date; +import java.util.List; + +/** + * <p> + * 濂栨儵璁板綍 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-08 11:25:02 + */ +public interface PersonRewardPunishmentRecordService extends IService<PersonRewardPunishmentRecord> { + + IPage<PersonRewardPunishmentRecordDto> rewardPunishmentPage(Page page, + Integer userId, + String userName, + Date startTime, + Date endTime, + Integer departmentId); + + List<PersonRewardPunishmentRecordExcel> rewardPunishmentExport(Integer userId, Integer departmentId, String userName, Date startTime, Date endTime); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanDetailsService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanDetailsService.java new file mode 100644 index 0000000..239243a --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanDetailsService.java @@ -0,0 +1,26 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonSupervisePlanDetailsDto; +import com.ruoyi.personnel.excel.PersonSupervisePlanDetailsUpload; +import com.ruoyi.personnel.pojo.PersonSupervisePlanDetails; + +import java.util.List; + +/** + * <p> + * 鐩戠潱璁″垝 - 瀛� 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:17:02 + */ +public interface PersonSupervisePlanDetailsService extends IService<PersonSupervisePlanDetails> { + + IPage<PersonSupervisePlanDetailsDto> yearPlanDetailPage(Page page, + String date, String project, Integer planId); + + void importExcel(List<PersonSupervisePlanDetailsUpload> list, Integer planId); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanService.java new file mode 100644 index 0000000..098cd8d --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisePlanService.java @@ -0,0 +1,32 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonSupervisePlanDto; +import com.ruoyi.personnel.pojo.PersonSupervisePlan; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 鐩戠潱璁″垝 - 鐖� 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:14:45 + */ +public interface PersonSupervisePlanService extends IService<PersonSupervisePlan> { + + IPage<PersonSupervisePlanDto> yearPlanDtoIPage(Page page, String organizationPerson,Integer departId); + + void yearPlanDetailImport(MultipartFile file,String suffix); + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁″垝 + * @param id + * @param response + */ + void exportSuperVisePlan(Integer id, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionControlSheetService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionControlSheetService.java new file mode 100644 index 0000000..5f00710 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionControlSheetService.java @@ -0,0 +1,24 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.pojo.PersonSupervisionControlSheet; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 鐩戠潱璁板綍 - 鎺у埗鍗� 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:18:57 + */ +public interface PersonSupervisionControlSheetService extends IService<PersonSupervisionControlSheet> { + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁板綍绾犳鎺у埗鍗� + * @param supervisionRecordId + * @param response + */ + void exportSupervisionControlSheet(Integer supervisionRecordId, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionProcessingSheetService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionProcessingSheetService.java new file mode 100644 index 0000000..d5fb023 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionProcessingSheetService.java @@ -0,0 +1,24 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.pojo.PersonSupervisionProcessingSheet; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 鐩戠潱璁板綍 - 澶勭悊鍗� 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:35:58 + */ +public interface PersonSupervisionProcessingSheetService extends IService<PersonSupervisionProcessingSheet> { + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁板綍绾犳澶勭悊鍗� + * @param supervisionRecordId + * @param response + */ + void exportSupervisionProcessingSheet(Integer supervisionRecordId, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionRecordService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionRecordService.java new file mode 100644 index 0000000..23cf464 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonSupervisionRecordService.java @@ -0,0 +1,33 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonSupervisionRecordDto; +import com.ruoyi.personnel.pojo.PersonSupervisionRecord; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * <p> + * 鐩戠潱璁板綍 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 04:16:49 + */ +public interface PersonSupervisionRecordService extends IService<PersonSupervisionRecord> { + + void deletePersonSupervisionRecord(List<Integer> ids); + + IPage<PersonSupervisionRecordDto> personSupervisionRecordPage(Page page, + Integer userId, String userName, Integer departLimsId); + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁板綍 + * @param id + * @param response + */ + void exportPersonSupervisionRecord(Integer id, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrackRecordService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrackRecordService.java new file mode 100644 index 0000000..3ba37b5 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrackRecordService.java @@ -0,0 +1,23 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.pojo.PersonTrackRecord; + +import java.util.List; + +/** + * <p> + * 宸ヤ綔灞ュ巻 鏈嶅姟绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-02 03:13:03 + */ +public interface PersonTrackRecordService extends IService<PersonTrackRecord> { + + IPage<PersonTrackRecord> personTrackRecordSelect(Page page, String userId, String departmentId); + + List<PersonTrackRecord> personTrackRecordExport(String userId, String departmentId); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingDetailedService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingDetailedService.java new file mode 100644 index 0000000..13d1799 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingDetailedService.java @@ -0,0 +1,47 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.personnel.dto.PersonTrainingDetailedDto; +import com.ruoyi.personnel.excel.PersonTrainingDetailedUpload; +import com.ruoyi.personnel.pojo.PersonTrainingDetailed; +import com.ruoyi.personnel.pojo.PersonTrainingFile; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 鍩硅璁″垝璇︽儏 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:46:27 + */ +public interface PersonTrainingDetailedService extends IService<PersonTrainingDetailed> { + + Map<String,Object> fileUpload(MultipartFile file , Integer id); + + List<DepartmentLims> selectDepartLims(); + + void importExcel(List<PersonTrainingDetailedUpload> list, Integer planId); + + void deleteAnnualPlanDetailTable(String ids); + + IPage<PersonTrainingDetailedDto> queryTheAnnualPlanDetailsTable(Page page, + String trainingLecturerName, + String courseCode, String trainingDate, Integer id, Integer userId,Integer departId, + Integer state); + + List<PersonTrainingFile> getFileData(Integer detailedId); + + void deleteFile(Integer id); + + void fileDownLoad(Integer id, HttpServletResponse response); + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingFileService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingFileService.java new file mode 100644 index 0000000..9fc28a9 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingFileService.java @@ -0,0 +1,7 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.pojo.PersonTrainingFile; + +public interface PersonTrainingFileService extends IService<PersonTrainingFile> { +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingRecordService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingRecordService.java new file mode 100644 index 0000000..10ed6f9 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingRecordService.java @@ -0,0 +1,60 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonTrainingRecordDto; +import com.ruoyi.personnel.dto.PersonTrainingRecordListDto; +import com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto; +import com.ruoyi.personnel.pojo.PersonTrainingRecord; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * <p> + * 鍩硅璁板綍 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-12 04:50:48 + */ +public interface PersonTrainingRecordService extends IService<PersonTrainingRecord> { + + List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(Integer trainingDetailedId, String userName); + + void deleteTrainingAndAssessmentRecords(String ids); + + IPage<PersonTrainingRecordListDto> personnelTrainingPersonnel(Page page, + String userName, Integer userId, Integer departLimsId); + + IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetails(Page page, Integer userId); + + void claimOfTrainingAndAssessmentRecords(Boolean claimAndClaim, Integer courseId); + + /** + * 瀵煎嚭浜哄憳鍩硅璁板綍 + * @param userId + * @param response + */ + void exportTrainingRecord(Integer userId, HttpServletResponse response); + + /** + * 鏍规嵁鐢ㄦ埛id鍜屽勾浠芥煡璇汉鍛樻槑缁� 鍩硅璁板綍 + * @param page + * @param userId + * @param year + * @return + */ + IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetailsOfUserIdAndYear(Page page, Integer userId, Integer year); + + /** + * 瀵煎嚭浜哄憳鍩硅璁板綍 + * @param userId + * @param trainingDate + * @param response + */ + void exportTrainingRecordAddTrainingDate(Integer userId, Integer trainingDate, HttpServletResponse response); + + void outOfFocusPreservation(PersonTrainingRecord personTrainingRecord); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java new file mode 100644 index 0000000..1059816 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java @@ -0,0 +1,48 @@ +package com.ruoyi.personnel.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.personnel.dto.PersonTrainingDto; +import com.ruoyi.personnel.dto.PersonTrainingUpdateDto; +import com.ruoyi.personnel.pojo.PersonTraining; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * <p> + * 鍩硅璁″垝 鏈嶅姟绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:11:49 + */ +public interface PersonTrainingService extends IService<PersonTraining> { + + IPage<PersonTrainingDto> personTrainingSelect(Page page, + String compilerName, Integer departmentId); + void deleteDetail(Integer id); + + void personTrainingImport(MultipartFile file); + + void personTrainingDelete(Integer id); + + void reviewAnnualPersonnelTraining(PersonTrainingUpdateDto personTrainingUpdateDto); + + void approveAnnualPersonnelTraining(PersonTrainingUpdateDto personTrainingUpdateDto); + + /** + * 瀵煎嚭浜哄憳鍩硅璁″垝 + * @param id + * @param response + */ + void exportPersonTraining(Integer id, HttpServletResponse response); + + /** + * 瀵煎嚭浜哄憳鍩硅涓庤�冩牳璁板綍 + * @param id + * @param response + */ + void exportPersonTrainingRecord(Integer id, HttpServletResponse response); +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java new file mode 100644 index 0000000..d944b3b --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/AnnexServiceImpl.java @@ -0,0 +1,13 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.personnel.mapper.AnnexMapper; +import com.ruoyi.personnel.pojo.Annex; +import com.ruoyi.personnel.service.AnnexService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class AnnexServiceImpl extends ServiceImpl<AnnexMapper, Annex> implements AnnexService { +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/FileGeneralServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/FileGeneralServiceImpl.java new file mode 100644 index 0000000..ac3304a --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/FileGeneralServiceImpl.java @@ -0,0 +1,162 @@ +package com.ruoyi.personnel.service.impl; + +import cn.hutool.core.lang.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.personnel.enumeration.AttachmentType; +import com.ruoyi.personnel.mapper.PersonTrainingFileMapper; +import com.ruoyi.personnel.pojo.PersonTrainingFile; +import com.ruoyi.personnel.service.FileGeneralService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.List; + +@Service + +public class FileGeneralServiceImpl implements FileGeneralService { + + @Autowired + private PersonTrainingFileMapper fileMapper; + + @Value("${wordUrl}") + private String wordUrl; + + @Value("${file.path}") + private String imgUrl; + + @Value("${excelUrl}") + private String excelUrl; + + @Override + public void fileUpload(MultipartFile file, String suffix, Integer id,Integer type) { + String name = file.getOriginalFilename(); + UUID uuid = UUID.randomUUID(); + String fileName = uuid + name; + String path = ""; + // 鏍规嵁鍚庣紑鍒ゆ柇灞炰簬浠�涔堢被鍨� + if(suffix.toLowerCase().contains("xls")) { + path = excelUrl; + } else if (suffix.toLowerCase().contains("doc") || suffix.toLowerCase().contains("pdf")) { + path = wordUrl; + } else { + path = imgUrl; + } + File file1 = new File(path); + if(!file1.exists()) { + file1.mkdir(); + } + try { + File file2 = new File(file1, fileName); + file.transferTo(file2); + // 淇濆瓨鏁版嵁搴� + PersonTrainingFile personTrainingFile = new PersonTrainingFile(); + personTrainingFile.setDetailId(id); + personTrainingFile.setFileUrl("/" + fileName); + personTrainingFile.setFileName(file.getOriginalFilename()); + personTrainingFile.setCreateUser(SecurityUtils.getUserId().intValue()); + personTrainingFile.setCreateTime(LocalDateTime.now()); + personTrainingFile.setEnumAttachmentType(AttachmentType.getTypeValue(type)); + fileMapper.insert(personTrainingFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public List<PersonTrainingFile> selectFile(Integer id, Integer type) { + List<PersonTrainingFile> personTrainingFileList = fileMapper.selectList(new LambdaQueryWrapper<PersonTrainingFile>() + .eq(PersonTrainingFile::getDetailId, id) + .eq(PersonTrainingFile::getEnumAttachmentType, AttachmentType.getTypeValue(type))); + if(CollectionUtils.isNotEmpty(personTrainingFileList)) { + for(PersonTrainingFile a : personTrainingFileList) { + // 璁剧疆mime + int i = a.getFileUrl().lastIndexOf("."); + String contentType = getContentType(a.getFileUrl().substring(i + 1)); + a.setMime(contentType); + } + } + return personTrainingFileList; + } + + @Override + public void delFile(Integer id) { + fileMapper.deleteById(id); + } + + @Override + public void fileDownLoad(Integer id, HttpServletResponse response) { + PersonTrainingFile personTrainingFile = fileMapper.selectById(id); + // 鑾峰彇鏂囦欢鍚庣紑 + String suffix = personTrainingFile.getFileName().substring(personTrainingFile.getFileName().lastIndexOf(".") + 1); + String path = ""; + if(suffix.toLowerCase().contains("xls")) { + path = excelUrl; + } else if (suffix.toLowerCase().contains("doc") || suffix.toLowerCase().contains("pdf")) { + path = wordUrl; + } else { + path = imgUrl; + } + File file = new File(path + File.separator + personTrainingFile.getFileUrl()); + if(!file.exists()) { + throw new RuntimeException("鏂囦欢涓嶅瓨鍦�"); + } + try(FileInputStream fileInputStream = new FileInputStream(file); + ServletOutputStream stream = response.getOutputStream()) { + String contentType = getContentType(suffix); + response.setContentType(contentType); + response.setHeader("Content-disposition", "attachment;filename=" + personTrainingFile.getFileName()); + byte[] bytes = new byte[1024]; + int i; + while((i = fileInputStream.read(bytes)) != -1) { + stream.write(bytes, 0, i); + stream.flush(); + } + }catch (Exception e) { + throw new RuntimeException(e); + } + + + + + + + + } + // 鏍规嵁鏂囦欢鎵╁睍鍚嶈幏鍙� MIME 绫诲瀷 + private String getContentType(String fileExtension) { + switch (fileExtension) { + case "jpg": + case "jpeg": + return "image/jpeg"; + case "png": + return "image/png"; + case "gif": + return "image/gif"; + case "pdf": + return "application/pdf"; + case "doc": + return "application/msword"; + case "docx": + return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + case "xls": + return "application/vnd.ms-excel"; + case "xlsx": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case "ppt": + case "pptx": + return "application/vnd.ms-powerpoint"; + default: + return "application/octet-stream"; // 榛樿浜岃繘鍒舵祦 + } + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java new file mode 100644 index 0000000..099b955 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonBasicInfoServiceImpl.java @@ -0,0 +1,1081 @@ +package com.ruoyi.personnel.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.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.*; +import com.deepoove.poi.data.style.*; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.core.dto.DepartmentDto; +import com.ruoyi.common.core.dto.UserPageDto; +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.framework.util.HeaderToken; +import com.ruoyi.personnel.dto.PersonBasicInfoDto; +import com.ruoyi.personnel.mapper.*; +import com.ruoyi.personnel.pojo.*; +import com.ruoyi.personnel.service.PersonBasicInfoService; +import com.ruoyi.system.mapper.DepartmentLimsMapper; +import com.ruoyi.system.mapper.UserMapper; +import lombok.extern.slf4j.Slf4j; +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.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +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.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.Period; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-08-30 09:19:57 + */ + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PersonBasicInfoServiceImpl extends ServiceImpl<PersonBasicInfoMapper, PersonBasicInfo> implements PersonBasicInfoService { + + @Resource + private DepartmentLimsMapper departmentMapper; + + @Resource + private PersonTrainingFileMapper fileMapper; + + @Resource + private HeaderToken headerToken; + + + @Value("${wordUrl}") + private String wordUrl; + + @Value("${file.path}") + private String imgUrl; + + @Value("${excelUrl}") + private String excelUrl; + + @Resource + private UserMapper userMapper; + + + @Resource + private AnnexMapper annexMapper; + @Resource + private PersonTrackRecordMapper personTrackRecordMapper; + + @Override + public List<DepartmentDto> selectCNSAPersonTree() { + List<DepartmentDto> departments = departmentMapper.selectDepartment(); + List<DepartmentDto> limsUser = baseMapper.selectLimsUser(); + departments.addAll(limsUser); + //鑾峰彇鐖惰妭鐐� + return departments.stream().filter(m -> m.getFatherId() == null).peek( + (m) -> m.setChildren(getChildren(m, departments)) + ).collect(Collectors.toList()); + } + + @Override + public Map<String,Object> getCNASPersonnelInfo(Integer userId) { + Map<String, Object> map = new HashMap<>(); + Map<Integer,List<DepartmentLims>> childrenMap = new HashMap<>(); + List<DepartmentLims> deptS = departmentMapper.selectList(null); + for (DepartmentLims dept : deptS) { + if(!Objects.isNull(dept.getFatherId())) { + if(!childrenMap.containsKey(dept.getFatherId())) { + childrenMap.put(dept.getFatherId(),new ArrayList<>()); + } + childrenMap.get(dept.getFatherId()).add(dept); + } + } + // 鐖惰妭鐐� + List<DepartmentLims> deptF = new ArrayList<>(); + for (DepartmentLims dept : deptS) { + if(Objects.isNull(dept.getFatherId())) { + deptF.add(buildTree(dept,childrenMap)); + } + } + map.put("department",deptF); + map.put("PersonBasicInfoDto",baseMapper.getCNASPersonnelInfo(userId)); + map.put("annexList",annexMapper.selectList(new LambdaQueryWrapper<Annex>().eq(Annex::getUserId,userId))); + return map; + } + + private DepartmentLims buildTree(DepartmentLims departmentLims, Map<Integer,List<DepartmentLims>> childrenMap) { + if(childrenMap.containsKey(departmentLims.getId())) { + departmentLims.setChildren(childrenMap.get(departmentLims.getId())); + for (DepartmentLims departmentLims1 : departmentLims.getChildren()) { + buildTree(departmentLims1,childrenMap); + } + } + return departmentLims; + } + + @Override + public void saveCNASPersonnelInfo(PersonBasicInfoDto personBasicInfoDto) { + User user = new User(); + user.setId(personBasicInfoDto.getUserId()); + user.setAccount(personBasicInfoDto.getAccount()); + user.setName(personBasicInfoDto.getName()); + user.setNameEn(personBasicInfoDto.getNameEn()); + user.setAge(personBasicInfoDto.getAge()); + user.setPhone(personBasicInfoDto.getPhone()); + user.setEmail(personBasicInfoDto.getEmail()); +// user.setDepartment(personBasicInfoDto.getDepartment()); + user.setSignatureUrl(personBasicInfoDto.getSignatureUrl()); + user.setPictureUrl(personBasicInfoDto.getPictureUrl()); + user.setDepartLimsId(personBasicInfoDto.getDepartLimsId()); + userMapper.updateById(user); + PersonBasicInfo personBasicInfo = JSONObject.parseObject(JSON.toJSONString(personBasicInfoDto), PersonBasicInfo.class); + PersonBasicInfo one = baseMapper.selectOne(new LambdaQueryWrapper<PersonBasicInfo>() + .eq(PersonBasicInfo::getUserId, personBasicInfoDto.getUserId())); + if(Objects.isNull(one)) { + baseMapper.insert(personBasicInfo); + }else { + personBasicInfo.setId(one.getId()); + baseMapper.updateById(personBasicInfo); + } + } + + @Override + public IPage<Map<String, Object>> basicInformationOfPersonnelSelectPage(Page page, String name, Integer departmentId) { + return baseMapper.selectPersonBasecInfoAndUser(page, name, departmentId); + } + + @Override + public void exportPersonBasicInfo(UserPageDto userPageDto, HttpServletResponse response) throws Exception { + ArrayList<PersonBasicInfoDto> data = new ArrayList<>(); + List<User> list = userMapper.selectList(null); + for (User user : list) { + PersonBasicInfoDto personBasicInfoDto = new PersonBasicInfoDto(); + PersonBasicInfo personBasicInfo = baseMapper.selectOne(Wrappers.<PersonBasicInfo>lambdaQuery().eq(PersonBasicInfo::getUserId, user.getId())); + if (ObjectUtils.isNotEmpty(personBasicInfo)) { + BeanUtils.copyProperties(personBasicInfo, personBasicInfoDto); + } + personBasicInfoDto.setName(user.getName()); + personBasicInfoDto.setAccount(user.getAccount()); + personBasicInfoDto.setPhone(ObjectUtils.isNotEmpty(user.getPhone()) ? user.getPhone() : " "); + data.add(personBasicInfoDto); + } + 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(PersonBasicInfoDto.class).build(); + excelWriter.write(data, mainSheet); + // 鍏抽棴娴� + excelWriter.finish(); + } catch (IOException e) { + throw new RuntimeException("瀵煎嚭澶辫触"); + } + } + + @Override + public String exportPersonBasicInfoById(Integer id, HttpServletResponse response) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"); + User user = userMapper.selectById(id); + PersonBasicInfo personBasicInfo = baseMapper.selectOne(Wrappers.<PersonBasicInfo>lambdaQuery().eq(PersonBasicInfo::getUserId, user.getId())); + if (ObjectUtils.isEmpty(personBasicInfo)){ + throw new ErrorException("璇ョ敤鎴风殑鍩烘湰淇℃伅娌℃湁褰曞叆,鏆傛棤娉曞鍑�"); + } + //璇佷欢 + List<Annex> annexList = annexMapper.selectList(Wrappers.<Annex>lambdaQuery().eq(Annex::getUserId, user.getId())); + //宸ヤ綔缁忓巻 + List<PersonTrackRecord> personTrackRecordList = personTrackRecordMapper.selectList(Wrappers.<PersonTrackRecord>lambdaQuery().eq(PersonTrackRecord::getUserId, user.getId())); + + List<RowRenderData> rows = new ArrayList<>(); + //琛ㄦ牸琛屾暟 + int hang = 10 + (Math.max(annexList.size() - 1, 0)) + (Math.max(personTrackRecordList.size()-1 , 0)); + for (int i = 0; i < hang; 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 < 6; 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("濮撳悕@Name"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1) { + //绗簩鍒� + textRenderData.setText(user.getName()); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2 || j==3) { + textRenderData.setText("鎬у埆@Gender 鈭�1"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText((ObjectUtils.isNotEmpty(personBasicInfo.getSex())?personBasicInfo.getSex():" ")+"鈭�2"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else if (i==1) { + //绗簩琛� + if (j==0) { + //绗竴鍒� + textRenderData.setText("骞撮緞@Age"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1) { + //绗簩鍒� + textRenderData.setText(ObjectUtils.isNotEmpty(user.getAge())?user.getAge()+"":" "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2 || j==3) { + textRenderData.setText("宸ヤ綔鏃堕棿@Working time 鈭�3"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText((ObjectUtils.isNotEmpty(personBasicInfo.getEntryTime())?personBasicInfo.getEntryTime():" ")+"鈭�4"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else if (i==2) { + //绗笁琛� + if (j==0) { + //绗竴鍒� + textRenderData.setText("鎵�瀛︿笓涓欯Majors studied"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1) { + //绗簩鍒� + textRenderData.setText(ObjectUtils.isNotEmpty(personBasicInfo.getMajor1())?personBasicInfo.getMajor1():" "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2 || j==3) { + textRenderData.setText("鏂囧寲绋嬪害@Education 鈭�5"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText((ObjectUtils.isNotEmpty(personBasicInfo.getOfficialAcademicRedentials())?personBasicInfo.getOfficialAcademicRedentials():" ")+"鈭�6"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else if (i==3) { + //绗洓琛� + if (j==0) { + //绗竴鍒� + textRenderData.setText("姣曚笟鏃堕棿@Graducation time"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1) { + //绗簩鍒� + textRenderData.setText(ObjectUtils.isNotEmpty(personBasicInfo.getGraduationTime1())?personBasicInfo.getGraduationTime1()+"":" "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2 || j==3) { + textRenderData.setText("姣曚笟瀛︽牎@Graduation school 鈭�7"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText((ObjectUtils.isNotEmpty(personBasicInfo.getGraduatedInstitutions1())?personBasicInfo.getGraduatedInstitutions1():" ")+"鈭�8"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else if (i==4){ + //绗簲琛� + if (j==0){ + //绗竴鍒� + textRenderData.setText("宀椾綅@Position"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText((ObjectUtils.isNotEmpty(personBasicInfo.getPost())?personBasicInfo.getPost()+"":" " )+"鈭�9"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else if (i==5){ + //绗叚琛� + textRenderData.setText("瀛﹀巻銆佹娴嬩笓涓氳祫鏍笺�佽亴绉拌瘉涔︾櫥璁拌〃@Education, testing professional qualifications, professional title certificate registration form 鈭�10"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (i==6){ + if (j==0){ + textRenderData.setText("璇佷欢鍙稝ID number"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1){ + textRenderData.setText("鍙戣瘉鍗曚綅@Issuing unit"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2){ + textRenderData.setText("绾у埆@Level"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==3){ + textRenderData.setText("鏈夋晥鏈烜Expiration date"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==4){ + textRenderData.setText("澶嶅嵃浠禓Copy"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText("鍘熶欢@Original"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else if (i==hang-1){ + //鏈�鍚庝竴琛� + if (j==0){ + textRenderData.setText("澶囨敞@Remark"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + textRenderData.setText((ObjectUtils.isNotEmpty(personBasicInfo.getRemarks())?personBasicInfo.getRemarks()+"":" " )+"鈭�11"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else { + if (annexList.size() == 0) { + if (i == 7) { + textRenderData.setText(" "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } else { + if (i >= 7 && i < 8 + (Math.max(annexList.size() - 1, 0))) { + if (j == 0) { + textRenderData.setText(ObjectUtils.isNotEmpty(annexList.get(i - 7).getIdNumber()) ? annexList.get(i - 7).getIdNumber() : " "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 1) { + textRenderData.setText(ObjectUtils.isNotEmpty(annexList.get(i - 7).getIssueUnit()) ? annexList.get(i - 7).getIssueUnit() : " "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 2) { + textRenderData.setText(ObjectUtils.isNotEmpty(annexList.get(i - 7).getLevel()) ? annexList.get(i - 7).getLevel() : " "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 3) { + textRenderData.setText(ObjectUtils.isNotEmpty(annexList.get(i - 7).getPeriodValidity()) ? annexList.get(i - 7).getPeriodValidity() : " "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 4) { + textRenderData.setText(ObjectUtils.isNotEmpty(annexList.get(i - 7).getCopy()) ? annexList.get(i - 7).getCopy() : " "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + textRenderData.setText(ObjectUtils.isNotEmpty(annexList.get(i - 7).getOriginal()) ? annexList.get(i - 7).getOriginal() : " "); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + } + if (personTrackRecordList.size() == 0) { + if (i == 8 + (Math.max(annexList.size() - 1, 0))) { + if (j == 0) { + textRenderData.setText("涓昏宸ヤ綔缁忓巻@Main work experience"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + textRenderData.setText(" 鈭�" + i + "5"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + } else { + if (i >= 8 + (Math.max(annexList.size() - 1, 0)) && i < hang - 1) { + if (j == 0) { + textRenderData.setText("涓昏宸ヤ綔缁忓巻@Main work experience 鈭�2"+j); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + String startTime = personTrackRecordList.get(i - (8 + (Math.max(annexList.size() - 1, 0)))).getStartTime().format(formatter); + String endTime="/"; + try{ + endTime = personTrackRecordList.get(i - (8 + (Math.max(annexList.size() - 1, 0)))).getEndTime().format(formatter); + }catch (Exception e){ + } + String placeWork = personTrackRecordList.get(i - (8 + (Math.max(annexList.size() - 1, 0)))).getPlaceWork(); + String department = personTrackRecordList.get(i - (8 + (Math.max(annexList.size() - 1, 0)))).getDepartment(); + String post = personTrackRecordList.get(i - (8 + (Math.max(annexList.size() - 1, 0)))).getPost(); + textRenderData.setText(startTime+"锛�"+endTime+"锛�"+placeWork+"锛�"+department+"锛�"+post+"鈭�" + i + "5"); + 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); + + InputStream inputStream = this.getClass().getResourceAsStream("/static/person-deal.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("createTime", user.getCreateTime().format(formatter)); + put("person", tableRenderData); + }}); + String name = UUID.randomUUID()+ user.getName()+ "_浜哄憳妗f鍗�" + ".docx"; + try { + template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); + } catch (IOException e) { + throw new RuntimeException(e); + } + String path = wordUrl + "/" + name; + // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 + try { + ZipSecureFile.setMinInflateRatio(0.0001); + FileInputStream stream = new FileInputStream(path); + XWPFDocument document = new XWPFDocument(stream); + List<XWPFTable> xwpfTables = document.getTables(); + for (int i = 0; i < xwpfTables.size(); i++) { + Set<String> set1 = new HashSet<>(); + Map<String, Map<String, Integer>> maps = new HashMap<>(); + for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) { + for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) { + if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("鈭�") > -1) { + String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�"); + if (set1.add(split[1])) { + Map<String, Integer> map = new HashMap<>(); + map.put("sr", j); + map.put("sc", k); + map.put("er", j + 0); + map.put("ec", k + 0); + maps.put(split[1], map); + } else { + Map<String, Integer> map1 = maps.get(split[1]); + if (j == map1.get("sr")) { + map1.put("ec", map1.get("ec") + 1); + } else if (k == map1.get("sc")) { + map1.put("er", map1.get("er") + 1); + } + } + String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�")[0]; + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str); + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER); + } + } + } + // 鍗曞厓鏍兼帓搴�, 閬垮厤鏍煎紡閿欎贡 + List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet()); + entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc")); + // 鎸夌収椤哄簭娣诲姞杩涢泦鍚� + List<String> list = new ArrayList<>(); + for (Map.Entry<String, Map<String, Integer>> entry : entries) { + list.add(entry.getKey()); + } + for (int a = list.size() - 1; a >= 0; a--) { + Map<String, Integer> v = maps.get(list.get(a)); + for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { + if (v.get("ec") > v.get("sc")) { + try { + mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); +// TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); + } catch (Exception e) { + } + } + } + if (v.get("er") > v.get("sr")) { + try { + mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); +// TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); + } catch (Exception e) { + } + } + } + } + FileOutputStream fileOutputStream = new FileOutputStream(path); + document.write(fileOutputStream); + fileOutputStream.close(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + //澶勭悊涓嫳鏂囨崲琛岀殑闂 + try { + FileInputStream stream1 = new FileInputStream(path); + XWPFDocument document1 = new XWPFDocument(stream1); + List<XWPFTable> xwpfTables1 = document1.getTables(); + for (int i = 0; i < xwpfTables1.size(); i++) { + for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { + for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { + if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { + String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); + String[] split = text.split("@"); + xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); + XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); + XWPFRun run = xwpfParagraph.createRun(); + run.setText(split[0]); + if (ObjectUtils.isNotNull(split[1])) { + run.addBreak(); + run.setText(split[1]); + } + xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); + } + } + } + } + FileOutputStream fileOutputStream1 = new FileOutputStream(path); + document1.write(fileOutputStream1); + fileOutputStream1.close(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + return name; + } + + /** + * 璁惧鏍″噯闄勪欢涓婁紶 + * @param file + * @param suffix + * @param id + */ + + @Override + public void saveDeviceCalibrationFile(MultipartFile file, String suffix, Integer id) { + String name = file.getOriginalFilename(); + UUID uuid = UUID.randomUUID(); + String fileName = uuid + name; + String path = ""; + // 鏍规嵁鍚庣紑鍒ゆ柇灞炰簬浠�涔堢被鍨� + if(suffix.toLowerCase().contains("xls")) { + path = excelUrl; + } else if (suffix.toLowerCase().contains("doc") || suffix.toLowerCase().contains("pdf")) { + path = wordUrl; + } else { + path = imgUrl; + } + File file1 = new File(path); + if(!file1.exists()) { + file1.mkdir(); + } + try { + File file2 = new File(file1, fileName); + file.transferTo(file2); + // 淇濆瓨鏁版嵁搴� + PersonTrainingFile personTrainingFile = new PersonTrainingFile(); + personTrainingFile.setDetailId(id); + personTrainingFile.setFileUrl("/" + fileName); + personTrainingFile.setFileName(file.getOriginalFilename()); + personTrainingFile.setCreateUser(SecurityUtils.getUserId().intValue()); + personTrainingFile.setCreateTime(LocalDateTime.now()); + personTrainingFile.setEnumAttachmentType(com.ruoyi.personnel.enumeration.AttachmentType.getTypeValue(1)); + fileMapper.insert(personTrainingFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 鏌ョ湅璁惧鏍″噯闄勪欢 + * @param id + * @return + */ + + + @Override + public List<PersonTrainingFile> getDeviceCalibrationFile(Integer id) { + List<PersonTrainingFile> personTrainingFiles = fileMapper.selectList(new LambdaQueryWrapper<PersonTrainingFile>() + .eq(PersonTrainingFile::getDetailId, id) + .eq(PersonTrainingFile::getEnumAttachmentType, com.ruoyi.personnel.enumeration.AttachmentType.getTypeValue(1))); + if(CollectionUtils.isNotEmpty(personTrainingFiles)) { + for(PersonTrainingFile a : personTrainingFiles) { + // 璁剧疆mime + int i = a.getFileUrl().lastIndexOf("."); + String contentType = getContentType(a.getFileUrl().substring(i + 1)); + a.setMime(contentType); + } + } + return personTrainingFiles; + } + + @Override + public void delDeviceCalibrationFile(Integer id) { + fileMapper.deleteById(id); + } + + @Override + public void downLoadDeviceCalibrationFile(Integer id, HttpServletResponse response) { + PersonTrainingFile personTrainingFile = fileMapper.selectById(id); + String fileName = personTrainingFile.getFileName(); + int i = fileName.lastIndexOf("."); + String suffix = fileName.substring(i); + String path = ""; + // 鏍规嵁鍚庣紑鑾峰彇鐩稿簲鐨勮矾寰� + if(suffix.toLowerCase().contains("xls")) { + path = excelUrl; + } else if (suffix.toLowerCase().contains("doc") || suffix.toLowerCase().contains("pdf")) { + path = wordUrl; + } else { + path = imgUrl; + } + path = path + personTrainingFile.getFileUrl(); + File file = new File(path); + try(FileInputStream fileInputStream = new FileInputStream(file); + ServletOutputStream outputStream = response.getOutputStream()) { + String contentType = getContentType(suffix); + // 璁剧疆鍝嶅簲澶� + response.setContentType(contentType); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + suffix); + byte[] bytes = new byte[1024]; + int len; + while ((len = fileInputStream.read(bytes)) != -1) { + outputStream.write(bytes,0,len); + outputStream.flush(); + } + }catch (Exception e) { + throw new ErrorException("涓嬭浇澶辫触"); + } + } + + @Override + public void getEmployees(Integer departId) { + List<Map> employees = headerToken.getEmployees(); + List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getStatus, 0) + .like(User::getDepartLimsId,String.valueOf(departId))); + if(CollectionUtils.isNotEmpty(users)) { + for (User user : users) { + if(CollectionUtils.isNotEmpty(employees)) { + for (Map map : employees) { + if(map.get("employeeID").toString().equals(user.getAccount())) { + employeeAddOrUpdate(map,user.getId()); + } + } + } + } + } + + + } + + @Override + public void getEmployee(Integer userId) { + User user = userMapper.selectById(userId); + Map employee = headerToken.getEmployee(user.getAccount()); + if(Objects.nonNull(user)) { + employeeAddOrUpdate(employee,user.getId()); + } + } + + + + public void employeeAddOrUpdate(Map map,Integer userId) { + PersonBasicInfo personBasicInfo = baseMapper.selectOne(new LambdaQueryWrapper<PersonBasicInfo>() + .eq(PersonBasicInfo::getUserId, userId)); + if(Objects.isNull(personBasicInfo)) { + personBasicInfo = new PersonBasicInfo(); + } + // 灏嗕负null鐨勫�兼敼涓�"" + map = updateMap(map); + + // 浜轰簨绯荤粺鏈寘鍚瓧娈� +// personBasicInfo.setEmergencyContactPhone(null); // 绱ф�ヨ仈绯讳汉鐢佃瘽 +// personBasicInfo.setLastUpdateTime(null); // 鏈�鍚庢洿鏂版椂闂� +// personBasicInfo.setCurrentState(""); // 褰撳墠鐘舵�� +// personBasicInfo.setCurrentPosition(""); // 褰撳墠鑱屽姟 +// personBasicInfo.setProfessionalTitle(""); //鑱岀О +// personBasicInfo.setPersonnelClassification(""); //浜哄憳鍒嗙被 +// personBasicInfo.setOfficialAcademicRedentials(""); // 鏈�楂樺鍘� +// personBasicInfo.setGraduationTime1(null); // 姣曚笟鏃堕棿 +// personBasicInfo.setGraduationTime2(null); // 姣曚笟鏃堕棿2 +// personBasicInfo.setGraduatedInstitutions2(""); // 姣曚笟闄㈡牎2 +// personBasicInfo.setMajor1(""); // 涓撲笟1 +// personBasicInfo.setMajor2(""); // 涓撲笟2 +// personBasicInfo.setEndPlannedInternship(null); // 璁″垝瀹炰範缁撴潫 +// personBasicInfo.setDesktopPicture(""); // 妗岄潰鍥剧墖 +// personBasicInfo.setAttachmentInformation(""); // 闄勪欢璧勬枡 +// personBasicInfo.setRemarks(""); // 澶囨敞 +// personBasicInfo.setPostType(""); // 宀椾綅绫诲埆 +// personBasicInfo.setCurrentAddress(""); // 鐜板眳浣忓湴鍧� +// personBasicInfo.setCurrentDetailAddress(""); // 鐜板眳浣忚缁嗗湴鍧� +// personBasicInfo.setServiceAddress(""); // 閫佽揪鍦板潃 +// personBasicInfo.setServiceDetailAddress(""); // 閫佽揪璇︾粏鍦板潃 +// personBasicInfo.setNcre(""); // 璁$畻鏈虹瓑绾� +// personBasicInfo.setHighestDegree(""); // 鏈�楂樺浣� +// personBasicInfo.setFullTime(null); // 鏄惁灞炰簬鍏ㄦ棩鍒� +// personBasicInfo.setEnroll(null); // 鏄惁灞炰簬涓ぉ + // 杩涜涓�涓祴鍊� + personBasicInfo.setUserId(userId); // 鐢ㄦ埛id + if(StringUtils.isNotEmpty(map.get("dateOfJoiningTheCompany").toString())) { + LocalDate parse = LocalDate.parse(map.get("dateOfJoiningTheCompany").toString()); + personBasicInfo.setEntryTime(parse); // 鍏ヨ亴鏃堕棿 + } + if(StringUtils.isNotEmpty(map.get("dateOfBirth").toString())) { + LocalDate parse1 = LocalDate.parse(map.get("dateOfBirth").toString()); + personBasicInfo.setDateBirth(parse1); //鍑虹敓鏃ユ湡 + } + if(StringUtils.isNotEmpty(map.get("dateOfConversionToFullTime").toString())) { + personBasicInfo.setEndPracticalPractice(LocalDate.parse(map.get("dateOfConversionToFullTime").toString())); // 瀹為檯瀹炰範缁撴潫 (杞鏃ユ湡) + } + if(StringUtils.isNotEmpty(map.get("dateOfResignation").toString())) { + personBasicInfo.setDateDeparture(LocalDate.parse(map.get("dateOfResignation").toString())); // 绂昏亴鏃ユ湡 + + } + if(StringUtils.isNotEmpty(map.get("dateOfJoiningTheGroup").toString())) { + personBasicInfo.setGroupTime(LocalDate.parse(map.get("dateOfJoiningTheGroup").toString())); // 鍏ラ泦鍥㈡椂闂� + } + + if(StringUtils.isNotEmpty(map.get("dateOfJoiningTheCompany").toString())) { + personBasicInfo.setTrialStartTime(LocalDate.parse(map.get("dateOfJoiningTheCompany").toString())); // 璇曠敤寮�濮嬫椂闂� 鍏ヨ亴鏃堕棿 + } + if(StringUtils.isNotEmpty(map.get("dateOfConversionToFullTime").toString())) { + personBasicInfo.setTrialEndTime(LocalDate.parse(map.get("dateOfConversionToFullTime").toString())); // 璇曠敤缁撴潫鏃堕棿 杞鏃堕棿 + } + if(StringUtils.isNotEmpty(map.get("idValidityPeriod").toString())) { + personBasicInfo.setValidityPeriod(LocalDate.parse(map.get("idValidityPeriod").toString())); // 璇佷欢鏈夋晥鏈� + } + if(StringUtils.isNotEmpty(map.get("dateOfJoiningTheCommunistPartyOrCommunistYouthLeague").toString())) { + personBasicInfo.setDumplingTime(LocalDate.parse(map.get("dateOfJoiningTheCommunistPartyOrCommunistYouthLeague").toString())); // 鍏ュ厷/鍥㈡椂闂� + } + if(StringUtils.isNotEmpty(map.get("dateOfJoiningTheCompany").toString())) { + personBasicInfo.setUnitTime(LocalDate.parse(map.get("dateOfJoiningTheCompany").toString())); // 鍏ュ崟浣嶆椂闂� + } + + personBasicInfo.setDepartmentCode(map.get("departmentCode").toString()); // 閮ㄩ棬缂栧彿 + personBasicInfo.setPost(map.get("position").toString()); // 宀椾綅 + personBasicInfo.setSex(map.get("gender").toString()); //鎬у埆 + personBasicInfo.setIdentityCard(map.get("idNumber").toString()); // 韬唤璇佸彿鐮� + personBasicInfo.setNation(map.get("nation").toString()); // 姘戞棌 + personBasicInfo.setPoliticalStatus(map.get("politicalAffiliation").toString()); // 鏀挎不闈㈣矊 + personBasicInfo.setGraduatedInstitutions1(""); // 姣曚笟闄㈡牎1 + personBasicInfo.setTelephone(map.get("phoneNumber").toString()); // 鎵嬫満鍙风爜 + + personBasicInfo.setJobNumber(map.get("employeeID").toString()); // 宸ュ彿 浜哄憳缂栧彿 + personBasicInfo.setSubordinateNumber(map.get("employeeSubID").toString()); // 鍛樺伐瀛愮紪鍙� + personBasicInfo.setCorporateName(map.get("companyId").toString()); // 鍏徃鍚嶇О 鎵�灞炵粍缁囩紪鐮� + personBasicInfo.setPostCode(map.get("positionCode").toString()); // 宀椾綅缂栧彿 + personBasicInfo.setPostName(map.get("position").toString()); // 宀椾綅鍚嶇О + personBasicInfo.setReportingTo(map.get("directSupervisorID").toString()); // 鐩存帴涓婄骇 + personBasicInfo.setLaborRelations(map.get("employmentStatus").toString()); // 鍔冲姩鍏崇郴 + + personBasicInfo.setNativePlace(map.get("hometown").toString()); // 绫嶈疮 + personBasicInfo.setIdType(map.get("idType").toString()); // 璇佷欢绫诲瀷 + personBasicInfo.setMaritalStatus(map.get("maritalStatus").toString()); // 濠氬Щ鐘跺喌 + personBasicInfo.setIdAddress(map.get("idAddress").toString()); // 璇佷欢鍦板潃 + personBasicInfo.setIdDetailAddress(map.get("detailedResidentialAddress").toString()); // 韬唤璇佽缁嗗湴鍧� + personBasicInfo.setRetiredSoldiers(map.get("militaryServiceStatus").toString()); // 鏄惁鏄��浼嶅啗浜� + personBasicInfo.setCornet(map.get("shortPhoneNumber").toString()); // 鐭彿 + personBasicInfo.setOfficePhone(map.get("officePhone").toString()); // 鍔炲叕鐢佃瘽 + + + personBasicInfo.setCollegeStudents(map.get("yearOfGraduation").toString()); // xxx灞婂ぇ瀛︾敓 + personBasicInfo.setEmergencyContact(map.get("emergencyContactName").toString()); // 绱ф�ヨ仈绯讳汉 + personBasicInfo.setCompanyEmail(map.get("companyEmail").toString()); // 鍏徃閭 + + if(Objects.nonNull(personBasicInfo.getDateBirth())) { + Period period = Period.between(personBasicInfo.getDateBirth(), LocalDate.now()); + int years = period.getYears(); + personBasicInfo.setPersonBasicInfoAge(years); + } + + + if(Objects.isNull(personBasicInfo.getId()) ) { + log.info("鏂板"); + baseMapper.insert(personBasicInfo); + }else { + log.info("鏇存柊"); + baseMapper.updateById(personBasicInfo); + } + + } + + public Map updateMap(Map<String,Object> map) { + Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry<String, Object> entry = iterator.next(); + if(Objects.isNull(entry.getValue()) || entry.getValue().equals("null")) { + entry.setValue(""); + } + } + return map; + } + + /** + * 閫掑綊鏌ヨ瀛愯妭鐐� + * @param root 鏍硅妭鐐� + * @param all 鎵�鏈夎妭鐐� + * @return 鏍硅妭鐐逛俊鎭� + */ + private List<DepartmentDto> getChildren(DepartmentDto root, List<DepartmentDto> all) { + if (ObjectUtils.isNotEmpty(root.getId())) { + return all.stream().filter(m -> Objects.equals(m.getFatherId(), root.getId())).peek( + (m) -> m.setChildren(getChildren(m, all)) + ).collect(Collectors.toList()); + } else { + return Collections.emptyList(); + } + } + + // 姘村钩鍚堝苟鍗曞厓鏍� + 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); + } + } + } + // 鏍规嵁鏂囦欢鎵╁睍鍚嶈幏鍙� MIME 绫诲瀷 + private String getContentType(String fileExtension) { + switch (fileExtension) { + case "jpg": + case "jpeg": + return "image/jpeg"; + case "png": + return "image/png"; + case "gif": + return "image/gif"; + case "pdf": + return "application/pdf"; + case "doc": + return "application/msword"; + case "docx": + return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + case "xls": + return "application/vnd.ms-excel"; + case "xlsx": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case "ppt": + case "pptx": + return "application/vnd.ms-powerpoint"; + default: + return "application/octet-stream"; // 榛樿浜岃繘鍒舵祦 + } + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java new file mode 100644 index 0000000..8593b42 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonCommunicationAbilityServiceImpl.java @@ -0,0 +1,113 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.personnel.dto.PersonCommunicationAbilityDto; +import com.ruoyi.personnel.mapper.PersonCommunicationAbilityMapper; +import com.ruoyi.personnel.pojo.PersonCommunicationAbility; +import com.ruoyi.personnel.service.PersonCommunicationAbilityService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * <p> + * 娌熼�氳兘鍔� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 12:00:57 + */ +@Service +public class PersonCommunicationAbilityServiceImpl extends ServiceImpl<PersonCommunicationAbilityMapper, PersonCommunicationAbility> implements PersonCommunicationAbilityService { + + @Resource + UserMapper userMapper; + + @Override + public IPage<PersonCommunicationAbilityDto> personPersonCommunicationAbilityPage(Page page, Integer departLimsId, Integer userId, String userName) { + IPage<PersonCommunicationAbilityDto> personCommunicationAbilityDtoIPage = baseMapper.personPersonCommunicationAbilityPage(page, departLimsId, userId, userName); + List<PersonCommunicationAbilityDto> collect = personCommunicationAbilityDtoIPage.getRecords().stream().map(personCommunicationAbilityDto -> { + if (ObjectUtils.isNotEmpty(personCommunicationAbilityDto.getUserId())) { + List<String> account = new ArrayList<>(); + List<String> name = new ArrayList<>(); + for (String s : personCommunicationAbilityDto.getUserId().split(",")) { + User user = userMapper.selectById(Integer.parseInt(s)); + account.add(user.getAccount()); + name.add(user.getName()); + } + personCommunicationAbilityDto.setAccount(account.stream().collect(Collectors.joining(","))); + personCommunicationAbilityDto.setUserName(name.stream().collect(Collectors.joining(","))); + } + return personCommunicationAbilityDto; // 杩欓噷鍙互瀵硅繑鍥炵殑鏁版嵁杩涜澶勭悊锛屽娣诲姞涓�浜涙柊鐨勫睘鎬ф垨杞崲绛夈�� + }).collect(Collectors.toList()); + personCommunicationAbilityDtoIPage.setRecords(collect); + return personCommunicationAbilityDtoIPage; + } + + @Override + public void exportPersonCommunicationAbility(Integer id, HttpServletResponse response) throws Exception { + PersonCommunicationAbility personCommunicationAbility = baseMapper.selectById(id); + //娌熼�氫汉 + String collect = " "; + if (ObjectUtils.isNotEmpty(personCommunicationAbility.getUserId())) { + List<String> name = new ArrayList<>(); + for (String s : personCommunicationAbility.getUserId().split(",")) { + User user = userMapper.selectById(Integer.parseInt(s)); + name.add(user.getName()); + } + collect = name.stream().collect(Collectors.joining(",")); + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"); + + //鏃堕棿 + String communicationTime = ""; + if (ObjectUtils.isNotEmpty(personCommunicationAbility.getCommunicationTime())) { + communicationTime = personCommunicationAbility.getCommunicationTime().format(formatter); + } + + InputStream inputStream = this.getClass().getResourceAsStream("/static/communication-deal.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String finalCollect = collect; + String finalCommunicationTime = communicationTime; + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("userName", finalCollect); + put("communicationTime", finalCommunicationTime); + put("communicationPlace", personCommunicationAbility.getCommunicationPlace()); + put("communicationContent", personCommunicationAbility.getCommunicationContent()); + }}); + + 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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java new file mode 100644 index 0000000..4fd2df2 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonJobResponsibilitiesServiceImpl.java @@ -0,0 +1,114 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.personnel.dto.PersonJobResponsibilitiesDto; +import com.ruoyi.personnel.mapper.PersonJobResponsibilitiesMapper; +import com.ruoyi.personnel.pojo.PersonJobResponsibilities; +import com.ruoyi.personnel.service.PersonJobResponsibilitiesService; +import com.ruoyi.system.mapper.UserMapper; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; + +/** + * <p> + * 宀椾綅鑱岃矗 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 02:07:49 + */ +@Service +@AllArgsConstructor +public class PersonJobResponsibilitiesServiceImpl extends ServiceImpl<PersonJobResponsibilitiesMapper, PersonJobResponsibilities> implements PersonJobResponsibilitiesService { + + @Resource + UserMapper userMapper; + + + + @Override + public IPage<PersonJobResponsibilitiesDto> personJobResponsibilitiesSelect(Page page, String userId, String departmentId, String userName) { + return baseMapper.personJobResponsibilitiesSelect(page, userId, departmentId, userName); + } + + @Override + public void exportPersonJobResponsibilities(Integer id, HttpServletResponse response) { + PersonJobResponsibilities personJobResponsibilities = baseMapper.selectById(id); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"); + //宀椾綅鍚嶇О + String name = personJobResponsibilities.getPostName(); + //鎵�灞為儴闂� + String departLims = userMapper.selectUserDepartmentLimsName(Integer.parseInt(personJobResponsibilities.getIncumbentId())); + //宸ヤ綔鐩爣 + String objective = personJobResponsibilities.getJobObjective(); + //宀椾綅鑱岃矗 + String responsibilities = personJobResponsibilities.getJobResponsibilities(); + //浠昏亴浜� + User user = userMapper.selectById(Integer.parseInt(personJobResponsibilities.getIncumbentId())); + String incumbent = user.getName(); + //浠昏亴鏃堕棿 + String incumbentDate = ""; + if (ObjectUtils.isNotEmpty(personJobResponsibilities.getIncumbentDate())) { + incumbentDate = personJobResponsibilities.getIncumbentDate().format(formatter); + } + //涓荤 + String supervisor = ""; + if (ObjectUtils.isNotEmpty(personJobResponsibilities.getSupervisorId())) { + supervisor = userMapper.selectById(personJobResponsibilities.getSupervisorId()).getName(); + } + //涓荤鏃堕棿 + String supervisorDate = ""; + if (ObjectUtils.isNotEmpty(personJobResponsibilities.getSupervisorDate())) { + supervisorDate = personJobResponsibilities.getSupervisorDate().format(formatter); + } + + InputStream inputStream = this.getClass().getResourceAsStream("/static/explain-deal.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String finalIncumbentDate = incumbentDate; + String finalSupervisor = supervisor; + String finalSupervisorDate = supervisorDate; + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("name", name); + put("account", user.getAccount()); + put("departLims", departLims); + put("objective", objective); + put("responsibilities", responsibilities); + put("incumbent", incumbent); + put("incumbentDate", finalIncumbentDate); + put("supervisor", finalSupervisor); + put("supervisorDate", finalSupervisorDate); + }}); + + try { + response.setContentType("application/msword"); + String fileName = URLEncoder.encode( + name + "鐨勪换鑱屽矖浣嶈鏄庝功", "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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java new file mode 100644 index 0000000..67c6f14 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java @@ -0,0 +1,121 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.common.utils.DateImageUtil; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityDto; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto; +import com.ruoyi.personnel.mapper.PersonPersonnelCapacityMapper; +import com.ruoyi.personnel.pojo.PersonPersonnelCapacity; +import com.ruoyi.personnel.service.PersonPersonnelCapacityService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.util.HashMap; + +/** + * <p> + * 浜哄憳鑳藉姏 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 11:26:18 + */ +@Service +public class PersonPersonnelCapacityServiceImpl extends ServiceImpl<PersonPersonnelCapacityMapper, PersonPersonnelCapacity> implements PersonPersonnelCapacityService { + + @Resource + private UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + @Override + public IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName) { + return baseMapper.personPersonnelCapacityPage(page, departLimsId, userId, userName); + } + + /** + * 瀵煎嚭浜哄憳鑳藉姏 + * @param id + * @param response + */ + @Override + public void exportPersonnelCapacity(Integer id, HttpServletResponse response) { + PersonPersonnelCapacityExportDto capacityExportDto = baseMapper.selectExportPersonnelCapacity(id); + + // 纭浜� + String confirmUrl = null; + if (capacityExportDto.getConfirmOperatingPersonnelId() != null) { + confirmUrl = userMapper.selectById(capacityExportDto.getConfirmOperatingPersonnelId()).getSignatureUrl(); + if (StringUtils.isBlank(confirmUrl)) { + throw new ErrorException("纭浜�"); + } + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/personnel-capacity.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String finalConfirmUrl = confirmUrl; + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("capacity", capacityExportDto); + put("confirmUrl", StringUtils.isNotBlank(finalConfirmUrl) ? Pictures.ofLocal(imgUrl + "/" + finalConfirmUrl).create() : null); + put("confirmDateUrl", capacityExportDto.getConfirmDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(capacityExportDto.getConfirmDate())).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 id + * @return + */ + @Override + public boolean confirmPersonnelCapacity(Integer id) { + // 鏌ヨ浜哄憳鑳藉姏 + PersonPersonnelCapacity personPersonnelCapacity = baseMapper.selectById(id); + if (personPersonnelCapacity.getConfirmOperatingPersonnelId() != null) { + throw new ErrorException("璇ヤ汉鍛樿兘鍔涘凡纭杩�, 鏃犻渶閲嶅纭"); + } + Integer userId = SecurityUtils.getUserId().intValue(); + baseMapper.update(null, Wrappers.<PersonPersonnelCapacity>lambdaUpdate() + .eq(PersonPersonnelCapacity::getId, id) + .set(PersonPersonnelCapacity::getConfirmOperatingPersonnelId, userId) + .set(PersonPersonnelCapacity::getConfirmDate, LocalDateTime.now())); + + return true; + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java new file mode 100644 index 0000000..a12c813 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java @@ -0,0 +1,136 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.FilePictureRenderData; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonPostAuthorizationRecordDto; +import com.ruoyi.personnel.mapper.PersonPostAuthorizationRecordMapper; +import com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord; +import com.ruoyi.personnel.service.PersonPostAuthorizationRecordService; +import com.ruoyi.system.mapper.UserMapper; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; +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.util.HashMap; + +/** + * <p> + * 浠昏亴鎺堟潈璁板綍 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 10:48:17 + */ +@Service +public class PersonPostAuthorizationRecordServiceImpl extends ServiceImpl<PersonPostAuthorizationRecordMapper, PersonPostAuthorizationRecord> implements PersonPostAuthorizationRecordService { + + @Resource + UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + @Override + public IPage<PersonPostAuthorizationRecordDto> personPostAuthorizationRecordPage(Page page, Integer departLimsId, Integer userId, String userName) { + return baseMapper.personPostAuthorizationRecordPage(page, departLimsId, userId, userName); + } + + @Override + public void exportPersonPostAuthorizationRecord(Integer id, HttpServletResponse response) { + PersonPostAuthorizationRecord personPostAuthorizationRecord = baseMapper.selectById(id); + //濮撳悕 + User user = userMapper.selectById(personPostAuthorizationRecord.getUserId()); + String name = user.getName(); + //濮撳悕鑻辨枃 + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + StringBuilder pinyinBuilder = new StringBuilder(); + for (int i = 0; i < name.length(); i++) { + char c = name.charAt(i); + // 鍒ゆ柇鏄惁鏄眽瀛� + if (Character.toString(c).matches("[\\u4E00-\\u9FFF]")) { + // 鑾峰彇姹夊瓧鐨勬嫾闊虫暟缁� + String[] pinyinArray = new String[0]; + try { + pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); + } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { + + } + if (pinyinArray!= null && pinyinArray.length > 0) { + pinyinBuilder.append(pinyinArray[0]); + } + } else { + pinyinBuilder.append(c); + } + } + String nameEn = pinyinBuilder.toString(); + //鐞嗚鐭ヨ瘑鑰冭瘯鎴愮哗 + String num1=personPostAuthorizationRecord.getNum1(); + //鎿嶄綔鎶�鑳借�冭瘯鎴愮哗 + String num2=personPostAuthorizationRecord.getNum2(); + //璇佷功缂栧彿 + String code = personPostAuthorizationRecord.getCertificateNumber(); + //鍙戣瘉鏃堕棿 + LocalDateTime createTime = personPostAuthorizationRecord.getCreateTime(); + String year = createTime.getYear() + ""; + String mon = createTime.getMonth().getValue() + ""; + String day = createTime.getDayOfMonth() + ""; + //涓汉鐓х墖 + if (ObjectUtils.isEmpty(user.getPictureUrl())) { + throw new ErrorException(name+"鐨勪釜浜虹収鐗囨病鏈変笂浼�"); + } + String pictureUrl = user.getPictureUrl(); + + + InputStream inputStream = this.getClass().getResourceAsStream("/static/credentials-deal.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("name", name); + put("nameEn", nameEn); + put("num1", num1); + put("num2", num2); + put("code", code); + put("year", year); + put("mon", mon); + put("day", day); + put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + pictureUrl)); + }}); + + try { + response.setContentType("application/msword"); + String fileName = URLEncoder.encode( + name+"鐨勫矖浣嶈亴涓氳祫鏍兼寮�", "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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonRewardPunishmentRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonRewardPunishmentRecordServiceImpl.java new file mode 100644 index 0000000..9393bbd --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonRewardPunishmentRecordServiceImpl.java @@ -0,0 +1,36 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.personnel.dto.PersonRewardPunishmentRecordDto; +import com.ruoyi.personnel.excel.PersonRewardPunishmentRecordExcel; +import com.ruoyi.personnel.mapper.PersonRewardPunishmentRecordMapper; +import com.ruoyi.personnel.pojo.PersonRewardPunishmentRecord; +import com.ruoyi.personnel.service.PersonRewardPunishmentRecordService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * <p> + * 濂栨儵璁板綍 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-08 11:25:02 + */ +@Service +public class PersonRewardPunishmentRecordServiceImpl extends ServiceImpl<PersonRewardPunishmentRecordMapper, PersonRewardPunishmentRecord> implements PersonRewardPunishmentRecordService { + + @Override + public IPage<PersonRewardPunishmentRecordDto> rewardPunishmentPage(Page page, Integer userId, String userName, Date startTime, Date endTime, Integer departmentId) { + return baseMapper.rewardPunishmentPage(page, userId, userName, startTime, endTime, departmentId); + } + + @Override + public List<PersonRewardPunishmentRecordExcel> rewardPunishmentExport(Integer userId, Integer departmentId, String userName, Date startTime, Date endTime) { + return baseMapper.rewardPunishmentExport(userId, departmentId, userName, startTime, endTime); + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanDetailsServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanDetailsServiceImpl.java new file mode 100644 index 0000000..d164607 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanDetailsServiceImpl.java @@ -0,0 +1,43 @@ +package com.ruoyi.personnel.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.personnel.dto.PersonSupervisePlanDetailsDto; +import com.ruoyi.personnel.excel.PersonSupervisePlanDetailsUpload; +import com.ruoyi.personnel.mapper.PersonSupervisePlanDetailsMapper; +import com.ruoyi.personnel.pojo.PersonSupervisePlanDetails; +import com.ruoyi.personnel.service.PersonSupervisePlanDetailsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * <p> + * 鐩戠潱璁″垝 - 瀛� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:17:02 + */ +@Service +public class PersonSupervisePlanDetailsServiceImpl extends ServiceImpl<PersonSupervisePlanDetailsMapper, PersonSupervisePlanDetails> implements PersonSupervisePlanDetailsService { + + + public IPage<PersonSupervisePlanDetailsDto> yearPlanDetailPage(Page page, String date, String project, Integer planId) { + IPage<PersonSupervisePlanDetailsDto> personSupervisePlanDetailsDtoIPage = baseMapper.pageByDate(page, date, project, planId); + return personSupervisePlanDetailsDtoIPage; + } + + @Override + public void importExcel(List<PersonSupervisePlanDetailsUpload> list, Integer planId) { + List<PersonSupervisePlanDetails> personSupervisePlanDetailsList = JSON.parseArray(JSON.toJSONString(list), PersonSupervisePlanDetails.class); + personSupervisePlanDetailsList.forEach(i -> i.setPlanId(planId)); + if (CollectionUtils.isNotEmpty(personSupervisePlanDetailsList)) { + baseMapper.insertBatchSomeColumn(personSupervisePlanDetailsList); + } + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanServiceImpl.java new file mode 100644 index 0000000..21f2260 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisePlanServiceImpl.java @@ -0,0 +1,327 @@ +package com.ruoyi.personnel.service.impl; + +import cn.hutool.core.util.NumberUtil; +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.DateImageUtil; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import com.ruoyi.personnel.dto.PersonSupervisePlanDto; +import com.ruoyi.personnel.excel.PersonSupervisePlanDetailsListener; +import com.ruoyi.personnel.excel.PersonSupervisePlanDetailsUpload; +import com.ruoyi.personnel.mapper.PersonSupervisePlanDetailsMapper; +import com.ruoyi.personnel.mapper.PersonSupervisePlanMapper; +import com.ruoyi.personnel.mapper.PersonSupervisionRecordMapper; +import com.ruoyi.personnel.pojo.PersonSupervisePlan; +import com.ruoyi.personnel.pojo.PersonSupervisePlanDetails; +import com.ruoyi.personnel.pojo.PersonSupervisionRecord; +import com.ruoyi.personnel.service.PersonSupervisePlanDetailsService; +import com.ruoyi.personnel.service.PersonSupervisePlanService; +import com.ruoyi.system.mapper.UserMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.usermodel.*; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.springframework.beans.factory.annotation.Autowired; +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 org.apache.poi.xwpf.usermodel.XWPFDocument; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 鐩戠潱璁″垝 - 鐖� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-09 04:14:45 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +@AllArgsConstructor +public class PersonSupervisePlanServiceImpl extends ServiceImpl<PersonSupervisePlanMapper, PersonSupervisePlan> implements PersonSupervisePlanService { + + private PersonSupervisePlanDetailsService personSupervisePlanDetailsService; + + private PersonSupervisePlanDetailsMapper personSupervisePlanDetailsMapper; + + private PersonSupervisionRecordMapper personSupervisionRecordMapper; + + @Value("${file.path}") + private String imgUrl; + + @Autowired + private UserMapper userMapper; + + public IPage<PersonSupervisePlanDto> yearPlanDtoIPage(Page page, String organizationPerson, Integer departId) { + IPage<PersonSupervisePlanDto> personSupervisePlanDtoIPage = baseMapper.pageByPerson(page, organizationPerson, departId); + List<PersonSupervisePlanDto> records = personSupervisePlanDtoIPage.getRecords(); + for(PersonSupervisePlanDto a : records) { + a.setCurrentId(SecurityUtils.getUserId().intValue()); + } + return personSupervisePlanDtoIPage; + } + + @Override + public void yearPlanDetailImport(MultipartFile file ,String suffix) { + // 骞村害璁″垝鐖剁骇鏂板鏁版嵁 + PersonSupervisePlan personSupervisePlan = new PersonSupervisePlan(); + String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")); + personSupervisePlan.setFileName(fileName); + personSupervisePlan.setOrganizationPersonId(SecurityUtils.getUserId().intValue()); + personSupervisePlan.setOrganizationDate(LocalDateTime.now()); + baseMapper.insert(personSupervisePlan); + List<List<String>> tableData = new ArrayList<>(); + String name = ""; + // 骞村害璁″垝璇︽儏 鏂板 + try { + if(suffix.toLowerCase().contains("xls")) { + PersonSupervisePlanDetailsListener personSupervisePlanDetailsListener = new PersonSupervisePlanDetailsListener(personSupervisePlanDetailsService); + personSupervisePlanDetailsListener.setPlanId(personSupervisePlan.getId()); + EasyExcel.read(file.getInputStream(), PersonSupervisePlanDetailsUpload.class, personSupervisePlanDetailsListener).sheet().doRead(); + }else if(suffix.toLowerCase().equals("doc")) { + try(InputStream inputStream = file.getInputStream(); + HWPFDocument doc = new HWPFDocument(inputStream)) { + // 鑾峰彇鏂囨。鐨� Range + Range range = doc.getRange(); + // 閬嶅巻鎵�鏈夎〃鏍� + TableIterator tableIterator = new TableIterator(range); + while (tableIterator.hasNext()) { + Table table = tableIterator.next(); + // 閬嶅巻琛ㄦ牸鐨勬瘡涓�琛� + for (int rowIdx = 0; rowIdx < table.numRows(); rowIdx++) { + TableRow row = table.getRow(rowIdx); + List<String> rowData = new ArrayList<>(); + + // 閬嶅巻琛屼腑鐨勬瘡涓崟鍏冩牸 + for (int cellIdx = 0; cellIdx < row.numCells(); cellIdx++) { + TableCell cell = row.getCell(cellIdx); + String text = cell.text().trim(); + rowData.add(text); + } + tableData.add(rowData); + } + } + for (List<String> list : tableData) { + // 杩涜娣诲姞 + addPersonSupervisePlanDetails(list,personSupervisePlan.getId()); + if(StringUtils.isEmpty(name) && NumberUtil.isInteger(list.get(0))) { + String supervisePerson = list.get(4); // 琚洃鐫d汉鍛� + name = supervisePerson; + } + } + // 鏍规嵁娣诲姞鏁版嵁琚洃鐫d汉 鏉ュ垽鏂鏂囦欢鏄摢涓儴闂ㄧ殑 + String departLimsId = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName, name)).get(0).getDepartLimsId(); + if(StringUtils.isNotEmpty(departLimsId) && departLimsId.contains("18")) { + baseMapper.update(null,new LambdaUpdateWrapper<PersonSupervisePlan>() + .set(PersonSupervisePlan::getDepartId,18) + .set(PersonSupervisePlan::getOrganizationPersonId,12) // 閫氫俊鐨勬槸鍒樻櫒 锛堢紪鍒朵汉锛� + .eq(PersonSupervisePlan::getId,personSupervisePlan.getId())); + } else if (StringUtils.isNotEmpty(departLimsId) && departLimsId.contains("19")) { + baseMapper.update(null,new LambdaUpdateWrapper<PersonSupervisePlan>() + .set(PersonSupervisePlan::getDepartId,19) + .set(PersonSupervisePlan::getOrganizationPersonId,41) // 鐢靛姏鐨勬槸鍚存槑鍗� 锛堢紪鍒朵汉锛� + .eq(PersonSupervisePlan::getId,personSupervisePlan.getId())); + } + + log.info("璇诲彇鏂囦欢锛� {}",tableData); + }catch (Exception e) { + throw new ErrorException("瀵煎叆澶辫触"+ e); + } + }else if(suffix.toLowerCase().equals("docx")) { + try(InputStream fileInputStream = file.getInputStream();XWPFDocument xwpfDocument = new XWPFDocument(fileInputStream)) { + + // 閬嶅巻鎵�鏈夎〃鏍� + for(XWPFTable table : xwpfDocument.getTables()) { + // 閬嶅巻姣忎竴琛� + for(XWPFTableRow row : table.getRows()) { + List<String> list = new ArrayList<>(); + // 閬嶅巻姣忎竴涓崟鍏冩牸 + for(XWPFTableCell cell : row.getTableCells()) { + String text = cell.getText(); + list.add(text); + } + log.info("璇诲彇姣忎竴琛岀殑鍐呭锛� {}",list); + // 杩涜娣诲姞 + addPersonSupervisePlanDetails(list,personSupervisePlan.getId()); + if(StringUtils.isEmpty(name) && NumberUtil.isInteger(list.get(0))) { + String supervisePerson = list.get(4); // 琚洃鐫d汉鍛� + name = supervisePerson; + } + } + } + // 鏍规嵁娣诲姞鏁版嵁琚洃鐫d汉 鏉ュ垽鏂鏂囦欢鏄摢涓儴闂ㄧ殑 + String departLimsId = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName, name)).get(0).getDepartLimsId(); + if(StringUtils.isNotEmpty(departLimsId) && departLimsId.contains("18")) { + baseMapper.update(null,new LambdaUpdateWrapper<PersonSupervisePlan>() + .set(PersonSupervisePlan::getDepartId,18) + .eq(PersonSupervisePlan::getId,personSupervisePlan.getId())); + } else if (StringUtils.isNotEmpty(departLimsId) && departLimsId.contains("19")) { + baseMapper.update(null,new LambdaUpdateWrapper<PersonSupervisePlan>() + .set(PersonSupervisePlan::getDepartId,18) + .eq(PersonSupervisePlan::getId,personSupervisePlan.getId())); + } + }catch (Exception e){ + throw new ErrorException("瀵煎叆澶辫触"+e); + } + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void addPersonSupervisePlanDetails(List<String> list,Integer planId) { + if(NumberUtil.isInteger(list.get(0)) ) { + String superviseDate = list.get(1); // 鐩戠潱鏃ユ湡 + String superviseDes = list.get(2); // 鐩戠潱鐩殑 + String superviseProject = list.get(3); // 鐩戠潱椤圭洰 + String supervisePerson = list.get(4); // 琚洃鐫d汉鍛� + String superviseReason = list.get(5); // 鐩戠潱鍘熷洜 + String remarks = list.get(6); // 澶囨敞 + PersonSupervisePlanDetails personSupervisePlanDetails = new PersonSupervisePlanDetails(); + LocalDate localDate = null; + String[] parts = superviseDate.split("\\."); + if (parts.length == 2) { + try { + // 鑾峰彇骞翠唤 + int year = Integer.parseInt(parts[0]); + // 鑾峰彇鏈堜唤 + int month = Integer.parseInt(parts[1]); + // 鍒涘缓 LocalDate 瀵硅薄锛屾棩鏈熻涓鸿鏈堢涓�澶� + localDate = LocalDate.of(year, month, 1); + } catch (NumberFormatException e) { + throw new ErrorException("杈撳叆鐨勫瓧绗︿覆鏃犳硶杞崲涓烘湁鏁堢殑骞翠唤鎴栨湀浠�: " + e.getMessage()); + } + } + personSupervisePlanDetails.setSuperviseDate(localDate); + personSupervisePlanDetails.setSuperviseDes(superviseDes); + personSupervisePlanDetails.setSuperviseProject(superviseProject); + personSupervisePlanDetails.setSupervisePerson(supervisePerson); + personSupervisePlanDetails.setSuperviseReason(superviseReason); + personSupervisePlanDetails.setRemarks(remarks); + personSupervisePlanDetails.setPlanId(planId); // 鐖秈d + personSupervisePlanDetailsMapper.insert(personSupervisePlanDetails); + } + } + + + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁″垝 + * @param id + * @param response + */ + @Override + public void exportSuperVisePlan(Integer id, HttpServletResponse response) { + Map<String, Object> data = new HashMap<>(); + data.put("year",""); + data.put("supervisor",""); + // 鏌ヨ璇︽儏 + PersonSupervisePlan personSupervisePlan = baseMapper.selectById(id); + + + //鑾峰彇鎻愪氦浜虹殑绛惧悕鍦板潃 + String organizationUrl = userMapper.selectById(personSupervisePlan.getOrganizationPersonId()).getSignatureUrl(); + if (StringUtils.isBlank(organizationUrl)) { + throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); + } + + //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃 + String approvalUrl = null; + if (personSupervisePlan.getApprovalId() != null) { + approvalUrl = userMapper.selectById(personSupervisePlan.getApprovalId()).getSignatureUrl(); + if (StringUtils.isBlank(approvalUrl)) { + throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�"); + } + } + + // 鏌ヨ璇︽儏 + List<PersonSupervisePlanDetails> detailedDtos = personSupervisePlanDetailsService.list(Wrappers.<PersonSupervisePlanDetails>lambdaQuery() + .eq(PersonSupervisePlanDetails::getPlanId, id)); + + + // 鏌ヨ鐩戠潱璁板綍 + List<PersonSupervisionRecord> personSupervisionRecords = personSupervisionRecordMapper.selectList(new LambdaQueryWrapper<PersonSupervisionRecord>() + .orderByAsc(PersonSupervisionRecord::getId)); + if(CollectionUtils.isNotEmpty(personSupervisionRecords)) { + Integer supervisorId = personSupervisionRecords.get(0).getSupervisorId(); + String name = userMapper.selectById(supervisorId).getName(); + data.put("supervisor",name); + } + + + int index = 1; + for (PersonSupervisePlanDetails detailedDto : detailedDtos) { + detailedDto.setIndex(index); + index++; + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String format = detailedDto.getSuperviseDate().format(dateTimeFormatter); + detailedDto.setSuperviseDateString(format); + int year = detailedDto.getSuperviseDate().getYear(); + data.put("year",year); + } + System.out.println("data: " + data); + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/super-vise-plan.docx"); + Configure configure = Configure.builder() + .bind("supervisePlanDetailsList", new HackLoopTableRenderPolicy()) + .build(); + String finalApprovalUrl = approvalUrl; + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("data",data); + put("supervisePlanDetailsList", detailedDtos); + put("organizationUrl", StringUtils.isNotBlank(organizationUrl) ? Pictures.ofLocal(imgUrl + "/" + organizationUrl).create() : null); + put("approvalUrl", StringUtils.isNotBlank(finalApprovalUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApprovalUrl).create() : null); + put("writeDateUrl", personSupervisePlan.getOrganizationDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(personSupervisePlan.getOrganizationDate())).create() : null); + put("ratifyDateUrl", personSupervisePlan.getApprovalDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(personSupervisePlan.getApprovalDate())).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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionControlSheetServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionControlSheetServiceImpl.java new file mode 100644 index 0000000..989f383 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionControlSheetServiceImpl.java @@ -0,0 +1,155 @@ +package com.ruoyi.personnel.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonSupervisionControlSheetExportDto; +import com.ruoyi.personnel.mapper.PersonSupervisionControlSheetMapper; +import com.ruoyi.personnel.pojo.PersonSupervisionControlSheet; +import com.ruoyi.personnel.service.PersonSupervisionControlSheetService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; + +/** + * <p> + * 鐩戠潱璁板綍 - 鎺у埗鍗� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:18:57 + */ +@Service +public class PersonSupervisionControlSheetServiceImpl extends ServiceImpl<PersonSupervisionControlSheetMapper, PersonSupervisionControlSheet> implements PersonSupervisionControlSheetService { + + @Resource + private UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁板綍绾犳鎺у埗鍗� + * @param supervisionRecordId + * @param response + */ + @Override + public void exportSupervisionControlSheet(Integer supervisionRecordId, HttpServletResponse response) { + PersonSupervisionControlSheetExportDto controlSheetExportDto = baseMapper.selectSupervisionControl(supervisionRecordId); + + // 鍒ゆ柇涓嶇鍚堝伐浣滃彂鐜伴�斿緞鏄惁涓虹┖ + if (StringUtils.isNotBlank(controlSheetExportDto.getDiscoveryApproach())) { + List<String> splitList = StrUtil.split(controlSheetExportDto.getDiscoveryApproach(), ','); + for (String s : splitList) { + switch (s) { + case "0": + controlSheetExportDto.setDiscoveryApproach0("鈽�"); + break; + case "1": + controlSheetExportDto.setDiscoveryApproach1("鈽�"); + break; + case "2": + controlSheetExportDto.setDiscoveryApproach2("鈽�"); + break; + case "3": + controlSheetExportDto.setDiscoveryApproach3("鈽�"); + break; + case "4": + controlSheetExportDto.setDiscoveryApproach4("鈽�"); + break; + case "5": + controlSheetExportDto.setDiscoveryApproach5("鈽�"); + break; + case "6": + controlSheetExportDto.setDiscoveryApproach6("鈽�"); + break; + case "7": + controlSheetExportDto.setDiscoveryApproach7("鈽�"); + break; + } + } + } + // 鍙戠幇閮ㄩ棬 + String discovererUrl = null; + if (controlSheetExportDto.getDepartmentHeadId() != null) { + discovererUrl = userMapper.selectById(controlSheetExportDto.getDepartmentHeadId()).getSignatureUrl(); + if (StringUtils.isBlank(discovererUrl)) { + throw new ErrorException("鎵句笉鍒板彂鐜伴儴闂ㄤ汉鐨勭鍚�"); + } + } + + // 澶勭悊鎺柦璐熻矗浜� + String responsibleUrl = null; + if (controlSheetExportDto.getResponsibleDepartmentPersonId() != null) { + responsibleUrl = userMapper.selectById(controlSheetExportDto.getResponsibleDepartmentPersonId()).getSignatureUrl(); + if (StringUtils.isBlank(responsibleUrl)) { + throw new ErrorException("鎵句笉鍒板鐞嗘帾鏂借礋璐d汉鐨勭鍚�"); + } + } + + // 鎶�鏈礋璐d汉 + String correctiveUrl = null; + if (controlSheetExportDto.getResponsibleDepartmentPersonId() != null) { + correctiveUrl = userMapper.selectById(controlSheetExportDto.getResponsibleDepartmentPersonId()).getSignatureUrl(); + if (StringUtils.isBlank(correctiveUrl)) { + throw new ErrorException("鎵句笉鍒版妧鏈礋璐d汉鐨勭鍚�"); + } + } + + // 璐ㄩ噺璐熻矗浜� + String qualityUrl = null; + if (controlSheetExportDto.getQualitySupervisorId() != null) { + qualityUrl = userMapper.selectById(controlSheetExportDto.getQualitySupervisorId()).getSignatureUrl(); + if (StringUtils.isBlank(qualityUrl)) { + throw new ErrorException("鎵句笉鍒拌川閲忚礋璐d汉鐨勭鍚�"); + } + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-control-sheet.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String finalDiscovererUrl = discovererUrl; + String finalResponsibleUrl = responsibleUrl; + String finalCorrectiveUrl = correctiveUrl; + String finalQualityUrl = qualityUrl; + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("control", controlSheetExportDto); + put("discovererUrl", StringUtils.isNotBlank(finalDiscovererUrl) ? Pictures.ofLocal(imgUrl + "/" + finalDiscovererUrl).create() : null); + put("responsibleUrl", StringUtils.isNotBlank(finalResponsibleUrl) ? Pictures.ofLocal(imgUrl + "/" + finalResponsibleUrl).create() : null); + put("correctiveUrl", StringUtils.isNotBlank(finalCorrectiveUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCorrectiveUrl).create() : null); + put("qualityUrl", StringUtils.isNotBlank(finalQualityUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionProcessingSheetServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionProcessingSheetServiceImpl.java new file mode 100644 index 0000000..4d10d94 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionProcessingSheetServiceImpl.java @@ -0,0 +1,119 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonSupervisionProcessingSheetDto; +import com.ruoyi.personnel.mapper.PersonSupervisionProcessingSheetMapper; +import com.ruoyi.personnel.pojo.PersonSupervisionProcessingSheet; +import com.ruoyi.personnel.service.PersonSupervisionProcessingSheetService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.HashMap; + +/** + * <p> + * 鐩戠潱璁板綍 - 澶勭悊鍗� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 05:35:58 + */ +@Service +public class PersonSupervisionProcessingSheetServiceImpl extends ServiceImpl<PersonSupervisionProcessingSheetMapper, PersonSupervisionProcessingSheet> implements PersonSupervisionProcessingSheetService { + + @Resource + private UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁板綍绾犳澶勭悊鍗� + * @param supervisionRecordId + * @param response + */ + @Override + public void exportSupervisionProcessingSheet(Integer supervisionRecordId, HttpServletResponse response) { + PersonSupervisionProcessingSheetDto processingSheetDto = baseMapper.selectProcessingSheet(supervisionRecordId); + + // 鎻愬嚭浜虹鍚� + String raiseUrl = null; + if (processingSheetDto.getProposingDepartmentPersonId() != null) { + raiseUrl = userMapper.selectById(processingSheetDto.getProposingDepartmentPersonId()).getSignatureUrl(); + if (StringUtils.isBlank(raiseUrl)) { + throw new ErrorException("鎵句笉鍒版彁鍑轰汉鐨勭鍚�"); + } + } + + // 鍘熷洜鍒嗘瀽浜� + String causeUrl = null; + if (processingSheetDto.getCauseAnalysisPersonId() != null) { + causeUrl = userMapper.selectById(processingSheetDto.getCauseAnalysisPersonId()).getSignatureUrl(); + if (StringUtils.isBlank(causeUrl)) { + throw new ErrorException("鎵句笉鍒板師鍥犲垎鏋愪汉鐨勭鍚�"); + } + } + + // 绾犳浜� + String correctUrl = null; + if (processingSheetDto.getCorrectiveActionId() != null) { + correctUrl = userMapper.selectById(processingSheetDto.getCorrectiveActionId()).getSignatureUrl(); + if (StringUtils.isBlank(correctUrl)) { + throw new ErrorException("鎵句笉鍒扮籂姝d汉鐨勭鍚�"); + } + } + + // 楠岃瘉浜� + String validationUrl = null; + if (processingSheetDto.getVerificationDepartmentPersonId() != null) { + validationUrl = userMapper.selectById(processingSheetDto.getVerificationDepartmentPersonId()).getSignatureUrl(); + if (StringUtils.isBlank(validationUrl)) { + throw new ErrorException("鎵句笉鍒伴獙璇佷汉鐨勭鍚�"); + } + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-processing-sheet.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("processing", processingSheetDto); + 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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionRecordServiceImpl.java new file mode 100644 index 0000000..13d1916 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonSupervisionRecordServiceImpl.java @@ -0,0 +1,125 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.common.utils.DateImageUtil; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonSupervisionRecordDto; +import com.ruoyi.personnel.mapper.PersonSupervisionRecordMapper; +import com.ruoyi.personnel.pojo.PersonSupervisionControlSheet; +import com.ruoyi.personnel.pojo.PersonSupervisionProcessingSheet; +import com.ruoyi.personnel.pojo.PersonSupervisionRecord; +import com.ruoyi.personnel.service.PersonSupervisionControlSheetService; +import com.ruoyi.personnel.service.PersonSupervisionProcessingSheetService; +import com.ruoyi.personnel.service.PersonSupervisionRecordService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; + +/** + * <p> + * 鐩戠潱璁板綍 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-10 04:16:49 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class PersonSupervisionRecordServiceImpl extends ServiceImpl<PersonSupervisionRecordMapper, PersonSupervisionRecord> implements PersonSupervisionRecordService { + + @Autowired + private PersonSupervisionControlSheetService personSupervisionControlSheetService; + + @Autowired + private PersonSupervisionProcessingSheetService personSupervisionProcessingSheetService; + + @Autowired + private UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + @Override + public void deletePersonSupervisionRecord(List<Integer> ids) { + if (CollectionUtils.isNotEmpty(ids)) { + ids.forEach(id -> { + personSupervisionControlSheetService.remove(Wrappers.<PersonSupervisionControlSheet>lambdaQuery() + .eq(PersonSupervisionControlSheet::getSupervisionRecordId, id)); + personSupervisionProcessingSheetService.remove(Wrappers.<PersonSupervisionProcessingSheet>lambdaQuery() + .eq(PersonSupervisionProcessingSheet::getSupervisionRecordId, id)); + baseMapper.deleteById(id); + }); + } + } + + @Override + public IPage<PersonSupervisionRecordDto> personSupervisionRecordPage(Page page, Integer userId, String userName, Integer departLimsId) { + return baseMapper.personSupervisionRecordPage(page, userId, departLimsId, userName); + } + + /** + * 瀵煎嚭浜哄憳鐩戠潱璁板綍 + * + * @param id + * @param response + */ + @Override + public void exportPersonSupervisionRecord(Integer id, HttpServletResponse response) { + PersonSupervisionRecordDto recordDto = baseMapper.selectPersonSupervisionRecord(id); + recordDto.setPersonnelName(recordDto.getPersonnel()); + //鑾峰彇鎶�鏈礋璐d汉鐨勭鍚嶅湴鍧� + String ratifyUrl = null; + if (recordDto.getTechnicalDirector() != null) { + ratifyUrl = userMapper.selectById(recordDto.getTechnicalDirector()).getSignatureUrl(); + if (StringUtils.isBlank(ratifyUrl)) { + throw new ErrorException("鎵句笉鍒版妧鏈礋璐d汉鐨勭鍚�"); + } + } + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-record.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String finalRatifyUrl = ratifyUrl; + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("supervision", recordDto); + put("technicalDirectorUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null); + put("technicalDirectorDateUrl", recordDto.getTechnicalDirectorDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(recordDto.getTechnicalDirectorDate())).create() : null); + put("testDateUrl", recordDto.getDetectionDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(recordDto.getDetectionDate())).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-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrackRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrackRecordServiceImpl.java new file mode 100644 index 0000000..8694e85 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrackRecordServiceImpl.java @@ -0,0 +1,33 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.personnel.mapper.PersonTrackRecordMapper; +import com.ruoyi.personnel.pojo.PersonTrackRecord; +import com.ruoyi.personnel.service.PersonTrackRecordService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * <p> + * 宸ヤ綔灞ュ巻 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-02 03:13:03 + */ +@Service +public class PersonTrackRecordServiceImpl extends ServiceImpl<PersonTrackRecordMapper, PersonTrackRecord> implements PersonTrackRecordService { + + @Override + public IPage<PersonTrackRecord> personTrackRecordSelect(Page page, String userId, String departmentId) { + return baseMapper.personTrackRecordSelect(page, userId, departmentId); + } + + @Override + public List<PersonTrackRecord> personTrackRecordExport(String userId, String departmentId) { + return baseMapper.personTrackRecordExport(userId, departmentId); + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java new file mode 100644 index 0000000..e6f5e0b --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java @@ -0,0 +1,363 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.numgen.NumberGenerator; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonTrainingDetailedDto; +import com.ruoyi.personnel.enumeration.AttachmentType; +import com.ruoyi.personnel.excel.PersonTrainingDetailedUpload; +import com.ruoyi.personnel.mapper.*; +import com.ruoyi.personnel.pojo.*; +import com.ruoyi.personnel.service.PersonTrainingDetailedService; +import com.ruoyi.system.mapper.DepartmentLimsMapper; +import com.ruoyi.system.mapper.UserMapper; +import com.ruoyi.system.service.DepartmentLimsService; +import lombok.AllArgsConstructor; +import org.apache.commons.math3.analysis.function.Power; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +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.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * <p> + * 鍩硅璁″垝璇︽儏 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:46:27 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class PersonTrainingDetailedServiceImpl extends ServiceImpl<PersonTrainingDetailedMapper, PersonTrainingDetailed> implements PersonTrainingDetailedService { + + @Resource + private DepartmentLimsService departmentLimsService; + + @Resource + private UserMapper userMapper; + + @Resource + private PersonTrainingRecordMapper personTrainingRecordMapper; + + @Resource + private PersonTrainingMapper personTrainingMapper; + +// private PowerMapper powerMapper; + + @Resource + private PersonTrainingFileMapper personTrainingFileMapper; + + @Resource + private NumberGenerator<PersonTrainingDetailed> numberGenerator; + + @Resource + private DepartmentLimsMapper departmentLimsMapper; + + @Value("${file.path}") + private String imgUrl; + + @Value("${excelUrl}") + private String excelUrl; + + @Value("${wordUrl}") + private String wordUrl; + + /** + * + * @param file + * @param id 骞村害璁″垝鏄庣粏琛╥d + */ + @Override + public Map<String,Object> fileUpload(MultipartFile file, Integer id) { + HashMap<String, Object> map = new HashMap<>(); + String fileName = file.getOriginalFilename(); + + try { + UUID uuid = UUID.randomUUID(); + String uuidString = uuid.toString(); + int i = fileName.indexOf("."); + String suffix = fileName.substring(i); //鏂囦欢鍚庣紑 + String url = uuidString + suffix; + String OriginalFileName = fileName.substring(0,i); // 鏂囦欢鍘熷悕绉� + // 瀛樻斁璺緞 + String path = ""; + // 鏍规嵁涓嶅悓鐨勫悗缂�瀛樻斁鍦ㄤ笉鍚岀殑璺緞涓� + if(suffix.toLowerCase().contains("xls")) { + path = excelUrl; + } else if (suffix.toLowerCase().contains("doc") || suffix.toLowerCase().contains("pdf")) { + path = wordUrl; + }else { + path = imgUrl; + } + File uploadDir = new File(path); + if(!uploadDir.exists()){ + uploadDir.mkdir(); + } + File destFile = new File(uploadDir , url); + file.transferTo(destFile); + // 灏嗘枃浠惰矾寰勫瓨鍌ㄥ埌鏁版嵁搴� + PersonTrainingFile personTrainingFile = new PersonTrainingFile(); + personTrainingFile.setDetailId(id); + personTrainingFile.setFileName(OriginalFileName + suffix); + personTrainingFile.setFileUrl("/"+url); + personTrainingFile.setCreateUser(SecurityUtils.getUserId().intValue()); + personTrainingFile.setCreateTime(LocalDateTime.now()); + personTrainingFileMapper.insert(personTrainingFile); + + + map.put("fileName",OriginalFileName + suffix); + map.put("url","/"+url); + } catch (IOException e) { + throw new ErrorException("涓婁紶澶辫触"); + } + return map; + } + + @Override + public List<DepartmentLims> selectDepartLims() { + List<DepartmentLims> departmentLims = departmentLimsMapper.selectList(null); + return departmentLims; + + + } + + @Override + public void importExcel(List<PersonTrainingDetailedUpload> list, Integer planId) { + List<PersonTrainingDetailed> personTrainingDetailedList = new ArrayList<>(); + list.forEach(i -> { + PersonTrainingDetailed personTrainingDetailed = new PersonTrainingDetailed(); + BeanUtils.copyProperties(i, personTrainingDetailed); + personTrainingDetailed.setClassHour(Double.parseDouble( i.getClassHour())); + // 鍖归厤涓惧姙閮ㄩ棬 + DepartmentLims departmentLims = departmentLimsService.getOne(Wrappers.<DepartmentLims>lambdaQuery() + .eq(DepartmentLims::getName, i.getHoldingDepartment())); + if (ObjectUtils.isEmpty(departmentLims)) { + throw new ErrorException("鏈尮閰嶅埌涓惧姙閮ㄩ棬锛�" + i.getHoldingDepartment()); + } + personTrainingDetailed.setHoldingDepartment(departmentLims.getId()); + +// // 鍖归厤璁插笀 +// String[] names = i.getTrainingLecturerName().split("銆亅锛寍,|\\s+"); +// ArrayList<Integer> ids = new ArrayList<>(); +// for(String name : names) { +// if(StringUtils.isNotEmpty(name)) { +// User user = userMapper.selectOne(Wrappers.<User>lambdaQuery() +// .eq(User::getName, name)); +// if(Objects.isNull(user)) { +// throw new ErrorException("鏈壘鍒拌璁插笀锛�" + name); +// } +// ids.add(user.getId()); +// } +// } +// String collect = ids.stream().map(item -> item.toString()).collect(Collectors.joining(",")); + personTrainingDetailed.setTrainingLecturerId(i.getTrainingLecturerName()); + personTrainingDetailed.setPlanId(planId); + personTrainingDetailed.setState(3); + + String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date()); + String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date()); + String processNumber = numberGenerator.generateNumberWithPrefix(4, "KC" + month + "-" + year + month, PersonTrainingDetailed::getCourseCode); + personTrainingDetailed.setCourseCode(processNumber); + personTrainingDetailedList.add(personTrainingDetailed); + }); + // 鎵归噺鏂板 + if (CollectionUtils.isNotEmpty(personTrainingDetailedList)) { + baseMapper.insertBatchSomeColumn(personTrainingDetailedList); + } + } + + @Override + public void deleteAnnualPlanDetailTable(String ids) { + String[] split = ids.split(","); + if (split.length > 0) { + for (String s : split) { + baseMapper.deleteById(s); + } + } + } + + @Override + public IPage<PersonTrainingDetailedDto> queryTheAnnualPlanDetailsTable(Page page, String trainingLecturerName, String courseCode, String trainingDate, + Integer id, Integer userId,Integer departId,Integer state) { + // 鍒ゆ柇褰撳墠浜烘槸鍚︽湁鏉冮檺鏌ョ湅骞村害璁″垝涓昏〃 + Integer userId1 = SecurityUtils.getUserId().intValue(); + User user = userMapper.selectById(userId1); + String name1 = user.getName(); + Integer currentUserId = user.getId(); + //todo 鏉冮檺寰呭畬鎴� +// List<Power> powers = powerMapper.selectList(new LambdaQueryWrapper<Power>() +// .eq(Power::getRoleId, user.getRoleId()) +// .eq(Power::getMenuMethod,"personTrainingSelect")); +// if(CollectionUtils.isEmpty(powers)) { +// if(Objects.isNull(departId) || departId == 1) { +// // 娌℃湁鏉冮檺 灏遍粯璁ゆ煡鐪嬭嚜宸遍儴闂ㄦ渶鏂扮殑骞村害璁″垝 18 閫氫俊浜у搧瀹為獙瀹� 19 鐢靛姏浜у搧瀹為獙瀹� +// if(user.getDepartLimsId().contains("18")) { +// List<PersonTraining> personTrainings = personTrainingMapper.selectList(new LambdaQueryWrapper<PersonTraining>() +// .eq(PersonTraining::getDepartId, 18) +// .orderByDesc(PersonTraining::getId)); +// if(CollectionUtils.isNotEmpty(personTrainings)) { +// id = personTrainings.get(0).getId(); +// } +// }else if(user.getDepartLimsId().contains("19")) { +// List<PersonTraining> personTrainings = personTrainingMapper.selectList(new LambdaQueryWrapper<PersonTraining>() +// .eq(PersonTraining::getDepartId, 19) +// .orderByDesc(PersonTraining::getId)); +// if(CollectionUtils.isNotEmpty(personTrainings)) { +// id = personTrainings.get(0).getId(); +// } +// } +// }else { +// List<PersonTraining> personTrainings = personTrainingMapper.selectList(new LambdaQueryWrapper<PersonTraining>() +// .eq(PersonTraining::getDepartId, departId) +// .orderByDesc(PersonTraining::getId)); +// if(CollectionUtils.isNotEmpty(personTrainings)) { +// id = personTrainings.get(0).getId(); +// } +// } +// } + if(Objects.nonNull(state)) { + if(state == -1) { + state = null; + } + } + IPage<PersonTrainingDetailedDto> list = baseMapper.queryTheAnnualPlanDetailsTable(page, trainingLecturerName, courseCode, trainingDate, id, userId, userId1,state); + // 鎶ュ悕浜烘暟 + List<PersonTrainingDetailedDto> records = list.getRecords(); + for(PersonTrainingDetailedDto a : records) { + // 鎶ュ悕鐨勪汉鏁� + List<PersonTrainingRecord> personTrainingRecords = personTrainingRecordMapper.selectList(new LambdaQueryWrapper<PersonTrainingRecord>() + .eq(PersonTrainingRecord::getCourseId, a.getId())); + a.setEnrollment(CollectionUtils.isNotEmpty(personTrainingRecords) ? personTrainingRecords.size() : 0); + List<Integer> collect = personTrainingRecords.stream().map(PersonTrainingRecord::getUserId).collect(Collectors.toList()); + if(collect.contains(SecurityUtils.getUserId().intValue())) { + a.setWhetherClaim(true); + }else { + a.setWhetherClaim(false); + } + //鍓嶇鏉冮檺闇�瑕� 鏄惁鍙互鎿嶄綔鎸夐挳 +// if(a.getTrainingLecturerId().contains(name1) || CollectionUtils.isNotEmpty(powers) || +// (Objects.nonNull(a.getAssessmentUserId()) && a.getAssessmentUserId().equals(currentUserId)) || Arrays.asList(16,36,35).contains(currentUserId)) { +// a.setIsDisabled(1); // 1涓嶇鐢� +// }else{ +// a.setIsDisabled(0); +// } + } + return list; + } + + @Override + public List<PersonTrainingFile> getFileData(Integer detailedId) { + List<PersonTrainingFile> personTrainingFiles = personTrainingFileMapper.selectList(new LambdaQueryWrapper<PersonTrainingFile>() + .eq(PersonTrainingFile::getDetailId, detailedId) + .eq(PersonTrainingFile::getEnumAttachmentType, AttachmentType.getTypeValue(2))); + if(CollectionUtils.isNotEmpty(personTrainingFiles)) { + for(PersonTrainingFile a : personTrainingFiles) { + // 璁剧疆mime + int i = a.getFileUrl().indexOf("."); + String contentType = getContentType(a.getFileUrl().substring(i + 1)); + a.setMime(contentType); + } + } + return personTrainingFiles; + } + + @Override + public void deleteFile(Integer id) { + personTrainingFileMapper.deleteById(id); + } + + @Override + public void fileDownLoad(Integer id, HttpServletResponse response) { + // 鏍规嵁id鏌ヨ涓嬭浇鐨勬枃浠� + PersonTrainingFile personTrainingFile = personTrainingFileMapper.selectById(id); + if(Objects.nonNull(personTrainingFile)) { + // 鎷垮埌鏂囦欢璺緞 + String fileUrl = personTrainingFile.getFileUrl(); + int i = fileUrl.indexOf("."); + String suffix = fileUrl.substring(i); // 鏂囦欢鍚庣紑 + String url = ""; + if(suffix.toLowerCase().contains("xls")) { + url = excelUrl + File.separator + fileUrl; + } else if (suffix.toLowerCase().contains("doc") || suffix.toLowerCase().contains("pdf")) { + url = wordUrl + File.separator + fileUrl; + }else { + url = imgUrl + File.separator + fileUrl; + } + File file = new File(url); + if(!file.exists()) { + throw new ErrorException("鏂囦欢涓嶅瓨鍦ㄦ垨鎹熷潖"); + } + // 鑾峰彇鏂囦欢杈撳叆娴� + try(FileInputStream fileInputStream = new FileInputStream(file); ServletOutputStream outputStream = response.getOutputStream()) { + String contentType = getContentType(fileUrl.substring(i + 1)); + // 璁剧疆鍝嶅簲澶� + response.setContentType(contentType); + int i1 = personTrainingFile.getFileName().indexOf("."); + String fileName = URLEncoder.encode(personTrainingFile.getFileName().substring(0, i1), "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + suffix); + byte[] bytes = new byte[1024]; + int bytesRead; + while ((bytesRead = fileInputStream.read(bytes)) != -1 ){ + outputStream.write(bytes,0,bytesRead); + } + outputStream.flush(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + // 鏍规嵁鏂囦欢鎵╁睍鍚嶈幏鍙� MIME 绫诲瀷 + private String getContentType(String fileExtension) { + switch (fileExtension) { + case "jpg": + case "jpeg": + return "image/jpeg"; + case "png": + return "image/png"; + case "gif": + return "image/gif"; + case "pdf": + return "application/pdf"; + case "doc": + return "application/msword"; + case "docx": + return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + case "xls": + return "application/vnd.ms-excel"; + case "xlsx": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case "ppt": + case "pptx": + return "application/vnd.ms-powerpoint"; + default: + return "application/octet-stream"; // 榛樿浜岃繘鍒舵祦 + } + } + + + +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingFileServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingFileServiceImpl.java new file mode 100644 index 0000000..00cebee --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingFileServiceImpl.java @@ -0,0 +1,14 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.personnel.mapper.PersonTrainingFileMapper; +import com.ruoyi.personnel.pojo.PersonTrainingFile; +import com.ruoyi.personnel.service.PersonTrainingFileService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class PersonTrainingFileServiceImpl extends ServiceImpl<PersonTrainingFileMapper,PersonTrainingFile> + implements PersonTrainingFileService { +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java new file mode 100644 index 0000000..2148986 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java @@ -0,0 +1,338 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursDayMapper; +import com.ruoyi.performance.mapper.PerformanceShiftMapper; +import com.ruoyi.performance.pojo.AuxiliaryWorkingHoursDay; +import com.ruoyi.performance.pojo.PerformanceShift; +import com.ruoyi.performance.service.AuxiliaryWorkingHoursDayService; +import com.ruoyi.personnel.dto.PersonTrainingRecordDto; +import com.ruoyi.personnel.dto.PersonTrainingRecordListDto; +import com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto; +import com.ruoyi.personnel.mapper.*; +import com.ruoyi.personnel.pojo.*; +import com.ruoyi.personnel.service.PersonTrainingDetailedService; +import com.ruoyi.personnel.service.PersonTrainingRecordService; +import com.ruoyi.system.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.*; +import java.time.temporal.TemporalField; +import java.time.temporal.WeekFields; +import java.util.*; + +/** + * <p> + * 鍩硅璁板綍 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-12 04:50:48 + */ +@Transactional(rollbackFor = Exception.class) +@Service +public class PersonTrainingRecordServiceImpl extends ServiceImpl<PersonTrainingRecordMapper, PersonTrainingRecord> implements PersonTrainingRecordService { + + @Resource + private UserMapper userMapper; + + @Resource + private PersonTrainingDetailedService personTrainingDetailedService; + + @Resource + private PersonTrainingDetailedMapper personTrainingDetailedMapper; + + @Resource + private AuxiliaryWorkingHoursDayMapper auxiliaryWorkingHoursDayMapper; + + @Resource + private PerformanceShiftMapper shiftMapper; + + @Autowired + private AuxiliaryWorkingHoursDayService auxiliaryWorkingHoursDayService; + + + @Override + public List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(Integer trainingDetailedId, String userName) { + return baseMapper.trainingAndAssessmentRecordsPage(trainingDetailedId, userName); + } + + @Override + public void deleteTrainingAndAssessmentRecords(String ids) { + String[] split = ids.split(","); + if (split.length > 0) { + for (String s : split) { + baseMapper.deleteById(s); + } + } + } + + @Override + public IPage<PersonTrainingRecordListDto> personnelTrainingPersonnel(Page page, String userName, Integer userId, Integer departLimsId) { + return baseMapper.personnelTrainingPersonnel(page, userName, userId, departLimsId); + } + + @Override + public IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetails(Page page, Integer userId) { + return baseMapper.queryPersonnelDetails(page, userId); + } + + @Override + public void claimOfTrainingAndAssessmentRecords(Boolean claimAndClaim, Integer courseId) { + int userId = SecurityUtils.getUserId().intValue(); + // 1銆佹煡璇㈠煿璁绋嬶紝鍙栧煿璁棩鏈熶笌寮�濮嬫棩鏈燂紝涓庡綋鍓嶆椂闂存瘮杈冿紝鍒ゆ柇鏄惁瓒呭嚭锛屽鏋滆秴鍑轰笉鍏佽璁ら + Boolean doesItExceedState = doesItExceed(courseId); + if (!doesItExceedState) { + throw new ErrorException("褰撳墠璇剧▼鐘舵�佹棤娉曡棰嗭紒"); + } + // 2銆佸垽鏂槸鍚﹂噸澶� + PersonTrainingRecord personTrainingRecord1 = baseMapper.selectOne(Wrappers.<PersonTrainingRecord>lambdaQuery() + .eq(PersonTrainingRecord::getCourseId, courseId) + .eq(PersonTrainingRecord::getUserId, userId)); + if (ObjectUtils.isNotEmpty(personTrainingRecord1)) { + throw new ErrorException("璇峰嬁閲嶅璁ら锛�"); + } + // 3銆佸鏋滄湭閲嶅鏂板鍩硅璁板綍 + // true 璁ら + if (claimAndClaim) { + PersonTrainingRecord personTrainingRecord = new PersonTrainingRecord(); + personTrainingRecord.setUserId(userId); + personTrainingRecord.setCourseId(courseId); + baseMapper.insert(personTrainingRecord); + // 鍙栨秷璁ら + } else { + baseMapper.delete(Wrappers.<PersonTrainingRecord>lambdaQuery() + .eq(PersonTrainingRecord::getUserId, userId) + .eq(PersonTrainingRecord::getCourseId, courseId)); + } + } + + /** + * 瀵煎嚭浜哄憳鍩硅璁板綍 + * @param userId + * @param response + */ + @Override + public void exportTrainingRecord(Integer userId, HttpServletResponse response) { + // 鏌ヨ浜哄憳浜轰俊鎭� + PersonTrainingRecordListDto trainingRecordListDto = baseMapper.selectUserTraining(userId); + + // 鏌ヨ鍩硅璁板綍 + List<TrainingRecordPersonDetailedDto> personDetailedDtos = baseMapper.selectPersonDetailedDtos(userId); + + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/training-record.docx"); + Configure configure = Configure.builder() + .bind("personnelDetailsLisat", new HackLoopTableRenderPolicy()) + .build(); + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("traning", trainingRecordListDto); + put("personnelDetailsLisat", personDetailedDtos); + }}); + 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 IPage<TrainingRecordPersonDetailedDto> queryPersonnelDetailsOfUserIdAndYear(Page page, Integer userId, Integer year) { + return baseMapper.queryPersonnelDetailsOfUserIdAndYear(page, userId, year); + } + + @Override + public void exportTrainingRecordAddTrainingDate(Integer userId, Integer trainingDate, HttpServletResponse response) { + // 鏌ヨ浜哄憳浜轰俊鎭� + PersonTrainingRecordListDto trainingRecordListDto = baseMapper.selectUserTraining(userId); + + // 鏌ヨ鍩硅璁板綍 + List<TrainingRecordPersonDetailedDto> personDetailedDtos = baseMapper.selectPersonDetailedDtosByTrainingDate(userId, trainingDate); + + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/training-record.docx"); + Configure configure = Configure.builder() + .bind("personnelDetailsLisat", new HackLoopTableRenderPolicy()) + .build(); + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("traning", trainingRecordListDto); + put("personnelDetailsLisat", personDetailedDtos); + }}); + 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 void outOfFocusPreservation(PersonTrainingRecord personTrainingRecord) { + int userId = SecurityUtils.getUserId().intValue(); + // 鍩硅閫氳繃浜嗭紝鍩硅璇炬椂璁″叆鍒板綋澶╃殑杈呭姪宸ユ椂 (杈呭姪宸ユ椂 浠ュ強 鏍稿噯宸ユ椂閮芥坊鍔�) + baseMapper.updateById(personTrainingRecord); + PersonTrainingDetailed personTrainingDetailed = personTrainingDetailedMapper.selectById(personTrainingRecord.getCourseId()); + if(Objects.nonNull(personTrainingDetailed)) { + Double classHour = personTrainingDetailed.getClassHour(); // 璇炬椂 + String trainingDateTwo = personTrainingDetailed.getTrainingDateTwo(); // 鍩硅鏃ユ湡 + if(StringUtils.isEmpty(trainingDateTwo)) { + throw new ErrorException("娌℃湁璁剧疆鍩硅鏃ユ湡鏃犳硶娣诲姞杈呭姪宸ユ椂"); + } + // 鏄惁浠ュ強娣诲姞杩囦簡 + List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectList(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>() + .eq(AuxiliaryWorkingHoursDay::getNameUser, personTrainingRecord.getUserId()) + .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, personTrainingDetailed.getTrainingContent()) + .eq(AuxiliaryWorkingHoursDay::getCreateUser, userId) + .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00")); + // 濡傛灉鏈夋暟鎹� 鍚堟牸灏变笉鍋氬鐞� 涓嶅悎鏍煎氨鍒犻櫎 + if(CollectionUtils.isNotEmpty(auxiliaryWorkingHoursDays)) { + if(personTrainingRecord.getExaminationResults().equals("涓嶅悎鏍�")) { + auxiliaryWorkingHoursDayMapper.delete(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>() + .eq(AuxiliaryWorkingHoursDay::getNameUser, personTrainingRecord.getUserId()) + .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, personTrainingDetailed.getTrainingContent()) + .eq(AuxiliaryWorkingHoursDay::getCreateUser, userId) + .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00")); + } + } + // 鏄惁閫氳繃 + if(personTrainingRecord.getExaminationResults().equals("鍚堟牸") && CollectionUtils.isEmpty(auxiliaryWorkingHoursDays)) { + // 濡傛灉鏄娴嬪姙鐨勪汉灏变笉鐢ㄥ姞 + User user = userMapper.selectById(personTrainingRecord.getUserId()); + if(user.getDepartLimsId().contains("22")) { + return; + } + // 涓�鑺傝45鍒嗛挓 宸ユ椂60鍒嗛挓 + BigDecimal minute = BigDecimal.valueOf(classHour).multiply(new BigDecimal("45")); // 鍏蜂綋鍒嗛挓 + BigDecimal divide = minute.divide(new BigDecimal("60"),4, RoundingMode.HALF_UP); // 宸ユ椂 + // 娣诲姞鏁版嵁 + AuxiliaryWorkingHoursDay a = new AuxiliaryWorkingHoursDay(); + a.setNameUser(personTrainingRecord.getUserId()); // 濮撳悕id + // 椤圭洰鍚嶇О + a.setRemarks(personTrainingDetailed.getTrainingContent()); // 杈呭姪璇存槑 + a.setNumber("401"); // 缂栧彿 + AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursByNumber("401"); + a.setAuxiliaryProject(auxiliaryWorkingHoursDay.getAuxiliaryProject()); // 杈呭姪椤圭洰鍚嶇О + a.setNonproductiveTime(Double.parseDouble(divide.toString())); // 杈呭姪宸ユ椂 + a.setApprovedWorkingHour(auxiliaryWorkingHoursDay.getApprovedWorkingHour()); // 鏍稿噯宸ユ椂 + a.setAmount(Double.parseDouble(divide.toString())); // 鏁伴噺 + String year = trainingDateTwo.split("-")[0]; + a.setYear(year); // 骞� + a.setCreateTime(LocalDateTime.now()); + a.setUpdateTime(LocalDateTime.now()); + a.setCreateUser(userId); // 鍒涘缓浜篿d + a.setUpdateUser(userId); // 淇敼浜篿d + a.setState("宸叉彁浜�"); // 鐘舵�� + a.setDateTime(trainingDateTwo + " 00:00:00"); // 鏃ユ湡 + // 鑾峰彇褰撳墠鏃ユ湡 + LocalDate today = LocalDate.now(); + // 鑾峰彇褰撳墠鏃ユ湡鐨勫懆娆★紙涓�骞翠腑鐨勭鍑犲懆锛� + TemporalField weekOfYear = WeekFields.of(Locale.getDefault()).weekOfYear(); + int weekNumber = today.get(weekOfYear); + // 鑾峰彇褰撳墠鏃ユ湡鐨勬槦鏈燂紙涓�鍛ㄤ腑鐨勭鍑犲ぉ锛� + DayOfWeek dayOfWeek = today.getDayOfWeek(); + int dayOfWeekNumber = dayOfWeek.getValue(); + LocalDate now = LocalDate.now(); + LocalTime parse = LocalTime.parse("00:00:00"); + LocalDateTime of = LocalDateTime.of(now, parse); + PerformanceShift performanceShift = shiftMapper.selectOne(new LambdaQueryWrapper<PerformanceShift>().eq(PerformanceShift::getWorkTime, of) + .eq(PerformanceShift::getUserId, personTrainingRecord.getUserId())); + if(Objects.nonNull(performanceShift)) { + a.setShift(performanceShift.getShift()); // 鐝 + } + a.setWeek(weekNumber+""); // 鍛ㄦ + a.setWeekDay(dayOfWeekNumber == 7 ? 0+"" : dayOfWeekNumber+""); // 鏄熸湡 + auxiliaryWorkingHoursDayMapper.insert(a); + } + } + + } + + /** + * 妫�楠岃鍩硅璇剧▼鏄惁鍏佽璁ら + * @param courseId 璇ヨ绋嬬殑id + * @return + */ + public Boolean doesItExceed(Integer courseId) { + PersonTrainingDetailed personTrainingDetailed = personTrainingDetailedService.getById(courseId); + // 鍙湁鐘舵�佷负3鍙互璁ら + if (!personTrainingDetailed.getState().equals(3)) { + return false; + } + SimpleDateFormat sdfWithoutTime = new SimpleDateFormat("yyyy-MM-dd"); + if(Objects.isNull(personTrainingDetailed.getTrainingDateTwo()) || StringUtils.isEmpty(personTrainingDetailed.getTrainingDateTwo())) { + throw new ErrorException("鏈厤缃煿璁棩鏈�,鏃犳硶鎶ュ悕"); + } + LocalDate parse = LocalDate.parse(personTrainingDetailed.getTrainingDateTwo()); + Date from = Date.from(parse.atStartOfDay(ZoneId.systemDefault()).toInstant()); + String originalDateStr = sdfWithoutTime.format(from); + SimpleDateFormat sdfWithTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + if(Objects.isNull(personTrainingDetailed.getOpeningTime()) || StringUtils.isEmpty(personTrainingDetailed.getOpeningTime())) { + throw new ErrorException("鏈厤缃叿浣撴椂闂�,鏃犳硶鎶ュ悕"); + } + // 娣诲姞鏃跺垎绉掑悗鐨勬棩鏈� + Date addedDate = sdfWithTime.parse(originalDateStr + " " + personTrainingDetailed.getOpeningTime()); + // 鑾峰彇褰撳墠鏃堕棿 + Date currentDate = new Date(); + // 鏃ユ湡鏈秴鍑哄綋鍓嶆椂闂淬�� + if (addedDate.after(currentDate) || addedDate.equals(currentDate)) { + return true; + // 鏃ユ湡宸茶秴鍑哄綋鍓嶆椂闂� + } else { + // 濡傛灉鏃ユ湡瓒呭嚭 鏇存柊璇剧▼鐘舵�佷负宸茬粨鏉� + personTrainingDetailedService.update(Wrappers.<PersonTrainingDetailed>lambdaUpdate() + .eq(PersonTrainingDetailed::getId, courseId) + .set(PersonTrainingDetailed::getState, 2)); + return false; + } + } catch (Exception e) { + throw new ErrorException("鏃堕棿鏍煎紡閿欒锛�"); + } + } +} diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java new file mode 100644 index 0000000..a28a1e6 --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java @@ -0,0 +1,376 @@ +package com.ruoyi.personnel.service.impl; + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.data.Pictures; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.DateImageUtil; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import com.ruoyi.personnel.dto.*; +import com.ruoyi.personnel.excel.PersonTrainingDetailedListener; +import com.ruoyi.personnel.excel.PersonTrainingDetailedUpload; +import com.ruoyi.personnel.mapper.*; +import com.ruoyi.personnel.pojo.*; +import com.ruoyi.personnel.service.PersonTrainingDetailedService; +import com.ruoyi.personnel.service.PersonTrainingService; +import com.ruoyi.system.mapper.DepartmentLimsMapper; +import com.ruoyi.system.mapper.UserMapper; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.springframework.beans.factory.annotation.Autowired; +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.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; + +/** + * <p> + * 鍩硅璁″垝 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @since 2024-10-11 01:11:49 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class PersonTrainingServiceImpl extends ServiceImpl<PersonTrainingMapper, PersonTraining> implements PersonTrainingService { + + + + @Autowired + private PersonTrainingDetailedService personTrainingDetailedService; + + @Autowired + private UserMapper userMapper; + + + @Resource + private PersonTrainingDetailedMapper personTrainingDetailedMapper; + + @Resource + private PersonTrainingRecordMapper personTrainingRecordMapper; + + + @Autowired + private DepartmentLimsMapper departmentLimsMapper; + + @Value("${file.path}") + private String imgUrl; + + @Override + public IPage<PersonTrainingDto> personTrainingSelect(Page page, String compilerName, Integer departmentId) { + // 褰撳墠鐧诲綍浜� + Integer userId = SecurityUtils.getUserId().intValue(); +// User user = Optional.ofNullable(userMapper.selectById(userId)).orElse(new User()); +// if(3==user.getRoleId()){ +// departmentId=null; +// } + // 濡傛灉浼犲叆浜哾epartId 灏变互浼犲叆鐨勪负鍑嗐�� 濡傛灉娌℃湁浼犲叆灏变互褰撳墠浜烘墍鍦ㄩ儴闂ㄤ负鍑� + if(Objects.isNull(departmentId)) { + User user = userMapper.selectById(userId); + String[] split = user.getDepartLimsId().split(","); + for(String departId : split) { + if(departId != "1" && StringUtils.isNotEmpty(departId)) { + departmentId = Integer.parseInt(departId); + } + } + //todo 寰呬慨鏀� 濡傛灉褰撳墠浜烘槸绠$悊鍛樺氨鍙煡鐪嬪叏閮� +// if(user.getRoleId() == 3) { +// departmentId = null; +// } + }else { + // 濡傛灉浼犲叆鐨刣epartId鏄�1锛堜腑澶╃鎶�锛� 涓嶅仛澶勭悊 + if(departmentId == 1) { + departmentId = null; + } + } + IPage<PersonTrainingDto> personTrainingDtoIPage = baseMapper.personTrainingSelect(page, compilerName, departmentId); + List<PersonTrainingDto> records = personTrainingDtoIPage.getRecords(); + for (PersonTrainingDto dto : records) { + dto.setCurrentId(userId); + } + return personTrainingDtoIPage; + } + + /** + * + * @param id 鏄庣粏琛╥d + */ + @Override + public void deleteDetail(Integer id) { + personTrainingDetailedMapper.deleteById(id); + personTrainingRecordMapper.delete(Wrappers.<PersonTrainingRecord>lambdaQuery().eq(PersonTrainingRecord::getCourseId,id)); + } + + @Override + public void personTrainingImport(MultipartFile file) { + int userId = SecurityUtils.getUserId().intValue(); + // 骞村害璁″垝鐖剁骇鏂板鏁版嵁 + PersonTraining personSupervisePlan = new PersonTraining(); + String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")); + personSupervisePlan.setFileName(fileName); + personSupervisePlan.setCompilerId(userId); // 缂栧埗浜� + personSupervisePlan.setCompilationDate(LocalDateTime.now()); + try(Workbook workbook = WorkbookFactory.create(file.getInputStream())) { + // 澶氫釜sheet椤� 寰楀尯鍒嗕竴涓嬮�氫俊鍜岀數鍔� + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + String sheetName = workbook.getSheetName(i); + // 鏍规嵁sheet鍚嶇О鏉ュ垎鍒粰瀵瑰簲鐨勫疄楠屽璧嬪�� + DepartmentLims departmentLims = departmentLimsMapper.selectOne(Wrappers.<DepartmentLims>lambdaQuery().like(DepartmentLims::getName, sheetName)); + if(Objects.nonNull(departmentLims)) { + personSupervisePlan.setDepartId(departmentLims.getId()); + // 缂栧埗浜虹數鍔涚殑鏄儭闆湠 閫氫俊鐨勬槸琚侀洦闇� + if(departmentLims.getId().equals(18)) { + personSupervisePlan.setCompilerId(userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName,"琚侀洦闇�")).get(0).getId()); + } else if (departmentLims.getId().equals(19)) { + personSupervisePlan.setCompilerId(userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName,"鑳¢洩闇�")).get(0).getId()); + } + baseMapper.insert(personSupervisePlan); + // 骞村害璁″垝璇︽儏 鏂板 + PersonTrainingDetailedListener personSupervisePlanDetailsListener = new PersonTrainingDetailedListener(personTrainingDetailedService,personSupervisePlan.getId()); + personSupervisePlanDetailsListener.setPlanId(personSupervisePlan.getId()); + //EasyExcel.read(file.getInputStream(), PersonTrainingDetailedUpload.class, personSupervisePlanDetailsListener).sheet().doRead(); + EasyExcel.read(file.getInputStream(),PersonTrainingDetailedUpload.class,new PersonTrainingDetailedListener(personTrainingDetailedService,personSupervisePlan.getId())) + .headRowNumber(3).ignoreEmptyRow(false).sheet(sheetName).doRead(); + // 娣诲姞涓�娆″悗 娓呯┖id 闃叉鍑虹幇閲嶅key + personSupervisePlan.setId(null); + + } + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void personTrainingDelete(Integer id) { + personTrainingDetailedService.remove(new LambdaQueryWrapper<PersonTrainingDetailed>().eq(PersonTrainingDetailed::getPlanId,id)); + baseMapper.deleteById(id); + } + + @Override + public void reviewAnnualPersonnelTraining(PersonTrainingUpdateDto personTrainingUpdateDto) { + PersonTraining personTraining = new PersonTraining(); + personTraining.setId(personTrainingUpdateDto.getId()); + // 濡傛灉鏄�氫俊 瀹℃牳浜哄氨鏄瓩纾� 鐢靛姏鐨勫垯鏄垬寤哄痉 + PersonTraining personTraining1 = baseMapper.selectById(personTrainingUpdateDto.getId()); + if(personTraining1.getDepartId().equals(19)) { + personTraining.setReviewerId(userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName,"鍒樺缓寰�")).get(0).getId()); + }else { + personTraining.setReviewerId(userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName,"瀛欑")).get(0).getId()); + } + personTraining.setAuditDate(LocalDateTime.now()); + personTraining.setAuditRemarks(personTrainingUpdateDto.getRemarks()); + personTraining.setReviewerStatus(personTrainingUpdateDto.getStatus()); + baseMapper.updateById(personTraining); + } + + @Override + public void approveAnnualPersonnelTraining(PersonTrainingUpdateDto personTrainingUpdateDto) { + Integer id = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getName, "璁稿啗")).get(0).getId(); + LambdaUpdateWrapper<PersonTraining> wrapper = Wrappers.<PersonTraining>lambdaUpdate() + .eq(PersonTraining::getId, personTrainingUpdateDto.getId()) + .set(PersonTraining::getApproverId, id) // 鍙兘鏄鍐� + .set(PersonTraining::getApprovalDate, LocalDateTime.now()) + .set(PersonTraining::getApprovalRemarks, personTrainingUpdateDto.getRemarks()) + .set(PersonTraining::getApprovalStatus, personTrainingUpdateDto.getStatus()); + if (personTrainingUpdateDto.getStatus().equals(2)) { + wrapper.set(PersonTraining::getReviewerStatus, null); + } + baseMapper.update(new PersonTraining(), wrapper); + } + + /** + * 瀵煎嚭浜哄憳鍩硅璁″垝 + * @param id + * @param response + */ + @Override + public void exportPersonTraining(Integer id, HttpServletResponse response) { + + // 鏌ヨ璇︽儏 + PersonTraining personTraining = baseMapper.selectById(id); + + //鑾峰彇鎻愪氦浜虹殑绛惧悕鍦板潃 + String writeUrl = userMapper.selectById(personTraining.getCompilerId()).getSignatureUrl(); + if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) { + throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); + } + + //鑾峰彇澶嶆牳浜虹殑绛惧悕鍦板潃 + String examineUrl = null; + if (personTraining.getReviewerId() != null) { + examineUrl = userMapper.selectById(personTraining.getReviewerId()).getSignatureUrl(); + if (StringUtils.isBlank(examineUrl)) { + throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�"); + } + } + + //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃 + String ratifyUrl = null; + if (personTraining.getApproverId() != null) { + ratifyUrl = userMapper.selectById(personTraining.getApproverId()).getSignatureUrl(); + if (StringUtils.isBlank(ratifyUrl)) { + throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�"); + } + } + + // 鏌ヨ璇︽儏 + List<PersonTrainingDetailedDto> detailedDtos = personTrainingDetailedMapper.selectTrainingList(id); + + int index = 1; + for (PersonTrainingDetailedDto detailedDto : detailedDtos) { + detailedDto.setTrainingLecturerName(detailedDto.getTrainingLecturerId()); + if (detailedDto.getTrainingDate() != null) { + SimpleDateFormat sdfWithoutTime = new SimpleDateFormat("yyyy-MM-dd"); +// detailedDto.setTrainingDateString(sdfWithoutTime.format(detailedDto.getTrainingDate())); + detailedDto.setTrainingDateString(detailedDto.getTrainingDate()); + } + DepartmentLims departmentLims = departmentLimsMapper.selectById(detailedDto.getHoldingDepartment()); + if(Objects.nonNull(departmentLims)) { + detailedDto.setOrganizingDepartment(departmentLims.getName()); + } + detailedDto.setIndex(index); + index++; + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/person-training.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("year", personTraining.getCreateTime().getYear()); + put("trainingDetailedList", detailedDtos); + 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", personTraining.getCompilationDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(personTraining.getCompilationDate())).create() : null); + put("examineDateUrl", personTraining.getAuditDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(personTraining.getAuditDate())).create() : null); + put("ratifyDateUrl", personTraining.getApprovalDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(personTraining.getApprovalDate())).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 id + * @param response + */ + @Override + public void exportPersonTrainingRecord(Integer id, HttpServletResponse response) { + // 鏌ヨ浜哄憳鍩硅鏄庣粏 + PersonTrainingDetailedDto detailedDto = personTrainingDetailedMapper.selectTrainingDetail(id); + detailedDto.setTrainingContent(detailedDto.getTrainingAbstract()); + detailedDto.setTrainingLecturerName(detailedDto.getTrainingLecturerId()); // 鍩硅璁插笀 + detailedDto.setTrainingDateString(detailedDto.getTrainingDateTwo()); // 鍩硅鏃ユ湡 + // 鏌ヨ鍩硅鐨勪汉鍛� + List<PersonTrainingRecordDto> recordDtos = personTrainingRecordMapper.selectListByTrainingDetailedId(id); + + List<TrainingRecordExportDto> exportDtoList = new ArrayList<>(); + TrainingRecordExportDto exportDto = new TrainingRecordExportDto(); + + int count = 0; + for (PersonTrainingRecordDto recordDto : recordDtos) { + switch (count) { + case 0: + exportDto.setUserName1(recordDto.getUserName()); + exportDto.setDepartment1(recordDto.getDepartment()); + exportDto.setExaminationResults1(recordDto.getExaminationResults()); + count ++; + break; + case 1: + exportDto.setUserName2(recordDto.getUserName()); + exportDto.setDepartment2(recordDto.getDepartment()); + exportDto.setExaminationResults2(recordDto.getExaminationResults()); + exportDtoList.add(exportDto); + exportDto = new TrainingRecordExportDto(); + count = 0; + break; + } + } + exportDtoList.add(exportDto); + + // 璐ㄩ噺璐熻矗浜� + String assessmentUserUrl = null; + if (detailedDto.getAssessmentUserId() != null) { + assessmentUserUrl = userMapper.selectById(detailedDto.getAssessmentUserId()).getSignatureUrl(); + if (StringUtils.isBlank(assessmentUserUrl)) { + throw new ErrorException("鎵句笉鍒拌瘎浠蜂汉鐨勭鍚�"); + } + } + + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/person-training-record.docx"); + Configure configure = Configure.builder() + .bind("trainingRecordsList", new HackLoopTableRenderPolicy()) + .build(); + String finalAssessmentUserUrl = assessmentUserUrl; + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("trainingDetail", detailedDto); + put("trainingRecordsList", exportDtoList); + put("assessmentUserUrl", StringUtils.isNotBlank(finalAssessmentUserUrl) ? Pictures.ofLocal(imgUrl + "/" + finalAssessmentUserUrl).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-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml new file mode 100644 index 0000000..1cd7929 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonBasicInfoMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonBasicInfo"> + <id column="id" property="id" /> + <result column="current_state" property="currentState" /> + <result column="entry_time" property="entryTime" /> + <result column="post" property="post" /> + <result column="professional_title" property="professionalTitle" /> + <result column="sex" property="sex" /> + <result column="personnel_classification" property="personnelClassification" /> + <result column="date_birth" property="dateBirth" /> + <result column="identity_card" property="identityCard" /> + <result column="nation" property="nation" /> + <result column="political_status" property="politicalStatus" /> + <result column="official_academic_redentials" property="officialAcademicRedentials" /> + <result column="graduation_time1" property="graduationTime1" /> + <result column="graduated_institutions1" property="graduatedInstitutions1" /> + <result column="major1" property="major1" /> + <result column="graduation_time2" property="graduationTime2" /> + <result column="graduated_institutions2" property="graduatedInstitutions2" /> + <result column="major2" property="major2" /> + <result column="telephone" property="telephone" /> + <result column="end_planned_internship" property="endPlannedInternship" /> + <result column="end_practical_practice" property="endPracticalPractice" /> + <result column="date_departure" property="dateDeparture" /> + <result column="desktop_picture" property="desktopPicture" /> + <result column="attachment_information" property="attachmentInformation" /> + <result column="remarks" property="remarks" /> + <result column="user_id" property="userId" /> + <result column="current_position" property="currentPosition" /> + </resultMap> + + <select id="selectLimsUser" resultType="com.ruoyi.common.core.dto.DepartmentDto"> + SELECT u.id userId, u.name, SUBSTRING_INDEX(SUBSTRING_INDEX(u.depart_lims_id, ',', -2), ',', 1) AS fatherId + FROM user u + where u.is_custom = 0 + and u.depart_lims_id is not null + and u.depart_lims_id != '' + </select> + + <select id="getCNASPersonnelInfo" resultType="com.ruoyi.personnel.dto.PersonBasicInfoDto"> + SELECT cpbi.*,u.* + FROM user u + left join cnas_person_basic_info cpbi on cpbi.user_id = u.id + where u.id = #{userId} + </select> + + <select id="basicInformationOfPersonnelSelectPage" resultType="java.util.Map"> + select + u.id, + u.name, + u.account, + cpbi.sex, + cpbi.date_birth, + u.age, + cpbi.entry_time, + cpbi.personnel_classification, + cpbi.official_academic_redentials, + cpbi.current_position, + u.phone, + cpbi.date_departure, + cpbi.current_state, + u1.name createUser + from user u + left join cnas_person_basic_info cpbi on cpbi.user_id = u.id + left join user u1 on u1.id = u.create_by + where FIND_IN_SET(#{departmentId},u.depart_lims_id) + </select> + <select id="selectPersonBasecInfoAndUser" resultType="java.util.Map"> + select + u.id userId, + u.`name` name, + u.account account, + DATE_FORMAT(cpbi.entry_time, '%Y-%m-%d') groupTime, + DATE_FORMAT(cpbi.end_practical_practice, '%Y-%m-%d') endPracticalPracticeStr, + cpbi.native_place nativePlace, + cpbi.identity_card identityCard, + cpbi.id_address idAddress, + u.phone telephone, + cpbi.graduated_institutions1 graduatedInstitutions1, + cpbi.major1 major1, + DATE_FORMAT(cpbi.graduation_time1, '%Y-%m-%d') graduationTime1, + cpbi.official_academic_redentials officialAcademicRedentials, + cpbi.highest_degree highestDegree, + cpbi.professional_title professionalTitle, + cpbi.emergency_contact emergencyContact, + cpbi.emergency_contact_phone emergencyContactPhone + from user u + left join cnas_person_basic_info cpbi on cpbi.user_id = u.id + left join user u1 on u1.id = u.create_by + <where> + FIND_IN_SET(#{departmentId},u.depart_lims_id) + <if test="name != null and name != ''"> + and u.name like concat('%',#{name},'%') + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml new file mode 100644 index 0000000..5699c09 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonCommunicationAbilityMapper.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonCommunicationAbilityMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonCommunicationAbility"> + <id column="id" property="id" /> + <result column="user_id" property="userId" /> + <result column="communication_time" property="communicationTime" /> + <result column="communication_place" property="communicationPlace" /> + <result column="communication_content" property="communicationContent" /> + <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="personPersonCommunicationAbilityPage" resultType="com.ruoyi.personnel.dto.PersonCommunicationAbilityDto"> + select cpca.*, us.name create_user_name + from cnas_person_communication_ability cpca + left join user us on cpca.create_user = us.id + <where> + <if test="userId != null and userId != ''"> + and FIND_IN_SET(#{userId},cpca.user_id) + </if> + <if test="departLimsId != null and departLimsId != ''"> + and FIND_IN_SET(#{departLimsId},us.depart_lims_id) + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonJobResponsibilitiesMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonJobResponsibilitiesMapper.xml new file mode 100644 index 0000000..75f8147 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonJobResponsibilitiesMapper.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonJobResponsibilitiesMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonJobResponsibilities"> + <id column="id" property="id" /> + <result column="post_name" property="postName" /> + <result column="job_objective" property="jobObjective" /> + <result column="job_responsibilities" property="jobResponsibilities" /> + <result column="incumbent_id" property="incumbentId" /> + <result column="submitting_operator" property="submittingOperator" /> + <result column="submitting_date" property="submittingDate" /> + <result column="supervisor_id" property="supervisorId" /> + <result column="incumbent_operator" property="incumbentOperator" /> + <result column="incumbent_date" property="incumbentDate" /> + <result column="supervisor_operator" property="supervisorOperator" /> + <result column="supervisor_date" property="supervisorDate" /> + </resultMap> + + <select id="personJobResponsibilitiesSelect" resultType="com.ruoyi.personnel.dto.PersonJobResponsibilitiesDto"> + select cpt.*, u.name incumbent_name, su.name supervisor_name, dl.name depart_lims_name, u.account + from cnas_person_job_responsibilities cpt + left join user u on cpt.incumbent_id = u.id + left join user su on cpt.supervisor_id = su.id + left join department_lims dl on dl.id = SUBSTRING_INDEX(SUBSTRING_INDEX(u.depart_lims_id, ',', -2), ',', 1) + <where> + <if test="userId != null and userId != ''"> + and cpt.incumbent_id = #{userId} + </if> + <if test="departmentId != null and departmentId != ''"> + and FIND_IN_SET(#{departmentId}, u.depart_lims_id) + </if> + <if test="userName != null and userName != ''"> + and u.name like concat('%', #{userName}, '%') + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml new file mode 100644 index 0000000..343b1b5 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonPersonnelCapacityMapper.xml @@ -0,0 +1,168 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonPersonnelCapacityMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonPersonnelCapacity"> + <id column="id" property="id" /> + <result column="academic_degree" property="academicDegree" /> + <result column="academic_conform_not" property="academicConformNot" /> + <result column="academic_remarks" property="academicRemarks" /> + <result column="related_years" property="relatedYears" /> + <result column="related_years_conform_not" property="relatedYearsConformNot" /> + <result column="related_years_remarks" property="relatedYearsRemarks" /> + <result column="related_training" property="relatedTraining" /> + <result column="related_training_conform_not" property="relatedTrainingConformNot" /> + <result column="related_training_remarks" property="relatedTrainingRemarks" /> + <result column="relevant_experience" property="relevantExperience" /> + <result column="relevant_experience_conform_not" property="relevantExperienceConformNot" /> + <result column="relevant_experience_remarks" property="relevantExperienceRemarks" /> + <result column="work_license" property="workLicense" /> + <result column="work_license_conform_not" property="workLicenseConformNot" /> + <result column="work_license_remarks" property="workLicenseRemarks" /> + <result column="job_responsibilities" property="jobResponsibilities" /> + <result column="job_responsibilities_conform_not" property="jobResponsibilitiesConformNot" /> + <result column="job_responsibilities_remarks" property="jobResponsibilitiesRemarks" /> + <result column="comprehensive_assessment" property="comprehensiveAssessment" /> + <result column="submit_operating_personnel_id" property="submitOperatingPersonnelId" /> + <result column="submit_date" property="submitDate" /> + <result column="confirm_operating_personnel_id" property="confirmOperatingPersonnelId" /> + <result column="confirm_date" property="confirmDate" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + <result column="create_user" property="createUser" /> + <result column="update_user" property="updateUser" /> + <result column="user_id" property="userId" /> + </resultMap> + + <resultMap id="BaseResultMapDto" type="com.ruoyi.personnel.dto.PersonPersonnelCapacityDto" extends="BaseResultMap"> + <result column="submit_operating_personnel_name" property="submitOperatingPersonnelName" /> + <result column="confirm_operating_personnel_name" property="confirmOperatingPersonnelName" /> + <result column="user_name" property="userName" /> + <result column="place_work" property="placeWork" /> + <result column="post_name" property="postName" /> + <result column="responsibilities" property="responsibilities" /> + <result column="major" property="major" /> + </resultMap> + + <select id="personPersonnelCapacityPage" resultMap="BaseResultMapDto"> + select cppc.*, + u1.name submit_operating_personnel_name, + u2.name confirm_operating_personnel_name, + u3.name user_name, + cpbi.post_name, + p.place_work, + ecp.responsibilities, + TRIM(',' FROM CONCAT(cpbi.major1, ',', cpbi.major2)) AS major + from cnas_person_personnel_capacity cppc + left join user u1 on cppc.submit_operating_personnel_id = u1.id + left join user u2 on cppc.confirm_operating_personnel_id = u2.id + left join user u3 on cppc.user_id = u3.id + -- 鍙栧矖浣� + left join cnas_person_basic_info cpbi on cpbi.user_id = cppc.user_id + -- 鍙栦汉鍛樿兘鍔涚殑宸ヤ綔缁忓巻 + left join (select GROUP_CONCAT(cptr.place_work) place_work, cptr.user_id from cnas_person_track_record cptr + where cptr.place_work like concat('%' ,'涓ぉ', '%') + GROUP BY cptr.user_id) p on u3.id = p.user_id + -- 鍙栦汉鍛樿兘鍔涚殑宀椾綅鑱岃矗 + left join (SELECT GROUP_CONCAT(e.label) responsibilities, cppc.id + from cnas_person_personnel_capacity cppc + left join enums e on FIND_IN_SET(e.value, cppc.job_responsibilities) + where e.category = '宀椾綅鑱岃矗' + GROUP BY cppc.id) ecp on ecp.id = cppc.id + <where> + <if test="userId != null and userId != ''"> + and cppc.user_id = #{userId} + </if> + <if test="departLimsId != null and departLimsId != ''"> + and FIND_IN_SET(#{departLimsId}, u3.depart_lims_id) + </if> + <if test="userName != null and userName != ''"> + and u3.name like concat('%', #{userName}, '%') + </if> + </where> + </select> + + <!-- 鏌ヨ浜哄憳鑳藉姏鎺ュ彛 --> + <select id="selectExportPersonnelCapacity" + resultType="com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto"> + select cppc.*, + cpbi.post postName, + u1.name userName, + cpbi.official_academic_redentials, + cpbi.major1, + cpbi.professional_title, + p.place_work, + TRIM(',' FROM CONCAT(cpbi.major1, ',', cpbi.major2)) AS major, + case when cppc.academic_conform_not = 1 then '鈽�' + else '鈻�' end academicConformNot1,-- 瀛﹀巻 + case when cppc.academic_conform_not = 2 then '鈽�' + else '鈻�' end academicConformNot2, + case when cppc.academic_conform_not = 3 then '鈽�' + else '鈻�' end academicConformNot3, + case when cppc.related_years_conform_not = 1 then '鈽�' + else '鈻�' end relatedYearsConformNot1,-- 鐩稿叧骞撮檺 + case when cppc.related_years_conform_not = 2 then '鈽�' + else '鈻�' end relatedYearsConformNot2, + case when cppc.related_years_conform_not = 3 then '鈽�' + else '鈻�' end relatedYearsConformNot3, + case when cppc.related_training_conform_not = 1 then '鈽�' + else '鈻�' end relatedTrainingConformNot1,-- 鐩稿叧鍩硅 + case when cppc.related_training_conform_not = 2 then '鈽�' + else '鈻�' end relatedTrainingConformNot2, + case when cppc.related_training_conform_not = 3 then '鈽�' + else '鈻�' end relatedTrainingConformNot3, + case when cppc.relevant_experience_conform_not = 1 then '鈽�' + else '鈻�' end relevantExperienceConformNot1,-- 鐩稿叧缁忛獙 + case when cppc.relevant_experience_conform_not = 2 then '鈽�' + else '鈻�' end relevantExperienceConformNot2, + case when cppc.relevant_experience_conform_not = 3 then '鈽�' + else '鈻�' end relevantExperienceConformNot3, + case when cppc.work_license_conform_not = 1 then '鈽�' + else '鈻�' end workLicenseConformNot1,-- 涓婂矖璇� + case when cppc.work_license_conform_not = 2 then '鈽�' + else '鈻�' end workLicenseConformNot2, + case when cppc.work_license_conform_not = 3 then '鈽�' + else '鈻�' end workLicenseConformNot3, + case when cppc.job_responsibilities_conform_not = 1 then '鈽�' + else '鈻�' end jobResponsibilitiesConformNot1,-- 宀椾綅鑱岃矗 + case when cppc.job_responsibilities_conform_not = 2 then '鈽�' + else '鈻�' end jobResponsibilitiesConformNot2, + case when cppc.job_responsibilities_conform_not = 3 then '鈽�' + else '鈻�' end jobResponsibilitiesConformNot3, + case when cppc.comprehensive_assessment = 'Qualified this position' then '鈽�' + else '鈻�' end comprehensiveAssessment1,-- 缁煎悎璇勪环 + case when cppc.comprehensive_assessment = 'You can work while training' then '鈽�' + else '鈻�' end comprehensiveAssessment2, + case when cppc.comprehensive_assessment = 'Iconpetent for the position' then '鈽�' + else '鈻�' end comprehensiveAssessment3, + case when find_in_set(1, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities1, + case when find_in_set(2, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities2, + case when find_in_set(3, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities3, + case when find_in_set(4, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities4, + case when find_in_set(5, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities5, + case when find_in_set(6, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities6, + case when find_in_set(7, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities7, + case when find_in_set(8, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities8, + case when find_in_set(9, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities9, + case when find_in_set(10, cppc.job_responsibilities) then '鈽�' + else '鈻�' end jobResponsibilities10 + from cnas_person_personnel_capacity cppc + left join user u1 on cppc.user_id = u1.id + left join cnas_person_basic_info cpbi on cpbi.user_id = cppc.user_id + left join (select GROUP_CONCAT(cptr.place_work) place_work, cptr.user_id + from cnas_person_track_record cptr + where cptr.place_work like concat('%', '涓ぉ', '%') + GROUP BY cptr.user_id) p on u1.id = p.user_id + where cppc.id = #{id} + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonPostAuthorizationRecordMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonPostAuthorizationRecordMapper.xml new file mode 100644 index 0000000..5152820 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonPostAuthorizationRecordMapper.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonPostAuthorizationRecordMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord"> + <id column="id" property="id" /> + <result column="certificate_number" property="certificateNumber" /> + <result column="user_id" property="userId" /> + <result column="post" property="post" /> + <result column="operation_type" property="operationType" /> + <result column="file_name" property="fileName" /> + <result column="system_file_name" property="systemFileName" /> + <result column="remarks" property="remarks" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + <result column="update_user" property="updateUser" /> + <result column="create_user" property="createUser" /> + <result column="num1" property="num1" /> + <result column="num2" property="num2" /> + </resultMap> + + <select id="personPostAuthorizationRecordPage" resultType="com.ruoyi.personnel.dto.PersonPostAuthorizationRecordDto"> + select cppar.*, us.name create_user_name, u.account account, u.name user_name + from cnas_person_post_authorization_record cppar + left join user u on cppar.user_id = u.id + left join user us on cppar.create_user = us.id + <where> + <if test="userId != null and userId != ''"> + and cppar.user_id = #{userId} + </if> + <if test="departLimsId != null and departLimsId != ''"> + and FIND_IN_SET(#{departLimsId},u.depart_lims_id) + </if> + <if test="userName != null and userName != ''"> + and u.name like concat('%', #{userName}, '%') + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml new file mode 100644 index 0000000..f9ff542 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonRewardPunishmentRecordMapper.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonRewardPunishmentRecordMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonRewardPunishmentRecord"> + <id column="id" property="id" /> + <result column="reward_punish_level" property="rewardPunishLevel" /> + <result column="reward_punish_name" property="rewardPunishName" /> + <result column="reward_punish_time" property="rewardPunishTime" /> + <result column="reward_punish_work_unit" property="rewardPunishWorkUnit" /> + <result column="reward_punish_content" property="rewardPunishContent" /> + <result column="user_id" property="userId" /> + <result column="create_user" property="createUser" /> + </resultMap> + + <select id="rewardPunishmentPage" resultType="com.ruoyi.personnel.dto.PersonRewardPunishmentRecordDto"> + select cprpr.*, us.name create_user_name, u.account account, u.name user_name + from cnas_person_reward_punishment_record cprpr + left join user u on cprpr.user_id = u.id + left join user us on cprpr.create_user = us.id + <where> + <if test="userId != null and userId != ''"> + and cprpr.user_id = #{userId} + </if> + <if test="userName != null and userName != ''"> + and u.name like concat('%', #{userName}, '%') + </if> + <if test="startTime != null and endTime != null"> + AND DATE(cprpr.reward_punish_time) BETWEEN #{startTime} AND #{endTime} + </if> + <if test="departmentId != null and departmentId != ''"> + and FIND_IN_SET(#{departmentId}, u.depart_lims_id) + </if> + </where> + </select> + + <select id="rewardPunishmentExport" resultType="com.ruoyi.personnel.excel.PersonRewardPunishmentRecordExcel"> + select cprpr.*, us.name create_user_name, u.account account, u.name user_name + from cnas_person_reward_punishment_record cprpr + left join user u on cprpr.user_id = u.id + left join user us on cprpr.create_user = us.id + <where> + <if test="userId != null and userId != ''"> + and cprpr.user_id = #{userId} + </if> + <if test="departmentId != null and departmentId != ''"> + and FIND_IN_SET(#{departmentId},u.depart_lims_id) + </if> + <if test="userName != null and userName != ''"> + and u.name like concat('%', #{userName}, '%') + </if> + <if test="startTime != null and endTime != null"> + AND DATE(cprpr.reward_punish_time) BETWEEN #{startTime} AND #{endTime} + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonSupervisePlanDetailsMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonSupervisePlanDetailsMapper.xml new file mode 100644 index 0000000..bf4039c --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonSupervisePlanDetailsMapper.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.ruoyi.personnel.mapper.PersonSupervisePlanDetailsMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonSupervisePlanDetails"> + <id column="id" property="id" /> + <result column="supervise_date" property="superviseDate" /> + <result column="supervise_des" property="superviseDes" /> + <result column="supervise_person" property="supervisePerson" /> + <result column="remarks" property="remarks" /> + <result column="create_time" property="createTime" /> + <result column="create_user" property="createUser" /> + <result column="supervise_project" property="superviseProject" /> + <result column="supervise_reason" property="superviseReason" /> + </resultMap> + + <select id="pageByDate" resultType="com.ruoyi.personnel.dto.PersonSupervisePlanDetailsDto"> + SELECT + cpspd.id, + DATE_FORMAT( cpspd.supervise_date, '%Y-%m-%d' ) supervise_date, + cpspd.supervise_des, + cpspd.supervise_person, + cpspd.remarks, + cpspd.create_time, + cpspd.create_user, + cpspd.supervise_project, + cpspd.supervise_reason, + cpspd.plan_id, + u.NAME create_by + from cnas_person_supervise_plan_details cpspd + left join user u on u.id = cpspd.create_user + where cpspd.plan_id = #{planId} + <if test="date != null and date != ''"> + and date_format(cpspd.supervise_date,'%Y-%m-%d') = #{date} + </if> + <if test="project != null and project != ''"> + and cpspd.supervise_project like concat('%', #{project}, '%') + </if> + order by cpspd.id ASC + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonSupervisePlanMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonSupervisePlanMapper.xml new file mode 100644 index 0000000..f4e3bd6 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonSupervisePlanMapper.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonSupervisePlanMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonSupervisePlan"> + <id column="id" property="id" /> + <result column="file_name" property="fileName" /> + <result column="organization_person_id" property="organizationPersonId" /> + <result column="organization_date" property="organizationDate" /> + <result column="approval_id" property="approvalId" /> + <result column="approval_date" property="approvalDate" /> + <result column="approval_status" property="approvalStatus" /> + <result column="create_time" property="createTime" /> + <result column="create_user" property="createUser" /> + <result column="update_time" property="updateTime" /> + <result column="update_user" property="updateUser" /> + </resultMap> + + <select id="pageByPerson" resultType="com.ruoyi.personnel.dto.PersonSupervisePlanDto"> + select cpsp.*, u1.name organization_person_name, u2.name approval_name, u3.name create_name + from cnas_person_supervise_plan cpsp + left join user u1 on cpsp.organization_person_id = u1.id + left join user u2 on cpsp.approval_id = u2.id + left join user u3 on cpsp.create_user = u3.id + <where> + <if test="organizationPerson != null and organizationPerson != ''"> + and u1.name =#{organizationPerson} + </if> + <if test="departId !='' and departId != null"> + and cpsp.depart_id = #{departId} + </if> + </where> + order by create_time desc + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonSupervisionControlSheetMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonSupervisionControlSheetMapper.xml new file mode 100644 index 0000000..0aad671 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonSupervisionControlSheetMapper.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.ruoyi.personnel.mapper.PersonSupervisionControlSheetMapper"> + + <!-- 鏌ヨ鐩戠潱璁板綍鎺у埗鍗� --> + + <select id="selectSupervisionControl" + resultType="com.ruoyi.personnel.dto.PersonSupervisionControlSheetExportDto"> + select scs.*, + dl1.name occurrenceDepartmentString, + u1.name departmentHead, + dl2.name discovererDepartment, + DATE_FORMAT(scs.discoverer_date, '%Y-%m-%d') discovererDateString, + u3.name supervisedPerson, + dl4.name responsibleDepartment, + DATE_FORMAT(scs.responsible_department_date, '%Y-%m-%d') responsibleDepartmentDateString, + DATE_FORMAT(scs.corrective_measure_date, '%Y-%m-%d') correctiveMeasureDateString, + DATE_FORMAT(scs.quality_supervisor_date, '%Y-%m-%d') qualitySupervisorDateString, + case when scs.corrective_measure_follow_tracks = 1 then '鈽�' + else '鈻�' end correctiveMeasureFollowTracksYes, + case when scs.corrective_measure_follow_tracks = 2 then '鈽�' + else '鈻�' end correctiveMeasureFollowTracksNo, + case when scs.whether_inform_customer = 1 then '鈽�' + else '鈻�' end whetherInformCustomerYes, + case when scs.whether_inform_customer = 2 then '鈽�' + else '鈻�' end whetherInformCustomerNo, + case when scs.whether_resume_work = 1 then '鈽�' + else '鈻�' end whetherResumeWorkYes, + case when scs.whether_resume_work = 2 then '鈽�' + else '鈻�' end whetherResumeWorkNo + from cnas_person_supervision_control_sheet scs + left join user u1 on u1.id = scs.department_head_id -- 閮ㄩ棬璐熻矗浜� + left join department_lims dl1 on find_in_set(dl1.id, u1.depart_lims_id) and dl1.id != 1 + left join user u2 on u2.id = scs.discoverer_id -- 鍙戠幇閮ㄩ棬 + left join department_lims dl2 on find_in_set(dl2.id, u2.depart_lims_id) and dl2.id != 1 + left join user u3 on u3.id = scs.supervised_person_id -- 琚洃鐫d汉 + left join user u4 on u4.id = scs.responsible_department_person_id -- 璐d换閮ㄩ棬 + left join department_lims dl4 on find_in_set(dl4.id, u4.depart_lims_id) and dl4.id != 1 + where scs.supervision_record_id = #{supervisionRecordId} + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonSupervisionProcessingSheetMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonSupervisionProcessingSheetMapper.xml new file mode 100644 index 0000000..57f6aeb --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonSupervisionProcessingSheetMapper.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonSupervisionProcessingSheetMapper"> + + <!-- 鏌ヨ浜哄憳鐩戠潱璁板綍澶勭悊鍗� --> + <select id="selectProcessingSheet" resultType="com.ruoyi.personnel.dto.PersonSupervisionProcessingSheetDto"> + select sps.*, + dl1.name proposing_department, + dl2.name cause_analysis_department, + dl3.name corrective_action, + dl4.name verification_department, + DATE_FORMAT(sps.proposing_department_date, '%Y-%m-%d') AS proposing_department_date_string, + DATE_FORMAT(sps.cause_analysis_date, '%Y-%m-%d') AS cause_analysis_date_string, + DATE_FORMAT(sps.corrective_action_date, '%Y-%m-%d') AS corrective_action_date_string, + DATE_FORMAT(sps.verification_department_date, '%Y-%m-%d') AS verification_department_date_string + from cnas_person_supervision_processing_sheet sps + left join user u1 on u1.id = sps.proposing_department_person_id + left join user u2 on u2.id = sps.cause_analysis_person_id + left join user u3 on u3.id = sps.corrective_action_id + left join user u4 on u4.id = sps.verification_department_person_id + left join department_lims dl1 on find_in_set(dl1.id, u1.depart_lims_id) and dl1.id != 1 + left join department_lims dl2 on find_in_set(dl2.id, u2.depart_lims_id) and dl2.id != 1 + left join department_lims dl3 on find_in_set(dl3.id, u3.depart_lims_id) and dl3.id != 1 + left join department_lims dl4 on find_in_set(dl4.id, u4.depart_lims_id) and dl4.id != 1 + where sps.supervision_record_id = #{supervisionRecordId} + </select> + +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonSupervisionRecordMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonSupervisionRecordMapper.xml new file mode 100644 index 0000000..e27b243 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonSupervisionRecordMapper.xml @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonSupervisionRecordMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonSupervisionRecord"> + <id column="id" property="id" /> + <result column="tester_id" property="testerId" /> + <result column="supervisor_id" property="supervisorId" /> + <result column="test_item" property="testItem" /> + <result column="sample_number" property="sampleNumber" /> + <result column="detection_date" property="detectionDate" /> + <result column="personnel" property="personnel" /> + <result column="instrument_equipment" property="instrumentEquipment" /> + <result column="working_environment" property="workingEnvironment" /> + <result column="sample_collection" property="sampleCollection" /> + <result column="sample_preparation" property="samplePreparation" /> + <result column="test_method" property="testMethod" /> + <result column="test_report" property="testReport" /> + <result column="evaluation_supervision_situation" property="evaluationSupervisionSituation" /> + <result column="do_not_meet_the_handling_opinions" property="doNotMeetTheHandlingOpinions" /> + <result column="technical_director" property="technicalDirector" /> + <result column="technical_director_date" property="technicalDirectorDate" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + <result column="create_user" property="createUser" /> + <result column="update_user" property="updateUser" /> + </resultMap> + + <select id="personSupervisionRecordPage" resultType="com.ruoyi.personnel.dto.PersonSupervisionRecordDto"> + select cpsr.*, u1.name tester_name, u2.name supervisor_name, u3.name technical_director_name, + cp.personnel_name, cpscs.current_state current_state_control, cpscs.corrective_measure, cpsps.current_state current_state_processing,u2.depart_lims_id + from cnas_person_supervision_record cpsr + left join user u1 on cpsr.tester_id = u1.id + left join user u2 on cpsr.supervisor_id = u2.id + left join user u3 on cpsr.technical_director = u3.id + left join ( + select GROUP_CONCAT(u.name) personnel_name, cp.id + from cnas_person_supervision_record cp + left join user u on FIND_IN_SET(u.id, cp.personnel) + GROUP BY cp.id + ) cp on cp.id = cpsr.id + left join cnas_person_supervision_control_sheet cpscs on cpscs.supervision_record_id = cpsr.id + left join cnas_person_supervision_processing_sheet cpsps on cpsps.supervision_record_id = cpsr.id + <where> + <if test="userId != null and userId != ''"> + and cpsr.supervisor_id = #{userId} + </if> + <if test="departLimsId != null and departLimsId != ''"> + <!--and FIND_IN_SET(#{departLimsId}, u2.depart_lims_id)--> + and cpsr.depart_lims_id = #{departLimsId} + </if> + <if test="userName != null and userName != ''"> + and u2.name like concat('%', #{userName}, '%') + </if> + </where> + order by cpsr.id desc + </select> + + <!-- 鏌ヨ鐩戠潱璁板綍璇︽儏 --> + <select id="selectPersonSupervisionRecord" resultType="com.ruoyi.personnel.dto.PersonSupervisionRecordDto"> + select cpsr.*, u1.name tester_name, u2.name supervisor_name, u3.name technical_director_name, + cp.personnel_name, cpscs.current_state current_state_control, cpsps.current_state current_state_processing + from cnas_person_supervision_record cpsr + left join user u1 on cpsr.tester_id = u1.id + left join user u2 on cpsr.supervisor_id = u2.id + left join user u3 on cpsr.technical_director = u3.id + left join ( + select GROUP_CONCAT(u.name) personnel_name, cp.id + from cnas_person_supervision_record cp + left join user u on FIND_IN_SET(u.id, cp.personnel) + GROUP BY cp.id + ) cp on cp.id = cpsr.id + left join cnas_person_supervision_control_sheet cpscs on cpscs.supervision_record_id = cpsr.id + left join cnas_person_supervision_processing_sheet cpsps on cpsps.supervision_record_id = cpsr.id + where cpsr.id = #{id} + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonTrackRecordMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonTrackRecordMapper.xml new file mode 100644 index 0000000..d86f987 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonTrackRecordMapper.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonTrackRecordMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonTrackRecord"> + <id column="id" property="id" /> + <result column="start_time" property="startTime" /> + <result column="end_time" property="endTime" /> + <result column="place_work" property="placeWork" /> + <result column="department" property="department" /> + <result column="post" property="post" /> + <result column="remarks" property="remarks" /> + <result column="create_time" property="createTime" /> + <result column="create_user" property="createUser" /> + <result column="user_id" property="userId" /> + <result column="file_name" property="fileName" /> + </resultMap> + + <select id="personTrackRecordSelect" resultType="com.ruoyi.personnel.pojo.PersonTrackRecord"> + select cpt.* + from cnas_person_track_record cpt + left join user u on cpt.user_id = u.id + <where> + <if test="userId != null and userId != '' and userId != 'null'"> + and cpt.user_id = #{userId} + </if> + <if test="departLimsId != null and departLimsId != '' and departLimsId != 'null'"> + and FIND_IN_SET(#{departLimsId},u.depart_lims_id) + </if> + </where> + </select> + + <select id="personTrackRecordExport" resultMap="BaseResultMap"> + select * + from cnas_person_track_record cpt + left join user u on cpt.user_id = u.id + <where> + <if test="userId != null and userId != '' and userId != 'null'"> + and cpt.user_id = #{userId} + </if> + <if test="departLimsId != null and departLimsId != '' and departLimsId != 'null'"> + and FIND_IN_SET(#{departLimsId},u.depart_lims_id) + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonTrainingDetailedMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonTrainingDetailedMapper.xml new file mode 100644 index 0000000..29b6de6 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonTrainingDetailedMapper.xml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonTrainingDetailedMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonTrainingDetailed"> + <id column="id" property="id" /> + <result column="course_code" property="courseCode" /> + <result column="training_objectives" property="trainingObjectives" /> + <result column="training_content" property="trainingContent" /> + <result column="training_mode" property="trainingMode" /> + <result column="state" property="state" /> + <result column="participants" property="participants" /> + <result column="holding_department" property="holdingDepartment" /> + <result column="place_training" property="placeTraining" /> + <result column="training_lecturer_id" property="trainingLecturerId" /> + <result column="training_date" property="trainingDate" /> + <result column="opening_time" property="openingTime" /> + <result column="class_hour" property="classHour" /> + <result column="remarks" property="remarks" /> + <result column="create_time" property="createTime" /> + <result column="create_user" property="createUser" /> + <result column="update_user" property="updateUser" /> + <result column="update_time" property="updateTime" /> + </resultMap> + + <select id="queryTheAnnualPlanDetailsTable" resultType="com.ruoyi.personnel.dto.PersonTrainingDetailedDto"> + SELECT cptd.*, + cpt.depart_id as departId, + <!-- u1.name training_lecturer_name,--> + dl.name holding_department_name, !isnull(cptr.training_record_id) whether_claim + FROM cnas_person_training_detailed cptd + <!-- left join user u1 on cptd.training_lecturer_id = u1.id--> + left join department_lims dl on dl.id = cptd.holding_department + left join cnas_person_training_record cptr on + <!--cptr.user_id = #{loginUserId} and --> + cptr.course_id = cptd.id + left join cnas_person_training cpt on cpt.id = cptd.plan_id + <where> + <if test="id != null"> + and cptd.plan_id = #{id} + </if> + <if test="userId != null"> + and cptr.user_id = #{userId} + </if> + <if test="courseCode != null and courseCode != ''"> + and cptd.course_code like concat('%', #{courseCode}, '%') + </if> + <if test="trainingLecturerName != null and trainingLecturerName != ''"> + and cptd.training_lecturer_id like concat('%', #{trainingLecturerName}, '%') + </if> + <if test="trainingDate != null and trainingDate != ''"> + and cptd.training_date_two = #{trainingDate} + </if> + <if test="state != null and state != ''"> + and cptd.state = 3 + </if> + <if test="state == null || state == ''"> + and cptd.state != 3 + </if> + + </where> + GROUP BY + cptd.id + order by + CASE + WHEN cptd.training_date_two IS NULL THEN '9999-12-31' + ELSE cptd.training_date_two + END ASC, + CASE + WHEN cptd.opening_time IS NULL THEN '23:59:59' + ELSE cptd.opening_time + END ASC, + cptd.id ASC + </select> + + <!-- 鏍规嵁涓昏〃id鏌ヨ璇︽儏 --> + <select id="selectTrainingList" resultType="com.ruoyi.personnel.dto.PersonTrainingDetailedDto"> + <!--SELECT cptd.*, + u1.name training_lecturer_name + FROM cnas_person_training_detailed cptd + left join user u1 on cptd.training_lecturer_id = u1.id + where cptd.plan_id = #{trainingId}--> + + SELECT cptd.* + FROM cnas_person_training_detailed cptd + where cptd.plan_id = #{trainingId} + </select> + + <!-- 鏌ヨ璇︾粏 --> + <select id="selectTrainingDetail" resultType="com.ruoyi.personnel.dto.PersonTrainingDetailedDto"> + SELECT cptd.*, + u1.name training_lecturer_name + FROM cnas_person_training_detailed cptd + left join user u1 on cptd.training_lecturer_id = u1.id + where cptd.id = #{id} + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonTrainingMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonTrainingMapper.xml new file mode 100644 index 0000000..2833117 --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonTrainingMapper.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonTrainingMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonTraining"> + <id column="id" property="id" /> + <result column="file_name" property="fileName" /> + <result column="compiler_id" property="compilerId" /> + <result column="compilation_date" property="compilationDate" /> + <result column="reviewer_id" property="reviewerId" /> + <result column="audit_date" property="auditDate" /> + <result column="audit_remarks" property="auditRemarks" /> + <result column="approver_id" property="approverId" /> + <result column="approval_remarks" property="approvalRemarks" /> + <result column="approval_status" property="approvalStatus" /> + <result column="approval_date" property="approvalDate" /> + <result column="create_time" property="createTime" /> + <result column="create_user" property="createUser" /> + <result column="update_time" property="updateTime" /> + <result column="update_user" property="updateUser" /> + </resultMap> + + <!-- 鏍规嵁鍒涘缓浜虹殑閮ㄩ棬绛涢�夋暟鎹紝鍙槸鍒涘缓浜哄彲鑳芥湭鍒嗛厤閮ㄩ棬涔熼渶瑕佹煡鐪� --> + <select id="personTrainingSelect" resultType="com.ruoyi.personnel.dto.PersonTrainingDto"> + select * from( + + + SELECT + cpt.*, + u1.name compiler_name, + u2.name reviewer_name, + u3.name approver_name, + u4.name create_user_name + FROM + cnas_person_training cpt + LEFT JOIN user u1 ON cpt.compiler_id = u1.id + LEFT JOIN user u2 ON cpt.reviewer_id = u2.id + LEFT JOIN user u3 ON cpt.approver_id = u3.id + LEFT JOIN user u4 ON cpt.create_user = u4.id + <where> +<!-- <if test="departLimsId != null and departLimsId != ''">--> +<!-- and FIND_IN_SET(#{departLimsId}, u4.depart_lims_id)--> +<!-- </if>--> + <if test="departLimsId != null and departLimsId != ''"> + and cpt.depart_id = #{departLimsId} + </if> + <if test="compilerName != null and compilerName != ''"> + and u4.name like concat('%', #{compilerName}, '%') + </if> + </where> + union + SELECT + cpt.*, + u1.name compiler_name, + u2.name reviewer_name, + u3.name approver_name, + u4.name create_user_name + FROM + cnas_person_training cpt + LEFT JOIN user u1 ON cpt.compiler_id = u1.id + LEFT JOIN user u2 ON cpt.reviewer_id = u2.id + LEFT JOIN user u3 ON cpt.approver_id = u3.id + LEFT JOIN user u4 ON cpt.create_user = u4.id + WHERE + u4.depart_lims_id is not null and length(u4.depart_lims_id) = 0 + <if test="compilerName != null and compilerName != ''"> + and u4.name like concat('%', #{compilerName}, '%') + </if> + )a order by id desc + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml new file mode 100644 index 0000000..1748f8b --- /dev/null +++ b/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.personnel.mapper.PersonTrainingRecordMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ruoyi.personnel.pojo.PersonTrainingRecord"> + <id column="training_record_id" property="trainingRecordId" /> + <result column="user_id" property="userId" /> + <result column="course_id" property="courseId" /> + <result column="examination_results" property="examinationResults" /> + </resultMap> + + <select id="trainingAndAssessmentRecordsPage" resultType="com.ruoyi.personnel.dto.PersonTrainingRecordDto"> + select cptr.*, u.account, u.name user_name, u.phone, r.role_name role_name + from cnas_person_training_record cptr + left join user u on u.id = cptr.user_id + left join sys_user_role ur on ur.user_id = u.id + left join sys_role r on ur.role_id=r.role_id + where cptr.course_id = #{trainingDetailedId} + <if test="userName != null and userName != ''"> + and u.name like concat('%', #{userName}, '%') + </if> + </select> + + <select id="personnelTrainingPersonnel" resultType="com.ruoyi.personnel.dto.PersonTrainingRecordListDto"> + select u.name, u.account, dl.name depart_lims_name, cpbi.professional_title, + cpbi.official_academic_redentials, cpbi.unit_time, u.id user_id + from user u + left join cnas_person_basic_info cpbi on cpbi.user_id = u.id + left join department_lims dl on dl.id = SUBSTRING_INDEX(SUBSTRING_INDEX(u.depart_lims_id, ',', -2), ',', 1) + where u.is_custom = 0 + <if test="userName != '' and userName != null and userName != 'null'"> + and u.name like concat('%', #{userName}, '%') + </if> + <if test="userId != null and userId != ''"> + and u.id = #{userId} + </if> + <if test="departLimsId != null and departLimsId != ''"> + and FIND_IN_SET(#{departLimsId}, u.depart_lims_id) + </if> + </select> + + <select id="queryPersonnelDetails" resultType="com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto"> + select cptd.training_date, cptd.training_content, cptd.class_hour, cptr.examination_results, cptd.remarks + from cnas_person_training_record cptr + inner join cnas_person_training_detailed cptd on cptd.id = cptr.course_id + <where> + <if test="userId != null and userId != ''"> + and cptr.user_id = #{userId} + </if> + </where> + </select> + + <!-- 鏍规嵁璇︽儏id鏌ヨ鍩硅淇℃伅 --> + <select id="selectListByTrainingDetailedId" resultType="com.ruoyi.personnel.dto.PersonTrainingRecordDto"> + select cptr.*, + u.name userName, + dl.name department + from cnas_person_training_record cptr + left join user u on u.id = cptr.user_id + left join department_lims dl on find_in_set(dl.id, u.depart_lims_id) and dl.id != 1 + where cptr.course_id = #{trainingDetailedId} + </select> + + <!-- 鏍规嵁id鏌ヨ浜哄憳淇℃伅 --> + <select id="selectUserTraining" resultType="com.ruoyi.personnel.dto.PersonTrainingRecordListDto"> + select u.name, + u.account, + dl.name depart_lims_name, + cpbi.professional_title, + cpbi.official_academic_redentials, + cpbi.unit_time, + cpbi.major1, + u.id user_id, + DATE_FORMAT(cpbi.unit_time, '%Y-%m-%d') AS unitTimeSting + from user u + left join cnas_person_basic_info cpbi on cpbi.user_id = u.id + left join department_lims dl on dl.id = SUBSTRING_INDEX(SUBSTRING_INDEX(u.depart_lims_id, ',', -2), ',', 1) + where u.is_custom = 0 + and u.id = #{userId} + </select> + + <!-- 鏍规嵁鐢ㄦ埛id鏌ヨ浜哄憳璁板綍 --> + <select id="selectPersonDetailedDtos" resultType="com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto"> + select cptd.training_date, + cptd.training_content, + cptd.class_hour, + cptr.examination_results, + cptd.remarks, + DATE_FORMAT(cptd.training_date, '%Y-%m-%d') AS trainingDateString + from cnas_person_training_record cptr + inner join cnas_person_training_detailed cptd on cptd.id = cptr.course_id + and cptr.user_id = #{userId} + <where> + <if test="year!= null and year!= ''"> + and YEAR(cptd.training_date) = ${year} + </if> + </where> + </select> + + <!--鏍规嵁鐢ㄦ埛id鍜屽勾浠芥煡璇汉鍛樻槑缁� 鍩硅璁板綍--> + <select id="queryPersonnelDetailsOfUserIdAndYear" + resultType="com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto"> + select cptd.training_date, cptd.training_content, cptd.class_hour, cptr.examination_results, cptd.remarks + from cnas_person_training_record cptr + inner join cnas_person_training_detailed cptd on cptd.id = cptr.course_id + <where> + <if test="userId != null and userId != ''"> + and cptr.user_id = #{userId} + </if> + <if test="year!= null and year!= ''"> + and YEAR(cptd.training_date) = ${year} + </if> + </where> + </select> + + <!-- 鏍规嵁鐢ㄦ埛id鍜屽勾浠芥煡璇汉鍛樻槑缁� 鍩硅璁板綍瀵煎嚭 --> + <select id="selectPersonDetailedDtosByTrainingDate" + resultType="com.ruoyi.personnel.dto.TrainingRecordPersonDetailedDto"> + select cptd.training_date, + cptd.training_content, + cptd.class_hour, + cptr.examination_results, + cptd.remarks, + DATE_FORMAT(cptd.training_date, '%Y-%m-%d') AS trainingDateString + from cnas_person_training_record cptr + inner join cnas_person_training_detailed cptd on cptd.id = cptr.course_id + and cptr.user_id = #{userId} + <where> + <if test="year!= null and year!= ''"> + and YEAR(cptd.training_date) = ${year} + </if> + </where> + </select> +</mapper> diff --git a/cnas-personnel/src/main/resources/static/communication-deal.docx b/cnas-personnel/src/main/resources/static/communication-deal.docx new file mode 100644 index 0000000..9045072 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/communication-deal.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/credentials-deal.docx b/cnas-personnel/src/main/resources/static/credentials-deal.docx new file mode 100644 index 0000000..2fda5fd --- /dev/null +++ b/cnas-personnel/src/main/resources/static/credentials-deal.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/explain-deal.docx b/cnas-personnel/src/main/resources/static/explain-deal.docx new file mode 100644 index 0000000..e755756 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/explain-deal.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/person-deal.docx b/cnas-personnel/src/main/resources/static/person-deal.docx new file mode 100644 index 0000000..ef69408 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/person-deal.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/person-training-record.docx b/cnas-personnel/src/main/resources/static/person-training-record.docx new file mode 100644 index 0000000..2d7698b --- /dev/null +++ b/cnas-personnel/src/main/resources/static/person-training-record.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/person-training.docx b/cnas-personnel/src/main/resources/static/person-training.docx new file mode 100644 index 0000000..4304dc3 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/person-training.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/personnel-capacity.docx b/cnas-personnel/src/main/resources/static/personnel-capacity.docx new file mode 100644 index 0000000..82e7cfc --- /dev/null +++ b/cnas-personnel/src/main/resources/static/personnel-capacity.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/super-vise-plan.docx b/cnas-personnel/src/main/resources/static/super-vise-plan.docx new file mode 100644 index 0000000..411e306 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/super-vise-plan.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/supervision-control-sheet.docx b/cnas-personnel/src/main/resources/static/supervision-control-sheet.docx new file mode 100644 index 0000000..2300cb5 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/supervision-control-sheet.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/supervision-processing-sheet.docx b/cnas-personnel/src/main/resources/static/supervision-processing-sheet.docx new file mode 100644 index 0000000..052d7e4 --- /dev/null +++ b/cnas-personnel/src/main/resources/static/supervision-processing-sheet.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/supervision-record.docx b/cnas-personnel/src/main/resources/static/supervision-record.docx new file mode 100644 index 0000000..91baadd --- /dev/null +++ b/cnas-personnel/src/main/resources/static/supervision-record.docx Binary files differ diff --git a/cnas-personnel/src/main/resources/static/training-record.docx b/cnas-personnel/src/main/resources/static/training-record.docx new file mode 100644 index 0000000..b72514f --- /dev/null +++ b/cnas-personnel/src/main/resources/static/training-record.docx Binary files differ diff --git a/performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryWorkingHoursDay.java b/performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryWorkingHoursDay.java index a4fef6a..d95f8ff 100644 --- a/performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryWorkingHoursDay.java +++ b/performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryWorkingHoursDay.java @@ -1,15 +1,20 @@ package com.ruoyi.performance.pojo; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.*; +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.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; /** * <p> @@ -22,92 +27,98 @@ @Data @TableName("auxiliary_working_hours_day") @ApiModel(value = "AuxiliaryWorkingHoursDay瀵硅薄", description = "鏃ュ伐鏃剁鐞嗙殑杈呭姪宸ユ椂") -@ExcelIgnoreUnannotated public class AuxiliaryWorkingHoursDay implements Serializable { @TableId(value = "id", type = IdType.AUTO) + @ExcelIgnore private Integer id; @ApiModelProperty("濮撳悕id") + @ExcelIgnore private Integer nameUser; @ApiModelProperty("缂栧彿") - @ExcelProperty(index = 2, value = "缂栧彿") + @ExcelProperty(value = "缂栧彿") private String number; @ApiModelProperty("杈呭姪椤圭洰鍚嶇О") - @ExcelProperty(index = 3, value = "杈呭姪椤圭洰鍚嶇О") + @ExcelProperty(value = "杈呭姪椤圭洰鍚嶇О") private String auxiliaryProject; @ApiModelProperty("鏍稿噯宸ユ椂") - @ExcelProperty(index = 5, value = "鏍稿噯宸ユ椂") - private BigDecimal approvedWorkingHour; + @ExcelProperty(value = "鏍稿噯宸ユ椂") + private Double approvedWorkingHour; @ApiModelProperty("鏁伴噺") - @ExcelProperty(index = 6, value = "鏁伴噺") - private Integer amount; + @ExcelProperty(value = "鏁伴噺") + private Double amount; @ApiModelProperty("杈呭姪宸ユ椂") - @ExcelProperty(index = 7, value = "杈呭姪宸ユ椂") - private BigDecimal nonproductiveTime; + @ExcelProperty(value = "杈呭姪宸ユ椂") + private Double nonproductiveTime; @ApiModelProperty("杈呭姪璇存槑") - @ExcelProperty(index = 8, value = "杈呭姪璇存槑") + @ExcelProperty(value = "杈呭姪璇存槑") private String remarks; - @ApiModelProperty("澶嶆牳浜�") - @ExcelProperty(index = 9, value = "澶嶆牳浜�") - private String reviewer; - - @ApiModelProperty("澶嶆牳鏁伴噺") - @ExcelProperty(index = 10, value = "澶嶆牳鏁伴噺") - private Integer reviewerNumber; - - @ApiModelProperty("澶嶆牳宸ユ椂") - @ExcelProperty(index = 11, value = "澶嶆牳宸ユ椂") - private BigDecimal reviewerNonproductiveTime; - - @ApiModelProperty("澶嶆牳璇存槑") - @ExcelProperty(index = 12, value = "澶嶆牳璇存槑") - private String reviewerRemark; - - @ApiModelProperty("骞�") - @ExcelProperty(index = 13, value = "骞�") - private String year; - @ApiModelProperty("鐝") - @ExcelProperty(index = 14, value = "鐝") + @ExcelProperty(value = "鐝") private String shift; @ApiModelProperty("鍛ㄦ") - @ExcelProperty(index = 15, value = "鍛ㄦ") + @ExcelProperty(value = "鍛ㄦ") private String week; @ApiModelProperty("鏄熸湡") - @ExcelProperty(index = 16, value = "鏄熸湡") + @ExcelProperty(value = "鏄熸湡") private String weekDay; + + @ApiModelProperty("澶嶆牳浜�") + @ExcelProperty(value = "澶嶆牳浜�") + private String reviewer; + + @ApiModelProperty("澶嶆牳鏁伴噺") + @ExcelProperty(value = "澶嶆牳鏁伴噺") + private Double reviewerNumber; + + @ApiModelProperty("澶嶆牳宸ユ椂") + @ExcelProperty(value = "澶嶆牳宸ユ椂") + private Double reviewerNonproductiveTime; + + @ApiModelProperty("澶嶆牳璇存槑") + @ExcelProperty(value = "澶嶆牳璇存槑") + private String reviewerRemark; + + @ApiModelProperty("骞�") + @ExcelProperty(value = "骞�") + private String year; @ApiModelProperty("鍒涘缓鏃堕棿") @TableField(fill = FieldFill.INSERT) + @ExcelIgnore private LocalDateTime createTime; @ApiModelProperty("淇敼鏃堕棿") @TableField(fill = FieldFill.INSERT_UPDATE) + @ExcelIgnore private LocalDateTime updateTime; @ApiModelProperty("鍒涘缓浜篿d") @TableField(fill = FieldFill.INSERT) + @ExcelIgnore private Integer createUser; @ApiModelProperty("淇敼浜篿d") @TableField(fill = FieldFill.INSERT_UPDATE) + @ExcelIgnore private Integer updateUser; @ApiModelProperty("鐘舵��") - @ExcelProperty(index = 4, value = "鐘舵��") + @ExcelProperty(value = "鐘舵��") + @ExcelIgnore private String state; @ApiModelProperty("鏃ユ湡") - @ExcelProperty(index = 17, value = "鏃ユ湡") + @ExcelProperty(value = "鏃ユ湡") private String dateTime; } diff --git a/performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java b/performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java index a8524ef..d8974a9 100644 --- a/performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java +++ b/performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java @@ -160,7 +160,7 @@ map.put("浜ч噺宸ユ椂姹囨��", sumOutputWorkTime); if (ObjectUtils.isNotEmpty(auxiliaryWorkingHoursDays)) { for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) { - sumApprovedWorkingHour = sumApprovedWorkingHour.add(auxiliaryWorkingHoursDay.getReviewerNonproductiveTime());//澶嶆牳宸ユ椂 +// sumApprovedWorkingHour = sumApprovedWorkingHour.add(auxiliaryWorkingHoursDay.getReviewerNonproductiveTime());//澶嶆牳宸ユ椂 } } map.put("杈呭姪宸ユ椂姹囨��", sumApprovedWorkingHour); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java index 67cc35f..e93f447 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java @@ -5,9 +5,9 @@ import com.ruoyi.common.core.domain.entity.Company; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.core.dto.PersonDto; +import com.ruoyi.framework.util.HeaderToken; import com.ruoyi.system.service.UserService; import com.ruoyi.web.controller.dto.UpdateUserDto; -import com.ruoyi.web.controller.system.api.HeaderToken; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java new file mode 100644 index 0000000..4ec52e2 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DepartmentLims.java @@ -0,0 +1,42 @@ +package com.ruoyi.common.core.domain.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 閮ㄩ棬鏄庣粏 + * @TableName department_lims + */ +@TableName(value ="department_lims") +@Data +public class DepartmentLims implements Serializable { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("鍚嶇О") + private String name; + + @ApiModelProperty("鐖剁骇id") + private Integer fatherId; + + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @TableField(exist = false) + private List<DepartmentLims> children; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java index 2662b2d..3b9d9c7 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/User.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; import java.util.Date; /** @@ -83,7 +84,7 @@ @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "鍒涘缓鏃堕棿") - private Date createTime; + private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) @ApiModelProperty(value = "鏇存柊鑰�") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/DepartmentDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/DepartmentDto.java new file mode 100644 index 0000000..f29fac7 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/DepartmentDto.java @@ -0,0 +1,23 @@ +package com.ruoyi.common.core.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DepartmentDto { + + private Integer id; + + private String name; + + private Integer userId; + + private Integer fatherId; + + private List<DepartmentDto> children; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/UserPageDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/UserPageDto.java new file mode 100644 index 0000000..f4f82f7 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/dto/UserPageDto.java @@ -0,0 +1,24 @@ +package com.ruoyi.common.core.dto; + +import com.ruoyi.common.core.domain.entity.User; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserPageDto extends User { + + @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛") + private String createUserName; + + @ApiModelProperty(value = "鏇存柊鐢ㄦ埛") + private String updateUserName; + + @ApiModelProperty(value = "瑙掕壊") + private String roleName; + + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java index 7fb91ee..0ca66f5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateImageUtil.java @@ -9,6 +9,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -58,4 +59,41 @@ } return new ByteArrayInputStream(os.toByteArray()); } + + public static InputStream createDateImage(LocalDate date) { + int width = 80; + int height = 20; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); + if (date == null) { + date = LocalDate.now(); + } + String s = date.format(formatter); + + java.awt.Font font = new java.awt.Font("Serif", java.awt.Font.BOLD, 10); + // 鍒涘缓涓�涓敾甯冿紙鑳屾櫙閫忔槑锛� + BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + // 鑾峰彇鐢诲竷鐨勭敾绗� + Graphics2D g2 = (Graphics2D) bi.getGraphics(); + // 寮�濮嬬粯鍥� + g2.setComposite(java.awt.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/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/util/HeaderToken.java similarity index 98% rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java rename to ruoyi-framework/src/main/java/com/ruoyi/framework/util/HeaderToken.java index d1407cf..20eb3f4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/HeaderToken.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/util/HeaderToken.java @@ -1,4 +1,4 @@ -package com.ruoyi.web.controller.system.api; +package com.ruoyi.framework.util; import cn.hutool.core.bean.BeanUtil; import cn.hutool.http.HttpRequest; @@ -15,6 +15,7 @@ import com.ruoyi.common.core.domain.entity.Person; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.system.domain.AuthApi; import com.ruoyi.system.mapper.UserMapper; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -188,4 +189,4 @@ } return map; } -} \ No newline at end of file +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/util/TestApi.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/util/TestApi.java new file mode 100644 index 0000000..d19ddcd --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/util/TestApi.java @@ -0,0 +1,25 @@ +package com.ruoyi.framework.util; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.ruoyi.system.domain.AuthApi; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class TestApi { + + @Autowired + private HeaderToken headerToken; + + public void testApi() { + String accessToken =headerToken.getAccessToken(); + String apiUrl = AuthApi.companies; + // 鏇挎崲涓哄疄闄呯殑API绔偣URL + HttpRequest request = HttpRequest.get(apiUrl) + .header("Authorization", "Bearer " + accessToken); + HttpResponse response = request.execute(); + System.out.println("Response Code: " + response.getStatus()); + System.out.println("Response Body: " + response.body()); + } +} diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 6248a2c..07627a3 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -25,4 +25,4 @@ </dependencies> -</project> \ No newline at end of file +</project> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/AuthApi.java similarity index 96% rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java rename to ruoyi-system/src/main/java/com/ruoyi/system/domain/AuthApi.java index 0a38ac9..4e1d880 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/api/AuthApi.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/AuthApi.java @@ -1,4 +1,4 @@ -package com.ruoyi.web.controller.system.api; +package com.ruoyi.system.domain; public class AuthApi { @@ -54,4 +54,4 @@ public static String person = "https://ztt-connector.ztt.cn/api/org/v1/employees/simple/"; -} \ No newline at end of file +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java new file mode 100644 index 0000000..894912e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DepartmentLimsMapper.java @@ -0,0 +1,27 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.common.core.dto.DepartmentDto; + +import java.util.List; + +/** +* @author z1292 +* @description 閽堝琛ㄣ�恉epartment_lims(閮ㄩ棬鏄庣粏)銆戠殑鏁版嵁搴撴搷浣淢apper +* @createDate 2024-05-22 14:08:17 +* @Entity com.yuanchu.mom.pojo.DepartmentLims +*/ +public interface DepartmentLimsMapper extends BaseMapper<DepartmentLims> { + + //鑾峰彇閮ㄩ棬鏍� + List<DepartmentDto> selectDepartment(); + + //鏍规嵁閮ㄩ棬id,鏌ヨ浠栫殑鎵�鏈夊瓙绫籭d + List<Integer> selectSonById(Integer id); + +} + + + + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/DepartmentLimsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/DepartmentLimsService.java new file mode 100644 index 0000000..2e7a187 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/DepartmentLimsService.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.common.core.dto.DepartmentDto; + +import java.util.List; + +/** +* @author z1292 +* @description 閽堝琛ㄣ�恉epartment_lims(閮ㄩ棬鏄庣粏)銆戠殑鏁版嵁搴撴搷浣淪ervice +* @createDate 2024-05-22 14:08:17 +*/ +public interface DepartmentLimsService extends IService<DepartmentLims> { + + //娣诲姞閮ㄩ棬 + int addDepartment(DepartmentLims departmentLims); + + //鑾峰彇閮ㄩ棬鏍� + List<DepartmentDto> selectDepartment(); + + //鍒犻櫎閮ㄩ棬 + boolean delDepartment(Integer id); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentLimsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentLimsServiceImpl.java new file mode 100644 index 0000000..4d798bf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentLimsServiceImpl.java @@ -0,0 +1,86 @@ +package com.ruoyi.system.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.DepartmentLims; +import com.ruoyi.common.core.dto.DepartmentDto; +import com.ruoyi.system.mapper.DepartmentLimsMapper; +import com.ruoyi.system.service.DepartmentLimsService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** +* @author z1292 +* @description 閽堝琛ㄣ�恉epartment_lims(閮ㄩ棬鏄庣粏)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇 +* @createDate 2024-05-22 14:08:17 +*/ +@Service +@AllArgsConstructor +public class DepartmentLimsServiceImpl extends ServiceImpl<DepartmentLimsMapper, DepartmentLims> + implements DepartmentLimsService { + + DepartmentLimsMapper departmentMapper; + + @Override + public int addDepartment(DepartmentLims department) { + departmentMapper.insert(department); + return department.getId(); + } + + //鑾峰彇閮ㄩ棬鏍� + @Override + public List<DepartmentDto> selectDepartment() { + List<DepartmentDto> departments = departmentMapper.selectDepartment(); + //鑾峰彇鐖惰妭鐐� + List<DepartmentDto> collect = departments.stream().filter(m -> m.getFatherId() == null).peek( + (m) -> m.setChildren(getChildren(m, departments)) + ).collect(Collectors.toList()); + return collect; + } + + /** + * 閫掑綊鏌ヨ瀛愯妭鐐� + * @param root 鏍硅妭鐐� + * @param all 鎵�鏈夎妭鐐� + * @return 鏍硅妭鐐逛俊鎭� + */ + private List<DepartmentDto> getChildren(DepartmentDto root, List<DepartmentDto> all) { + return all.stream().filter(m -> Objects.equals(m.getFatherId(), root.getId())).peek( + (m) -> m.setChildren(getChildren(m, all)) + ).collect(Collectors.toList()); + } + + //鍒犻櫎閮ㄩ棬 + @Override + public boolean delDepartment(Integer id) { + //鍒ゆ柇鏄惁鏈夊瓙绫�,鐩村埌娌℃湁涓烘 + List<DepartmentLims> department = getDepartment(id); + return removeBatchByIds(department); + } + + //鍒ゆ柇鏄惁鏈夊瓙绫�,鐩村埌娌℃湁涓烘 + public List<DepartmentLims> getDepartment(Integer id) { + List<DepartmentLims> list = new ArrayList<>(); + DepartmentLims depart = baseMapper.selectById(id); + list.add(depart); + List<DepartmentLims> departments = baseMapper.selectList(Wrappers.<DepartmentLims>lambdaQuery().eq(DepartmentLims::getFatherId, id)); + if (ObjectUtils.isNotEmpty(departments)) { + list.addAll(departments); + for (DepartmentLims department : departments) { + list.addAll(getDepartment(department.getId())); + } + } + return list; + } + +} + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.xml new file mode 100644 index 0000000..01b5662 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DepartmentLimsMapper.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.ruoyi.system.mapper.DepartmentLimsMapper"> + + <resultMap id="BaseResultMap" type="com.ruoyi.common.core.domain.entity.DepartmentLims"> + <id property="id" column="id" jdbcType="INTEGER"/> + <result property="name" column="name" jdbcType="VARCHAR"/> + <result property="fatherId" column="father_id" jdbcType="INTEGER"/> + <result property="createUser" column="create_user" jdbcType="INTEGER"/> + <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> + <result property="updateUser" column="update_user" jdbcType="INTEGER"/> + <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> + </resultMap> + + <select id="selectDepartment" resultType="com.ruoyi.common.core.dto.DepartmentDto"> + SELECT id, name, father_id + FROM department_lims + </select> + + <select id="selectSonById" resultType="java.lang.Integer"> + SELECT au.id + FROM (SELECT * FROM department_lims WHERE father_id IS NOT NULL) au, + (SELECT @father_id := #{id}) pd + WHERE FIND_IN_SET(father_id, @father_id) > 0 + AND @father_id := concat(@father_id, ',', id) + UNION + SELECT id + FROM department_lims + WHERE id = #{id} + ORDER BY id + </select> +</mapper> -- Gitblit v1.9.3