dev
luotaiqian 2026-07-23 09:28:01 +08:00
parent 1cee6df346
commit f0f7384ca9
23 changed files with 372 additions and 2 deletions

View File

@ -682,6 +682,8 @@ create table `eval_process_control` (
`result_name` varchar(50) default null comment '结论名称',
`opinion_content` varchar(2000) default null comment '过程控制意见',
`archive_flag` tinyint default 2 comment '是否归档(1是2否)',
`handover_form_url` varchar(500) default null comment '归档交接单URL',
`handover_form_status` varchar(32) default 'not_create' comment '归档交接单状态(not_create未生成,created已生成)',
`control_time` datetime default null comment '办理时间',
`status_code` int default null comment '节点状态(1未开始2进行中3已完成4退回)',
`status_name` varchar(50) default null comment '节点状态名称',

View File

@ -53,6 +53,15 @@ ALTER TABLE `org_personnel_cert`
ADD COLUMN `industry_professional_standards_id` BIGINT DEFAULT NULL COMMENT '行业专业标准ID'
AFTER `professional_capability_code`;
-- =============================================
-- eval_process_control 表添加归档交接单字段
-- =============================================
ALTER TABLE `eval_process_control`
ADD COLUMN `handover_form_url` varchar(500) DEFAULT NULL COMMENT '归档交接单URL' AFTER `archive_flag`;
ALTER TABLE `eval_process_control`
ADD COLUMN `handover_form_status` varchar(32) DEFAULT 'not_create' COMMENT '归档交接单状态(not_create未生成,created已生成)' AFTER `handover_form_url`;
-- 2. qual_filing_personnel_cert 表添加行业专业标准ID字段
ALTER TABLE `qual_filing_personnel_cert`
ADD COLUMN `industry_professional_standards_id` BIGINT DEFAULT NULL COMMENT '行业专业标准ID'

View File

@ -5,9 +5,12 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessHandoverFormCmd;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -21,7 +24,7 @@ public class EvalProcessControlController {
@Resource
private EvalProcessControlApi evalProcessControlApi;
@ApiOperation("按项目获取或保存")
/* @ApiOperation("按项目获取或保存")
@PostMapping("/get-or-save")
public SingleResponse<EvalProcessControlCO> getOrSave(@Validated @RequestBody EvalProcessControlSaveCmd cmd) {
return evalProcessControlApi.getOrSave(cmd);
@ -31,6 +34,24 @@ public class EvalProcessControlController {
@GetMapping("/get")
public SingleResponse<EvalProcessControlCO> get(@ApiParam("项目ID") @RequestParam String projectId) {
return evalProcessControlApi.getByProject(projectId);
} */
@ApiOperation("过程控制确认")
@PostMapping("/confirm")
public SingleResponse<Void> confirm(@Validated @RequestBody EvalProcessControlConfirmCmd cmd) {
return evalProcessControlApi.confirm(cmd);
}
@ApiOperation("按项目查询详情(过程控制负责人成员+审核项)")
@GetMapping("/detail")
public SingleResponse<EvalProcessControlDetailCO> detail(@ApiParam("项目ID") @RequestParam Long projectId) {
return evalProcessControlApi.getDetailByProject(projectId);
}
@ApiOperation("生成归档交接单")
@PostMapping("/generate-handover-form")
public SingleResponse<EvalProcessControlCO> generateHandoverForm(@Validated @RequestBody EvalProcessHandoverFormCmd cmd) {
return evalProcessControlApi.generateHandoverForm(cmd);
}
@ApiOperation("归档项目并入库报告")
@ -38,4 +59,5 @@ public class EvalProcessControlController {
public SingleResponse<EvalProcessControlCO> archive(@Validated @RequestBody EvalProcessArchiveCmd cmd) {
return evalProcessControlApi.archive(cmd);
}
}

View File

@ -3,31 +3,54 @@ package org.qinan.safetyeval.app.executor.institution;
import org.qinan.safetyeval.app.executor.institution.support.EvalCmdCopy;
import org.qinan.safetyeval.app.executor.institution.support.EvalNodeCoConverter;
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectNodeSupport;
import org.qinan.safetyeval.app.item.convertor.EvalReviewItemCmdConvertor;
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessHandoverFormCmd;
import org.qinan.safetyeval.client.item.request.EvalReviewItemAddCmd;
import org.qinan.safetyeval.client.item.response.EvalReviewItemCo;
import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
import org.qinan.safetyeval.domain.constant.ProjectStageEnum;
import org.qinan.safetyeval.domain.constant.ReviewDimensionEnum;
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
import org.qinan.safetyeval.domain.entity.EvalProjectMemberEntity;
import org.qinan.safetyeval.domain.entity.EvalProcessControlEntity;
import org.qinan.safetyeval.domain.entity.EvalReportDraftEntity;
import org.qinan.safetyeval.domain.entity.EvalReportEntity;
import org.qinan.safetyeval.domain.entity.EvalSignTaskEntity;
import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.gateway.EvalProcessControlGateway;
import org.qinan.safetyeval.domain.gateway.EvalProjectMemberGateway;
import org.qinan.safetyeval.domain.gateway.EvalReportDraftGateway;
import org.qinan.safetyeval.domain.gateway.EvalReportGateway;
import org.qinan.safetyeval.domain.gateway.EvalSignTaskGateway;
import org.qinan.safetyeval.domain.item.gateway.EvalReviewItemGateway;
import org.qinan.safetyeval.domain.item.model.EvalReviewItemE;
import org.qinan.safetyeval.domain.query.EvalReportDraftQuery;
import org.qinan.safetyeval.domain.query.EvalSignTaskQuery;
import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.service.EvalArchivePrecheckService;
import org.qinan.safetyeval.domain.service.ProjectStageSyncService;
import org.qinan.safetyeval.domain.support.EvalNodeCodes;
import org.qinan.safetyeval.domain.waring.gateway.EvalProjectWaringGateway;
import org.qinan.safetyeval.domain.waring.model.EvalProjectWaringE;
import org.qinan.safetyeval.infrastructure.convertor.EvalProcessControlConvertor;
import org.qinan.safetyeval.infrastructure.persistence.queryservice.EvalReviewItemQueryService;
import org.qinan.safetyeval.infrastructure.support.NodeWriteAuthority;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class EvalProcessControlExecutor implements EvalProcessControlApi {
@ -44,6 +67,20 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
private EvalReportDraftGateway evalReportDraftGateway;
@Resource
private ProjectStageSyncService projectStageSyncService;
@Resource
private EvalSignTaskGateway evalSignTaskGateway;
@Resource
private EvalProcessControlConvertor evalProcessControlConvertor;
@Resource
private EvalProjectMemberGateway evalProjectMemberGateway;
@Resource
private EvalReviewItemQueryService evalReviewItemQueryService;
@Resource
private EvalReviewItemGateway evalReviewItemGateway;
@Resource
private EvalReviewItemCmdConvertor evalReviewItemCmdConvertor;
@Resource
private EvalProjectWaringGateway evalProjectWaringGateway;
@Override
public SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd) {
@ -66,6 +103,43 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity));
}
@Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd) {
Long projectId = cmd.getProjectId();
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
// 判断项目是否归档
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
}
EvalProcessControlEntity entity = evalProcessControlConvertor.applyConfirmCmd(cmd);
// 过程控制结论为通过时推进项目阶段
if (cmd.getResultCode() != null && cmd.getResultCode() == 1) {
projectStageSyncService.onNodeCompleted(projectId, ProjectStageEnum.PROCESS_CONTROL.getNode());
}
if (cmd.getId() != null) {
entity = evalProcessControlGateway.modify(entity);
} else {
// id为空新增数据
entity.setOrgId(project.getOrgId());
entity = evalProcessControlGateway.save(entity);
}
// 审核项根据bizId和bizType先删后增
String bizType = ReviewDimensionEnum.TypeEnum.EVAL_PROCESS_CONTROL.getCode();
evalReviewItemGateway.deletedEvalReviewItemByBizIdAndBizType(entity.getId(), bizType);
for (EvalReviewItemAddCmd itemCmd : cmd.getReviewItems()) {
EvalReviewItemE itemE = evalReviewItemCmdConvertor.convertCmdToE(itemCmd);
itemE.setBizId(entity.getId());
itemE.setBizType(bizType);
evalReviewItemGateway.add(itemE);
}
return SingleResponse.success();
}
@Override
public SingleResponse<EvalProcessControlCO> getByProject(String projectId) {
Long pid = Long.parseLong(projectId);
@ -78,6 +152,44 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity));
}
@Override
public SingleResponse<EvalProcessControlDetailCO> getDetailByProject(Long projectId) {
// 1. 查询项目成员中的过程控制负责人信息
List<EvalProjectMemberEntity> members = evalProjectMemberGateway
.listByProjectIdAndRoleCode(projectId, NodeWriteAuthority.ROLE_PROCESS_OWNER);
// 2. 查询过程控制记录,未查询到则过程控制记录字段为空
EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, null);
EvalProcessControlDetailCO detailCO = new EvalProcessControlDetailCO();
detailCO.setControllers(evalProcessControlConvertor.toMemberCOs(members));
if (entity != null) {
detailCO.setProcessControl(EvalNodeCoConverter.toProcessCO(entity));
// 3. 通过过程控制记录id查询审核项列表
detailCO.setReviewItems(evalReviewItemQueryService.listByBizIdAndBizType(
entity.getId(), ReviewDimensionEnum.TypeEnum.EVAL_PROCESS_CONTROL.getCode()));
} else {
// 未查询到过程控制记录,按审核维度枚举构建默认审核项
detailCO.setReviewItems(ReviewDimensionEnum.getListByType(ReviewDimensionEnum.TypeEnum.EVAL_PROCESS_CONTROL)
.stream()
.map(dimension -> {
EvalReviewItemCo item = new EvalReviewItemCo();
item.setBizType(ReviewDimensionEnum.TypeEnum.EVAL_PROCESS_CONTROL.getCode());
item.setReviewDimensionCode(dimension.getCode());
item.setReviewDimensionName(dimension.getLabel());
item.setReviewFocus(dimension.getReviewFocus());
return item;
})
.collect(Collectors.toList()));
}
return SingleResponse.success(detailCO);
}
@Override
public SingleResponse<EvalProcessControlCO> generateHandoverForm(EvalProcessHandoverFormCmd cmd) {
// TODO 归档交接单生成功能暂未实现
return SingleResponse.success(null);
}
@Override
public SingleResponse<EvalProcessControlCO> archive(EvalProcessArchiveCmd cmd) {
Long projectId = Long.parseLong(cmd.getProjectId());
@ -92,6 +204,15 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
if (entity != null && entity.getArchiveFlag() != null && entity.getArchiveFlag() == 1) {
throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE);
}
// 验证签字是否完成
assertSignTaskCompleted(projectId, project.getOrgId());
// 验证归档交接单是否已生成
if (entity == null || !"created".equals(entity.getHandoverFormStatus())) {
throw new BizException(ErrorCode.EVAL_HANDOVER_FORM_NOT_CREATED);
}
if (entity == null) {
entity = new EvalProcessControlEntity();
entity.setOrgId(project.getOrgId());
@ -111,6 +232,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
EvalReportEntity report = buildReport(project);
evalReportGateway.saveInternal(report);
projectStageSyncService.onArchived(projectId);
// 写入项目预警记录(存在则更新,不存在则新增)
upsertProjectWaring(project);
return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity));
}
@ -160,4 +283,46 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
})
.orElse(null);
}
/**
* projectId
*/
private void upsertProjectWaring(EvalProjectEntity project) {
LocalDateTime now = LocalDateTime.now();
EvalProjectWaringE waring = evalProjectWaringGateway.getByProjectId(project.getId());
if (waring == null) {
waring = EvalProjectWaringE.of();
waring.setProjectId(project.getId());
}
waring.setProjectCompleteTime(now);
waring.setArchiveDate(now);
waring.setProjectNode(project.getProjectNode());
waring.setIndustryCode(project.getIndustryCode());
if (waring.getId() == null) {
waring.add();
} else {
waring.update();
}
}
/**
* taskStatusCode=2
* /
*/
private void assertSignTaskCompleted(Long projectId, Long orgId) {
EvalSignTaskQuery query = new EvalSignTaskQuery();
query.setProjectId(projectId);
query.setOrgId(orgId);
query.setPageNum(1L);
query.setPageSize(1000L);
PageResult<EvalSignTaskEntity> tasks = evalSignTaskGateway.page(query);
if (tasks == null || CollectionUtils.isEmpty(tasks.getRecords())) {
throw new BizException(ErrorCode.EVAL_ARCHIVE_SIGN_INCOMPLETE);
}
boolean allSigned = tasks.getRecords().stream()
.allMatch(t -> t.getTaskStatusCode() != null && t.getTaskStatusCode() == 2);
if (!allSigned) {
throw new BizException(ErrorCode.EVAL_ARCHIVE_SIGN_INCOMPLETE);
}
}
}

