|
@@ -1,25 +1,28 @@
|
|
|
package com.sckw.transport.service;
|
|
package com.sckw.transport.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
+import com.sckw.core.model.base.BaseModel;
|
|
|
import com.sckw.core.model.enums.CarWaybillEnum;
|
|
import com.sckw.core.model.enums.CarWaybillEnum;
|
|
|
import com.sckw.core.utils.DateUtils;
|
|
import com.sckw.core.utils.DateUtils;
|
|
|
|
|
+import com.sckw.core.web.context.LoginEntHolder;
|
|
|
|
|
+import com.sckw.core.web.context.LoginUserHolder;
|
|
|
import com.sckw.fleet.api.RemoteFleetService;
|
|
import com.sckw.fleet.api.RemoteFleetService;
|
|
|
import com.sckw.fleet.api.model.vo.RFleetDriverVo;
|
|
import com.sckw.fleet.api.model.vo.RFleetDriverVo;
|
|
|
import com.sckw.fleet.api.model.vo.RFleetVo;
|
|
import com.sckw.fleet.api.model.vo.RFleetVo;
|
|
|
import com.sckw.transport.common.config.AmapProperties;
|
|
import com.sckw.transport.common.config.AmapProperties;
|
|
|
-import com.sckw.transport.model.KwtWaybillOrder;
|
|
|
|
|
-import com.sckw.transport.model.KwtWaybillOrderSubtask;
|
|
|
|
|
-import com.sckw.transport.model.TaskStatisticsVo;
|
|
|
|
|
|
|
+import com.sckw.transport.dao.KwtWaybillOrderMapper;
|
|
|
|
|
+import com.sckw.transport.dao.KwtWaybillOrderSubtaskMapper;
|
|
|
|
|
+import com.sckw.transport.model.*;
|
|
|
import com.sckw.transport.model.param.FleetRankingReq;
|
|
import com.sckw.transport.model.param.FleetRankingReq;
|
|
|
import com.sckw.transport.model.param.LogisticsOrderStatisticsReq;
|
|
import com.sckw.transport.model.param.LogisticsOrderStatisticsReq;
|
|
|
import com.sckw.transport.model.param.TaskStatisticsReq;
|
|
import com.sckw.transport.model.param.TaskStatisticsReq;
|
|
|
import com.sckw.transport.model.vo.FleetRankingVo;
|
|
import com.sckw.transport.model.vo.FleetRankingVo;
|
|
|
import com.sckw.transport.model.vo.LogOrderStatisticsVo;
|
|
import com.sckw.transport.model.vo.LogOrderStatisticsVo;
|
|
|
-import com.sckw.transport.repository.KwtLogisticsOrderRepository;
|
|
|
|
|
-import com.sckw.transport.repository.KwtWaybillOrderRepository;
|
|
|
|
|
-import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
|
|
|
|
|
|
|
+import com.sckw.transport.repository.*;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -45,11 +48,41 @@ public class KwfTaskService {
|
|
|
private final AmapProperties amapProperties;
|
|
private final AmapProperties amapProperties;
|
|
|
private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
|
|
private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
|
|
|
private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
|
|
private final KwtLogisticsOrderRepository kwtLogisticsOrderRepository;
|
|
|
|
|
+ private final KwtVehicleExceptionRepository kwtVehicleExceptionRepository;
|
|
|
|
|
+ private final KwtLogisticsOrderUnitRepository kwtLogisticsOrderUnitRepository;
|
|
|
|
|
+ private final KwtWaybillOrderSubtaskMapper waybillOrderSubtaskDao;
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
|
|
@DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
|
|
|
RemoteFleetService fleetService;
|
|
RemoteFleetService fleetService;
|
|
|
public TaskStatisticsVo getTaskStatistics(TaskStatisticsReq req) {
|
|
public TaskStatisticsVo getTaskStatistics(TaskStatisticsReq req) {
|
|
|
log.info("开始获取任务统计信息请求参数:{}",JSON.toJSONString(req));
|
|
log.info("开始获取任务统计信息请求参数:{}",JSON.toJSONString(req));
|
|
|
- List<KwtWaybillOrder> waybillOrder= kwtWaybillOrderRepository.findByEntId(req.getEntId());
|
|
|
|
|
|
|
+ Long entId = Objects.nonNull(req.getEntId()) ? req.getEntId() : LoginUserHolder.getEntId();
|
|
|
|
|
+ //根据企业查询物流订单
|
|
|
|
|
+ List<KwtLogisticsOrderUnit> kwtLogisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByEntId(entId);
|
|
|
|
|
+ if (CollUtil.isEmpty(kwtLogisticsOrderUnits)) {
|
|
|
|
|
+ log.info("该企业未查询到物流订单数据,企业id:{}", entId);
|
|
|
|
|
+ return new TaskStatisticsVo();
|
|
|
|
|
+ }
|
|
|
|
|
+ //获取物流订单号
|
|
|
|
|
+ Set<Long> logOrderIds = kwtLogisticsOrderUnits.stream()
|
|
|
|
|
+ .map(KwtLogisticsOrderUnit::getLOrderId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ if (CollUtil.isEmpty(logOrderIds)) {
|
|
|
|
|
+ log.info("该企业下物流订单数据,企业id:{}", entId);
|
|
|
|
|
+ return new TaskStatisticsVo();
|
|
|
|
|
+ }
|
|
|
|
|
+ //查询子运单
|
|
|
|
|
+ List<KwtWaybillOrderSubtask> kwtWaybillOrderSubtasks = waybillOrderSubtaskDao.selectList(Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
|
|
|
|
|
+ .in(KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
|
|
|
|
|
+ .eq(BaseModel::getDelFlag, 0));
|
|
|
|
|
+ if(org.apache.commons.collections4.CollectionUtils.isEmpty(kwtWaybillOrderSubtasks)){
|
|
|
|
|
+ log.info("该企业下子运单的订单数据不存在,企业id:{}", entId);
|
|
|
|
|
+ return new TaskStatisticsVo();
|
|
|
|
|
+ }
|
|
|
|
|
+ Set<Long> wayOrderIds = kwtWaybillOrderSubtasks.stream()
|
|
|
|
|
+ .map(KwtWaybillOrderSubtask::getWOrderId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+
|
|
|
|
|
+ List<KwtWaybillOrder> waybillOrder= kwtWaybillOrderRepository.queryByBillOrderIds(wayOrderIds);
|
|
|
//任务总数
|
|
//任务总数
|
|
|
int totalCount = waybillOrder.size();
|
|
int totalCount = waybillOrder.size();
|
|
|
if (totalCount == 0) {
|
|
if (totalCount == 0) {
|
|
@@ -87,20 +120,28 @@ public class KwfTaskService {
|
|
|
if (yesterdayTaskCount != 0.0){
|
|
if (yesterdayTaskCount != 0.0){
|
|
|
growthRate= (double) (yesterdayTaskCount - taskTotalBeforeYesterday) / taskTotalBeforeYesterday * 100;
|
|
growthRate= (double) (yesterdayTaskCount - taskTotalBeforeYesterday) / taskTotalBeforeYesterday * 100;
|
|
|
}
|
|
}
|
|
|
|
|
+ //查询车辆异常车辆数
|
|
|
|
|
+ List<KwtVehicleException> vehicleExceptions = kwtVehicleExceptionRepository.queryByEnt(entId);
|
|
|
|
|
+ Map<Long, List<KwtVehicleException>> vehicleExceptionMap = Optional.ofNullable(vehicleExceptions)
|
|
|
|
|
+ .orElse(List.of())
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(KwtVehicleException::getTruckId));
|
|
|
return getTaskStatisticsVo(totalCount, taskingCount, completedCount, yesterdayTaskCount,
|
|
return getTaskStatisticsVo(totalCount, taskingCount, completedCount, yesterdayTaskCount,
|
|
|
- taskTotalBeforeYesterday, growthRate, unloadTon, unloadTonThisMonth, unloadTonBeforeMonth,unloadGrowthRate);
|
|
|
|
|
|
|
+ taskTotalBeforeYesterday, growthRate, unloadTon, unloadTonThisMonth, unloadTonBeforeMonth,unloadGrowthRate,vehicleExceptionMap);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
private TaskStatisticsVo getTaskStatisticsVo(int totalCount, long taskingCount, long completedCount
|
|
private TaskStatisticsVo getTaskStatisticsVo(int totalCount, long taskingCount, long completedCount
|
|
|
, long yesterdayTaskCount, long taskTotalBeforeYesterday, double growthRate, double unloadTon
|
|
, long yesterdayTaskCount, long taskTotalBeforeYesterday, double growthRate, double unloadTon
|
|
|
- , double unloadTonThisMonth, double unloadTonBeforeMonth,double unloadGrowthRate) {
|
|
|
|
|
|
|
+ , double unloadTonThisMonth, double unloadTonBeforeMonth,double unloadGrowthRate,
|
|
|
|
|
+ Map<Long, List<KwtVehicleException>> vehicleExceptionMap) {
|
|
|
TaskStatisticsVo taskStatisticsVo = new TaskStatisticsVo();
|
|
TaskStatisticsVo taskStatisticsVo = new TaskStatisticsVo();
|
|
|
taskStatisticsVo.setTaskTotal(String.valueOf(totalCount));
|
|
taskStatisticsVo.setTaskTotal(String.valueOf(totalCount));
|
|
|
taskStatisticsVo.setTaskRunning(String.valueOf(taskingCount));
|
|
taskStatisticsVo.setTaskRunning(String.valueOf(taskingCount));
|
|
|
taskStatisticsVo.setTaskCompleted(String.valueOf(completedCount));
|
|
taskStatisticsVo.setTaskCompleted(String.valueOf(completedCount));
|
|
|
taskStatisticsVo.setTaskPercent(taskingCount == 0 ? "0" : String.format("%.2f", (double) taskingCount / totalCount * 100));
|
|
taskStatisticsVo.setTaskPercent(taskingCount == 0 ? "0" : String.format("%.2f", (double) taskingCount / totalCount * 100));
|
|
|
- taskStatisticsVo.setTruckAbnormal("0");
|
|
|
|
|
|
|
+ int size = vehicleExceptionMap.size();
|
|
|
|
|
+ taskStatisticsVo.setTruckAbnormal(String.valueOf(size));
|
|
|
taskStatisticsVo.setWarningTotal("0");
|
|
taskStatisticsVo.setWarningTotal("0");
|
|
|
taskStatisticsVo.setTaskTotalYesterday(String.valueOf(yesterdayTaskCount));
|
|
taskStatisticsVo.setTaskTotalYesterday(String.valueOf(yesterdayTaskCount));
|
|
|
taskStatisticsVo.setTaskTotalBeforeYesterday(String.valueOf(taskTotalBeforeYesterday));
|
|
taskStatisticsVo.setTaskTotalBeforeYesterday(String.valueOf(taskTotalBeforeYesterday));
|