package com.moral.api.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.moral.api.entity.Organization; import com.moral.api.entity.ServicesScope; 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.api.service.ServicesScopeService; import com.moral.constant.Constants; 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; @Resource private ServicesScopeService servicesScopeService; @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 = "getThermodynamicDiagramDataByConditionV2", method = RequestMethod.GET) @ResponseBody public ResultMessage getThermodynamicDiagramDataByConditionV2(HttpServletRequest request) throws ParseException { Map parameters = WebUtils.getParametersStartingWith(request,null); Object servicesScopeId = parameters.get("servicesScopeId"); Object sensorCode = parameters.get("sensor_code"); Object type = parameters.get("type"); if (ObjectUtils.isEmpty(servicesScopeId) || ObjectUtils.isEmpty(sensorCode) || ObjectUtils.isEmpty(type)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } QueryWrapper servicesScopeQueryWrapper = new QueryWrapper<>(); servicesScopeQueryWrapper.eq("is_delete",Constants.NOT_DELETE); servicesScopeQueryWrapper.eq("id",servicesScopeId); ServicesScope servicesScope = servicesScopeService.getOne(servicesScopeQueryWrapper); if (ObjectUtils.isEmpty(servicesScope)){ 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.getThermodynamicDiagramDataByOrgIdSensorCodeTimeV2(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.getThermodynamicDiagramDataByOrgIdSensorCodeTimeV2(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.getThermodynamicDiagramDataByOrgIdSensorCodeTimeV2(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.getThermodynamicDiagramDataByOrgIdSensorCodeTimeslotV2(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.getThermodynamicDiagramDataByOrgIdSensorCodeTimeSlotV2(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.getThermodynamicDiagramDataByOrgIdSensorCodeTimeSlotV2(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);*/ /*List boundList1 = new ArrayList<>(); List boundList2 = new ArrayList<>(); List boundList3 = new ArrayList<>(); List boundList4 = new ArrayList<>(); List boundList5 = new ArrayList<>(); List boundList6 = new ArrayList<>(); List boundList7 = new ArrayList<>(); List boundList8 = new ArrayList<>(); List boundList9 = new ArrayList<>(); boundList1.add(120.975221); boundList1.add(31.413145); boundList2.add(120.977021); boundList2.add(31.411345); boundList3.add(120.979174); boundList3.add(31.333362); boundList4.add(120.977374); boundList4.add(31.331562); boundList5.add(120.913768); boundList5.add(31.347918); boundList6.add(120.870665); boundList6.add(31.341063); boundList7.add(120.868865); boundList7.add(31.342863); boundList8.add(120.896371); boundList8.add(31.409264); boundList9.add(120.898171); boundList9.add(31.411064); List boundList_middle = new ArrayList<>(); boundList_middle.add(boundList1); boundList_middle.add(boundList2); boundList_middle.add(boundList3); boundList_middle.add(boundList4); boundList_middle.add(boundList5); boundList_middle.add(boundList6); boundList_middle.add(boundList7); boundList_middle.add(boundList8); boundList_middle.add(boundList9);*/ String boundList_middle = "[[[120.975221,31.413145],[120.977021,31.411345],[120.979174,31.333362],[120.977374,31.331562],[120.913768,31.347918],[120.870665,31.341063],[120.868865,31.342863],[120.896371,31.409264],[120.898171,31.411064]]]"; List boundList_middle2 = new ArrayList<>(); boundList_middle2.add(boundList_middle); resultMap.put("bound",boundList_middle); resultMap.put("time","2021-12-10 08:00:00"); List centerPointList = new ArrayList<>(); centerPointList.add(120.934824838); centerPointList.add(31.37834580); resultMap.put("centerPoint",centerPointList); List list1 = new ArrayList<>(); list1.add(120.975221); list1.add(31.411345); list1.add(1.0); List list2 = new ArrayList<>(); list2.add(120.870665); list2.add(31.342863); list2.add(4.0); List list3 = new ArrayList<>(); list3.add(120.898171); list3.add(31.409264); list3.add(2.0); List list4 = new ArrayList<>(); list4.add(120.913768); list4.add(31.349718); list4.add(3.0); List list5 = new ArrayList<>(); list5.add(120.977374); list5.add(31.333362); list5.add(2.0); List list12345 = new ArrayList(); list12345.add(list1); list12345.add(list2); list12345.add(list3); list12345.add(list4); list12345.add(list5); resultMap.put("list",list12345); for (int i=0;i<10;i++){ resultMap.put("time","2021-12-10 0"+i+":00:00"); bigList.add(resultMap); } return ResultMessage.ok(bigList); } }