dev-tmp1
luotaiqian 2026-08-08 14:51:14 +08:00
parent 4658f82558
commit d3d03be63d
10 changed files with 99 additions and 90 deletions

View File

@ -13,11 +13,7 @@ import org.qinan.safetyeval.app.support.OrgPersonnelChangeRecorder;
import org.qinan.safetyeval.app.support.OrgPersonnelExcelImporter; import org.qinan.safetyeval.app.support.OrgPersonnelExcelImporter;
import org.qinan.safetyeval.app.support.OrgPersonnelViewEnricher; import org.qinan.safetyeval.app.support.OrgPersonnelViewEnricher;
import org.qinan.safetyeval.client.api.OrgPersonnelApi; import org.qinan.safetyeval.client.api.OrgPersonnelApi;
import org.qinan.safetyeval.client.co.OrgPersonnelCertCO; import org.qinan.safetyeval.client.co.*;
import org.qinan.safetyeval.client.co.OrgPersonnelCO;
import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO;
import org.qinan.safetyeval.client.co.PersonnelProfessionalCapabilityCO;
import org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO;
import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.constant.CertTypeCodeEnum; import org.qinan.safetyeval.domain.constant.CertTypeCodeEnum;
import org.qinan.safetyeval.domain.entity.OrgPersonnelCertEntity; import org.qinan.safetyeval.domain.entity.OrgPersonnelCertEntity;
@ -40,7 +36,6 @@ import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper; import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper; import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper;
import org.qinan.safetyeval.infrastructure.support.UserOrgIdResolver; import org.qinan.safetyeval.infrastructure.support.UserOrgIdResolver;
import org.qinan.safetyeval.infrastructure.utils.CommonUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -54,7 +49,10 @@ import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -275,20 +273,14 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
if (CollectionUtils.isEmpty(personnelIdList)) { if (CollectionUtils.isEmpty(personnelIdList)) {
return; return;
} }
List<PersonnelProfessionalCapabilityCO> capabilityList = List<PersonnelCertFilingPageCO> capabilityList =
qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList); qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList);
Map<Long, List<String>> capabilityMap = capabilityList.stream() Map<Long, List<PersonnelCertFilingPageCO>> capabilityMap = capabilityList.stream()
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCodeList())) .filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCode()))
.collect(Collectors.toMap( .collect(Collectors.groupingBy(
PersonnelProfessionalCapabilityCO::getPersonnelId, PersonnelCertFilingPageCO::getPersonnelId));
item -> Arrays.asList(item.getProfessionalCapabilityCodeList()
.split(CommonUtil.COMMA)),
(a, b) -> a));
for (QualFilingPersonnelInfoCO personnel : personnelList) { for (QualFilingPersonnelInfoCO personnel : personnelList) {
List<String> codes = capabilityMap.get(personnel.getSourcePersonnelId()); personnel.setPersonnelCertFilingPageCOList(capabilityMap.get(personnel.getSourcePersonnelId()));
if (codes != null) {
personnel.setProfessionalCapabilityCodeList(codes);
}
} }
} }

View File

