KPI分析
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user