WfRoomStayOvernightNode.java 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.xjrsoft.module.liteflow.node;
  2. import cn.hutool.core.convert.Convert;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.xjrsoft.common.enums.WorkflowApproveType;
  5. import com.xjrsoft.module.room.service.IWfRoomStayOvernightService;
  6. import com.xjrsoft.module.workflow.entity.WorkflowRecord;
  7. import com.xjrsoft.module.workflow.mapper.WorkflowRecordMapper;
  8. import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
  9. import com.yomahub.liteflow.core.NodeComponent;
  10. import org.apache.commons.lang.StringUtils;
  11. import org.camunda.bpm.engine.history.HistoricProcessInstance;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Component;
  14. import org.springframework.transaction.support.TransactionSynchronization;
  15. import org.springframework.transaction.support.TransactionSynchronizationManager;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.Optional;
  19. import java.util.concurrent.CompletableFuture;
  20. /**
  21. * 学生住宿申请后,修改学籍信息中的就读方式
  22. */
  23. @Component("wf_room_stay_overnight_node")
  24. public class WfRoomStayOvernightNode extends NodeComponent {
  25. @Autowired
  26. private IWfRoomStayOvernightService wfRoomStayOvernightService;
  27. @Autowired
  28. private IWorkflowExecuteService workflowExecuteService;
  29. @Autowired
  30. private WorkflowRecordMapper workflowRecordMapper;
  31. @Override
  32. public void process() throws Exception {
  33. // 获取表单中数据编号
  34. Map<String, Object> params = this.getFirstContextBean();
  35. Object value = util.getFormDatKey(params,"id");
  36. Long formId = Convert.toLong(value);
  37. Object processInstanceId = params.get("processInstanceId");
  38. if (processInstanceId == null) {
  39. return;
  40. }
  41. String processInstanceIdStr = Convert.toStr(processInstanceId);
  42. if (formId != null && StringUtils.isNotEmpty(processInstanceIdStr)) {
  43. TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
  44. @Override
  45. public void afterCommit() {
  46. CompletableFuture.runAsync(() -> {
  47. Optional<HistoricProcessInstance> historicProcessInstanceOptional = workflowExecuteService.getHistoricProcessInstance(processInstanceId.toString());
  48. if (historicProcessInstanceOptional.isEmpty()) {
  49. return;
  50. }
  51. HistoricProcessInstance historicProcessInstance = historicProcessInstanceOptional.get();
  52. if (!historicProcessInstance.getState().equals(HistoricProcessInstance.STATE_ACTIVE)) {
  53. // 获取流程记录中的非正常结束
  54. LambdaQueryWrapper<WorkflowRecord> workflowRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
  55. workflowRecordLambdaQueryWrapper
  56. .and(wq -> wq.eq(WorkflowRecord::getWorkflowApproveType, WorkflowApproveType.DISAGREE.getCode())
  57. .or()
  58. .eq(WorkflowRecord::getWorkflowApproveType, WorkflowApproveType.WITHDRAW.getCode())
  59. )
  60. .eq(WorkflowRecord::getProcessId, processInstanceId)
  61. ;
  62. List<WorkflowRecord> workflowRecordList = workflowRecordMapper.selectList(workflowRecordLambdaQueryWrapper);
  63. if (!workflowRecordList.isEmpty()) {
  64. return;
  65. }
  66. }
  67. //查询出数据
  68. wfRoomStayOvernightService.noticeParents(formId);
  69. });
  70. }
  71. });
  72. }
  73. }
  74. }