From 3d4eeb82dd61f8951616dece2425e870116bc23d Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 04 四月 2025 15:56:37 +0800 Subject: [PATCH] 提交最终版本和配置线上环境 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 116 insertions(+), 1 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java index 4bd54e6..c0fd37f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java @@ -1,16 +1,35 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.dataInterchange.api.feignClient.UPWarnMsgAdptInfoClient; +import com.ruoyi.dataInterchange.api.model.enums.WarnType; +import com.ruoyi.dataInterchange.api.vo.UPWarnMsgAdptInfoVo; +import com.ruoyi.system.api.model.Car; +import com.ruoyi.system.api.model.Driver; +import com.ruoyi.system.api.model.Enterprise; import com.ruoyi.system.api.model.Warn; import com.ruoyi.system.mapper.WarnMapper; import com.ruoyi.system.query.CarWarnListReq; import com.ruoyi.system.query.CarWarnListResp; +import com.ruoyi.system.service.ICarService; +import com.ruoyi.system.service.IDriverService; +import com.ruoyi.system.service.IEnterpriseService; import com.ruoyi.system.service.IWarnService; +import com.ruoyi.system.util.GDMapGeocodingUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; /** @@ -20,6 +39,84 @@ @Service public class WarnServiceImpl extends ServiceImpl<WarnMapper, Warn> implements IWarnService { + @Resource + private UPWarnMsgAdptInfoClient upWarnMsgAdptInfoClient; + + @Resource + private IEnterpriseService enterpriseService; + + @Resource + private IDriverService driverService; + + @Resource + private ICarService carService; + + + /** + * 存储新的报警数据 + */ + @Override + public void taskSaveNewWarn() { + Warn warn = this.getOne(new LambdaQueryWrapper<Warn>().orderByDesc(Warn::getCreateTime).last(" limit 1")); + Long createTime = -1L; + if (null != warn) { + createTime = warn.getCreateTime().toEpochSecond(ZoneOffset.ofHours(8)); + } + List<UPWarnMsgAdptInfoVo> list = upWarnMsgAdptInfoClient.findByCreateTimeAfter(createTime).getData(); + if (null == list || list.isEmpty()) { + return; + } + List<Enterprise> list1 = enterpriseService.list(); + List<Driver> driverList = driverService.list(new LambdaQueryWrapper<Driver>().eq(Driver::getStatus, 1)); + List<Car> carList = carService.list(); + List<Warn> warns = new ArrayList<>(); + for (UPWarnMsgAdptInfoVo vo : list) { + warn = new Warn(); + Optional<Car> carOptional = carList.stream().filter(s -> s.getVehicleNumber().equals(vo.getVehicleNo())).findFirst(); + if (carOptional.isPresent()) { + warn.setCarId(carOptional.get().getId()); + } + Optional<Driver> optional = driverList.stream().filter(s -> s.getVehicleNumber().equals(vo.getVehicleNo())).findFirst(); + if (optional.isPresent()) { + warn.setDriverId(optional.get().getId()); + } + Enterprise enterprise = list1.stream().filter(s -> s.getCode().equals(vo.getInferiorPlatformId().toString())).findFirst().get(); + warn.setEnterpriseId(enterprise.getId()); + warn.setStartTime(LocalDateTime.ofInstant(Instant.ofEpochMilli(vo.getCreateTime() * 1000), ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + warn.setEndTime(LocalDateTime.ofInstant(Instant.ofEpochMilli(vo.getCreateTime() * 1000), ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + warn.setWarnType(WarnType.getWarnTypeName(vo.getWarnType())); + warn.setWarnNumber(1); + warn.setSpeed(new BigDecimal(vo.getSpeed())); + warn.setLongitude(Double.valueOf(vo.getLongitude()).toString()); + warn.setLatitude(Double.valueOf(vo.getLatitude()).toString()); + Map<String, String> geocode = null; + try { + geocode = GDMapGeocodingUtil.geocode(warn.getLongitude(), warn.getLatitude()); + } catch (Exception e) { + throw new RuntimeException(e); + } + warn.setAddress(geocode.get("address")); + switch (vo.getResult()) { + case 0x00: + warn.setTreatmentState("处理中"); + break; + case 0x01: + warn.setTreatmentState("已处理完毕"); + break; + case 0x02: + warn.setTreatmentState("不作处理"); + break; + case 0x03: + warn.setTreatmentState("将来处理"); + break; + } + warn.setCreateTime(LocalDateTime.now()); + warns.add(warn); + } + if (warns.size() > 0) { + this.saveBatch(warns); + } + } /** * 获取车辆预警 @@ -41,6 +138,24 @@ */ @Override public List<Map<String, Object>> getWarnGroupCount() { - return this.baseMapper.getWarnGroupCount(); + List<Map<String, Object>> list = this.baseMapper.getWarnGroup10Count(); + List<String> collect = new ArrayList<>(); + for (Map<String, Object> map : list) { + collect.add(map.get("warnType").toString()); + } + List<Map<String, Object>> warnGroupCount = this.baseMapper.getWarnGroupCount(collect); + list.addAll(warnGroupCount); + return list; + } + + + /** + * 获取预警汇总前10排行榜 + * + * @return + */ + @Override + public List<Map<String, Object>> getWarnGroupCountTop10() { + return this.baseMapper.getWarnGroupCountTop10(); } } -- Gitblit v1.7.1