dev-tmp1
luotaiqian 2026-08-08 16:08:48 +08:00
parent a27889839a
commit c9da45a05a
8 changed files with 121 additions and 3 deletions

View File

@ -243,6 +243,8 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
}) })
.collect(java.util.stream.Collectors.toList()); .collect(java.util.stream.Collectors.toList());
fillCertsBatch(records);
return PageResponse.of(records, pageResult.getTotal()); return PageResponse.of(records, pageResult.getTotal());
} }
@ -375,6 +377,42 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
} }
} }
/**
* CO
*/
private void fillCertsBatch(List<OrgPersonnelCO> records) {
if (orgPersonnelCertDomainService == null || CollectionUtils.isEmpty(records)) {
return;
}
List<Long> personnelIds = records.stream()
.map(OrgPersonnelCO::getId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(personnelIds)) {
return;
}
List<OrgPersonnelCertEntity> certs = orgPersonnelCertDomainService.listByPersonnelIds(personnelIds);
if (CollectionUtils.isEmpty(certs)) {
return;
}
Map<Long, List<OrgPersonnelCertEntity>> certMap = certs.stream()
.collect(Collectors.groupingBy(OrgPersonnelCertEntity::getPersonnelId));
for (OrgPersonnelCO co : records) {
List<OrgPersonnelCertEntity> personCerts = certMap.get(co.getId());
if (CollectionUtils.isEmpty(personCerts)) {
continue;
}
for (OrgPersonnelCertEntity cert : personCerts) {
OrgPersonnelCertCO certCO = orgPersonnelCertConvertor.entityToCO(cert);
if (CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode().equals(cert.getCertTypeCode())) {
co.setRegisteredSafetyEngineerCert(certCO);
} else if (CertTypeCodeEnum.EVALUATOR.getCode().equals(cert.getCertTypeCode())) {
co.setEvaluatorCert(certCO);
}
}
}
}
@Override @Override
public SingleResponse<OrgPersonnelCO> updateOriginFace(OrgPersonnelUpdateOriginFaceCmd cmd) { public SingleResponse<OrgPersonnelCO> updateOriginFace(OrgPersonnelUpdateOriginFaceCmd cmd) {
OrgPersonnelEntity existing = orgPersonnelDomainService.get(cmd.getId()); OrgPersonnelEntity existing = orgPersonnelDomainService.get(cmd.getId());

View File

@ -3,6 +3,7 @@ package org.qinan.safetyeval.client.co;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
@ -33,6 +34,9 @@ public class QualFilingPersonnelInfoCO {
@ApiModelProperty(value = "职位名称") @ApiModelProperty(value = "职位名称")
private String positionName; private String positionName;
@ApiModelProperty(value = "职称(多个逗号分隔)")
private List<TitleCodeCo> titleCodeArr;
@ApiModelProperty(value = "性别编码(1男2女)") @ApiModelProperty(value = "性别编码(1男2女)")
private Integer genderCode; private Integer genderCode;
@ -51,6 +55,9 @@ public class QualFilingPersonnelInfoCO {
@ApiModelProperty(value = "是否过程控制负责人(0否1是)") @ApiModelProperty(value = "是否过程控制负责人(0否1是)")
private Integer processControlLeaderFlag; private Integer processControlLeaderFlag;
@ApiModelProperty(value = "人员岗位类型(TECHNICAL_LEADER=>技术负责人; PROCESS_CONTROL_LEADER=>过程控制负责人)")
private String personnelPositionType;
@ApiModelProperty(value = "评价师证书编号") @ApiModelProperty(value = "评价师证书编号")
private String evaluatorCertNo; private String evaluatorCertNo;

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
/** /**
* *
*/ */
@Getter @Getter
@RequiredArgsConstructor @RequiredArgsConstructor
@ -33,7 +33,7 @@ public enum TitleCapabilityEnum {
private final String label; private final String label;
private final String capability; private final String capability;
public static final String REMARKS = "职称能力: P01=>安全工程(安全);" + public static final String REMARKS = "职称专业能力: P01=>安全工程(安全);" +
"P02=>机械工程(机械、化工机械);" + "P02=>机械工程(机械、化工机械);" +
"P03=>化工机械(化工机械);" + "P03=>化工机械(化工机械);" +
"P04=>化学工程(化工工艺);" + "P04=>化学工程(化工工艺);" +

View File

@ -3,6 +3,7 @@ package org.qinan.safetyeval.domain.gateway;
import org.qinan.safetyeval.domain.entity.OrgPersonnelCertEntity; import org.qinan.safetyeval.domain.entity.OrgPersonnelCertEntity;
import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery; import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery;
import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.query.PageResult;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -18,6 +19,8 @@ public interface OrgPersonnelCertGateway {
List<OrgPersonnelCertEntity> listByPersonnelId(Long personnelId); List<OrgPersonnelCertEntity> listByPersonnelId(Long personnelId);
List<OrgPersonnelCertEntity> listByPersonnelIds(Collection<Long> personnelIds);
List<OrgPersonnelCertEntity> listByOrgId(Long orgId); List<OrgPersonnelCertEntity> listByOrgId(Long orgId);
OrgPersonnelCertEntity modify(OrgPersonnelCertEntity entity); OrgPersonnelCertEntity modify(OrgPersonnelCertEntity entity);

View File

@ -7,6 +7,7 @@ import org.qinan.safetyeval.domain.gateway.OrgPersonnelCertGateway;
import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery; import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery;
import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.query.PageResult;
import java.util.Collection;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -34,6 +35,10 @@ public class OrgPersonnelCertDomainService {
return orgPersonnelCertGateway.listByPersonnelId(personnelId); return orgPersonnelCertGateway.listByPersonnelId(personnelId);
} }
public List<OrgPersonnelCertEntity> listByPersonnelIds(Collection<Long> personnelIds) {
return orgPersonnelCertGateway.listByPersonnelIds(personnelIds);
}
public OrgPersonnelCertEntity modify(OrgPersonnelCertEntity entity) { public OrgPersonnelCertEntity modify(OrgPersonnelCertEntity entity) {
OrgPersonnelCertEntity existing = orgPersonnelCertGateway.get(entity.getId()); OrgPersonnelCertEntity existing = orgPersonnelCertGateway.get(entity.getId());
if (existing == null) { if (existing == null) {

View File

@ -16,6 +16,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -59,6 +60,18 @@ public class OrgPersonnelCertGatewayImpl implements OrgPersonnelCertGateway {
return dataObjects.stream().map(orgPersonnelCertConvertor::doToEntity).collect(Collectors.toList()); return dataObjects.stream().map(orgPersonnelCertConvertor::doToEntity).collect(Collectors.toList());
} }
@Override
public List<OrgPersonnelCertEntity> listByPersonnelIds(Collection<Long> personnelIds) {
if (personnelIds == null || personnelIds.isEmpty()) {
return java.util.Collections.emptyList();
}
LambdaQueryWrapper<OrgPersonnelCertDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(OrgPersonnelCertDO::getPersonnelId, personnelIds);
wrapper.eq(OrgPersonnelCertDO::getDeleteEnum, "false");
List<OrgPersonnelCertDO> dataObjects = orgPersonnelCertMapper.selectList(wrapper);
return dataObjects.stream().map(orgPersonnelCertConvertor::doToEntity).collect(Collectors.toList());
}
@Override @Override
public List<OrgPersonnelCertEntity> listByOrgId(Long orgId) { public List<OrgPersonnelCertEntity> listByOrgId(Long orgId) {
LambdaQueryWrapper<OrgPersonnelCertDO> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OrgPersonnelCertDO> wrapper = new LambdaQueryWrapper<>();

View File

@ -0,0 +1,50 @@
package org.qinan.safetyeval.infrastructure.handler;
import cn.hutool.json.JSONUtil;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.qinan.safetyeval.domain.entity.TitleCodeCo;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
/**
* MyBatis TypeHandler: varchar/text JSON List<TitleCodeCo>
*
* @author safety-eval
*/
@MappedJdbcTypes(JdbcType.VARCHAR)
public class TitleCodeListTypeHandler extends BaseTypeHandler<List<TitleCodeCo>> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<TitleCodeCo> parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, JSONUtil.toJsonStr(parameter));
}
@Override
public List<TitleCodeCo> getNullableResult(ResultSet rs, String columnName) throws SQLException {
return parse(rs.getString(columnName));
}
@Override
public List<TitleCodeCo> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return parse(rs.getString(columnIndex));
}
@Override
public List<TitleCodeCo> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return parse(cs.getString(columnIndex));
}
private List<TitleCodeCo> parse(String json) {
if (json == null || json.isEmpty()) {
return Collections.emptyList();
}
return JSONUtil.toList(json, TitleCodeCo.class);
}
}

View File

@ -72,13 +72,15 @@
<resultMap id="FilingPersonnelInfoMap" type="org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO"> <resultMap id="FilingPersonnelInfoMap" type="org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO">
<result column="capability_assessment" property="capabilityAssessment" <result column="capability_assessment" property="capabilityAssessment"
typeHandler="org.qinan.safetyeval.infrastructure.handler.CapabilityAssessmentListTypeHandler"/> typeHandler="org.qinan.safetyeval.infrastructure.handler.CapabilityAssessmentListTypeHandler"/>
<result column="title_code_arr" property="titleCodeArr"
typeHandler="org.qinan.safetyeval.infrastructure.handler.TitleCodeListTypeHandler"/>
</resultMap> </resultMap>
<!-- 资质备案人员分页查询,直接返回 CO --> <!-- 资质备案人员分页查询,直接返回 CO -->
<select id="filingPage" resultMap="FilingPersonnelInfoMap"> <select id="filingPage" resultMap="FilingPersonnelInfoMap">
SELECT p.id source_personnel_id, p.id, p.user_name personName, d.dept_name, po.position_name, p.post_id, p.gender_code, p.gender_name SELECT p.id source_personnel_id, p.id, p.user_name personName, d.dept_name, po.position_name, p.post_id, p.gender_code, p.gender_name
, p.birth_date, p.register_engineer_flag, p.technical_director_flag, p.process_control_leader_flag , p.birth_date, p.register_engineer_flag, p.technical_director_flag, p.process_control_leader_flag
, p.evaluator_cert_no, p.join_work_date, p.capability_assessment , p.evaluator_cert_no, p.join_work_date, p.capability_assessment, p.personnel_position_type, p.title_code_arr
FROM org_personnel p FROM org_personnel p
left join org_department d on p.dept_id = d.id and d.delete_enum = 'false' left join org_department d on p.dept_id = d.id and d.delete_enum = 'false'
left join org_position po on po.id = p.post_id and po.delete_enum = 'false' left join org_position po on po.id = p.post_id and po.delete_enum = 'false'