liujie
8 天以前 af4b8add9d103889472a75973847871b7dcdf3c8
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WarnServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.dataInterchange.api.feignClient.UPWarnMsgAdptInfoClient;
@@ -21,6 +22,7 @@
import com.ruoyi.system.service.IEnterpriseService;
import com.ruoyi.system.service.IWarnService;
import com.ruoyi.system.util.GDMapGeocodingUtil;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -74,7 +76,12 @@
      List<Driver> driverList = driverService.list(new LambdaQueryWrapper<Driver>().eq(Driver::getStatus, 1));
      List<Car> carList = carService.list();
      List<Warn> warns = new ArrayList<>();
      List<Warn> updateWarns = 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();
@@ -97,17 +104,21 @@
         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:
@@ -123,18 +134,58 @@
               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) {
         this.saveBatch(warns);
         List<Warn> list2 = this.list(new LambdaQueryWrapper<Warn>().eq(Warn::getObjectId, vo.getInfoId()));
         if (!list2.isEmpty()) {
            Warn warn1 = list2.get(0);
            // 比较2个时间大小
            String startTime = warn1.getStartTime();
            String startTime1 = warn.getStartTime();
                if (DateUtils.parseDate(startTime).getTime()>DateUtils.parseDate(startTime1).getTime()) {
                    warn1.setStartTime(startTime1);
               warn1.setEndTime(startTime);
                }else {
               warn1.setEndTime(startTime1);
            }
            this.updateById(warn1);
         }else {
            this.save(warn);
         }
      }
   }
   /**
    * 定时保存车辆id和司机id
    */
@@ -169,8 +220,14 @@
   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("处理中");
@@ -189,7 +246,7 @@
         if(null == warn.getPicUrl()){
            warn.setPicUrl(vo.getPicUrl());
         }
         if(null == warn.getTreatmentTime()){
         if(0x00 != vo.getResult()){
            UPWarnMsgOperationInfoVo upWarnMsgOperationInfoVo = upWarnMsgOperationInfoClient.getUPWarnMsgOperationInfo(warn.getObjectId()).getData();
            if(null != upWarnMsgOperationInfoVo){
               warn.setTreatmentUser(upWarnMsgOperationInfoVo.getOperator());