package com.vci.ubcs.code.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.code.entity.DockingPreClassify; import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus; import com.vci.ubcs.code.mapper.DockingPreClassifyMapper; import com.vci.ubcs.code.service.IDockingPreClassifyService; import com.vci.ubcs.code.service.IDockingPreViewModelService; import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO; import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO; import com.vci.ubcs.code.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.web.pagemodel.Tree; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import static com.vci.ubcs.code.constant.MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD; import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME; /** * 集团分类业务服务 * @author xiejun * @date 2023-05-23 */ @Service @Slf4j public class DockingPreClassifyServiceImpl extends ServiceImpl implements IDockingPreClassifyService { /*** * 集团分类属性 */ @Resource private DockingPreClassifyMapper dockingPreClassifyMapper; /*** * 集团分类属性 */ @Resource private IDockingPreViewModelService dockingPreViewModelService; /** * 对象的操作 */ @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(CODE_CLASSIFY_OID_FIELD)){ 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; } }