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.List; 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 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 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 selectIvrLibaScriptAssortList(IvrLibaScriptAssort ivrLibaScriptAssort) { List ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort); //将pid为空的,过滤掉 ivrLibaScriptAssorts = ivrLibaScriptAssorts.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList()); List ivrLibaScriptAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaScriptAssorts, IvrLibaScriptAssortVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 for (IvrLibaScriptAssortVO ivrLibaScriptAssortVO : ivrLibaScriptAssortVOS) { if (ivrLibaScriptAssortVO.getPid() != null) { continue; } IvrLibaScriptAssort ivrLibaTargetAssort1 = new IvrLibaScriptAssort(); ivrLibaTargetAssort1.setPid(ivrLibaScriptAssortVO.getId()); List ivrLibaScriptAssorts1 = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaTargetAssort1); if (!Collections.isEmpty(ivrLibaScriptAssorts1)) { ivrLibaScriptAssortVO.setIvrLibaScriptAssortList(ivrLibaScriptAssorts1); } } return ivrLibaScriptAssortVOS; } }