1.自动工单生成增加了自动完成功能

main
yitonglei 3 years ago
parent 70842e9c76
commit f794c2e60d
  1. 75
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/SpringContextHolder.java
  2. 5
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TaskConfig.java
  3. 35
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/FormEndListener.java
  4. 43
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java
  5. 1
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java
  6. 2
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/entity/AutoStartModel.java
  7. 3
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java
  8. 300
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java
  9. 51
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java

@ -0,0 +1,75 @@
package org.springblade.plugin.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;
/**
* @Description
* @Author ytl
* @Date 2023/3/2 0002 15:36
*/
@Slf4j
@Configuration
public class SpringContextHolder implements ApplicationContextAware, DisposableBean {
private static ApplicationContext applicationContext = null;
/**
* 取得存储在静态变量中的ApplicationContext.
*/
public static ApplicationContext getApplicationContext() {
assertContextInjected();
return applicationContext;
}
/**
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) {
log.debug("从SpringContextHolder中取出Bean:" + name);
assertContextInjected();
return (T) applicationContext.getBean(name);
}
/**
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/
public static <T> T getBean(Class<T> requiredType) {
assertContextInjected();
return applicationContext.getBean(requiredType);
}
/**
* 清除SpringContextHolder中的ApplicationContext为Null.
*/
public static void clearHolder() {
log.info("清除SpringContextHolder中的ApplicationContext:"
+ applicationContext);
applicationContext = null;
}
/**
* 实现ApplicationContextAware接口, 注入Context到静态变量中.
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
// logger.debug("注入ApplicationContext到SpringContextHolder:{}", applicationContext);
if (SpringContextHolder.applicationContext != null) {
log.warn("SpringContextHolder中的ApplicationContext被覆盖, 原有ApplicationContext为:" + SpringContextHolder.applicationContext);
}
SpringContextHolder.applicationContext = applicationContext; // NOSONAR
}
/**
* 实现DisposableBean接口, 在Context关闭时清理静态变量.
*/
@Override
public void destroy() throws Exception {
SpringContextHolder.clearHolder();
}
/**
* 检查ApplicationContext不为空.
*/
private static void assertContextInjected() {
if(applicationContext == null) {
throw new IllegalStateException("applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder或在SpringBoot启动类中注册SpringContextHolder.");
}
}
}

