dev
luotaiqian 2026-07-31 16:36:55 +08:00
parent 334fe9d1cf
commit b754ac14f5
19 changed files with 72 additions and 21 deletions

View File

@ -5,12 +5,14 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.qinan.safetyeval.client.common.jackson.DateToLocalDateTimeDeserializer; import org.qinan.safetyeval.client.common.jackson.DateToLocalDateTimeDeserializer;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* -Cmd * -Cmd
@ -56,7 +58,7 @@ public class QualFilingPersonnelChangeAddCmd implements Serializable {
* () * ()
*/ */
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** /**
* *
*/ */

View File

@ -45,7 +45,7 @@ public class QualFilingPersonnelChangePageQry extends PageQuery {
* () * ()
*/ */
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** /**
* *
*/ */

View File

@ -53,7 +53,7 @@ public class QualFilingPersonnelChangeUpdateCmd implements Serializable {
* () * ()
*/ */
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** /**
* *
*/ */

View File

@ -47,7 +47,7 @@ public class QualFilingPersonnelChangeCo extends ClientObject {
* () * ()
*/ */
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** /**
* *
*/ */

View File

@ -91,7 +91,7 @@ public class OrgPersonnelCO {
private String educationLevelName; private String educationLevelName;
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
@ApiModelProperty(value = "是否注册安全工程师(1是2否)") @ApiModelProperty(value = "是否注册安全工程师(1是2否)")
private Integer registerEngineerFlag; private Integer registerEngineerFlag;

View File

@ -3,7 +3,9 @@ package org.qinan.safetyeval.client.co;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
import lombok.Data; import lombok.Data;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
/** /**
* COClient Object * COClient Object

View File

@ -104,7 +104,7 @@ public class OrgPersonnelAddCmd {
private String educationLevelName; private String educationLevelName;
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
@ApiModelProperty(value = "是否注册安全工程师(1是2否)") @ApiModelProperty(value = "是否注册安全工程师(1是2否)")
private Integer registerEngineerFlag; private Integer registerEngineerFlag;

View File

@ -2,9 +2,11 @@ package org.qinan.safetyeval.client.dto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import lombok.Data; import lombok.Data;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
/** /**
* *

View File

@ -22,7 +22,7 @@ public class QualFilingPersonnelAddCmd {
private String positionName; private String positionName;
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
@ApiModelProperty(value = "性别编码(1男2女)") @ApiModelProperty(value = "性别编码(1男2女)")
private Integer genderCode; private Integer genderCode;

View File

@ -25,7 +25,7 @@ public class QualFilingPersonnelModifyCmd {
private String positionName; private String positionName;
@ApiModelProperty(value = "职称(多个逗号分隔)") @ApiModelProperty(value = "职称(多个逗号分隔)")
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
@ApiModelProperty(value = "性别编码(1男2女)") @ApiModelProperty(value = "性别编码(1男2女)")
private Integer genderCode; private Integer genderCode;

View File

@ -45,7 +45,7 @@ public class QualFilingPersonnelChangeE extends BaseE {
/** /**
* () * ()
*/ */
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** /**
* *
*/ */

View File

@ -3,6 +3,7 @@ package org.qinan.safetyeval.domain.entity;
import lombok.Data; import lombok.Data;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* *
@ -94,7 +95,7 @@ public class OrgPersonnelEntity {
private String educationLevelName; private String educationLevelName;
/** 职称(多个逗号分隔) */ /** 职称(多个逗号分隔) */
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** 是否注册安全工程师(1是2否) */ /** 是否注册安全工程师(1是2否) */
private Integer registerEngineerFlag; private Integer registerEngineerFlag;

View File

@ -32,7 +32,7 @@ public class QualFilingPersonnelEntity {
private String positionName; private String positionName;
/** 职称(多个逗号分隔) */ /** 职称(多个逗号分隔) */
private String titleCodeArr; private List<TitleCodeCo> titleCodeArr;
/** 性别编码 */ /** 性别编码 */
private Integer genderCode; private Integer genderCode;

View File

@ -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 lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/** /**
* CO *
* *
* @author safety-eval * @author safety-eval
*/ */
@ -15,12 +14,12 @@ public class TitleCodeCo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "行业编码") /** 行业编码 */
private String industryCode; private String industryCode;
@ApiModelProperty(value = "职称编码") /** 职称编码 */
private String titleCode; private String titleCode;
@ApiModelProperty(value = "证明材料地址") /** 证明材料地址 */
private String proveUrl; private String proveUrl;
} }

View File

@ -1,7 +1,11 @@
package org.qinan.safetyeval.infrastructure.convertor; package org.qinan.safetyeval.infrastructure.convertor;
import cn.hutool.json.JSONUtil;
import org.mapstruct.Mapper; 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.OrgPersonnelEntity;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
import java.util.List; import java.util.List;
@ -20,6 +24,7 @@ public interface OrgPersonnelDoConvertor {
* @param orgPersonnelEntity * @param orgPersonnelEntity
* @return * @return
*/ */
@Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson")
OrgPersonnelDO convertEeToDo(OrgPersonnelEntity orgPersonnelEntity); OrgPersonnelDO convertEeToDo(OrgPersonnelEntity orgPersonnelEntity);
/** /**
@ -28,6 +33,7 @@ public interface OrgPersonnelDoConvertor {
* @param orgPersonnelDO DO * @param orgPersonnelDO DO
* @return * @return
*/ */
@Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList")
OrgPersonnelEntity converDoToEe(OrgPersonnelDO orgPersonnelDO); OrgPersonnelEntity converDoToEe(OrgPersonnelDO orgPersonnelDO);
/** /**
@ -37,4 +43,14 @@ public interface OrgPersonnelDoConvertor {
* @return * @return
*/ */
List<OrgPersonnelEntity> converDosToEes(List<OrgPersonnelDO> orgPersonnelDOs); List<OrgPersonnelEntity> converDosToEes(List<OrgPersonnelDO> orgPersonnelDOs);
@Named("jsonToTitleCodeList")
default List<TitleCodeCo> jsonToTitleCodeList(String json) {
return json == null || json.isEmpty() ? null : JSON.parseArray(json, TitleCodeCo.class);
}
@Named("titleCodeListToJson")
default String titleCodeListToJson(List<TitleCodeCo> list) {
return list == null || list.isEmpty() ? null : JSON.toJSONString(list);
}
} }

View File

@ -1,9 +1,13 @@
package org.qinan.safetyeval.infrastructure.convertor; package org.qinan.safetyeval.infrastructure.convertor;
import com.alibaba.fastjson.JSON;
import org.mapstruct.Mapper; 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.request.QualFilingPersonnelChangePageQry;
import org.qinan.safetyeval.client.change.response.QualFilingPersonnelChangeCo; import org.qinan.safetyeval.client.change.response.QualFilingPersonnelChangeCo;
import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingPersonnelChangeDO; import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingPersonnelChangeDO;
import java.util.List; import java.util.List;
@ -23,6 +27,7 @@ public interface QualFilingPersonnelChangeDoConvertor {
* @param qualFilingPersonnelChangeE * @param qualFilingPersonnelChangeE
* @return * @return
*/ */
@Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson")
QualFilingPersonnelChangeDO convertEeToDo(QualFilingPersonnelChangeE qualFilingPersonnelChangeE); QualFilingPersonnelChangeDO convertEeToDo(QualFilingPersonnelChangeE qualFilingPersonnelChangeE);
/** /**
@ -32,6 +37,7 @@ public interface QualFilingPersonnelChangeDoConvertor {
* @return * @return
*/ */
@Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList")
QualFilingPersonnelChangeCo converDoToCo(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDo); QualFilingPersonnelChangeCo converDoToCo(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDo);
/** /**
@ -41,6 +47,7 @@ public interface QualFilingPersonnelChangeDoConvertor {
* @return * @return
*/ */
@Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson")
QualFilingPersonnelChangeDO convertQryToDo(QualFilingPersonnelChangePageQry qualFilingPersonnelChangePageQry); QualFilingPersonnelChangeDO convertQryToDo(QualFilingPersonnelChangePageQry qualFilingPersonnelChangePageQry);
/** /**
@ -54,10 +61,21 @@ public interface QualFilingPersonnelChangeDoConvertor {
/** /**
* DO * DO
*/ */
@Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList")
QualFilingPersonnelChangeE converDoToEe(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDO); QualFilingPersonnelChangeE converDoToEe(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDO);
/** /**
* DOs * DOs
*/ */
List<QualFilingPersonnelChangeE> converDosToEes(List<QualFilingPersonnelChangeDO> qualFilingPersonnelChangeDOs); List<QualFilingPersonnelChangeE> converDosToEes(List<QualFilingPersonnelChangeDO> qualFilingPersonnelChangeDOs);
@Named("jsonToTitleCodeList")
default List<TitleCodeCo> jsonToTitleCodeList(String json) {
return json == null || json.isEmpty() ? null : JSONUtil.toList(json, TitleCodeCo.class);
}
@Named("titleCodeListToJson")
default String titleCodeListToJson(List<TitleCodeCo> list) {
return list == null || list.isEmpty() ? null : JSONUtil.toJsonStr(list);
}
} }

View File

@ -1,9 +1,11 @@
package org.qinan.safetyeval.infrastructure.gatewayimpl; package org.qinan.safetyeval.infrastructure.gatewayimpl;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity; 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.gateway.QualFilingPersonnelGateway;
import org.qinan.safetyeval.domain.query.QualFilingPersonnelQuery; import org.qinan.safetyeval.domain.query.QualFilingPersonnelQuery;
import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.query.PageResult;
@ -120,7 +122,7 @@ public class QualFilingPersonnelGatewayImpl implements QualFilingPersonnelGatewa
dataObject.setPersonName(entity.getPersonName()); dataObject.setPersonName(entity.getPersonName());
dataObject.setPersonTypeCode(entity.getPersonTypeCode()); dataObject.setPersonTypeCode(entity.getPersonTypeCode());
dataObject.setPositionName(entity.getPositionName()); dataObject.setPositionName(entity.getPositionName());
dataObject.setTitleCodeArr(entity.getTitleCodeArr()); dataObject.setTitleCodeArr(entity.getTitleCodeArr() == null ? null : JSONUtil.toJsonStr(entity.getTitleCodeArr()));
dataObject.setGenderCode(entity.getGenderCode()); dataObject.setGenderCode(entity.getGenderCode());
dataObject.setGenderName(entity.getGenderName()); dataObject.setGenderName(entity.getGenderName());
dataObject.setBirthDate(entity.getBirthDate()); dataObject.setBirthDate(entity.getBirthDate());
@ -154,7 +156,8 @@ public class QualFilingPersonnelGatewayImpl implements QualFilingPersonnelGatewa
entity.setPersonName(dataObject.getPersonName()); entity.setPersonName(dataObject.getPersonName());
entity.setPersonTypeCode(dataObject.getPersonTypeCode()); entity.setPersonTypeCode(dataObject.getPersonTypeCode());
entity.setPositionName(dataObject.getPositionName()); 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.setGenderCode(dataObject.getGenderCode());
entity.setGenderName(dataObject.getGenderName()); entity.setGenderName(dataObject.getGenderName());
entity.setBirthDate(dataObject.getBirthDate()); entity.setBirthDate(dataObject.getBirthDate());

View File

@ -51,7 +51,14 @@ public class QualFilingPersonnelChangeRepositoryImpl extends BaseRepositoryImpl<
qualFilingPersonnelChangeDoQueryWrapper.like("position_name", qualFilingPersonnelChangePageQry.getPositionName()); qualFilingPersonnelChangeDoQueryWrapper.like("position_name", qualFilingPersonnelChangePageQry.getPositionName());
} }
if (ObjectUtil.isNotEmpty(qualFilingPersonnelChangePageQry.getTitleCodeArr())) { 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())) { if (ObjectUtil.isNotEmpty(qualFilingPersonnelChangePageQry.getGenderCode())) {
qualFilingPersonnelChangeDoQueryWrapper.eq("gender_code", qualFilingPersonnelChangePageQry.getGenderCode()); qualFilingPersonnelChangeDoQueryWrapper.eq("gender_code", qualFilingPersonnelChangePageQry.getGenderCode());

View File

@ -179,7 +179,8 @@ public class ComplianceCheckUtil {
.filter(p -> p.getRegisterEngineerFlag() != null && p.getRegisterEngineerFlag() == 1) .filter(p -> p.getRegisterEngineerFlag() != null && p.getRegisterEngineerFlag() == 1)
.count(); .count();
long seniorTitleCount = personnelList.stream() 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(); .count();
long engineerRate = engineerCount * 100 / total; long engineerRate = engineerCount * 100 / total;
long seniorTitleRate = seniorTitleCount * 100 / total; long seniorTitleRate = seniorTitleCount * 100 / total;