KPI分析

This commit is contained in:
猫猫guowen
2025-09-18 10:55:41 +08:00
parent 0a0d4c44db
commit 0361c5846f
5 changed files with 175 additions and 83 deletions

View File

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* KPI 统计分析 服务实现类
@@ -457,15 +458,51 @@ public class KpiServiceImpl implements KpiService
mydoJobParam.setInOut(inOut);
List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(mydoJobParam.getCreateLeftTime()), DateUtil.parseDate(mydoJobParam.getCreateRightTime()), DateField.DAY_OF_MONTH);
List<MydoJob> list = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJobParam);
List<String> x = new ArrayList<>();
List<Long> y = new ArrayList<>();
for (DateTime dateTime : datesBetween) {
//筛选每一日的数量
x.add(DateUtil.format(dateTime, "yyyy-MM-dd"));
y.add(list.stream().filter(mydoJob -> DateUtil.isIn(mydoJob.getCreateTime(), DateUtil.beginOfDay(dateTime),DateUtil.endOfDay(dateTime))).count());
// 根据inOut过滤数据
list = list.stream()
.filter(job -> {
int inOrOut = Integer.parseInt(job.getInOrOut());
return "1".equals(mydoJobParam.getInOut()) ? inOrOut < 20 : inOrOut >= 20;
})
.collect(Collectors.toList());
// 获取所有巷道ID(1和2)
List<String> roadwayIds = Arrays.asList("1", "2");
List<String> xAxis = new ArrayList<>();
List<Map<String, Object>> series = new ArrayList<>();
// 为每个巷道创建一个系列
for (String roadwayId : roadwayIds) {
Map<String, Object> seriesItem = new HashMap<>();
seriesItem.put("name", roadwayId + "号巷道");
seriesItem.put("type", "line");
List<Long> data = new ArrayList<>();
seriesItem.put("data", data);
series.add(seriesItem);
}
res.put("xAxis",x);
res.put("series",y);
// 按日期统计每个巷道的数量
for (DateTime dateTime : datesBetween) {
xAxis.add(DateUtil.format(dateTime, "yyyy-MM-dd"));
// 统计每个巷道在当天的数量
for (int i = 0; i < roadwayIds.size(); i++) {
String roadwayId = roadwayIds.get(i);
long count = list.stream()
.filter(mydoJob -> roadwayId.equals(mydoJob.getRoadwayId())
&& DateUtil.isIn(mydoJob.getCreateTime(), DateUtil.beginOfDay(dateTime), DateUtil.endOfDay(dateTime)))
.count();
@SuppressWarnings("unchecked")
List<Long> data = (List<Long>) series.get(i).get("data");
data.add(count);
}
}
res.put("xAxis", xAxis);
res.put("series", series);
return AjaxResult.success(res);
}