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.*; 
 | 
import com.smartor.mapper.IvrLibaScriptAssortMapper; 
 | 
import com.smartor.service.IIvrLibaScriptAssortService; 
 | 
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-12-21 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class IvrLibaScriptAssortServiceImpl implements IIvrLibaScriptAssortService { 
 | 
    @Autowired 
 | 
    private IvrLibaScriptAssortMapper ivrLibaScriptAssortMapper; 
 | 
  
 | 
    /** 
 | 
     * 查询问题话术分类库 
 | 
     * 
 | 
     * @param id 问题话术分类库 
 | 
     *           主键 
 | 
     * @return 问题话术分类库 
 | 
     */ 
 | 
    @Override 
 | 
    public IvrLibaScriptAssort selectIvrLibaScriptAssortById(Long id) { 
 | 
        return ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortById(id); 
 | 
    } 
 | 
  
 | 
//    /** 
 | 
//     * 查询问题话术分类库 
 | 
//     * 列表 
 | 
//     * 
 | 
//     * @param ivrLibaScriptAssort 问题话术分类库 
 | 
//     * @return 问题话术分类库 
 | 
//     */ 
 | 
//    @Override 
 | 
//    public List<IvrLibaScriptAssort> selectIvrLibaScriptAssortList(IvrLibaScriptAssort ivrLibaScriptAssort) { 
 | 
//        return ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort); 
 | 
//    } 
 | 
  
 | 
    /** 
 | 
     * 新增问题话术分类库 
 | 
     * 
 | 
     * @param ivrLibaScriptAssort 问题话术分类库 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int insertIvrLibaScriptAssort(IvrLibaScriptAssort ivrLibaScriptAssort) { 
 | 
        ivrLibaScriptAssort.setCreateTime(DateUtils.getNowDate()); 
 | 
        return ivrLibaScriptAssortMapper.insertIvrLibaScriptAssort(ivrLibaScriptAssort); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public int insertIvrLibaScriptAssortTree(IvrLibaScriptAssortVO ivrLibaScriptAssortVO) { 
 | 
        Integer i = null; 
 | 
        if (ObjectUtils.isEmpty(ivrLibaScriptAssortVO)) { 
 | 
            throw new BaseException("入参为空,请检查后,再新增"); 
 | 
        } 
 | 
        //获取序号最大值 
 | 
        Integer seqMax = null; 
 | 
        try { 
 | 
            seqMax = ivrLibaScriptAssortMapper.selectSeqMax(); 
 | 
        } catch (Exception e) { 
 | 
            seqMax = 0; 
 | 
        } 
 | 
  
 | 
        IvrLibaScriptAssort ivrLibaScriptAssort = DtoConversionUtils.sourceToTarget(ivrLibaScriptAssortVO, IvrLibaScriptAssort.class); 
 | 
        if (seqMax == null) { 
 | 
            ivrLibaScriptAssort.setSeqno(1); 
 | 
        } else { 
 | 
            ivrLibaScriptAssort.setSeqno(seqMax + 1); 
 | 
        } 
 | 
        i = ivrLibaScriptAssortMapper.insertIvrLibaScriptAssort(ivrLibaScriptAssort); 
 | 
        log.info("问题话术分类库一级树的主键:{}", ivrLibaScriptAssort.getId()); 
 | 
  
 | 
        //新增二级树 
 | 
        if (CollectionUtils.isNotEmpty(ivrLibaScriptAssortVO.getIvrLibaScriptAssortList())) { 
 | 
            for (IvrLibaScriptAssort ivrLibaScriptAssort1 : ivrLibaScriptAssortVO.getIvrLibaScriptAssortList()) { 
 | 
                //获取序号最大值 
 | 
                Integer seqMax1 = null; 
 | 
                try { 
 | 
                    seqMax1 = ivrLibaScriptAssortMapper.selectSeqMax(); 
 | 
                } catch (Exception e) { 
 | 
                    seqMax1 = 0; 
 | 
                } 
 | 
                ivrLibaScriptAssort1.setPid(ivrLibaScriptAssort.getId()); 
 | 
                if (seqMax == null) { 
 | 
                    ivrLibaScriptAssort1.setSeqno(1); 
 | 
                } else { 
 | 
                    ivrLibaScriptAssort1.setSeqno(seqMax1 + 1); 
 | 
                } 
 | 
                ivrLibaScriptAssort1.setGuid(ivrLibaScriptAssortVO.getGuid()); 
 | 
                ivrLibaScriptAssort1.setOrgid(ivrLibaScriptAssortVO.getOrgid()); 
 | 
                ivrLibaScriptAssortMapper.insertIvrLibaScriptAssort(ivrLibaScriptAssort1); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return i; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改问题话术分类库 
 | 
     * 
 | 
     * @param ivrLibaScriptAssort 问题话术分类库 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int updateIvrLibaScriptAssort(IvrLibaScriptAssort ivrLibaScriptAssort) { 
 | 
        ivrLibaScriptAssort.setUpdateTime(DateUtils.getNowDate()); 
 | 
        return ivrLibaScriptAssortMapper.updateIvrLibaScriptAssort(ivrLibaScriptAssort); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 批量删除问题话术分类库 
 | 
     * 
 | 
     * @param ids 需要删除的问题话术分类库 
 | 
     *            主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public Integer deleteIvrLibaScriptAssortByIds(Long[] ids) { 
 | 
        Integer i = null; 
 | 
        for (Long id : ids) { 
 | 
            if (id < 0) { 
 | 
                log.info("该问题话术分类id为默认ID,不能删除,id:{}", id); 
 | 
                continue; 
 | 
            } 
 | 
            i = ivrLibaScriptAssortMapper.deleteIvrLibaScriptAssortById(id); 
 | 
            //查询删除id所对就的子数据 
 | 
            IvrLibaScriptAssort ivrLibaScriptAssort = new IvrLibaScriptAssort(); 
 | 
            ivrLibaScriptAssort.setPid(id); 
 | 
            List<IvrLibaScriptAssort> ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort); 
 | 
  
 | 
            if (CollectionUtils.isNotEmpty(ivrLibaScriptAssorts)) { 
 | 
                for (IvrLibaScriptAssort ivrLibaScriptAssort1 : ivrLibaScriptAssorts) { 
 | 
                    ivrLibaScriptAssort1.setPid(-1L); 
 | 
                    ivrLibaScriptAssortMapper.updateIvrLibaScriptAssort(ivrLibaScriptAssort1); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return i; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除问题话术分类库 
 | 
     * 信息 
 | 
     * 
 | 
     * @param id 问题话术分类库 
 | 
     *           主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int deleteIvrLibaScriptAssortById(Long id) { 
 | 
        return ivrLibaScriptAssortMapper.deleteIvrLibaScriptAssortById(id); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询问题分类列表 
 | 
     * 
 | 
     * @param ivrLibaScriptAssort 问题分类 
 | 
     * @return 问题分类 
 | 
     */ 
 | 
    @Override 
 | 
    public List<IvrLibaScriptAssortVO> selectIvrLibaScriptAssortList(IvrLibaScriptAssort ivrLibaScriptAssort) { 
 | 
        List<IvrLibaScriptAssort> ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort); 
 | 
        List<IvrLibaScriptAssortVO> ivrLibaScriptAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaScriptAssorts, IvrLibaScriptAssortVO.class); 
 | 
  
 | 
        List<IvrLibaScriptAssortVO> rootList = new ArrayList<>(); 
 | 
        Map<Long, IvrLibaScriptAssortVO> categoryMap = new HashMap<>(); 
 | 
  
 | 
        // 建立id->对象的映射 
 | 
        for (IvrLibaScriptAssortVO category : ivrLibaScriptAssortVOS) { 
 | 
            categoryMap.put(category.getId(), category); 
 | 
        } 
 | 
  
 | 
        for (IvrLibaScriptAssortVO category : ivrLibaScriptAssortVOS) { 
 | 
            if (category.getPid() == null || category.getPid() == -1) { 
 | 
                // 顶层节点 
 | 
                rootList.add(category); 
 | 
            } else { 
 | 
                // 找到父节点,并添加到其子节点列表 
 | 
                IvrLibaScriptAssortVO parent = categoryMap.get(category.getPid()); 
 | 
                if (parent != null) { 
 | 
                    IvrLibaScriptAssort sc = DtoConversionUtils.sourceToTarget(category, IvrLibaScriptAssort.class); 
 | 
                    parent.getIvrLibaScriptAssortList().add(sc); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return rootList; 
 | 
    } 
 | 
} 
 |