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.IvrLibaTargetAssort; import com.smartor.domain.SvyLibScriptCategory; import com.smartor.domain.SvyLibScriptCategoryVO; import com.smartor.mapper.SvyLibScriptCategoryMapper; import com.smartor.service.ISvyLibScriptCategoryService; 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.Date; import java.util.List; import java.util.stream.Collectors; /** * 问卷题目分类Service业务层处理 * * @author ruoyi * @date 2023-12-27 */ @Slf4j @Service public class SvyLibScriptCategoryServiceImpl implements ISvyLibScriptCategoryService { @Autowired private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper; /** * 查询问卷题目分类 * * @param id 问卷题目分类主键 * @return 问卷题目分类 */ @Override public SvyLibScriptCategory selectSvyLibScriptCategoryById(Long id) { return svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(id); } /** * 查询问卷题目分类列表 * * @param svyLibScriptCategory 问卷题目分类 * @return 问卷题目分类 */ @Override public List selectSvyLibScriptCategoryList(SvyLibScriptCategory svyLibScriptCategory) { List svyLibScriptCategories = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryList(svyLibScriptCategory); // //将pid为空的,过滤掉 // svyLibScriptCategories = svyLibScriptCategories.stream().filter(assort -> assort.getPid() != null).collect(Collectors.toList()); List SvyLibScriptCategoryVO = DtoConversionUtils.sourceToTarget(svyLibScriptCategories, SvyLibScriptCategoryVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 for (SvyLibScriptCategoryVO svyLibScriptCategoryVO : SvyLibScriptCategoryVO) { // if (svyLibScriptCategoryVO.getPid() != null) { // continue; // } SvyLibScriptCategory svyLibScriptCategory1 = new SvyLibScriptCategory(); svyLibScriptCategory1.setPid(svyLibScriptCategoryVO.getId()); List svyLibScriptCategories1 = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryList(svyLibScriptCategory1); if (!Collections.isEmpty(svyLibScriptCategories1)) { svyLibScriptCategoryVO.setSvyLibScriptCategoryList(svyLibScriptCategories1); } } return SvyLibScriptCategoryVO; } /** * 新增问卷题目分类 * * @param svyLibScriptCategory 问卷题目分类 * @return 结果 */ @Override public int insertSvyLibScriptCategory(SvyLibScriptCategory svyLibScriptCategory) { svyLibScriptCategory.setCreateTime(DateUtils.getNowDate()); return svyLibScriptCategoryMapper.insertSvyLibScriptCategory(svyLibScriptCategory); } /** * 修改问卷题目分类 * * @param svyLibScriptCategory 问卷题目分类 * @return 结果 */ @Override public int updateSvyLibScriptCategory(SvyLibScriptCategory svyLibScriptCategory) { svyLibScriptCategory.setUpdateTime(DateUtils.getNowDate()); return svyLibScriptCategoryMapper.updateSvyLibScriptCategory(svyLibScriptCategory); } /** * 批量删除问卷题目分类 * * @param ids 需要删除的问卷题目分类主键 * @return 结果 */ @Override public int deleteSvyLibScriptCategoryByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("小于0的值为默认值不能删除:{}", id); continue; } i = svyLibScriptCategoryMapper.deleteSvyLibScriptCategoryById(id); SvyLibScriptCategory svyLibScriptCategory = new SvyLibScriptCategory(); svyLibScriptCategory.setPid(id); List svyLibScriptCategories = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryList(svyLibScriptCategory); if (CollectionUtils.isNotEmpty(svyLibScriptCategories)) { for (SvyLibScriptCategory svyLibScriptCategory1 : svyLibScriptCategories) { svyLibScriptCategory1.setPid(-1L); svyLibScriptCategoryMapper.updateSvyLibScriptCategory(svyLibScriptCategory1); } } } return i; } @Override public int insertSvyLibScriptCategoryTree(SvyLibScriptCategoryVO svyLibScriptCategoryVO) { Integer i = null; if (ObjectUtils.isEmpty(svyLibScriptCategoryVO)) { throw new BaseException("入参为空,请检查后,再新增"); } Integer seqMax = null; try { seqMax = svyLibScriptCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } SvyLibScriptCategory svyLibScriptCategory = DtoConversionUtils.sourceToTarget(svyLibScriptCategoryVO, SvyLibScriptCategory.class); svyLibScriptCategory.setSeqno(1); if (seqMax != null) { svyLibScriptCategory.setSeqno(seqMax + 1); } svyLibScriptCategory.setUpdateTime(new Date()); svyLibScriptCategory.setCreateTime(new Date()); if (svyLibScriptCategory.getPid() == null) svyLibScriptCategory.setPid((long) -1); i = svyLibScriptCategoryMapper.insertSvyLibScriptCategory(svyLibScriptCategory); log.info("问题话术分类库一级树的主键:{}", svyLibScriptCategory.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(svyLibScriptCategoryVO.getSvyLibScriptCategoryList())) { for (SvyLibScriptCategory svyLibScriptCategory1 : svyLibScriptCategoryVO.getSvyLibScriptCategoryList()) { Integer seqMax1 = null; try { seqMax1 = svyLibScriptCategoryMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } svyLibScriptCategory1.setPid(svyLibScriptCategory.getId()); svyLibScriptCategory1.setSeqno(1); if (seqMax1 != null) { svyLibScriptCategory1.setSeqno(seqMax1 + 1); } svyLibScriptCategory1.setGuid(svyLibScriptCategoryVO.getGuid()); svyLibScriptCategory1.setOrgid(svyLibScriptCategoryVO.getOrgid()); svyLibScriptCategoryMapper.insertSvyLibScriptCategory(svyLibScriptCategory1); } } return i; } /** * 删除问卷题目分类信息 * * @param id 问卷题目分类主键 * @return 结果 */ @Override public int deleteSvyLibScriptCategoryById(Long id) { return svyLibScriptCategoryMapper.deleteSvyLibScriptCategoryById(id); } }