fix bug
parent
8471799126
commit
826283396b
|
|
@ -13,12 +13,12 @@ import java.util.List;
|
||||||
public interface OrgPersonnelMapper extends BaseMapper<OrgPersonnelDO> {
|
public interface OrgPersonnelMapper extends BaseMapper<OrgPersonnelDO> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据人员id列表统计技术负责人和过程控制负责人数量
|
* 根据人员id列表统计技术负责人和过程控制负责人数量(按业务范围 qual_scope 分组)
|
||||||
*
|
*
|
||||||
* @param ids 人员id列表(org_personnel.id)
|
* @param ids 人员id列表(org_personnel.id)
|
||||||
* @return 负责人标志位统计结果
|
* @return 负责人标志位统计结果列表,每个业务范围一条记录
|
||||||
*/
|
*/
|
||||||
OrgPersonnelLeaderCountDO countLeaderFlags(@Param("ids") List<Long> ids);
|
List<OrgPersonnelLeaderCountDO> countLeaderFlags(@Param("ids") List<Long> ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据人员id列表查询专业能力code(关联 basic_discipline_major)
|
* 根据人员id列表查询专业能力code(关联 basic_discipline_major)
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@ import lombok.Data;
|
||||||
@Data
|
@Data
|
||||||
public class OrgPersonnelLeaderCountDO {
|
public class OrgPersonnelLeaderCountDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务范围(资质范围)
|
||||||
|
*/
|
||||||
|
private String qualScope;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 技术负责人数量
|
* 技术负责人数量
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -239,28 +239,40 @@ public class ComplianceCheckUtil {
|
||||||
QualFilingComplianceCheckEnum.STATUS_FAIL, "无来源人员id");
|
QualFilingComplianceCheckEnum.STATUS_FAIL, "无来源人员id");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通过 SpringUtil 获取 OrgPersonnelMapper,统计负责人数量
|
// 通过 SpringUtil 获取 OrgPersonnelMapper,按业务范围(qual_scope)分组统计负责人数量
|
||||||
OrgPersonnelMapper orgPersonnelMapper = SpringUtil.getBean(OrgPersonnelMapper.class);
|
OrgPersonnelMapper orgPersonnelMapper = SpringUtil.getBean(OrgPersonnelMapper.class);
|
||||||
OrgPersonnelLeaderCountDO countDO = orgPersonnelMapper.countLeaderFlags(sourcePersonnelIds);
|
List<OrgPersonnelLeaderCountDO> countDOList = orgPersonnelMapper.countLeaderFlags(sourcePersonnelIds);
|
||||||
|
|
||||||
int technicalDirectorCount = countDO != null && countDO.getTechnicalDirectorCount() != null
|
// 以业务范围为维度,每个业务分别判断:至少1名技术负责人、1名过程控制负责人
|
||||||
? countDO.getTechnicalDirectorCount() : 0;
|
List<String> businessScope = filing.getBusinessScope();
|
||||||
int processControlLeaderCount = countDO != null && countDO.getProcessControlLeaderCount() != null
|
Map<String, OrgPersonnelLeaderCountDO> countByScope = countDOList == null ? Collections.emptyMap()
|
||||||
? countDO.getProcessControlLeaderCount() : 0;
|
: countDOList.stream()
|
||||||
|
.collect(Collectors.toMap(OrgPersonnelLeaderCountDO::getQualScope
|
||||||
|
, c -> c, (a, b) -> a));
|
||||||
|
|
||||||
// 需求:每个业务范围配备1名技术负责人,另配1名过程控制负责人
|
boolean pass = true;
|
||||||
int requiredTechnicalDirector = filing.getBusinessScope() != null ? filing.getBusinessScope().size() : 1;
|
StringBuilder currentValue = new StringBuilder();
|
||||||
int requiredProcessControlLeader = requiredTechnicalDirector;
|
for (String scope : businessScope) {
|
||||||
|
OrgPersonnelLeaderCountDO countDO = countByScope.get(scope);
|
||||||
boolean pass = technicalDirectorCount >= requiredTechnicalDirector
|
int technicalDirectorCount = countDO != null && countDO.getTechnicalDirectorCount() != null
|
||||||
&& processControlLeaderCount >= requiredProcessControlLeader;
|
? countDO.getTechnicalDirectorCount() : 0;
|
||||||
|
int processControlLeaderCount = countDO != null && countDO.getProcessControlLeaderCount() != null
|
||||||
String currentValue = "技术负责人 " + technicalDirectorCount + "/" + requiredTechnicalDirector
|
? countDO.getProcessControlLeaderCount() : 0;
|
||||||
+ ",过程控制负责人 " + processControlLeaderCount + "/" + requiredProcessControlLeader;
|
boolean scopePass = technicalDirectorCount >= 1 && processControlLeaderCount >= 1;
|
||||||
|
if (!scopePass) {
|
||||||
|
pass = false;
|
||||||
|
}
|
||||||
|
if (currentValue.length() > 0) {
|
||||||
|
currentValue.append(";");
|
||||||
|
}
|
||||||
|
currentValue.append("业务[").append(scope).append("] 技术负责人 ")
|
||||||
|
.append(technicalDirectorCount).append("/1,过程控制负责人 ")
|
||||||
|
.append(processControlLeaderCount).append("/1");
|
||||||
|
}
|
||||||
|
|
||||||
return buildResult(QualFilingComplianceCheckEnum.KEY_POSITION,
|
return buildResult(QualFilingComplianceCheckEnum.KEY_POSITION,
|
||||||
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
|
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
|
||||||
currentValue);
|
currentValue.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,10 @@
|
||||||
`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`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env`
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<!-- 根据人员id列表统计技术负责人和过程控制负责人数量 -->
|
<!-- 根据人员id列表统计技术负责人和过程控制负责人数量(按业务范围分组) -->
|
||||||
<select id="countLeaderFlags" resultType="org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgPersonnelLeaderCountDO">
|
<select id="countLeaderFlags" resultType="org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgPersonnelLeaderCountDO">
|
||||||
SELECT
|
SELECT
|
||||||
|
qual_scope,
|
||||||
COUNT(CASE WHEN technical_director_flag = 1 THEN 1 END) AS technical_director_count,
|
COUNT(CASE WHEN technical_director_flag = 1 THEN 1 END) AS technical_director_count,
|
||||||
COUNT(CASE WHEN process_control_leader_flag = 1 THEN 1 END) AS process_control_leader_count
|
COUNT(CASE WHEN process_control_leader_flag = 1 THEN 1 END) AS process_control_leader_count
|
||||||
FROM org_personnel
|
FROM org_personnel
|
||||||
|
|
@ -52,6 +53,7 @@
|
||||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
|
GROUP BY qual_scope
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据人员id列表查询专业能力code(关联 basic_discipline_major) -->
|
<!-- 根据人员id列表查询专业能力code(关联 basic_discipline_major) -->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue