feat: 签字
parent
b779cfc748
commit
6a2b962fb0
|
|
@ -54,21 +54,6 @@ public class EvalRiskAnalysisController {
|
|||
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("删除参与人")
|
||||
@PostMapping("/participant/delete")
|
||||
|
|
|
|||
|
|
@ -4,17 +4,13 @@ import io.swagger.annotations.Api;
|
|||
import io.swagger.annotations.ApiOperation;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalSignTaskApi;
|
||||
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.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
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 org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
|
@ -38,9 +34,9 @@ public class EvalSignTaskController {
|
|||
return evalSignTaskApi.page(query);
|
||||
}
|
||||
|
||||
@ApiOperation("签字任务枚举映射")
|
||||
@GetMapping("/enums")
|
||||
public SingleResponse<EvalSignTaskEnumsCO> enums() {
|
||||
return evalSignTaskApi.enums();
|
||||
@ApiOperation("签字上传")
|
||||
@PostMapping("/signAndUpload")
|
||||
public SingleResponse<Boolean> signAndUpload(@RequestBody EditSignTaskSaveCmd cmd) {
|
||||
return evalSignTaskApi.signAndUpload(cmd);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
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.client.api.institution.EvalSignTaskApi;
|
||||
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.dto.PageResponse;
|
||||
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.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.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.PageResult;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
|
|
@ -32,6 +55,14 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
|||
|
||||
@Resource
|
||||
private InstitutionOrgSupport institutionOrgSupport;
|
||||
@Autowired
|
||||
private EvalSignTaskMapper evalSignTaskMapper;
|
||||
@Autowired
|
||||
private SafetyMessageGateway safetyMessageGateway;
|
||||
@Autowired
|
||||
private EvalProjectMemberMapper evalProjectMemberMapper;
|
||||
@Autowired
|
||||
private EvalRiskParticipantMapper evalRiskParticipantMapper;
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalSignTaskCO> save(EvalSignTaskSaveCmd cmd) {
|
||||
|
|
@ -39,6 +70,37 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
|||
EvalSignTaskEntity entity = evalSignTaskCmdConvertor.convertSaveCmdToE(cmd);
|
||||
entity.setOrgId(orgId);
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
@ -60,4 +122,26 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
|
|||
.collect(Collectors.toList()));
|
||||
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.dto.PageResponse;
|
||||
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.EvalSignTaskSaveCmd;
|
||||
|
||||
|
|
@ -14,4 +15,6 @@ public interface EvalSignTaskApi {
|
|||
PageResponse<EvalSignTaskCO> page(EvalSignTaskPageQuery query);
|
||||
|
||||
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")
|
||||
private String signerPersonnelId;
|
||||
|
||||
@ApiModelProperty("签字任务标题")
|
||||
@ApiModelProperty("签字任务标题,当前节点名称")
|
||||
private String taskTitle;
|
||||
|
||||
@ApiModelProperty(value = "任务状态编码:1待签 2已签 3已作废", example = "1")
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public enum NoticeTypeEnum {
|
|||
SIGN_TASK_NOTICE(
|
||||
"SIGN_TASK_NOTICE",
|
||||
"签字任务通知",
|
||||
"请签署《{fileName}》版本号{version}。您的角色:{role}。请核对内容后于{deadline}前完成手写签字。");
|
||||
"请签署《{fileName}》版本号{version}。您的角色:{role}。请核对内容完成手写签字。");
|
||||
|
||||
@Getter
|
||||
private final String val;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ package org.qinan.safetyeval.domain.constant;
|
|||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目阶段枚举
|
||||
* val: 英文大写标识(如 RISK_ANALYSIS)
|
||||
|
|
@ -49,4 +52,18 @@ public enum ProjectStageEnum {
|
|||
}
|
||||
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_PROJECT_ERROR("06-05-019", "项目不存在"),
|
||||
EVAL_PROCESS_PRE_NODES_INCOMPLETE("06-05-020", "前置节点未完成,无法操作过程控制"),
|
||||
EVAL_PROJECT_NODE_NOT_FOUND("06-05-021", "节点不存在"),
|
||||
|
||||
// ---- 监督检查告知(phase2 P3) ----
|
||||
INSP_NOTICE_NOT_FOUND("06-06-001", "监督检查告知不存在"),
|
||||
|
|
|
|||
Loading…
Reference in New Issue