feat: 签字
parent
b779cfc748
commit
6a2b962fb0
|
|
@ -54,21 +54,6 @@ public class EvalRiskAnalysisController {
|
||||||
return evalRiskAnalysisApi.saveParticipant(cmd);
|
return evalRiskAnalysisApi.saveParticipant(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* // 站内信通知
|
|
||||||
* SafetyMessageEntity safetyMessageEntity = new SafetyMessageEntity();
|
|
||||||
* NoticeTypeEnum.ON_SITE_REVIEW_NOTICE
|
|
||||||
* safetyMessageEntity.setSendName(MsgConstant.MSG_TYPE_SYSTEM);
|
|
||||||
* safetyMessageEntity.setSendId(MsgConstant.MSG_TYPE_SYSTEM_ID);
|
|
||||||
* safetyMessageEntity.setSendType("系统发送");
|
|
||||||
* safetyMessageEntity.setSendContent("您被添加为项目成员,请及时处理");
|
|
||||||
* safetyMessageEntity.setReceiveId(entity.getPersonnelId());
|
|
||||||
* safetyMessageEntity.setSendState(0);
|
|
||||||
* safetyMessageEntity.setCreateTime(LocalDateTime.now());
|
|
||||||
* safetyMessageGateway.save(safetyMessageEntity);
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
|
|
||||||
@ApiOperation("删除参与人")
|
@ApiOperation("删除参与人")
|
||||||
@PostMapping("/participant/delete")
|
@PostMapping("/participant/delete")
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,13 @@ import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
|
import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
|
import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
|
|
||||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
|
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
|
@ -38,9 +34,9 @@ public class EvalSignTaskController {
|
||||||
return evalSignTaskApi.page(query);
|
return evalSignTaskApi.page(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("签字任务枚举映射")
|
@ApiOperation("签字上传")
|
||||||
@GetMapping("/enums")
|
@PostMapping("/signAndUpload")
|
||||||
public SingleResponse<EvalSignTaskEnumsCO> enums() {
|
public SingleResponse<Boolean> signAndUpload(@RequestBody EditSignTaskSaveCmd cmd) {
|
||||||
return evalSignTaskApi.enums();
|
return evalSignTaskApi.signAndUpload(cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
package org.qinan.safetyeval.app.executor.institution;
|
package org.qinan.safetyeval.app.executor.institution;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import org.qinan.safetyeval.app.convertor.EvalSignTaskCmdConvertor;
|
import org.qinan.safetyeval.app.convertor.EvalSignTaskCmdConvertor;
|
||||||
import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
|
import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
|
||||||
import org.qinan.safetyeval.client.co.institution.EnumOptionCO;
|
import org.qinan.safetyeval.client.co.institution.EnumOptionCO;
|
||||||
|
|
@ -7,18 +10,38 @@ import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
|
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
|
||||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
|
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
||||||
|
import org.qinan.safetyeval.domain.constant.MsgConstant;
|
||||||
|
import org.qinan.safetyeval.domain.constant.NoticeTypeEnum;
|
||||||
|
import org.qinan.safetyeval.domain.constant.ProjectStageEnum;
|
||||||
import org.qinan.safetyeval.domain.constant.SignTaskStatusEnum;
|
import org.qinan.safetyeval.domain.constant.SignTaskStatusEnum;
|
||||||
import org.qinan.safetyeval.domain.entity.EvalSignTaskEntity;
|
import org.qinan.safetyeval.domain.entity.EvalSignTaskEntity;
|
||||||
|
import org.qinan.safetyeval.domain.entity.SafetyMessageEntity;
|
||||||
|
import org.qinan.safetyeval.domain.exception.BizException;
|
||||||
|
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||||
|
import org.qinan.safetyeval.domain.gateway.SafetyMessageGateway;
|
||||||
import org.qinan.safetyeval.domain.query.EvalSignTaskQuery;
|
import org.qinan.safetyeval.domain.query.EvalSignTaskQuery;
|
||||||
import org.qinan.safetyeval.domain.query.PageResult;
|
import org.qinan.safetyeval.domain.query.PageResult;
|
||||||
import org.qinan.safetyeval.domain.service.EvalSignTaskDomainService;
|
import org.qinan.safetyeval.domain.service.EvalSignTaskDomainService;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectMemberDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.EvalRiskParticipantDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.dataobject.EvalSignTaskDO;
|
||||||
|
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMemberMapper;
|
||||||
|
import org.qinan.safetyeval.infrastructure.mapper.EvalRiskParticipantMapper;
|
||||||
|
import org.qinan.safetyeval.infrastructure.mapper.EvalSignTaskMapper;
|
||||||
import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport;
|
import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -32,6 +55,14 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private InstitutionOrgSupport institutionOrgSupport;
|
private InstitutionOrgSupport institutionOrgSupport;
|
||||||
|
@Autowired
|
||||||
|
private EvalSignTaskMapper evalSignTaskMapper;
|
||||||
|
@Autowired
|
||||||
|
private SafetyMessageGateway safetyMessageGateway;
|
||||||
|
@Autowired
|
||||||
|
private EvalProjectMemberMapper evalProjectMemberMapper;
|
||||||
|
@Autowired
|
||||||
|
private EvalRiskParticipantMapper evalRiskParticipantMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<EvalSignTaskCO> save(EvalSignTaskSaveCmd cmd) {
|
public SingleResponse<EvalSignTaskCO> save(EvalSignTaskSaveCmd cmd) {
|
||||||
|
|
@ -39,6 +70,37 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
||||||
EvalSignTaskEntity entity = evalSignTaskCmdConvertor.convertSaveCmdToE(cmd);
|
EvalSignTaskEntity entity = evalSignTaskCmdConvertor.convertSaveCmdToE(cmd);
|
||||||
entity.setOrgId(orgId);
|
entity.setOrgId(orgId);
|
||||||
EvalSignTaskEntity result = evalSignTaskDomainService.add(entity);
|
EvalSignTaskEntity result = evalSignTaskDomainService.add(entity);
|
||||||
|
// todo 消息发送
|
||||||
|
SafetyMessageEntity safetyMessageEntity = new SafetyMessageEntity();
|
||||||
|
safetyMessageEntity.setSendName(MsgConstant.MSG_TYPE_SYSTEM);
|
||||||
|
safetyMessageEntity.setSendId(MsgConstant.MSG_TYPE_SYSTEM_ID);
|
||||||
|
safetyMessageEntity.setSendType(NoticeTypeEnum.SIGN_TASK_NOTICE.getMsg());
|
||||||
|
Map<String, Object> params = new HashMap<>();
|
||||||
|
params.put("title", cmd.getTaskTitle());
|
||||||
|
Map<String, String> fillMap = new HashMap<>();
|
||||||
|
ProjectStageEnum projectStageEnum = ProjectStageEnum.fromNode(cmd.getNodeCode());
|
||||||
|
if (projectStageEnum == null) {
|
||||||
|
throw new BizException(ErrorCode.EVAL_PROJECT_NODE_NOT_FOUND);
|
||||||
|
}
|
||||||
|
fillMap.put("fileName", projectStageEnum.getMsg());
|
||||||
|
fillMap.put("version", "v1");
|
||||||
|
if (ProjectStageEnum.RISK_ANALYSIS.getMsg().equals(cmd.getNodeCode())) {
|
||||||
|
fillMap.put("role", "");
|
||||||
|
} else {
|
||||||
|
// 查询角色
|
||||||
|
List<EvalProjectMemberDO> evalProjectMemberDOS = evalProjectMemberMapper.selectList(new LambdaQueryWrapper<EvalProjectMemberDO>()
|
||||||
|
.select(EvalProjectMemberDO::getRole)
|
||||||
|
.eq(EvalProjectMemberDO::getProjectId, cmd.getProjectId())
|
||||||
|
.eq(EvalProjectMemberDO::getPersonnelId, cmd.getSignerPersonnelId())
|
||||||
|
.last("limit 1"));
|
||||||
|
fillMap.put("role", ProjectStageEnum.fromVals(evalProjectMemberDOS.get(0).getRole()));
|
||||||
|
}
|
||||||
|
params.put("content", NoticeTypeEnum.SIGN_TASK_NOTICE.fillTemplate(fillMap));
|
||||||
|
safetyMessageEntity.setSendContent(JSON.toJSONString(params));
|
||||||
|
safetyMessageEntity.setReceiveId(Long.valueOf(cmd.getSignerPersonnelId()));
|
||||||
|
safetyMessageEntity.setSendState(0);
|
||||||
|
safetyMessageEntity.setCreateTime(LocalDateTime.now());
|
||||||
|
safetyMessageGateway.save(safetyMessageEntity);
|
||||||
return SingleResponse.success(evalSignTaskCmdConvertor.convertEToCO(result));
|
return SingleResponse.success(evalSignTaskCmdConvertor.convertEToCO(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,4 +122,26 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
return SingleResponse.success(co);
|
return SingleResponse.success(co);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public SingleResponse<Boolean> signAndUpload(EditSignTaskSaveCmd cmd) {
|
||||||
|
EvalSignTaskDO evalSignTaskDO = evalSignTaskMapper.selectById(cmd.getId());
|
||||||
|
if (evalSignTaskDO == null) {
|
||||||
|
throw new BizException(ErrorCode.EVAL_SIGN_TASK_NOT_FOUND);
|
||||||
|
}
|
||||||
|
evalSignTaskMapper.update(new LambdaUpdateWrapper<EvalSignTaskDO>()
|
||||||
|
.eq(EvalSignTaskDO::getId, cmd.getId())
|
||||||
|
.set(EvalSignTaskDO::getTaskStatusCode, SignTaskStatusEnum.SIGNED.getCode())
|
||||||
|
.set(EvalSignTaskDO::getSignerUrl, cmd.getSignerUrl()));
|
||||||
|
|
||||||
|
if (ProjectStageEnum.RISK_ANALYSIS.getMsg().equals(evalSignTaskDO.getNodeCode())) {
|
||||||
|
evalRiskParticipantMapper.update(new LambdaUpdateWrapper<EvalRiskParticipantDO>()
|
||||||
|
.eq(EvalRiskParticipantDO::getPersonnelId, evalSignTaskDO.getSignerPersonnelId())
|
||||||
|
.eq(EvalRiskParticipantDO::getProjectId, evalSignTaskDO.getProjectId())
|
||||||
|
.set(EvalRiskParticipantDO::getSignFileUrl, cmd.getSignerUrl())
|
||||||
|
.set(EvalRiskParticipantDO::getSignStatusCode, SignTaskStatusEnum.SIGNED.getCode()));
|
||||||
|
}
|
||||||
|
return SingleResponse.success(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import org.qinan.safetyeval.client.co.institution.EvalSignTaskCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
|
import org.qinan.safetyeval.client.co.institution.EvalSignTaskEnumsCO;
|
||||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
|
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
||||||
|
|
||||||
|
|
@ -14,4 +15,6 @@ public interface EvalSignTaskApi {
|
||||||
PageResponse<EvalSignTaskCO> page(EvalSignTaskPageQuery query);
|
PageResponse<EvalSignTaskCO> page(EvalSignTaskPageQuery query);
|
||||||
|
|
||||||
SingleResponse<EvalSignTaskEnumsCO> enums();
|
SingleResponse<EvalSignTaskEnumsCO> enums();
|
||||||
|
|
||||||
|
SingleResponse<Boolean> signAndUpload(EditSignTaskSaveCmd cmd);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package org.qinan.safetyeval.client.dto.institution;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class EditSignTaskSaveCmd {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "任务id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty("签字图片")
|
||||||
|
private String signerUrl;
|
||||||
|
}
|
||||||
|
|
@ -20,7 +20,7 @@ public class EvalSignTaskSaveCmd {
|
||||||
@ApiModelProperty("待签人员id")
|
@ApiModelProperty("待签人员id")
|
||||||
private String signerPersonnelId;
|
private String signerPersonnelId;
|
||||||
|
|
||||||
@ApiModelProperty("签字任务标题")
|
@ApiModelProperty("签字任务标题,当前节点名称")
|
||||||
private String taskTitle;
|
private String taskTitle;
|
||||||
|
|
||||||
@ApiModelProperty(value = "任务状态编码:1待签 2已签 3已作废", example = "1")
|
@ApiModelProperty(value = "任务状态编码:1待签 2已签 3已作废", example = "1")
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public enum NoticeTypeEnum {
|
||||||
SIGN_TASK_NOTICE(
|
SIGN_TASK_NOTICE(
|
||||||
"SIGN_TASK_NOTICE",
|
"SIGN_TASK_NOTICE",
|
||||||
"签字任务通知",
|
"签字任务通知",
|
||||||
"请签署《{fileName}》版本号{version}。您的角色:{role}。请核对内容后于{deadline}前完成手写签字。");
|
"请签署《{fileName}》版本号{version}。您的角色:{role}。请核对内容完成手写签字。");
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final String val;
|
private final String val;
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@ package org.qinan.safetyeval.domain.constant;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目阶段枚举
|
* 项目阶段枚举
|
||||||
* val: 英文大写标识(如 RISK_ANALYSIS)
|
* val: 英文大写标识(如 RISK_ANALYSIS)
|
||||||
|
|
@ -49,4 +52,18 @@ public enum ProjectStageEnum {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 val集合(英文大写)查找枚举
|
||||||
|
*/
|
||||||
|
public static String fromVals(String val) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
List<String> vals = Arrays.asList(val.split(","));
|
||||||
|
for (ProjectStageEnum stage : values()) {
|
||||||
|
if (vals.contains(stage.val)) {
|
||||||
|
sb.append(stage.msg).append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -162,6 +162,7 @@ public enum ErrorCode {
|
||||||
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", "节点不存在"),
|
||||||
|
|
||||||
// ---- 监督检查告知(phase2 P3) ----
|
// ---- 监督检查告知(phase2 P3) ----
|
||||||
INSP_NOTICE_NOT_FOUND("06-06-001", "监督检查告知不存在"),
|
INSP_NOTICE_NOT_FOUND("06-06-001", "监督检查告知不存在"),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue