|  |  |  | 
|---|
|  |  |  | 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.RequestParam; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RestController; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.time.LocalDate; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.time.temporal.ChronoUnit; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Calendar; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | ArrayList<Map<String, Object>> 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("-"); | 
|---|
|  |  |  | 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]),30); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }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); | 
|---|
|  |  |  | }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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (int i = 0; i <= daysBetween; i++) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ArrayList<Map<String,Object>> list = 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++) { | 
|---|
|  |  |  | HashMap<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | if (hourList.get(i).contains(date.toString())){ | 
|---|
|  |  |  | map.put("name",hourList.get(i).substring(11,16)); | 
|---|
|  |  |  | list.add(map); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | heatMapVo.setHourList(list); | 
|---|
|  |  |  | heatMapVos.add(heatMapVo); | 
|---|
|  |  |  | }*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ResultMessage.ok(ObjectUtils.isEmpty(heatMapVos)?"0":heatMapVos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|