| | |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.dataInterchange.api.feignClient.UPWarnMsgAdptInfoClient; |
| | | import com.ruoyi.dataInterchange.api.feignClient.UPWarnMsgOperationInfoClient; |
| | | import com.ruoyi.dataInterchange.api.model.enums.WarnType; |
| | | import com.ruoyi.dataInterchange.api.vo.UPWarnMsgAdptInfoVo; |
| | | import com.ruoyi.dataInterchange.api.vo.UPWarnMsgOperationInfoVo; |
| | | import com.ruoyi.system.api.model.Car; |
| | | import com.ruoyi.system.api.model.Driver; |
| | | import com.ruoyi.system.api.model.Enterprise; |
| | |
| | | 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; |
| | | import java.util.*; |
| | | |
| | | |
| | | /** |
| | |
| | | @Resource |
| | | private ICarService carService; |
| | | |
| | | @Resource |
| | | private UPWarnMsgOperationInfoClient upWarnMsgOperationInfoClient; |
| | | |
| | | |
| | | /** |
| | | * 存储新的报警数据 |
| | |
| | | List<Car> carList = carService.list(); |
| | | List<Warn> warns = new ArrayList<>(); |
| | | for (UPWarnMsgAdptInfoVo vo : list) { |
| | | long count = this.count(new LambdaQueryWrapper<Warn>().eq(Warn::getObjectId, vo.getInfoId())); |
| | | if(0 != count){ |
| | | continue; |
| | | } |
| | | String warnTypeName = WarnType.getWarnTypeName(vo.getWarnType()); |
| | | warn = new Warn(); |
| | | Optional<Car> carOptional = carList.stream().filter(s -> s.getVehicleNumber().equals(vo.getVehicleNo())).findFirst(); |
| | |
| | | warn.setWarnNumber(1); |
| | | warn.setSpeed(null == vo.getSpeed() ? BigDecimal.ZERO : new BigDecimal(vo.getSpeed())); |
| | | if(null != vo.getLongitude() && 0 != vo.getLongitude()){ |
| | | warn.setLongitude(new BigDecimal(vo.getLongitude()).divide(new BigDecimal(1000000)).toString()); |
| | | String s = vo.getLongitude().toString(); |
| | | warn.setLongitude(s.substring(0, 3) + "." + s.substring(3)); |
| | | } |
| | | if(null != vo.getLatitude() && 0 != vo.getLatitude()){ |
| | | warn.setLatitude(new BigDecimal(vo.getLatitude()).divide(new BigDecimal(1000000)).toString()); |
| | | String s = vo.getLatitude().toString(); |
| | | warn.setLatitude(s.substring(0, 2) + "." + s.substring(2)); |
| | | Map<String, String> geocode = null; |
| | | try { |
| | | geocode = GDMapGeocodingUtil.geocode(warn.getLongitude(), warn.getLatitude()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | warn.setAddress(geocode.get("address")); |
| | | if(null != geocode){ |
| | | warn.setAddress(geocode.get("address")); |
| | | } |
| | | } |
| | | switch (vo.getResult()) { |
| | | case 0x00: |
| | |
| | | warn.setTreatmentState("将来处理"); |
| | | break; |
| | | } |
| | | if(0x00 != vo.getResult() && null == warn.getTreatmentTime()){ |
| | | UPWarnMsgOperationInfoVo upWarnMsgOperationInfoVo = upWarnMsgOperationInfoClient.getUPWarnMsgOperationInfo(warn.getObjectId()).getData(); |
| | | if(null != upWarnMsgOperationInfoVo){ |
| | | warn.setTreatmentUser(upWarnMsgOperationInfoVo.getOperator()); |
| | | warn.setTreatmentTime(LocalDateTime.ofEpochSecond(upWarnMsgOperationInfoVo.getCreateTime(), 0, ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | switch (upWarnMsgOperationInfoVo.getMethod()) { |
| | | case 0x01: |
| | | warn.setTreatmentRemark("快速拍照"); |
| | | break; |
| | | case 0x02: |
| | | warn.setTreatmentRemark("语音下发"); |
| | | break; |
| | | case 0x03: |
| | | warn.setTreatmentRemark("不做处理"); |
| | | break; |
| | | case 0x04: |
| | | warn.setTreatmentRemark("其他"); |
| | | break; |
| | | default: |
| | | warn.setTreatmentRemark("其他"); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | warn.setCreateTime(LocalDateTime.now()); |
| | | warn.setObjectId(vo.getInfoId()); |
| | | warn.setVehicleNumber(vo.getVehicleNo()); |
| | | warn.setPicUrl(vo.getPicUrl()); |
| | | warns.add(warn); |
| | | } |
| | | if (warns.size() > 0) { |
| | |
| | | public void taskUpdateWarnStatus() { |
| | | List<Warn> warnList = this.list(new LambdaQueryWrapper<Warn>().eq(Warn::getTreatmentState, "处理中")); |
| | | for (Warn warn : warnList) { |
| | | if(null == warn.getObjectId()){ |
| | | continue; |
| | | } |
| | | UPWarnMsgAdptInfoVo vo = upWarnMsgAdptInfoClient.findByInfoId(warn.getObjectId()).getData(); |
| | | if (null != vo && null != warn && vo.getResult() != 0x00) { |
| | | if(null == vo){ |
| | | continue; |
| | | } |
| | | if (null != warn && vo.getResult() != 0x00) { |
| | | switch (vo.getResult()) { |
| | | case 0x00: |
| | | warn.setTreatmentState("处理中"); |
| | |
| | | warn.setTreatmentState("将来处理"); |
| | | break; |
| | | } |
| | | this.updateById(warn); |
| | | } |
| | | if(null == warn.getPicUrl()){ |
| | | warn.setPicUrl(vo.getPicUrl()); |
| | | } |
| | | if(0x00 != vo.getResult()){ |
| | | UPWarnMsgOperationInfoVo upWarnMsgOperationInfoVo = upWarnMsgOperationInfoClient.getUPWarnMsgOperationInfo(warn.getObjectId()).getData(); |
| | | if(null != upWarnMsgOperationInfoVo){ |
| | | warn.setTreatmentUser(upWarnMsgOperationInfoVo.getOperator()); |
| | | warn.setTreatmentTime(LocalDateTime.ofEpochSecond(upWarnMsgOperationInfoVo.getCreateTime(), 0, ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | switch (upWarnMsgOperationInfoVo.getMethod()) { |
| | | case 0x01: |
| | | warn.setTreatmentRemark("快速拍照"); |
| | | break; |
| | | case 0x02: |
| | | warn.setTreatmentRemark("语音下发"); |
| | | break; |
| | | case 0x03: |
| | | warn.setTreatmentRemark("不做处理"); |
| | | break; |
| | | case 0x04: |
| | | warn.setTreatmentRemark("其他"); |
| | | break; |
| | | default: |
| | | warn.setTreatmentRemark("其他"); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | this.updateById(warn); |
| | | } |
| | | |
| | | } |
| | |
| | | @Override |
| | | public PageInfo<CarWarnListResp> getCarWarnList(CarWarnListReq carWarnListReq) { |
| | | PageInfo<CarWarnListResp> pageInfo = new PageInfo<>(carWarnListReq.getPageCurr(), carWarnListReq.getPageSize()); |
| | | String warnType = carWarnListReq.getWarnType(); |
| | | if(StringUtils.isNotEmpty(warnType)){ |
| | | switch (warnType) { |
| | | case "前向碰撞报警": |
| | | carWarnListReq.setWarnTypes(Arrays.asList("前向碰撞报警", "碰撞预警")); |
| | | break; |
| | | case "车道偏离报警": |
| | | carWarnListReq.setWarnTypes(Arrays.asList("车道偏离报警", "偏离路线报警", "车道偏离报警")); |
| | | break; |
| | | case "疲劳驾驶报警": |
| | | carWarnListReq.setWarnTypes(Arrays.asList("疲劳驾驶报警", "疲劳驾驶报警(生理疲劳)")); |
| | | break; |
| | | default: |
| | | carWarnListReq.setWarnTypes(Arrays.asList(warnType)); |
| | | break; |
| | | } |
| | | } |
| | | return this.baseMapper.getCarWarnList(pageInfo, carWarnListReq); |
| | | } |
| | | |
| | |
| | | if(total == 0){ |
| | | map.put("rate", BigDecimal.ZERO); |
| | | }else{ |
| | | map.put("rate", BigDecimal.valueOf(processed / total * 100).setScale(2, RoundingMode.HALF_EVEN)); |
| | | map.put("rate", new BigDecimal(processed).divide(new BigDecimal(total), 4, RoundingMode.HALF_EVEN).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN)); |
| | | } |
| | | } |
| | | return allWarnGroupVehicleType; |