1.首页"关于我的"重新改回异步执行了

2.发起任务时BUG修改
main
yitonglei 3 years ago
parent 14e54dee62
commit 137a4a68c4
  1. 254
      lab-common/src/main/java/org/springblade/common/constant/LauncherConstant.java.r1252
  2. 254
      lab-common/src/main/java/org/springblade/common/constant/LauncherConstant.java.r1253
  3. 33
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/controller/HomePageController.java
  4. 8
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/IHomePageService.java
  5. 44
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/impl/HomePageServiceImpl.java
  6. 5
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/cache/FlowCache.java
  7. 42
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/AutoStartProcessController.java
  8. 5
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/WorkBenchController.java
  9. 22
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/entity/AutoStartModel.java
  10. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/mapper/BladeManMadeMapper.java
  11. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java
  12. 12
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java
  13. 10
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/WorkBenchServiceImpl.java
  14. 29
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java

@ -1,254 +0,0 @@
package org.springblade.common.constant;
import org.springblade.core.launch.constant.AppConstant;
import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
/**
* 启动常量
*
* @author Chill
*/
public interface LauncherConstant {
/**
* 郵件服務
*/
String APPLICATION_EMAIL_NAME = APPLICATION_NAME_PREFIX + "email";
String APPLICATION_FLOW_NAME = APPLICATION_NAME_PREFIX + "workflow";
/**
* 资产
*/
String APPLICATION_CAPITAL_NAME = APPLICATION_NAME_PREFIX + "capital";
/**
* lims
*/
String APPLICATION_LIMS_NAME = APPLICATION_NAME_PREFIX + "lims";
/**
* office
*/
String APPLICATION_OFFICE_NAME = APPLICATION_NAME_PREFIX + "office";
/**
* repair
*/
String APPLICATION_REPAIR_NAME = APPLICATION_NAME_PREFIX + "repair";
/**
* monitor
*/
String APPLICATION_MONITOR_NAME = APPLICATION_NAME_PREFIX + "monitor";
/**
* iot
*/
String APPLICATION_IOT_NAME = APPLICATION_NAME_PREFIX + "iot";
/**
* xxljob
*/
String APPLICATION_XXLJOB_NAME = APPLICATION_NAME_PREFIX + "xxljob";
/**
* xxljob
*/
String APPLICATION_XXLJOB_ADMIN_NAME = APPLICATION_NAME_PREFIX + "xxljob-admin";
/**
* nacos dev 地址
*/
String NACOS_DEV_ADDR = "172.29.14.103:8848";
//String NACOS_DEV_ADDR = "127.0.0.1:8848";
//String NACOS_DEV_ADDR = "172.29.14.103:8848";
/**
* nacos prod 地址
*/
String NACOS_PROD_ADDR = "172.30.0.48:8848";
/**
* nacos test 地址
*/
String NACOS_TEST_ADDR = "192.168.1.88:8848";
/**
* sentinel dev 地址
*/
String SENTINEL_DEV_ADDR = "127.0.0.1:8848";
/**
* sentinel prod 地址
*/
String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
/**
* sentinel test 地址
*/
String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
/**
* seata dev 地址
*/
String SEATA_DEV_ADDR = "127.0.0.1:8091";
/**
* seata prod 地址
*/
String SEATA_PROD_ADDR = "172.30.0.68:8091";
/**
* seata test 地址
*/
String SEATA_TEST_ADDR = "172.30.0.68:8091";
/**
* zipkin dev 地址
*/
String ZIPKIN_DEV_ADDR = "http://127.0.0.1:9411";
/**
* zipkin prod 地址
*/
String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
/**
* zipkin test 地址
*/
String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
/**
* elk dev 地址
*/
String ELK_DEV_ADDR = "127.0.0.1:9000";
/**
* elk prod 地址
*/
String ELK_PROD_ADDR = "172.30.0.72:9000";
/**
* elk test 地址
*/
String ELK_TEST_ADDR = "172.30.0.72:9000";
/**
* seata file模式
*/
String FILE_MODE = "file";
/**
* seata nacos模式
*/
String NACOS_MODE = "nacos";
/**
* seata default模式
*/
String DEFAULT_MODE = "default";
/**
* seata group后缀
*/
String GROUP_NAME = "-group";
/**
* seata 服务组格式
*
* @param appName 服务名
* @return group
*/
static String seataServiceGroup(String appName) {
return appName.concat(GROUP_NAME);
}
/**
* 动态获取nacos地址
*
* @param profile 环境变量
* @return addr
*/
static String nacosAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return NACOS_PROD_ADDR;
case (AppConstant.TEST_CODE):
return NACOS_TEST_ADDR;
default:
return NACOS_DEV_ADDR;
}
}
/**
* 动态获取sentinel地址
*
* @param profile 环境变量
* @return addr
*/
static String sentinelAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return SENTINEL_PROD_ADDR;
case (AppConstant.TEST_CODE):
return SENTINEL_TEST_ADDR;
default:
return SENTINEL_DEV_ADDR;
}
}
/**
* 动态获取seata地址
*
* @param profile 环境变量
* @return addr
*/
static String seataAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return SEATA_PROD_ADDR;
case (AppConstant.TEST_CODE):
return SEATA_TEST_ADDR;
default:
return SEATA_DEV_ADDR;
}
}
/**
* 动态获取zipkin地址
*
* @param profile 环境变量
* @return addr
*/
static String zipkinAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return ZIPKIN_PROD_ADDR;
case (AppConstant.TEST_CODE):
return ZIPKIN_TEST_ADDR;
default:
return ZIPKIN_DEV_ADDR;
}
}
/**
* 动态获取elk地址
*
* @param profile 环境变量
* @return addr
*/
static String elkAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return ELK_PROD_ADDR;
case (AppConstant.TEST_CODE):
return ELK_TEST_ADDR;
default:
return ELK_DEV_ADDR;
}
}
}

