dev
luotaiqian 2026-07-24 09:56:12 +08:00
parent ccf91b290c
commit a1a2757654
4 changed files with 36 additions and 191 deletions

View File

@ -39,7 +39,10 @@ import org.qinan.safetyeval.domain.waring.gateway.EvalProjectWaringGateway;
import org.qinan.safetyeval.domain.waring.model.EvalProjectWaringE; import org.qinan.safetyeval.domain.waring.model.EvalProjectWaringE;
import org.qinan.safetyeval.infrastructure.convertor.EvalProcessControlConvertor; import org.qinan.safetyeval.infrastructure.convertor.EvalProcessControlConvertor;
import org.qinan.safetyeval.infrastructure.convertor.EvalProjectMemberDoConvertor; import org.qinan.safetyeval.infrastructure.convertor.EvalProjectMemberDoConvertor;
import org.qinan.safetyeval.infrastructure.dataobject.EvalInternalReviewDO;
import org.qinan.safetyeval.infrastructure.dataobject.EvalProcessControlDO;
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectMemberDO; import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectMemberDO;
import org.qinan.safetyeval.infrastructure.mapper.EvalProcessControlMapper;
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMemberMapper; import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMemberMapper;
import org.qinan.safetyeval.infrastructure.persistence.queryservice.*; import org.qinan.safetyeval.infrastructure.persistence.queryservice.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -97,6 +100,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
private EvalProcessControlQueryService evalProcessControlQueryService; private EvalProcessControlQueryService evalProcessControlQueryService;
@Resource @Resource
private EvalReportQueryService evalReportQueryService; private EvalReportQueryService evalReportQueryService;
@Resource
private EvalProcessControlMapper evalProcessControlMapper;
@Override @Override
public SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd) { public SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd) {
@ -132,13 +137,15 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
} }
EvalProcessControlEntity entity = evalProcessControlConvertor.applyConfirmCmd(cmd); EvalProcessControlEntity entity = evalProcessControlConvertor.applyConfirmCmd(cmd);
EvalProcessControlDO evalProcessControlDO = evalProcessControlMapper.selectOne(new LambdaQueryWrapper<EvalProcessControlDO>()
// 过程控制结论为通过时推进项目阶段 .select(EvalProcessControlDO::getId, EvalProcessControlDO::getReviewerSignatureTaskStatus)
if (cmd.getResultCode().equals(EvalReviewEnum.PASSED.getCode())) { .eq(EvalProcessControlDO::getProjectId, cmd.getProjectId()));
projectStageSyncService.onNodeCompleted(projectId, ProjectStageEnum.PROCESS_CONTROL.getNode()); if (cmd.getId() != null && evalProcessControlDO == null) {
throw new BizException(ErrorCode.EVAL_INTERNAL_REVIEW_NOT_FOUND);
} }
if (cmd.getId() != null) { if (evalProcessControlDO != null) {
entity.setId(evalProcessControlDO.getId());
entity = evalProcessControlGateway.modify(entity); entity = evalProcessControlGateway.modify(entity);
} else { } else {
// id为空新增数据 // id为空新增数据
@ -153,6 +160,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
EvalReviewItemE itemE = evalReviewItemCmdConvertor.convertCmdToE(itemCmd); EvalReviewItemE itemE = evalReviewItemCmdConvertor.convertCmdToE(itemCmd);
itemE.setBizId(entity.getId()); itemE.setBizId(entity.getId());
itemE.setBizType(bizType); itemE.setBizType(bizType);
itemE.setDeleteEnum(BooleanQAEnum.FALSE.getValue());
itemE.setOrgId(project.getOrgId());
evalReviewItemGateway.add(itemE); evalReviewItemGateway.add(itemE);
} }
return SingleResponse.success(); return SingleResponse.success();
@ -258,14 +267,13 @@ 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);
} }
evalProjectNodeSupport.assertWrite(projectId, EvalNodeCodes.NODE_08); // 校验前置节点是否全部完成(过程控制节点除外)
evalArchivePrecheckService.assertPrecheckPassed(projectId, project.getOrgId()); assertPreNodesCompleted(project);
EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId()); EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId());
if (entity != null && entity.getArchiveFlag() != null && entity.getArchiveFlag() == 1) { if (entity != null && entity.getArchiveFlag() != null && entity.getArchiveFlag() == 1) {
throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE); throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE);
} }
// 验证签字是否完成 // 验证签字是否完成
assertSignTaskCompleted(projectId, project.getOrgId()); assertSignTaskCompleted(projectId, project.getOrgId());
@ -295,6 +303,7 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
projectStageSyncService.onArchived(projectId); projectStageSyncService.onArchived(projectId);
// 写入项目预警记录(存在则更新,不存在则新增) // 写入项目预警记录(存在则更新,不存在则新增)
upsertProjectWaring(project); upsertProjectWaring(project);
return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity)); return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity));
} }

