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.enums.WarningConfigTypeEnum;
|
import com.sinata.system.mapper.MwWarningConfigMapper;
|
import com.sinata.system.service.MwWarningConfigItemService;
|
import com.sinata.system.service.MwWarningConfigService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 预警配置 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-12-02
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class MwWarningConfigServiceImpl extends ServiceImpl<MwWarningConfigMapper, MwWarningConfig> implements MwWarningConfigService {
|
private final MwWarningConfigItemService mwWarningConfigItemService;
|
|
/**
|
* 保存设置
|
*
|
* @param dto
|
* @return
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void saveConfig(MwWarningConfigDTO dto) {
|
MwWarningConfig mwWarningConfig = lambdaQuery().eq(MwWarningConfig::getType, dto.getType()).last("limit 1").oneOpt().orElse(new MwWarningConfig());
|
BeanUtils.copyProperties(dto, mwWarningConfig);
|
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()));
|
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);
|
if (type.equals(WarningConfigTypeEnum.MEDICAL_WASTE.getCode()) || type.equals(WarningConfigTypeEnum.STAGING_ROOM_CAPACITY.getCode())) {
|
List<MwWarningConfigItem> mwWarningConfigItems = mwWarningConfigItemService.lambdaQuery().eq(MwWarningConfigItem::getConfigId, mwWarningConfig.getId()).list();
|
mwWarningConfigVO.setWarningConfigItemList(BeanUtil.copyToList(mwWarningConfigItems, MwWarningConfigItemVO.class));
|
}
|
}
|
return mwWarningConfigVO;
|
}
|
}
|