@ -474,15 +474,15 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
if (CollectionUtils.isEmpty(personnelIdList)) { if (CollectionUtils.isEmpty(personnelIdList)) {
return; return;
} }
List<PersonnelProfessionalCapabilityCO> capabilityList = List<PersonnelCertFilingPageCO> capabilityList =
qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList); qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList);
Map<Long, List<String>> capabilityMap = capabilityList.stream() Map<Long, List<String>> capabilityMap = capabilityList.stream()
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCodeList())) .filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCode()))
.collect(Collectors.toMap( .collect(Collectors.groupingBy(
PersonnelProfessionalCapabilityCO::getPersonnelId, PersonnelCertFilingPageCO::getPersonnelId,
item -> Arrays.asList(item.getProfessionalCapabilityCodeList() Collectors.mapping(
.split(CommonUtil.COMMA)), PersonnelCertFilingPageCO::getProfessionalCapabilityCode,
(a, b) -> a)); Collectors.toList())));
for (QualFilingPersonnelChangeInfoCO personnel : personnelList) { for (QualFilingPersonnelChangeInfoCO personnel : personnelList) {
List<String> codes = capabilityMap.get(personnel.getSourcePersonnelId()); List<String> codes = capabilityMap.get(personnel.getSourcePersonnelId());
if (codes != null) { if (codes != null) {

View File

@ -34,7 +34,6 @@ import org.qinan.safetyeval.infrastructure.mapper.QualFilingMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper; import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper;
import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelMapper; import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelMapper;
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver; import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
import org.qinan.safetyeval.infrastructure.utils.CommonUtil;
import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil; import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -46,7 +45,10 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -258,20 +260,14 @@ public class QualFilingOrchestrator {
if (CollectionUtils.isEmpty(personnelIdList)) { if (CollectionUtils.isEmpty(personnelIdList)) {
return; return;
} }
List<PersonnelProfessionalCapabilityCO> capabilityList = List<PersonnelCertFilingPageCO> capabilityList =
qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList); qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList);
Map<Long, List<String>> capabilityMap = capabilityList.stream() Map<Long, List<PersonnelCertFilingPageCO>> capabilityMap = capabilityList.stream()
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCodeList())) .filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCode()))
.collect(Collectors.toMap( .collect(Collectors.groupingBy(
PersonnelProfessionalCapabilityCO::getPersonnelId, PersonnelCertFilingPageCO::getPersonnelId));
item -> Arrays.asList(item.getProfessionalCapabilityCodeList()
.split(CommonUtil.COMMA)),
(a, b) -> a));
for (QualFilingPersonnelInfoCO personnel : personnelList) { for (QualFilingPersonnelInfoCO personnel : personnelList) {
List<String> codes = capabilityMap.get(personnel.getSourcePersonnelId()); personnel.setPersonnelCertFilingPageCOList(capabilityMap.get(personnel.getSourcePersonnelId()));
if (codes != null) {
personnel.setProfessionalCapabilityCodeList(codes);
}
} }
} }
@ -746,7 +742,7 @@ public class QualFilingOrchestrator {
private String resolveOperatorName() { private String resolveOperatorName() {
String userName = AuthUserContextAdapter.getCurrentUserName(); String userName = AuthUserContextAdapter.getCurrentUserName();
return StringUtils.hasText(userName) ? userName : "系统"; return StringUtils.hasText(userName) ? userName : "系统" ;
} }
private QualFilingCO toCO(QualFilingEntity entity) { private QualFilingCO toCO(QualFilingEntity entity) {

View File

@ -0,0 +1,41 @@
package org.qinan.safetyeval.client.co;
import lombok.Data;
/**
*
*
* @author safety-eval
*/
@Data
public class PersonnelCertFilingPageCO {
/**
* id
*/
private Long id;
/**
* id
*/
private Long personnelId;
/**
*
*/
private String professionalCapabilityCode;
/**
*
*/
private String certTypeCode;
/**
*
*/
private String certLevel;
/**
*
*/
private String certNo;
}

View File

@ -1,22 +0,0 @@
package org.qinan.safetyeval.client.co;
import lombok.Data;
/**
*
*
* @author safety-eval
*/
@Data
public class PersonnelProfessionalCapabilityCO {
/**
* id
*/
private Long personnelId;
/**
* GROUP_CONCAT
*/
private String professionalCapabilityCodeList;
}

View File

@ -51,5 +51,5 @@ public class QualFilingPersonnelInfoCO {
private LocalDate joinWorkDate; private LocalDate joinWorkDate;
@ApiModelProperty(value = "能力codeList") @ApiModelProperty(value = "能力codeList")
private List<String> professionalCapabilityCodeList; private List<PersonnelCertFilingPageCO> personnelCertFilingPageCOList;
} }

View File

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
/** /**
* *
*/ */
@Getter @Getter
@RequiredArgsConstructor @RequiredArgsConstructor

View File

@ -10,23 +10,23 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
public enum TitleCapabilityEnum { public enum TitleCapabilityEnum {
SAFETY_ENGINEERING("P01", "安全工程", "安全"), SAFETY_ENGINEERING("P01", "安全工程", "SAFETY"),
MECHANICAL_ENGINEERING("P02", "机械工程", "机械、化工机械"), MECHANICAL_ENGINEERING("P02", "机械工程", "MECHANICAL、CHEMICAL_MECHANICAL"),
CHEMICAL_MACHINERY("P03", "化工机械", "化工机械"), CHEMICAL_MACHINERY("P03", "化工机械", "CHEMICAL_MECHANICAL"),
CHEMICAL_ENGINEERING("P04", "化学工程", "化工工艺"), CHEMICAL_ENGINEERING("P04", "化学工程", "CHEMICAL_PROCESS"),
AUTOMATION("P05", "自动化/测控技术", "仪表自动化"), AUTOMATION("P05", "自动化/测控技术", "AUTOMATION_INSTRUMENT、AUTOMATION"),
ELECTRICAL_ENGINEERING("P06", "电气工程", "电气"), ELECTRICAL_ENGINEERING("P06", "电气工程", "ELECTRICAL"),
MINING_ENGINEERING("P07", "采矿工程", "采矿"), MINING_ENGINEERING("P07", "采矿工程", "MINING"),
VENTILATION_ENGINEERING("P08", "通风工程", "通风"), VENTILATION_ENGINEERING("P08", "通风工程", "VENTILATION"),
GEOLOGICAL_ENGINEERING("P09", "地质工程", "地质"), GEOLOGICAL_ENGINEERING("P09", "地质工程", "GEOLOGY"),
MINE_CONSTRUCTION_ENGINEERING("P10", "矿建工程", "矿建"), MINE_CONSTRUCTION_ENGINEERING("P10", "矿建工程", "MINE_CONSTRUCTION"),
PETROLEUM_ENGINEERING("P11", "石油工程", "油气开发"), PETROLEUM_ENGINEERING("P11", "石油工程", "OIL_PRODUCTION"),
OIL_GAS_STORAGE_TRANSPORT("P12", "油气储运工程", "油气储运"), OIL_GAS_STORAGE_TRANSPORT("P12", "油气储运工程", "OIL_GAS_STORAGE_TRANSPORT"),
CORROSION_PROTECTION("P13", "腐蚀与防护", "防腐"), CORROSION_PROTECTION("P13", "腐蚀与防护", "ANTICORROSION"),
METALLURGY_ENGINEERING("P14", "冶金工程", "冶金"), METALLURGY_ENGINEERING("P14", "冶金工程", "METALLURGY"),
NONFERROUS_METALLURGY("P15", "有色金属冶金", "有色金属"), NONFERROUS_METALLURGY("P15", "有色金属冶金", "NONFERROUS_METAL"),
EXPLOSIVES("P16", "火炸药/爆炸技术", "火炸药"), EXPLOSIVES("P16", "火炸药/爆炸技术", "EXPLOSIVES"),
CIVIL_ENGINEERING("P17", "土木工程", "水工结构"), CIVIL_ENGINEERING("P17", "土木工程", "HYDRAULIC_STRUCTURE"),
; ;
private final String value; private final String value;

View File

@ -3,7 +3,7 @@ package org.qinan.safetyeval.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.qinan.safetyeval.client.co.PersonnelProfessionalCapabilityCO; import org.qinan.safetyeval.client.co.PersonnelCertFilingPageCO;
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelCertDO; import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelCertDO;
import java.util.List; import java.util.List;
@ -17,6 +17,6 @@ public interface QualFilingPersonnelCertMapper extends BaseMapper<QualFilingPers
* @param personnelIds id * @param personnelIds id
* @return * @return
*/ */
List<PersonnelProfessionalCapabilityCO> getProfessionalCapabilityCodeList( List<PersonnelCertFilingPageCO> getProfessionalCapabilityCodeList(
@Param("personnelIds") List<Long> personnelIds); @Param("personnelIds") List<Long> personnelIds);
} }

View File

@ -42,18 +42,20 @@
`id`, `filing_id`, `filing_personnel_id`, `cert_name`, `cert_type_code`, `cert_level`, `cert_category_code`, `cert_category_name`, `operation_category_code`, `operation_category_name`, `cert_no`, `issue_org`, `valid_start_date`, `valid_end_date`, `review_date`, `cert_attachment_url`, `source_cert_id`, `business_scope`, `professional_capability_code`, `industry_professional_standards_id`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `org_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` `id`, `filing_id`, `filing_personnel_id`, `cert_name`, `cert_type_code`, `cert_level`, `cert_category_code`, `cert_category_name`, `operation_category_code`, `operation_category_name`, `cert_no`, `issue_org`, `valid_start_date`, `valid_end_date`, `review_date`, `cert_attachment_url`, `source_cert_id`, `business_scope`, `professional_capability_code`, `industry_professional_standards_id`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `org_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env`
</sql> </sql>
<!-- 根据人员id列表查询专业能力证书类型编码GROUP_CONCAT聚合 --> <!-- 根据人员id列表查询专业能力证书类型编码 -->
<select id="getProfessionalCapabilityCodeList" <select id="getProfessionalCapabilityCodeList"
resultType="org.qinan.safetyeval.client.co.PersonnelProfessionalCapabilityCO"> resultType="org.qinan.safetyeval.client.co.PersonnelCertFilingPageCO">
SELECT personnel_id, SELECT opc.id
GROUP_CONCAT(ips.professional_capability_code) AS professionalCapabilityCodeList ,personnel_id,
opc.professional_capability_code AS professionalCapabilityCode,
opc.cert_type_code AS certTypeCode,
cert_level AS certLevel,
cert_no AS certNo
FROM org_personnel_cert opc FROM org_personnel_cert opc
join industry_professional_standards ips on opc.industry_professional_standards_id = ips.id
WHERE personnel_id IN WHERE personnel_id IN
<foreach collection="personnelIds" item="personnelId" open="(" separator="," close=")"> <foreach collection="personnelIds" item="personnelId" open="(" separator="," close=")">
#{personnelId} #{personnelId}
</foreach> </foreach>
GROUP BY personnel_id
</select> </select>
</mapper> </mapper>