diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeAddCmd.java index e70494c1..679938d5 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeAddCmd.java @@ -5,12 +5,14 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.qinan.safetyeval.client.common.jackson.DateToLocalDateTimeDeserializer; +import org.qinan.safetyeval.domain.entity.TitleCodeCo; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** * 备案申请人员-变更新增Cmd @@ -56,7 +58,7 @@ public class QualFilingPersonnelChangeAddCmd implements Serializable { * 职称(多个逗号分隔) */ @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; /** * 性别编码 */ diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangePageQry.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangePageQry.java index ab4662b5..7c50912a 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangePageQry.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangePageQry.java @@ -45,7 +45,7 @@ public class QualFilingPersonnelChangePageQry extends PageQuery { * 职称(多个逗号分隔) */ @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; /** * 性别编码 */ diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeUpdateCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeUpdateCmd.java index 19f6748d..09eedcc3 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeUpdateCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingPersonnelChangeUpdateCmd.java @@ -53,7 +53,7 @@ public class QualFilingPersonnelChangeUpdateCmd implements Serializable { * 职称(多个逗号分隔) */ @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; /** * 性别编码 */ diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/response/QualFilingPersonnelChangeCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/response/QualFilingPersonnelChangeCo.java index 42040f02..85c1ae86 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/response/QualFilingPersonnelChangeCo.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/response/QualFilingPersonnelChangeCo.java @@ -47,7 +47,7 @@ public class QualFilingPersonnelChangeCo extends ClientObject { * 职称(多个逗号分隔) */ @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; /** * 性别编码 */ diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java index 896b5597..4f4c40a5 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java @@ -91,7 +91,7 @@ public class OrgPersonnelCO { private String educationLevelName; @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; @ApiModelProperty(value = "是否注册安全工程师(1是2否)") private Integer registerEngineerFlag; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelCO.java index 5d0b50f8..658e1df1 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelCO.java @@ -3,7 +3,9 @@ package org.qinan.safetyeval.client.co; import io.swagger.annotations.ApiModelProperty; import java.time.LocalDate; +import java.util.List; import lombok.Data; +import org.qinan.safetyeval.domain.entity.TitleCodeCo; /** * 备案申请人员CO(Client Object) diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java index 71e11b79..b501a9c8 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java @@ -104,7 +104,7 @@ public class OrgPersonnelAddCmd { private String educationLevelName; @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; @ApiModelProperty(value = "是否注册安全工程师(1是2否)") private Integer registerEngineerFlag; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java index 071cf077..67128967 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java @@ -2,9 +2,11 @@ package org.qinan.safetyeval.client.dto; import io.swagger.annotations.ApiModelProperty; import java.time.LocalDate; +import java.util.List; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import lombok.Data; +import org.qinan.safetyeval.domain.entity.TitleCodeCo; /** * 人员信息修改命令 diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelAddCmd.java index ff40194f..b1ab50b4 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelAddCmd.java @@ -22,7 +22,7 @@ public class QualFilingPersonnelAddCmd { private String positionName; @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; @ApiModelProperty(value = "性别编码(1男2女)") private Integer genderCode; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelModifyCmd.java index e8c73568..4139d383 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelModifyCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingPersonnelModifyCmd.java @@ -25,7 +25,7 @@ public class QualFilingPersonnelModifyCmd { private String positionName; @ApiModelProperty(value = "职称(多个逗号分隔)") - private String titleCodeArr; + private List titleCodeArr; @ApiModelProperty(value = "性别编码(1男2女)") private Integer genderCode; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/model/QualFilingPersonnelChangeE.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/model/QualFilingPersonnelChangeE.java index a4d34f2c..c68e2497 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/model/QualFilingPersonnelChangeE.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/model/QualFilingPersonnelChangeE.java @@ -45,7 +45,7 @@ public class QualFilingPersonnelChangeE extends BaseE { /** * 职称(多个逗号分隔) */ - private String titleCodeArr; + private List titleCodeArr; /** * 性别编码 */ diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/OrgPersonnelEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/OrgPersonnelEntity.java index b2a62d53..366e476a 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/OrgPersonnelEntity.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/OrgPersonnelEntity.java @@ -3,6 +3,7 @@ package org.qinan.safetyeval.domain.entity; import lombok.Data; import java.time.LocalDate; +import java.util.List; /** * 人员信息领域实体 @@ -94,7 +95,7 @@ public class OrgPersonnelEntity { private String educationLevelName; /** 职称(多个逗号分隔) */ - private String titleCodeArr; + private List titleCodeArr; /** 是否注册安全工程师(1是2否) */ private Integer registerEngineerFlag; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingPersonnelEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingPersonnelEntity.java index 045356d3..0fe1e81f 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingPersonnelEntity.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingPersonnelEntity.java @@ -32,7 +32,7 @@ public class QualFilingPersonnelEntity { private String positionName; /** 职称(多个逗号分隔) */ - private String titleCodeArr; + private List titleCodeArr; /** 性别编码 */ private Integer genderCode; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/TitleCodeCo.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/TitleCodeCo.java similarity index 50% rename from safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/TitleCodeCo.java rename to safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/TitleCodeCo.java index 9a5f12ad..be7839ff 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/TitleCodeCo.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/TitleCodeCo.java @@ -1,12 +1,11 @@ -package org.qinan.safetyeval.client.co; +package org.qinan.safetyeval.domain.entity; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** - * 职称信息CO(行业、职称、证明材料) + * 职称信息(行业、职称、证明材料) * * @author safety-eval */ @@ -15,12 +14,12 @@ public class TitleCodeCo implements Serializable { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "行业编码") + /** 行业编码 */ private String industryCode; - @ApiModelProperty(value = "职称编码") + /** 职称编码 */ private String titleCode; - @ApiModelProperty(value = "证明材料地址") + /** 证明材料地址 */ private String proveUrl; } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java index 6cf84f50..fa20b691 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java @@ -1,7 +1,11 @@ package org.qinan.safetyeval.infrastructure.convertor; +import cn.hutool.json.JSONUtil; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity; +import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; import java.util.List; @@ -20,6 +24,7 @@ public interface OrgPersonnelDoConvertor { * @param orgPersonnelEntity * @return */ + @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson") OrgPersonnelDO convertEeToDo(OrgPersonnelEntity orgPersonnelEntity); /** @@ -28,6 +33,7 @@ public interface OrgPersonnelDoConvertor { * @param orgPersonnelDO DO * @return */ + @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList") OrgPersonnelEntity converDoToEe(OrgPersonnelDO orgPersonnelDO); /** @@ -37,4 +43,14 @@ public interface OrgPersonnelDoConvertor { * @return */ List converDosToEes(List orgPersonnelDOs); + + @Named("jsonToTitleCodeList") + default List jsonToTitleCodeList(String json) { + return json == null || json.isEmpty() ? null : JSON.parseArray(json, TitleCodeCo.class); + } + + @Named("titleCodeListToJson") + default String titleCodeListToJson(List list) { + return list == null || list.isEmpty() ? null : JSON.toJSONString(list); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java index a8e83fb8..74ebc69f 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java @@ -1,9 +1,13 @@ package org.qinan.safetyeval.infrastructure.convertor; +import com.alibaba.fastjson.JSON; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangePageQry; import org.qinan.safetyeval.client.change.response.QualFilingPersonnelChangeCo; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE; +import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingPersonnelChangeDO; import java.util.List; @@ -23,6 +27,7 @@ public interface QualFilingPersonnelChangeDoConvertor { * @param qualFilingPersonnelChangeE * @return */ + @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson") QualFilingPersonnelChangeDO convertEeToDo(QualFilingPersonnelChangeE qualFilingPersonnelChangeE); /** @@ -32,6 +37,7 @@ public interface QualFilingPersonnelChangeDoConvertor { * @return */ + @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList") QualFilingPersonnelChangeCo converDoToCo(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDo); /** @@ -41,6 +47,7 @@ public interface QualFilingPersonnelChangeDoConvertor { * @return */ + @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson") QualFilingPersonnelChangeDO convertQryToDo(QualFilingPersonnelChangePageQry qualFilingPersonnelChangePageQry); /** @@ -54,10 +61,21 @@ public interface QualFilingPersonnelChangeDoConvertor { /** * DO转领域对象 */ + @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList") QualFilingPersonnelChangeE converDoToEe(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDO); /** * DOs转领域对象列表 */ List converDosToEes(List qualFilingPersonnelChangeDOs); + + @Named("jsonToTitleCodeList") + default List jsonToTitleCodeList(String json) { + return json == null || json.isEmpty() ? null : JSONUtil.toList(json, TitleCodeCo.class); + } + + @Named("titleCodeListToJson") + default String titleCodeListToJson(List list) { + return list == null || list.isEmpty() ? null : JSONUtil.toJsonStr(list); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingPersonnelGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingPersonnelGatewayImpl.java index 055999d2..477cc469 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingPersonnelGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingPersonnelGatewayImpl.java @@ -1,9 +1,11 @@ package org.qinan.safetyeval.infrastructure.gatewayimpl; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity; +import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.domain.gateway.QualFilingPersonnelGateway; import org.qinan.safetyeval.domain.query.QualFilingPersonnelQuery; import org.qinan.safetyeval.domain.query.PageResult; @@ -120,7 +122,7 @@ public class QualFilingPersonnelGatewayImpl implements QualFilingPersonnelGatewa dataObject.setPersonName(entity.getPersonName()); dataObject.setPersonTypeCode(entity.getPersonTypeCode()); dataObject.setPositionName(entity.getPositionName()); - dataObject.setTitleCodeArr(entity.getTitleCodeArr()); + dataObject.setTitleCodeArr(entity.getTitleCodeArr() == null ? null : JSONUtil.toJsonStr(entity.getTitleCodeArr())); dataObject.setGenderCode(entity.getGenderCode()); dataObject.setGenderName(entity.getGenderName()); dataObject.setBirthDate(entity.getBirthDate()); @@ -154,7 +156,8 @@ public class QualFilingPersonnelGatewayImpl implements QualFilingPersonnelGatewa entity.setPersonName(dataObject.getPersonName()); entity.setPersonTypeCode(dataObject.getPersonTypeCode()); entity.setPositionName(dataObject.getPositionName()); - entity.setTitleCodeArr(dataObject.getTitleCodeArr()); + entity.setTitleCodeArr(StringUtils.hasText(dataObject.getTitleCodeArr()) + ? JSONUtil.toList(dataObject.getTitleCodeArr(), TitleCodeCo.class) : null); entity.setGenderCode(dataObject.getGenderCode()); entity.setGenderName(dataObject.getGenderName()); entity.setBirthDate(dataObject.getBirthDate()); diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelChangeRepositoryImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelChangeRepositoryImpl.java index b15eb116..29c55993 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelChangeRepositoryImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelChangeRepositoryImpl.java @@ -51,7 +51,14 @@ public class QualFilingPersonnelChangeRepositoryImpl extends BaseRepositoryImpl< qualFilingPersonnelChangeDoQueryWrapper.like("position_name", qualFilingPersonnelChangePageQry.getPositionName()); } if (ObjectUtil.isNotEmpty(qualFilingPersonnelChangePageQry.getTitleCodeArr())) { - qualFilingPersonnelChangeDoQueryWrapper.like("title_code_arr", qualFilingPersonnelChangePageQry.getTitleCodeArr()); + String firstTitleCode = qualFilingPersonnelChangePageQry.getTitleCodeArr().stream() + .map(org.qinan.safetyeval.domain.entity.TitleCodeCo::getTitleCode) + .filter(ObjectUtil::isNotEmpty) + .findFirst() + .orElse(null); + if (firstTitleCode != null) { + qualFilingPersonnelChangeDoQueryWrapper.like("title_code_arr", firstTitleCode); + } } if (ObjectUtil.isNotEmpty(qualFilingPersonnelChangePageQry.getGenderCode())) { qualFilingPersonnelChangeDoQueryWrapper.eq("gender_code", qualFilingPersonnelChangePageQry.getGenderCode()); diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java index e5235312..d2ec5233 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java @@ -179,7 +179,8 @@ public class ComplianceCheckUtil { .filter(p -> p.getRegisterEngineerFlag() != null && p.getRegisterEngineerFlag() == 1) .count(); long seniorTitleCount = personnelList.stream() - .filter(p -> QualificationLevelEnum.SENIOR.getCode().equals(p.getTitleCodeArr())) + .filter(p -> p.getTitleCodeArr() != null && p.getTitleCodeArr().stream() + .anyMatch(t -> QualificationLevelEnum.SENIOR.getCode().equals(t.getTitleCode()))) .count(); long engineerRate = engineerCount * 100 / total; long seniorTitleRate = seniorTitleCount * 100 / total;