@ -1,254 +0,0 @@
package org.springblade.common.constant;
import org.springblade.core.launch.constant.AppConstant;
import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
/**
* 启动常量
*
* @author Chill
*/
public interface LauncherConstant {
/**
* 郵件服務
*/
String APPLICATION_EMAIL_NAME = APPLICATION_NAME_PREFIX + "email";
String APPLICATION_FLOW_NAME = APPLICATION_NAME_PREFIX + "workflow";
/**
* 资产
*/
String APPLICATION_CAPITAL_NAME = APPLICATION_NAME_PREFIX + "capital";
/**
* lims
*/
String APPLICATION_LIMS_NAME = APPLICATION_NAME_PREFIX + "lims";
/**
* office
*/
String APPLICATION_OFFICE_NAME = APPLICATION_NAME_PREFIX + "office";
/**
* repair
*/
String APPLICATION_REPAIR_NAME = APPLICATION_NAME_PREFIX + "repair";
/**
* monitor
*/
String APPLICATION_MONITOR_NAME = APPLICATION_NAME_PREFIX + "monitor";
/**
* iot
*/
String APPLICATION_IOT_NAME = APPLICATION_NAME_PREFIX + "iot";
/**
* xxljob
*/
String APPLICATION_XXLJOB_NAME = APPLICATION_NAME_PREFIX + "xxljob";
/**
* xxljob
*/
String APPLICATION_XXLJOB_ADMIN_NAME = APPLICATION_NAME_PREFIX + "xxljob-admin";
/**
* nacos dev 地址
*/
//String NACOS_DEV_ADDR = "172.29.14.103:8848";
String NACOS_DEV_ADDR = "127.0.0.1:8848";
//String NACOS_DEV_ADDR = "172.29.14.103:8848";
/**
* nacos prod 地址
*/
String NACOS_PROD_ADDR = "172.30.0.48:8848";
/**
* nacos test 地址
*/
String NACOS_TEST_ADDR = "192.168.1.88:8848";
/**
* sentinel dev 地址
*/
String SENTINEL_DEV_ADDR = "127.0.0.1:8848";
/**
* sentinel prod 地址
*/
String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
/**
* sentinel test 地址
*/
String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
/**
* seata dev 地址
*/
String SEATA_DEV_ADDR = "127.0.0.1:8091";
/**
* seata prod 地址
*/
String SEATA_PROD_ADDR = "172.30.0.68:8091";
/**
* seata test 地址
*/
String SEATA_TEST_ADDR = "172.30.0.68:8091";
/**
* zipkin dev 地址
*/
String ZIPKIN_DEV_ADDR = "http://127.0.0.1:9411";
/**
* zipkin prod 地址
*/
String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
/**
* zipkin test 地址
*/
String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
/**
* elk dev 地址
*/
String ELK_DEV_ADDR = "127.0.0.1:9000";
/**
* elk prod 地址
*/
String ELK_PROD_ADDR = "172.30.0.72:9000";
/**
* elk test 地址
*/
String ELK_TEST_ADDR = "172.30.0.72:9000";
/**
* seata file模式
*/
String FILE_MODE = "file";
/**
* seata nacos模式
*/
String NACOS_MODE = "nacos";
/**
* seata default模式
*/
String DEFAULT_MODE = "default";
/**
* seata group后缀
*/
String GROUP_NAME = "-group";
/**
* seata 服务组格式
*
* @param appName 服务名
* @return group
*/
static String seataServiceGroup(String appName) {
return appName.concat(GROUP_NAME);
}
/**
* 动态获取nacos地址
*
* @param profile 环境变量
* @return addr
*/
static String nacosAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return NACOS_PROD_ADDR;
case (AppConstant.TEST_CODE):
return NACOS_TEST_ADDR;
default:
return NACOS_DEV_ADDR;
}
}
/**
* 动态获取sentinel地址
*
* @param profile 环境变量
* @return addr
*/
static String sentinelAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return SENTINEL_PROD_ADDR;
case (AppConstant.TEST_CODE):
return SENTINEL_TEST_ADDR;
default:
return SENTINEL_DEV_ADDR;
}
}
/**
* 动态获取seata地址
*
* @param profile 环境变量
* @return addr
*/
static String seataAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return SEATA_PROD_ADDR;
case (AppConstant.TEST_CODE):
return SEATA_TEST_ADDR;
default:
return SEATA_DEV_ADDR;
}
}
/**
* 动态获取zipkin地址
*
* @param profile 环境变量
* @return addr
*/
static String zipkinAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return ZIPKIN_PROD_ADDR;
case (AppConstant.TEST_CODE):
return ZIPKIN_TEST_ADDR;
default:
return ZIPKIN_DEV_ADDR;
}
}
/**
* 动态获取elk地址
*
* @param profile 环境变量
* @return addr
*/
static String elkAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return ELK_PROD_ADDR;
case (AppConstant.TEST_CODE):
return ELK_TEST_ADDR;
default:
return ELK_DEV_ADDR;
}
}
}

