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> modelColumnAnnotationMap = new ConcurrentHashMap(); // public static volatile Map 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 List doList2Trees(List doList, TreeWrapperOptions wrapperOptions, Function f) { if (CollectionUtils.isEmpty(doList)) { return new ArrayList(); } else { List allTree = new ArrayList(); List children = new ArrayList(); Iterator var6 = doList.iterator(); while(true) { while(var6.hasNext()) { T doObject = (T) var6.next(); Tree tree = new Tree(); List oidFieldNames = VciBaseUtil.str2List(wrapperOptions.getOidFieldName()); List 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); Integer isParticipateCheck = (Integer) VciBaseUtil.getValueFromField("isParticipateCheck", doObject); if(Func.isNotEmpty(total)){ tree.setCount("【"+total+"】"); } if (f != null) { tree.setText((String)f.apply(doObject)); } else { List textFieldNames = VciBaseUtil.str2List(wrapperOptions.getTextFieldName()); List 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 List doListSystemClassTrees(List doList, TreeWrapperOptions wrapperOptions, Function f) { if (CollectionUtils.isEmpty(doList)) { return new ArrayList(); } else { List allTree = new ArrayList(); List children = new ArrayList(); Iterator var6 = doList.iterator(); while(true) { while(var6.hasNext()) { T doObject = (T) var6.next(); Tree tree = new Tree(); List oidFieldNames = VciBaseUtil.str2List(wrapperOptions.getOidFieldName()); List 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 textFieldNames = VciBaseUtil.str2List(wrapperOptions.getTextFieldName()); List 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 treenode, List 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); // } // } // // } }