From 03a4acb63aec70bfd653fea677ec0991ecc52294 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Fri, 17 Apr 2026 11:04:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=91=98=E5=B7=A5=E5=85=9A?= =?UTF-8?q?=E5=91=98=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../info/collection/domain/CcdiBaseStaff.java | 4 + .../domain/dto/CcdiBaseStaffAddDTO.java | 4 + .../domain/dto/CcdiBaseStaffEditDTO.java | 4 + .../domain/excel/CcdiBaseStaffExcel.java | 9 +- .../collection/domain/vo/CcdiBaseStaffVO.java | 3 + .../collection/domain/vo/ImportFailureVO.java | 3 + .../impl/CcdiBaseStaffImportServiceImpl.java | 6 ++ .../impl/CcdiBaseStaffServiceImpl.java | 13 ++- .../info/collection/CcdiBaseStaffMapper.xml | 12 ++- .../mapper/CcdiBaseStaffMapperTest.java | 2 + .../CcdiBaseStaffImportServiceImplTest.java | 23 ++++ .../service/CcdiBaseStaffServiceImplTest.java | 16 ++- .../utils/EasyExcelUtilTemplateTest.java | 32 +++++- ...aff-party-member-backend-implementation.md | 83 ++++++++++++++ ...-self-asset-only-backend-implementation.md | 22 ++++ ...comment-encoding-backend-implementation.md | 23 ++++ ...t-helper-remove-frontend-implementation.md | 33 ++++++ ...ff-party-member-frontend-implementation.md | 53 +++++++++ ...self-asset-only-frontend-implementation.md | 24 +++++ ruoyi-ui/src/views/ccdiBaseStaff/index.vue | 102 ++++++++---------- sql/ccdi_yes_no_flag_dict.sql | 14 +++ ...2026-04-17-add-base-staff-party-member.sql | 33 ++++++ ...7-fix-ccdi-asset-info-comment-encoding.sql | 3 + 23 files changed, 453 insertions(+), 68 deletions(-) create mode 100644 docs/plans/backend/2026-04-17-base-staff-party-member-backend-implementation.md create mode 100644 docs/plans/backend/2026-04-17-employee-self-asset-only-backend-implementation.md create mode 100644 docs/plans/backend/2026-04-17-fix-ccdi-asset-info-comment-encoding-backend-implementation.md create mode 100644 docs/plans/frontend/2026-04-17-base-staff-asset-helper-remove-frontend-implementation.md create mode 100644 docs/plans/frontend/2026-04-17-base-staff-party-member-frontend-implementation.md create mode 100644 docs/plans/frontend/2026-04-17-employee-self-asset-only-frontend-implementation.md create mode 100644 sql/ccdi_yes_no_flag_dict.sql create mode 100644 sql/migration/2026-04-17-add-base-staff-party-member.sql create mode 100644 sql/migration/2026-04-17-fix-ccdi-asset-info-comment-encoding.sql diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiBaseStaff.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiBaseStaff.java index bebc03c9..df434a1c 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiBaseStaff.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiBaseStaff.java @@ -43,6 +43,10 @@ public class CcdiBaseStaff implements Serializable { /** 入职时间 */ private Date hireDate; + /** 是否党员:0-否 1-是 */ + @TableField("is_party_member") + private Integer partyMember; + /** 状态 */ private String status; diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffAddDTO.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffAddDTO.java index 4c7b5ff3..590a766d 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffAddDTO.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffAddDTO.java @@ -53,6 +53,10 @@ public class CcdiBaseStaffAddDTO implements Serializable { /** 入职时间 */ private Date hireDate; + /** 是否党员:0-否 1-是 */ + @NotNull(message = "是否党员不能为空") + private Integer partyMember; + /** 状态 */ @NotBlank(message = "状态不能为空") private String status; diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffEditDTO.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffEditDTO.java index 2dacbc36..8cfc727a 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffEditDTO.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffEditDTO.java @@ -52,6 +52,10 @@ public class CcdiBaseStaffEditDTO implements Serializable { /** 入职时间 */ private Date hireDate; + /** 是否党员:0-否 1-是 */ + @NotNull(message = "是否党员不能为空") + private Integer partyMember; + /** 状态 */ private String status; diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiBaseStaffExcel.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiBaseStaffExcel.java index cd33c1ca..7dac9230 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiBaseStaffExcel.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiBaseStaffExcel.java @@ -63,8 +63,15 @@ public class CcdiBaseStaffExcel implements Serializable { @ColumnWidth(15) private Date hireDate; + /** 是否党员 */ + @ExcelProperty(value = "是否党员", index = 7) + @ColumnWidth(12) + @DictDropdown(dictType = "ccdi_yes_no_flag") + @Required + private Integer partyMember; + /** 状态 */ - @ExcelProperty(value = "状态", index = 7) + @ExcelProperty(value = "状态", index = 8) @ColumnWidth(10) @DictDropdown(dictType = "ccdi_employee_status") @Required diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CcdiBaseStaffVO.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CcdiBaseStaffVO.java index d86ed151..77987d85 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CcdiBaseStaffVO.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CcdiBaseStaffVO.java @@ -44,6 +44,9 @@ public class CcdiBaseStaffVO implements Serializable { /** 入职时间 */ private Date hireDate; + /** 是否党员:0-否 1-是 */ + private Integer partyMember; + /** 状态 */ private String status; diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/ImportFailureVO.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/ImportFailureVO.java index 6debffa7..a401d4f1 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/ImportFailureVO.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/ImportFailureVO.java @@ -32,6 +32,9 @@ public class ImportFailureVO { @Schema(description = "年收入") private BigDecimal annualIncome; + @Schema(description = "是否党员:0-否 1-是") + private Integer partyMember; + @Schema(description = "状态") private String status; diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffImportServiceImpl.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffImportServiceImpl.java index ff3684ea..b01cf345 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffImportServiceImpl.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffImportServiceImpl.java @@ -320,6 +320,9 @@ public class CcdiBaseStaffImportServiceImpl implements ICcdiBaseStaffImportServi if (StringUtils.isEmpty(addDTO.getPhone())) { throw new RuntimeException("电话不能为空"); } + if (addDTO.getPartyMember() == null) { + throw new RuntimeException("是否党员不能为空"); + } if (StringUtils.isEmpty(addDTO.getStatus())) { throw new RuntimeException("状态不能为空"); } @@ -357,6 +360,9 @@ public class CcdiBaseStaffImportServiceImpl implements ICcdiBaseStaffImportServi if (!"0".equals(addDTO.getStatus()) && !"1".equals(addDTO.getStatus())) { throw new RuntimeException("状态只能填写'在职'或'离职'"); } + if (addDTO.getPartyMember() != 0 && addDTO.getPartyMember() != 1) { + throw new RuntimeException("是否党员只能填写'0'或'1'"); + } validateAnnualIncome(addDTO.getAnnualIncome(), "年收入"); } diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffServiceImpl.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffServiceImpl.java index d06920e2..ac621f59 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffServiceImpl.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffServiceImpl.java @@ -112,7 +112,7 @@ public class CcdiBaseStaffServiceImpl implements ICcdiBaseStaffService { CcdiBaseStaff staff = baseStaffMapper.selectById(staffId); CcdiBaseStaffVO vo = convertToVO(staff); if (staff != null) { - vo.setAssetInfoList(assetInfoService.selectByFamilyId(staff.getIdCard()).stream().map(asset -> { + vo.setAssetInfoList(assetInfoService.selectByFamilyIdAndPersonId(staff.getIdCard(), staff.getIdCard()).stream().map(asset -> { CcdiAssetInfoVO assetInfoVO = new CcdiAssetInfoVO(); BeanUtils.copyProperties(asset, assetInfoVO); return assetInfoVO; @@ -131,6 +131,7 @@ public class CcdiBaseStaffServiceImpl implements ICcdiBaseStaffService { @Transactional public int insertBaseStaff(CcdiBaseStaffAddDTO addDTO) { validateAnnualIncome(addDTO.getAnnualIncome(), "年收入"); + validatePartyMember(addDTO.getPartyMember(), "是否党员"); // 检查员工ID唯一性 if (baseStaffMapper.selectById(addDTO.getStaffId()) != null) { throw new RuntimeException("该员工ID已存在"); @@ -161,6 +162,7 @@ public class CcdiBaseStaffServiceImpl implements ICcdiBaseStaffService { @Transactional public int updateBaseStaff(CcdiBaseStaffEditDTO editDTO) { validateAnnualIncome(editDTO.getAnnualIncome(), "年收入"); + validatePartyMember(editDTO.getPartyMember(), "是否党员"); CcdiBaseStaff existing = baseStaffMapper.selectById(editDTO.getStaffId()); if (existing == null) { throw new RuntimeException("员工不存在"); @@ -291,4 +293,13 @@ public class CcdiBaseStaffServiceImpl implements ICcdiBaseStaffService { } } + private void validatePartyMember(Integer partyMember, String fieldLabel) { + if (partyMember == null) { + throw new RuntimeException(fieldLabel + "不能为空"); + } + if (partyMember != 0 && partyMember != 1) { + throw new RuntimeException(fieldLabel + "只能填写'0'或'1'"); + } + } + } diff --git a/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiBaseStaffMapper.xml b/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiBaseStaffMapper.xml index d2e28274..ebd31dc2 100644 --- a/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiBaseStaffMapper.xml +++ b/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiBaseStaffMapper.xml @@ -14,13 +14,14 @@ +