package com.sinata.system.service.impl;
|
|
import cn.idev.excel.util.StringUtils;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.sinata.common.core.domain.entity.SysDictData;
|
import com.sinata.common.core.domain.entity.SysDictType;
|
import com.sinata.common.entity.PageDTO;
|
import com.sinata.common.exception.ServiceException;
|
import com.sinata.common.utils.BeanUtils;
|
import com.sinata.common.utils.CollUtils;
|
import com.sinata.common.utils.DictUtils;
|
import com.sinata.system.domain.dto.SysDictDataDTO;
|
import com.sinata.system.domain.query.KeyWordQuery;
|
import com.sinata.system.domain.vo.SysDictDataVO;
|
import com.sinata.system.mapper.SysDictDataMapper;
|
import com.sinata.system.mapper.SysDictTypeMapper;
|
import com.sinata.system.service.ISysDictDataService;
|
import org.jetbrains.annotations.Nullable;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* 字典 业务层处理
|
*
|
* @author ruoyi
|
*/
|
@Service
|
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService
|
{
|
@Autowired
|
private SysDictDataMapper dictDataMapper;
|
@Autowired
|
private SysDictTypeMapper dictTypeMapper;
|
|
/**
|
* 根据条件分页查询字典数据
|
*
|
* @param dictData 字典数据信息
|
* @return 字典数据集合信息
|
*/
|
@Override
|
public List<SysDictData> selectDictDataList(SysDictData dictData)
|
{
|
return dictDataMapper.selectDictDataList(dictData);
|
}
|
|
/**
|
* 根据字典类型和字典键值查询字典数据信息
|
*
|
* @param dictType 字典类型
|
* @param dictValue 字典键值
|
* @return 字典标签
|
*/
|
@Override
|
public String selectDictLabel(String dictType, String dictValue)
|
{
|
return dictDataMapper.selectDictLabel(dictType, dictValue);
|
}
|
|
/**
|
* 根据字典数据ID查询信息
|
*
|
* @param dictCode 字典数据ID
|
* @return 字典数据
|
*/
|
@Override
|
public SysDictData selectDictDataById(Long dictCode)
|
{
|
return dictDataMapper.selectDictDataById(dictCode);
|
}
|
|
/**
|
* 批量删除字典数据信息
|
*
|
* @param dictCodes 需要删除的字典数据ID
|
*/
|
@Override
|
public void deleteDictDataByIds(Long[] dictCodes)
|
{
|
for (Long dictCode : dictCodes)
|
{
|
SysDictData data = selectDictDataById(dictCode);
|
dictDataMapper.deleteDictDataById(dictCode);
|
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
|
DictUtils.setDictCache(data.getDictType(), dictDatas);
|
}
|
}
|
|
/**
|
* 新增保存字典数据信息
|
*
|
* @param data 字典数据信息
|
* @return 结果
|
*/
|
@Override
|
public int insertDictData(SysDictData data)
|
{
|
int row = dictDataMapper.insertDictData(data);
|
if (row > 0)
|
{
|
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
|
DictUtils.setDictCache(data.getDictType(), dictDatas);
|
}
|
return row;
|
}
|
|
/**
|
* 修改保存字典数据信息
|
*
|
* @param data 字典数据信息
|
* @return 结果
|
*/
|
@Override
|
public int updateDictData(SysDictData data)
|
{
|
int row = dictDataMapper.updateDictData(data);
|
if (row > 0)
|
{
|
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
|
DictUtils.setDictCache(data.getDictType(), dictDatas);
|
}
|
return row;
|
}
|
|
@Override
|
public PageDTO<SysDictDataVO> pageList(KeyWordQuery query) {
|
Page<SysDictData> result = this.lambdaQuery().like(StringUtils.isNotBlank(query.getKeyword()), SysDictData::getDictLabel, query.getKeyword()).page(new Page<>(query.getPageCurr(), query.getPageSize()));
|
List<String> dictTypeList = result.getRecords().stream().map(SysDictData::getDictType).distinct().collect(Collectors.toList());
|
if (CollUtils.isNotEmpty(dictTypeList)) {
|
PageDTO<SysDictDataVO> sysDictDataVOPageDTO = PageDTO.of(result, SysDictDataVO.class);
|
List<SysDictType> sysDictTypes = dictTypeMapper.selectList(new LambdaQueryWrapper<SysDictType>().in(SysDictType::getDictType, dictTypeList));
|
sysDictDataVOPageDTO.getList().forEach(vo -> {
|
sysDictTypes.forEach(sysDictType -> {
|
if (sysDictType.getDictType().equals(vo.getDictType())) {
|
vo.setDictTypeName(sysDictType.getDictName());
|
}
|
});
|
});
|
return sysDictDataVOPageDTO;
|
}
|
return PageDTO.empty(result);
|
}
|
|
@Override
|
public void save(SysDictDataDTO dto) {
|
SysDictData sysDictData = BeanUtils.copyBean(dto, SysDictData.class);
|
SysDictType sysDictType = dictTypeMapper.selectDictTypeByType(dto.getDictType());
|
if (Objects.isNull(sysDictType)) {
|
throw new ServiceException("字典类型不存在");
|
}
|
if (Objects.nonNull(sysDictData.getDictCode())) {
|
baseMapper.updateById(sysDictData);
|
} else {
|
baseMapper.insert(sysDictData);
|
}
|
}
|
|
@Override
|
public List<SysDictDataVO> medicalWasteTypeList() {
|
return getSysDictDataVOListByType("medical_waste_type");
|
}
|
|
@Nullable
|
private List<SysDictDataVO> getSysDictDataVOListByType(String dictType) {
|
List<SysDictData> medicalWasteTypeList = lambdaQuery().eq(SysDictData::getDictType, dictType).list();
|
return BeanUtils.copyToList(medicalWasteTypeList, SysDictDataVO.class);
|
}
|
|
/**
|
* 器具类型列表
|
*
|
* @return
|
*/
|
@Override
|
public List<SysDictDataVO> equipmentTypeList() {
|
return getSysDictDataVOListByType("protection_equipment_type");
|
}
|
|
/**
|
* 规章制度类型列表
|
*
|
* @return
|
*/
|
@Override
|
public List<SysDictDataVO> regulationsTypeList() {
|
return getSysDictDataVOListByType("protection_regulation_type");
|
}
|
|
/**
|
* 作业类型
|
*
|
* @return
|
*/
|
@Override
|
public List<SysDictDataVO> workTypeList() {
|
return getSysDictDataVOListByType("protective_work_type");
|
}
|
|
@Override
|
public List<SysDictDataVO> institutionLevelList() {
|
return getSysDictDataVOListByType("institution_level");
|
}
|
|
@Override
|
public List<SysDictDataVO> institutionTypeList() {
|
return getSysDictDataVOListByType("institution_type");
|
}
|
}
|