package com.vci.ubcs.code.webservice.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.code.webservice.mapper.DockingPreClassifyMapper; import com.vci.ubcs.code.webservice.service.IDockingPreAttrMappingService; import com.vci.ubcs.code.webservice.service.IDockingPreClassifyService; import com.vci.ubcs.code.webservice.service.IDockingPreViewModelService; import com.vci.ubcs.code.webservice.wrapper.DockingPreClassifyWrapper; import com.vci.ubcs.starter.revision.model.TreeQueryObject; import com.vci.ubcs.starter.revision.model.TreeWrapperOptions; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.util.MdmBtmTypeConstant; import com.vci.ubcs.starter.web.pagemodel.Tree; import com.vci.ubcs.code.webservice.entity.DockingPreClassify; import com.vci.ubcs.code.webservice.vo.DockingPreClassifyVO; import com.vci.ubcs.code.webservice.vo.DockingPreViewModelVO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; /** * 集团分类业务服务 * @author xiejun * @date 2023-05-23 */ @Service @Slf4j public class DockingPreClassifyServiceImpl extends ServiceImpl implements IDockingPreClassifyService { /** * 上级节点的属性名称 */ public static final String PARENT_FIELD_NAME = "pid"; /*** * 集团分类属性 */ @Resource private DockingPreClassifyMapper dockingPreClassifyMapper; /*** * 集团分类属性 */ @Resource private IDockingPreViewModelService dockingPreViewModelService; /*** *集团集成配置服务 */ @Resource private IDockingPreAttrMappingService dockingPreAttrMappingService; /** * 对象的操作 */ @Resource private RevisionModelUtil revisionModelUtil; /*** * 集团分类树对象查 *@param treeQueryObject 集团分类查询对象 *@return 返回分类树对象 */ @Override public List treeCompanyGroupClassify(TreeQueryObject treeQueryObject) { log.info("获取集团分类树start..."); Map conditionMap= treeQueryObject.getConditionMap(); if(conditionMap==null){ conditionMap=new HashMap<>(); } TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT)); treeWrapperOptions.copyFromTreeQuery(treeQueryObject); List dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),false); List tree= revisionModelUtil.doList2Trees(dockingPreClassifyVOS,treeWrapperOptions,(DockingPreClassifyVO s) ->{ //可以在这里处理树节点的显示 return s.getId() + " " + s.getName();//(FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s.getLcStatus()) ? (" 【停用】 ") : ""); }); setTreeConig(tree,conditionMap); log.info("获取集团分类树end..."); return tree; } private void setTreeConig(List tree,MapconditionMap){ boolean checkHasChild=false; Iterator var6 = tree.listIterator(); while(var6.hasNext()){ Tree trees = (Tree) var6.next(); List childrenList=trees.getChildren(); if(childrenList.size()>0){ checkHasChild=true; } boolean checkHas=false; //如果与条件传过来的值匹配的上则设置为选中 if(conditionMap.containsKey(MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD)){ String codeClassifyId=conditionMap.get(MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD); checkHas = dockingPreAttrMappingService.checkHasConfigByTragetCodeclassifyId(codeClassifyId, trees.getOid()); } if (checkHas) { trees.setChecked(true); } if(checkHasChild){ trees.setLeaf(false); }else{ trees.setLeaf(true); } if(checkHasChild) { setTreeConig(childrenList,conditionMap); } } } /*** * 根据父分类id查询层级树数据对象集合 * @param pid 集团分类的oid * @return 返回层级树数据对象集合 */ private List getCompanyGourpClassByParentId(String pid,boolean isContainView){ log.info("根据父分类pid->"+pid+"查询层级树数据对象集合start..."); List doList =dockingPreClassifyMapper.selectCompanyGroupClassifyVOByTree(pid); ListdockingPreClassifyVOS= DockingPreClassifyWrapper.build().entityVOs(doList); if(isContainView){ dockingPreClassifyVOS.stream().forEach(dockingPreClassifyVO -> { List dockingViewVOS= dockingPreViewModelService.selectDockingPreViewModelByClassId(dockingPreClassifyVO.getOid(),isContainView); dockingPreClassifyVO.setDockingPreViewModelVOList(dockingViewVOS); }); } log.info("根据父分类pid->"+pid+"查询层级树数据对象集合end..."); return dockingPreClassifyVOS; } }