diff --git a/docs/sql/add_capability_assessment_to_org_personnel.sql b/docs/sql/add_capability_assessment_to_org_personnel.sql new file mode 100644 index 00000000..c787bff5 --- /dev/null +++ b/docs/sql/add_capability_assessment_to_org_personnel.sql @@ -0,0 +1,5 @@ +-- org_personnel 表新增「能力认定」字段(JSON array 字符串) +ALTER TABLE `org_personnel` + ADD COLUMN `capability_assessment` varchar(512) DEFAULT NULL COMMENT '能力认定JSON array 字符串' AFTER `proof_material_url`; + +ALTER TABLE org_personnel ADD COLUMN evaluator_flag tinyint DEFAULT NULL COMMENT '是否评价师 1是 0否'; \ No newline at end of file diff --git a/docs/sql/add_personnel_position_type_to_org_personnel.sql b/docs/sql/add_personnel_position_type_to_org_personnel.sql new file mode 100644 index 00000000..e2429dbd --- /dev/null +++ b/docs/sql/add_personnel_position_type_to_org_personnel.sql @@ -0,0 +1,3 @@ +-- org_personnel 表新增「人员岗位类型」字段 +ALTER TABLE `org_personnel` + ADD COLUMN `personnel_position_type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '人员岗位类型: TECHNICAL_LEADER=>技术负责人; PROCESS_CONTROL_LEADER=>过程控制负责人' AFTER `process_control_leader_flag`; diff --git a/docs/sql/eval_process_control_add_org_head_signature.sql b/docs/sql/eval_process_control_add_org_head_signature.sql deleted file mode 100644 index a5d5efd1..00000000 --- a/docs/sql/eval_process_control_add_org_head_signature.sql +++ /dev/null @@ -1,5 +0,0 @@ --- eval_process_control 新增机构负责人签字相关字段 -ALTER TABLE `eval_process_control` - ADD COLUMN `org_head_signature_task_status` varchar(64) DEFAULT NULL COMMENT '机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成', - ADD COLUMN `org_head_personnel_id` bigint DEFAULT NULL COMMENT '机构负责人', - ADD COLUMN `org_head_signature_url` varchar(512) DEFAULT NULL COMMENT '机构负责人签字'; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalCustomerCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalCustomerCmdConvertor.java index f96017e9..83e537fa 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalCustomerCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalCustomerCmdConvertor.java @@ -12,7 +12,7 @@ import org.qinan.safetyeval.domain.constant.ChongqingDistrictEnum; import org.qinan.safetyeval.domain.constant.CustomerStatusEnum; import org.qinan.safetyeval.domain.constant.EnterpriseScaleEnum; import org.qinan.safetyeval.domain.constant.EnterpriseStatusEnum; -import org.qinan.safetyeval.domain.constant.IndustryEnum; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; import org.qinan.safetyeval.domain.entity.EvalCustomerEntity; import org.qinan.safetyeval.domain.query.EvalCustomerQuery; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectCmdConvertor.java index bc61c091..d9a6d477 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectCmdConvertor.java @@ -15,7 +15,7 @@ import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; import org.qinan.safetyeval.domain.constant.ChongqingDistrictEnum; import org.qinan.safetyeval.domain.constant.EvalTypeEnum; -import org.qinan.safetyeval.domain.constant.IndustryEnum; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.query.EvalProjectQuery; import org.springframework.util.StringUtils; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java index c4f57f0d..5f5060e9 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java @@ -23,6 +23,8 @@ public interface OrgPersonnelConvertor { @Mapping(target = "changeCount", ignore = true) @Mapping(target = "resignApplyId", ignore = true) @Mapping(target = "resignAuditStatus", ignore = true) + @Mapping(target = "registeredSafetyEngineerCert", ignore = true) + @Mapping(target = "evaluatorCert", ignore = true) OrgPersonnelCO toCO(OrgPersonnelEntity entity); /** diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java index 712829e6..3844ba7a 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java @@ -13,11 +13,14 @@ 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.dto.*; +import org.qinan.safetyeval.domain.constant.CertTypeCodeEnum; +import org.qinan.safetyeval.domain.entity.OrgPersonnelCertEntity; import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity; import org.qinan.safetyeval.domain.entity.OrgPositionEntity; import org.qinan.safetyeval.domain.exception.BizException; @@ -26,11 +29,13 @@ import org.qinan.safetyeval.domain.gateway.FaceCompareGateway; import org.qinan.safetyeval.domain.gateway.OrgResignApplyGateway; import org.qinan.safetyeval.domain.query.OrgPersonnelQuery; import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.service.OrgPersonnelCertDomainService; import org.qinan.safetyeval.domain.service.OrgPersonnelDomainService; import org.qinan.safetyeval.domain.service.OrgPositionDomainService; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.adapter.gbs.GbsUserFacadeClient; +import org.qinan.safetyeval.infrastructure.convertor.OrgPersonnelCertConvertor; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper; import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper; @@ -73,6 +78,13 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { @Autowired private OrgPersonnelConvertor orgPersonnelConvertor; + @Lazy + @Autowired(required = false) + private OrgPersonnelCertDomainService orgPersonnelCertDomainService; + + @Autowired + private OrgPersonnelCertConvertor orgPersonnelCertConvertor; + @Autowired(required = false) private OrgResignApplyGateway orgResignApplyGateway; @@ -120,6 +132,9 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { } OrgPersonnelCO co = orgPersonnelConvertor.toCO(result); enrich(co); + // 保存证书信息 + savePersonnelCerts(cmd, result.getId()); + fillCerts(co, result.getId()); UserAddCmd userAddCmd = new UserAddCmd(); userAddCmd.setId(result.getId()); userAddCmd.setAccount(result.getAccount()); @@ -148,6 +163,7 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { OrgPersonnelEntity entity = orgPersonnelDomainService.get(id); OrgPersonnelCO co = orgPersonnelConvertor.toCO(entity); enrich(co); + fillCerts(co, id); return SingleResponse.success(co); } @@ -326,6 +342,48 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { } } + /** + * 保存人员内嵌的注安证书和评价师证书 + */ + private void savePersonnelCerts(OrgPersonnelAddCmd cmd, Long personnelId) { + if (orgPersonnelCertDomainService == null) { + return; + } + if (cmd.getRegisteredSafetyEngineerCert() != null) { + OrgPersonnelCertEntity certEntity = orgPersonnelCertConvertor.addCmdToEntity(cmd.getRegisteredSafetyEngineerCert()); + certEntity.setPersonnelId(personnelId); + certEntity.setCertTypeCode(CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode()); + orgPersonnelCertDomainService.add(certEntity); + } + if (cmd.getEvaluatorCert() != null) { + OrgPersonnelCertEntity certEntity = orgPersonnelCertConvertor.addCmdToEntity(cmd.getEvaluatorCert()); + certEntity.setPersonnelId(personnelId); + certEntity.setCertTypeCode(CertTypeCodeEnum.EVALUATOR.getCode()); + orgPersonnelCertDomainService.add(certEntity); + } + } + + /** + * 根据人员ID查询证书并填充到CO中 + */ + private void fillCerts(OrgPersonnelCO co, Long personnelId) { + if (orgPersonnelCertDomainService == null || personnelId == null) { + return; + } + List certs = orgPersonnelCertDomainService.listByPersonnelId(personnelId); + if (certs == null) { + return; + } + for (OrgPersonnelCertEntity cert : certs) { + 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 public SingleResponse updateOriginFace(OrgPersonnelUpdateOriginFaceCmd cmd) { OrgPersonnelEntity existing = orgPersonnelDomainService.get(cmd.getId()); diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java index 5f3bad9e..791d9f3c 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java @@ -13,6 +13,7 @@ import org.qinan.safetyeval.client.dto.institution.EvalCustomerModifyCmd; import org.qinan.safetyeval.client.dto.institution.EvalCustomerPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.domain.constant.*; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; import org.qinan.safetyeval.domain.entity.EvalCustomerEntity; import org.qinan.safetyeval.domain.exception.ErrorCode; import org.qinan.safetyeval.domain.query.EvalCustomerQuery; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java index aa716755..88d5c6f4 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/InstitutionDashboardExecutor.java @@ -11,7 +11,7 @@ import org.qinan.safetyeval.client.co.institution.dashboard.InstitutionDashboard import org.qinan.safetyeval.client.co.institution.dashboard.InstitutionDashboardProjectNodeStatsCO; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.domain.constant.EvalTypeEnum; -import org.qinan.safetyeval.domain.constant.IndustryEnum; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; import org.qinan.safetyeval.domain.entity.EvalCustomerEntity; import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.gateway.EvalCustomerGateway; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorCockpitExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorCockpitExecutor.java index 876766d8..a4f635e5 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorCockpitExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorCockpitExecutor.java @@ -14,7 +14,7 @@ import org.qinan.safetyeval.client.co.regulator.cockpit.CockpitRegionDistributio import org.qinan.safetyeval.client.co.regulator.cockpit.CockpitReviewSummaryCO; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.domain.constant.EvalTypeEnum; -import org.qinan.safetyeval.domain.constant.IndustryEnum; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum; import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.entity.InspNoticeEntity; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java index fa796ab7..b06d20c8 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java @@ -17,8 +17,6 @@ import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectSurveyPageQuery; -import org.qinan.safetyeval.domain.constant.EvalTypeEnum; -import org.qinan.safetyeval.domain.constant.IndustryEnum; import org.qinan.safetyeval.domain.constant.ProjectProcessWaringStatusEnum; import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.exception.BizException; diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java index 63d3536d..61b8c06a 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelViewEnricher.java @@ -8,8 +8,8 @@ import org.qinan.safetyeval.domain.major.gateway.BasicDisciplineMajorGateway; import org.qinan.safetyeval.domain.major.model.BasicDisciplineMajorE; import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery; import org.qinan.safetyeval.domain.query.PageResult; -import org.qinan.safetyeval.domain.constant.IndustryEnum; -import org.qinan.safetyeval.domain.constant.ProfessionalCapabilityEnum; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; +import org.qinan.safetyeval.domain.constant.basic.ProfessionalCapabilityEnum; import org.qinan.safetyeval.domain.standards.gateway.IndustryProfessionalStandardsGateway; import org.qinan.safetyeval.domain.standards.model.IndustryProfessionalStandardsE; import org.springframework.beans.factory.annotation.Autowired; 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 1109fa7f..e147ee85 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 @@ -5,6 +5,7 @@ import java.time.LocalDate; import java.util.List; import lombok.Data; +import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.TitleCodeCo; /** @@ -102,6 +103,9 @@ public class OrgPersonnelCO { @ApiModelProperty(value = "是否注册安全工程师(1是2否)") private Integer registerEngineerFlag; + @ApiModelProperty(value = "是否评价师(1是0否)") + private Integer evaluatorFlag; + @ApiModelProperty(value = "发表著作") private String publications; @@ -114,6 +118,9 @@ public class OrgPersonnelCO { @ApiModelProperty(value = "证明材料附件地址") private String proofMaterialUrl; + @ApiModelProperty(value = "能力认定") + private List capabilityAssessment; + @ApiModelProperty(value = "原始人像地址(人脸比对基准图)") private String originFaceUrl; @@ -123,6 +130,9 @@ public class OrgPersonnelCO { @ApiModelProperty(value = "是否过程控制负责人") private Boolean processControlLeaderFlag; + @ApiModelProperty(value = "人员岗位类型: TECHNICAL_LEADER=>技术负责人; PROCESS_CONTROL_LEADER=>过程控制负责人") + private String personnelPositionType; + @ApiModelProperty(value = "部门名称(列表展示,非持久化)") private String deptName; @@ -144,6 +154,12 @@ public class OrgPersonnelCO { @ApiModelProperty(value = "离职申请审核状态(列表展示,非持久化)") private Integer resignAuditStatus; + @ApiModelProperty(value = "注安证书信息") + private OrgPersonnelCertCO registeredSafetyEngineerCert; + + @ApiModelProperty(value = "评价师证书信息") + private OrgPersonnelCertCO evaluatorCert; + @ApiModelProperty(value = "租户ID") private Long tenantId; } 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 3f78569f..85111dec 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 @@ -6,6 +6,8 @@ import java.util.List; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import lombok.Data; +import org.qinan.safetyeval.client.co.OrgPersonnelCertCO; +import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.TitleCodeCo; /** @@ -111,6 +113,9 @@ public class OrgPersonnelAddCmd { @ApiModelProperty(value = "是否注册安全工程师(1是2否)") private Integer registerEngineerFlag; + @ApiModelProperty(value = "是否评价师(1是0否)") + private Integer evaluatorFlag; + @Size(max = 1000, message = "出版学术专著等长度不能超过1000个字符") @ApiModelProperty(value = "出版学术专著专利获奖论文等") private String publications; @@ -127,12 +132,24 @@ public class OrgPersonnelAddCmd { @ApiModelProperty(value = "申报专业能力证明材料地址") private String proofMaterialUrl; + @ApiModelProperty(value = "能力认定") + private List capabilityAssessment; + + @ApiModelProperty(value = "注安证书信息") + private OrgPersonnelCertAddCmd registeredSafetyEngineerCert; + + @ApiModelProperty(value = "评价师证书信息") + private OrgPersonnelCertAddCmd evaluatorCert; + @ApiModelProperty(value = "是否技术负责人") private Boolean technicalDirectorFlag; @ApiModelProperty(value = "是否过程控制负责人") private Boolean processControlLeaderFlag; + @ApiModelProperty(value = "人员岗位类型: TECHNICAL_LEADER=>技术负责人; PROCESS_CONTROL_LEADER=>过程控制负责人") + private String personnelPositionType; + @ApiModelProperty(value = "部门id") private Long deptId; 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 3f806649..4d9de13b 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 @@ -6,6 +6,7 @@ import java.util.List; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import lombok.Data; +import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.TitleCodeCo; /** @@ -114,6 +115,9 @@ public class OrgPersonnelModifyCmd { @ApiModelProperty(value = "是否注册安全工程师(1是2否)") private Integer registerEngineerFlag; + @ApiModelProperty(value = "是否评价师(1是0否)") + private Integer evaluatorFlag; + @Size(max = 1000, message = "出版学术专著等长度不能超过1000个字符") @ApiModelProperty(value = "出版学术专著专利获奖论文等") private String publications; @@ -130,12 +134,18 @@ public class OrgPersonnelModifyCmd { @ApiModelProperty(value = "申报专业能力证明材料地址") private String proofMaterialUrl; + @ApiModelProperty(value = "能力认定") + private List capabilityAssessment; + @ApiModelProperty(value = "是否技术负责人") private Boolean technicalDirectorFlag; @ApiModelProperty(value = "是否过程控制负责人") private Boolean processControlLeaderFlag; + @ApiModelProperty(value = "人员岗位类型: TECHNICAL_LEADER=>技术负责人; PROCESS_CONTROL_LEADER=>过程控制负责人") + private String personnelPositionType; + @ApiModelProperty(value = "部门id") private Long deptId; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/IndustryEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/IndustryEnum.java similarity index 97% rename from safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/IndustryEnum.java rename to safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/IndustryEnum.java index 0964fe0a..e174beda 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/IndustryEnum.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/IndustryEnum.java @@ -1,4 +1,4 @@ -package org.qinan.safetyeval.domain.constant; +package org.qinan.safetyeval.domain.constant.basic; /** * 行业类型枚举 diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/PersonnelPositionTypeEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/PersonnelPositionTypeEnum.java new file mode 100644 index 00000000..3737c120 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/PersonnelPositionTypeEnum.java @@ -0,0 +1,22 @@ +package org.qinan.safetyeval.domain.constant.basic; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 人员岗位类型 + */ +@Getter +@RequiredArgsConstructor +public enum PersonnelPositionTypeEnum { + + TECHNICAL_LEADER("TECHNICAL_LEADER", "技术负责人"), + PROCESS_CONTROL_LEADER("PROCESS_CONTROL_LEADER", "过程控制负责人"), + ; + + private final String value; + private final String label; + + public static final String REMARKS = "人员岗位类型: TECHNICAL_LEADER=>技术负责人;" + + "PROCESS_CONTROL_LEADER=>过程控制负责人"; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProfessionalCapabilityEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/ProfessionalCapabilityEnum.java similarity index 89% rename from safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProfessionalCapabilityEnum.java rename to safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/ProfessionalCapabilityEnum.java index ee48ae8c..2d7a42ef 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProfessionalCapabilityEnum.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/ProfessionalCapabilityEnum.java @@ -1,8 +1,13 @@ -package org.qinan.safetyeval.domain.constant; +package org.qinan.safetyeval.domain.constant.basic; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; /** * 专业能力 */ +@Getter +@RequiredArgsConstructor public enum ProfessionalCapabilityEnum { SAFETY("SAFETY", "安全"), @@ -39,18 +44,6 @@ public enum ProfessionalCapabilityEnum { ",ANTICORROSION:防腐,CHEMICAL_PROCESS:化工工艺,CHEMICAL_MECHANICAL:化工机械,AUTOMATION:自动化,EXPLOSIVES:火炸药" + ",EXPLOSION_TECHNOLOGY:爆炸技术,METALLURGY:冶金,NONFERROUS_METAL:有色金属,EQUIPMENT:设备,INSTRUMENT:仪表"; - ProfessionalCapabilityEnum(String code, String value) { - this.code = code; - this.value = value; - } - - public String getCode() { - return code; - } - - public String getValue() { - return value; - } public static ProfessionalCapabilityEnum ofCode(String code) { if (code == null) { diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/ProfessionalCapabilitySourceEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/ProfessionalCapabilitySourceEnum.java new file mode 100644 index 00000000..e1c0eab6 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/ProfessionalCapabilitySourceEnum.java @@ -0,0 +1,28 @@ +package org.qinan.safetyeval.domain.constant.basic; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 专业能力来源 + */ +@Getter +@RequiredArgsConstructor +public enum ProfessionalCapabilitySourceEnum { + + REGISTERED_SAFETY_ENGINEER("REGISTERED_SAFETY_ENGINEER", "注册安全工程师"), + EDUCATION("EDUCATION", "学历"), + PROFESSIONAL_TITLE("PROFESSIONAL_TITLE", "职称"), + ACADEMIC_ACHIEVEMENT("ACADEMIC_ACHIEVEMENT", "出版学术专著、专利、获奖、发表学术论文等"), + ; + + private final String value; + private final String label; + + public static final String REMARKS = "专业能力来源: REGISTERED_SAFETY_ENGINEER=>注册安全工程师;" + + "EDUCATION=>学历;" + + "PROFESSIONAL_TITLE=>职称;" + + "ACADEMIC_ACHIEVEMENT=>出版学术专著、专利、获奖、发表学术论文等"; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/SafetyCategoryEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/SafetyCategoryEnum.java new file mode 100644 index 00000000..bab0dd1a --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/SafetyCategoryEnum.java @@ -0,0 +1,32 @@ +package org.qinan.safetyeval.domain.constant.basic; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 安全类别 + */ +@Getter +@RequiredArgsConstructor +public enum SafetyCategoryEnum { + + COAL_MINE("COAL_MINE", "煤矿安全"), + METAL_NONMETAL_MINE("METAL_NONMETAL_MINE", "金属非金属矿山安全"), + CHEMICAL("CHEMICAL", "化工安全"), + METAL_SMELTING("METAL_SMELTING", "金属冶炼安全"), + CONSTRUCTION("CONSTRUCTION", "建筑施工安全"), + ROAD_TRANSPORT("ROAD_TRANSPORT", "道路运输安全"), + OTHER("OTHER", "其他安全"), + ; + + private final String value; + private final String label; + + public static final String REMARKS = "注安专业类别: COAL_MINE=>煤矿安全 ;" + + "METAL_NONMETAL_MINE=>金属非金属矿山安全;" + + "CHEMICAL=>化工安全 ;" + + "METAL_SMELTING=>金属冶炼安全;" + + "CONSTRUCTION=>建筑施工安全 ;" + + "ROAD_TRANSPORT=>道路运输安全;" + + "OTHER=>其他安全" ; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/TitleCapabilityEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/TitleCapabilityEnum.java new file mode 100644 index 00000000..88166d67 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/basic/TitleCapabilityEnum.java @@ -0,0 +1,53 @@ +package org.qinan.safetyeval.domain.constant.basic; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 职称能力 + */ +@Getter +@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", "土木工程", "水工结构"), + ; + + private final String value; + private final String label; + private final String capability; + + public static final String REMARKS = "职称能力: P01=>安全工程(安全);" + + "P02=>机械工程(机械、化工机械);" + + "P03=>化工机械(化工机械);" + + "P04=>化学工程(化工工艺);" + + "P05=>自动化/测控技术(仪表自动化);" + + "P06=>电气工程(电气);" + + "P07=>采矿工程(采矿);" + + "P08=>通风工程(通风);" + + "P09=>地质工程(地质);" + + "P10=>矿建工程(矿建);" + + "P11=>石油工程(油气开发);" + + "P12=>油气储运工程(油气储运);" + + "P13=>腐蚀与防护(防腐);" + + "P14=>冶金工程(冶金);" + + "P15=>有色金属冶金(有色金属);" + + "P16=>火炸药/爆炸技术(火炸药);" + + "P17=>土木工程(水工结构)"; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/CapabilityAssessmentDTO.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/CapabilityAssessmentDTO.java new file mode 100644 index 00000000..e2b6c157 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/CapabilityAssessmentDTO.java @@ -0,0 +1,29 @@ +package org.qinan.safetyeval.domain.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 能力认定信息(专业能力编码 + 专业能力来源编码) + * + * @author safety-eval + */ +@Data +public class CapabilityAssessmentDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 专业能力编码,取值见 + * {@link org.qinan.safetyeval.domain.constant.basic.ProfessionalCapabilityEnum} + * {@link org.qinan.safetyeval.domain.constant.basic.ProfessionalCapabilitySourceEnum} + */ + private String professionalCapabilityCode; + + /** + * 专业能力来源编码,取值见 + * {@link org.qinan.safetyeval.domain.constant.basic.ProfessionalCapabilitySourceEnum} + */ + private String professionalCapabilitySourceCode; +} 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 366e476a..71080912 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 @@ -100,6 +100,9 @@ public class OrgPersonnelEntity { /** 是否注册安全工程师(1是2否) */ private Integer registerEngineerFlag; + /** 是否评价师(1是0否) */ + private Integer evaluatorFlag; + /** 出版学术专著专利获奖论文等 */ private String publications; @@ -112,6 +115,9 @@ public class OrgPersonnelEntity { /** 申报专业能力证明材料(多个逗号分隔) */ private String proofMaterialUrl; + /** 能力认定(JSON数组字符串持久化,DO层为String) */ + private List capabilityAssessment; + /** 原始人像地址(人脸比对基准图) */ private String originFaceUrl; @@ -121,6 +127,9 @@ public class OrgPersonnelEntity { /** 是否过程控制负责人 */ private Boolean processControlLeaderFlag; + /** 人员岗位类型: TECHNICAL_LEADER=>技术负责人; PROCESS_CONTROL_LEADER=>过程控制负责人 */ + private String personnelPositionType; + /** 租户ID */ private Long tenantId; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java index 79897346..2ec927e2 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java @@ -7,6 +7,7 @@ import org.qinan.safetyeval.domain.gateway.OrgPersonnelCertGateway; import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery; import org.qinan.safetyeval.domain.query.PageResult; +import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; @@ -29,6 +30,10 @@ public class OrgPersonnelCertDomainService { return orgPersonnelCertGateway.get(id); } + public List listByPersonnelId(Long personnelId) { + return orgPersonnelCertGateway.listByPersonnelId(personnelId); + } + public OrgPersonnelCertEntity modify(OrgPersonnelCertEntity entity) { OrgPersonnelCertEntity existing = orgPersonnelCertGateway.get(entity.getId()); if (existing == null) { 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 bb08278c..d25e220d 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 @@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; +import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity; import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; @@ -25,6 +26,7 @@ public interface OrgPersonnelDoConvertor { * @return */ @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson") + @Mapping(target = "capabilityAssessment", source = "capabilityAssessment", qualifiedByName = "capabilityAssessmentListToJson") OrgPersonnelDO convertEeToDo(OrgPersonnelEntity orgPersonnelEntity); /** @@ -34,6 +36,7 @@ public interface OrgPersonnelDoConvertor { * @return */ @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "jsonToTitleCodeList") + @Mapping(target = "capabilityAssessment", source = "capabilityAssessment", qualifiedByName = "jsonToCapabilityAssessmentList") OrgPersonnelEntity converDoToEe(OrgPersonnelDO orgPersonnelDO); /** @@ -53,4 +56,14 @@ public interface OrgPersonnelDoConvertor { default String titleCodeListToJson(List list) { return list == null || list.isEmpty() ? null : JSONUtil.toJsonStr(list); } + + @Named("jsonToCapabilityAssessmentList") + default List jsonToCapabilityAssessmentList(String json) { + return json == null || json.isEmpty() ? null : JSONUtil.toList(json, CapabilityAssessmentDTO.class); + } + + @Named("capabilityAssessmentListToJson") + default String capabilityAssessmentListToJson(List list) { + return list == null || list.isEmpty() ? null : JSONUtil.toJsonStr(list); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/OrgPersonnelDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/OrgPersonnelDO.java index ea2b83cb..998d2d49 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/OrgPersonnelDO.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/OrgPersonnelDO.java @@ -47,16 +47,19 @@ public class OrgPersonnelDO { private String educationLevelName; private String titleCodeArr; private Integer registerEngineerFlag; + private Integer evaluatorFlag; private String publications; private String abilityDeclaration; private String workExperience; private String proofMaterialUrl; + private String capabilityAssessment; @TableField(value = "origin_face_url", updateStrategy = FieldStrategy.NOT_NULL) private String originFaceUrl; private Boolean technicalDirectorFlag; private Boolean processControlLeaderFlag; + private String personnelPositionType; // ---- GBS默认字段 ---- /** 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 ed51513d..be2c5dc3 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 @@ -11,6 +11,8 @@ import org.qinan.safetyeval.client.co.OrgPersonnelCertCapabilityComplianceCheckC import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO; import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.domain.constant.*; +import org.qinan.safetyeval.domain.constant.basic.IndustryEnum; +import org.qinan.safetyeval.domain.constant.basic.ProfessionalCapabilityEnum; import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; diff --git a/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml index 6ed721b8..769a512e 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml @@ -38,7 +38,7 @@ - `id`, `org_id`, `dept_id`, `post_id`, `user_name`, `account`, `gender_code`, `gender_name`, `birth_date`, `id_card_no`, `current_address`, `office_address`, `education_code`, `education_name`, `graduate_school`, `major`, `employment_status_code`, `employment_status_name`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` + `id`, `org_id`, `dept_id`, `post_id`, `user_name`, `account`, `gender_code`, `gender_name`, `birth_date`, `id_card_no`, `current_address`, `office_address`, `education_code`, `education_name`, `graduate_school`, `major`, `employment_status_code`, `employment_status_name`, `evaluator_flag`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env`