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.IvrLibaTemplateAssort; import com.smartor.domain.IvrLibaTemplateAssortVO; import com.smartor.mapper.IvrLibaTemplateAssortMapper; import com.smartor.service.IIvrLibaTemplateAssortService; 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-23 */ @Slf4j @Service public class IvrLibaTemplateAssortServiceImpl implements IIvrLibaTemplateAssortService { @Autowired private IvrLibaTemplateAssortMapper ivrLibaTemplateAssortMapper; /** * 查询模板分类 * * @param id 模板分类主键 * @return 模板分类 */ @Override public IvrLibaTemplateAssort selectIvrLibaTemplateAssortById(Long id) { return ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortById(id); } /** * 查询模板分类列表 * * @param ivrLibaScriptAssort 模板分类 * @return 模板分类 */ @Override public List selectIvrLibaTemplateAssortList(IvrLibaTemplateAssort ivrLibaScriptAssort) { List ivrLibaTemplateAssorts = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaScriptAssort); //将pid为空的,过滤掉 // ivrLibaTemplateAssorts = ivrLibaTemplateAssorts.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList()); List ivrLibaTemplateAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateAssorts, IvrLibaTemplateAssortVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 for (IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO : ivrLibaTemplateAssortVOS) { // if (ivrLibaTemplateAssortVO.getPid() != null) { // continue; // } IvrLibaTemplateAssort ivrLibaTemplateAssort = new IvrLibaTemplateAssort(); ivrLibaTemplateAssort.setPid(ivrLibaTemplateAssortVO.getId()); List ivrLibaTemplateAssorts1 = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort); if (!Collections.isEmpty(ivrLibaTemplateAssorts1)) { ivrLibaTemplateAssortVO.setIvrLibaTemplateAssortList(ivrLibaTemplateAssorts1); } } return ivrLibaTemplateAssortVOS; } /** * 新增模板分类 * * @param ivrLibaTemplateAssort 模板分类 * @return 结果 */ @Override public int insertIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort) { ivrLibaTemplateAssort.setCreateTime(DateUtils.getNowDate()); return ivrLibaTemplateAssortMapper.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort); } @Override public int insertIvrLibaTemplateAssortTree(IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO) { Integer i = null; if (ObjectUtils.isEmpty(ivrLibaTemplateAssortVO)) { throw new BaseException("入参为空,请检查后,再新增"); } Integer seqMax = null; try { seqMax = ivrLibaTemplateAssortMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } IvrLibaTemplateAssort ivrLibaTemplateAssort = DtoConversionUtils.sourceToTarget(ivrLibaTemplateAssortVO, IvrLibaTemplateAssort.class); ivrLibaTemplateAssort.setSeqno(1); if (seqMax != null) { ivrLibaTemplateAssort.setSeqno(seqMax + 1); } i = ivrLibaTemplateAssortMapper.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort); log.info("问模板分类一级树的主键:{}", ivrLibaTemplateAssort.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(ivrLibaTemplateAssortVO.getIvrLibaTemplateAssortList())) { for (IvrLibaTemplateAssort ivrLibaTemplateAssort1 : ivrLibaTemplateAssortVO.getIvrLibaTemplateAssortList()) { Integer seqMax1 = null; try { seqMax1 = ivrLibaTemplateAssortMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } ivrLibaTemplateAssort1.setGuid(ivrLibaTemplateAssortVO.getGuid()); ivrLibaTemplateAssort1.setOrgid(ivrLibaTemplateAssortVO.getOrgid()); ivrLibaTemplateAssort1.setPid(ivrLibaTemplateAssort.getId()); ivrLibaTemplateAssort1.setSeqno(seqMax1 + 1); ivrLibaTemplateAssortMapper.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort1); } } return i; } /** * 修改模板分类 * * @param ivrLibaTemplateAssort 模板分类 * @return 结果 */ @Override public int updateIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort) { ivrLibaTemplateAssort.setUpdateTime(DateUtils.getNowDate()); return ivrLibaTemplateAssortMapper.updateIvrLibaTemplateAssort(ivrLibaTemplateAssort); } /** * 批量删除模板分类 * * @param ids 需要删除的模板分类主键 * @return 结果 */ @Override public Integer deleteIvrLibaTemplateAssortByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("该模板分类id为默认id,不能删除,id:{}", id); continue; } i = ivrLibaTemplateAssortMapper.deleteIvrLibaTemplateAssortById(id); IvrLibaTemplateAssort ivrLibaTemplateAssort = new IvrLibaTemplateAssort(); ivrLibaTemplateAssort.setPid(id); List ivrLibaTemplateAssorts = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort); if (CollectionUtils.isNotEmpty(ivrLibaTemplateAssorts)) { for (IvrLibaTemplateAssort ivrLibaTemplateAssort1 : ivrLibaTemplateAssorts) { ivrLibaTemplateAssort1.setPid(-1L); ivrLibaTemplateAssortMapper.updateIvrLibaTemplateAssort(ivrLibaTemplateAssort1); } } } return i; } /** * 删除模板分类信息 * * @param id 模板分类主键 * @return 结果 */ @Override public int deleteIvrLibaTemplateAssortById(Long id) { return ivrLibaTemplateAssortMapper.deleteIvrLibaTemplateAssortById(id); } }