package cn.besteam.modules.medical.service.impl; import cn.besteam.common.constant.ErrorCode; import cn.besteam.common.constant.MedicalWasteEnum; import cn.besteam.common.exception.BusinessException; import cn.besteam.modules.medical.dto.MwWarningRecordHandleDTO; import cn.besteam.modules.medical.entity.MwWarningRecord; import cn.besteam.modules.medical.entity.MwWarningRecordHandle; import cn.besteam.modules.medical.mapper.MwWarningRecordHandleMapper; import cn.besteam.modules.medical.service.IMwWarningRecordHandleService; import cn.besteam.modules.medical.service.IMwWarningRecordService; import cn.besteam.modules.medical.vo.MwWarningRecordHandleVO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @Description: 预警消息-处理记录 * @author: besteam * @date: 2020-07-17 * @version: V1.0 */ @Service public class MwWarningRecordHandleServiceImpl extends ServiceImpl implements IMwWarningRecordHandleService { @Autowired private IMwWarningRecordService mwWarningRecordService; @Override public List listByWarningRecord(Integer warningRecordId) { return baseMapper.listByWarningRecord(warningRecordId); } @Transactional @Override public boolean handle(MwWarningRecordHandleDTO dto) { MwWarningRecord warningRecord = mwWarningRecordService.getById(dto.getWarningRecordId()); if (warningRecord == null) { throw new BusinessException(ErrorCode.ERR_500, "预警信息不存在"); } if (warningRecord.getStatus().equals(MedicalWasteEnum.WarningRecordStatusEnum.PASS.getStatus())) { throw new BusinessException(ErrorCode.ERR_500, "预警信息已通过,不能重复提交"); } warningRecord.setStatus(dto.getStatus()); mwWarningRecordService.updateById(warningRecord); // MwWarningRecordHandle mwWarningRecordHandle = new MwWarningRecordHandle(); mwWarningRecordHandle.setWarningRecordId(warningRecord.getId()); mwWarningRecordHandle.setContent(dto.getContent()); mwWarningRecordHandle.setStatus(dto.getStatus()); return save(mwWarningRecordHandle); } @Transactional @Override public boolean batchHandle(List list, String content, Integer status) { List warningRecordList = mwWarningRecordService.listByIds(list.stream().map(MwWarningRecordHandleDTO::getWarningRecordId).collect(Collectors.toList())); if (CollectionUtils.isEmpty(warningRecordList)) { throw new BusinessException(ErrorCode.ERR_500, "预警信息列表不能为空"); } long count = warningRecordList.stream().map(MwWarningRecord::getType).collect(Collectors.toSet()).size(); if (count > 1) { throw new BusinessException(ErrorCode.ERR_500, "只能选择同一类型的预警信息"); } List mwWarningRecordHandleList = new ArrayList<>(warningRecordList.size()); for (MwWarningRecord warningRecord : warningRecordList) { if (warningRecord.getStatus().equals(MedicalWasteEnum.WarningRecordStatusEnum.PASS.getStatus())) { throw new BusinessException(ErrorCode.ERR_500, "预警信息已通过,不能重复提交"); } warningRecord.setStatus(status); //; MwWarningRecordHandle mwWarningRecordHandle = new MwWarningRecordHandle(); mwWarningRecordHandle.setWarningRecordId(warningRecord.getId()); mwWarningRecordHandle.setContent(content); mwWarningRecordHandle.setStatus(status); mwWarningRecordHandleList.add(mwWarningRecordHandle); } mwWarningRecordService.updateBatchById(warningRecordList); return saveBatch(mwWarningRecordHandleList); } }