View File

@ -1,12 +1,18 @@
package org.qinan.safetyeval.client.api.institution;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessHandoverFormCmd;
public interface EvalProcessControlApi {
SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd);
SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd);
SingleResponse<EvalProcessControlCO> getByProject(String projectId);
SingleResponse<EvalProcessControlDetailCO> getDetailByProject(Long projectId);
SingleResponse<EvalProcessControlCO> generateHandoverForm(EvalProcessHandoverFormCmd cmd);
SingleResponse<EvalProcessControlCO> archive(EvalProcessArchiveCmd cmd);
}

View File

@ -0,0 +1,23 @@
package org.qinan.safetyeval.client.co.institution;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.qinan.safetyeval.client.item.response.EvalReviewItemCo;
import java.util.List;
/**
* CO
*/
@Data
public class EvalProcessControlDetailCO {
@ApiModelProperty("过程控制记录信息")
private EvalProcessControlCO processControl;
@ApiModelProperty("过程控制负责人成员信息")
private List<EvalProjectMemberCO> controllers;
@ApiModelProperty("审核项列表")
private List<EvalReviewItemCo> reviewItems;
}

View File

@ -0,0 +1,46 @@
package org.qinan.safetyeval.client.dto.institution;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.qinan.safetyeval.client.item.request.EvalReviewItemAddCmd;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class EvalProcessControlConfirmCmd {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty(value = "节点状态编码1未开始 2进行中 3已完成 4退回", example = "2")
private Integer statusCode;
@ApiModelProperty(value = "过程控制负责人人员id")
private Long controllerPersonnelId;
@ApiModelProperty(value = "过程控制负责人姓名")
private String controllerName;
@ApiModelProperty(value = "过程控制结论编码1通过 2退回", example = "1")
private Integer resultCode;
@ApiModelProperty(value = "总体过程控制意见")
@Size(max = 2000)
private String opinionContent;
@ApiModelProperty(value = "过程控制时间", hidden = true)
private LocalDateTime controlTime;
@ApiModelProperty("审核项列表")
@NotNull
@Size(min = 1, max = 16)
@Valid
private List<EvalReviewItemAddCmd> reviewItems;
}

