Commit 0f86cf06 by 李小惠

1

parents 93ea6fed d9e206c1
......@@ -16,6 +16,8 @@ public class OrderMainDto implements Serializable {
private String processId;
//单据类型(入库类型)
private String processInfo;
//单据类型(入库类型)
private String bussinessType;
//订单编号
......@@ -86,3 +88,4 @@ public class OrderMainDto implements Serializable {
private String attachmentLocation;
}
package com.junmp.jyzb.api.bean.req;
import com.junmp.jyzb.api.bean.Validator.IsDateTime;
import com.junmp.jyzb.api.bean.Validator.IsNumber;
import com.junmp.v2.common.bean.request.BaseRequest;
import lombok.Data;
......@@ -27,9 +29,13 @@ public class UpdateOrderReq extends BaseRequest implements Serializable {
* 工作流ID
*/
private String processDefinitionId;
/**
* 单据业务类型
*/
// @IsDateTime(format = "yyyy-MM-dd HH:mm:ss", message = "字段必须是有效的日期或时间")
private String bussinessType;
/**
* 订单号
......
package com.junmp.junmpProcess.config;
package com.junmp.jyzb.config;
import com.junmp.junmpProcess.listener.GlobalEndListener;
import com.junmp.jyzb.listener.GlobalEndListener;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
import org.flowable.spring.SpringProcessEngineConfiguration;
......@@ -9,10 +10,13 @@ import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import javax.annotation.Resource;
@Configuration
public class FlowableGlobListenerConfig implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private SpringProcessEngineConfiguration configuration;
@Resource
@Autowired
private GlobalEndListener endListener;
......
package com.junmp.junmpProcess.listener;
package com.junmp.jyzb.listener;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
......@@ -67,7 +67,7 @@ public class CounterSignListener implements ExecutionListener {
}
ApproverGroups group=currentNode.getApproverGroups().get(0);
String Type=group.getApproverType();
if (Type.equals("1"))//指定人员,不处理
if (Type.equals("1")||Type.equals("8"))//指定人员,不处理
{
List<String> assignedUser = group.getApproverIds();
......
package com.junmp.junmpProcess.listener;
package com.junmp.jyzb.listener;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
......@@ -41,22 +41,25 @@ import java.util.Map;
// 获取流程实例关联的变量
Map<String, Object> processVariables = getProcessVariables(processInstanceId);
// 获取单据类型
String documentType = (String) processVariables.get("documentType");
UpdateOrderReq updateOrderReq = JSONObject.parseObject(documentType, new TypeReference<UpdateOrderReq>() {
});
// 获取单据类型
String orderReq = (String) processVariables.get("orderReq");
// 根据单据类型执行不同的操作
if ("equipment".equals(documentType)) {
// 执行装备相关操作,防止循环应用,丢入消息队列
if (processVariables!=null)
{
// 获取单据类型
String documentType = (String) processVariables.get("documentType");
UpdateOrderReq updateOrderReq = JSONObject.parseObject(documentType, new TypeReference<UpdateOrderReq>() {
});
// 获取单据类型
String orderReq = (String) processVariables.get("orderReq");
// 根据单据类型执行不同的操作
if ("equipment".equals(documentType)) {
// 执行装备相关操作,防止循环应用,丢入消息队列
// orderMainService.AddOrder(updateOrderReq);
} else if ("personnel".equals(documentType)) {
// 执行人员相关操作
// ...
} else if ("personnel".equals(documentType)) {
// 执行人员相关操作
// ...
}
}
}
}
......
package com.junmp.junmpProcess.listener;
package com.junmp.jyzb.listener;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
......
package com.junmp.junmpProcess.listener;
package com.junmp.jyzb.listener;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
......
package com.junmp.junmpProcess.listener;
package com.junmp.jyzb.listener;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
......
package com.junmp.junmpProcess.listener;
package com.junmp.jyzb.listener;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
......
......@@ -21,6 +21,7 @@ import com.junmp.junmpProcess.service.Bussiness.WorkProcessService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
......@@ -46,7 +47,7 @@ public class BpmnController {
* 修改表单
*/
@ApiOperation("修改表单")
@PutMapping("updateForm")
@PostMapping("updateForm")
public ApiRes<Boolean> updateForm(@RequestBody UpdateProcessVO process) throws JsonProcessingException {
return ApiRes.success(WorkProcessService.updateForm(process));
}
......@@ -103,6 +104,12 @@ public class BpmnController {
public ApiRes<Boolean> start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) {
return WorkProcessService.start(startProcessInstanceDTO);
}
@ApiOperation("通过流程实例查看审批记录")
@PostMapping("record")
public ApiRes<List<TaskDetailVO>> record(@RequestBody HandleDataDTO handleDataDTO) {
return WorkProcessService.record(handleDataDTO.getProcessInstanceId());
}
@ApiOperation("通过流程定义查看详情")
@PostMapping("instanceInfo")
public ApiRes<HandleDataVO> instanceInfo(@RequestBody HandleDataDTO handleDataDTO) {
......
......@@ -8,10 +8,7 @@ import com.junmp.junmpProcess.dto.json.UserInfo;
import java.util.List;
/**
* @author LoveMyOrange
* @create 2022-10-15 16:27
*/
@Data
@ApiModel("各个按钮 处理数据需要传递的参数")
public class HandleDataDTO {
......
......@@ -2,6 +2,7 @@ package com.junmp.junmpProcess.dto;
import com.alibaba.fastjson.JSONObject;
import com.junmp.junmpProcess.dto.json.JunmpUserInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.junmp.junmpProcess.dto.json.UserInfo;
......
......@@ -4,7 +4,7 @@ import lombok.Data;
@Data
public class JunmpUserInfo {
private String userId;
private Long userId;
private String sex;
private String name;
}
......@@ -99,7 +99,12 @@ public interface WorkProcessService {
*/
ApiRes<Boolean> start(StartProcessInstanceDTO startProcessInstanceDTO);
/**
* 通过流程定义id启动流程
*
* @return
*/
ApiRes<List<TaskDetailVO>> record(String processInstanceId);
/**
......
......@@ -403,10 +403,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
formName= process.getFormName().toString();
processTemplates.setFormName(process.getFormName());
}
processTemplates.setFormJson(formJsonNode.toString());
processTemplates.setProcessJson(processJsonNode.toString());
String fj=process.getFormJson().toString();
// processTemplates.setFormJson(process.getFormJson().toString());
else
{
formName = processTemplates.getFormName();
}
// processTemplates.setFormJson(formJsonNode.toString());//暂时用不到,以后会用
processTemplates.setProcessJson(process.getProcessJson().toString());
processTemplates.setUpdated(new Date());
processTemplateService.updateById(processTemplates);//更新表单明细表信息
......@@ -662,11 +664,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
@Override
public ApiRes<Boolean> start(StartProcessInstanceDTO processInstanceDto) {
try {
LoginUser StartUser=new LoginUser();
long use=1000;
StartUser.setUserId(use);
// StartUser.setUserId(Long.valueOf(1000));
// LoginUser StartUser= LoginContext.getContext().getLoginUser();
StartUser= LoginContext.getContext().getLoginUser();
//
JSONObject formData = processInstanceDto.getFormData();
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
Map<String,Object> processVariables= new HashMap<>();
......@@ -700,12 +703,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
.businessStatus(BUSINESS_STATUS_1)
.start();
//手动完成第一个任务
// Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// Object ts=new Object();
// if(task!=null){
// taskService.complete(task.getId());
//
// }
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
Object ts=new Object();
if(task!=null){
taskService.complete(task.getId());
}
return ApiRes.success(true);
}
catch (Exception e){
......@@ -721,6 +724,79 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
}
@Override
public ApiRes<List<TaskDetailVO>> record(String processInstanceId) {
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(processInstanceId);
Map<String, List<Comment>> commentsMap = processInstanceComments.stream()
.collect(Collectors.groupingBy(Comment::getTaskId));
List<Attachment> processInstanceAttachments = taskService.getProcessInstanceAttachments(processInstanceId);
Map<String, List<Attachment>> attachmentMap = processInstanceAttachments.stream()
.collect(Collectors.groupingBy(Attachment::getTaskId));
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
List<TaskDetailVO> taskDetailVOS= new ArrayList<>();
for (HistoricActivityInstance historicActivityInstance : list) {
if("startEvent".equals(historicActivityInstance.getActivityType())){
TaskDetailVO taskDetailVO= new TaskDetailVO();
taskDetailVO.setTaskId(historicActivityInstance.getTaskId());
taskDetailVO.setActivityId(historicActivityInstance.getActivityId());
taskDetailVO.setName("流程开始");
taskDetailVO.setCreateTime(historicActivityInstance.getStartTime());
taskDetailVO.setEndTime(historicActivityInstance.getEndTime());
taskDetailVOS.add(taskDetailVO);
// taskDetailVO.setSignImage();
// taskDetailVO.setAttachmentVOList();
// taskDetailVO.setOptionVOList();
// taskDetailVO.setCommentVOList();
}
else if("endEvent".equals(historicActivityInstance.getActivityType())){
TaskDetailVO taskDetailVO= new TaskDetailVO();
taskDetailVO.setTaskId(historicActivityInstance.getTaskId());
taskDetailVO.setActivityId(historicActivityInstance.getActivityId());
taskDetailVO.setName("流程结束");
taskDetailVO.setCreateTime(historicActivityInstance.getStartTime());
taskDetailVO.setEndTime(historicActivityInstance.getEndTime());
taskDetailVOS.add(taskDetailVO);
}
else if("userTask".equals(historicActivityInstance.getActivityType())){
List<Comment> comments = commentsMap.get(historicActivityInstance.getTaskId());
if(CollUtil.isNotEmpty(comments)){
for (Comment comment : comments) {
if("opinion".equals(comment.getType())){
TaskDetailVO taskDetailVO= new TaskDetailVO();
taskDetailVO.setTaskId(historicActivityInstance.getTaskId());
taskDetailVO.setActivityId(historicActivityInstance.getActivityId());
taskDetailVO.setName(historicActivityInstance.getActivityName());
taskDetailVO.setCreateTime(historicActivityInstance.getStartTime());
taskDetailVO.setEndTime(historicActivityInstance.getEndTime());
// taskDetailVO.setComment(comment.getFullMessage());
List<Attachment> attachments = attachmentMap.get(historicActivityInstance.getTaskId());
List<AttachmentVO> attachmentVOList = new ArrayList<>();
for (Attachment attachment : attachments) {
AttachmentVO attachmentVO = new AttachmentVO();
attachmentVO.setId(attachment.getId());
attachmentVO.setName(attachment.getName());
attachmentVO.setUrl(attachment.getUrl());
attachmentVOList.add(attachmentVO);
}
for (Comment comment1 : comments) {
if("sign".equals(comment1.getType())){
taskDetailVO.setSignImage(comment1.getFullMessage());
}
}
taskDetailVO.setAttachmentVOList(attachmentVOList);
taskDetailVOS.add(taskDetailVO);
}
}
}
}
}
return ApiRes.success(taskDetailVOS);
}
/**
* 查看我发起的流程
*
......@@ -786,7 +862,16 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
*/
@Override
public PageResult<TaskVO> toDoList(TaskDTO taskDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (taskDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(taskDTO.getCurrentUserInfo().getUserId());
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
List<Task> tasks = taskService.createTaskQuery().taskAssignee(StartUser.getUserId().toString())
.includeProcessVariables()
.orderByTaskCreateTime().desc()
......@@ -831,7 +916,17 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
*/
@Override
public PageResult<TaskVO> doneList(TaskDTO taskDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (taskDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(taskDTO.getCurrentUserInfo().getUserId());
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery()
.taskAssignee(StartUser.getUserId().toString())
.finished()
......@@ -883,8 +978,15 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
@Override
public ResponseResult revoke(HandleDataDTO handleDataDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
// UserInfo currentUserInfo = handleDataDTO.getCurrentUserInfo();
LoginUser StartUser=new LoginUser();
if (handleDataDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(handleDataDTO.getCurrentUserInfo().getUserId()));
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
List<AttachmentDTO> attachments = handleDataDTO.getAttachments();
String comments = handleDataDTO.getComments();
......@@ -917,8 +1019,16 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
@Override
public ResponseResult agree(HandleDataDTO handleDataDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (handleDataDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(handleDataDTO.getCurrentUserInfo().getUserId()));
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
List<AttachmentDTO> attachments = handleDataDTO.getAttachments();
String comments = handleDataDTO.getComments();
JSONObject formData = handleDataDTO.getFormData();
......@@ -937,6 +1047,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
runtimeService.setVariables(task.getProcessInstanceId(), map);//设置进入当前流程
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
if (StringUtils.isNotBlank(comments)) {
taskService.addComment(task.getId(), task.getProcessInstanceId(), "opinion", comments);
......@@ -950,8 +1061,6 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
// if (StringUtils.isNotBlank(handleDataDTO.getSignInfo())) {
// taskService.addComment(task.getId(), task.getProcessInstanceId(), "sign", handleDataDTO.getSignInfo());
// }
taskService.complete(task.getId());
HistoricTaskInstance historicTask = historyService
.createHistoricTaskInstanceQuery()
......@@ -980,7 +1089,15 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
@Override
public Result delegateTask(HandleDataDTO handleDataDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (handleDataDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(handleDataDTO.getCurrentUserInfo().getUserId()));
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
List<AttachmentDTO> attachments = handleDataDTO.getAttachments();
String comments = handleDataDTO.getComments();
......@@ -1017,7 +1134,15 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
@Override
public Result resolveTask(HandleDataDTO handleDataDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (handleDataDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(handleDataDTO.getCurrentUserInfo().getUserId()));
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
List<AttachmentDTO> attachments = handleDataDTO.getAttachments();
String comments = handleDataDTO.getComments();
......@@ -1053,7 +1178,15 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
@Override
public ResponseResult refuse(HandleDataDTO handleDataDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (handleDataDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(handleDataDTO.getCurrentUserInfo().getUserId()));
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
List<AttachmentDTO> attachments = handleDataDTO.getAttachments();
......@@ -1125,7 +1258,15 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
@Override
public Result rollback(HandleDataDTO handleDataDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser();
LoginUser StartUser=new LoginUser();
if (handleDataDTO.getCurrentUserInfo().getUserId()!=null)//优先拿接口中的信息,方便调试
{
StartUser.setUserId(Long.valueOf(handleDataDTO.getCurrentUserInfo().getUserId()));
}
else
{
StartUser= LoginContext.getContext().getLoginUser();
}
Authentication.setAuthenticatedUserId(StartUser.getUserId().toString());
List<AttachmentDTO> attachments = handleDataDTO.getAttachments();
String comments = handleDataDTO.getComments();
......@@ -1305,19 +1446,19 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
if (StringUtils.isNotBlank(HandleDataDTO.getTaskId())) {
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(HandleDataDTO.getTaskId()).singleResult();
currentNode = getChildNode(childNode, historicTaskInstance.getTaskDefinitionKey());
// List<FormOperates> formPerms = currentNode.getProps().getFormPerms();
// if (CollUtil.isNotEmpty(formPerms)) {
// Iterator<FormOperates> iterator = formPerms.iterator();
// while (iterator.hasNext()) {
// FormOperates next = iterator.next();
// if ("H".equals(next.getPerm())) {
// iterator.remove();
// if (jsonObject != null) {
// jsonObject.remove(next.getId());
// }
// }
// }
// }
List<FormOperates> formPerms = currentNode.getProps().getFormPerms();
if (CollUtil.isNotEmpty(formPerms)) {
Iterator<FormOperates> iterator = formPerms.iterator();
while (iterator.hasNext()) {
FormOperates next = iterator.next();
if ("H".equals(next.getPerm())) {
iterator.remove();
if (jsonObject != null) {
jsonObject.remove(next.getId());
}
}
}
}
handleDataVO.setCurrentNode(currentNode);
handleDataVO.setTaskId(HandleDataDTO.getTaskId());
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论