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

View File

@ -474,15 +474,15 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
if (CollectionUtils.isEmpty(personnelIdList)) {
return;
}
List<PersonnelProfessionalCapabilityCO> capabilityList =
List<PersonnelCertFilingPageCO> capabilityList =
qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList);
Map<Long, List<String>> capabilityMap = capabilityList.stream()
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCodeList()))
.collect(Collectors.toMap(
PersonnelProfessionalCapabilityCO::getPersonnelId,
item -> Arrays.asList(item.getProfessionalCapabilityCodeList()
.split(CommonUtil.COMMA)),
(a, b) -> a));
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCode()))
.collect(Collectors.groupingBy(
PersonnelCertFilingPageCO::getPersonnelId,
Collectors.mapping(
PersonnelCertFilingPageCO::getProfessionalCapabilityCode,
Collectors.toList())));
for (QualFilingPersonnelChangeInfoCO personnel : personnelList) {
List<String> codes = capabilityMap.get(personnel.getSourcePersonnelId());
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.QualFilingPersonnelMapper;
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
import org.qinan.safetyeval.infrastructure.utils.CommonUtil;
import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -46,7 +45,10 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource;
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;
/**
@ -258,20 +260,14 @@ public class QualFilingOrchestrator {
if (CollectionUtils.isEmpty(personnelIdList)) {
return;
}
List<PersonnelProfessionalCapabilityCO> capabilityList =
List<PersonnelCertFilingPageCO> capabilityList =
qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList);
Map<Long, List<String>> capabilityMap = capabilityList.stream()
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCodeList()))
.collect(Collectors.toMap(
PersonnelProfessionalCapabilityCO::getPersonnelId,
item -> Arrays.asList(item.getProfessionalCapabilityCodeList()
.split(CommonUtil.COMMA)),
(a, b) -> a));
Map<Long, List<PersonnelCertFilingPageCO>> capabilityMap = capabilityList.stream()
.filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCode()))
.collect(Collectors.groupingBy(
PersonnelCertFilingPageCO::getPersonnelId));
for (QualFilingPersonnelInfoCO personnel : personnelList) {
List<String> codes = capabilityMap.get(personnel.getSourcePersonnelId());
if (codes != null) {
personnel.setProfessionalCapabilityCodeList(codes);
}
personnel.setPersonnelCertFilingPageCOList(capabilityMap.get(personnel.getSourcePersonnelId()));
}
}
@ -746,7 +742,7 @@ public class QualFilingOrchestrator {
private String resolveOperatorName() {
String userName = AuthUserContextAdapter.getCurrentUserName();
return StringUtils.hasText(userName) ? userName : "系统";
return StringUtils.hasText(userName) ? userName : "系统" ;
}
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;
@ApiModelProperty(value = "能力codeList")
private List<String> professionalCapabilityCodeList;
private List<PersonnelCertFilingPageCO> personnelCertFilingPageCOList;
}

View File

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

View File

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

View File

@ -3,7 +3,7 @@ package org.qinan.safetyeval.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
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 java.util.List;
@ -17,6 +17,6 @@ public interface QualFilingPersonnelCertMapper extends BaseMapper<QualFilingPers
* @param personnelIds id
* @return
*/
List<PersonnelProfessionalCapabilityCO> getProfessionalCapabilityCodeList(
List<PersonnelCertFilingPageCO> getProfessionalCapabilityCodeList(
@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`
</sql>
<!-- 根据人员id列表查询专业能力证书类型编码GROUP_CONCAT聚合 -->
<!-- 根据人员id列表查询专业能力证书类型编码 -->
<select id="getProfessionalCapabilityCodeList"
resultType="org.qinan.safetyeval.client.co.PersonnelProfessionalCapabilityCO">
SELECT personnel_id,
GROUP_CONCAT(ips.professional_capability_code) AS professionalCapabilityCodeList
resultType="org.qinan.safetyeval.client.co.PersonnelCertFilingPageCO">
SELECT opc.id
,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
join industry_professional_standards ips on opc.industry_professional_standards_id = ips.id
WHERE personnel_id IN
<foreach collection="personnelIds" item="personnelId" open="(" separator="," close=")">
#{personnelId}
</foreach>
GROUP BY personnel_id
</select>
</mapper>