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.IvrLibaTargetAssortMapper; import com.smartor.service.IIvrLibaTargetAssortService; 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.List; import java.util.stream.Collectors; /** * 指标分类Service业务层处理 * * @author ruoyi * @date 2023-12-14 */ @Slf4j @Service public class IvrLibaTargetAssortServiceImpl implements IIvrLibaTargetAssortService { @Autowired private IvrLibaTargetAssortMapper ivrLibaTargetAssortMapper; /** * 查询指标分类 * * @param id 指标分类主键 * @return 指标分类 */ @Override public IvrLibaTargetAssort selectIvrLibaTargetAssortById(Long id) { return ivrLibaTargetAssortMapper.selectIvrLibaTargetAssortById(id); } /** * 查询指标分类列表 * * @param ivrLibaTargetAssort 指标分类 * @return 指标分类 */ @Override public List selectIvrLibaTargetAssortList(IvrLibaTargetAssort ivrLibaTargetAssort) { List ivrLibaTargetAssorts = ivrLibaTargetAssortMapper.selectIvrLibaTargetAssortList(ivrLibaTargetAssort); //将pid为空的,过滤掉 List ivrLibaTargetAssortList = new ArrayList<>(); for (IvrLibaTargetAssort ivrLibaTargetAssort1 : ivrLibaTargetAssorts) { if (ivrLibaTargetAssort1.getPid() != null) { ivrLibaTargetAssortList.add(ivrLibaTargetAssort1); } } List ivrLibaTargetAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaTargetAssortList, IvrLibaTargetAssortVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 List ivrLibaTargetAssortVOS1 = new ArrayList<>(); for (IvrLibaTargetAssortVO ivrLibaTargetAssortVO : ivrLibaTargetAssortVOS) { if (ivrLibaTargetAssortVO.getPid() != -1) { continue; } IvrLibaTargetAssort ivrLibaTargetAssort1 = new IvrLibaTargetAssort(); ivrLibaTargetAssort1.setPid(ivrLibaTargetAssortVO.getId()); List ivrLibaTargetAssorts2 = ivrLibaTargetAssortMapper.selectIvrLibaTargetAssortList(ivrLibaTargetAssort1); if (!Collections.isEmpty(ivrLibaTargetAssorts2)) { ivrLibaTargetAssortVO.setIvrLibaTargetAssortList(ivrLibaTargetAssorts2); } ivrLibaTargetAssortVOS1.add(ivrLibaTargetAssortVO); } return ivrLibaTargetAssortVOS1; } /** * 新增指标分类 * * @param ivrLibaTargetAssort 指标分类 * @return 结果 */ @Override public int insertIvrLibaTargetAssort(IvrLibaTargetAssort ivrLibaTargetAssort) { ivrLibaTargetAssort.setCreateTime(DateUtils.getNowDate()); return ivrLibaTargetAssortMapper.insertIvrLibaTargetAssort(ivrLibaTargetAssort); } @Override public int insertIvrLibaTargetAssortTree(IvrLibaTargetAssortVO ivrLibaTargetAssortVO) { Integer i = null; if (ObjectUtils.isEmpty(ivrLibaTargetAssortVO)) { throw new BaseException("入参为空,请检查后,再新增"); } //获取序号最大值 Integer seqMax = null; try { seqMax = ivrLibaTargetAssortMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } IvrLibaTargetAssort ivrLibaTargetAssort = DtoConversionUtils.sourceToTarget(ivrLibaTargetAssortVO, IvrLibaTargetAssort.class); ivrLibaTargetAssort.setSeqno(1); if (seqMax != null) { ivrLibaTargetAssort.setSeqno(seqMax + 1); } //-1代表主树 if (ivrLibaTargetAssort.getPid() == null) ivrLibaTargetAssort.setPid((long) -1); i = ivrLibaTargetAssortMapper.insertIvrLibaTargetAssort(ivrLibaTargetAssort); log.info("指标分类一级树的主键:{}", ivrLibaTargetAssort.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(ivrLibaTargetAssortVO.getIvrLibaTargetAssortList())) { for (IvrLibaTargetAssort ivrLibaTargetAssort1 : ivrLibaTargetAssortVO.getIvrLibaTargetAssortList()) { //获取序号最大值 Integer seqMax1 = null; try { seqMax1 = ivrLibaTargetAssortMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } ivrLibaTargetAssort1.setPid(ivrLibaTargetAssort.getId()); ivrLibaTargetAssort1.setSeqno(1); if (seqMax != null) { ivrLibaTargetAssort1.setSeqno(seqMax1 + 1); } ivrLibaTargetAssort1.setGuid(ivrLibaTargetAssortVO.getGuid()); ivrLibaTargetAssort1.setOrgid(ivrLibaTargetAssortVO.getOrgid()); ivrLibaTargetAssortMapper.insertIvrLibaTargetAssort(ivrLibaTargetAssort1); } } return i; } /** * 修改指标分类 * * @param ivrLibaTargetAssort 指标分类 * @return 结果 */ @Override public int updateIvrLibaTargetAssort(IvrLibaTargetAssort ivrLibaTargetAssort) { ivrLibaTargetAssort.setUpdateTime(DateUtils.getNowDate()); return ivrLibaTargetAssortMapper.updateIvrLibaTargetAssort(ivrLibaTargetAssort); } /** * 批量删除指标分类 * * @param ids 需要删除的指标分类主键 * @return 结果 */ @Override public Integer deleteIvrLibaTargetAssortByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("该指标分类id为默认ID,不能删除,id:{}", id); continue; } i = ivrLibaTargetAssortMapper.deleteIvrLibaTargetAssortById(id); IvrLibaTargetAssort ivrLibaTargetAssort = new IvrLibaTargetAssort(); ivrLibaTargetAssort.setPid(id); //将删除的id的二级菜单,放到未分类中 List ivrLibaTargetAssorts = ivrLibaTargetAssortMapper.selectIvrLibaTargetAssortList(ivrLibaTargetAssort); if (CollectionUtils.isNotEmpty(ivrLibaTargetAssorts)) { for (IvrLibaTargetAssort ivrLibaTargetAssort1 : ivrLibaTargetAssorts) { ivrLibaTargetAssort1.setPid(-1L); ivrLibaTargetAssortMapper.updateIvrLibaTargetAssort(ivrLibaTargetAssort1); } } } return i; } /** * 删除指标分类信息 * * @param id 指标分类主键 * @return 结果 */ @Override public int deleteIvrLibaTargetAssortById(Long id) { return ivrLibaTargetAssortMapper.deleteIvrLibaTargetAssortById(id); } }