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.SvyLibTopicCategory; import com.smartor.domain.SvyLibTopicCategoryVO; import com.smartor.mapper.SvyLibTopicCategoryMapper; import com.smartor.service.ISvyLibTopicCategoryService; 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-27 */ @Slf4j @Service public class SvyLibTopicCategoryServiceImpl implements ISvyLibTopicCategoryService { @Autowired private SvyLibTopicCategoryMapper svyLibTopicCategoryMapper; /** * 查询问卷题目分类 * * @param id 问卷题目分类主键 * @return 问卷题目分类 */ @Override public SvyLibTopicCategory selectSvyLibTopicCategoryById(Long id) { return svyLibTopicCategoryMapper.selectSvyLibTopicCategoryById(id); } /** * 查询问卷题目分类列表 * * @param svyLibTopicCategory 问卷题目分类 * @return 问卷题目分类 */ @Override public List selectSvyLibTopicCategoryList(SvyLibTopicCategory svyLibTopicCategory) { List svyLibTopicCategories = svyLibTopicCategoryMapper.selectSvyLibTopicCategoryList(svyLibTopicCategory); //将pid为空的,过滤掉 svyLibTopicCategories = svyLibTopicCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList()); List SvyLibTopicCategoryVO = DtoConversionUtils.sourceToTarget(svyLibTopicCategories, SvyLibTopicCategoryVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 for (SvyLibTopicCategoryVO svyLibTopicCategoryVO : SvyLibTopicCategoryVO) { if (svyLibTopicCategoryVO.getPid() != null) { continue; } SvyLibTopicCategory svyLibTopicCategory1 = new SvyLibTopicCategory(); svyLibTopicCategory1.setPid(svyLibTopicCategoryVO.getId()); List svyLibTopicCategories1 = svyLibTopicCategoryMapper.selectSvyLibTopicCategoryList(svyLibTopicCategory1); if (!Collections.isEmpty(svyLibTopicCategories1)) { svyLibTopicCategoryVO.setSvyLibTopicCategoryList(svyLibTopicCategories1); } } return SvyLibTopicCategoryVO; } /** * 新增问卷题目分类 * * @param svyLibTopicCategory 问卷题目分类 * @return 结果 */ @Override public int insertSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory) { svyLibTopicCategory.setCreateTime(DateUtils.getNowDate()); return svyLibTopicCategoryMapper.insertSvyLibTopicCategory(svyLibTopicCategory); } /** * 修改问卷题目分类 * * @param svyLibTopicCategory 问卷题目分类 * @return 结果 */ @Override public int updateSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory) { svyLibTopicCategory.setUpdateTime(DateUtils.getNowDate()); return svyLibTopicCategoryMapper.updateSvyLibTopicCategory(svyLibTopicCategory); } /** * 批量删除问卷题目分类 * * @param ids 需要删除的问卷题目分类主键 * @return 结果 */ @Override public int deleteSvyLibTopicCategoryByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("小于0的值为默认值不能删除:{}", id); continue; } i = svyLibTopicCategoryMapper.deleteSvyLibTopicCategoryById(id); SvyLibTopicCategory svyLibTopicCategory = new SvyLibTopicCategory(); svyLibTopicCategory.setPid(id); List svyLibTopicCategories = svyLibTopicCategoryMapper.selectSvyLibTopicCategoryList(svyLibTopicCategory); if (CollectionUtils.isNotEmpty(svyLibTopicCategories)) { for (SvyLibTopicCategory svyLibTopicCategory1 : svyLibTopicCategories) { svyLibTopicCategory1.setPid(-1L); svyLibTopicCategoryMapper.updateSvyLibTopicCategory(svyLibTopicCategory1); } } } return i; } @Override public int insertSvyLibTopicCategoryTree(SvyLibTopicCategoryVO svyLibTopicCategoryVO) { Integer i = null; if (ObjectUtils.isEmpty(svyLibTopicCategoryVO)) { throw new BaseException("入参为空,请检查后,再新增"); } Integer seqMax = null; try { seqMax = svyLibTopicCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } SvyLibTopicCategory svyLibTopicCategory = DtoConversionUtils.sourceToTarget(svyLibTopicCategoryVO, SvyLibTopicCategory.class); svyLibTopicCategory.setSeqno(1); if (seqMax != null) { svyLibTopicCategory.setSeqno(seqMax + 1); } i = svyLibTopicCategoryMapper.insertSvyLibTopicCategory(svyLibTopicCategory); log.info("问题话术分类库一级树的主键:{}", svyLibTopicCategory.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(svyLibTopicCategoryVO.getSvyLibTopicCategoryList())) { for (SvyLibTopicCategory svyLibTopicCategory1 : svyLibTopicCategoryVO.getSvyLibTopicCategoryList()) { Integer seqMax1 = null; try { seqMax1 = svyLibTopicCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } svyLibTopicCategory1.setPid(svyLibTopicCategory.getId()); svyLibTopicCategory1.setSeqno(1); if (seqMax1 != null) { svyLibTopicCategory1.setSeqno(seqMax1 + 1); } svyLibTopicCategoryMapper.insertSvyLibTopicCategory(svyLibTopicCategory1); } } return i; } /** * 删除问卷题目分类信息 * * @param id 问卷题目分类主键 * @return 结果 */ @Override public int deleteSvyLibTopicCategoryById(Long id) { return svyLibTopicCategoryMapper.deleteSvyLibTopicCategoryById(id); } }