StudentResumeSchoolingNode.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.xjrsoft.module.liteflow.node;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.db.Entity;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.xjrsoft.common.enums.ArchivesStatusEnum;
  7. import com.xjrsoft.common.enums.DeleteMark;
  8. import com.xjrsoft.common.enums.StudentChangeTypeEnum;
  9. import com.xjrsoft.common.enums.WorkflowApproveType;
  10. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  11. import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
  12. import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
  13. import com.xjrsoft.module.student.service.IStudentChangeRecordService;
  14. import com.xjrsoft.module.workflow.entity.WorkflowRecord;
  15. import com.xjrsoft.module.workflow.mapper.WorkflowRecordMapper;
  16. import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
  17. import com.yomahub.liteflow.core.NodeComponent;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.camunda.bpm.engine.history.HistoricProcessInstance;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Component;
  22. import org.springframework.transaction.support.TransactionSynchronization;
  23. import org.springframework.transaction.support.TransactionSynchronizationManager;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Optional;
  27. import java.util.concurrent.CompletableFuture;
  28. /**
  29. * 学生复学
  30. */
  31. @Component("student_resume_schooling_node")
  32. public class StudentResumeSchoolingNode extends NodeComponent {
  33. @Autowired
  34. private IBaseStudentSchoolRollService studentSchoolRollService;
  35. @Autowired
  36. private IWorkflowExecuteService workflowExecuteService;
  37. @Autowired
  38. private WorkflowRecordMapper workflowRecordMapper;
  39. @Autowired
  40. private IStudentChangeRecordService changeRecordService;
  41. @Override
  42. public void process() throws Exception {
  43. // 获取表单中数据编号
  44. Map<String, Object> params = this.getFirstContextBean();
  45. Object value = util.getFormDatKey(params, "id");
  46. Long formId = Convert.toLong(value);
  47. Object processInstanceId = params.get("processInstanceId");
  48. if (processInstanceId == null) {
  49. return;
  50. }
  51. String processInstanceIdStr = Convert.toStr(processInstanceId);
  52. if (formId != null && StringUtils.isNotEmpty(processInstanceIdStr)) {
  53. TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
  54. @Override
  55. public void afterCommit() {
  56. CompletableFuture.runAsync(() -> {
  57. Optional<HistoricProcessInstance> historicProcessInstanceOptional = workflowExecuteService.getHistoricProcessInstance(processInstanceId.toString());
  58. if (historicProcessInstanceOptional.isEmpty()) {
  59. return;
  60. }
  61. HistoricProcessInstance historicProcessInstance = historicProcessInstanceOptional.get();
  62. if (!historicProcessInstance.getState().equals(HistoricProcessInstance.STATE_ACTIVE)) {
  63. // 获取流程记录中的非正常结束
  64. LambdaQueryWrapper<WorkflowRecord> workflowRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
  65. workflowRecordLambdaQueryWrapper
  66. .and(wq -> wq.eq(WorkflowRecord::getWorkflowApproveType, WorkflowApproveType.DISAGREE.getCode())
  67. .or()
  68. .eq(WorkflowRecord::getWorkflowApproveType, WorkflowApproveType.WITHDRAW.getCode())
  69. )
  70. .eq(WorkflowRecord::getProcessId, processInstanceId)
  71. ;
  72. List<WorkflowRecord> workflowRecordList = workflowRecordMapper.selectList(workflowRecordLambdaQueryWrapper);
  73. if (!workflowRecordList.isEmpty()) {
  74. return;
  75. }
  76. }
  77. //查询出数据
  78. String tableName = "wf_student_resume_schooling";
  79. Entity where = Entity.create(tableName);
  80. where.set("id", formId);
  81. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  82. long studentUserId = Long.parseLong(objectMap.get("user_id").toString());
  83. //跟新学籍信息
  84. BaseStudentSchoolRoll schoolRoll = studentSchoolRollService.getOne(
  85. new QueryWrapper<BaseStudentSchoolRoll>().lambda()
  86. .eq(BaseStudentSchoolRoll::getClassId, Long.parseLong(objectMap.get("class_id").toString()))
  87. .eq(BaseStudentSchoolRoll::getUserId, studentUserId)
  88. .eq(BaseStudentSchoolRoll::getDeleteMark, DeleteMark.NODELETE.getCode())
  89. );
  90. //记录异动
  91. changeRecordService.insertData(
  92. ArchivesStatusEnum.fromCode(schoolRoll.getArchivesStatus()),
  93. schoolRoll.getArchivesStatus(),
  94. ArchivesStatusEnum.FB2904.getValue(),
  95. ArchivesStatusEnum.FB2904.getCode(),
  96. studentUserId,
  97. Long.parseLong(objectMap.get("create_user_id").toString()),
  98. StudentChangeTypeEnum.ArchivesStatus.getCode(),
  99. 2
  100. );
  101. schoolRoll.setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
  102. studentSchoolRollService.updateById(schoolRoll);
  103. });
  104. }
  105. });
  106. }
  107. }
  108. }