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<DockingPreClassifyMapper, DockingPreClassify> 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<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject) {
|
log.info("获取集团分类树start...");
|
|
Map<String,String> conditionMap= treeQueryObject.getConditionMap();
|
if(conditionMap==null){
|
conditionMap=new HashMap<>();
|
}
|
TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
|
treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
|
List<DockingPreClassifyVO> dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),false);
|
List<Tree> 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> tree,Map<String,String >conditionMap){
|
boolean checkHasChild=false;
|
Iterator var6 = tree.listIterator();
|
while(var6.hasNext()){
|
Tree trees = (Tree) var6.next();
|
List<Tree> 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<DockingPreClassifyVO> getCompanyGourpClassByParentId(String pid,boolean isContainView){
|
log.info("根据父分类pid->"+pid+"查询层级树数据对象集合start...");
|
List<DockingPreClassify> doList =dockingPreClassifyMapper.selectCompanyGroupClassifyVOByTree(pid);
|
List<DockingPreClassifyVO>dockingPreClassifyVOS= DockingPreClassifyWrapper.build().entityVOs(doList);
|
if(isContainView){
|
dockingPreClassifyVOS.stream().forEach(dockingPreClassifyVO -> {
|
List<DockingPreViewModelVO> dockingViewVOS= dockingPreViewModelService.selectDockingPreViewModelByClassId(dockingPreClassifyVO.getOid(),isContainView);
|
dockingPreClassifyVO.setDockingPreViewModelVOList(dockingViewVOS);
|
});
|
}
|
log.info("根据父分类pid->"+pid+"查询层级树数据对象集合end...");
|
return dockingPreClassifyVOS;
|
}
|
}
|