feat: 企标制修订签章
This commit is contained in:
@@ -146,6 +146,7 @@ public class ShiroConfig {
|
||||
filterChainDefinitionMap.put("/onlyOffice/**", "anon");
|
||||
filterChainDefinitionMap.put("/onlyoffice/**", "anon");
|
||||
filterChainDefinitionMap.put("/file/**", "anon");
|
||||
filterChainDefinitionMap.put("/sys/common/downloadWithoutToken/**", "anon");
|
||||
|
||||
//对接接口排除
|
||||
filterChainDefinitionMap.put("/sync/**", "anon");
|
||||
|
||||
+12
@@ -222,6 +222,18 @@ public class CommonController {
|
||||
downloadAndView(id, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文件(不带token)
|
||||
*
|
||||
* @param id 传入文件id
|
||||
* @param response 响应
|
||||
*/
|
||||
@ApiOperation(value = "下载文件(不带token)", notes = "下载文件(不带token)")
|
||||
@GetMapping(value = "/downloadWithoutToken/{id}")
|
||||
public void downloadWithoutToken(@PathVariable String id, HttpServletResponse response) {
|
||||
downloadAndView(id, response);
|
||||
}
|
||||
|
||||
private void setResponse(HttpServletResponse response, String fileName) {
|
||||
response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
|
||||
// 设置强制下载不打开
|
||||
|
||||
+2
-1
@@ -198,7 +198,8 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
!isFirstNodeTask(approvalRecord) &&
|
||||
(approvalRecord.getTaskName().contains("审批") ||
|
||||
approvalRecord.getTaskName().contains("会签") ||
|
||||
approvalRecord.getTaskName().equals("部所联络人校对"))) {
|
||||
approvalRecord.getTaskName().equals("部所联络人校对") ||
|
||||
approvalRecord.getTaskName().equals("其它起草人校对"))) {
|
||||
if ((Boolean) variables.get("pass")) {
|
||||
approvalRecord.setCommitFlag(CommitFlagEnum.PASS.getValue());
|
||||
} else {
|
||||
|
||||
+11
@@ -131,4 +131,15 @@ public class ESRevisionController {
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签署信息
|
||||
*
|
||||
*/
|
||||
@AutoLog(value = "企标制修订流程-获取签署信息")
|
||||
@ApiOperation(value="企标制修订流程-获取签署信息", notes="企标制修订流程-获取签署信息")
|
||||
@GetMapping(value = "/getSignInfo")
|
||||
public Result<?> getSignInfo(@RequestParam String processInstanceId) {
|
||||
return Result.OK(revisionService.getSignInfo(processInstanceId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.jero.modules.activiti.process.esRevision.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author: Mzaxd
|
||||
* @Date: 2024/1/31 9:58
|
||||
*/
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SignInfo {
|
||||
|
||||
/**
|
||||
* 人员信息
|
||||
*/
|
||||
@ApiModelProperty(value = "人员信息")
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 人员信息
|
||||
*/
|
||||
@ApiModelProperty(value = "人员姓名")
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 签署日期
|
||||
*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "签署日期")
|
||||
private Date signTime;
|
||||
|
||||
/**
|
||||
* 手写签字图片id
|
||||
*/
|
||||
@ApiModelProperty(value = "手写签字图片id")
|
||||
private String avatarFileId;
|
||||
|
||||
/**
|
||||
* 手写签字图片url
|
||||
*/
|
||||
@ApiModelProperty(value = "手写签字图片url")
|
||||
private String avatarFileUrl;
|
||||
|
||||
}
|
||||
+6
@@ -2,9 +2,13 @@ package com.jero.modules.activiti.process.esRevision.service;
|
||||
|
||||
import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.SignInfo;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【process_es_revision】的数据库操作Service
|
||||
@@ -24,4 +28,6 @@ public interface EsRevisionService extends IService<ProcessEsRevision> {
|
||||
void approval(ESRevisionDataVO revisionData, boolean pass);
|
||||
|
||||
void transfer(String taskId, String userId);
|
||||
|
||||
Map<String, List<SignInfo>> getSignInfo(String processInstanceId);
|
||||
}
|
||||
|
||||
+98
-5
@@ -14,6 +14,8 @@ import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.common.entity.CommonVO;
|
||||
import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants;
|
||||
@@ -21,12 +23,9 @@ import com.jero.modules.activiti.process.common.enums.ProcessType;
|
||||
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
||||
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus;
|
||||
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.HandleAdviceEnum;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.OperateTypeEnum;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.*;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.InspectContentVO;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO;
|
||||
import com.jero.modules.activiti.process.esRevision.entity.vo.ReviewMeetingDetailVO;
|
||||
import com.jero.modules.activiti.process.esRevision.service.EsRevisionAdviceService;
|
||||
@@ -36,6 +35,7 @@ import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
||||
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
|
||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
|
||||
@@ -45,6 +45,7 @@ import com.jero.modules.laws.system.service.ILawsContactManageService;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysUserDepartService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.TaskService;
|
||||
@@ -106,6 +107,12 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
@Resource
|
||||
private ILawsContactManageService contactManageService;
|
||||
|
||||
@Resource
|
||||
private ProcessApprovalRecordService parService;
|
||||
|
||||
@Resource
|
||||
private ISysUserService userService;
|
||||
|
||||
@Override
|
||||
public void startProcess(ESRevisionDataVO revisionData) {
|
||||
// 执行流程发起前的操作
|
||||
@@ -621,7 +628,6 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
saveOrUpdate(data);
|
||||
// 给授权部门的所有人员发送消息
|
||||
this.sendMessageToAuthDeptUser(processInstanceId);
|
||||
// TODO 在线编辑 插入签章
|
||||
break;
|
||||
}
|
||||
// 转办修改流程变量逻辑
|
||||
@@ -669,6 +675,93 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
||||
processHandleService.transfer(taskId, toUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<SignInfo>> getSignInfo(String processInstanceId) {
|
||||
Map<String, List<SignInfo>> result = new LinkedHashMap<>();
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> parWrapper = new LambdaQueryWrapper<>();
|
||||
parWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId);
|
||||
parWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue());
|
||||
LambdaQueryWrapper<ProcessEsRevision> revisionWrapper = new LambdaQueryWrapper<>();
|
||||
revisionWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId);
|
||||
ProcessEsRevision revision = getOne(revisionWrapper);
|
||||
// 获取流程审批信息
|
||||
List<ProcessApprovalRecord> approvalRecords = parService.list(parWrapper);
|
||||
if (approvalRecords == null || approvalRecords.isEmpty()) {
|
||||
throw new JeroBootException("流程审批记录为空");
|
||||
}
|
||||
Map<String, List<ProcessApprovalRecord>> parMap = approvalRecords.stream()
|
||||
.collect(Collectors.groupingBy(ProcessApprovalRecord::getNodeId));
|
||||
List<ProcessApprovalRecord> processApprovalRecords;
|
||||
SignInfo singInfo;
|
||||
|
||||
// 获取主起草用户
|
||||
processApprovalRecords = parMap.get(MAIN_DRAFT_USER_DISTRIBUTE);
|
||||
singInfo = this.getSingInfo(processApprovalRecords.get(0));
|
||||
result.put("起草签署", Collections.singletonList(singInfo));
|
||||
|
||||
// 获取其他起草人用户
|
||||
List<SignInfo> otherDraftUsers = new ArrayList<>();
|
||||
processApprovalRecords = parMap.get(OTHER_DRAFT_USER_CHECK);
|
||||
List<String> proofreaderlist = Arrays.asList(revision.getProofreader().split(","));
|
||||
// 剔除所有驳回和未审批的记录
|
||||
processApprovalRecords.removeIf(ar -> CommitFlagEnum.REJECT.getValue().equals(ar.getCommitFlag()));
|
||||
processApprovalRecords.removeIf(ar -> ar.getCommitFlag() == null);
|
||||
// 将processApprovalRecords按照EndTime倒序排序
|
||||
processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed());
|
||||
// 取list.size()个数据
|
||||
processApprovalRecords = processApprovalRecords.subList(0, proofreaderlist.size());
|
||||
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecords) {
|
||||
singInfo = this.getSingInfo(processApprovalRecord);
|
||||
otherDraftUsers.add(singInfo);
|
||||
}
|
||||
result.put("校对签署", otherDraftUsers);
|
||||
|
||||
// 获取主管级领导审核用户
|
||||
processApprovalRecords = parMap.get(LEADER_APPROVAL);
|
||||
singInfo = this.getSingInfo(processApprovalRecords.get(0));
|
||||
result.put("审核签署", Collections.singletonList(singInfo));
|
||||
|
||||
// 获取标准化签署+标准化审核用户
|
||||
processApprovalRecords = parMap.get(STANDARDIZATION_APPROVAL);
|
||||
singInfo = this.getSingInfo(processApprovalRecords.get(0));
|
||||
result.put("标准化签署", Collections.singletonList(singInfo));
|
||||
|
||||
// 获取会签签署+相关部门领导用户
|
||||
List<SignInfo> relatedLeaders = new ArrayList<>();
|
||||
processApprovalRecords = parMap.get(RELATED_LEADER_APPROVAL);
|
||||
List<String> list = Arrays.asList(revision.getRelatedLeader().split(","));
|
||||
// 剔除所有驳回的记录
|
||||
processApprovalRecords.removeIf(ar -> ar.getCommitFlag().equals(CommitFlagEnum.REJECT.getValue()));
|
||||
// 将processApprovalRecords按照EndTime倒序排序
|
||||
processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed());
|
||||
// 取list.size()个数据
|
||||
processApprovalRecords = processApprovalRecords.subList(0, list.size());
|
||||
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecords) {
|
||||
singInfo = this.getSingInfo(processApprovalRecord);
|
||||
relatedLeaders.add(singInfo);
|
||||
}
|
||||
result.put("会签签署", relatedLeaders);
|
||||
|
||||
// 获取批准签署+总工程师用户姓名
|
||||
processApprovalRecords = parMap.get(CHIEF_ENGINEER_APPROVAL);
|
||||
singInfo = this.getSingInfo(processApprovalRecords.get(0));
|
||||
result.put("批准签署", Collections.singletonList(singInfo));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private SignInfo getSingInfo(ProcessApprovalRecord approvalRecord) {
|
||||
SignInfo signInfo = new SignInfo();
|
||||
String userId = approvalRecord.getUserId();
|
||||
signInfo.setUserId(userId);
|
||||
SysUser user = userService.getById(userId);
|
||||
signInfo.setUserName(user.getRealname().concat("(").concat(user.getUsername()).concat(")"));
|
||||
signInfo.setAvatarFileId(user.getAvatar());
|
||||
signInfo.setSignTime(approvalRecord.getEndTime());
|
||||
signInfo.setAvatarFileUrl("/sys/common/downloadWithoutToken/".concat(user.getAvatar()));
|
||||
return signInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveToDraft(ProcessInfoVO<ESRevisionDataVO> processInfoVO) {
|
||||
ESRevisionDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
|
||||
|
||||
Reference in New Issue
Block a user