From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/FlowTime.java | 95 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 95 insertions(+), 0 deletions(-)
diff --git a/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/FlowTime.java b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/FlowTime.java
new file mode 100644
index 0000000..ad053d8
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/FlowTime.java
@@ -0,0 +1,95 @@
+package jnpf.flowable.job;
+
+import cn.hutool.core.util.ObjectUtil;
+import jnpf.base.UserInfo;
+import jnpf.config.ConfigValueUtil;
+import jnpf.database.util.TenantDataSourceUtil;
+import jnpf.flowable.model.task.FlowModel;
+import jnpf.flowable.model.templatenode.nodejson.NodeModel;
+import jnpf.flowable.model.templatenode.nodejson.TimeConfig;
+import jnpf.flowable.model.time.FlowTimeModel;
+import jnpf.flowable.util.OverTimeUtil;
+import jnpf.flowable.util.TimeUtil;
+import jnpf.util.JsonUtil;
+import jnpf.util.RedisUtil;
+import jnpf.util.UserProvider;
+import jnpf.util.context.SpringContext;
+import org.quartz.*;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+
+@DisallowConcurrentExecution
+public class FlowTime extends QuartzJobBean {
+
+ private static RedisUtil redisUtil;
+ private static ConfigValueUtil configValueUtil;
+ private static OverTimeUtil overTimeUtil;
+
+
+ static {
+ redisUtil = SpringContext.getBean(RedisUtil.class);
+ configValueUtil = SpringContext.getBean(ConfigValueUtil.class);
+ overTimeUtil = SpringContext.getBean(OverTimeUtil.class);
+ }
+
+ @Override
+ protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
+ JobDetail jobDetail = context.getJobDetail();
+ String jobName = jobDetail.getKey().getName();
+ JobDataMap jobDataMap = jobDetail.getJobDataMap();
+ FlowTimeModel model = FlowJobUtil.getModel(JsonUtil.getJsonToBean(jobDataMap, FlowTimeModel.class), redisUtil);
+ boolean isModel = model == null;
+ FlowTimeModel timeModel = isModel ? JsonUtil.getJsonToBean(jobDataMap, FlowTimeModel.class) : model;
+ if (timeModel != null) {
+ FlowModel flowModel = timeModel.getFlowModel();
+ UserInfo userInfo = flowModel.getUserInfo();
+ if (configValueUtil.isMultiTenancy()) {
+ TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
+ UserProvider.setLoginUser(userInfo);
+ UserProvider.setLocalLoginUser(userInfo);
+ }
+ try {
+ overTimeUtil.overMsg(timeModel);
+ Boolean isPause = timeModel.getIsPause();
+ timeModel.setIsPause(false);
+ boolean overTime = timeModel.getOverTime();
+ FlowJobUtil.insertModel(timeModel, redisUtil);
+ if (overTime) {
+ if (Boolean.TRUE.equals(isPause)) {
+ return;
+ }
+ NodeModel nodeModel = timeModel.getChildNode();
+ TimeConfig timeConfig = nodeModel.getOverTimeConfig();
+ //瓒呮椂鑷姩瀹℃壒
+ Boolean overAutoApprove = timeConfig.getOverAutoApprove();
+ if (Boolean.TRUE.equals(overAutoApprove)) {
+ Integer autoNum = timeConfig.getOverAutoApproveTime();
+ if (ObjectUtil.equals(timeModel.getNum(), autoNum)) {
+ // 鏀惧湪鍙︿竴涓猺edis鐨刱ey(鐢ㄤ簬鑷姩瀹℃壒)
+ FlowJobUtil.insertOperator(timeModel, redisUtil);
+ }
+ } else {
+ Integer transferNum = timeConfig.getOverAutoTransferTime();
+ if (ObjectUtil.equals(timeModel.getTransferNum(), transferNum)) {
+ FlowJobUtil.insertTransfer(timeModel, redisUtil);
+ }
+ }
+ } else {
+ // 涓嬩竴娆℃椂闂村ぇ浜庣粨鏉熸椂闂� 鍒犻櫎鎻愰啋缂撳瓨
+ if (timeModel.getEndDate().getTime() < context.getNextFireTime().getTime()) {
+ FlowJobUtil.removeModel(timeModel, redisUtil);
+ TimeUtil.deleteJob(jobName);
+ }
+ }
+ } catch (Exception e) {
+ FlowJobUtil.removeModel(timeModel, redisUtil);
+ TimeUtil.deleteJob(jobName);
+ }
+ } else {
+ TimeUtil.deleteJob(jobName);
+ FlowJobUtil.removeModel(model, redisUtil);
+ }
+ }
+
+
+}
--
Gitblit v1.8.0