| | |
| | | |
| | | 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; |
| | | 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 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; |
| | |
| | | @Resource |
| | | private ICarService carService; |
| | | |
| | | @Resource |
| | | private UPWarnMsgOperationInfoClient upWarnMsgOperationInfoClient; |
| | | |
| | | |
| | | /** |
| | | * 存储新的报警数据 |
| | |
| | | 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(); |
| | |
| | | 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()); |
| | | warns.add(warn); |
| | | } |
| | | if (warns.size() > 0) { |
| | | this.saveBatch(warns); |
| | | warn.setPicUrl(vo.getPicUrl()); |
| | | |
| | | 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 |
| | | */ |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | |
| | | 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; |