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.SvyLibTemplateCategory; import com.smartor.domain.SvyLibTemplateCategoryVO; import com.smartor.mapper.SvyLibTemplateCategoryMapper; import com.smartor.service.ISvyLibTemplateCategoryService; 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 SvyLibTemplateCategoryServiceImpl implements ISvyLibTemplateCategoryService { @Autowired private SvyLibTemplateCategoryMapper svyLibTemplateCategoryMapper; /** * 查询问卷模板分类 * * @param id 问卷模板分类主键 * @return 问卷模板分类 */ @Override public SvyLibTemplateCategory selectSvyLibTemplateCategoryById(Long id) { return svyLibTemplateCategoryMapper.selectSvyLibTemplateCategoryById(id); } /** * 查询问卷模板分类列表 * * @param svyLibTemplateCategory 问卷模板分类 * @return 问卷模板分类 */ @Override public List selectSvyLibTemplateCategoryList(SvyLibTemplateCategory svyLibTemplateCategory) { List svyLibTemplateCategories = svyLibTemplateCategoryMapper.selectSvyLibTemplateCategoryList(svyLibTemplateCategory); //将pid为空的,过滤掉 svyLibTemplateCategories = svyLibTemplateCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList()); List svyLibTemplateCategoryVOList = DtoConversionUtils.sourceToTarget(svyLibTemplateCategories, SvyLibTemplateCategoryVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 for (SvyLibTemplateCategoryVO svyLibTemplateCategoryVO : svyLibTemplateCategoryVOList) { if (svyLibTemplateCategoryVO.getPid() != null) { continue; } SvyLibTemplateCategory svyLibTemplateCategory1 = new SvyLibTemplateCategory(); svyLibTemplateCategory1.setPid(svyLibTemplateCategoryVO.getId()); List svyLibTemplateCategoryList = svyLibTemplateCategoryMapper.selectSvyLibTemplateCategoryList(svyLibTemplateCategory1); if (!Collections.isEmpty(svyLibTemplateCategoryList)) { svyLibTemplateCategoryVO.setSvyLibTemplateCategoryList(svyLibTemplateCategoryList); } } return svyLibTemplateCategoryVOList; } /** * 新增问卷模板分类 * * @param svyLibTemplateCategory 问卷模板分类 * @return 结果 */ @Override public int insertSvyLibTemplateCategory(SvyLibTemplateCategory svyLibTemplateCategory) { svyLibTemplateCategory.setCreateTime(DateUtils.getNowDate()); return svyLibTemplateCategoryMapper.insertSvyLibTemplateCategory(svyLibTemplateCategory); } /** * 修改问卷模板分类 * * @param svyLibTemplateCategory 问卷模板分类 * @return 结果 */ @Override public int updateSvyLibTemplateCategory(SvyLibTemplateCategory svyLibTemplateCategory) { svyLibTemplateCategory.setUpdateTime(DateUtils.getNowDate()); return svyLibTemplateCategoryMapper.updateSvyLibTemplateCategory(svyLibTemplateCategory); } /** * 批量删除问卷模板分类 * * @param ids 需要删除的问卷模板分类主键 * @return 结果 */ @Override public int deleteSvyLibTemplateCategoryByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("问卷模板分类的ID小于0,为默认分类,不能删除,id:{}", id); continue; } i = svyLibTemplateCategoryMapper.deleteSvyLibTemplateCategoryById(id); SvyLibTemplateCategory svyLibTemplateCategory = new SvyLibTemplateCategory(); svyLibTemplateCategory.setPid(id); //放到未分配下面 List svyLibTemplateCategoryList = svyLibTemplateCategoryMapper.selectSvyLibTemplateCategoryList(svyLibTemplateCategory); if (CollectionUtils.isNotEmpty(svyLibTemplateCategoryList)) { for (SvyLibTemplateCategory svyLibTemplateCategory1 : svyLibTemplateCategoryList) { svyLibTemplateCategory1.setPid(-1L); svyLibTemplateCategoryMapper.updateSvyLibTemplateCategory(svyLibTemplateCategory1); } } } return i; } @Override public int insertSvyLibTemplateCategoryTree(SvyLibTemplateCategoryVO svyLibTemplateCategoryVO) { Integer i = null; if (ObjectUtils.isEmpty(svyLibTemplateCategoryVO)) { throw new BaseException("入参为空,请检查后,再新增"); } //获取序号最大值 Integer seqMax = null; try { seqMax = svyLibTemplateCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } SvyLibTemplateCategory svyLibTemplateCategory = DtoConversionUtils.sourceToTarget(svyLibTemplateCategoryVO, SvyLibTemplateCategory.class); svyLibTemplateCategory.setSeqno(1); if (seqMax != null) { svyLibTemplateCategory.setSeqno(seqMax + 1); } i = svyLibTemplateCategoryMapper.insertSvyLibTemplateCategory(svyLibTemplateCategory); log.info("问题话术分类库一级树的主键:{}", svyLibTemplateCategory.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(svyLibTemplateCategoryVO.getSvyLibTemplateCategoryList())) { for (SvyLibTemplateCategory svyLibTemplateCategory1 : svyLibTemplateCategoryVO.getSvyLibTemplateCategoryList()) { Integer seqMax1 = null; try { seqMax1 = svyLibTemplateCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } svyLibTemplateCategory1.setPid(svyLibTemplateCategory.getId()); svyLibTemplateCategory1.setSeqno(1); if (seqMax1 != null) { svyLibTemplateCategory1.setSeqno(seqMax1 + 1); } svyLibTemplateCategory1.setGuid(svyLibTemplateCategoryVO.getGuid()); svyLibTemplateCategory1.setOrgid(svyLibTemplateCategoryVO.getOrgid()); svyLibTemplateCategoryMapper.insertSvyLibTemplateCategory(svyLibTemplateCategory1); } } return i; } }