Prechádzať zdrojové kódy

赋值流程id方法

24282 1 rok pred
rodič
commit
4399c896aa

+ 25 - 1
hx-flow/src/main/java/com/fjhx/flow/service/flow/FlowExampleService.java

@@ -11,8 +11,10 @@ import com.fjhx.flow.entity.flow.vo.FlowExampleVo;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.service.BaseService;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.function.BiConsumer;
+import java.util.function.Function;
 
 
 /**
@@ -65,9 +67,31 @@ public interface FlowExampleService extends BaseService<FlowExample> {
      */
     void setStartData(SetStartDataDto dto);
 
+
+    /**
+     * 赋值流程id
+     */
+    <T> void setFlowId(List<T> list, Function<T, Long> getIdFun, BiConsumer<T, Long> setFun);
+
+    /**
+     * 赋值流程id
+     */
+    default <T extends BaseIdPo> void setFlowId(List<T> list, BiConsumer<T, Long> setFun) {
+        setFlowId(list, BaseIdPo::getId, setFun);
+    }
+
+    /**
+     * 赋值流程id
+     */
+    default <T extends BaseIdPo> void setFlowId(T list, BiConsumer<T, Long> setFun) {
+        setFlowId(Collections.singletonList(list), BaseIdPo::getId, setFun);
+    }
+
     /**
      * 赋值流程id
      */
-    <T extends BaseIdPo> void setFlowId(List<T> list, BiConsumer<T, Long> fun);
+    default <T> void setFlowId(T list, Function<T, Long> getIdFun, BiConsumer<T, Long> setFun) {
+        setFlowId(Collections.singletonList(list), getIdFun, setFun);
+    }
 
 }

+ 3 - 4
hx-flow/src/main/java/com/fjhx/flow/service/flow/impl/FlowExampleServiceImpl.java

@@ -213,15 +213,14 @@ public class FlowExampleServiceImpl extends ServiceImpl<FlowExampleMapper, FlowE
     }
 
     @Override
-    public <T extends BaseIdPo> void setFlowId(List<T> list, BiConsumer<T, Long> fun) {
-
+    public <T> void setFlowId(List<T> list, Function<T, Long> getIdFun, BiConsumer<T, Long> setFun) {
         if (list.size() == 0) {
             return;
         }
 
         DynamicDataSourceContextHolder.push(BaseSourceConstant.BASE);
 
-        List<Long> idList = list.stream().map(BaseIdPo::getId).distinct().collect(Collectors.toList());
+        List<Long> idList = list.stream().map(getIdFun).distinct().collect(Collectors.toList());
         List<FlowExample> flowExampleList = list(q -> q.in(FlowExample::getBusinessId, idList));
 
         if (flowExampleList.size() == 0) {
@@ -232,7 +231,7 @@ public class FlowExampleServiceImpl extends ServiceImpl<FlowExampleMapper, FlowE
         Map<Long, Long> map = flowExampleList.stream().collect(
                 Collectors.toMap(FlowExample::getBusinessId, BaseIdPo::getId));
 
-        list.forEach(item -> fun.accept(item, map.get(item.getId())));
+        list.forEach(item -> setFun.accept(item, map.get(getIdFun.apply(item))));
 
         DynamicDataSourceContextHolder.poll();
     }