waring
parent
1cee6df346
commit
f0f7384ca9
|
|
@ -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 '节点状态名称',
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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 结束预警不能为空")
|
||||
|
|
|
|||
|
|
@ -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 结束预警不能为空")
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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", "监督检查告知不存在"),
|
||||
|
|
|
|||
|
|
@ -36,4 +36,11 @@ public interface EvalProjectWaringGateway {
|
|||
* @return 结果
|
||||
*/
|
||||
Boolean deletedEvalProjectWaringByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 根据项目ID查找项目预警
|
||||
* @param projectId 项目ID
|
||||
* @return 项目预警,不存在返回null
|
||||
*/
|
||||
EvalProjectWaringE getByProjectId(Long projectId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
/** 预警开始时间 */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -22,6 +22,13 @@ public interface EvalProjectWaringDoConvertor {
|
|||
*/
|
||||
EvalProjectWaringDO convertEeToDo(EvalProjectWaringE evalProjectWaringE);
|
||||
|
||||
/**
|
||||
* DO转领域对象
|
||||
* @param evalProjectWaringDo DO
|
||||
* @return
|
||||
*/
|
||||
EvalProjectWaringE converDoToE(EvalProjectWaringDO evalProjectWaringDo);
|
||||
|
||||
/**
|
||||
* DO转Co
|
||||
* @param evalProjectWaringDo DO
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
/** 预警开始时间 */
|
||||
|
|
|
|||
|
|
@ -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 分页对象
|
||||
|
|
|
|||
|
|
@ -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<>();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue