package cn.iocoder.yudao.module.mes.service.safety; import cn.iocoder.yudao.framework.common.pojo.*; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.risk.SafetyRiskSourceSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyRiskSourceDO; import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyRiskSourceMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.invalidParamException; @Service public class SafetyRiskSourceService { @Resource private SafetyRiskSourceMapper mapper; public PageResult page(PageParam page, String name) { return mapper.selectPage(page, new LambdaQueryWrapperX().likeIfPresent(SafetyRiskSourceDO::getName,name).orderByDesc(SafetyRiskSourceDO::getId)); } @Transactional(rollbackFor=Exception.class) public Long save(SafetyRiskSourceSaveReqVO req) { SafetyRiskSourceDO old = req.getId()==null ? null : mapper.selectById(req.getId()); if (req.getId()!=null && old==null) throw invalidParamException("危险源不存在"); String status; try { status=SafetyRiskThreshold.evaluate(req.getCurrentValue(),req.getLowerLimit(),req.getUpperLimit()); } catch (IllegalArgumentException e) { throw invalidParamException(e.getMessage()); } var row=BeanUtils.toBean(req,SafetyRiskSourceDO.class); row.setRiskStatus(status); row.setObservedAt(req.getCurrentValue()==null ? null : old==null || !Objects.equals(old.getCurrentValue(),req.getCurrentValue()) ? LocalDateTime.now() : old.getObservedAt()); if (old==null) mapper.insert(row); else mapper.updateById(row); return row.getId(); } public void delete(Long id) { if (mapper.selectById(id)==null) throw invalidParamException("危险源不存在"); mapper.deleteById(id); } }