package com.smartor.service.impl; 
 | 
  
 | 
import com.ruoyi.common.exception.base.BaseException; 
 | 
import com.ruoyi.common.utils.DateUtils; 
 | 
import com.ruoyi.common.utils.DtoConversionUtils; 
 | 
import com.smartor.domain.IvrLibaScriptAssort; 
 | 
import com.smartor.domain.IvrLibaScriptAssortVO; 
 | 
import com.smartor.domain.SvyCategory; 
 | 
import com.smartor.domain.SvyCategoryVO; 
 | 
import com.smartor.mapper.SvyCategoryMapper; 
 | 
import com.smartor.service.ISvyCategoryService; 
 | 
import io.jsonwebtoken.lang.Collections; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.collections4.CollectionUtils; 
 | 
import org.apache.commons.lang3.ObjectUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.HashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * 问卷分类Service业务层处理 
 | 
 * 
 | 
 * @author ruoyi 
 | 
 * @date 2023-03-02 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class SvyCategoryServiceImpl implements ISvyCategoryService { 
 | 
    @Autowired 
 | 
    private SvyCategoryMapper svyCategoryMapper; 
 | 
  
 | 
    /** 
 | 
     * 查询问卷分类 
 | 
     * 
 | 
     * @param categoryname 问卷分类主键 
 | 
     * @return 问卷分类 
 | 
     */ 
 | 
    @Override 
 | 
    public List<SvyCategory> selectSvyCategoryById(String categoryname) { 
 | 
        return svyCategoryMapper.selectSvyCategoryById(categoryname); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询问卷分类列表 
 | 
     * 
 | 
     * @param svyCategory 问卷分类 
 | 
     * @return 问卷分类 
 | 
     */ 
 | 
    @Override 
 | 
    public List<SvyCategoryVO> selectSvyCategoryList(SvyCategory svyCategory) { 
 | 
        List<SvyCategory> svyCategories = svyCategoryMapper.selectSvyCategoryList(svyCategory); 
 | 
  
 | 
        List<SvyCategoryVO> svyCategoryVOS = DtoConversionUtils.sourceToTarget(svyCategories, SvyCategoryVO.class); 
 | 
  
 | 
        List<SvyCategoryVO> rootList = new ArrayList<>(); 
 | 
        Map<Long, SvyCategoryVO> categoryMap = new HashMap<>(); 
 | 
  
 | 
        // 建立id->对象的映射 
 | 
        for (SvyCategoryVO category : svyCategoryVOS) { 
 | 
            categoryMap.put(category.getId(), category); 
 | 
        } 
 | 
  
 | 
        for (SvyCategoryVO category : svyCategoryVOS) { 
 | 
            if (category.getPid() == null || category.getPid() == -1) { 
 | 
                // 顶层节点 
 | 
                rootList.add(category); 
 | 
            } else { 
 | 
                // 找到父节点,并添加到其子节点列表 
 | 
                SvyCategoryVO parent = categoryMap.get(category.getPid()); 
 | 
                if (parent != null) { 
 | 
                    SvyCategory sc = DtoConversionUtils.sourceToTarget(category, SvyCategory.class); 
 | 
                    parent.getSvyCategoryList().add(sc); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return rootList; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 新增问卷分类 
 | 
     * 
 | 
     * @param svyCategory 问卷分类 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int insertSvyCategory(SvyCategory svyCategory) { 
 | 
        svyCategory.setCreateTime(DateUtils.getNowDate()); 
 | 
        return svyCategoryMapper.insertSvyCategory(svyCategory); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public int insertSvyCategoryTree(SvyCategoryVO svyCategoryVO) { 
 | 
        Integer i = null; 
 | 
        if (ObjectUtils.isEmpty(svyCategoryVO)) { 
 | 
            throw new BaseException("入参为空,请检查后,再新增"); 
 | 
        } 
 | 
        SvyCategory svyCategory = DtoConversionUtils.sourceToTarget(svyCategoryVO, SvyCategory.class); 
 | 
        i = svyCategoryMapper.insertSvyCategory(svyCategory); 
 | 
        log.info("问题话术分类库一级树的主键:{}", svyCategory.getId()); 
 | 
  
 | 
        //新增二级树 
 | 
        if (CollectionUtils.isNotEmpty(svyCategoryVO.getSvyCategoryList())) { 
 | 
            for (SvyCategory svyCategory1 : svyCategoryVO.getSvyCategoryList()) { 
 | 
                svyCategory1.setPid(svyCategory.getId()); 
 | 
                svyCategoryMapper.insertSvyCategory(svyCategory1); 
 | 
            } 
 | 
        } 
 | 
        return i; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改问卷分类 
 | 
     * 
 | 
     * @param svyCategory 问卷分类 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int updateSvyCategory(SvyCategory svyCategory) { 
 | 
        svyCategory.setUpdateTime(DateUtils.getNowDate()); 
 | 
        return svyCategoryMapper.updateSvyCategory(svyCategory); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 批量删除问卷分类 
 | 
     * 
 | 
     * @param ids 需要删除的问卷分类主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int deleteSvyCategoryByIds(Long[] ids) { 
 | 
        Integer i = null; 
 | 
        for (Long id : ids) { 
 | 
            i = svyCategoryMapper.deleteSvyCategoryById(id); 
 | 
        } 
 | 
  
 | 
        return i; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除问卷分类信息 
 | 
     * 
 | 
     * @param id 问卷分类主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int deleteSvyCategoryById(Long id) { 
 | 
        return svyCategoryMapper.deleteSvyCategoryById(id); 
 | 
    } 
 | 
} 
 |