Pu Zhibing
2025-06-19 a05b419384e148fc950c77553816a2d05144f4ae
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java
@@ -5,8 +5,10 @@
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;
@@ -28,10 +30,7 @@
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.*;
/**
@@ -52,6 +51,9 @@
   
   @Resource
   private ICarService carService;
   @Resource
   private UPWarnMsgOperationInfoClient upWarnMsgOperationInfoClient;
   
   
   /**
@@ -121,9 +123,34 @@
               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) {
@@ -182,8 +209,35 @@
                  warn.setTreatmentState("将来处理");
                  break;
            }
            this.updateById(warn);
         }
         if(null == warn.getPicUrl()){
            warn.setPicUrl(vo.getPicUrl());
         }
         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;
               }
            }
         }
         this.updateById(warn);
      }
      
   }
@@ -198,6 +252,23 @@
   @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);
   }
@@ -259,7 +330,7 @@
         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;