View File

@ -3,197 +3,38 @@ package org.qinan.safetyeval.client.co.institution;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
public class EvalProcessControlCO { public class EvalProcessControlCO {
private String id; @ApiModelProperty(value = "主键ID")
private String orgId; private Long id;
private String projectId; @ApiModelProperty(value = "机构ID")
private String riskId; private Long orgId;
private String surveyId; @ApiModelProperty(value = "项目ID")
private String signTaskId; private Long projectId;
private LocalDate analysisDate; @ApiModelProperty(value = "过程控制人员ID")
@ApiModelProperty(value = "评价类型编码PRE安全预评价 ACCEPT安全验收评价 STATUS安全现状评价", example = "PRE") private Long controllerPersonnelId;
private String evalTypeCode; @ApiModelProperty(value = "过程控制人员名称")
@ApiModelProperty(value = "评价类型名称:安全预评价/安全验收评价/安全现状评价", example = "安全预评价") private String controllerName;
private String evalTypeName;
private String industryCode;
private String industryName;
private String evalScope;
@ApiModelProperty(value = "是否在资质业务范围内1是 2否", example = "1")
private Integer inBizScopeFlag;
private String unitOverview;
private String industryRiskDesc;
@ApiModelProperty(value = "人员专业构成是否满足1满足 2不满足", example = "1")
private Integer staffMatchCode;
@ApiModelProperty(value = "是否需要聘请专家1需要 2不需要", example = "2")
private Integer needExpertCode;
@ApiModelProperty(value = "是否有能力承担评价风险1是 2否", example = "1")
private Integer capabilityCode;
@ApiModelProperty(value = "项目可行性1可行 2不可行", example = "1")
private Integer feasibleCode;
@ApiModelProperty(value = "经济性1有经济效益 2无经济效益", example = "1")
private Integer economicCode;
@ApiModelProperty(value = "风险程度编码1低度 2中度 3高度", example = "1")
private Integer riskLevelCode;
@ApiModelProperty(value = "风险程度名称:低度/中度/高度", example = "低度")
private String riskLevelName;
@ApiModelProperty(value = "合同签订结论1签合同 2不签合同", example = "1")
private Integer signContractCode;
private String conclusionContent;
private String approverName;
@ApiModelProperty(value = "批准意见编码1同意 2退回补充 3不同意承接", example = "1")
private Integer approvalOpinionCode;
@ApiModelProperty(value = "批准意见名称:同意/退回补充/不同意承接", example = "同意")
private String approvalOpinionName;
private LocalDate approvalDate;
@ApiModelProperty(value = "节点状态编码1未开始 2进行中 3已完成 4退回", example = "2")
private Integer statusCode;
@ApiModelProperty(value = "节点状态名称:未开始/进行中/已完成/退回", example = "进行中")
private String statusName;
private String personnelId;
private String personnelName;
private String deptName;
@ApiModelProperty(value = "签字状态编码1待签 2已签", example = "1")
private Integer signStatusCode;
@ApiModelProperty(value = "签字状态名称:待签/已签", example = "待签")
private String signStatusName;
private String signFileUrl;
private Integer sortOrder;
private String orgName;
private String contractNo;
private String projectName;
private String projectIntro;
private Long amountFen;
private String projectTypeCode;
private String projectTypeName;
private String riskSummary;
private String projectRegion;
private String projectAddress;
private LocalDate contractStartDate;
private LocalDate contractEndDate;
@ApiModelProperty(value = "是否生产剧毒化学品1是 2否", example = "2")
private Integer toxicFlag;
@ApiModelProperty(value = "是否生产易制毒化学品1是 2否", example = "2")
private Integer precursorFlag;
@ApiModelProperty(value = "是否跨省建设项目1是 2否", example = "2")
private Integer crossProvinceFlag;
private String businessScope;
private String enterpriseName;
private String industryCategory;
private String officeAddress;
private String creditCode;
private String postCode;
private String enterprisePhone;
private String fax;
private String legalPerson;
private String contactName;
private Integer staffCount;
private String scanFileUrl;
private String leaderPersonnelId;
private String leaderName;
private String controlPersonnelId;
private String controlName;
private Integer memberCount;
private LocalDateTime finishTime;
private LocalDate planSurveyDate;
private String surveyPlace;
@ApiModelProperty(value = "从业告知是否完成1是 2否", example = "2")
private Integer noticeDoneFlag;
@ApiModelProperty(value = "现场勘查是否完成1是 2否", example = "2")
private Integer inspectDoneFlag;
@ApiModelProperty(value = "整改通知是否完成1是 2否", example = "2")
private Integer rectifyDoneFlag;
@ApiModelProperty(value = "企业整改报告是否完成1是 2否", example = "2")
private Integer enterpriseDoneFlag;
@ApiModelProperty(value = "整改复查是否完成1是 2否", example = "2")
private Integer reviewDoneFlag;
private String noticeContent;
private String memberSnapshot;
private String stampFileUrl;
@ApiModelProperty(value = "任务状态编码1待签 2已签 3已作废", example = "1")
private Integer taskStatusCode;
@ApiModelProperty(value = "任务状态名称:待签/已签/已作废", example = "待签")
private String taskStatusName;
private LocalDateTime planTime;
@ApiModelProperty(value = "打卡类型编码1签到 2签退", example = "1")
private Integer checkinTypeCode;
@ApiModelProperty(value = "打卡类型名称:签到/签退", example = "签到")
private String checkinTypeName;
private LocalDateTime checkinTime;
private java.math.BigDecimal longitude;
private java.math.BigDecimal latitude;
private String address;
@ApiModelProperty(value = "人脸校验是否通过1是 2否", example = "2")
private Integer facePassFlag;
private String photoUrls;
private String signImageUrl;
@ApiModelProperty(value = "附件类型编码CHECKLIST检查表 RECTIFY整改通知 ENTERPRISE企业整改报告 REVIEW复查单 OTHER其他", example = "CHECKLIST")
private String attachTypeCode;
@ApiModelProperty(value = "附件类型名称:检查表/整改通知/企业整改报告/复查单/其他", example = "检查表")
private String attachTypeName;
private String fileName;
private String fileUrl;
@ApiModelProperty(value = "复查结论编码1整改合格 2整改不合格 3继续整改", example = "1")
private Integer reviewResultCode;
@ApiModelProperty(value = "复查结论名称:整改合格/整改不合格/继续整改", example = "整改合格")
private String reviewResultName;
private String reviewContent;
private Integer draftVersionNo;
private String templateCode;
private String templateName;
private String contentUrl;
private String hintContent;
private String draftId;
private String reviewerPersonnelId;
private String reviewerName;
@ApiModelProperty(value = "内审人独立签字") @ApiModelProperty(value = "内审人独立签字")
private String reviewerSignatureUrl; private String reviewerSignatureUrl;
@ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched") @ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched")
private String reviewerSignatureTaskStatus; private String reviewerSignatureTaskStatus;
@ApiModelProperty(value = "过程控制结论编码1通过 2退回", example = "1")
@ApiModelProperty(value = "审核结果 passed 通过not_passed 未通过", example = "passed")
private String resultCode; private String resultCode;
@ApiModelProperty(value = "过程控制结论名称:通过/退回", example = "通过") @ApiModelProperty(value = "过程控制结论名称:通过/退回", example = "通过")
private String resultName; private String resultName;
@ApiModelProperty(value = "意见内容")
private String opinionContent; private String opinionContent;
private LocalDateTime reviewTime;
private String controllerPersonnelId;
private String controllerName;
@ApiModelProperty(value = "前7节点是否全部完成1是 2否", example = "2")
private Integer precheckPassFlag;
@ApiModelProperty(value = "是否归档1是 2否", example = "2") @ApiModelProperty(value = "是否归档1是 2否", example = "2")
private Integer archiveFlag; private Integer archiveFlag;
@ApiModelProperty(value = "归档交接单URL")
private String handoverFormUrl;
@ApiModelProperty(value = "归档交接单状态not_create未生成created已生成", example = "not_create")
private String handoverFormStatus;
@ApiModelProperty(value = "过程控制时间")
private LocalDateTime controlTime; private LocalDateTime controlTime;
@ApiModelProperty(value = "所属节点编码NODE_01风险分析 NODE_02业务合同 NODE_03项目组成立 NODE_04现场踏勘 NODE_05报告编制 NODE_06内部审核 NODE_07技术审核 NODE_08过程控制", example = "NODE_01")
private String nodeCode;
@ApiModelProperty(value = "所属节点名称:风险分析/业务合同/项目组成立/现场踏勘/报告编制/内部审核/技术审核/过程控制", example = "风险分析")
private String nodeName;
private String bizTypeCode;
private String bizTypeName;
private String bizRefId;
private String signerPersonnelId;
private String signerName;
private String taskTitle;
private LocalDateTime expireTime;
private LocalDateTime signTime;
@ApiModelProperty(value = "客户端类型编码1PC 2APP", example = "1")
private Integer clientTypeCode;
@ApiModelProperty(value = "客户端类型名称PC/APP", example = "PC")
private String clientTypeName;
private String customerId;
private String reportNo;
private String reportName;
private Integer reportYear;
@ApiModelProperty(value = "是否公开1是 2否", example = "2")
private Integer publicFlag;
@ApiModelProperty(value = "资料是否完整1是 2否", example = "2")
private Integer completeFlag;
@ApiModelProperty(value = "报告状态编码1已入库 2抽查中 3待整改 4已复核", example = "1")
private Integer reportStatusCode;
@ApiModelProperty(value = "报告状态名称:已入库/抽查中/待整改/已复核", example = "已入库")
private String reportStatusName;
private LocalDateTime archiveTime;
} }

View File

@ -19,12 +19,6 @@ public class EvalProcessControlConfirmCmd {
@ApiModelProperty("项目id") @ApiModelProperty("项目id")
private Long projectId; private Long projectId;
@ApiModelProperty(value = "过程控制负责人人员id")
private Long controllerPersonnelId;
@ApiModelProperty(value = "过程控制负责人姓名")
private String controllerName;
@ApiModelProperty(value = "审核结果 passed 通过not_passed 未通过", example = "passed") @ApiModelProperty(value = "审核结果 passed 通过not_passed 未通过", example = "passed")
private String resultCode; private String resultCode;

View File

@ -12,6 +12,7 @@ public enum MaterialCategory {
SITE_SURVEY("SITE_SURVEY", "现场踏勘资料"), SITE_SURVEY("SITE_SURVEY", "现场踏勘资料"),
REPORT("REPORT", "报告资料"), REPORT("REPORT", "报告资料"),
RECTIFICATION("RECTIFICATION", "整改资料"), RECTIFICATION("RECTIFICATION", "整改资料"),
ARCHIVED("ARCHIVED", "归档"),
OTHER("OTHER", "其他项目资料"); OTHER("OTHER", "其他项目资料");
private final String val; // 编码/值 private final String val; // 编码/值