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