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<HeLibraryAssortVO> selectHeLibraryAssortList(HeLibraryAssort heLibraryAssort) { 
 | 
        List<HeLibraryAssort> heLibraryAssorts = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort); 
 | 
        List<HeLibraryAssortVO> heLibraryAssortVOS = DtoConversionUtils.sourceToTarget(heLibraryAssorts, HeLibraryAssortVO.class); 
 | 
  
 | 
        List<HeLibraryAssortVO> rootList = new ArrayList<>(); 
 | 
        Map<Long, HeLibraryAssortVO> 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<HeLibraryAssort> 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); 
 | 
    } 
 | 
} 
 |