|
|
@@ -19,26 +19,17 @@ import com.xjrsoft.common.utils.RedisUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
-import com.xjrsoft.module.base.entity.BaseGrade;
|
|
|
import com.xjrsoft.module.base.service.IBaseClassService;
|
|
|
-import com.xjrsoft.module.base.service.IBaseGradeService;
|
|
|
import com.xjrsoft.module.courseTable.dto.ClassTeacherDto;
|
|
|
import com.xjrsoft.module.courseTable.entity.CourseTable;
|
|
|
import com.xjrsoft.module.courseTable.service.ICourseTableService;
|
|
|
import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
|
|
|
-import com.xjrsoft.module.organization.entity.Department;
|
|
|
-import com.xjrsoft.module.organization.entity.Role;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
-import com.xjrsoft.module.organization.entity.UserRoleRelation;
|
|
|
-import com.xjrsoft.module.organization.service.IDepartmentService;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
|
import com.xjrsoft.module.schedule.entity.CourseTableBak;
|
|
|
-import com.xjrsoft.module.schedule.entity.JianyueData;
|
|
|
import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
|
|
|
-import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
|
|
|
import com.xjrsoft.module.schedule.service.ICourseTableBakService;
|
|
|
-import com.xjrsoft.module.schedule.service.IJianyueDataService;
|
|
|
import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
|
|
|
import com.xjrsoft.module.schedule.util.DataUtil;
|
|
|
import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
|
@@ -126,18 +117,6 @@ public class JianyuekbScheduleTask {
|
|
|
@Autowired
|
|
|
private IWorkflowExtraService workflowExtraService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private IJianyueDataService jianyueDataService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IDepartmentService departmentService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ICourseReceiveMsgService receiveMsgService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IBaseGradeService gradeService;
|
|
|
-
|
|
|
@Async
|
|
|
@Scheduled(cron = "0 */10 * * * ?")
|
|
|
public void execute() {
|
|
|
@@ -413,35 +392,126 @@ public class JianyuekbScheduleTask {
|
|
|
}
|
|
|
|
|
|
for (WfCourseAdjust courseAdjust : list) {
|
|
|
- List<CourseTable> courseList = courseTableService.list(
|
|
|
- new MPJLambdaWrapper<CourseTable>()
|
|
|
- .select(CourseTable::getId)
|
|
|
- .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
|
|
|
- .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
|
|
|
- .eq(CourseTableBak::getWfCourseAdjustId, courseAdjust.getId())
|
|
|
- );
|
|
|
-
|
|
|
- String[] courseIds = courseAdjust.getCourseId().split(",");
|
|
|
- String[] exchangeCourseIds = null;
|
|
|
- int courseCount = courseIds.length;
|
|
|
- if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
|
|
|
- exchangeCourseIds = courseAdjust.getExchangeCourseId().split(",");
|
|
|
- courseCount += exchangeCourseIds.length;
|
|
|
- }
|
|
|
- //查询顶课老师在本条申请的课程中的节次是否包含课
|
|
|
- Integer substituteTeacherCourseCount = 0;
|
|
|
- if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
|
|
|
- substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
|
|
|
- setWfCourseAdjustId(courseAdjust.getId());
|
|
|
- setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
|
|
|
- }});
|
|
|
+ try {
|
|
|
+ List<CourseTable> courseList = courseTableService.list(
|
|
|
+ new MPJLambdaWrapper<CourseTable>()
|
|
|
+ .select(CourseTable::getId)
|
|
|
+ .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
|
|
|
+ .eq(CourseTableBak::getWfCourseAdjustId, courseAdjust.getId())
|
|
|
+ );
|
|
|
+
|
|
|
+ String[] courseIds = courseAdjust.getCourseId().split(",");
|
|
|
+ String[] exchangeCourseIds = null;
|
|
|
+ int courseCount = courseIds.length;
|
|
|
+ if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
|
|
|
+ exchangeCourseIds = courseAdjust.getExchangeCourseId().split(",");
|
|
|
+ courseCount += exchangeCourseIds.length;
|
|
|
+ }
|
|
|
+ //查询顶课老师在本条申请的课程中的节次是否包含课
|
|
|
+ Integer substituteTeacherCourseCount = 0;
|
|
|
+ if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
|
|
|
+ substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
|
|
|
+ setWfCourseAdjustId(courseAdjust.getId());
|
|
|
+ setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ if (courseList.size() != courseCount || substituteTeacherCourseCount > 0) {
|
|
|
+ //表明课程变化了,需要重新申请,需要将原来的申请作废并进行微信消息通知
|
|
|
+ courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());
|
|
|
+ courseAdjust.setModifyDate(new Date());
|
|
|
+ courseAdjust.setCancelReason("由于课表更新,当前调/顶课课程发生变化,该调顶课已失效,请重新发起调顶课");
|
|
|
+ cancelList.add(courseAdjust);
|
|
|
+ List<String> thing16Str = new ArrayList<>();
|
|
|
+ List<String> thing2Str = new ArrayList<>();
|
|
|
+ for (CourseTableBak tableBak : bakList) {
|
|
|
+ if (!tableBak.getWfCourseAdjustId().equals(courseAdjust.getId())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ thing16Str.add(classMap.get(tableBak.getId()));
|
|
|
+ thing2Str.add(tableBak.getClassName());
|
|
|
+ }
|
|
|
+
|
|
|
+ WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
|
|
|
+ weChatSendMessageDto.setTemplateId(wechatTemplate);
|
|
|
+ JSONObject paramJson = new JSONObject();
|
|
|
+
|
|
|
+ JSONObject thing16 = new JSONObject();
|
|
|
+ thing16.put("value", thing16Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
|
|
|
+ paramJson.put("thing16", thing16);
|
|
|
+
|
|
|
+ JSONObject thing2 = new JSONObject();
|
|
|
+ thing2.put("value", thing2Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
|
|
|
+ paramJson.put("thing2", thing2);
|
|
|
+
|
|
|
+ String const12Str = "";
|
|
|
+ if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
|
|
|
+ const12Str = "调课失败";
|
|
|
+ } else if (CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())) {
|
|
|
+ const12Str = "顶课失败";
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject const12 = new JSONObject();
|
|
|
+ const12.put("value", const12Str);
|
|
|
+ paramJson.put("const23", const12);
|
|
|
+
|
|
|
+ //迟到人数或者缺勤人数
|
|
|
+ JSONObject thing5 = new JSONObject();
|
|
|
+ thing5.put("value", "由于课表更新,该调顶课已失效");
|
|
|
+ paramJson.put("thing5", thing5);
|
|
|
+
|
|
|
+ String url = StrUtil.format(
|
|
|
+ "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
|
|
|
+ commonPropertiesConfig.getDomainApp(),
|
|
|
+ "relation.getProcessId()"
|
|
|
+ );
|
|
|
+ weChatSendMessageDto.setContent(paramJson);
|
|
|
+ weChatSendMessageDto.setUrl(url);
|
|
|
+ weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
+ String openId = userOpenIdMap.get(courseAdjust.getUserId());
|
|
|
+ if (openId != null && !"".equals(openId)) {
|
|
|
+ weChatSendMessageDto.setUserId(openId);
|
|
|
+ weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ courseTableService.adjustCourse(courseAdjust);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error(e.getMessage());
|
|
|
}
|
|
|
- if (courseList.size() != courseCount || substituteTeacherCourseCount > 0) {
|
|
|
- //表明课程变化了,需要重新申请,需要将原来的申请作废并进行微信消息通知
|
|
|
- courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());
|
|
|
- courseAdjust.setModifyDate(new Date());
|
|
|
- courseAdjust.setCancelReason("由于课表更新,当前调/顶课课程发生变化,该调顶课已失效,请重新发起调顶课");
|
|
|
- cancelList.add(courseAdjust);
|
|
|
+ }
|
|
|
+ if (!cancelList.isEmpty()) {
|
|
|
+ adjustService.updateBatchById(cancelList);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<WorkflowFormRelation> activeList = formRelationService.list(
|
|
|
+ new MPJLambdaWrapper<WorkflowFormRelation>()
|
|
|
+ .select(WorkflowFormRelation::getId)
|
|
|
+ .select(WorkflowFormRelation.class, x -> VoToColumnUtil.fieldsToColumns(WorkflowFormRelation.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(WfCourseAdjust.class, WfCourseAdjust::getId, WorkflowFormRelation::getFormKeyValue)
|
|
|
+ .in(!courseAdjustIds.isEmpty(), WfCourseAdjust::getId, courseAdjustIds)
|
|
|
+ .and(wq -> wq.between(WfCourseAdjust::getAdjustDate, startDate, endDate).or().between(WfCourseAdjust::getExchangeDate, startDate, endDate))
|
|
|
+ .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_ACTIVE)
|
|
|
+ );
|
|
|
+ for (WorkflowFormRelation relation : activeList) {
|
|
|
+ try {
|
|
|
+ List<CourseTable> courseList = courseTableService.list(
|
|
|
+ new MPJLambdaWrapper<CourseTable>()
|
|
|
+ .select(CourseTable::getId)
|
|
|
+ .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
|
|
|
+ .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
|
|
|
+ );
|
|
|
+ List<CourseTableBak> thisbakList = courseTableBakService.list(
|
|
|
+ new QueryWrapper<CourseTableBak>().lambda()
|
|
|
+ .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
|
|
|
+ );
|
|
|
+ if (courseList.size() == thisbakList.size()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WfCourseAdjust courseAdjust = adjustService.getById(relation.getFormKeyValue());
|
|
|
+ //表明课程变化了,进行内部终止
|
|
|
List<String> thing16Str = new ArrayList<>();
|
|
|
List<String> thing2Str = new ArrayList<>();
|
|
|
for (CourseTableBak tableBak : bakList) {
|
|
|
@@ -459,7 +529,7 @@ public class JianyuekbScheduleTask {
|
|
|
|
|
|
JSONObject thing16 = new JSONObject();
|
|
|
thing16.put("value", thing16Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
|
|
|
- paramJson.put("thing16", thing16);
|
|
|
+ paramJson.put("thing16", classMap);
|
|
|
|
|
|
JSONObject thing2 = new JSONObject();
|
|
|
thing2.put("value", thing2Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
|
|
|
@@ -481,183 +551,100 @@ public class JianyuekbScheduleTask {
|
|
|
thing5.put("value", "由于课表更新,该调顶课已失效");
|
|
|
paramJson.put("thing5", thing5);
|
|
|
|
|
|
- String url = StrUtil.format(
|
|
|
- "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
|
|
|
- commonPropertiesConfig.getDomainApp(),
|
|
|
- "relation.getProcessId()"
|
|
|
- );
|
|
|
weChatSendMessageDto.setContent(paramJson);
|
|
|
- weChatSendMessageDto.setUrl(url);
|
|
|
- weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
- String openId = userOpenIdMap.get(courseAdjust.getUserId());
|
|
|
- if (openId != null && !"".equals(openId)) {
|
|
|
- weChatSendMessageDto.setUserId(openId);
|
|
|
- weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
- }
|
|
|
- continue;
|
|
|
- }
|
|
|
- courseTableService.adjustCourse(courseAdjust);
|
|
|
- }
|
|
|
- if (!cancelList.isEmpty()) {
|
|
|
- adjustService.updateBatchById(cancelList);
|
|
|
- }
|
|
|
+ List<WorkflowExtra> extraList = workflowExtraService.list(
|
|
|
+ new QueryWrapper<WorkflowExtra>().lambda()
|
|
|
+ .eq(WorkflowExtra::getProcessId, relation.getProcessId())
|
|
|
+ .orderByDesc(WorkflowExtra::getStartTime)
|
|
|
+ );
|
|
|
|
|
|
- List<WorkflowFormRelation> activeList = formRelationService.list(
|
|
|
- new MPJLambdaWrapper<WorkflowFormRelation>()
|
|
|
- .select(WorkflowFormRelation::getId)
|
|
|
- .select(WorkflowFormRelation.class, x -> VoToColumnUtil.fieldsToColumns(WorkflowFormRelation.class).contains(x.getProperty()))
|
|
|
- .innerJoin(WfCourseAdjust.class, WfCourseAdjust::getId, WorkflowFormRelation::getFormKeyValue)
|
|
|
- .in(!courseAdjustIds.isEmpty(), WfCourseAdjust::getId, courseAdjustIds)
|
|
|
- .and(wq -> wq.between(WfCourseAdjust::getAdjustDate, startDate, endDate).or().between(WfCourseAdjust::getExchangeDate, startDate, endDate))
|
|
|
- .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_ACTIVE)
|
|
|
- );
|
|
|
- for (WorkflowFormRelation relation : activeList) {
|
|
|
- List<CourseTable> courseList = courseTableService.list(
|
|
|
- new MPJLambdaWrapper<CourseTable>()
|
|
|
- .select(CourseTable::getId)
|
|
|
- .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
|
|
|
- .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
|
|
|
- .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
|
|
|
- );
|
|
|
- List<CourseTableBak> thisbakList = courseTableBakService.list(
|
|
|
- new QueryWrapper<CourseTableBak>().lambda()
|
|
|
- .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
|
|
|
- );
|
|
|
- if (courseList.size() == thisbakList.size()) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- WfCourseAdjust courseAdjust = adjustService.getById(relation.getFormKeyValue());
|
|
|
- //表明课程变化了,进行内部终止
|
|
|
- List<String> thing16Str = new ArrayList<>();
|
|
|
- List<String> thing2Str = new ArrayList<>();
|
|
|
- for (CourseTableBak tableBak : bakList) {
|
|
|
- if (!tableBak.getWfCourseAdjustId().equals(courseAdjust.getId())) {
|
|
|
- continue;
|
|
|
+ if (!extraList.isEmpty()) {
|
|
|
+ String url = StrUtil.format(
|
|
|
+ "{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",
|
|
|
+ commonPropertiesConfig.getDomainApp(),
|
|
|
+ extraList.get(0).getTaskId(),
|
|
|
+ relation.getProcessId()
|
|
|
+ );
|
|
|
+ weChatSendMessageDto.setUrl(url);
|
|
|
+
|
|
|
+ weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
+ String openId = userOpenIdMap.get(courseAdjust.getExchangeTeacherId());
|
|
|
+ if (openId != null && !"".equals(openId)) {
|
|
|
+ weChatSendMessageDto.setUserId(openId);
|
|
|
+ weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- thing16Str.add(classMap.get(tableBak.getId()));
|
|
|
- thing2Str.add(tableBak.getClassName());
|
|
|
- }
|
|
|
-
|
|
|
- WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
|
|
|
- weChatSendMessageDto.setTemplateId(wechatTemplate);
|
|
|
- JSONObject paramJson = new JSONObject();
|
|
|
-
|
|
|
- JSONObject thing16 = new JSONObject();
|
|
|
- thing16.put("value", thing16Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
|
|
|
- paramJson.put("thing16", classMap);
|
|
|
-
|
|
|
- JSONObject thing2 = new JSONObject();
|
|
|
- thing2.put("value", thing2Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
|
|
|
- paramJson.put("thing2", thing2);
|
|
|
-
|
|
|
- String const12Str = "";
|
|
|
- if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
|
|
|
- const12Str = "调课失败";
|
|
|
- } else if (CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())) {
|
|
|
- const12Str = "顶课失败";
|
|
|
- }
|
|
|
-
|
|
|
- JSONObject const12 = new JSONObject();
|
|
|
- const12.put("value", const12Str);
|
|
|
- paramJson.put("const23", const12);
|
|
|
-
|
|
|
- //迟到人数或者缺勤人数
|
|
|
- JSONObject thing5 = new JSONObject();
|
|
|
- thing5.put("value", "由于课表更新,该调顶课已失效");
|
|
|
- paramJson.put("thing5", thing5);
|
|
|
-
|
|
|
- weChatSendMessageDto.setContent(paramJson);
|
|
|
- List<WorkflowExtra> extraList = workflowExtraService.list(
|
|
|
- new QueryWrapper<WorkflowExtra>().lambda()
|
|
|
- .eq(WorkflowExtra::getProcessId, relation.getProcessId())
|
|
|
- .orderByDesc(WorkflowExtra::getStartTime)
|
|
|
- );
|
|
|
-
|
|
|
- if (!extraList.isEmpty()) {
|
|
|
String url = StrUtil.format(
|
|
|
- "{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",
|
|
|
+ "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
|
|
|
commonPropertiesConfig.getDomainApp(),
|
|
|
- extraList.get(0).getTaskId(),
|
|
|
relation.getProcessId()
|
|
|
);
|
|
|
weChatSendMessageDto.setUrl(url);
|
|
|
-
|
|
|
weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
- String openId = userOpenIdMap.get(courseAdjust.getExchangeTeacherId());
|
|
|
+ String openId = userOpenIdMap.get(courseAdjust.getUserId());
|
|
|
if (openId != null && !"".equals(openId)) {
|
|
|
weChatSendMessageDto.setUserId(openId);
|
|
|
weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
}
|
|
|
+ String processId = relation.getProcessId();
|
|
|
+
|
|
|
+ List<Task> taskList = taskService.createTaskQuery().processInstanceId(processId).list();
|
|
|
+ Task task = taskList.stream().filter(x -> x.getProcessInstanceId().equals(processId)).findFirst().orElse(new TaskEntity());
|
|
|
+ Long schemaId = Convert.toLong(taskService.getVariable(task.getId(), WorkflowConstant.PROCESS_SCHEMA_ID_KEY));
|
|
|
+ //获取到当前活动的实例
|
|
|
+ ActivityInstance activityInstance = runtimeService.getActivityInstance(task.getProcessInstanceId());
|
|
|
+
|
|
|
+ String message = " 因课表更新之后当前课程已发生变更,该流程已内部终止,如还需调/顶课,请重新发起调/顶课流程";
|
|
|
+ //先停止当前活动示例 然后 关闭流程
|
|
|
+ runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
|
|
|
+ .cancelActivityInstance(activityInstance.getId())
|
|
|
+ .cancelAllForActivity(activityInstance.getId())
|
|
|
+ .setAnnotation("因课表更新之后当前课程已发生变更,该流程已内部终止")
|
|
|
+ .execute();
|
|
|
+
|
|
|
+ //新增流程发起流程记录
|
|
|
+ WorkflowRecord record = new WorkflowRecord();
|
|
|
+ record.setNodeId(task.getId());
|
|
|
+ record.setNodeName(task.getName());
|
|
|
+ record.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
+ record.setProcessId(task.getProcessInstanceId());
|
|
|
+ record.setSchemaId(schemaId);
|
|
|
+ record.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+ record.setRecordTime(LocalDateTime.now());
|
|
|
+ record.setWorkflowApproveType(WorkflowApproveType.FINISH.getCode());
|
|
|
+
|
|
|
+ record.setMessage(message);
|
|
|
+
|
|
|
+ workflowRecordService.save(record);
|
|
|
+
|
|
|
+ //新增流程发起流程记录
|
|
|
+ XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
+ xjrWorkflowOperateRecord.setNodeId(task.getId());
|
|
|
+ xjrWorkflowOperateRecord.setNodeName(task.getName());
|
|
|
+ xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
+ xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
|
|
|
+ xjrWorkflowOperateRecord.setSchemaId(schemaId);
|
|
|
+ xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
+ xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
+ xjrWorkflowOperateRecord.setUsageScenario(1);
|
|
|
+
|
|
|
+
|
|
|
+ xjrWorkflowOperateRecord.setOperateInfo(message);
|
|
|
+ xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
|
|
|
+
|
|
|
+
|
|
|
+ Optional<HistoricProcessInstance> historicProcessInstance = workflowExecuteService.getHistoricProcessInstance(processId);
|
|
|
+ historicProcessInstance.ifPresent(item -> {
|
|
|
+ formRelationService.updateCurrentState(new WorkflowFormRelation() {{
|
|
|
+ setProcessId(processId);
|
|
|
+ setCurrentState(item.getState());
|
|
|
+ setStartTime(item.getStartTime());
|
|
|
+ setEndTime(item.getEndTime());
|
|
|
+ }});
|
|
|
+ });
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error(e.getMessage());
|
|
|
}
|
|
|
- String url = StrUtil.format(
|
|
|
- "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
|
|
|
- commonPropertiesConfig.getDomainApp(),
|
|
|
- relation.getProcessId()
|
|
|
- );
|
|
|
- weChatSendMessageDto.setUrl(url);
|
|
|
- weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
- String openId = userOpenIdMap.get(courseAdjust.getUserId());
|
|
|
- if (openId != null && !"".equals(openId)) {
|
|
|
- weChatSendMessageDto.setUserId(openId);
|
|
|
- weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
- }
|
|
|
- String processId = relation.getProcessId();
|
|
|
-
|
|
|
- List<Task> taskList = taskService.createTaskQuery().processInstanceId(processId).list();
|
|
|
- Task task = taskList.stream().filter(x -> x.getProcessInstanceId().equals(processId)).findFirst().orElse(new TaskEntity());
|
|
|
- Long schemaId = Convert.toLong(taskService.getVariable(task.getId(), WorkflowConstant.PROCESS_SCHEMA_ID_KEY));
|
|
|
- //获取到当前活动的实例
|
|
|
- ActivityInstance activityInstance = runtimeService.getActivityInstance(task.getProcessInstanceId());
|
|
|
-
|
|
|
- String message = " 因课表更新之后当前课程已发生变更,该流程已内部终止,如还需调/顶课,请重新发起调/顶课流程";
|
|
|
- //先停止当前活动示例 然后 关闭流程
|
|
|
- runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
|
|
|
- .cancelActivityInstance(activityInstance.getId())
|
|
|
- .cancelAllForActivity(activityInstance.getId())
|
|
|
- .setAnnotation("因课表更新之后当前课程已发生变更,该流程已内部终止")
|
|
|
- .execute();
|
|
|
-
|
|
|
- //新增流程发起流程记录
|
|
|
- WorkflowRecord record = new WorkflowRecord();
|
|
|
- record.setNodeId(task.getId());
|
|
|
- record.setNodeName(task.getName());
|
|
|
- record.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
- record.setProcessId(task.getProcessInstanceId());
|
|
|
- record.setSchemaId(schemaId);
|
|
|
- record.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
- record.setRecordTime(LocalDateTime.now());
|
|
|
- record.setWorkflowApproveType(WorkflowApproveType.FINISH.getCode());
|
|
|
-
|
|
|
- record.setMessage(message);
|
|
|
-
|
|
|
- workflowRecordService.save(record);
|
|
|
-
|
|
|
- //新增流程发起流程记录
|
|
|
- XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
|
|
|
- xjrWorkflowOperateRecord.setNodeId(task.getId());
|
|
|
- xjrWorkflowOperateRecord.setNodeName(task.getName());
|
|
|
- xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
|
|
|
- xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
|
|
|
- xjrWorkflowOperateRecord.setSchemaId(schemaId);
|
|
|
- xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
|
|
|
- xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
|
|
|
- xjrWorkflowOperateRecord.setUsageScenario(1);
|
|
|
-
|
|
|
-
|
|
|
- xjrWorkflowOperateRecord.setOperateInfo(message);
|
|
|
- xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
|
|
|
-
|
|
|
-
|
|
|
- Optional<HistoricProcessInstance> historicProcessInstance = workflowExecuteService.getHistoricProcessInstance(processId);
|
|
|
- historicProcessInstance.ifPresent(item -> {
|
|
|
- formRelationService.updateCurrentState(new WorkflowFormRelation() {{
|
|
|
- setProcessId(processId);
|
|
|
- setCurrentState(item.getState());
|
|
|
- setStartTime(item.getStartTime());
|
|
|
- setEndTime(item.getEndTime());
|
|
|
- }});
|
|
|
- });
|
|
|
}
|
|
|
}
|
|
|
|