View File

@ -0,0 +1,12 @@
package org.qinan.safetyeval.client.dto.institution;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class EvalProcessHandoverFormCmd {
@NotBlank
private String projectId;
}

View File

@ -25,6 +25,9 @@ public class EvalProjectWaringAddCmd implements Serializable {
@ApiModelProperty(value = "项目归档时间",required = true)
@NotNull(message = "项目归档时间不能为空")
private LocalDateTime archiveDate;
/** 项目完成时间 */
@ApiModelProperty(value = "项目完成时间")
private LocalDateTime projectCompleteTime;
/** 项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警 */
@ApiModelProperty(value = "项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警",required = true)
@NotBlank(message = "项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警不能为空")

View File

@ -26,6 +26,9 @@ public class EvalProjectWaringUpdateCmd implements Serializable {
@ApiModelProperty(value = "项目归档时间",required = true)
@NotNull(message = "项目归档时间不能为空")
private LocalDateTime archiveDate;
/** 项目完成时间 */
@ApiModelProperty(value = "项目完成时间")
private LocalDateTime projectCompleteTime;
/** 项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警 */
@ApiModelProperty(value = "项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警",required = true)
@NotBlank(message = "项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警不能为空")

View File

@ -23,6 +23,10 @@ public class EvalProjectWaringCo extends ClientObject {
@ApiModelProperty(value = "项目归档时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime archiveDate;
/** 项目完成时间 */
@ApiModelProperty(value = "项目完成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime projectCompleteTime;
/** 项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警 */
@ApiModelProperty(value = "项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警")
private String waringStatus;

View File

@ -17,6 +17,10 @@ public class EvalProcessControlEntity {
private String resultName;
private String opinionContent;
private Integer archiveFlag;
/** 归档交接单URL */
private String handoverFormUrl;
/** 归档交接单状态not_create未生成created已生成 */
private String handoverFormStatus;
private LocalDateTime controlTime;
private Integer statusCode;
private String statusName;

View File

@ -156,6 +156,8 @@ public enum ErrorCode {
EVAL_SIGN_TASK_INVALID("06-05-014", "签字任务状态无效"),
EVAL_TEAM_ROLE_INVALID("06-05-015", "项目组负责人与过程控制负责人须各设1人且不可为同一人"),
EVAL_ARCHIVE_ALREADY_DONE("06-05-016", "项目已归档,请勿重复归档"),
EVAL_ARCHIVE_SIGN_INCOMPLETE("06-05-017", "签字未完成,无法归档"),
EVAL_HANDOVER_FORM_NOT_CREATED("06-05-018", "归档交接单未生成,无法归档"),
// ---- 监督检查告知phase2 P3 ----
INSP_NOTICE_NOT_FOUND("06-06-001", "监督检查告知不存在"),

View File

@ -36,4 +36,11 @@ public interface EvalProjectWaringGateway {
* @return
*/
Boolean deletedEvalProjectWaringByIds(Long[] ids);
/**
* ID
* @param projectId ID
* @return null
*/
EvalProjectWaringE getByProjectId(Long projectId);
}

View File

@ -24,6 +24,8 @@ public class EvalProjectWaringE extends BaseE{
private Long projectId;
/** 项目归档时间 */
private LocalDateTime archiveDate;
/** 项目完成时间 */
private LocalDateTime projectCompleteTime;
/** 项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警 */
private String waringStatus;
/** 预警开始时间 */

View File

@ -0,0 +1,25 @@
package org.qinan.safetyeval.infrastructure.convertor;
import org.mapstruct.Mapper;
import org.qinan.safetyeval.client.co.institution.EvalProjectMemberCO;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
import org.qinan.safetyeval.domain.entity.EvalProcessControlEntity;
import org.qinan.safetyeval.domain.entity.EvalProjectMemberEntity;
import java.util.List;
/**
*
*/
@Mapper(componentModel = "spring")
public interface EvalProcessControlConvertor {
/**
* ConfirmCmd entity
*/
EvalProcessControlEntity applyConfirmCmd(EvalProcessControlConfirmCmd cmd);
EvalProjectMemberCO toMemberCO(EvalProjectMemberEntity entity);
List<EvalProjectMemberCO> toMemberCOs(List<EvalProjectMemberEntity> entities);
}

View File

@ -22,6 +22,13 @@ public interface EvalProjectWaringDoConvertor {
*/
EvalProjectWaringDO convertEeToDo(EvalProjectWaringE evalProjectWaringE);
/**
* DO
* @param evalProjectWaringDo DO
* @return
*/
EvalProjectWaringE converDoToE(EvalProjectWaringDO evalProjectWaringDo);
/**
* DOCo
* @param evalProjectWaringDo DO

View File

@ -22,6 +22,10 @@ public class EvalProcessControlDO {
private String opinionContent;
/** 是否归档1是 2否示例2 */
private Integer archiveFlag;
/** 归档交接单URL */
private String handoverFormUrl;
/** 归档交接单状态not_create未生成created已生成 */
private String handoverFormStatus;
private LocalDateTime controlTime;
/** 节点状态编码1未开始 2进行中 3已完成 4退回示例2 */
private Integer statusCode;

View File

@ -42,4 +42,13 @@ public class EvalProjectWaringGatewayImpl implements EvalProjectWaringGateway {
public Boolean deletedEvalProjectWaringByIds(Long[] ids) {
return evalProjectWaringRepository.deletedEvalProjectWaringByIds(ids);
}
@Override
public EvalProjectWaringE getByProjectId(Long projectId) {
EvalProjectWaringDO waringDO = evalProjectWaringRepository.getByProjectId(projectId);
if (waringDO == null) {
return null;
}
return evalProjectWaringDoConvertor.converDoToE(waringDO);
}
}

View File

@ -22,6 +22,9 @@ public class EvalProjectWaringDO extends BaseDO {
/** 项目归档时间 */
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime archiveDate;
/** 项目完成时间 */
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime projectCompleteTime;
/** 项目 预警 状态: non_warn 暂时不预警,first_waring 首次预警second_waring 二次预警emergency_waring 紧急预警,overdue_warning 逾期预警 ,end_warning 结束预警 */
private String waringStatus;
/** 预警开始时间 */

View File

@ -18,6 +18,13 @@ public interface EvalProjectWaringRepository extends BaseRepository<EvalProjec
*/
EvalProjectWaringDO getById(Long id);
/**
* ID
* @param projectId ID
* @return
*/
EvalProjectWaringDO getByProjectId(Long projectId);
/**
*
* @param iPage

View File

@ -28,6 +28,11 @@ public class EvalProjectWaringRepositoryImpl extends BaseRepositoryImpl<EvalPro
return super.lambdaQuery().eq(EvalProjectWaringDO::getId,id).eq(EvalProjectWaringDO::getDeleteEnum,BooleanEnum.FALSE.getValue()).one();
}
@Override
public EvalProjectWaringDO getByProjectId(Long projectId) {
return super.lambdaQuery().eq(EvalProjectWaringDO::getProjectId,projectId).eq(EvalProjectWaringDO::getDeleteEnum,BooleanEnum.FALSE.getValue()).one();
}
@Override
public IPage<EvalProjectWaringDO> listEvalProjectWaringPage(IPage iPage, EvalProjectWaringPageQry evalProjectWaringPageQry) {
QueryWrapper<EvalProjectWaringDO> evalProjectWaringDoQueryWrapper = new QueryWrapper<>();

View File

@ -33,7 +33,7 @@ public class NodeWriteAuthority {
private static final String ROLE_DRAFT_OWNER = "DRAFT_OWNER";
public static final String ROLE_INTERNAL_REVIEWER = "INTERNAL_REVIEWER";
public static final String ROLE_TECH_REVIEWER = "TECH_REVIEWER";
private static final String ROLE_PROCESS_OWNER = "PROCESS_OWNER";
public static final String ROLE_PROCESS_OWNER = "PROCESS_OWNER";
private static final String ROLE_MEMBER = "MEMBER";
@Resource