| | |
| | | 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); |
| | | } |
| | | |
| | | } |