@ -6,9 +6,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.plugin.homepage.service.IHomePageService;
import org.springblade.plugin.workflow.core.utils.WfTaskUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -41,20 +43,25 @@ public class HomePageController extends BladeController {
@ApiOperationSupport(order = 1)
@ApiOperation(value = "我的相关", notes = "首页的“到期提醒”、“我的待办”、“今日新增”、“今日完成”的统计")
public R aboutMy() throws Exception{
//当前获取登录人deptid
String deptId = AuthUtil.getDeptId();
String taskUser = WfTaskUtil.getTaskUser();
String taskGroup = WfTaskUtil.getCandidateGroup();
String tenantId = WfTaskUtil.getTenantId();
// Future<Integer> expireNum = homePageService.expireNum();
// Future<Integer> needDoNum = homePageService.needDoNum();
// Future<Integer> todayAddNum = homePageService.todayAddNum();
// Future<Integer> todayFinishNum = homePageService.todayFinishNum();
//
// JSONObject result = new JSONObject();
// result.put("needDoNum", needDoNum.get());
// result.put("expireNum", expireNum.get());
// result.put("todayAddNum" , todayAddNum.get());
// result.put("todayFinishNum", todayFinishNum.get());
//
// return R.data(result);
return homePageService.aboutMy();
Future<Integer> expireNum = homePageService.expireNum(taskUser,taskGroup,deptId,tenantId);
Future<Integer> needDoNum = homePageService.needDoNum(taskUser,taskGroup,deptId,tenantId);
Future<Integer> todayAddNum = homePageService.todayAddNum(deptId,tenantId);
Future<Integer> todayFinishNum = homePageService.todayFinishNum(deptId,tenantId);
JSONObject result = new JSONObject();
result.put("needDoNum", needDoNum.get());
result.put("expireNum", expireNum.get());
result.put("todayAddNum" , todayAddNum.get());
result.put("todayFinishNum", todayFinishNum.get());
return R.data(result);
// return homePageService.aboutMy();
}

@ -22,11 +22,11 @@ public interface IHomePageService {
R flowTakeTime();
Future<Integer> expireNum();
Future<Integer> expireNum(String taskUser,String taskGroup,String deptId,String tenantId);
Future<Integer> needDoNum();
Future<Integer> needDoNum(String taskUser,String taskGroup,String deptId,String tenantId);
Future<Integer> todayAddNum();
Future<Integer> todayAddNum(String deptId,String tenantId);
Future<Integer> todayFinishNum();
Future<Integer> todayFinishNum(String deptId,String tenantId);
}

@ -152,25 +152,18 @@ public class HomePageServiceImpl implements IHomePageService {
@Async
@Override
public Future<Integer> expireNum(){
String taskUser = WfTaskUtil.getTaskUser();
String taskGroup = WfTaskUtil.getCandidateGroup();
//当前获取登录人deptid
String deptId = AuthUtil.getDeptId();
public Future<Integer> expireNum(String taskUser,String taskGroup,String deptId,String tenantId){
List<Long> nowUserDepts = Func.toLongList(deptId);
//我的待办
TaskQuery taskQuery = taskService.createTaskQuery()
.orderByTaskCreateTime()
.desc()
.taskTenantId(WfTaskUtil.getTenantId())
.taskCandidateOrAssigned(taskUser)
.taskCandidateGroupIn(Func.toStrList(taskGroup))
.taskTenantId(tenantId)
.active();
// taskQuery.taskCandidateOrAssigned(taskUser)
// .taskCandidateGroupIn(Func.toStrList(taskGroup))
// ;
taskQuery.taskCandidateOrAssigned(taskUser)
.taskCandidateGroupIn(Func.toStrList(taskGroup))
;
List<Task> listNeedDo = taskQuery.list();
@ -195,23 +188,17 @@ public class HomePageServiceImpl implements IHomePageService {
@Async
@Override
public Future<Integer> needDoNum(){
String taskUser = WfTaskUtil.getTaskUser();
String taskGroup = WfTaskUtil.getCandidateGroup();
//当前获取登录人deptid
String deptId = AuthUtil.getDeptId();
public Future<Integer> needDoNum(String taskUser,String taskGroup,String deptId,String tenantId){
List<Long> nowUserDepts = Func.toLongList(deptId);
//1.我的待办
TaskQuery taskQuery = taskService.createTaskQuery()
.orderByTaskCreateTime()
.desc()
.taskTenantId(WfTaskUtil.getTenantId())
.taskCandidateOrAssigned(taskUser)
.taskCandidateGroupIn(Func.toStrList(taskGroup))
.taskTenantId(tenantId)
.active();
// taskQuery.taskCandidateOrAssigned(taskUser)
// .taskCandidateGroupIn(Func.toStrList(taskGroup))
taskQuery.taskCandidateOrAssigned(taskUser)
.taskCandidateGroupIn(Func.toStrList(taskGroup))
;
List<Task> listNeedDo = taskQuery.list();
@ -220,16 +207,14 @@ public class HomePageServiceImpl implements IHomePageService {
@Async
@Override
public Future<Integer> todayAddNum(){
public Future<Integer> todayAddNum(String deptId,String tenantId){
//当前获取登录人deptid
String deptId = AuthUtil.getDeptId();
List<Long> nowUserDepts = Func.toLongList(deptId);
//3.与我相关的新增
//3.1.获取今日新增的流程
HistoricProcessInstanceQuery thisDayStartProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
.processInstanceTenantId(WfTaskUtil.getTenantId())
.processInstanceTenantId(tenantId)
.startedAfter(DateUtil.toDate(LocalDate.now()));
@ -256,16 +241,13 @@ public class HomePageServiceImpl implements IHomePageService {
@Async
@Override
public Future<Integer> todayFinishNum(){
//当前获取登录人deptid
String deptId = AuthUtil.getDeptId();
public Future<Integer> todayFinishNum(String deptId,String tenantId){
List<Long> nowUserDepts = Func.toLongList(deptId);
//4.与我相关的今日完成
//4.1 获取今日完成的流程
HistoricProcessInstanceQuery thisDayEndProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
.processInstanceTenantId(WfTaskUtil.getTenantId())
.processInstanceTenantId(tenantId)
.finishedAfter(DateUtil.toDate(LocalDate.now()));
//4.2 遍历流程,得到流程发起人,只要流程发起人的dept在当前用户所属的dept列表中,就计算一次
int todayFinishNum = 0;

@ -1,19 +1,14 @@
package org.springblade.plugin.workbench.cache;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.feign.IFlowClient;
import org.springblade.system.entity.Menu;
import org.springblade.system.feign.ISysClient;
import java.util.List;
import java.util.Map;
import static org.springblade.core.cache.constant.CacheConstant.FLOW_CACHE;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
/**
* @Description

@ -0,0 +1,42 @@
package org.springblade.plugin.workbench.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.system.entity.AuthClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description 自动启动的工作流的原型信息
* @Author ytl
* @Date 2023/2/22 0022 13:06
*/
@NonDS
@RestController
@AllArgsConstructor
@RequestMapping("/autoProcess")
@Api(value = "自动启动的工作流的原型信息", tags = "自动启动的工作流的原型信息")
public class AutoStartProcessController extends BladeController {
// /**
// * 分页
// */
// @GetMapping("/list")
// @ApiOperationSupport(order = 1)
// @ApiOperation(value = "分页", notes = "传入autoStartModel")
// public R<IPage<AuthClient>> list(AuthClient authClient, Query query) {
// IPage<AuthClient> pages = clientService.page(Condition.getPage(query), Condition.getQueryWrapper(authClient));
// return R.data(pages);
// }
}

@ -7,8 +7,7 @@ import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.service.IBladeManMadeService;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workbench.service.IWorkBenchService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -30,7 +29,7 @@ import java.util.Map;
@Api(value = "工作台", tags = "工作台")
public class WorkBenchController extends BladeController {
private final IWorkBenchService workBenchService;
private final IBladeManMadeService bladeManMadeService;
private final IAutoStartModelService bladeManMadeService;
@GetMapping("/repeat")
@ApiOperationSupport(order = 1)

@ -13,13 +13,29 @@ import org.springblade.core.tool.utils.DateUtil;
*/
@Data
@TableName("blade_flow_man_made")
@TableName("blade_flow_autostart_model")
@EqualsAndHashCode(callSuper = true)
public class BladeManMade extends TenantEntity {
public class AutoStartModel extends TenantEntity {
private static final long serialVersionUID = 1L;
private String procInstId;
private Long processSeconds;
private Long applyUser;
//发起人角色名
private String applyRole;
private Long maintenanceCompany;
private Long management;
private Long taskParent;
private Long taskType;
private Long taskLevel;
private Long repeatMode;
}

@ -1,12 +1,12 @@
package org.springblade.plugin.workbench.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.entity.AutoStartModel;
/**
* @Description
* @Author ytl
* @Date 2023/2/20 0020 15:23
*/
public interface BladeManMadeMapper extends BaseMapper<BladeManMade> {
public interface BladeManMadeMapper extends BaseMapper<AutoStartModel> {
}

@ -1,7 +1,7 @@
package org.springblade.plugin.workbench.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import java.util.List;
import java.util.Map;
@ -11,6 +11,6 @@ import java.util.Map;
* @Author ytl
* @Date 2023/2/20 0020 15:36
*/
public interface IBladeManMadeService extends IService<BladeManMade> {
public interface IAutoStartModelService extends IService<AutoStartModel> {
List<Map<String,Object>> bladeManMadeVariabList();
}

@ -5,9 +5,9 @@ import lombok.AllArgsConstructor;
import org.flowable.engine.HistoryService;
import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.mapper.BladeManMadeMapper;
import org.springblade.plugin.workbench.service.IBladeManMadeService;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -22,16 +22,16 @@ import java.util.Map;
*/
@Service
@AllArgsConstructor
public class BladeManMadeServiceImpl extends BaseServiceImpl<BladeManMadeMapper, BladeManMade> implements IBladeManMadeService {
public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMapper, AutoStartModel> implements IAutoStartModelService {
private final HistoryService historyService;
@Override
public List<Map<String, Object>> bladeManMadeVariabList() {
List<BladeManMade> bladeManMades = baseMapper.selectList(Wrappers.lambdaQuery());
List<AutoStartModel> autoStartModels = baseMapper.selectList(Wrappers.lambdaQuery());
List<Map<String,Object>> maps = new ArrayList<>();
if(bladeManMades.size() > 0){
bladeManMades.forEach(bl ->{
if(autoStartModels.size() > 0){
autoStartModels.forEach(bl ->{
List<HistoricVariableInstance> variableList = historyService.createHistoricVariableInstanceQuery().processInstanceId(bl.getProcInstId()).list();
Map<String,Object> variable = new HashMap<>();
variableList.forEach(va ->{

@ -9,9 +9,9 @@ import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.enumutil.RepeatTypeEnum;
import org.springblade.plugin.workbench.service.IBladeManMadeService;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workbench.service.IWorkBenchService;
import org.springblade.plugin.workbench.util.RepeatOperation;
import org.springblade.system.cache.DictBizCache;
@ -35,7 +35,7 @@ public class WorkBenchServiceImpl implements IWorkBenchService {
private final RuntimeService runtimeService;
private final IBladeManMadeService bladeManMadeService;
private final IAutoStartModelService bladeManMadeService;
private final HistoryService historyService;
@ -103,11 +103,11 @@ public class WorkBenchServiceImpl implements IWorkBenchService {
@Override
public void getTaskToRepeat(){
List<BladeManMade> list = bladeManMadeService.list();
List<AutoStartModel> list = bladeManMadeService.list();
Map<String,List<Map<String,Object>>> maps = new HashMap<>();
if(list.size() > 0){
for(BladeManMade bl : list){
for(AutoStartModel bl : list){
//历史流程变量
Map<String,Object> processVariables = new HashMap<>();
List<HistoricVariableInstance> list1 = historyService.createHistoricVariableInstanceQuery().processInstanceId(bl.getProcInstId()).list();

@ -3,7 +3,6 @@ package org.springblade.plugin.workflow.process.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Sets;
import lombok.AllArgsConstructor;
@ -41,8 +40,8 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.plugin.workbench.cache.FlowCache;
import org.springblade.plugin.workbench.entity.BladeManMade;
import org.springblade.plugin.workbench.service.IBladeManMadeService;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springblade.plugin.workflow.core.constant.WfExtendConstant;
import org.springblade.plugin.workflow.core.utils.ObjectUtil;
import org.springblade.plugin.workflow.core.utils.WfModelUtil;
@ -93,7 +92,7 @@ public class WfProcessService implements IWfProcessService {
private final IUserSearchClient userSearchService;
private final IBladeManMadeService bladeManMadeService;
private final IAutoStartModelService autoStartModelService;
private final RedisTemplate redisTemplate;
@ -198,13 +197,22 @@ public class WfProcessService implements IWfProcessService {
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, definition.getKey(), variables);
//将新增的流程实例id保存到blade_flow_man_made
BladeManMade bladeManMade = new BladeManMade();
bladeManMade.setProcInstId(processInstance.getId());
AutoStartModel autoStartModel = new AutoStartModel();
autoStartModel.setProcInstId(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);
bladeManMade.setProcessSeconds(between.getSeconds());
bladeManMadeService.save(bladeManMade);
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()));
autoStartModelService.save(autoStartModel);
FlowCache.clearBladeManMadeCache();
return handleProcessInstance(processInstance, variables);
}
@ -213,7 +221,7 @@ public class WfProcessService implements IWfProcessService {
//判断该类型的流程是否已经发起过,false:有重复的,true:没重复
private boolean isNewProcess(Map<String, Object> variables){
variables.remove("qiwangwanchengshijian");
boolean b = false;
List<Map<String, Object>> processInstanceVariable = FlowCache.getProcessInstanceVariable();
for(Map<String,Object> hi : processInstanceVariable){
@ -234,6 +242,9 @@ public class WfProcessService implements IWfProcessService {
Iterator<Map.Entry<String, Object>> iterator = entries.iterator();
while(iterator.hasNext()){
Map.Entry<String, Object> next = iterator.next();
if(StringUtils.equals(next.getKey(),"qiwangwanchengshijian")){
continue;
}
if(!Func.equals(next.getValue(),map2.get(next.getKey()))){
return true;
}

Loading…
Cancel
Save