@ -40,7 +40,7 @@ public class TaskConfig {
* *只要autoStartModel中存在 next_flag = 0 is_break = 0
* *然后 next_Start_time <= 当前时间就生成新工单并修改next_flag = 1
*/
@Scheduled(fixedDelay = 6000*1000)//上次任务结束后10分钟执行一次
@Scheduled(fixedDelay = 15*1000)//上次任务结束后10分钟执行一次
@Transactional(rollbackFor = Exception.class)
@Async("taskExecutor")
public void autoStartWorkOrder(){
@ -70,6 +70,7 @@ public class TaskConfig {
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId());
workOrder.setType(autoStartModel.getType());
workOrder.setTenantId(WfTaskUtil.getTenantId());
workOrder.setUploadRecord(autoStartModel.getUploadRecord());
//新增
workOrderService.save(workOrder);
//修改nextFlag = 1,表示已经生成新工单了
@ -84,7 +85,7 @@ public class TaskConfig {
/**
* 自动计算下一次的开始和结束时间
*/
@Scheduled(fixedDelay = 6000*1000)
@Scheduled(fixedDelay = 15*1000)
@Transactional(rollbackFor = Exception.class)
@Async("taskExecutor")
public void computerNextDateOfOrder(){

@ -0,0 +1,35 @@
package org.springblade.plugin.listener;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
import org.springblade.plugin.config.SpringContextHolder;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workbench.service.impl.AutoStartModelServiceImpl;
import org.springframework.stereotype.Component;
/**
* @Description
* @Author ytl
* @Date 2023/3/2 0002 15:52
*/
@Component
public class FormEndListener implements ExecutionListener{
@Override
public void notify(DelegateExecution delegateExecution) {
String event = delegateExecution.getEventName();
String processInstanceId = delegateExecution.getProcessInstanceId();
switch (event) {
case "start" :
System.out.println("FormEndListener--start event-------------------");
break;
case "end" :
System.out.println("FormEndListener--end event----------------------");
// IAutoStartModelService autoStartModelService = (IAutoStartModelService)SpringContextHolder.getBean(AutoStartModelServiceImpl.class);
// autoStartModelService.saveStartProcess(processInstanceId,delegateExecution.getVariables());
break;
case "take" :
System.out.println("FormEndListener--take event---------------------");
break;
}
}
}

@ -0,0 +1,43 @@
package org.springblade.plugin.listener;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
import org.springblade.plugin.config.SpringContextHolder;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workbench.service.impl.AutoStartModelServiceImpl;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* @Description
* @Author ytl
* @Date 2023/3/2 0002 15:05
*/
@Component
public class ProcessEndListener implements ExecutionListener {
@Override
public void notify(DelegateExecution delegateExecution) {
String event = delegateExecution.getEventName();
String processInstanceId = delegateExecution.getProcessInstanceId();
Map<String,Object> variables = delegateExecution.getVariables();
switch (event) {
case "start" :
System.out.println("ProcessEndListener-start event-------------------");
IAutoStartModelService autoStartModelService = (IAutoStartModelService)SpringContextHolder.getBean(AutoStartModelServiceImpl.class);
autoStartModelService.saveStartProcess(processInstanceId,variables);
autoStartModelService.updateAutoStartModel(processInstanceId,variables);
break;
case "end" :
System.out.println("ProcessEndListener-end event----------------------");
break;
case "take" :
System.out.println("ProcessEndListener-take event---------------------");
break;
}
}
}

@ -81,4 +81,5 @@ public class WorkOrder extends TenantEntity {
@TableField(exist = false)
private Date endTime2;
private String uploadRecord;
}

@ -81,4 +81,6 @@ public class AutoStartModel extends TenantEntity {
*/
@TableField(exist = false)
private Date endTime;
private String uploadRecord;
}

@ -24,6 +24,7 @@ public interface IAutoStartModelService extends BaseService<AutoStartModel> {
boolean breakAutoStartModel(String ids);
void updateAutoStartModel(String processinstanceId);
void updateAutoStartModel(String processinstanceId,Map<String,Object> variables);
void saveStartProcess(String processinstanceId,Map<String,Object> variables);
}

@ -2,6 +2,7 @@ package org.springblade.plugin.workbench.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import liquibase.pro.packaged.E;
import lombok.AllArgsConstructor;
import lombok.NonNull;
import org.apache.commons.lang3.StringUtils;
@ -30,6 +31,8 @@ import org.springblade.plugin.operation.system.service.IModuleInfoService;
import org.springblade.plugin.operation.system.service.IProjectInfoService;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.plugin.operation.task.service.ITaskInfoService;
import org.springblade.plugin.operation.workorder.entity.WorkOrder;
import org.springblade.plugin.operation.workorder.service.IWorkOrderService;
import org.springblade.plugin.workbench.cache.FlowCache;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.enumutil.RepeatEnum;
@ -37,15 +40,18 @@ import org.springblade.plugin.workbench.enumutil.RepeatTypeEnum;
import org.springblade.plugin.workbench.mapper.BladeManMadeMapper;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workbench.vo.AutoStartModelVO;
import org.springblade.plugin.workflow.core.utils.WfTaskUtil;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.cache.SysCache;
import org.springblade.system.entity.Dept;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.cache.UserCache;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotEmpty;
import java.time.Duration;
import java.util.*;
/**
@ -71,6 +77,8 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
private final IDataTableService dataTableService;
private final IWorkOrderService workOrderService;
@Override
@ -166,83 +174,239 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
* 其次是计算下一次工单开启时间和期望结束时间
* @param processinstanceId
*/
// @Override
//// @Async("taskExecutor")
// public void updateAutoStartModel(String processinstanceId){
// try{
// Thread.sleep(200);
// }catch (Exception e){
// e.printStackTrace();
// }
//
// //查询AutoStartModel status = 1 isBreak = 0的数据
// LambdaQueryWrapper<AutoStartModel> autoStartModelWrapper = Wrappers.lambdaQuery();
// autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId).eq(AutoStartModel::getIsBreak,0);
// List<AutoStartModel> list = this.list(autoStartModelWrapper);
// if(list.size() > 0){
// list.forEach(autoStartModel -> {
// autoStartModel.setStatus(10);
// List<HistoricVariableInstance> variableList = historyService.createHistoricVariableInstanceQuery().processInstanceId(processinstanceId).list();
// Date qiwangwanchengshijian = DateUtil.plusDays(DateUtil.now(),1);
// for(HistoricVariableInstance hv : variableList){
// switch (hv.getVariableName()){
// case "guanlibumen":
// autoStartModel.setManagement(Long.valueOf(hv.getValue().toString()));
// break;
// case "renwufulei":
// autoStartModel.setTaskParent(Long.valueOf(hv.getValue().toString()));
// break;
// case "renwuzhonglei":
// autoStartModel.setTaskType(Long.valueOf(hv.getValue().toString()));
// break;
// case "renwudengji":
// autoStartModel.setTaskLevel(Long.valueOf(hv.getValue().toString()));
// break;
// case "xitongmingchengshujuku":
// autoStartModel.setOperateSys(Long.valueOf(hv.getValue().toString()));
// break;
// case "xitongmokuaishujubiao":
// autoStartModel.setOperateModule(Long.valueOf(hv.getValue().toString()));
// break;
// case "chongfumoshi":
// autoStartModel.setRepeatMode(Long.valueOf(hv.getValue().toString()));
// break;
// case "qiwangwanchengshijian":
// qiwangwanchengshijian = DateUtil.parse(hv.getValue().toString(),"yyyy-MM-dd HH:mm:ss");
// break;
// case "type":
// autoStartModel.setRepeatMode(Long.valueOf(hv.getValue().toString()));
// break;
// }
// }
// //获取工作流的开始时间
// HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processinstanceId).singleResult();
// Date startTime = historicProcessInstance.getStartTime();
//// Date nextStartTime;
//// Date nextEndTime;
//// //获取任务重复模式
//// Long repeatMode = autoStartModel.getRepeatMode();
//// System.out.println(Long.valueOf(RepeatEnum.每周.getCode()));
//// System.out.println(repeatMode);
//// if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){
//// nextStartTime = DateUtil.plusWeeks(startTime,1);
//// nextEndTime = DateUtil.plusWeeks(qiwangwanchengshijian,1);
//// }else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode.toString())){
//// nextStartTime = DateUtil.plusMonths(startTime,1);
//// nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,1);
//// }else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode.toString())){
//// nextStartTime = DateUtil.plusMonths(startTime,3);
//// nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,3);
//// }else if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode.toString())){
//// nextStartTime = DateUtil.plusDays(startTime,1);
//// nextEndTime = DateUtil.plusDays(qiwangwanchengshijian,1);
//// }else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode.toString())){
//// nextStartTime = DateUtil.plusMinutes(startTime,1);
//// nextEndTime = DateUtil.plusMinutes(qiwangwanchengshijian,1);
//// }
//// else{
//// return;
//// }
// //还要自动生成work_order,所以以本次的信息为依据,auto_start_model nextFlag = 1 ,表示已经生成工单了
// autoStartModel.setNextStartTime(startTime);
// autoStartModel.setNextEndTime(qiwangwanchengshijian);
// autoStartModel.setNextFlag(1);
// baseMapper.updateById(autoStartModel);
//
//
// //生成工单
// WorkOrder workOrder = new WorkOrder();
// workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId());
// workOrder.setTenantId(autoStartModel.getTenantId());
// workOrder.setApplyUser(autoStartModel.getApplyUser().toString());
// workOrder.setMaintenanceCompany(autoStartModel.getMaintenanceCompany().toString());
// workOrder.setManagement(autoStartModel.getManagement().toString());
// workOrder.setTaskParent(autoStartModel.getTaskParent().toString());
// workOrder.setTaskType(autoStartModel.getTaskType().toString());
// workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString());
// workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString());
// workOrder.setType(autoStartModel.getType());
// workOrder.setOperateSys(autoStartModel.getOperateSys().toString());
// workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
// //如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
// if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1624973130579636225")){
// workOrder.setIsFinish(1);
// workOrder.setFinishTime(qiwangwanchengshijian);
// }
//
// workOrderService.save(workOrder);
// });
// }
// }
@Override
@Async("taskExecutor")
public void updateAutoStartModel(String processinstanceId){
//查询AutoStartModel status = 10 isBreak = 0的数据
public void updateAutoStartModel(String processinstanceId,Map<String,Object> variables){
try{
Thread.sleep(200);
}catch (Exception e){
e.printStackTrace();
}
//查询AutoStartModel status = 1 isBreak = 0的数据
LambdaQueryWrapper<AutoStartModel> autoStartModelWrapper = Wrappers.lambdaQuery();
autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId).eq(AutoStartModel::getIsBreak,0);
List<AutoStartModel> list = this.list(autoStartModelWrapper);
if(list.size() > 0){
list.forEach(autoStartModel -> {
AutoStartModel autoStartModel = baseMapper.selectOne(autoStartModelWrapper);
Date qiwangwanchengshijian;
if(Func.isNotEmpty(autoStartModel)){
autoStartModel.setStatus(10);
List<HistoricVariableInstance> variableList = historyService.createHistoricVariableInstanceQuery().processInstanceId(processinstanceId).list();
Date qiwangwanchengshijian = DateUtil.plusDays(DateUtil.now(),1);
for(HistoricVariableInstance hv : variableList){
switch (hv.getVariableName()){
case "guanlibumen":
autoStartModel.setManagement(Long.valueOf(hv.getValue().toString()));
break;
case "renwufulei":
autoStartModel.setTaskParent(Long.valueOf(hv.getValue().toString()));
break;
case "renwuzhonglei":
autoStartModel.setTaskType(Long.valueOf(hv.getValue().toString()));
break;
case "renwudengji":
autoStartModel.setTaskLevel(Long.valueOf(hv.getValue().toString()));
break;
case "xitongmingchengshujuku":
autoStartModel.setOperateSys(Long.valueOf(hv.getValue().toString()));
break;
case "xitongmokuaishujubiao":
autoStartModel.setOperateModule(Long.valueOf(hv.getValue().toString()));
break;
case "chongfumoshi":
autoStartModel.setRepeatMode(Long.valueOf(hv.getValue().toString()));
break;
case "qiwangwanchengshijian":
qiwangwanchengshijian = DateUtil.parse(hv.getValue().toString(),"yyyy-MM-dd HH:mm:ss");
break;
case "type":
autoStartModel.setRepeatMode(Long.valueOf(hv.getValue().toString()));
break;
}
}
autoStartModel.setManagement(Long.valueOf(variables.get("guanlibumen").toString()));
autoStartModel.setTaskParent(Long.valueOf(variables.get("renwufulei").toString()));
autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString()));
autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString()));
autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString()));
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString()));
qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(),"yyyy-MM-dd HH:mm:ss");
//获取工作流的开始时间
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processinstanceId).singleResult();
Date startTime = historicProcessInstance.getStartTime();
Date nextStartTime;
Date nextEndTime;
//获取任务重复模式
Long repeatMode = autoStartModel.getRepeatMode();
System.out.println(Long.valueOf(RepeatEnum.每周.getCode()));
System.out.println(repeatMode);
if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){
nextStartTime = DateUtil.plusWeeks(startTime,1);
nextEndTime = DateUtil.plusWeeks(qiwangwanchengshijian,1);
}else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode.toString())){
nextStartTime = DateUtil.plusMonths(startTime,1);
nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,1);
}else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode.toString())){
nextStartTime = DateUtil.plusMonths(startTime,3);
nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,3);
}else if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode.toString())){
nextStartTime = DateUtil.plusDays(startTime,1);
nextEndTime = DateUtil.plusDays(qiwangwanchengshijian,1);
}else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode.toString())){
nextStartTime = DateUtil.plusMinutes(startTime,1);
nextEndTime = DateUtil.plusMinutes(qiwangwanchengshijian,1);
}
else{
return;
}
autoStartModel.setNextStartTime(nextStartTime);
autoStartModel.setNextEndTime(nextEndTime);
autoStartModel.setNextFlag(0);
// Date nextStartTime;
// Date nextEndTime;
// //获取任务重复模式
// Long repeatMode = autoStartModel.getRepeatMode();
// System.out.println(Long.valueOf(RepeatEnum.每周.getCode()));
// System.out.println(repeatMode);
// if(StringUtils.equals(RepeatEnum.每周.getCode(),repeatMode.toString())){
// nextStartTime = DateUtil.plusWeeks(startTime,1);
// nextEndTime = DateUtil.plusWeeks(qiwangwanchengshijian,1);
// }else if(StringUtils.equals(RepeatEnum.每月.getCode(),repeatMode.toString())){
// nextStartTime = DateUtil.plusMonths(startTime,1);
// nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,1);
// }else if(StringUtils.equals(RepeatEnum.每季度.getCode(),repeatMode.toString())){
// nextStartTime = DateUtil.plusMonths(startTime,3);
// nextEndTime = DateUtil.plusMonths(qiwangwanchengshijian,3);
// }else if(StringUtils.equals(RepeatEnum.每天.getCode(),repeatMode.toString())){
// nextStartTime = DateUtil.plusDays(startTime,1);
// nextEndTime = DateUtil.plusDays(qiwangwanchengshijian,1);
// }else if(StringUtils.equals(RepeatEnum.每分钟.getCode(),repeatMode.toString())){
// nextStartTime = DateUtil.plusMinutes(startTime,1);
// nextEndTime = DateUtil.plusMinutes(qiwangwanchengshijian,1);
// }
// else{
// return;
// }
//还要自动生成work_order,所以以本次的信息为依据,auto_start_model nextFlag = 1 ,表示已经生成工单了
autoStartModel.setNextStartTime(startTime);
autoStartModel.setNextEndTime(qiwangwanchengshijian);
autoStartModel.setNextFlag(1);
baseMapper.updateById(autoStartModel);
});
//生成工单
WorkOrder workOrder = new WorkOrder();
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId());
workOrder.setTenantId(autoStartModel.getTenantId());
workOrder.setApplyUser(autoStartModel.getApplyUser().toString());
workOrder.setMaintenanceCompany(autoStartModel.getMaintenanceCompany().toString());
workOrder.setManagement(autoStartModel.getManagement().toString());
workOrder.setTaskParent(autoStartModel.getTaskParent().toString());
workOrder.setTaskType(autoStartModel.getTaskType().toString());
workOrder.setTaskLevel(autoStartModel.getTaskLevel().toString());
workOrder.setRepeatMode(autoStartModel.getRepeatMode().toString());
workOrder.setType(autoStartModel.getType());
workOrder.setOperateSys(autoStartModel.getOperateSys().toString());
workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){
workOrder.setIsFinish(1);
workOrder.setFinishTime(qiwangwanchengshijian);
}
workOrderService.save(workOrder);
}
}
@Override
public void saveStartProcess(String processinstanceId,Map<String,Object> variables){
//将新增的流程实例id保存到blade_flow_autostart_model
AutoStartModel autoStartModel = new AutoStartModel();
autoStartModel.setProcessInstanceId(processinstanceId);
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processinstanceId).singleResult();
Date startTime = processInstance.getStartTime();
Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss");
// Duration between = DateUtil.between(startTime, qiwangwanchengshijian);
// autoStartModel.setProcessSeconds(between.getSeconds());
autoStartModel.setApplyUser(Long.valueOf(variables.get("applyUser").toString()));
autoStartModel.setApplyRole(variables.get("createRole").toString());
autoStartModel.setMaintenanceCompany(Long.valueOf(variables.get("yunweigongsi").toString()));
autoStartModel.setManagement(Long.valueOf(variables.get("guanlibumen").toString()));
autoStartModel.setTaskParent(Long.valueOf(variables.get("renwufulei").toString()));
autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString()));
autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString()));
autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString()));
autoStartModel.setType(Integer.parseInt(variables.get("type").toString()));
autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString()));
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
autoStartModel.setCreateTime(processInstance.getStartTime());
autoStartModel.setIsDeleted(0);
autoStartModel.setUploadRecord(variables.get("uploadrecord").toString());
String deptId = AuthUtil.getDeptId();
Long userId = AuthUtil.getUser().getUserId();
autoStartModel.setCreateUser(userId);
autoStartModel.setCreateDept(Long.valueOf(deptId));
autoStartModel.setCreateTime(DateUtil.now());
baseMapper.insert(autoStartModel);
}
}

