update 发送消息

This commit is contained in:
liao
2023-11-16 10:08:05 +08:00
parent d10a0d5b72
commit 833ac1be92
14 changed files with 295 additions and 59 deletions
@@ -15,4 +15,6 @@ public class ProcessDefinitionKey {
public static final String FB_STANDARD_PURCHASE = "fb-standard-purchase"; // 法规采购流程
public static final String FB_STANDARD_COMPLIANCE_ASSESSMENT = "fb-standard-compliance-assessment"; // 法规合规评估流程
}
@@ -13,12 +13,19 @@ import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.spire.ms.System.Collections.ArrayList;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.springframework.web.bind.annotation.GetMapping;
@@ -28,8 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
* @Author: liao
@@ -48,6 +54,12 @@ public class ProcessFbInfoController {
private IProcessHandleService processHandleService;
@Resource
private ProcessDraftService processDraftService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Resource
private HistoryService historyService;
@DictPoint
@GetMapping("/getNodeList")
@@ -79,16 +91,65 @@ public class ProcessFbInfoController {
@ApiOperation(value = "测试")
@GetMapping("/test")
public Result<T> test() {
List<ProcessInstance> subProcessInstanceList = processHandleService
.subProcessList("20231114120041259", "Activity_0mj9ddw");
System.out.println("================================测试开始=================================");
subProcessInstanceList.forEach(subProcessInstance -> {
System.out.println("Sub Process Instance ID: " + subProcessInstance.getId());
System.out.println("Sub Process Definition Key: " + subProcessInstance.getProcessDefinitionKey());
// 其他子流程实例信息
System.out.println(subProcessInstance.toString());
Map<String, Object> variables = new HashMap<>();
variables.put("creator", "tom");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("test_countersign", variables);
String processInstanceId = processInstance.getId();
System.out.println("流程实例Id: " + processInstanceId);
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
System.out.println("============== 提出申请 ============");
taskList.forEach(task -> {
System.out.println("任务Id: " + task.getId());
System.out.println("任务名称: " + task.getName());
System.out.println("执行实例Id: " + task.getExecutionId());
System.out.println("任务处理人: " + task.getAssignee());
});
System.out.println("=======================================================================");
System.out.println("==========================");
List<String> leaderList = Arrays.asList(new String[] {"aaa", "bbb", "ccc"});
variables.put("leaderList", leaderList);
runtimeService.setVariables(processInstanceId, variables);
Task tomTask = taskList.get(0);
taskService.complete(tomTask.getId());
System.out.println("完成任务: " + tomTask.getId());
System.out.println("任务名称: " + tomTask.getName());
System.out.println("完成人: " + tomTask.getAssignee());
taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
System.out.println("============== 多人会签 ============");
taskList.forEach(task -> {
System.out.println("任务Id: " + task.getId());
System.out.println("任务名称: " + task.getName());
System.out.println("执行实例Id: " + task.getExecutionId());
System.out.println("任务处理人: " + task.getAssignee());
});
System.out.println("==========================");
System.out.println("============= 多人会签 =============");
taskList.forEach(task -> {
taskService.claim(task.getId(), task.getAssignee());
taskService.complete(task.getId());
System.out.println("完成任务: " + task.getId());
});
System.out.println("==========================");
taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
System.out.println("============== 汇总 ============");
taskList.forEach(task -> {
System.out.println("任务Id: " + task.getId());
System.out.println("任务名称: " + task.getName());
System.out.println("执行实例Id: " + task.getExecutionId());
System.out.println("任务处理人: " + task.getAssignee());
});
System.out.println("==========================");
tomTask = taskList.get(0);
taskService.complete(tomTask.getId());
System.out.println("完成任务: " + tomTask.getId());
System.out.println("任务名称: " + tomTask.getName());
System.out.println("完成人: " + tomTask.getAssignee());
return Result.OK();
}
@@ -29,7 +29,7 @@ import java.util.List;
*/
@Api(tags="法规采购流程表")
@RestController
@RequestMapping("/activiti.process.fb/processFbStandardPurchase")
@RequestMapping("/process/fb/processFbStandardPurchase")
@Slf4j
public class ProcessFbStandardPurchaseController extends JeroController<ProcessFbStandardPurchase, IProcessFbStandardPurchaseService> {
@Autowired
@@ -32,7 +32,7 @@ public interface IProcessHandleService {
* @Date: 2023/11/10 9:44
* @Description: 设置流程变量
**/
void setProcessVariables(String processInstanceId, Map<String, Object> userInfoMap);
Map<String, Object> setProcessVariables(Map<String, Object> userInfoMap);
/**
* @Author: liao
@@ -28,10 +28,7 @@ import com.jero.common.exception.JeroBootException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
@@ -135,17 +132,22 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
ProcessFbStandardConsultationVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); // 全部业务信息
ProcessFbConsultationUserLink userLink = businessInfoDTO.getProcessFbConsultationUserLink(); // 业务分派信息
String taskId = processInfoVO.getBasicTaskInfoDTO().getTaskId();
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskProcessInstanceId = task.getProcessInstanceId();
LambdaQueryWrapper<ProcessFbConsultationUserLink> removeWrapper = new LambdaQueryWrapper<>();
removeWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, processInfoVO.getBusinessId());
removeWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, CurrentUserUtil.getId());
processFbConsultationUserLinkService.remove(removeWrapper); // 删除原先存储的关联
Map<String, Object> variables = new HashMap<>();
List<ProcessFbConsultationUserLink> linkList = new ArrayList<>();
if ("1".equals(userLink.getUserType())) { // 模块负责人
if (StringUtils.isBlank(userLink.getModuleOwnerId())) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "moduleOwnerId");
}
List<String> moduleOwnerIds = Arrays.asList(userLink.getModuleOwnerId().split(","));
List<ProcessFbConsultationUserLink> linkList = new ArrayList<>();
moduleOwnerIds.forEach(moduleOwnerId -> {
ProcessFbConsultationUserLink link = new ProcessFbConsultationUserLink();
link.setBusinessId(processInfoVO.getBusinessId());
@@ -154,8 +156,32 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
linkList.add(link);
});
processFbConsultationUserLinkService.saveBatch(linkList, linkList.size());
variables.put("passFirst", true);
variables.put("moduleOwnerList", moduleOwnerIds);
} else { // 设计工程师
if (StringUtils.isBlank(userLink.getDesignEngineerId())) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "designEngineerId");
}
List<String> designEngineerIds = Arrays.asList(userLink.getDesignEngineerId().split(","));
designEngineerIds.forEach(designEngineerId -> {
ProcessFbConsultationUserLink link = new ProcessFbConsultationUserLink();
link.setBusinessId(processInfoVO.getBusinessId());
link.setDepartLeaderId(CurrentUserUtil.getId());
link.setDesignEngineerId(designEngineerId);
linkList.add(link);
});
processFbConsultationUserLinkService.saveBatch(linkList, linkList.size());
variables.put("passFirst", false);
variables.put("designEngineerList", designEngineerIds);
}
// 完成任务
taskService.complete(taskId, variables);
System.out.println("================================启动流程=================================");
System.out.println("processInstanceId: " + processInfoVO.getBasicProcessInfoDTO().getProcessInstanceId());
System.out.println("taskProcessInstanceId: " + taskProcessInstanceId);
System.out.println("taskId: " + taskId);
System.out.println("=======================================================================");
}
}
@@ -80,7 +80,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
updateProcessAll(processInfoVO);
// 保存选人信息
setProcessVariables(processInstanceId, userInfoMap);
Map<String, Object> variables = setProcessVariables(userInfoMap);
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap);
// 根据流程实例id和任务处理人查询任务
@@ -95,11 +95,11 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
updateApprovalRecord(processInfoVO);
// 完成任务
taskService.complete(taskId);
taskService.complete(taskId, variables);
System.out.println("================================流程信息=================================");
System.out.println("================================启动流程=================================");
System.out.println("流程定义id: " + processDefinitionId);
System.out.println("流程实例id: " + processInstanceId);
System.out.println("流程实例name: " + processInstance.getName());
System.out.println("=======================================================================");
}
@@ -122,22 +122,28 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
String processInstanceId = processDTO.getProcessInstanceId();
String processDefinitionId = processDTO.getProcessDefinitionId();
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
Map<String, Object> variables = setProcessVariables(userInfoMap);
if (!Objects.isNull(userInfoMap) && !userInfoMap.isEmpty()) {
// 保存选人信息
setProcessVariables(processInstanceId, userInfoMap);
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap);
}
if (pass) { // 通过
runtimeService.setVariableLocal(processInstanceId, "pass", true);
variables.put("pass", true);
basicTaskInfoDTO.setCommitFlag(CommitFlagEnum.PASS.getValue());
} else { // 驳回
runtimeService.setVariableLocal(processInstanceId, "pass", false);
variables.put("pass", false);
basicTaskInfoDTO.setCommitFlag(CommitFlagEnum.REJECT.getValue());
}
// 更新审批记录表
updateApprovalRecord(processInfoVO);
// 完成任务
taskService.complete(taskId);
taskService.complete(taskId, variables);
System.out.println("================================启动流程=================================");
System.out.println("流程定义id: " + processDefinitionId);
System.out.println("流程实例id: " + processInstanceId);
System.out.println("任务id: " + taskId);
System.out.println("=======================================================================");
}
/**
@@ -146,16 +152,18 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
* @Description: 设置流程变量
**/
@Override
public void setProcessVariables(String processInstanceId, Map<String, Object> userInfoMap) {
public Map<String, Object> setProcessVariables(Map<String, Object> userInfoMap) {
Map<String, Object> variables = new HashMap<>();
userInfoMap.forEach((k, v) -> {
String value = (String) v;
if (k.contains("List") && StringUtils.isNotBlank(value)) { // 会签节点
List<String> userList = Arrays.asList(value.split(","));
runtimeService.setVariable(processInstanceId, k, userList);
} else { // 普通节点
runtimeService.setVariable(processInstanceId, k, v);
variables.put(k, userList);
} else if (StringUtils.isNotBlank(value)) { // 普通节点
variables.put(k, v);
}
});
return variables;
}
/**
@@ -9,6 +9,7 @@ import com.jero.common.util.MessageUtils;
import com.jero.common.util.MinioUtil;
import com.jero.common.api.vo.ResultCommon;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.common.vo.LawsDictModel;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
@@ -26,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;
/**
* @Author: liao
@@ -69,6 +71,12 @@ public class LawsCommonController {
return Result.OK(lawsCommonService.getManyStandardSelectionBox(selectionBoxVO, pageNo, pageSize));
}
@ApiOperation(value="分标委下拉列表", notes="分标委下拉列表")
@GetMapping(value = "/getBiddingCommittee")
public Result<List<LawsDictModel>> getBiddingCommittee() {
return Result.OK(lawsCommonService.getBiddingCommittee());
}
/**
* 下载带水印的PDF文件
@@ -1,6 +1,7 @@
package com.jero.modules.laws.common.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.common.vo.LawsDictModel;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.oss.entity.OSSFile;
@@ -183,4 +184,11 @@ public interface ILawsCommonService {
* @Description: 将标准编号集合中的标准改成废止状态
**/
void updateToAbolish(List<String> standardNumbers);
/**
* @Author: liao
* @Date: 2023/11/16 9:50
* @Description: 分标委下拉列表
**/
List<LawsDictModel> getBiddingCommittee();
}
@@ -18,6 +18,7 @@ import com.jero.common.api.vo.ResultCommon;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.common.util.ImportUtil;
import com.jero.modules.laws.common.vo.LawsDictModel;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
@@ -29,6 +30,8 @@ import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
import com.jero.modules.laws.standard.entity.*;
import com.jero.modules.laws.standard.service.*;
import com.jero.modules.laws.standardization.entity.LawsStandardization;
import com.jero.modules.laws.standardization.service.ILawsStandardizationService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.personal.entity.LawsBrowsingHistory;
@@ -117,6 +120,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
private ILawsTreeNodeService lawsTreeNodeService;
@Autowired
private ILawsBrowsingHistoryService lawsBrowsingHistoryService;
@Resource
private ILawsStandardizationService lawsStandardizationService;
@Resource
private EnterpriseStandardInspectContentService esInspectContentService;
@@ -2099,6 +2104,27 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
lawsEnterpriseStandardService.update(qbUpdateWrapper);
}
/**
* @Author: liao
* @Date: 2023/11/16 9:51
* @Description: 分标委下拉列表
**/
@Override
public List<LawsDictModel> getBiddingCommittee() {
LawsStandardization parent = lawsStandardizationService.getById("0");
LambdaQueryWrapper<LawsStandardization> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(LawsStandardization::getPid, parent.getId());
List<LawsStandardization> standardizationList = lawsStandardizationService.list(queryWrapper);
List<LawsDictModel> lawsDictModelList = new ArrayList<>();
standardizationList.forEach(standardization -> {
LawsDictModel lawsDictModel = new LawsDictModel();
lawsDictModel.setValue(standardization.getId());
lawsDictModel.setText(standardization.getName());
lawsDictModelList.add(lawsDictModel);
});
return lawsDictModelList;
}
/**
* 创建企标导入模板的Workbook
*
@@ -0,0 +1,23 @@
package com.jero.modules.laws.common.vo;
import lombok.Data;
/**
* @Author: liao
* @Date: 2023/11/16 9:46
* @Description: 字典模型
*/
@Data
public class LawsDictModel {
/**
* 字典value
*/
private String value;
/**
* 字典文本
*/
private String text;
}