|
@@ -43,10 +43,7 @@ import org.springblade.common.utils.BaseUtils;
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
import org.springblade.core.tool.utils.*;
|
|
import org.springblade.core.tool.utils.*;
|
|
import org.springblade.manager.bean.TableInfo;
|
|
import org.springblade.manager.bean.TableInfo;
|
|
-import org.springblade.manager.dto.Coords;
|
|
|
|
-import org.springblade.manager.dto.ElementData;
|
|
|
|
-import org.springblade.manager.dto.FormData;
|
|
|
|
-import org.springblade.manager.dto.LocalVariable;
|
|
|
|
|
|
+import org.springblade.manager.dto.*;
|
|
import org.springblade.manager.entity.Formula;
|
|
import org.springblade.manager.entity.Formula;
|
|
import org.springblade.manager.entity.WbsTreeContract;
|
|
import org.springblade.manager.entity.WbsTreeContract;
|
|
import org.springblade.manager.formula.NodeTable;
|
|
import org.springblade.manager.formula.NodeTable;
|
|
@@ -55,6 +52,7 @@ import org.springblade.manager.formula.impl.TableElementConverter;
|
|
import org.springblade.manager.utils.FileUtils;
|
|
import org.springblade.manager.utils.FileUtils;
|
|
import org.springblade.manager.vo.BaseInfo;
|
|
import org.springblade.manager.vo.BaseInfo;
|
|
import org.springblade.manager.vo.InterimPaymentCertificate;
|
|
import org.springblade.manager.vo.InterimPaymentCertificate;
|
|
|
|
+import org.springblade.manager.vo.MeterTree;
|
|
import org.springblade.manager.vo.WbsFormElementVO;
|
|
import org.springblade.manager.vo.WbsFormElementVO;
|
|
import reactor.core.publisher.Mono;
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
@@ -441,6 +439,30 @@ public class FormulaUtils {
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public static <K,T> Map<K, TreeNode<T>> list2TreeNode(Function<TreeNode<T>,K> keyMapper,List<T> list,Function<T,TreeNode<T>> fc,Function<TreeNode<T>,K> classifier){
|
|
|
|
+ Map<K, TreeNode<T>> mTreeMap = new HashMap<>();
|
|
|
|
+ if (Func.isNotEmpty(list)) {
|
|
|
|
+ for (T mt : list) {
|
|
|
|
+ TreeNode<T> treeNode = fc.apply(mt);
|
|
|
|
+ mTreeMap.put(keyMapper.apply(treeNode), treeNode);
|
|
|
|
+ }
|
|
|
|
+ Map<K, List<TreeNode<T>>> group = mTreeMap.values().stream().collect(Collectors.groupingBy(classifier));
|
|
|
|
+ group.forEach((k, v) -> {
|
|
|
|
+ TreeNode<T> parent = mTreeMap.get(k);
|
|
|
|
+ if (parent != null) {
|
|
|
|
+ v = v.stream().sorted(Comparator.comparingInt(TreeNode::getSort)).collect(Collectors.toList());
|
|
|
|
+ parent.setChildren(v);
|
|
|
|
+ v.forEach(e -> e.setParent(parent));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return mTreeMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
/**从元素名称中解析项目名称,细化项目匹配用*/
|
|
/**从元素名称中解析项目名称,细化项目匹配用*/
|
|
public static String parseItemName(String eName){
|
|
public static String parseItemName(String eName){
|
|
if (StringUtils.isEmpty(eName)) {
|
|
if (StringUtils.isEmpty(eName)) {
|