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); //将pid为空的,过滤掉 List heLibraryAssortList2 = new ArrayList<>(); for (HeLibraryAssort heLibraryAssort1 : heLibraryAssorts) { // if (heLibraryAssort1.getPid() != null) { heLibraryAssortList2.add(heLibraryAssort1); // } } List heLibraryAssortVOS = DtoConversionUtils.sourceToTarget(heLibraryAssortList2, HeLibraryAssortVO.class); //遍历查出来的数据,通过 id=pid 获取他们的子数据 List heLibraryAssortVOArrayList = new ArrayList<>(); for (HeLibraryAssortVO heLibraryAssortVO : heLibraryAssortVOS) { if (heLibraryAssortVO.getPid() != null) { continue; } HeLibraryAssort heLibraryAssort1 = new HeLibraryAssort(); heLibraryAssort1.setPid(heLibraryAssortVO.getId()); List heLibraryAssortList = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort1); if (!Collections.isEmpty(heLibraryAssortList)) { heLibraryAssortVO.setHeLibraryAssortList(heLibraryAssortList); } heLibraryAssortVOArrayList.add(heLibraryAssortVO); } return heLibraryAssortVOArrayList; } /** * 新增宣教分类 * * @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); } }