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);
|
}
|
}
|