|
@@ -0,0 +1,116 @@
|
|
|
|
|
+package com.sckw.fleet.service;
|
|
|
|
|
+
|
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
+import com.sckw.core.model.base.BaseModel;
|
|
|
|
|
+import com.sckw.core.utils.DateUtils;
|
|
|
|
|
+import com.sckw.core.utils.StringUtils;
|
|
|
|
|
+import com.sckw.core.web.response.result.PageDataResult;
|
|
|
|
|
+import com.sckw.fleet.model.*;
|
|
|
|
|
+import com.sckw.fleet.model.dto.KwfTruckRouteDto;
|
|
|
|
|
+import com.sckw.fleet.model.request.DeleteTruckRoteReq;
|
|
|
|
|
+import com.sckw.fleet.model.request.QueryTruckRoteReq;
|
|
|
|
|
+
|
|
|
|
|
+import com.sckw.fleet.model.vo.QueryTruckRoteVo;
|
|
|
|
|
+import com.sckw.fleet.repository.*;
|
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
+import java.util.function.Function;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @author PC
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+@RequiredArgsConstructor
|
|
|
|
|
+public class KwfTruckRouteService {
|
|
|
|
|
+
|
|
|
|
|
+ private final KwfTruckRouteRepository truckRouteRepository;
|
|
|
|
|
+ private final KwfDriverRepository driverRepository;
|
|
|
|
|
+ private final KwfFleetTruckRepository fleetTruckRepository;
|
|
|
|
|
+ private final KwfTruckRepository truckRepository;
|
|
|
|
|
+ private final KwfFleetRepository fleetRepository;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public PageDataResult<QueryTruckRoteVo> pageTruckRoute(QueryTruckRoteReq req) {
|
|
|
|
|
+ Set<Long> driveIds = null;
|
|
|
|
|
+ Set<Long> fleetIds = null;
|
|
|
|
|
+ if (StringUtils.isNotBlank(req.getDriverName())) {
|
|
|
|
|
+ //查询司机信息
|
|
|
|
|
+ List<KwfDriver> drivers = driverRepository.findDriverByName(req.getDriverName());
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(drivers)) {
|
|
|
|
|
+ //司机ids
|
|
|
|
|
+ driveIds = drivers.stream()
|
|
|
|
|
+ .map(BaseModel::getId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (StringUtils.isNotBlank(req.getTruckNo())) {
|
|
|
|
|
+ KwfTruck kwfTruck = truckRepository.queryByTruckNo(req.getTruckNo());
|
|
|
|
|
+ if (Objects.nonNull(kwfTruck)) {
|
|
|
|
|
+ List<KwfFleetTruck> kwfFleetTrucks = fleetTruckRepository.queryByTruckId(kwfTruck.getId());
|
|
|
|
|
+ fleetIds = kwfFleetTrucks.stream()
|
|
|
|
|
+ .map(KwfFleetTruck::getFleetId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ KwfTruckRouteDto kwfTruckRoute = new KwfTruckRouteDto();
|
|
|
|
|
+ kwfTruckRoute.setFleetIds(fleetIds);
|
|
|
|
|
+ kwfTruckRoute.setDriverIds(driveIds);
|
|
|
|
|
+ kwfTruckRoute.setStartPoint(req.getStartPoint());
|
|
|
|
|
+ kwfTruckRoute.setUnloadingPoint(req.getUnloadingPoint());
|
|
|
|
|
+ IPage<KwfTruckRoute> truckRoutePage = truckRouteRepository.pageTruckRoute(req.getPageNum(), req.getPageSize(), kwfTruckRoute);
|
|
|
|
|
+ List<KwfTruckRoute> records = truckRoutePage.getRecords();
|
|
|
|
|
+ if (CollectionUtils.isEmpty(records)){
|
|
|
|
|
+ return PageDataResult.empty(req.getPageNum(), req.getPageSize());
|
|
|
|
|
+ }
|
|
|
|
|
+ Set<Long> fleetIdList = records.stream()
|
|
|
|
|
+ .map(KwfTruckRoute::getFleetId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ //查询车队信息
|
|
|
|
|
+ List<KwfFleet> fleets = fleetRepository.findByfleetIds(fleetIdList);
|
|
|
|
|
+ //车队id映射车队
|
|
|
|
|
+ Map<Long, KwfFleet> fleetIdAndFleetMap = fleets.stream().collect(Collectors.toMap(KwfFleet::getId, Function.identity(), (k1, k2) -> k1));
|
|
|
|
|
+ Set<Long> driveIdList = records.stream()
|
|
|
|
|
+ .map(KwfTruckRoute::getDriverId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ //查询司机信息
|
|
|
|
|
+ List<KwfDriver> drivers = driverRepository.findByDriverIds(driveIdList);
|
|
|
|
|
+ //司机id映射司机
|
|
|
|
|
+ Map<Long, KwfDriver> driverIdAndDriverMap = drivers.stream()
|
|
|
|
|
+ .collect(Collectors.toMap(BaseModel::getId, Function.identity(), (k1, k2) -> k1));
|
|
|
|
|
+ //组织返回数据
|
|
|
|
|
+ List<QueryTruckRoteVo> queryTruckRoteVos = records.stream()
|
|
|
|
|
+ .map(r -> getQueryTruckRoteVo(r, fleetIdAndFleetMap, driverIdAndDriverMap))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ return PageDataResult.of(truckRoutePage, queryTruckRoteVos);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private static QueryTruckRoteVo getQueryTruckRoteVo(KwfTruckRoute r, Map<Long, KwfFleet> fleetIdAndFleetMap, Map<Long, KwfDriver> driverIdAndDriverMap) {
|
|
|
|
|
+ QueryTruckRoteVo queryTruckRoteVo = new QueryTruckRoteVo();
|
|
|
|
|
+ queryTruckRoteVo.setTruckNo("");
|
|
|
|
|
+ queryTruckRoteVo.setStartPoint(r.getStartPoint());
|
|
|
|
|
+ queryTruckRoteVo.setUnloadingPoint(r.getUnloadingPoint());
|
|
|
|
|
+ queryTruckRoteVo.setFleetId(String.valueOf(r.getFleetId()));
|
|
|
|
|
+ KwfFleet fleet = fleetIdAndFleetMap.getOrDefault(r.getFleetId(), new KwfFleet());
|
|
|
|
|
+ queryTruckRoteVo.setFleetName(fleet.getName());
|
|
|
|
|
+ KwfDriver driver = driverIdAndDriverMap.getOrDefault(r.getDriverId(), new KwfDriver());
|
|
|
|
|
+ queryTruckRoteVo.setDriverName(driver.getName());
|
|
|
|
|
+ queryTruckRoteVo.setDriverId(String.valueOf(r.getDriverId()));
|
|
|
|
|
+ queryTruckRoteVo.setUpdateTime(DateUtils.format(r.getUpdateTime(),DateUtils.DATE_TIME_PATTERN));
|
|
|
|
|
+ queryTruckRoteVo.setSortedTime(r.getShortestTime());
|
|
|
|
|
+ return queryTruckRoteVo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public Boolean deleteTruckRoute(DeleteTruckRoteReq req) {
|
|
|
|
|
+ return truckRouteRepository.deleteTruckRoute(req.getId());
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+}
|