| | |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.dataInterchange.api.feignClient.UPExgMsgRegisterClient; |
| | | import com.ruoyi.dataInterchange.api.model.enums.VehicleColorEnum; |
| | | import com.ruoyi.dataInterchange.api.vo.GnssDataVo; |
| | | import com.ruoyi.dataInterchange.api.vo.UPExgMsgRegisterVo; |
| | | import com.ruoyi.system.api.model.Car; |
| | | import com.ruoyi.system.api.model.CarType; |
| | | import com.ruoyi.system.api.model.Driver; |
| | | import com.ruoyi.system.api.model.Enterprise; |
| | | import com.ruoyi.system.mapper.CarMapper; |
| | | import com.ruoyi.system.query.CarListReq; |
| | | import com.ruoyi.system.query.CarListResp; |
| | | import com.ruoyi.system.service.ICarService; |
| | | import com.ruoyi.system.service.ICarTypeService; |
| | | import com.ruoyi.system.service.IDriverService; |
| | | import com.ruoyi.system.service.IEnterpriseService; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneOffset; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | |
| | | @Resource |
| | | private IDriverService driverService; |
| | | |
| | | @Resource |
| | | private ICarTypeService carTypeService; |
| | | |
| | | @Resource |
| | | private RedisTemplate redisTemplate; |
| | | |
| | | |
| | | /** |
| | | * 定时任务存储最新的车辆数据 |
| | |
| | | return; |
| | | } |
| | | List<Enterprise> list1 = enterpriseService.list(); |
| | | List<Driver> driverList = driverService.list(new LambdaQueryWrapper<Driver>().eq(Driver::getStatus, 1)); |
| | | List<Car> carList = new ArrayList<>(); |
| | | for (UPExgMsgRegisterVo vo : list) { |
| | | car = new Car(); |
| | |
| | | car.setLicensePlateColor(VehicleColorEnum.getName(vo.getVehicleColor())); |
| | | Enterprise enterprise = list1.stream().filter(s -> s.getCode().equals(vo.getInferiorPlatformId().toString())).findFirst().get(); |
| | | car.setEnterpriseId(enterprise.getId()); |
| | | Driver driver = driverService.getOne(new LambdaQueryWrapper<Driver>().eq(Driver::getVehicleNumber, vo.getVehicleNo()).eq(Driver::getStatus, 1)); |
| | | if (null != driver) { |
| | | car.setDriverId(driver.getId()); |
| | | car.setOperateType(enterprise.getOperationType()); |
| | | Optional<Driver> optional = driverList.stream().filter(s -> s.getVehicleNumber().equals(vo.getVehicleNo())).findFirst(); |
| | | if (optional.isPresent()) { |
| | | car.setDriverId(optional.get().getId()); |
| | | } |
| | | car.setGpsModel(vo.getTerminalModelType()); |
| | | car.setGpsImei(vo.getTerminalSIMCode()); |
| | | car.setLongitude(vo.getLongitude()); |
| | | car.setLatitude(vo.getLatitude()); |
| | | car.setCreateTime(LocalDateTime.now()); |
| | | carList.add(car); |
| | | } |
| | | this.saveBatch(carList); |
| | | if (carList.size() > 0) { |
| | | this.saveBatch(carList); |
| | | //更新车辆类型统计数据 |
| | | List<CarType> carTypeList = carTypeService.list(); |
| | | List<Car> cars = this.list(); |
| | | for (CarType carType : carTypeList) { |
| | | long count = cars.stream().filter(s -> s.getOperateType().equals(carType.getName())).count(); |
| | | carType.setCarNum(count); |
| | | } |
| | | carTypeService.updateBatchById(carTypeList); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | PageInfo<CarListResp> pageInfo = new PageInfo<>(carListReq.getPageCurr(), carListReq.getPageSize()); |
| | | return this.baseMapper.getCarList(pageInfo, carListReq); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 定时任务修改车辆状态 |
| | | */ |
| | | @Override |
| | | public void taskUpdateCarStatus() { |
| | | List<Car> list = this.list(); |
| | | for (Car car : list) { |
| | | GnssDataVo gnssDataVo = (GnssDataVo) redisTemplate.opsForValue().get("location:" + car.getVehicleNumber()); |
| | | if (null == gnssDataVo) { |
| | | car.setStatus(1); |
| | | } else { |
| | | String dateTime = gnssDataVo.getDate() + " " + gnssDataVo.getTime(); |
| | | LocalDateTime localDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | long second = localDateTime.toEpochSecond(ZoneOffset.ofHours(8)); |
| | | if (System.currentTimeMillis() / 1000 > second + 60) { |
| | | car.setStatus(4); |
| | | } else { |
| | | car.setStatus(1); |
| | | } |
| | | } |
| | | } |
| | | if (list.size() > 0) { |
| | | this.updateBatchById(list); |
| | | } |
| | | } |
| | | } |