@ -203,26 +203,26 @@ public class WfProcessService implements IWfProcessService {
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, definition.getKey(), variables);
//将新增的流程实例id保存到blade_flow_autostart_model
AutoStartModel autoStartModel = new AutoStartModel();
autoStartModel.setProcessInstanceId(processInstance.getId());
Date startTime = processInstance.getStartTime();
Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss");
Duration between = DateUtil.between(startTime, qiwangwanchengshijian);
autoStartModel.setProcessSeconds(between.getSeconds());
autoStartModel.setApplyUser(Long.valueOf(variables.get("applyUser").toString()));
autoStartModel.setApplyRole(variables.get("createRole").toString());
autoStartModel.setMaintenanceCompany(Long.valueOf(variables.get("yunweigongsi").toString()));
autoStartModel.setManagement(Long.valueOf(variables.get("guanlibumen").toString()));
autoStartModel.setTaskParent(Long.valueOf(variables.get("renwufulei").toString()));
autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString()));
autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString()));
autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString()));
autoStartModel.setType(Integer.parseInt(variables.get("type").toString()));
autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString()));
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
autoStartModel.setCreateTime(processInstance.getStartTime());
autoStartModelService.save(autoStartModel);
// //将新增的流程实例id保存到blade_flow_autostart_model
// AutoStartModel autoStartModel = new AutoStartModel();
// autoStartModel.setProcessInstanceId(processInstance.getId());
// Date startTime = processInstance.getStartTime();
// Date qiwangwanchengshijian = DateUtil.parse(variables.get("qiwangwanchengshijian").toString(), "yyyy-MM-dd HH:mm:ss");
// Duration between = DateUtil.between(startTime, qiwangwanchengshijian);
// autoStartModel.setProcessSeconds(between.getSeconds());
// autoStartModel.setApplyUser(Long.valueOf(variables.get("applyUser").toString()));
// autoStartModel.setApplyRole(variables.get("createRole").toString());
// autoStartModel.setMaintenanceCompany(Long.valueOf(variables.get("yunweigongsi").toString()));
// autoStartModel.setManagement(Long.valueOf(variables.get("guanlibumen").toString()));
// autoStartModel.setTaskParent(Long.valueOf(variables.get("renwufulei").toString()));
// autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString()));
// autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString()));
// autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString()));
// autoStartModel.setType(Integer.parseInt(variables.get("type").toString()));
// autoStartModel.setOperateSys(Long.valueOf(variables.get("xitongmingchengshujuku").toString()));
// autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
// autoStartModel.setCreateTime(processInstance.getStartTime());
// autoStartModelService.save(autoStartModel);
// FlowCache.clearBladeManMadeCache();
return handleProcessInstance(processInstance, variables);
}
@ -761,11 +761,12 @@ public class WfProcessService implements IWfProcessService {
// //每次处理都要清空一下FLOW_CACHE缓存,使缓存中的参数使最新的
// CacheUtil.clear(FLOW_CACHE, Boolean.FALSE);
//判断这个流程是否整体结束,如果整体结束,修改变量值,并且修改blade_flow_autostart_model status = 10,也就是说此任务可以重复执行了
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).finished().singleResult();
if(Func.isNotEmpty(historicProcessInstance)){
autoStartModelService.updateAutoStartModel(task.getProcessInstanceId());
}
//判断这个流程是否整体结束,如果整体结束,修改变量值,并且修改blade_flow_autostart_model status = 10,也就是说此任务可以重复执行了。
//并且要在work_order表中加一条记录
// HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).finished().singleResult();
// if(Func.isNotEmpty(historicProcessInstance)){
// autoStartModelService.updateAutoStartModel(task.getProcessInstanceId());
// }
return R.success("操作成功");
}

Loading…
Cancel
Save