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.IvrLibaScriptAssort; import com.smartor.domain.IvrLibaScriptAssortVO; import com.smartor.domain.SvyCategory; import com.smartor.domain.SvyCategoryVO; import com.smartor.mapper.SvyCategoryMapper; import com.smartor.service.ISvyCategoryService; 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.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 问卷分类Service业务层处理 * * @author ruoyi * @date 2023-03-02 */ @Slf4j @Service public class SvyCategoryServiceImpl implements ISvyCategoryService { @Autowired private SvyCategoryMapper svyCategoryMapper; /** * 查询问卷分类 * * @param categoryname 问卷分类主键 * @return 问卷分类 */ @Override public List selectSvyCategoryById(String categoryname) { return svyCategoryMapper.selectSvyCategoryById(categoryname); } /** * 查询问卷分类列表 * * @param svyCategory 问卷分类 * @return 问卷分类 */ @Override public List selectSvyCategoryList(SvyCategory svyCategory) { List svyCategories = svyCategoryMapper.selectSvyCategoryList(svyCategory); List svyCategoryVOS = DtoConversionUtils.sourceToTarget(svyCategories, SvyCategoryVO.class); List rootList = new ArrayList<>(); Map categoryMap = new HashMap<>(); // 建立id->对象的映射 for (SvyCategoryVO category : svyCategoryVOS) { categoryMap.put(category.getId(), category); } for (SvyCategoryVO category : svyCategoryVOS) { if (category.getPid() == null || category.getPid() == -1) { // 顶层节点 rootList.add(category); } else { // 找到父节点,并添加到其子节点列表 SvyCategoryVO parent = categoryMap.get(category.getPid()); if (parent != null) { SvyCategory sc = DtoConversionUtils.sourceToTarget(category, SvyCategory.class); parent.getSvyCategoryList().add(sc); } } } return rootList; } /** * 新增问卷分类 * * @param svyCategory 问卷分类 * @return 结果 */ @Override public int insertSvyCategory(SvyCategory svyCategory) { svyCategory.setCreateTime(DateUtils.getNowDate()); return svyCategoryMapper.insertSvyCategory(svyCategory); } @Override public int insertSvyCategoryTree(SvyCategoryVO svyCategoryVO) { Integer i = null; if (ObjectUtils.isEmpty(svyCategoryVO)) { throw new BaseException("入参为空,请检查后,再新增"); } SvyCategory svyCategory = DtoConversionUtils.sourceToTarget(svyCategoryVO, SvyCategory.class); i = svyCategoryMapper.insertSvyCategory(svyCategory); log.info("问题话术分类库一级树的主键:{}", svyCategory.getId()); //新增二级树 if (CollectionUtils.isNotEmpty(svyCategoryVO.getSvyCategoryList())) { for (SvyCategory svyCategory1 : svyCategoryVO.getSvyCategoryList()) { svyCategory1.setPid(svyCategory.getId()); svyCategoryMapper.insertSvyCategory(svyCategory1); } } return i; } /** * 修改问卷分类 * * @param svyCategory 问卷分类 * @return 结果 */ @Override public int updateSvyCategory(SvyCategory svyCategory) { svyCategory.setUpdateTime(DateUtils.getNowDate()); return svyCategoryMapper.updateSvyCategory(svyCategory); } /** * 批量删除问卷分类 * * @param ids 需要删除的问卷分类主键 * @return 结果 */ @Override public int deleteSvyCategoryByIds(Long[] ids) { Integer i = null; for (Long id : ids) { i = svyCategoryMapper.deleteSvyCategoryById(id); } return i; } /** * 删除问卷分类信息 * * @param id 问卷分类主键 * @return 结果 */ @Override public int deleteSvyCategoryById(Long id) { return svyCategoryMapper.deleteSvyCategoryById(id); } }