Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # safety-eval-start/src/main/resources/templates/safetyEval.htmldev
commit
06f271df83
|
|
@ -127,4 +127,10 @@ public class QualFilingController {
|
||||||
return qualFilingApi.qualificationMonitoringPageStatistics();
|
return qualFilingApi.qualificationMonitoringPageStatistics();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取检查项")
|
||||||
|
@GetMapping("/check-item")
|
||||||
|
public SingleResponse<List<QualFilingComplianceCheckResultCO>> checkItem(@ApiParam("主键ID") @RequestParam Long id) {
|
||||||
|
return qualFilingApi.checkItem(id);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,11 @@ import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
|
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
|
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
import org.qinan.safetyeval.client.dto.institution.*;
|
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlAssignCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.institution.EvalgenerateProcessControlFormCmd;
|
||||||
|
import org.qinan.safetyeval.infrastructure.remote.SmsRemote;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
|
@ -22,18 +26,9 @@ public class EvalProcessControlController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private EvalProcessControlApi evalProcessControlApi;
|
private EvalProcessControlApi evalProcessControlApi;
|
||||||
|
@Resource
|
||||||
|
private SmsRemote smsRemote;
|
||||||
|
|
||||||
/* @ApiOperation("按项目获取或保存")
|
|
||||||
@PostMapping("/get-or-save")
|
|
||||||
public SingleResponse<EvalProcessControlCO> getOrSave(@Validated @RequestBody EvalProcessControlSaveCmd cmd) {
|
|
||||||
return evalProcessControlApi.getOrSave(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation("按项目查询")
|
|
||||||
@GetMapping("/get")
|
|
||||||
public SingleResponse<EvalProcessControlCO> get(@ApiParam("项目ID") @RequestParam String projectId) {
|
|
||||||
return evalProcessControlApi.getByProject(projectId);
|
|
||||||
} */
|
|
||||||
|
|
||||||
@ApiOperation("过程控制确认")
|
@ApiOperation("过程控制确认")
|
||||||
@PostMapping("/confirm")
|
@PostMapping("/confirm")
|
||||||
|
|
@ -71,4 +66,11 @@ public class EvalProcessControlController {
|
||||||
return evalProcessControlApi.listProjectFiles(projectId);
|
return evalProcessControlApi.listProjectFiles(projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("项目过程文件列表")
|
||||||
|
@GetMapping("/test-sms")
|
||||||
|
public SingleResponse<Void> testSms() {
|
||||||
|
smsRemote.sendMessage("19122631081", "123456");
|
||||||
|
return SingleResponse.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -42,6 +42,9 @@ public class AppEvalSignTaskController {
|
||||||
@ApiOperation("签字统计")
|
@ApiOperation("签字统计")
|
||||||
@PostMapping("/signStatistics")
|
@PostMapping("/signStatistics")
|
||||||
public SingleResponse<EvalSignTaskStatisticsCO> signStatistics(@RequestBody EvalSignTaskPageQuery cmd) {
|
public SingleResponse<EvalSignTaskStatisticsCO> signStatistics(@RequestBody EvalSignTaskPageQuery cmd) {
|
||||||
|
if (!StringUtils.hasText(cmd.getSignerPersonnelId())) {
|
||||||
|
cmd.setSignerPersonnelId(String.valueOf(AuthUserContextAdapter.getCurrentUserId()));
|
||||||
|
}
|
||||||
return evalSignTaskApi.signStatistics(cmd);
|
return evalSignTaskApi.signStatistics(cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
package org.qinan.safetyeval.app.change.convertor;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import org.mapstruct.Named;
|
||||||
|
import org.qinan.safetyeval.client.dto.AggregationSaveOrEditQualFilingCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.QualFilingAddCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.QualFilingCommitmentAddCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.QualFilingEquipmentAddCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.QualFilingMaterialAddCmd;
|
||||||
|
import org.qinan.safetyeval.client.dto.QualFilingPersonnelAddCmd;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingCommitmentDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingEquipmentDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingMaterialDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelDO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备案合规性校验聚合Cmd转换器
|
||||||
|
* 将备案各DO聚合转换为 {@link AggregationSaveOrEditQualFilingCmd}(用于合规性校验)
|
||||||
|
*
|
||||||
|
* @author safety-eval
|
||||||
|
*/
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface QualFilingComplianceCmdConvertor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 聚合转换:根据备案各DO组装合规性校验所需的聚合Cmd
|
||||||
|
*/
|
||||||
|
@Mapping(target = "qualFilingAddCmd", source = "qualFilingDO")
|
||||||
|
@Mapping(target = "qualFilingCommitmentAddCmd", source = "qualFilingCommitmentDO")
|
||||||
|
@Mapping(target = "qualFilingEquipmentAddCmds", source = "qualFilingEquipmentDOs")
|
||||||
|
@Mapping(target = "qualFilingMaterialAddCmds", source = "qualFilingMaterialDOs")
|
||||||
|
@Mapping(target = "qualFilingPersonnelAddCmds", source = "qualFilingPersonnelDOs")
|
||||||
|
@Mapping(target = "qualFilingPersonnelCertAddCmds", ignore = true)
|
||||||
|
AggregationSaveOrEditQualFilingCmd convertToCmd(QualFilingDO qualFilingDO,
|
||||||
|
QualFilingCommitmentDO qualFilingCommitmentDO,
|
||||||
|
List<QualFilingEquipmentDO> qualFilingEquipmentDOs,
|
||||||
|
List<QualFilingMaterialDO> qualFilingMaterialDOs,
|
||||||
|
List<QualFilingPersonnelDO> qualFilingPersonnelDOs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备案基本信息DO转Cmd(businessScope 由 JSON 字符串解析为 List)
|
||||||
|
*/
|
||||||
|
@Mapping(target = "businessScope", source = "businessScope", qualifiedByName = "jsonStringToList")
|
||||||
|
QualFilingAddCmd convertFilingDOToCmd(QualFilingDO qualFilingDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备案承诺书DO转Cmd
|
||||||
|
*/
|
||||||
|
QualFilingCommitmentAddCmd convertCommitmentDOToCmd(QualFilingCommitmentDO qualFilingCommitmentDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备案装备DO转Cmd
|
||||||
|
*/
|
||||||
|
QualFilingEquipmentAddCmd convertEquipmentDOToCmd(QualFilingEquipmentDO qualFilingEquipmentDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备案材料DO转Cmd
|
||||||
|
*/
|
||||||
|
QualFilingMaterialAddCmd convertMaterialDOToCmd(QualFilingMaterialDO qualFilingMaterialDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备案人员DO转Cmd
|
||||||
|
*/
|
||||||
|
QualFilingPersonnelAddCmd convertPersonnelDOToCmd(QualFilingPersonnelDO qualFilingPersonnelDO);
|
||||||
|
|
||||||
|
@Named("jsonStringToList")
|
||||||
|
default List<String> jsonStringToList(String json) {
|
||||||
|
return json == null ? null : JSON.parseArray(json, String.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,12 +2,9 @@ package org.qinan.safetyeval.app.executor;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import org.qinan.safetyeval.app.change.convertor.*;
|
||||||
import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator;
|
import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator;
|
||||||
import org.qinan.safetyeval.client.api.QualFilingApi;
|
import org.qinan.safetyeval.client.api.QualFilingApi;
|
||||||
import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeAddCmd;
|
|
||||||
import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeAddCmd;
|
|
||||||
import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeAddCmd;
|
|
||||||
import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeAddCmd;
|
|
||||||
import org.qinan.safetyeval.client.co.QualFilingCO;
|
import org.qinan.safetyeval.client.co.QualFilingCO;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
|
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingDetailCO;
|
import org.qinan.safetyeval.client.co.QualFilingDetailCO;
|
||||||
|
|
@ -15,7 +12,6 @@ import org.qinan.safetyeval.client.co.QualFilingStatisticsCO;
|
||||||
import org.qinan.safetyeval.client.dto.*;
|
import org.qinan.safetyeval.client.dto.*;
|
||||||
import org.qinan.safetyeval.domain.constant.BooleanQAEnum;
|
import org.qinan.safetyeval.domain.constant.BooleanQAEnum;
|
||||||
import org.qinan.safetyeval.domain.constant.QualFilingApplyTypeEnum;
|
import org.qinan.safetyeval.domain.constant.QualFilingApplyTypeEnum;
|
||||||
import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum;
|
|
||||||
import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
|
import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
|
||||||
import org.qinan.safetyeval.domain.entity.*;
|
import org.qinan.safetyeval.domain.entity.*;
|
||||||
import org.qinan.safetyeval.domain.exception.BizException;
|
import org.qinan.safetyeval.domain.exception.BizException;
|
||||||
|
|
@ -67,6 +63,19 @@ public class QualFilingExecutor implements QualFilingApi {
|
||||||
@Resource
|
@Resource
|
||||||
private QualFilingPersonnelCertMapper qualFilingPersonnelCertMapper;
|
private QualFilingPersonnelCertMapper qualFilingPersonnelCertMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private QualFilingChangeCmdConvertor qualFilingChangeCmdConvertor;
|
||||||
|
@Resource
|
||||||
|
private QualFilingCommitmentChangeCmdConvertor qualFilingCommitmentChangeCmdConvertor;
|
||||||
|
@Resource
|
||||||
|
private QualFilingEquipmentChangeCmdConvertor qualFilingEquipmentChangeCmdConvertor;
|
||||||
|
@Resource
|
||||||
|
private QualFilingMaterialChangeCmdConvertor qualFilingMaterialChangeCmdConvertor;
|
||||||
|
@Resource
|
||||||
|
private QualFilingPersonnelChangeCmdConvertor qualFilingPersonnelChangeCmdConvertor;
|
||||||
|
@Resource
|
||||||
|
private QualFilingComplianceCmdConvertor qualFilingComplianceCmdConvertor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<QualFilingCO> add(QualFilingAddCmd cmd) {
|
public SingleResponse<QualFilingCO> add(QualFilingAddCmd cmd) {
|
||||||
QualFilingEntity entity = new QualFilingEntity();
|
QualFilingEntity entity = new QualFilingEntity();
|
||||||
|
|
@ -228,6 +237,43 @@ public class QualFilingExecutor implements QualFilingApi {
|
||||||
public void review(QualFilingReviewAddCmd cmd) {
|
public void review(QualFilingReviewAddCmd cmd) {
|
||||||
qualFilingDomainService.review(cmd.getFilingId(), cmd.getReviewResult()
|
qualFilingDomainService.review(cmd.getFilingId(), cmd.getReviewResult()
|
||||||
, cmd.getReviewResultRemark(), cmd.getFilingExpertId(), cmd.getFilingExpertName(), cmd.getReviewOpinion());
|
, cmd.getReviewResultRemark(), cmd.getFilingExpertId(), cmd.getFilingExpertName(), cmd.getReviewOpinion());
|
||||||
|
QualFilingStatusEnum qualFilingStatusEnum = QualFilingStatusEnum.ofCode(Integer.valueOf(cmd.getReviewResult()));
|
||||||
|
if (qualFilingStatusEnum == QualFilingStatusEnum.FILED) {
|
||||||
|
passedSaveToChange(cmd.getFilingId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void passedSaveToChange(Long filingId) {
|
||||||
|
QualFilingDO qualFilingDO = qualFilingMapper.selectById(filingId);
|
||||||
|
// 检查是否已存在资质变更记录,若已存在则不允许再次保存
|
||||||
|
Long changeCount = qualFilingMapper.selectCount(new LambdaQueryWrapper<QualFilingDO>()
|
||||||
|
.eq(QualFilingDO::getFilingStatusCode, QualFilingStatusEnum.FILED.getCode())
|
||||||
|
.eq(QualFilingDO::getId, filingId));
|
||||||
|
if (changeCount != null && changeCount > 1) {
|
||||||
|
throw new com.alibaba.cola.exception.BizException("存在已备案的不能重复备案");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 审核通过,需要新增资质变更记录
|
||||||
|
AggregationSaveOrEditQualFilingChangeCmd cmdSync = new AggregationSaveOrEditQualFilingChangeCmd();
|
||||||
|
|
||||||
|
cmdSync.setQualFilingChangeAddCmd(qualFilingChangeCmdConvertor.convertDOToCmd(qualFilingDO));
|
||||||
|
// 备案承诺书
|
||||||
|
QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper<QualFilingCommitmentDO>()
|
||||||
|
.eq(QualFilingCommitmentDO::getFilingId, filingId));
|
||||||
|
cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeCmdConvertor.convertDOToCmd(qualFilingCommitmentDO));
|
||||||
|
// 备案装备
|
||||||
|
List<QualFilingEquipmentDO> qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper<QualFilingEquipmentDO>()
|
||||||
|
.eq(QualFilingEquipmentDO::getFilingId, filingId));
|
||||||
|
cmdSync.setQualFilingEquipmentChangeAddCmds(qualFilingEquipmentChangeCmdConvertor.convertDOListToCmdList(qualFilingEquipmentDOs));
|
||||||
|
// 备案材料清单
|
||||||
|
List<QualFilingMaterialDO> qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper<QualFilingMaterialDO>()
|
||||||
|
.eq(QualFilingMaterialDO::getFilingId, filingId));
|
||||||
|
cmdSync.setQualFilingMaterialChangeAddCmds(qualFilingMaterialChangeCmdConvertor.convertDOListToCmdList(qualFilingMaterialDOs));
|
||||||
|
// 备案人员
|
||||||
|
List<QualFilingPersonnelDO> qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper<QualFilingPersonnelDO>()
|
||||||
|
.eq(QualFilingPersonnelDO::getFilingId, filingId));
|
||||||
|
cmdSync.setQualFilingPersonnelChangeAddCmds(qualFilingPersonnelChangeCmdConvertor.convertDOListToCmdList(qualFilingPersonnelDOs));
|
||||||
|
qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -242,6 +288,28 @@ public class QualFilingExecutor implements QualFilingApi {
|
||||||
return SingleResponse.success(co);
|
return SingleResponse.success(co);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SingleResponse<List<QualFilingComplianceCheckResultCO>> checkItem(Long filingId) {
|
||||||
|
QualFilingDO qualFilingDO = qualFilingMapper.selectById(filingId);
|
||||||
|
// 备案承诺书
|
||||||
|
QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper<QualFilingCommitmentDO>()
|
||||||
|
.eq(QualFilingCommitmentDO::getFilingId, filingId));
|
||||||
|
// 备案装备
|
||||||
|
List<QualFilingEquipmentDO> qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper<QualFilingEquipmentDO>()
|
||||||
|
.eq(QualFilingEquipmentDO::getFilingId, filingId));
|
||||||
|
// 备案材料清单
|
||||||
|
List<QualFilingMaterialDO> qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper<QualFilingMaterialDO>()
|
||||||
|
.eq(QualFilingMaterialDO::getFilingId, filingId));
|
||||||
|
// 备案人员
|
||||||
|
List<QualFilingPersonnelDO> qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper<QualFilingPersonnelDO>()
|
||||||
|
.eq(QualFilingPersonnelDO::getFilingId, filingId));
|
||||||
|
|
||||||
|
// 聚合转换为合规性校验Cmd
|
||||||
|
AggregationSaveOrEditQualFilingCmd cmdSync = qualFilingComplianceCmdConvertor.convertToCmd(
|
||||||
|
qualFilingDO, qualFilingCommitmentDO, qualFilingEquipmentDOs, qualFilingMaterialDOs, qualFilingPersonnelDOs);
|
||||||
|
return SingleResponse.success(ComplianceCheckUtil.complianceCheck(cmdSync, false));
|
||||||
|
}
|
||||||
|
|
||||||
private QualFilingCO toLegacyCO(QualFilingEntity entity) {
|
private QualFilingCO toLegacyCO(QualFilingEntity entity) {
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,7 @@ import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -134,8 +133,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
||||||
public SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd) {
|
public SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd) {
|
||||||
Long projectId = cmd.getProjectId();
|
Long projectId = cmd.getProjectId();
|
||||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
||||||
// 校验前置节点是否全部完成(过程控制节点除外)
|
// 校验前置节点是否全部完成(过程控制、归档节点除外)
|
||||||
assertPreNodesCompleted(project);
|
assertPreNodesCompleted(project, Arrays.asList(ProjectStageEnum.PROCESS_CONTROL, ProjectStageEnum.ARCHIVE));
|
||||||
// 判断项目是否归档
|
// 判断项目是否归档
|
||||||
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
||||||
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
|
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
|
||||||
|
|
@ -177,8 +176,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
||||||
public SingleResponse<Void> assign(EvalProcessControlAssignCmd cmd) {
|
public SingleResponse<Void> assign(EvalProcessControlAssignCmd cmd) {
|
||||||
Long projectId = cmd.getProjectId();
|
Long projectId = cmd.getProjectId();
|
||||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
||||||
// 校验前置节点是否全部完成(过程控制节点除外)
|
// 校验前置节点是否全部完成(过程控制、归档节点除外)
|
||||||
assertPreNodesCompleted(project);
|
assertPreNodesCompleted(project, Arrays.asList(ProjectStageEnum.PROCESS_CONTROL, ProjectStageEnum.ARCHIVE));
|
||||||
// 判断项目是否归档
|
// 判断项目是否归档
|
||||||
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
||||||
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
|
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
|
||||||
|
|
@ -305,8 +304,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
||||||
public SingleResponse<EvalProcessControlCO> generateProcessControlForm(EvalgenerateProcessControlFormCmd cmd) {
|
public SingleResponse<EvalProcessControlCO> generateProcessControlForm(EvalgenerateProcessControlFormCmd cmd) {
|
||||||
Long projectId = Long.parseLong(cmd.getProjectId());
|
Long projectId = Long.parseLong(cmd.getProjectId());
|
||||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
||||||
// 校验前置节点是否全部完成(过程控制节点除外)
|
// 校验前置节点是否全部完成(过程控制、归档节点除外)
|
||||||
assertPreNodesCompleted(project);
|
assertPreNodesCompleted(project, Arrays.asList(ProjectStageEnum.PROCESS_CONTROL, ProjectStageEnum.ARCHIVE));
|
||||||
// TODO 归档交接单生成功能暂未实现
|
// TODO 归档交接单生成功能暂未实现
|
||||||
return SingleResponse.success(null);
|
return SingleResponse.success(null);
|
||||||
}
|
}
|
||||||
|
|
@ -319,8 +318,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
||||||
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
||||||
throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE);
|
throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE);
|
||||||
}
|
}
|
||||||
// 校验前置节点是否全部完成(过程控制节点除外)
|
// 校验前置节点是否全部完成(过程控制、归档节点除外)
|
||||||
assertPreNodesCompleted(project);
|
assertPreNodesCompleted(project, Collections.singletonList(ProjectStageEnum.ARCHIVE));
|
||||||
|
|
||||||
EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId());
|
EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId());
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
|
|
@ -609,9 +608,9 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 过程控制前置节点校验:除 PROCESS_CONTROL 节点外,其余节点 state 必须全部为 1(完成)。
|
* 过程控制前置节点校验:除传入的 excludedStages 节点外,其余节点 state 必须全部为 1(完成)。
|
||||||
*/
|
*/
|
||||||
private void assertPreNodesCompleted(EvalProjectEntity project) {
|
private void assertPreNodesCompleted(EvalProjectEntity project, List<ProjectStageEnum> excludedStages) {
|
||||||
String projectNode = project.getProjectNode();
|
String projectNode = project.getProjectNode();
|
||||||
if (!StringUtils.hasText(projectNode)) {
|
if (!StringUtils.hasText(projectNode)) {
|
||||||
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
|
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
|
||||||
|
|
@ -620,8 +619,11 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
||||||
if (CollectionUtils.isEmpty(nodes)) {
|
if (CollectionUtils.isEmpty(nodes)) {
|
||||||
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
|
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
|
||||||
}
|
}
|
||||||
|
Set<String> excludedVals = excludedStages.stream()
|
||||||
|
.map(ProjectStageEnum::getVal)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
boolean allCompleted = nodes.stream()
|
boolean allCompleted = nodes.stream()
|
||||||
.filter(n -> !ProjectStageEnum.PROCESS_CONTROL.getVal().equals(n.getType()))
|
.filter(n -> !excludedVals.contains(n.getType()))
|
||||||
.allMatch(n -> n.getState() != null && n.getState() == 1);
|
.allMatch(n -> n.getState() != null && n.getState() == 1);
|
||||||
if (!allCompleted) {
|
if (!allCompleted) {
|
||||||
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
|
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
|
||||||
|
|
|
||||||
|
|
@ -174,13 +174,6 @@ public class EvalTechReviewExecutor implements EvalTechReviewApi {
|
||||||
EvalTechReviewEntity entity = evalTechReviewGateway.getByProjectId(projectId, project.getOrgId());
|
EvalTechReviewEntity entity = evalTechReviewGateway.getByProjectId(projectId, project.getOrgId());
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
throw new BizException(ErrorCode.EVAL_TECH_REVIEW_NOT_FOUND);
|
throw new BizException(ErrorCode.EVAL_TECH_REVIEW_NOT_FOUND);
|
||||||
// // 没有数据则新增,并下发签字任务
|
|
||||||
// entity = new EvalTechReviewEntity();
|
|
||||||
// entity.setOrgId(project.getOrgId());
|
|
||||||
// entity.setProjectId(projectId);
|
|
||||||
// entity.setStatusCode(1);
|
|
||||||
// entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode());
|
|
||||||
// evalTechReviewGateway.save(entity);
|
|
||||||
} else {
|
} else {
|
||||||
entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode());
|
entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode());
|
||||||
evalTechReviewGateway.modify(entity);
|
evalTechReviewGateway.modify(entity);
|
||||||
|
|
|
||||||
|
|
@ -147,25 +147,8 @@ public class QualOnSiteReviewUpdateCmdExe {
|
||||||
if (!updateRes) {
|
if (!updateRes) {
|
||||||
throw new BizException("数据已被更新,请刷新重试");
|
throw new BizException("数据已被更新,请刷新重试");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 审查通过时,更新备案状态为已备案
|
|
||||||
if (passed) {
|
|
||||||
// 基本信息
|
|
||||||
QualFilingDO qualFilingDO = qualFilingMapper.selectByOrgIdLastOne(reviewDO.getOrgId());
|
|
||||||
QualFilingEntity filingEntity = new QualFilingEntity();
|
|
||||||
filingEntity.setId(qualFilingDO.getId());
|
|
||||||
filingEntity.setFilingStatusCode(QualFilingStatusEnum.FILED.getCode());
|
|
||||||
filingEntity.setFilingStatusName(QualFilingStatusEnum.FILED.getName());
|
|
||||||
qualFilingGateway.modify(filingEntity);
|
|
||||||
|
|
||||||
qualFilingDO.setFilingStatusCode(filingEntity.getFilingStatusCode());
|
|
||||||
// 审核通过,同步生成资质变更记录
|
|
||||||
passedSaveToChange(qualFilingDO);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存审查结果文件
|
// 保存审查结果文件
|
||||||
saveFileList(cmd.getId(), cmd.getFileList());
|
saveFileList(cmd.getId(), cmd.getFileList());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -187,35 +170,5 @@ public class QualOnSiteReviewUpdateCmdExe {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void passedSaveToChange(QualFilingDO qualFilingDO) {
|
|
||||||
Long filingId = qualFilingDO.getId();
|
|
||||||
// 检查是否已存在资质变更记录,若已存在则不允许再次保存
|
|
||||||
Long changeCount = qualFilingChangeMapper.selectCount(new LambdaQueryWrapper<QualFilingChangeDO>()
|
|
||||||
.eq(QualFilingChangeDO::getFilingId, filingId));
|
|
||||||
if (changeCount != null && changeCount > 0) {
|
|
||||||
throw new BizException("已经保存不能再次保存");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 审核通过,需要新增资质变更记录
|
|
||||||
AggregationSaveOrEditQualFilingChangeCmd cmdSync = new AggregationSaveOrEditQualFilingChangeCmd();
|
|
||||||
|
|
||||||
cmdSync.setQualFilingChangeAddCmd(qualFilingChangeCmdConvertor.convertDOToCmd(qualFilingDO));
|
|
||||||
// 备案承诺书
|
|
||||||
QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper<QualFilingCommitmentDO>()
|
|
||||||
.eq(QualFilingCommitmentDO::getFilingId, filingId));
|
|
||||||
cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeCmdConvertor.convertDOToCmd(qualFilingCommitmentDO));
|
|
||||||
// 备案装备
|
|
||||||
List<QualFilingEquipmentDO> qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper<QualFilingEquipmentDO>()
|
|
||||||
.eq(QualFilingEquipmentDO::getFilingId, filingId));
|
|
||||||
cmdSync.setQualFilingEquipmentChangeAddCmds(qualFilingEquipmentChangeCmdConvertor.convertDOListToCmdList(qualFilingEquipmentDOs));
|
|
||||||
// 备案材料清单
|
|
||||||
List<QualFilingMaterialDO> qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper<QualFilingMaterialDO>()
|
|
||||||
.eq(QualFilingMaterialDO::getFilingId, filingId));
|
|
||||||
cmdSync.setQualFilingMaterialChangeAddCmds(qualFilingMaterialChangeCmdConvertor.convertDOListToCmdList(qualFilingMaterialDOs));
|
|
||||||
// 备案人员
|
|
||||||
List<QualFilingPersonnelDO> qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper<QualFilingPersonnelDO>()
|
|
||||||
.eq(QualFilingPersonnelDO::getFilingId, filingId));
|
|
||||||
cmdSync.setQualFilingPersonnelChangeAddCmds(qualFilingPersonnelChangeCmdConvertor.convertDOListToCmdList(qualFilingPersonnelDOs));
|
|
||||||
qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,4 +48,6 @@ public interface QualFilingApi {
|
||||||
PageResponse<QualFilingCO> qualificationMonitoringPage(QualificationMonitoringQuery query);
|
PageResponse<QualFilingCO> qualificationMonitoringPage(QualificationMonitoringQuery query);
|
||||||
|
|
||||||
SingleResponse<QualFilingStatisticsCO> qualificationMonitoringPageStatistics();
|
SingleResponse<QualFilingStatisticsCO> qualificationMonitoringPageStatistics();
|
||||||
|
|
||||||
|
SingleResponse<List<QualFilingComplianceCheckResultCO>> checkItem(Long id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
package org.qinan.safetyeval.client.co.institution;
|
package org.qinan.safetyeval.client.co.institution;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目节点完成进度中的单个节点对象
|
* 项目节点完成进度中的单个节点对象
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
public class ProjectNodeCO {
|
public class ProjectNodeCO {
|
||||||
/**
|
/**
|
||||||
* @ProjectNode
|
* @ProjectNode
|
||||||
|
|
@ -15,4 +17,9 @@ public class ProjectNodeCO {
|
||||||
* 0未完成 1完成
|
* 0未完成 1完成
|
||||||
*/
|
*/
|
||||||
private Integer state;
|
private Integer state;
|
||||||
|
|
||||||
|
public ProjectNodeCO(String type, Integer state) {
|
||||||
|
this.type = type;
|
||||||
|
this.state = state;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -21,7 +21,9 @@ public enum ProjectStageEnum {
|
||||||
REPORT_PREPARATION("REPORT_PREPARATION", "报告编制", "NODE_05"),
|
REPORT_PREPARATION("REPORT_PREPARATION", "报告编制", "NODE_05"),
|
||||||
INTERNAL_REVIEW("INTERNAL_REVIEW", "内部审核", "NODE_06"),
|
INTERNAL_REVIEW("INTERNAL_REVIEW", "内部审核", "NODE_06"),
|
||||||
TECHNICAL_REVIEW("TECHNICAL_REVIEW", "技术审核", "NODE_07"),
|
TECHNICAL_REVIEW("TECHNICAL_REVIEW", "技术审核", "NODE_07"),
|
||||||
PROCESS_CONTROL("PROCESS_CONTROL", "过程控制", "NODE_08");
|
PROCESS_CONTROL("PROCESS_CONTROL", "过程控制", "NODE_08"),
|
||||||
|
ARCHIVE("ARCHIVE", "归档", "NODE_09"),
|
||||||
|
;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final String val;
|
private final String val;
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ public enum ErrorCode {
|
||||||
EVAL_ARCHIVE_SIGN_INCOMPLETE("06-05-017", "签字未完成,无法归档"),
|
EVAL_ARCHIVE_SIGN_INCOMPLETE("06-05-017", "签字未完成,无法归档"),
|
||||||
EVAL_HANDOVER_FORM_NOT_CREATED("06-05-018", "归档交接单未生成,无法归档"),
|
EVAL_HANDOVER_FORM_NOT_CREATED("06-05-018", "归档交接单未生成,无法归档"),
|
||||||
EVAL_PROJECT_ERROR("06-05-019", "项目不存在"),
|
EVAL_PROJECT_ERROR("06-05-019", "项目不存在"),
|
||||||
EVAL_PROCESS_PRE_NODES_INCOMPLETE("06-05-020", "前置节点未完成,无法操作过程控制"),
|
EVAL_PROCESS_PRE_NODES_INCOMPLETE("06-05-020", "前置节点未完成,无法操作"),
|
||||||
EVAL_PROJECT_NODE_NOT_FOUND("06-05-021", "节点不存在"),
|
EVAL_PROJECT_NODE_NOT_FOUND("06-05-021", "节点不存在"),
|
||||||
|
|
||||||
// ---- 监督检查告知(phase2 P3) ----
|
// ---- 监督检查告知(phase2 P3) ----
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.qinan.safetyeval.client.co.institution.ProjectNodeCO;
|
import org.qinan.safetyeval.client.co.institution.ProjectNodeCO;
|
||||||
import org.qinan.safetyeval.domain.constant.EvalProjectProgressStatEnum;
|
import org.qinan.safetyeval.domain.constant.EvalProjectProgressStatEnum;
|
||||||
|
import org.qinan.safetyeval.domain.constant.ProjectStageEnum;
|
||||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||||
import org.qinan.safetyeval.domain.gateway.EvalProjectGateway;
|
import org.qinan.safetyeval.domain.gateway.EvalProjectGateway;
|
||||||
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
||||||
|
|
@ -46,8 +47,6 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
||||||
@Resource
|
@Resource
|
||||||
private OrgContextResolver orgContextResolver;
|
private OrgContextResolver orgContextResolver;
|
||||||
@Autowired
|
@Autowired
|
||||||
private EvalSignTaskMapper evalSignTaskMapper;
|
|
||||||
@Autowired
|
|
||||||
private EvalSurveyMapper evalSurveyMapper;
|
private EvalSurveyMapper evalSurveyMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -58,7 +57,11 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
||||||
dataObject.setArchiveFlag(0);
|
dataObject.setArchiveFlag(0);
|
||||||
}
|
}
|
||||||
InsertFieldDefaults.apply(dataObject);
|
InsertFieldDefaults.apply(dataObject);
|
||||||
dataObject.setProjectNode("[{\"type\":\"RISK_ANALYSIS\",\"state\":0},{\"type\":\"BUSINESS_CONTRACT\",\"state\":0},{\"type\":\"PROJECT_GROUP\",\"state\":0},{\"type\":\"SITE_SURVEY\",\"state\":0},{\"type\":\"REPORT_PREPARATION\",\"state\":0},{\"type\":\"INTERNAL_REVIEW\",\"state\":0},{\"type\":\"TECHNICAL_REVIEW\",\"state\":0},{\"type\":\"PROCESS_CONTROL\",\"state\":0}]");
|
List<ProjectNodeCO> projectNodes = new ArrayList<>();
|
||||||
|
for (ProjectStageEnum stage : ProjectStageEnum.values()) {
|
||||||
|
projectNodes.add(new ProjectNodeCO(stage.getVal(), 0));
|
||||||
|
}
|
||||||
|
dataObject.setProjectNode(JSON.toJSONString(projectNodes));
|
||||||
evalProjectMapper.insert(dataObject);
|
evalProjectMapper.insert(dataObject);
|
||||||
entity.setId(dataObject.getId());
|
entity.setId(dataObject.getId());
|
||||||
return entity;
|
return entity;
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,8 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
|
||||||
* @param reviewOpinion 审核意见
|
* @param reviewOpinion 审核意见
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void review(Long filingId, String reviewResult, String reviewResultRemark, Long filingExpertId, String filingExpertName, String reviewOpinion) {
|
public void review(Long filingId, String reviewResult, String reviewResultRemark
|
||||||
|
, Long filingExpertId, String filingExpertName, String reviewOpinion) {
|
||||||
// 保存审核记录
|
// 保存审核记录
|
||||||
QualFilingReviewDO qualFilingReviewDO = new QualFilingReviewDO();
|
QualFilingReviewDO qualFilingReviewDO = new QualFilingReviewDO();
|
||||||
qualFilingReviewDO.setFilingId(filingId);
|
qualFilingReviewDO.setFilingId(filingId);
|
||||||
|
|
@ -282,8 +283,6 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
|
||||||
// 更新备案状态
|
// 更新备案状态
|
||||||
QualFilingDO filing = new QualFilingDO();
|
QualFilingDO filing = new QualFilingDO();
|
||||||
QualFilingStatusEnum qualFilingStatusEnum = QualFilingStatusEnum.ofCode(Integer.valueOf(reviewResult));
|
QualFilingStatusEnum qualFilingStatusEnum = QualFilingStatusEnum.ofCode(Integer.valueOf(reviewResult));
|
||||||
qualFilingStatusEnum = qualFilingStatusEnum == QualFilingStatusEnum.FILED
|
|
||||||
? QualFilingStatusEnum.CONDITION_COMPLIANCE_PASS : qualFilingStatusEnum;
|
|
||||||
filing.setFilingStatusCode(qualFilingStatusEnum.getCode());
|
filing.setFilingStatusCode(qualFilingStatusEnum.getCode());
|
||||||
filing.setFilingStatusName(qualFilingStatusEnum.getName());
|
filing.setFilingStatusName(qualFilingStatusEnum.getName());
|
||||||
filing.setApproveTime(LocalDateTime.now());
|
filing.setApproveTime(LocalDateTime.now());
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class EvalReportQueryServiceImpl implements EvalReportQueryService {
|
||||||
if (report.getFileUrl() != null) {
|
if (report.getFileUrl() != null) {
|
||||||
EvalProjectFileCO co = new EvalProjectFileCO();
|
EvalProjectFileCO co = new EvalProjectFileCO();
|
||||||
co.setProcessName(ProjectStageEnum.PROCESS_CONTROL.getMsg());
|
co.setProcessName(ProjectStageEnum.PROCESS_CONTROL.getMsg());
|
||||||
co.setItemName("归档报告");
|
co.setItemName(ProjectStageEnum.PROCESS_CONTROL.getMsg());
|
||||||
co.setProjectDocUrl(report.getFileUrl());
|
co.setProjectDocUrl(report.getFileUrl());
|
||||||
files.add(co);
|
files.add(co);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue