From 67fce8d2c430e7103f82dac054523153d43feb47 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Mon, 18 Dec 2023 13:24:53 +0800
Subject: [PATCH] chore:修改提交
---
screen-api/src/main/java/com/moral/api/controller/HeatMapController.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 153 insertions(+), 6 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java b/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java
index 07de00c..2b149c1 100644
--- a/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/HeatMapController.java
@@ -4,20 +4,24 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
-
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
+import java.util.Date;
+import java.util.List;
+import com.moral.api.pojo.dto.dataDisplay.HeatMapDTO;
import com.moral.api.service.DataDisplayService;
+import com.moral.api.vo.HeatMapVo;
+import com.moral.api.vo.TimeHourVo;
import com.moral.constant.ResultMessage;
+import com.moral.util.DateUtils;
/**
* Description //todo
@@ -43,7 +47,150 @@
@RequestParam @ApiParam(value = "startTime",name = "������������") String startTime,
@RequestParam @ApiParam(value = "type",name= "������������") String type,
@RequestParam @ApiParam(value = "form",name= "������������") String form){
- ArrayList<Map<String, Object>> heatMapData = dataDisplayService.getHeatMapData(code, startTime, type, form);
+ List<HeatMapDTO> heatMapData = dataDisplayService.getHeatMapData(code, startTime, type, form);
return ResultMessage.ok(ObjectUtils.isEmpty(heatMapData)?"0":heatMapData);
}
+ @GetMapping("queryTime")
+ @ApiOperation("������������")
+ public ResultMessage getHeatMap(@RequestParam @ApiParam(value = "startTime",name = "������������") String startTime,
+ @RequestParam @ApiParam(value = "endTime",name= "������������") String endTime,
+ @RequestParam @ApiParam(value = "type",name= "������������") String type){
+ ArrayList<HeatMapVo> heatMapVos = new ArrayList<>();
+ if (type.equals("day")){
+ ArrayList<TimeHourVo> timeHourVos = new ArrayList<>();
+ String[] splitStart = startTime.split("-");
+ String[] splitEnd = endTime.split("-");
+ LocalDate startDate = LocalDate.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]), Integer.parseInt(splitStart[2]));
+ LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]), Integer.parseInt(splitEnd[2]));
+ long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
+ for (int i = 0; i <= daysBetween; i++) {
+ HeatMapVo heatMapVo = new HeatMapVo();
+ LocalDate date = startDate.plusDays(i);
+ heatMapVo.setId(i);
+ heatMapVo.setName(date.toString());
+ heatMapVo.setHourListTime(timeHourVos);
+ heatMapVos.add(heatMapVo);
+ }
+ }else if (type.equals("month")){
+ ArrayList<TimeHourVo> timeHourVos = new ArrayList<>();
+ String[] splitStart = startTime.split("-");
+ String[] splitEnd = endTime.split("-");
+ //���������������������������
+
+ int monthDay = DateUtils.getMonthDay(DateUtils.getDate(endTime,DateUtils.yyyy_MM_EN));
+ LocalDate startDate = LocalDate.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]),1);
+ LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]),monthDay);
+ long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
+ for (int i = 0; i <= daysBetween; i++) {
+ HeatMapVo heatMapVo = new HeatMapVo();
+ LocalDate date = startDate.plusDays(i);
+ heatMapVo.setId(i);
+ heatMapVo.setName(date.toString());
+ heatMapVo.setHourListTime(timeHourVos);
+ heatMapVos.add(heatMapVo);
+ }
+ }else {
+ int id = 0;
+ int idHour = -1;
+ Date ks = DateUtils.getDate(startTime,"yyyy-MM-dd HH");
+ Date js = DateUtils.getDateAddHour(DateUtils.getDate(endTime,"yyyy-MM-dd HH"),1);
+ String name = DateUtils.dateToDateString(ks,DateUtils.yyyy_MM_dd_EN);
+ List<TimeHourVo> hourListTime = new ArrayList<>();
+ while (DateUtils.isTimeBefor(js,ks)){
+ idHour++;
+ HeatMapVo heatMapVo = new HeatMapVo();
+ String nameEndTime = DateUtils.dateToDateString(ks,DateUtils.yyyy_MM_dd_EN);
+ String time = DateUtils.dateToDateString(ks,"HH");
+ String ksTime = DateUtils.dateToDateString(ks,"yyyy-MM-dd HH");
+ TimeHourVo hourVo = new TimeHourVo();
+ heatMapVo.setName(name);
+ heatMapVo.setId(id);
+ if(name.equals(nameEndTime)){
+ heatMapVo.setId(id);
+ heatMapVo.setName(name);
+ hourVo.setName(time);
+ hourVo.setId(idHour);
+ hourListTime.add(hourVo);
+ if(ksTime.equals(endTime)){
+ heatMapVo.setHourListTime(hourListTime);
+ heatMapVos.add(heatMapVo);
+ idHour++;
+ break;
+ }
+ }else {
+ id++;
+ if(ksTime.equals(endTime)){
+ heatMapVo.setHourListTime(hourListTime);
+ heatMapVos.add(heatMapVo);
+ hourListTime = new ArrayList<>();
+ hourVo = new TimeHourVo();
+ heatMapVo = new HeatMapVo();
+ hourVo.setName("00");
+ hourVo.setId(idHour++);
+ hourListTime.add(hourVo);
+ heatMapVo.setId(id);
+ heatMapVo.setName(nameEndTime);
+ heatMapVo.setHourListTime(hourListTime);
+ heatMapVos.add(heatMapVo);
+ break;
+ }else {
+ name = nameEndTime;
+ heatMapVo.setHourListTime(hourListTime);
+ heatMapVos.add(heatMapVo);
+ hourListTime = new ArrayList<>();
+ hourVo.setName(time);
+ hourVo.setId(idHour);
+ hourListTime.add(hourVo);
+ }
+ }
+ ks = DateUtils.getDateAddHour(ks,1);
+ }
+ if(CollectionUtils.isNotEmpty(heatMapVos)){
+ heatMapVos.get(0).setIdLength(idHour);
+ }
+
+/* String[] splitStart = startTime.split("-");
+ String[] s1 = splitStart[2].split(" ");
+ String[] splitEnd = endTime.split("-");
+ String[] s2 = splitEnd[2].split(" ");
+ //���������������
+ LocalDate startDate = LocalDate.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]),Integer.parseInt(s1[0]));
+ LocalDate endDate = LocalDate.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]),Integer.parseInt(s2[0]));
+ long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
+ //������������
+ LocalDateTime startDateTime = LocalDateTime.of(Integer.parseInt(splitStart[0]), Integer.parseInt(splitStart[1]), Integer.parseInt(s1[0]), Integer.parseInt(s1[1]), 0);
+ LocalDateTime endDateTime = LocalDateTime.of(Integer.parseInt(splitEnd[0]), Integer.parseInt(splitEnd[1]), Integer.parseInt(s2[0]), Integer.parseInt(s2[1]), 0);
+ List<String> hourList = new ArrayList<>();
+ LocalDateTime currentDateTime = startDateTime;
+ while (currentDateTime.isBefore(endDateTime) || currentDateTime.equals(endDateTime)) {
+ hourList.add(currentDateTime.toString());
+ currentDateTime = currentDateTime.plusHours(1);
+ }
+ int length=0;
+ for (int i = 0; i <= daysBetween; i++) {
+ ArrayList<TimeHourVo> timeHourVos = new ArrayList<>();
+ HeatMapVo heatMapVo = new HeatMapVo();
+ LocalDate date = startDate.plusDays(i);
+ heatMapVo.setId(i);
+ heatMapVo.setName(date.toString());
+ for (int i1 = 0; i1 < hourList.size(); i1++) {
+ if (hourList.get(i1).contains(date.toString())){
+ TimeHourVo hourVo = new TimeHourVo();
+ hourVo.setName(hourList.get(i1).substring(11,13));
+ hourVo.setId(length);
+ timeHourVos.add(hourVo);
+ hourList.remove(i1);
+ i1--;
+ length++;
+ }
+ }
+ heatMapVo.setHourListTime(timeHourVos);
+ heatMapVos.add(heatMapVo);
+ }
+ heatMapVos.get(0).setIdLength(length);*/
+ }
+
+ return ResultMessage.ok(ObjectUtils.isEmpty(heatMapVos)?"0":heatMapVos);
+ }
+
}
--
Gitblit v1.8.0