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.IDockingPreApplyFormService; 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.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; /** * 集团分类业务服务 * @author xiejun * @date 2023-05-23 */ @Service @Slf4j public class DockingPreClassifyServiceImpl extends ServiceImpl implements IDockingPreClassifyService { /** * 上级节点的属性名称 */ public static final String PARENT_FIELD_NAME = "parentCodeClassifyOid"; /*** * 集团分类属性 */ @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(); TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT)); treeWrapperOptions.copyFromTreeQuery(treeQueryObject); List dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),true); List tree= revisionModelUtil.doList2Trees(dockingPreClassifyVOS,treeWrapperOptions,(DockingPreClassifyVO s) ->{ //可以在这里处理树节点的显示 return s.getId() + " " + s.getName();//(FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s.getLcStatus()) ? (" 【停用】 ") : ""); }); Iterator var6 = tree.listIterator(); while(var6.hasNext()){ Tree trees = (Tree) var6.next(); boolean checkHasChild=dockingPreClassifyMapper.checkHasChild(trees.getOid()); //如果与条件传过来的值匹配的上则设置为选中 if(conditionMap.containsKey(MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD)){ String codeClassifyId=conditionMap.get(MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD); boolean checkHas=dockingPreAttrMappingService.checkHasConfigByTragetCodeclassifyId(codeClassifyId); if(checkHas) { trees.setChecked(true); } } ; if(checkHasChild){ trees.setLeaf(false); }else{ trees.setLeaf(true); } } log.info("获取集团分类树end..."); return tree; } /*** * 根据父分类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; } }