|
package com.by4cloud.platform.processing.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.by4cloud.platform.processing.entity.TransitAvgSch;
|
import com.by4cloud.platform.processing.mapper.TransitAvgSchMapper;
|
import com.by4cloud.platform.processing.service.TransitAvgSchService;
|
import com.by4cloud.platform.yunxiao.entity.Ponderation;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 运输平均时间
|
*
|
* @author zzl
|
* @date 2025-10-17 16:04:39
|
*/
|
@Service
|
public class TransitAvgSchServiceImpl extends ServiceImpl<TransitAvgSchMapper, TransitAvgSch> implements TransitAvgSchService {
|
|
// private PonderationService ponderationService;
|
// private LoadUnloadAvgTimeMapper loadUnloadAvgTimeMapper;
|
//
|
// @Override
|
// public void getTransitAvgSch(Date startDate, Date endDate) {
|
// loadUnloadAvgTimeMapper.setGroupConcatMaxLen();
|
// //筛选磅单记录
|
// List<Ponderation> ponderationList = ponderationService.list(new QueryWrapper<Ponderation>()
|
// .select("customer_address_id","comp_id","vehicle_no",
|
// "DATE_FORMAT(out_time, '%Y-%m-%d') AS out_time",
|
// "COUNT(id) AS count1",
|
// "GROUP_CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') SEPARATOR ',') AS start_date",
|
// "GROUP_CONCAT(DATE_FORMAT(out_time, '%Y-%m-%d %H:%i:%s') SEPARATOR ',') AS real_ids")
|
// .ge("out_time", startDate)
|
// .le("out_time", endDate)
|
// .eq("del_flag",0)
|
// .ne("isbl",1)
|
// .isNull("is_empty")
|
// .eq("ponderation_type","外销")
|
// .orderByDesc("out_time")
|
// .groupBy("customer_address_id,comp_id,vehicle_no,DATE_FORMAT(out_time, '%Y-%m-%d')")
|
// .having("COUNT(id) >= 2"));
|
// List<TransitAvgSch> transitAvgSches = new ArrayList<>();
|
// //循环获取每天的最短时间、最长时间、平均值
|
// ponderationList.forEach(e -> {
|
// TransitAvgSch transitAvgSch = new TransitAvgSch();
|
// transitAvgSch.setCustomerAddressId(e.getCustomerAddressId());
|
// transitAvgSch.setTransitType(1);
|
// transitAvgSch.setCompId(e.getCompId());
|
// transitAvgSch.setSaleType(e.getPonderationType());
|
// transitAvgSch.setIds(e.getRealIds());
|
// int[] stats = AvgTimeUtils.compareTimes(e.getStartDate(),e.getRealIds());
|
// //设置最短时间、最长时间、平均值
|
// transitAvgSch.setMinTime(stats[0]);
|
// transitAvgSch.setMaxTime(stats[1]);
|
// transitAvgSch.setDay(e.getOutTime());
|
// transitAvgSches.add(transitAvgSch);
|
// });
|
// List<TransitAvgSch> saveTransitAvgSches = new ArrayList<>();
|
// transitAvgSches.stream().collect(Collectors.groupingBy(e -> e.getCompId())).forEach((compId, list) -> {
|
// list.stream().collect(Collectors.groupingBy(e -> e.getCustomerAddressId())).forEach((customerAddressId, list1) -> {
|
// TransitAvgSch transitAvgSch = new TransitAvgSch();
|
// transitAvgSch.setFyCompId(compId);
|
// transitAvgSch.setFyCompName(list1.get(0).getCompName());
|
// transitAvgSch.setCustomerAddressId(customerAddressId);
|
// transitAvgSch.setCustomerAddressName(list1.get(0).getCustomerAddressName());
|
// transitAvgSch.setTransitType(1);
|
// transitAvgSch.setSaleType(list1.get(0).getSaleType());
|
// List<Integer> avgTimes = new ArrayList<>();
|
// list1.forEach(e -> {
|
// avgTimes.add(e.getMinTime());
|
// avgTimes.add(e.getMaxTime());
|
// });
|
// //转换为数组
|
// //过滤极值
|
// List<Integer> resultList = AvgTimeUtils.filterByIQR(avgTimes);
|
// int[] avgTimesArray = resultList.stream().mapToInt(Integer::intValue).toArray();
|
// int[] stats = AvgTimeUtils.calculateStats(avgTimesArray);
|
// transitAvgSch.setMinTime(stats[0]);
|
// transitAvgSch.setAvgTime(stats[2]);
|
// saveTransitAvgSches.add(transitAvgSch);
|
// });
|
// });
|
// saveBatch(saveTransitAvgSches);
|
// }
|
//
|
// @Override
|
// public void getNxTransitAvgSch(Date startDate, Date endDate) {
|
// loadUnloadAvgTimeMapper.setGroupConcatMaxLen();
|
// //筛选磅单记录
|
// List<Ponderation> ponderationList = ponderationService.list(new QueryWrapper<Ponderation>()
|
// .select("from_comp_id","to_comp_id","vehicle_no",
|
// "DATE_FORMAT(out_time, '%Y-%m-%d') AS out_time",
|
// "COUNT(id) AS count1",
|
// "GROUP_CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') SEPARATOR ',') AS start_date",
|
// "GROUP_CONCAT(DATE_FORMAT(out_time, '%Y-%m-%d %H:%i:%s') SEPARATOR ',') AS real_ids")
|
// .ge("out_time", startDate)
|
// .le("out_time", endDate)
|
// .eq("del_flag",0)
|
// .ne("isbl",1)
|
// .isNull("is_empty")
|
// .eq("ponderation_type","内销")
|
// .orderByDesc("out_time")
|
// .groupBy("from_comp_id,to_comp_id,vehicle_no,DATE_FORMAT(out_time, '%Y-%m-%d')")
|
// .having("COUNT(id) >= 2"));
|
// List<TransitAvgSch> transitAvgSches = new ArrayList<>();
|
// //循环获取每天的最短时间、最长时间、平均值
|
// ponderationList.forEach(e -> {
|
// TransitAvgSch transitAvgSch = new TransitAvgSch();
|
// transitAvgSch.setToCompId(e.getToCompId());
|
// transitAvgSch.setToCompName(e.getToCompName());
|
// transitAvgSch.setTransitType(1);
|
// transitAvgSch.setCompId(e.getFromCompId());
|
// transitAvgSch.setSaleType(e.getPonderationType());
|
// transitAvgSch.setIds(e.getRealIds());
|
// int[] stats = AvgTimeUtils.compareTimes(e.getStartDate(),e.getRealIds());
|
// //设置最短时间、最长时间、平均值
|
// transitAvgSch.setMinTime(stats[0]);
|
// transitAvgSch.setMaxTime(stats[1]);
|
// transitAvgSch.setDay(e.getOutTime());
|
// transitAvgSches.add(transitAvgSch);
|
// });
|
// List<TransitAvgSch> saveTransitAvgSches = new ArrayList<>();
|
// transitAvgSches.stream().collect(Collectors.groupingBy(e -> e.getCompId())).forEach((compId, list) -> {
|
// list.stream().collect(Collectors.groupingBy(e -> e.getToCompId())).forEach((toCompId, list1) -> {
|
// TransitAvgSch transitAvgSch = new TransitAvgSch();
|
// transitAvgSch.setFyCompId(compId);
|
// transitAvgSch.setFyCompName(list1.get(0).getCompName());
|
// transitAvgSch.setToCompId(toCompId);
|
// transitAvgSch.setToCompName(list1.get(0).getToCompName());
|
// transitAvgSch.setTransitType(1);
|
// transitAvgSch.setSaleType(list1.get(0).getSaleType());
|
// List<Integer> avgTimes = new ArrayList<>();
|
// list1.forEach(e -> {
|
// avgTimes.add(e.getMinTime());
|
// avgTimes.add(e.getMaxTime());
|
// });
|
// //转换为数组
|
// //过滤极值
|
// List<Integer> resultList = AvgTimeUtils.filterByIQR(avgTimes);
|
// int[] avgTimesArray = resultList.stream().mapToInt(Integer::intValue).toArray();
|
// int[] stats = AvgTimeUtils.calculateStats(avgTimesArray);
|
// transitAvgSch.setMinTime(stats[0]);
|
// transitAvgSch.setAvgTime(stats[2]);
|
// saveTransitAvgSches.add(transitAvgSch);
|
// });
|
// });
|
// saveBatch(saveTransitAvgSches);
|
// }
|
|
}
|