update 优化 使用工具类简化代码

This commit is contained in:
疯狂的狮子Li
2026-05-21 09:49:17 +08:00
parent a95790b465
commit 67cf459da7
11 changed files with 46 additions and 46 deletions
@@ -189,7 +189,7 @@ public class LambdaCrudChainWrapper<T, V> extends AbstractLambdaWrapper<T, Lambd
* @return this * @return this
*/ */
public LambdaCrudChainWrapper<T, V> setIfText(SFunction<T, ?> column, String value) { public LambdaCrudChainWrapper<T, V> setIfText(SFunction<T, ?> column, String value) {
return set(org.dromara.common.core.utils.StringUtils.isNotBlank(value), column, value); return set(StringUtils.isNotBlank(value), column, value);
} }
/** /**
@@ -1,13 +1,13 @@
package org.dromara.demo.service.impl; package org.dromara.demo.service.impl;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import org.apache.fesod.sheet.write.metadata.WriteSheet; import org.apache.fesod.sheet.write.metadata.WriteSheet;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.excel.core.DropDownOptions; import org.dromara.common.excel.core.DropDownOptions;
import org.dromara.common.excel.utils.ExcelBuilder; import org.dromara.common.excel.utils.ExcelBuilder;
import org.dromara.common.excel.utils.ExcelWriterWrapper; import org.dromara.common.excel.utils.ExcelWriterWrapper;
@@ -18,7 +18,6 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 导出下拉框Excel示例 * 导出下拉框Excel示例
@@ -109,12 +108,12 @@ public class ExportExcelServiceImpl implements IExportExcelService {
private String buildOptions(List<DemoCityData> cityDataList, Integer id) { private String buildOptions(List<DemoCityData> cityDataList, Integer id) {
Map<Integer, List<DemoCityData>> groupByIdMap = Map<Integer, List<DemoCityData>> groupByIdMap =
cityDataList.stream().collect(Collectors.groupingBy(DemoCityData::getId)); StreamUtils.groupByKey(cityDataList, DemoCityData::getId);
if (groupByIdMap.containsKey(id)) { if (groupByIdMap.containsKey(id)) {
DemoCityData demoCityData = groupByIdMap.get(id).get(0); DemoCityData demoCityData = groupByIdMap.get(id).get(0);
return DropDownOptions.createOptionValue(demoCityData.getName(), demoCityData.getId()); return DropDownOptions.createOptionValue(demoCityData.getName(), demoCityData.getId());
} else { } else {
return StrUtil.EMPTY; return StringUtils.EMPTY;
} }
} }
@@ -201,7 +200,7 @@ public class ExportExcelServiceImpl implements IExportExcelService {
*/ */
private void selectParentData(List<DemoCityData> parentList, List<DemoCityData> sonList) { private void selectParentData(List<DemoCityData> parentList, List<DemoCityData> sonList) {
Map<Integer, List<DemoCityData>> parentGroupByIdMap = Map<Integer, List<DemoCityData>> parentGroupByIdMap =
parentList.stream().collect(Collectors.groupingBy(DemoCityData::getId)); StreamUtils.groupByKey(parentList, DemoCityData::getId);
sonList.forEach(everySon -> { sonList.forEach(everySon -> {
if (parentGroupByIdMap.containsKey(everySon.getPid())) { if (parentGroupByIdMap.containsKey(everySon.getPid())) {
@@ -1,11 +1,11 @@
package org.dromara.job.snailjob; package org.dromara.job.snailjob;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.aizuda.snailjob.model.dto.ExecuteResult; import com.aizuda.snailjob.model.dto.ExecuteResult;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.json.utils.JsonUtils;
import org.dromara.job.entity.BillDTO; import org.dromara.job.entity.BillDTO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -25,8 +25,8 @@ public class AlipayBillTask {
public ExecuteResult jobExecute(JobArgs jobArgs) throws InterruptedException { public ExecuteResult jobExecute(JobArgs jobArgs) throws InterruptedException {
// 设置清算日期 // 设置清算日期
String settlementDate = (String) jobArgs.getWfContext().get("settlementDate"); String settlementDate = (String) jobArgs.getWfContext().get("settlementDate");
if (StrUtil.equals(settlementDate, "sysdate")) { if (StringUtils.equals(settlementDate, "sysdate")) {
settlementDate = DateUtil.today(); settlementDate = DateUtils.getDate();
} }
BillDTO billDTO = new BillDTO(23456789L, "alipay", settlementDate, new BigDecimal("2345.67")); BillDTO billDTO = new BillDTO(23456789L, "alipay", settlementDate, new BigDecimal("2345.67"));
// 把billDTO对象放入上下文进行传递 // 把billDTO对象放入上下文进行传递
@@ -1,10 +1,10 @@
package org.dromara.job.snailjob; package org.dromara.job.snailjob;
import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.aizuda.snailjob.model.dto.ExecuteResult; import com.aizuda.snailjob.model.dto.ExecuteResult;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.json.utils.JsonUtils;
import org.dromara.job.entity.BillDTO; import org.dromara.job.entity.BillDTO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -25,14 +25,14 @@ public class SummaryBillTask {
// 获得微信账单 // 获得微信账单
BigDecimal wechatAmount = BigDecimal.valueOf(0); BigDecimal wechatAmount = BigDecimal.valueOf(0);
String wechat = (String) jobArgs.getWfContext("wechat"); String wechat = (String) jobArgs.getWfContext("wechat");
if (StrUtil.isNotBlank(wechat)) { if (StringUtils.isNotBlank(wechat)) {
BillDTO wechatBillDTO = JsonUtils.parseObject(wechat, BillDTO.class); BillDTO wechatBillDTO = JsonUtils.parseObject(wechat, BillDTO.class);
wechatAmount = wechatBillDTO.billAmount(); wechatAmount = wechatBillDTO.billAmount();
} }
// 获得支付宝账单 // 获得支付宝账单
BigDecimal alipayAmount = BigDecimal.valueOf(0); BigDecimal alipayAmount = BigDecimal.valueOf(0);
String alipay = (String) jobArgs.getWfContext("alipay"); String alipay = (String) jobArgs.getWfContext("alipay");
if (StrUtil.isNotBlank(alipay)) { if (StringUtils.isNotBlank(alipay)) {
BillDTO alipayBillDTO = JsonUtils.parseObject(alipay, BillDTO.class); BillDTO alipayBillDTO = JsonUtils.parseObject(alipay, BillDTO.class);
alipayAmount = alipayBillDTO.billAmount(); alipayAmount = alipayBillDTO.billAmount();
} }
@@ -8,11 +8,11 @@ import com.aizuda.snailjob.client.job.core.annotation.MapExecutor;
import com.aizuda.snailjob.client.job.core.dto.MapArgs; import com.aizuda.snailjob.client.job.core.dto.MapArgs;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.aizuda.snailjob.model.dto.ExecuteResult; import com.aizuda.snailjob.model.dto.ExecuteResult;
import org.dromara.common.core.utils.StreamUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
/** /**
@@ -30,9 +30,8 @@ public class TestMapJobAnnotation {
public ExecuteResult doJobMapExecute(MapArgs mapArgs, MapHandler mapHandler) { public ExecuteResult doJobMapExecute(MapArgs mapArgs, MapHandler mapHandler) {
// 生成1~200数值并分片 // 生成1~200数值并分片
int partitionSize = 50; int partitionSize = 50;
List<List<Integer>> partition = IntStream.rangeClosed(1, 200) List<Integer> sourceList = IntStream.rangeClosed(1, 200).boxed().toList();
.boxed() List<List<Integer>> partition = StreamUtils.groupByKey(sourceList, i -> (i - 1) / partitionSize)
.collect(Collectors.groupingBy(i -> (i - 1) / partitionSize))
.values() .values()
.stream() .stream()
.toList(); .toList();
@@ -10,11 +10,11 @@ import com.aizuda.snailjob.client.job.core.dto.MapArgs;
import com.aizuda.snailjob.client.job.core.dto.ReduceArgs; import com.aizuda.snailjob.client.job.core.dto.ReduceArgs;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.aizuda.snailjob.model.dto.ExecuteResult; import com.aizuda.snailjob.model.dto.ExecuteResult;
import org.dromara.common.core.utils.StreamUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
/** /**
@@ -31,12 +31,11 @@ public class TestMapReduceAnnotation1 {
@MapExecutor @MapExecutor
public ExecuteResult rootMapExecute(MapArgs mapArgs, MapHandler mapHandler) { public ExecuteResult rootMapExecute(MapArgs mapArgs, MapHandler mapHandler) {
int partitionSize = 50; int partitionSize = 50;
List<List<Integer>> partition = IntStream.rangeClosed(1, 200) List<Integer> sourceList = IntStream.rangeClosed(1, 200).boxed().toList();
.boxed() List<List<Integer>> partition = StreamUtils.groupByKey(sourceList, i -> (i - 1) / partitionSize)
.collect(Collectors.groupingBy(i -> (i - 1) / partitionSize)) .values()
.values() .stream()
.stream() .toList();
.toList();
SnailJobLog.REMOTE.info("端口:{}完成分配任务", SpringUtil.getProperty("server.port")); SnailJobLog.REMOTE.info("端口:{}完成分配任务", SpringUtil.getProperty("server.port"));
return mapHandler.doMap(partition, "doCalc"); return mapHandler.doMap(partition, "doCalc");
} }
@@ -1,11 +1,11 @@
package org.dromara.job.snailjob; package org.dromara.job.snailjob;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.aizuda.snailjob.model.dto.ExecuteResult; import com.aizuda.snailjob.model.dto.ExecuteResult;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.json.utils.JsonUtils;
import org.dromara.job.entity.BillDTO; import org.dromara.job.entity.BillDTO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -26,8 +26,8 @@ public class WechatBillTask {
// 从上下文中获得清算日期并设置,如果上下文中清算日期 // 从上下文中获得清算日期并设置,如果上下文中清算日期
// 是sysdate设置为当前日期;否则取管理页面设置的值 // 是sysdate设置为当前日期;否则取管理页面设置的值
String settlementDate = (String) jobArgs.getWfContext().get("settlementDate"); String settlementDate = (String) jobArgs.getWfContext().get("settlementDate");
if (StrUtil.equals(settlementDate, "sysdate")) { if (StringUtils.equals(settlementDate, "sysdate")) {
settlementDate = DateUtil.today(); settlementDate = DateUtils.getDate();
} }
BillDTO billDTO = new BillDTO(123456789L, "wechat", settlementDate, new BigDecimal("1234.56")); BillDTO billDTO = new BillDTO(123456789L, "wechat", settlementDate, new BigDecimal("1234.56"));
// 把billDTO对象放入上下文进行传递 // 把billDTO对象放入上下文进行传递
@@ -5,7 +5,6 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.TypeReference; import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
@@ -48,6 +47,8 @@ import java.util.*;
@RequiredArgsConstructor @RequiredArgsConstructor
public class WorkflowGlobalListener implements GlobalListener { public class WorkflowGlobalListener implements GlobalListener {
private static final String NODE_KEY_SEPARATOR = ":";
private final IFlwTaskService flwTaskService; private final IFlwTaskService flwTaskService;
private final IFlwInstanceService flwInstanceService; private final IFlwInstanceService flwInstanceService;
private final FlowProcessEventHandler flowProcessEventHandler; private final FlowProcessEventHandler flowProcessEventHandler;
@@ -138,7 +139,7 @@ public class WorkflowGlobalListener implements GlobalListener {
* @param taskStatus 任务状态 * @param taskStatus 任务状态
*/ */
private void processTaskPermission(Map<String, Object> variable, Task flowTask, String taskStatus) { private void processTaskPermission(Map<String, Object> variable, Task flowTask, String taskStatus) {
String nodeKey = taskStatus + StrUtil.COLON + flowTask.getNodeCode(); String nodeKey = taskStatus + NODE_KEY_SEPARATOR + flowTask.getNodeCode();
// 检查是否存在状态相关的变量 // 检查是否存在状态相关的变量
if (!variable.containsKey(nodeKey)) { if (!variable.containsKey(nodeKey)) {
@@ -157,9 +158,9 @@ public class WorkflowGlobalListener implements GlobalListener {
} }
// 分割用户ID并设置权限列表 // 分割用户ID并设置权限列表
String[] userIdArray = userIds.split(StringUtils.SEPARATOR); List<String> userIdList = StringUtils.str2List(userIds, StringUtils.SEPARATOR, true, true);
if (userIdArray.length > 0) { if (CollUtil.isNotEmpty(userIdList)) {
flowTask.setPermissionList(List.of(userIdArray)); flowTask.setPermissionList(userIdList);
// 移除已处理的状态变量 // 移除已处理的状态变量
variable.remove(nodeKey); variable.remove(nodeKey);
FlowEngine.insService().removeVariables(flowTask.getInstanceId(), nodeKey); FlowEngine.insService().removeVariables(flowTask.getInstanceId(), nodeKey);
@@ -259,7 +259,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
} else if (VariablesEnum.class.getSimpleName().equals(code)) { } else if (VariablesEnum.class.getSimpleName().equals(code)) {
// 解析自定义参数 // 解析自定义参数
// 将 key=value 字符串拆分为 Map // 将 key=value 字符串拆分为 Map
Map<String, String> variables = Arrays.stream(StringUtils.split(value, StringUtils.SEPARATOR)) Map<String, String> variables = StringUtils.str2List(value, StringUtils.SEPARATOR, true, true).stream()
.map(s -> StringUtils.split(s, "=")) .map(s -> StringUtils.split(s, "="))
.filter(arr -> arr.length == 2) .filter(arr -> arr.length == 2)
.collect(Collectors.toMap(arr -> arr[0], arr -> arr[1])); .collect(Collectors.toMap(arr -> arr[0], arr -> arr[1]));
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.DateUtils;
@@ -45,6 +44,8 @@ import java.util.stream.Collectors;
public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, HandlerSelectService { public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, HandlerSelectService {
private static final String DEFAULT_GROUP_NAME = "默认分组"; private static final String DEFAULT_GROUP_NAME = "默认分组";
private static final String STORAGE_ID_SEPARATOR = ":";
private final TaskAssigneeService taskAssigneeService; private final TaskAssigneeService taskAssigneeService;
private final UserService userService; private final UserService userService;
private final DeptService deptService; private final DeptService deptService;
@@ -208,7 +209,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
return List.of(); return List.of();
} }
Map<TaskAssigneeEnum, List<String>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); Map<TaskAssigneeEnum, List<String>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
for (String storageId : storageIds.split(StringUtils.SEPARATOR)) { for (String storageId : StringUtils.str2List(storageIds, StringUtils.SEPARATOR, true, true)) {
Pair<TaskAssigneeEnum, String> parsed = this.parseStorageId(storageId); Pair<TaskAssigneeEnum, String> parsed = this.parseStorageId(storageId);
if (parsed != null) { if (parsed != null) {
typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue()); typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());
@@ -311,11 +312,11 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
return Pair.of(TaskAssigneeEnum.SPEL, storageId); return Pair.of(TaskAssigneeEnum.SPEL, storageId);
} }
try { try {
String[] parts = storageId.split(StrUtil.COLON, 2); String[] parts = storageId.split(STORAGE_ID_SEPARATOR, 2);
if (parts.length < 2) { if (parts.length < 2) {
return Pair.of(TaskAssigneeEnum.USER, parts[0]); return Pair.of(TaskAssigneeEnum.USER, parts[0]);
} else { } else {
TaskAssigneeEnum type = TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON); TaskAssigneeEnum type = TaskAssigneeEnum.fromCode(parts[0] + STORAGE_ID_SEPARATOR);
return Pair.of(type, parts[1]); return Pair.of(type, parts[1]);
} }
} catch (Exception e) { } catch (Exception e) {
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.lock.annotation.Lock4j; import com.baomidou.lock.annotation.Lock4j;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -77,6 +76,8 @@ import static org.dromara.workflow.common.constant.FlowConstant.*;
@Service @Service
public class FlwTaskServiceImpl implements IFlwTaskService { public class FlwTaskServiceImpl implements IFlwTaskService {
private static final String NODE_KEY_SEPARATOR = ":";
private final TaskService taskService; private final TaskService taskService;
private final InsService insService; private final InsService insService;
private final DefService defService; private final DefService defService;
@@ -311,17 +312,17 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
if (StringUtils.isNotBlank(userIds)) { if (StringUtils.isNotBlank(userIds)) {
Set<String> hashSet = new HashSet<>(); Set<String> hashSet = new HashSet<>();
//弹窗传入的选人 //弹窗传入的选人
List<String> popUserIds = Arrays.asList(entry.getValue().toString().split(StringUtils.SEPARATOR)); List<String> popUserIds = StringUtils.str2List(entry.getValue().toString(), StringUtils.SEPARATOR, true, true);
//已有的选人 //已有的选人
List<String> variableUserIds = Arrays.asList(userIds.split(StringUtils.SEPARATOR)); List<String> variableUserIds = StringUtils.str2List(userIds, StringUtils.SEPARATOR, true, true);
hashSet.addAll(popUserIds); hashSet.addAll(popUserIds);
hashSet.addAll(variableUserIds); hashSet.addAll(variableUserIds);
map.put(TaskStatusEnum.PASS.getStatus() + StrUtil.COLON + entry.getKey(), StringUtils.joinComma(hashSet)); map.put(TaskStatusEnum.PASS.getStatus() + NODE_KEY_SEPARATOR + entry.getKey(), StringUtils.joinComma(hashSet));
map.put(TaskStatusEnum.BACK.getStatus() + StrUtil.COLON + entry.getKey(), StringUtils.joinComma(hashSet)); map.put(TaskStatusEnum.BACK.getStatus() + NODE_KEY_SEPARATOR + entry.getKey(), StringUtils.joinComma(hashSet));
} }
} else { } else {
map.put(TaskStatusEnum.PASS.getStatus() + StrUtil.COLON + entry.getKey(), entry.getValue()); map.put(TaskStatusEnum.PASS.getStatus() + NODE_KEY_SEPARATOR + entry.getKey(), entry.getValue());
map.put(TaskStatusEnum.BACK.getStatus() + StrUtil.COLON + entry.getKey(), entry.getValue()); map.put(TaskStatusEnum.BACK.getStatus() + NODE_KEY_SEPARATOR + entry.getKey(), entry.getValue());
} }
} }
return map; return map;
@@ -838,7 +839,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
// 操作执行成功后再发送消息 // 操作执行成功后再发送消息
if (result && CollUtil.isNotEmpty(bo.getMessageType())) { if (result && CollUtil.isNotEmpty(bo.getMessageType())) {
List<Long> userIdList = new ArrayList<>(); List<Long> userIdList = new ArrayList<>();
if (StrUtil.isNotBlank(bo.getUserId())) { if (StringUtils.isNotBlank(bo.getUserId())) {
userIdList.add(Convert.toLong(bo.getUserId())); userIdList.add(Convert.toLong(bo.getUserId()));
} }
if (CollUtil.isNotEmpty(bo.getUserIds())) { if (CollUtil.isNotEmpty(bo.getUserIds())) {