package com.smartor.service.impl; import java.util.*; import java.util.stream.Collectors; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DtoConversionUtils; import com.smartor.domain.*; import com.smartor.mapper.HeLibraryAssortMapper; import com.smartor.service.IHeLibraryAssortService; 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 org.springframework.transaction.annotation.Transactional; /** * 宣教分类Service业务层处理 * * @author ruoyi * @date 2023-12-24 */ @Slf4j @Service public class HeLibraryAssortServiceImpl implements IHeLibraryAssortService { @Autowired private HeLibraryAssortMapper heLibraryAssortMapper; /** * 查询宣教分类 * * @param id 宣教分类主键 * @return 宣教分类 */ @Override public HeLibraryAssort selectHeLibraryAssortById(Long id) { return heLibraryAssortMapper.selectHeLibraryAssortById(id); } /** * 查询宣教分类列表 * * @param heLibraryAssort 宣教分类 * @return 宣教分类 */ @Override public List selectHeLibraryAssortList(HeLibraryAssort heLibraryAssort) { List heLibraryAssorts = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort); List heLibraryAssortVOS = DtoConversionUtils.sourceToTarget(heLibraryAssorts, HeLibraryAssortVO.class); List rootList = new ArrayList<>(); Map categoryMap = new HashMap<>(); // 建立id->对象的映射 for (HeLibraryAssortVO category : heLibraryAssortVOS) { categoryMap.put(category.getId(), category); } for (HeLibraryAssortVO category : heLibraryAssortVOS) { if (category.getPid() == null || category.getPid() == -1) { // 顶层节点 rootList.add(category); } else { // 找到父节点,并添加到其子节点列表 HeLibraryAssortVO parent = categoryMap.get(category.getPid()); if (parent != null) { HeLibraryAssort sc = DtoConversionUtils.sourceToTarget(category, HeLibraryAssort.class); parent.getHeLibraryAssortList().add(sc); } } } return rootList; } /** * 新增宣教分类 * * @param heLibraryAssort 宣教分类 * @return 结果 */ @Override public int insertHeLibraryAssort(HeLibraryAssort heLibraryAssort) { heLibraryAssort.setCreateTime(DateUtils.getNowDate()); return heLibraryAssortMapper.insertHeLibraryAssort(heLibraryAssort); } /** * 新增宣教分类树 * * @param heLibraryAssortVO 宣教分类 * @return 结果 */ @Override public int insertHeLibraryAssortTree(HeLibraryAssortVO heLibraryAssortVO) { Integer i = null; if (ObjectUtils.isEmpty(heLibraryAssortVO)) { throw new BaseException("入参为空,请检查后,再新增"); } HeLibraryAssort heLibraryAssort = DtoConversionUtils.sourceToTarget(heLibraryAssortVO, HeLibraryAssort.class); //获取序号最大值 Integer seqMax = null; try { seqMax = heLibraryAssortMapper.selectSeqMax(); } catch (Exception e) { seqMax = 0; } if (seqMax != null) { heLibraryAssort.setSeqno(seqMax.longValue() + 1); } else { heLibraryAssort.setSeqno(1L); } if (heLibraryAssort.getId() == null) { i = heLibraryAssortMapper.insertHeLibraryAssort(heLibraryAssort); } //新增二级树 if (CollectionUtils.isNotEmpty(heLibraryAssortVO.getHeLibraryAssortList())) { for (HeLibraryAssort heLibraryAssort1 : heLibraryAssortVO.getHeLibraryAssortList()) { heLibraryAssort1.setPid(heLibraryAssort.getId()); Integer seqMax1 = null; try { seqMax1 = heLibraryAssortMapper.selectSeqMax(); } catch (Exception e) { seqMax1 = 0; } if (seqMax1 != null) { heLibraryAssort1.setSeqno(seqMax1.longValue() + 1); } else { heLibraryAssort1.setSeqno(1L); } heLibraryAssort1.setGuid(heLibraryAssortVO.getGuid()); heLibraryAssort1.setOrgid(heLibraryAssortVO.getOrgid()); heLibraryAssortMapper.insertHeLibraryAssort(heLibraryAssort1); } } return i; } /** * 修改宣教分类 * * @param heLibraryAssort 宣教分类 * @return 结果 */ @Override public int updateHeLibraryAssort(HeLibraryAssort heLibraryAssort) { heLibraryAssort.setUpdateTime(DateUtils.getNowDate()); return heLibraryAssortMapper.updateHeLibraryAssort(heLibraryAssort); } /** * 批量删除宣教分类 * * @param ids 需要删除的宣教分类主键 * @return 结果 */ @Transactional(rollbackFor = Exception.class) @Override public Integer deleteHeLibraryAssortByIds(Long[] ids) { Integer i = null; for (Long id : ids) { if (id < 0) { log.info("宣教分类id小于0,为默认分类,不能删除,id:{}", id); continue; } i = heLibraryAssortMapper.deleteHeLibraryAssortById(id); //删除成功后,如果该删除的ID下有子数据,则将子数据放到未分配下面 HeLibraryAssort heLibraryAssort = new HeLibraryAssort(); heLibraryAssort.setPid(id); List heLibraryAssortList1 = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort); if (CollectionUtils.isNotEmpty(heLibraryAssortList1)) { for (HeLibraryAssort heLibraryAssort1 : heLibraryAssortList1) { //设置未分配ID heLibraryAssort1.setPid(-1L); heLibraryAssortMapper.updateHeLibraryAssort(heLibraryAssort1); } } } return i; } /** * 删除宣教分类信息 * * @param id 宣教分类主键 * @return 结果 */ @Override public int deleteHeLibraryAssortById(Long id) { return heLibraryAssortMapper.deleteHeLibraryAssortById(id); } }