package com.sinata.system.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.sinata.common.exception.ServiceException;
|
import com.sinata.common.utils.CollUtils;
|
import com.sinata.system.domain.MwWarningConfig;
|
import com.sinata.system.domain.MwWarningConfigItem;
|
import com.sinata.system.domain.dto.MwWarningConfigDTO;
|
import com.sinata.system.domain.vo.MwWarningConfigItemVO;
|
import com.sinata.system.domain.vo.MwWarningConfigVO;
|
import com.sinata.system.domain.vo.SysDictDataVO;
|
import com.sinata.system.enums.WarningConfigTypeEnum;
|
import com.sinata.system.mapper.MwWarningConfigMapper;
|
import com.sinata.system.service.ISysDictDataService;
|
import com.sinata.system.service.MwWarningConfigItemService;
|
import com.sinata.system.service.MwWarningConfigService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 预警配置 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-12-02
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class MwWarningConfigServiceImpl extends ServiceImpl<MwWarningConfigMapper, MwWarningConfig> implements MwWarningConfigService {
|
private final MwWarningConfigItemService mwWarningConfigItemService;
|
private final ISysDictDataService sysDictDataService;
|
/**
|
* 保存设置
|
*
|
* @param dto
|
* @return
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void saveConfig(MwWarningConfigDTO dto) {
|
MwWarningConfig mwWarningConfig = BeanUtil.copyProperties(dto, MwWarningConfig.class);
|
MwWarningConfig config = lambdaQuery().eq(MwWarningConfig::getType, dto.getType()).last("limit 1").one();
|
if (Objects.nonNull(config)) {
|
mwWarningConfig.setId(config.getId());
|
}
|
saveOrUpdate(mwWarningConfig);
|
if (dto.getType().equals(WarningConfigTypeEnum.MEDICAL_WASTE.getCode()) || dto.getType().equals(WarningConfigTypeEnum.STAGING_ROOM_CAPACITY.getCode())) {
|
if (CollUtils.isEmpty(dto.getWarningConfigItemList())) {
|
throw new ServiceException("预警配置项不能为空");
|
}
|
//清空配置项
|
mwWarningConfigItemService.lambdaUpdate().eq(MwWarningConfigItem::getConfigId, mwWarningConfig.getId()).remove();
|
List<MwWarningConfigItem> mwWarningConfigItems = BeanUtil.copyToList(dto.getWarningConfigItemList(), MwWarningConfigItem.class);
|
mwWarningConfigItems.forEach(item -> {
|
item.setConfigId(mwWarningConfig.getId());
|
item.setId(null);
|
});
|
mwWarningConfigItemService.saveBatch(mwWarningConfigItems);
|
}
|
}
|
|
/**
|
* 根据类型获取配置信息
|
*
|
* @param type
|
* @return
|
*/
|
@Override
|
public MwWarningConfigVO getByType(Integer type) {
|
MwWarningConfig mwWarningConfig = lambdaQuery().eq(MwWarningConfig::getType, type).last("limit 1").one();
|
MwWarningConfigVO mwWarningConfigVO = null;
|
if (Objects.nonNull(mwWarningConfig)) {
|
mwWarningConfigVO = BeanUtil.copyProperties(mwWarningConfig, MwWarningConfigVO.class);
|
List<MwWarningConfigItem> mwWarningConfigItems = mwWarningConfigItemService.lambdaQuery().eq(MwWarningConfigItem::getConfigId, mwWarningConfig.getId()).list();
|
if (type.equals(WarningConfigTypeEnum.MEDICAL_WASTE.getCode())) {
|
mwWarningConfigVO.setWarningConfigItemList(BeanUtil.copyToList(mwWarningConfigItems, MwWarningConfigItemVO.class));
|
if (CollUtils.isEmpty(mwWarningConfigItems)) {
|
List<SysDictDataVO> sysDictDataVOS = sysDictDataService.medicalWasteTypeList();
|
List<MwWarningConfigItemVO> res = sysDictDataVOS.stream().map(item -> {
|
MwWarningConfigItemVO vo = new MwWarningConfigItemVO();
|
vo.setWasteType(item.getDictCode());
|
vo.setWasteTypeStr(item.getDictLabel());
|
return vo;
|
}).collect(Collectors.toList());
|
mwWarningConfigVO.setWarningConfigItemList(res);
|
}
|
|
}
|
if (type.equals(WarningConfigTypeEnum.STAGING_ROOM_CAPACITY.getCode())) {
|
mwWarningConfigVO.setWarningConfigItemList(BeanUtil.copyToList(mwWarningConfigItems, MwWarningConfigItemVO.class));
|
}
|
}
|
return mwWarningConfigVO;
|
}
|
}
|