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.SvyLibTitleCategory; import com.smartor.domain.SvyLibTitleCategoryVO; import com.smartor.mapper.SvyLibTitleCategoryMapper; import com.smartor.service.ISvyLibTitleCategoryService; 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 SvyLibTitleCategoryServiceImpl implements ISvyLibTitleCategoryService { @Autowired private SvyLibTitleCategoryMapper svyLibTitleCategoryMapper; /** * 查询问卷模板分类 * * @param id 问卷模板分类主键 * @return 问卷模板分类 */ @Override public SvyLibTitleCategory selectSvyLibTitleCategoryById(Long id) { return svyLibTitleCategoryMapper.selectSvyLibTitleCategoryById(id); } /** * 查询问卷模板分类列表 * * @param svyLibTitleCategory 问卷模板分类 * @return 问卷模板分类 */ @Override public List selectSvyLibTitleCategoryList(SvyLibTitleCategory svyLibTitleCategory) { List svyLibTitleCategories = svyLibTitleCategoryMapper.selectSvyLibTitleCategoryList(svyLibTitleCategory); //将pid为空的,过滤掉 svyLibTitleCategories = svyLibTitleCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList()); List svyLibTitleCategoryVOList = DtoConversionUtils.sourceToTarget(svyLibTitleCategories, SvyLibTitleCategoryVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 for (SvyLibTitleCategoryVO svyLibTitleCategoryVO : svyLibTitleCategoryVOList) { if (svyLibTitleCategoryVO.getPid() != null) { continue; } SvyLibTitleCategory svyLibTitleCategory1 = new SvyLibTitleCategory(); svyLibTitleCategory1.setPid(svyLibTitleCategoryVO.getId()); List svyLibTitleCategoryList = svyLibTitleCategoryMapper.selectSvyLibTitleCategoryList(svyLibTitleCategory1); if (!Collections.isEmpty(svyLibTitleCategoryList)) { svyLibTitleCategoryVO.setSvyLibTitleCategoryList(svyLibTitleCategoryList); } } return svyLibTitleCategoryVOList; } /** * 新增问卷模板分类 * * @param svyLibTitleCategory 问卷模板分类 * @return 结果 */ @Override public int insertSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory) { svyLibTitleCategory.setCreateTime(DateUtils.getNowDate()); return svyLibTitleCategoryMapper.insertSvyLibTitleCategory(svyLibTitleCategory); } /** * 修改问卷模板分类 * * @param svyLibTitleCategory 问卷模板分类 * @return 结果 */ @Override public int updateSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory) { svyLibTitleCategory.setUpdateTime(DateUtils.getNowDate()); return svyLibTitleCategoryMapper.updateSvyLibTitleCategory(svyLibTitleCategory); } /** * 批量删除问卷模板分类 * * @param ids 需要删除的问卷模板分类主键 * @return 结果 */ @Override public int deleteSvyLibTitleCategoryByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("问卷模板分类的ID小于0,为默认分类,不能删除,id:{}", id); continue; } i = svyLibTitleCategoryMapper.deleteSvyLibTitleCategoryById(id); SvyLibTitleCategory svyLibTitleCategory = new SvyLibTitleCategory(); svyLibTitleCategory.setPid(id); //放到未分配下面 List svyLibTitleCategoryList = svyLibTitleCategoryMapper.selectSvyLibTitleCategoryList(svyLibTitleCategory); if (CollectionUtils.isNotEmpty(svyLibTitleCategoryList)) { for (SvyLibTitleCategory svyLibTitleCategory1 : svyLibTitleCategoryList) { svyLibTitleCategory1.setPid(-1L); svyLibTitleCategoryMapper.updateSvyLibTitleCategory(svyLibTitleCategory1); } } } return i; } @Override public int insertSvyLibTitleCategoryTree(SvyLibTitleCategoryVO svyLibTitleCategoryVO) { Integer i = null; if (ObjectUtils.isEmpty(svyLibTitleCategoryVO)) { throw new BaseException("入参为空,请检查后,再新增"); } //获取序号最大值 Integer seqMax = null; try { seqMax = svyLibTitleCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } SvyLibTitleCategory svyLibTitleCategory = DtoConversionUtils.sourceToTarget(svyLibTitleCategoryVO, SvyLibTitleCategory.class); svyLibTitleCategory.setSeqno(1); if (seqMax != null) { svyLibTitleCategory.setSeqno(seqMax + 1); } i = svyLibTitleCategoryMapper.insertSvyLibTitleCategory(svyLibTitleCategory); log.info("问题话术分类库一级树的主键:{}", svyLibTitleCategory.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(svyLibTitleCategoryVO.getSvyLibTitleCategoryList())) { for (SvyLibTitleCategory svyLibTitleCategory1 : svyLibTitleCategoryVO.getSvyLibTitleCategoryList()) { Integer seqMax1 = null; try { seqMax1 = svyLibTitleCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } svyLibTitleCategory1.setPid(svyLibTitleCategory.getId()); svyLibTitleCategory1.setSeqno(1); if (seqMax1 != null) { svyLibTitleCategory1.setSeqno(seqMax1 + 1); } svyLibTitleCategoryMapper.insertSvyLibTitleCategory(svyLibTitleCategory1); } } return i; } }