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