package com.ruoyi.alarm.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.alarm.dto.AlarmNuisanceStrategyDto;
|
import com.ruoyi.alarm.dto.AlarmRemoveApprovalDto;
|
import com.ruoyi.alarm.mapper.AlarmNuisanceStrategyMapper;
|
import com.ruoyi.alarm.mapper.AlarmPointMapper;
|
import com.ruoyi.alarm.mapper.AlarmRemoveApprovalMapper;
|
import com.ruoyi.alarm.pojo.AlarmNuisanceStrategy;
|
import com.ruoyi.alarm.pojo.AlarmPoint;
|
import com.ruoyi.alarm.pojo.AlarmRemoveApproval;
|
import com.ruoyi.alarm.service.IAlarmOptimizationService;
|
import com.ruoyi.alarm.vo.*;
|
import com.ruoyi.common.utils.bean.BeanUtils;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Service;
|
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Random;
|
|
@Service
|
@AllArgsConstructor
|
public class AlarmOptimizationServiceImpl extends ServiceImpl<AlarmNuisanceStrategyMapper, AlarmNuisanceStrategy> implements IAlarmOptimizationService {
|
|
private AlarmNuisanceStrategyMapper alarmNuisanceStrategyMapper;
|
private AlarmRemoveApprovalMapper alarmRemoveApprovalMapper;
|
private AlarmPointMapper alarmPointMapper;
|
|
@Override
|
public AlarmOptimizationStatisticsVo getStatistics() {
|
AlarmOptimizationStatisticsVo vo = new AlarmOptimizationStatisticsVo();
|
vo.setFilteredCount(1568);
|
vo.setValidRate(85.6);
|
vo.setResponseTime(12);
|
vo.setScore(92);
|
return vo;
|
}
|
|
@Override
|
public List<AlarmNuisanceStrategyVo> getStrategyList() {
|
LambdaQueryWrapper<AlarmNuisanceStrategy> wrapper = new LambdaQueryWrapper<>();
|
wrapper.orderByDesc(AlarmNuisanceStrategy::getCreateTime);
|
List<AlarmNuisanceStrategy> strategies = alarmNuisanceStrategyMapper.selectList(wrapper);
|
|
return strategies.stream().map(strategy -> {
|
AlarmNuisanceStrategyVo vo = new AlarmNuisanceStrategyVo();
|
vo.setStrategyId(strategy.getStrategyId());
|
vo.setStrategyName(strategy.getStrategyName());
|
vo.setStrategyType(strategy.getStrategyType());
|
vo.setDescription(strategy.getDescription());
|
vo.setFilteredCount(strategy.getFilteredCount());
|
vo.setStatus(strategy.getStatus());
|
return vo;
|
}).collect(java.util.stream.Collectors.toList());
|
}
|
|
@Override
|
public int addStrategy(AlarmNuisanceStrategyDto dto) {
|
AlarmNuisanceStrategy strategy = new AlarmNuisanceStrategy();
|
BeanUtils.copyProperties(dto, strategy);
|
strategy.setFilteredCount(0);
|
strategy.setCreateTime(LocalDateTime.now());
|
strategy.setUpdateTime(LocalDateTime.now());
|
return alarmNuisanceStrategyMapper.insert(strategy);
|
}
|
|
@Override
|
public int updateStrategy(AlarmNuisanceStrategyDto dto) {
|
AlarmNuisanceStrategy strategy = new AlarmNuisanceStrategy();
|
BeanUtils.copyProperties(dto, strategy);
|
strategy.setUpdateTime(LocalDateTime.now());
|
return alarmNuisanceStrategyMapper.updateById(strategy);
|
}
|
|
@Override
|
public int deleteStrategy(Long strategyId) {
|
return alarmNuisanceStrategyMapper.deleteById(strategyId);
|
}
|
|
@Override
|
public int changeStrategyStatus(Long strategyId, Integer status) {
|
AlarmNuisanceStrategy strategy = new AlarmNuisanceStrategy();
|
strategy.setStrategyId(strategyId);
|
strategy.setStatus(status);
|
strategy.setUpdateTime(LocalDateTime.now());
|
return alarmNuisanceStrategyMapper.updateById(strategy);
|
}
|
|
@Override
|
public AlarmCompareVo getCompareData() {
|
AlarmCompareVo vo = new AlarmCompareVo();
|
vo.setCategories(Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"));
|
vo.setBefore(Arrays.asList(120, 132, 101, 134, 90, 230, 210));
|
vo.setAfter(Arrays.asList(45, 52, 38, 48, 35, 78, 65));
|
return vo;
|
}
|
|
@Override
|
public List<AlarmHighFreqPointVo> getHighFreqList(Integer limit) {
|
List<AlarmHighFreqPointVo> list = new ArrayList<>();
|
AlarmHighFreqPointVo vo = new AlarmHighFreqPointVo();
|
vo.setPointName("反应釜温度监测点");
|
vo.setAlarmCount(156);
|
vo.setTrend("下降");
|
list.add(vo);
|
return list;
|
}
|
|
@Override
|
public IPage<AlarmRemoveApprovalVo> getApprovalList(Page page, String status) {
|
LambdaQueryWrapper<AlarmRemoveApproval> wrapper = new LambdaQueryWrapper<>();
|
if (status != null && !status.isEmpty()) {
|
wrapper.eq(AlarmRemoveApproval::getStatus, status);
|
}
|
wrapper.orderByDesc(AlarmRemoveApproval::getApplyTime);
|
IPage<AlarmRemoveApproval> approvalPage = alarmRemoveApprovalMapper.selectPage(page, wrapper);
|
|
return approvalPage.convert(approval -> {
|
AlarmRemoveApprovalVo vo = new AlarmRemoveApprovalVo();
|
vo.setApplyNo(approval.getApplyNo());
|
vo.setRemoveReason(approval.getRemoveReason());
|
vo.setApplicant(approval.getApplicant());
|
vo.setApplyTime(approval.getApplyTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
vo.setStatus(approval.getStatus());
|
|
AlarmPoint point = alarmPointMapper.selectById(approval.getPointId());
|
if (point != null) {
|
vo.setPointName(point.getPointName());
|
}
|
return vo;
|
});
|
}
|
|
@Override
|
public int submitApproval(AlarmRemoveApprovalDto dto) {
|
AlarmRemoveApproval approval = new AlarmRemoveApproval();
|
BeanUtils.copyProperties(dto, approval);
|
approval.setApplyNo("AP" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + String.format("%03d", new Random().nextInt(1000)));
|
approval.setApplicant("当前用户");
|
approval.setApplyTime(LocalDateTime.now());
|
approval.setStatus("pending");
|
approval.setCreateTime(LocalDateTime.now());
|
approval.setUpdateTime(LocalDateTime.now());
|
return alarmRemoveApprovalMapper.insert(approval);
|
}
|
|
@Override
|
public int approveApproval(String applyNo) {
|
AlarmRemoveApproval approval = new AlarmRemoveApproval();
|
LambdaQueryWrapper<AlarmRemoveApproval> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(AlarmRemoveApproval::getApplyNo, applyNo);
|
AlarmRemoveApproval existing = alarmRemoveApprovalMapper.selectOne(wrapper);
|
|
if (existing != null) {
|
approval.setApprovalId(existing.getApprovalId());
|
approval.setStatus("approved");
|
approval.setApprover("审批人");
|
approval.setApproveTime(LocalDateTime.now());
|
approval.setUpdateTime(LocalDateTime.now());
|
int result = alarmRemoveApprovalMapper.updateById(approval);
|
|
// 审批通过后,将对应点位的状态改为停用
|
AlarmPoint point = new AlarmPoint();
|
point.setPointId(existing.getPointId());
|
point.setStatus(0); // 0表示停用
|
point.setUpdateTime(LocalDateTime.now());
|
alarmPointMapper.updateById(point);
|
|
return result;
|
}
|
return 0;
|
}
|
|
@Override
|
public int rejectApproval(String applyNo) {
|
AlarmRemoveApproval approval = new AlarmRemoveApproval();
|
LambdaQueryWrapper<AlarmRemoveApproval> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(AlarmRemoveApproval::getApplyNo, applyNo);
|
AlarmRemoveApproval existing = alarmRemoveApprovalMapper.selectOne(wrapper);
|
|
if (existing != null) {
|
approval.setApprovalId(existing.getApprovalId());
|
approval.setStatus("rejected");
|
approval.setApprover("审批人");
|
approval.setApproveTime(LocalDateTime.now());
|
approval.setUpdateTime(LocalDateTime.now());
|
return alarmRemoveApprovalMapper.updateById(approval);
|
}
|
return 0;
|
}
|
}
|