Skip to content

Commit 6aba222

Browse files
committed
Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts: # yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/action/IotDeviceServiceInvokeSceneRuleAction.java
2 parents 8156e44 + 4fed759 commit 6aba222

7 files changed

Lines changed: 26 additions & 30 deletions

File tree

yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import cn.hutool.core.collection.CollUtil;
44
import cn.hutool.core.collection.ListUtil;
5-
import cn.hutool.core.date.DatePattern;
65
import cn.hutool.core.date.DateUtil;
76
import cn.hutool.core.lang.Assert;
87
import cn.hutool.core.map.MapUtil;
@@ -14,7 +13,6 @@
1413
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
1514
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
1615
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
17-
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
1816
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelMetaInfoVO;
1917
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
2018
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*;
@@ -73,7 +71,6 @@
7371
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
7472
import static cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmApprovalDetailRespVO.ActivityNode;
7573
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
76-
import static cn.iocoder.yudao.module.bpm.enums.task.BpmReasonEnum.REJECT_CHILD_PROCESS;
7774
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.START_USER_NODE_ID;
7875
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_NEED_SIMULATE_PREFIX;
7976
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.parseNodeType;
@@ -237,8 +234,9 @@ public BpmApprovalDetailRespVO getApprovalDetail(Long loginUserId, BpmApprovalDe
237234
needSimulateTaskDefKeysByReturn.add(StrUtil.removePrefix(key, PROCESS_INSTANCE_VARIABLE_NEED_SIMULATE_PREFIX)));
238235
}
239236
// 移除运行中的节点,运行中的节点无需预测
240-
// TODO @jason:是不是 foreach runActivityNodes,然后移除 needSimulateTaskDefKeysByReturn 更好?(理解成本低一点)
241-
CollectionUtils.convertList(runActivityNodes, ActivityNode::getId).forEach(needSimulateTaskDefKeysByReturn::remove);
237+
if (CollUtil.isNotEmpty(runActivityNodes)) {
238+
runActivityNodes.forEach( activityNode -> needSimulateTaskDefKeysByReturn.remove(activityNode.getId()));
239+
}
242240

