package com.moral.api.controller; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.moral.api.entity.Organization; import com.moral.api.mapper.OrganizationMapper; import com.moral.api.service.HistoryDailyService; import com.moral.api.service.HistoryHourlyService; import com.moral.api.service.HistoryMonthlyService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.util.DateUtils; import com.moral.util.WebUtils; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @program: screen * @description: 图表数据 * @author: lizijie * @create: 2021-11-10 16:05 **/ @Slf4j @Api(tags = {"设备小时数据"}) @RestController @CrossOrigin(origins = "*", maxAge = 3600) @RequestMapping("/chart") public class ChartController { @Resource private OrganizationMapper organizationMapper; @Resource private HistoryHourlyService historyHourlyService; @Resource private HistoryDailyService historyDailyService; @Resource private HistoryMonthlyService historyMonthlyService; @RequestMapping(value = "getThermodynamicDiagramDataByCondition", method = RequestMethod.GET) @ResponseBody public ResultMessage getThermodynamicDiagramDataByCondition(HttpServletRequest request) throws ParseException { Map parameters = WebUtils.getParametersStartingWith(request,null); Object orgid = parameters.get("organization_id"); Object sensorCode = parameters.get("sensor_code"); Object type = parameters.get("type"); if (ObjectUtils.isEmpty(orgid) || ObjectUtils.isEmpty(sensorCode) || ObjectUtils.isEmpty(type)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Organization organization = organizationMapper.selectById(Integer.parseInt(orgid.toString())); if (ObjectUtils.isEmpty(organization)){ return ResultMessage.fail(ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getCode(), ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getMsg()); } Map resultMap = new HashMap<>(); List> resultList = new ArrayList<>(); if (type.equals("hourly")){ Object time = parameters.get("time"); if (ObjectUtils.isEmpty(time)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } resultMap = historyHourlyService.getThermodynamicDiagramDataByOrgIdSensorCodeTime(parameters); return ResultMessage.ok(resultMap); } if (type.equals("daily")){ Object time = parameters.get("time"); if (ObjectUtils.isEmpty(time)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } resultMap = historyDailyService.getThermodynamicDiagramDataByOrgIdSensorCodeTime(parameters); return ResultMessage.ok(resultMap); } if (type.equals("monthly")){ Object time = parameters.get("time"); if (ObjectUtils.isEmpty(time)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } resultMap = historyMonthlyService.getThermodynamicDiagramDataByOrgIdSensorCodeTime(parameters); return ResultMessage.ok(resultMap); } if (type.equals("custom")){ String startTime = parameters.get("startTime").toString(); String endTime = parameters.get("endTime").toString(); if (ObjectUtils.isEmpty(startTime) || ObjectUtils.isEmpty(endTime)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } if (startTime.length() == 13){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制 long newTime1 = simpleDateFormat.parse(startTime+":00:00").getTime(); long newTime2 = simpleDateFormat.parse(endTime+":00:00").getTime(); Long result = newTime2 - newTime1; //获取两时间相差的毫秒数 long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; long hour = result / nh; //获取相差的小时数 if (hour+1>12){ return ResultMessage.fail(-1, "时间不能超过12小时"); } if (hour<0){ return ResultMessage.fail(ResponseCodeEnum.TIME_FORMAT_INVALID.getCode(), ResponseCodeEnum.TIME_FORMAT_INVALID.getMsg()); } parameters.put("hour",hour); resultList = historyHourlyService.getThermodynamicDiagramDataByOrgIdSensorCodeTimeslot(parameters); return ResultMessage.ok(resultList); } if (startTime.length() == 10){ long days = DateUtils.getQuotByDays(startTime, endTime); if (days+1>12){ return ResultMessage.fail(-1, "时间不能超过12天"); } parameters.put("days",days); resultList = historyDailyService.getThermodynamicDiagramDataByOrgIdSensorCodeTimeSlot(parameters); return ResultMessage.ok(resultList); } if (startTime.length() == 7){ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM"); Date satrtTimeDate = df.parse(startTime); Date endTimeDate = df.parse(endTime); long months = DateUtils.getMonth(satrtTimeDate,endTimeDate); //获取相差的小时数 if (months+1>12){ return ResultMessage.fail(-1, "时间不能超过12月"); } parameters.put("months",months); resultList = historyMonthlyService.getThermodynamicDiagramDataByOrgIdSensorCodeTimeSlot(parameters); return ResultMessage.ok(resultList); } } return ResultMessage.ok(resultMap); } @RequestMapping(value = "returnDataTest", method = RequestMethod.GET) @ResponseBody public ResultMessage returnDataTest(HttpServletRequest request) throws ParseException { List bigList = new ArrayList(); Map resultMap = new HashMap<>(); List boundList = new ArrayList<>(); boundList.add(120.70980239181193); boundList.add(31.329143000000002); boundList.add(120.74077860818807); boundList.add(31.356963); resultMap.put("bound",boundList); resultMap.put("time","2021-12-10 08:00:00"); List centerPointList = new ArrayList<>(); centerPointList.add(120.72529050000001); centerPointList.add(31.343053); resultMap.put("centerPoint",centerPointList); List list1 = new ArrayList<>(); list1.add(120.711611); list1.add(31.355163); list1.add(1.0); List list2 = new ArrayList<>(); list2.add(120.726821); list2.add(31.342079); list2.add(4.0); List list3 = new ArrayList<>(); list3.add(120.735515); list3.add(31.353261); list3.add(2.0); List list123 = new ArrayList(); list123.add(list1); list123.add(list3); list123.add(list2); resultMap.put("list",list123); for (int i=0;i<10;i++){ resultMap.put("time","2021-12-10 0"+i+":00:00"); bigList.add(resultMap); } return ResultMessage.ok(bigList); } }