package com.vci.ubcs.starter.revision.service;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.vci.ubcs.starter.revision.model.BaseModel;
|
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
|
import com.vci.ubcs.starter.web.pagemodel.Tree;
|
import com.vci.ubcs.starter.web.service.VciSecretServiceI;
|
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
|
import com.vci.ubcs.starter.web.util.VciBaseUtil;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springblade.core.tool.utils.Func;
|
import org.springblade.core.tool.utils.StringUtil;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.*;
|
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
|
@Component
|
public class RevisionModelUtil implements VciSecretServiceI {
|
|
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
public static volatile Map<String, Map<String, String>> modelColumnAnnotationMap = new ConcurrentHashMap();
|
// public static volatile Map<String, VciBtmType> modelAnnotationMap = new ConcurrentHashMap();
|
public static boolean CHECK_IDEMPOTENCE = false;
|
|
public void copyFromDTOIgnore(Object dto, BaseModel baseModel) {
|
VciBaseUtil.alertNotNull(new Object[]{dto, "数据传输对象", baseModel, "数据库中的数据对象"});
|
BaseModel tempModel = new BaseModel();
|
BeanUtilForVCI.copyPropertiesIgnoreCase(baseModel, tempModel);
|
BeanUtilForVCI.copyPropertiesIgnoreCase(dto, baseModel);
|
BeanUtilForVCI.copyPropertiesIgnoreCase(tempModel, baseModel);
|
baseModel.setId(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("id", dto)));
|
baseModel.setName(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("name", dto)));
|
baseModel.setDescription(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("description", dto)));
|
tempModel = null;
|
}
|
|
public <T, R> List<Tree> doList2Trees(List<T> doList, TreeWrapperOptions wrapperOptions, Function<T, R> f) {
|
if (CollectionUtils.isEmpty(doList)) {
|
return new ArrayList();
|
} else {
|
List<Tree> allTree = new ArrayList();
|
List<Tree> children = new ArrayList();
|
Iterator var6 = doList.iterator();
|
|
while(true) {
|
while(var6.hasNext()) {
|
T doObject = (T) var6.next();
|
Tree tree = new Tree();
|
List<String> oidFieldNames = VciBaseUtil.str2List(wrapperOptions.getOidFieldName());
|
List<String> oidValues = new LinkedList();
|
oidFieldNames.stream().forEach((s) -> {
|
oidValues.add(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(s, doObject)));
|
});
|
tree.setOid((String)oidValues.stream().collect(Collectors.joining(wrapperOptions.getOidValueSep())));
|
tree.setName((String) VciBaseUtil.getValueFromField("name", doObject));
|
// TODO:业务数据总数统计暂时没完善
|
String total = (String) VciBaseUtil.getValueFromField("total", doObject);
|
String isParticipateCheck = (String) VciBaseUtil.getValueFromField("isParticipateCheck", doObject);
|
if(Func.isNotEmpty(total)){
|
tree.setCount("【"+total+"】");
|
}
|
if(Func.isNotEmpty(isParticipateCheck)){
|
tree.setIsParticipateCheck(isParticipateCheck);
|
}else {
|
tree.setIsParticipateCheck("1");
|
}
|
if (f != null) {
|
tree.setText((String)f.apply(doObject));
|
} else {
|
List<String> textFieldNames = VciBaseUtil.str2List(wrapperOptions.getTextFieldName());
|
List<String> textValues = new LinkedList();
|
textFieldNames.stream().forEach((s) -> {
|
textValues.add(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(s, doObject)));
|
});
|
tree.setText((String)textValues.stream().collect(Collectors.joining(wrapperOptions.getTextValueSep())));
|
}
|
|
if (StringUtils.isNotBlank(wrapperOptions.getParentFieldName())) {
|
String stringValueFromObject = VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(wrapperOptions.getParentFieldName(), doObject));
|
tree.setParentId(stringValueFromObject);
|
}
|
|
if (wrapperOptions.isAllAttributes()) {
|
try {
|
tree.setAttributes(VciBaseUtil.objectToMapString(doObject));
|
} catch (Exception var13) {
|
if (this.logger.isErrorEnabled()) {
|
this.logger.error("把对象转换为map时出现了错误,但是不影响树的展示,对业务可能有影响");
|
}
|
}
|
}
|
|
if (wrapperOptions.isMultipleSelect() || wrapperOptions.isShowCheckBox()) {
|
tree.setShowCheckbox(true);
|
}
|
|
if (wrapperOptions.getParentOid() == null) {
|
wrapperOptions.setParentOid("");
|
}
|
|
if (!StringUtils.isBlank(tree.getParentId()) && (!StringUtils.isNotBlank(wrapperOptions.getParentOid()) || !wrapperOptions.getParentOid().equalsIgnoreCase(tree.getParentId()))) {
|
children.add(tree);
|
} else {
|
allTree.add(tree);
|
}
|
}
|
|
(new Tree()).findChild(allTree, children);
|
if (allTree.size() <= 0) {
|
allTree.addAll(children);
|
}
|
|
return allTree;
|
}
|
}
|
}
|
|
public <T, R> List<Tree> doListSystemClassTrees(List<T> doList, TreeWrapperOptions wrapperOptions, Function<T, R> f) {
|
if (CollectionUtils.isEmpty(doList)) {
|
return new ArrayList();
|
} else {
|
List<Tree> allTree = new ArrayList();
|
List<Tree> children = new ArrayList();
|
Iterator var6 = doList.iterator();
|
|
while(true) {
|
while(var6.hasNext()) {
|
T doObject = (T) var6.next();
|
Tree tree = new Tree();
|
List<String> oidFieldNames = VciBaseUtil.str2List(wrapperOptions.getOidFieldName());
|
List<String> oidValues = new LinkedList();
|
oidFieldNames.stream().forEach((s) -> {
|
oidValues.add(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("oid", doObject)));
|
});
|
tree.setOid((String)oidValues.stream().collect(Collectors.joining(wrapperOptions.getOidValueSep())));
|
tree.setName((String) VciBaseUtil.getValueFromField("name", doObject));
|
if (f != null) {
|
tree.setText((String)f.apply(doObject));
|
} else {
|
List<String> textFieldNames = VciBaseUtil.str2List(wrapperOptions.getTextFieldName());
|
List<String> textValues = new LinkedList();
|
textFieldNames.stream().forEach((s) -> {
|
textValues.add(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(s, doObject)));
|
});
|
tree.setText((String)textValues.stream().collect(Collectors.joining(wrapperOptions.getTextValueSep())));
|
}
|
|
if (StringUtils.isNotBlank(wrapperOptions.getParentFieldName())) {
|
String stringValueFromObject = VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(wrapperOptions.getParentFieldName(), doObject));
|
tree.setParentId(stringValueFromObject);
|
}
|
|
if (wrapperOptions.isAllAttributes()) {
|
try {
|
tree.setAttributes(VciBaseUtil.objectToMapString(doObject));
|
} catch (Exception var13) {
|
if (this.logger.isErrorEnabled()) {
|
this.logger.error("把对象转换为map时出现了错误,但是不影响树的展示,对业务可能有影响");
|
}
|
}
|
}
|
|
if (wrapperOptions.isMultipleSelect() || wrapperOptions.isShowCheckBox()) {
|
tree.setShowCheckbox(true);
|
}
|
|
if (wrapperOptions.getParentOid() == null) {
|
wrapperOptions.setParentOid("");
|
}
|
|
if (!StringUtils.isBlank(tree.getParentId()) && (!StringUtils.isNotBlank(wrapperOptions.getParentOid()) || !wrapperOptions.getParentOid().equalsIgnoreCase(tree.getParentId()))) {
|
children.add(tree);
|
} else {
|
allTree.add(tree);
|
}
|
}
|
|
(new Tree()).findSystemClassChild(allTree, children);
|
if (allTree.size() <= 0) {
|
allTree.addAll(children);
|
}
|
|
return allTree;
|
}
|
}
|
}
|
//
|
// public void findSystemClassChild(List<Tree> treenode, List<Tree> children) {
|
// Tree node;
|
// for(Iterator var3 = treenode.iterator(); var3.hasNext(); {
|
// if (var3 == null) {
|
// var3.next();
|
// } else {
|
// ((Tree) var3.next()).getChildren().add(node);
|
// }
|
// }) {
|
// node = (Tree)var3.next();
|
// Iterator var5 = children.iterator();
|
//
|
// while(var5.hasNext()) {
|
// Tree childnode = (Tree)var5.next();
|
// if (node.getAttributes().get("classifyOid").equalsIgnoreCase(childnode.getParentId())) {
|
// childnode.setParentName(node.getText());
|
// if (StringUtil.isBlank(childnode.getParentBtmName())) {
|
// childnode.setParentBtmName((String)node.getAttributes().getOrDefault("btmname", ""));
|
// }
|
//
|
// node.getChildren().add(childnode);
|
// }
|
// }
|
//
|
// if (node.getChildren().size() > 0) {
|
// this.findSystemClassChild(node.getChildren(), children);
|
// node.setLeaf(false);
|
// } else {
|
// node.setLeaf(true);
|
// }
|
// }
|
//
|
// }
|
|
}
|