243241
// 3.3 预测未运行节点的审批信息
244242
List<ActivityNode> simulateActivityNodes = getSimulateApproveNodeList(startUserId, bpmnModel,

yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import cn.hutool.core.collection.CollUtil;
44
import cn.hutool.core.convert.Convert;
5-
import cn.hutool.core.date.DateUtil;
65
import cn.hutool.core.lang.Assert;
76
import cn.hutool.core.util.*;
87
import cn.hutool.extra.spring.SpringUtil;
@@ -939,9 +938,10 @@ public void returnTask(Long userId, BpmnModel bpmnModel, Task currentTask, FlowE
939938

940939
// 3. 构建需要预测的任务流程变量
941940
// TODO @jason:【驳回预测相关】是不是搞成一个变量,里面是 set 更简洁一点呀?
942-
Set<String> taskDefinitionKeyList = getNeedSimulateTaskDefinitionKeys(bpmnModel, currentTask, targetElement);
943-
Map<String, Object> needSimulateVariables = convertMap(taskDefinitionKeyList,
944-
taskId -> StrUtil.concat(false, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_NEED_SIMULATE_PREFIX, taskId), item -> Boolean.TRUE);
941+
Set<String> needSimulateTaskDefinitionKeys = getNeedSimulateTaskDefinitionKeys(bpmnModel, currentTask, targetElement);
942+
Map<String, Object> needSimulateVariables = convertMap(needSimulateTaskDefinitionKeys,
943+
key -> StrUtil.concat(false, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_NEED_SIMULATE_PREFIX, key), item -> Boolean.TRUE);
944+
945945

946946
// 4. 执行驳回
947947
// 使用 moveExecutionsToSingleActivityId 替换 moveActivityIdsToSingleActivityId 原因:
@@ -962,22 +962,22 @@ private Set<String> getNeedSimulateTaskDefinitionKeys(BpmnModel bpmnModel, Task
962962
// 1. 获取需要预测的任务的 definition key。因为当前任务还没完成,也需要预测
963963
Set<String> taskDefinitionKeys = CollUtil.newHashSet(currentTask.getTaskDefinitionKey());
964964

965-
// 2.1 从已结束任务中找到要回退的目标任务,按时间倒序最近的一个目标任务
965+
// 2.1 获取已结束任务按时间倒序排序
966966
List<HistoricTaskInstance> endTaskList = CollectionUtils.filterList(
967967
getTaskListByProcessInstanceId(currentTask.getProcessInstanceId(), Boolean.FALSE),
968968
item -> item.getEndTime() != null);
969-
// 2.2 遍历已结束的任务,找到在 targetTask 之后生成的任务,且串行可达的任务
969+
// 2.2 从结束任务中找到最近一个的目标任务
970970
HistoricTaskInstance targetTask = findFirst(endTaskList,
971971
item -> item.getTaskDefinitionKey().equals(targetElement.getId()));
972-
// TODO @jason:【驳回预测相关】是不是 if targetTask 先判空?
972+
if (targetTask == null) {
973+
return taskDefinitionKeys;
974+
}
975+
// 2.3 遍历已结束的任务,找到在 targetTask 之后生成的任务,且串行可达的任务
973976
endTaskList.forEach(item -> {
974977
FlowElement element = getFlowElementById(bpmnModel, item.getTaskDefinitionKey());
975-
// 如果已结束的任务在回退目标节点之后生成,且串行可达,则标记为需要预算节点
978+
// 如果已结束的任务在回退目标节点之后生成,且串行可达,则加到需要预测节点中
976979
// TODO 串行可达的方法需要和判断可回退节点 validateTargetTaskCanReturn 分开吗? 并行网关可能会有问题。
977-
// TODO @jason:【驳回预测相关】这里是不是判断 element 哈?
978-
if (targetTask != null
979-
// TODO @jason:【驳回预测相关】这里直接 createTime 的 compare 更简单?因为不太会出现空哈。
980-
&& DateUtil.compare(item.getCreateTime(), targetTask.getCreateTime()) > 0
980+
if (item.getCreateTime().compareTo(targetTask.getCreateTime()) > 0
981981
&& BpmnModelUtils.isSequentialReachable(element, targetElement, null)) {
982982
taskDefinitionKeys.add(item.getTaskDefinitionKey());
983983
}

yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ export function useFormSchema(): VbenFormSchema[] {
124124
component: 'InputNumber',
125125
componentProps: {
126126
min: 0,
127-
controlsPosition: 'right',
128127
placeholder: '请输入${comment}',
129128
},
130129
#end
@@ -326,7 +325,6 @@ export function use${subSimpleClassName}FormSchema(): VbenFormSchema[] {
326325
component: 'InputNumber',
327326
componentProps: {
328327
min: 0,
329-
controlsPosition: 'right',
330328
placeholder: '请输入${comment}',
331329
},
332330
#end
@@ -560,7 +558,6 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${api
560558
component: 'InputNumber',
561559
componentProps: {
562560
min: 0,
563-
controlsPosition: 'right',
564561
placeholder: '请输入${comment}',
565562
},
566563
#end

yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/form.vue.vm

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,7 @@ const [Modal, modalApi] = useVbenModal({
127127
try {
128128
formData.value = await get${simpleClassName}(data.id);
129129
// 设置到 values
130-
if (formData.value) {
131-
await formApi.setValues(formData.value);
132-
}
130+
await formApi.setValues(formData.value);
133131
} finally {
134132
modalApi.unlock();
135133
}

yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,9 @@ export function useFormSchema(): VbenFormSchema[] {
124124
component: 'InputNumber',
125125
componentProps: {
126126
min: 0,
127-
controlsPosition: 'right',
128127
placeholder: '请输入${comment}',
128+
controlsPosition: 'right',
129+
class: '!w-full',
129130
},
130131
#end
131132
},
@@ -326,8 +327,9 @@ export function use${subSimpleClassName}FormSchema(): VbenFormSchema[] {
326327
component: 'InputNumber',
327328
componentProps: {
328329
min: 0,
329-
controlsPosition: 'right',
330330
placeholder: '请输入${comment}',
331+
controlsPosition: 'right',
332+
class: '!w-full',
331333
},
332334
#end
333335
},
@@ -560,8 +562,9 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${api
560562
component: 'InputNumber',
561563
componentProps: {
562564
min: 0,
563-
controlsPosition: 'right',
564565
placeholder: '请输入${comment}',
566+
controlsPosition: 'right',
567+
class: '!w-full',
565568
},
566569
#end
567570
},

yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,7 @@ const [Modal, modalApi] = useVbenModal({
127127
try {
128128
formData.value = await get${simpleClassName}(data.id);
129129
// 设置到 values
130-
if (formData.value) {
131-
await formApi.setValues(formData.value);
132-
}
130+
await formApi.setValues(formData.value);
133131
} finally {
134132
modalApi.unlock();
135133
}

yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/action/IotDeviceServiceInvokeSceneRuleAction.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleActionTypeEnum;
1111
import cn.iocoder.yudao.module.iot.service.device.IotDeviceService;
1212
import cn.iocoder.yudao.module.iot.service.device.message.IotDeviceMessageService;
13+
import jakarta.annotation.Resource;
1314
import lombok.extern.slf4j.Slf4j;
1415
import org.springframework.stereotype.Component;
1516

16-
import javax.annotation.Resource;
1717
import java.util.Collections;
18+
import java.util.HashMap;
1819
import java.util.List;
20+
import java.util.Map;
1921

2022
/**
2123
* IoT 设备服务调用的 {@link IotSceneRuleAction} 实现类

0 commit comments

Comments
 (0)