package com.ozs.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.github.pagehelper.PageHelper; import com.ozs.common.core.domain.AjaxResult; import com.ozs.common.utils.AppendUtils; import com.ozs.common.utils.StringUtils; import com.ozs.entity.BaseCameraManagement; import com.ozs.entity.BaseDeviceDynamicManagement; import com.ozs.entity.BaseRailwayManagement; import com.ozs.entity.MsgAlarm; import com.ozs.entity.vo.*; import com.ozs.mapper.BaseCameraManagementMapper; import com.ozs.mapper.BaseDeviceDynamicManagementMapper; import com.ozs.mapper.BaseRailwayManagementMapper; import com.ozs.mapper.MsgAlarmMapper; import com.ozs.service.MsgAlarmService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 报警信息表 服务实现类 *

* * @author ozs * @since 2023-02-22 */ @Service public class MsgAlarmServiceImpl extends ServiceImpl implements MsgAlarmService { @Autowired private MsgAlarmMapper msgAlarmMapper; @Autowired private BaseCameraManagementMapper baseCameraManagementMapper; @Autowired private BaseRailwayManagementMapper baseRailwayManagementMapper; @Autowired private BaseDeviceDynamicManagementMapper baseDeviceDynamicManagementMapper; public IPage listToPage(List list, int pageNum, int pageSize) { List pageList = new ArrayList<>(); int curIdx = pageNum > 1 ? (pageNum - 1) * pageSize : 0; for (int i = 0; i < pageSize && curIdx + i < list.size(); i++) { pageList.add(list.get(curIdx + i)); } IPage page = new Page<>(pageNum, pageSize); page.setRecords(pageList); page.setTotal(list.size()); return page; } //web数据统计 报警数据详情 @Override public List list(String railwayCode, Integer currentYear, Integer currentMonth, Integer pageNum, Integer pageSize) { List list = msgAlarmMapper.list(railwayCode, currentYear, currentMonth); return list; } @Override public List getCount(String railwayCode, Integer currentYear, Integer currentMonth) { List list = msgAlarmMapper.listDtoMonth(railwayCode, currentYear, currentMonth); return list; } @Override public List getDayCount(String railwayCode, Integer currentYear, Integer currentMonth) { List list = msgAlarmMapper.listDtoDay(railwayCode, currentYear, currentMonth); return list; } @Override public List getAlarmTypeCount(String railwayCode, Integer currentYear, Integer currentMonth) { List list = msgAlarmMapper.alarmTypeCount(railwayCode, currentYear, currentMonth); return list; } @Override public List alarmTypeAreaCount(String railwayCode, Integer currentYear, Integer currentMonth) { List list = msgAlarmMapper.alarmTypeAreaCount(railwayCode, currentYear, currentMonth); return list; } @Override public List exportExcel(AlarmStatisticResVo alarmStatisticResVo) { List listDto = msgAlarmMapper.list(alarmStatisticResVo.getRailwayCode(), alarmStatisticResVo.getCurrentYear(), alarmStatisticResVo.getCurrentMonth()); return listDto; } @Override public Long getAlarmNum() { Long alarmNum = msgAlarmMapper.getAlarmNum(); return alarmNum; } @Override public MsgAlarm selectByCameraCode(String cameraCode) { return msgAlarmMapper.selectByCameraCode(cameraCode); } @Override public IPage queryPage(MsgAlarmVo vo) { int pageNum = Integer.parseInt(vo.getPageNum().toString()); int pageSize = Integer.parseInt(vo.getPageSize().toString()); com.github.pagehelper.Page page = PageHelper.startPage(pageNum, pageSize) .doSelectPage(() -> msgAlarmMapper.selectMsgAlarmList(vo)); Page pageR = new Page<>(pageNum, pageSize); pageR.setRecords(page.getResult()); pageR.setTotal(page.getTotal()); return pageR; } @Override public MsgAlarm getByAlarmId(String alarmId) { return msgAlarmMapper.getByAlarmId(alarmId); } @Override public Map statisticsNum(MsgAlarmVo msgAlarmVo) { Map map = new HashMap<>(); // 相机数量 Integer countCamera = baseCameraManagementMapper.countCamera(msgAlarmVo); // 累计报警次数 Integer countMsg = msgAlarmMapper.countMsg(msgAlarmVo); // 解除报警 // LambdaQueryWrapper lwJC = new LambdaQueryWrapper(); // lwJC.eq(MsgAlarm::getIsLock, "1"); Integer countJC = msgAlarmMapper.countJC(msgAlarmVo); // 未解除报警 // LambdaQueryWrapper lwWJC = new LambdaQueryWrapper(); // lwWJC.eq(MsgAlarm::getIsLock, "2"); Integer countWJC = msgAlarmMapper.countWJC(msgAlarmVo); map.put("countCamera", countCamera); map.put("countMsg", countMsg); map.put("countJC", countJC); map.put("countWJC", countWJC); return map; } @Override public Integer appAlarmNum(MsgAlarmVo msgAlarmVo) { return msgAlarmMapper.countWJC(msgAlarmVo); } @Override public List msgAlarmList(MsgAlarmVo msgAlarmVo) { return msgAlarmMapper.selectMsgAlarmList(msgAlarmVo); } @Override public AjaxResult getDate(MsgAlarmVo msgAlarmVo) { // 查询报警信息 MsgAlarm msgAlarm = msgAlarmMapper.selectById(msgAlarmVo.getId()); if (StringUtils.isEmptySunhh(msgAlarm)) { return AjaxResult.error("报警信息不存在!"); } // 查询线路 LambdaQueryWrapper lwBaseRailwayManagement = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(msgAlarmVo.getRailwayCode())) { lwBaseRailwayManagement.eq(BaseRailwayManagement::getRailwayCode, msgAlarmVo.getRailwayCode()); } BaseRailwayManagement baseRailwayManagement = baseRailwayManagementMapper.selectOne(lwBaseRailwayManagement); if (StringUtils.isEmptySunhh(baseRailwayManagement)) { return AjaxResult.error("线路编码:" + msgAlarmVo.getRailwayCode() + "不存在!"); } // 查询里程位置最近的相机 LambdaQueryWrapper lw = new LambdaQueryWrapper<>(); if (!StringUtils.isEmptySunhh(msgAlarmVo.getRailwayCode())) { lw.eq(BaseCameraManagement::getRailwayCode, msgAlarmVo.getRailwayCode()); } if (!StringUtils.isEmptySunhh(msgAlarmVo.getAlarmMile())) { lw.le(BaseCameraManagement::getBeginMile, msgAlarmVo.getAlarmMile()); lw.gt(BaseCameraManagement::getEndMile, msgAlarmVo.getAlarmMile()); } BaseCameraManagement baseCameraManagement = baseCameraManagementMapper.selectOne(lw); if (StringUtils.isEmptySunhh(baseCameraManagement)) { return AjaxResult.error("线路编码:" + msgAlarmVo.getRailwayCode() + "不存在对应里程范围为:"+ msgAlarmVo.getAlarmMile() +"的相机!"); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (!ObjectUtils.isEmpty(baseCameraManagement.getCameraCode())) { queryWrapper.eq(BaseDeviceDynamicManagement::getCameraCode, baseCameraManagement.getCameraCode()); } BaseDeviceDynamicManagement baseDeviceDynamicManagement = baseDeviceDynamicManagementMapper.selectOne(queryWrapper); if (StringUtils.isEmptySunhh(baseDeviceDynamicManagement)) { return AjaxResult.error("设备动态管理表中没有该相机编码:" + baseCameraManagement.getCameraCode() + "的数据"); } MsgAlarmVo msgAlarmVo1 = new MsgAlarmVo(); // BeanUtils.copyProperties(msgAlarm, msgAlarmVo1); msgAlarmVo1.setRailwayCode(msgAlarm.getRailwayCode()); msgAlarmVo1.setRailwayCodeName(baseRailwayManagement.getRailwayName()); msgAlarmVo1.setAlarmMiles(AppendUtils.stringAppend(msgAlarmVo.getAlarmMile())); msgAlarmVo1.setLineDirStr(baseCameraManagement.getLineDir() == 1 ? "上行" : "下行"); msgAlarmVo1.setCameraCode(baseCameraManagement.getCameraCode()); msgAlarmVo1.setElectricity(baseDeviceDynamicManagement.getElectricity()); msgAlarmVo1.setIsReleaseName(msgAlarm.getIsRelease() == 1 ? "已解除" : "未解除"); return AjaxResult.success(msgAlarmVo1); } }