From 31c65cd4f338256b76efebdb2f1f29deb170969f Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Wed, 08 Nov 2023 11:01:22 +0800 Subject: [PATCH] chore:权限修改提交 --- screen-api/src/main/java/com/moral/api/controller/ChartController.java | 307 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 271 insertions(+), 36 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/ChartController.java b/screen-api/src/main/java/com/moral/api/controller/ChartController.java index b0a3b75..9bf1855 100644 --- a/screen-api/src/main/java/com/moral/api/controller/ChartController.java +++ b/screen-api/src/main/java/com/moral/api/controller/ChartController.java @@ -1,21 +1,29 @@ 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.boot.system.ApplicationHome; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -44,6 +52,9 @@ @Resource private HistoryMonthlyService historyMonthlyService; + + @Resource + private ServicesScopeService servicesScopeService; @RequestMapping(value = "getThermodynamicDiagramDataByCondition", method = RequestMethod.GET) @ResponseBody @@ -135,45 +146,269 @@ return ResultMessage.ok(resultMap); } + @RequestMapping(value = "getThermodynamicDiagramDataByConditionV2", method = RequestMethod.GET) + @ResponseBody + public ResultMessage getThermodynamicDiagramDataByConditionV2(HttpServletRequest request) throws ParseException { + Map<String, Object> 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<ServicesScope> 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<String, Object> resultMap = new HashMap<>(); + List<Map<String,Object>> 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("startTime"); + parameters.put("time",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); + } + + @GetMapping("honeycombDiagram") + public ResultMessage honeycombDiagram (HttpServletRequest httpServletRequest, HttpServletResponse response) throws IOException { + Map<String, Object> params = WebUtils.getParametersStartingWith(httpServletRequest, null); + Object serviceScopeId = params.get("serviceScopeId"); + Object sensor_code = params.get("sensor_code"); + Object type = params.get("type"); + Object time = params.get("time"); + Object distance = params.get("distance"); + if (ObjectUtils.isEmpty(serviceScopeId)){ + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + } + List<Map<String, Object>> resultList = servicesScopeService.honeycombDiagram(Integer.parseInt(serviceScopeId.toString()), Integer.parseInt(distance.toString()), type.toString(), time.toString(), sensor_code.toString()); + //List<Map<String, Object>> resultList = servicesScopeService.honeycombDiagram(6, 40, "monthly", "2022-02", "a34004"); + + //������jar��������������� + ApplicationHome applicationHome = new ApplicationHome(getClass()); + //���jar������������������������������upload������������������������������������ + String path = applicationHome.getSource().getParentFile().toString() + "/static/tsv"; + + //File file = File.createTempFile("test",".tsv"); + /*if (!new File(path).exists()){ + new File(path).mkdir(); + }*/ + File file = null; + File dir = new File(path); + file = File.createTempFile("honeycombDiagram",".tsv",dir); + + //������������������������������������ + OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file),"UTF-8"); + + //tsv������������������������������������������������������������������������������������������������ + ow.write("lng"); + ow.write(" "); + ow.write("lat"); + ow.write(" "); + ow.write("count"); + //��������������������� + ow.write("\r\n"); + //��������� + for (Map map:resultList) { + ow.write(map.get("lon").toString()); + ow.write(" "); + ow.write(map.get("lat").toString()); + ow.write(" "); + ow.write(map.get("value").toString()); + //������������������ + ow.write("\r\n"); + } + ow.flush(); + ow.close(); + + /*String localAddr = httpServletRequest.getLocalAddr(); + int serverPort = httpServletRequest.getServerPort();*/ + + Map<String,Object> res = new HashMap<>(); + res.put("path","http://47.99.64.149:8081"+"/static/tsv/"+file.getName()); + + return ResultMessage.ok(res); + } + @RequestMapping(value = "returnDataTest", method = RequestMethod.GET) @ResponseBody - public ResultMessage returnDataTest(HttpServletRequest request) throws ParseException { - List bigList = new ArrayList(); - Map<String,Object> resultMap = new HashMap<>(); - List<Double> 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<Double> centerPointList = new ArrayList<>(); - centerPointList.add(120.72529050000001); - centerPointList.add(31.343053); - resultMap.put("centerPoint",centerPointList); - List<Double> list1 = new ArrayList<>(); - list1.add(120.711611); - list1.add(31.355163); - list1.add(1.0); - List<Double> list2 = new ArrayList<>(); - list2.add(120.726821); - list2.add(31.342079); - list2.add(4.0); - List<Double> 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); - } + public ResultMessage returnDataTest(HttpServletRequest request, HttpServletResponse response) throws ParseException, IOException { + Map<String, Object> params = WebUtils.getParametersStartingWith(request, null); + Object serviceScopeId = params.get("serviceScopeId"); + Object sensor_code = params.get("sensor_code"); + Object type = params.get("type"); + Object time = params.get("time"); + Object distance = params.get("distance"); + /*if (ObjectUtils.isEmpty(serviceScopeId)){ + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + }*/ + List<Map<String, Object>> resultList = servicesScopeService.honeycombDiagram(Integer.parseInt(serviceScopeId.toString()), Integer.parseInt(distance.toString()), type.toString(), time.toString(), sensor_code.toString()); + //List<Map<String, Object>> resultList = servicesScopeService.honeycombDiagram(6, 40, "monthly", "2022-02", "a34004"); - return ResultMessage.ok(bigList); + //������jar��������������� + ApplicationHome applicationHome = new ApplicationHome(getClass()); + //���jar������������������������������upload������������������������������������ + String path = applicationHome.getSource().getParentFile().toString() + "/static/tsv"; + + //File file = File.createTempFile("test",".tsv"); + if (!new File(path).exists()){ + new File(path).mkdir(); + } + File file = null; + File dir = new File(path); + file = File.createTempFile("honeycombDiagram",".tsv",dir); + //������������������������������������ + OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file),"UTF-8"); + + //tsv������������������������������������������������������������������������������������������������ + ow.write("lon"); + ow.write(" "); + ow.write("lat"); + ow.write(" "); + ow.write("value"); + //��������������������� + ow.write("\r\n"); + //��������� + for (Map map:resultList) { + ow.write(map.get("lon").toString()); + ow.write(" "); + ow.write(map.get("lat").toString()); + ow.write(" "); + ow.write(map.get("value").toString()); + //������������������ + ow.write("\r\n"); + } + ow.flush(); + ow.close(); + /*File file1 = new File(file.getPath()); + InputStream inputStream = new FileInputStream(file1); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + byte[] bytes = new byte[1024]; + int len; + while ((len = inputStream.read(bytes)) != -1){ + response.getOutputStream().write(bytes,0,len); + } + outputStream.flush(); + outputStream.close(); + inputStream.close();*/ + + /*response.setCharacterEncoding("UTF-8"); + System.out.println(file.getName()); + String realFileName = file.getName(); + response.setHeader("content-type", "application/octet-stream;charset=UTF-8"); + response.addHeader("Content-Length",String.valueOf(file.length())); + response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(realFileName.trim(), "UTF-8")); + byte[] buff = new byte[1024]; + BufferedInputStream bis = null; + OutputStream os = null; + os = response.getOutputStream(); + bis = new BufferedInputStream(new FileInputStream(file)); + int i = bis.read(buff); + while (i != -1) { + os.write(buff, 0, buff.length); + os.flush(); + i = bis.read(buff); + } + bis.close();*/ + + /*//1���������response ��������� + response.reset(); //���������������������,������buffer + response.setCharacterEncoding("UTF-8"); //������������ + response.setContentType("multipart/form-data"); //��������������������� + //��������������� + response.setHeader("Content-Disposition", + "attachment;fileName="+ URLEncoder.encode(file.getName(), "UTF-8")); + + File file1 = new File(file.getParent(),file.getName()); + System.out.println(file1.getParent()); + //2��� ������������--��������� + InputStream input=new FileInputStream(file1); + //3��� ������������--��������� + OutputStream out = response.getOutputStream(); + + byte[] buff =new byte[1024]; + int index=0; + //4��������� ������������ + while((index= input.read(buff))!= -1){ + out.write(buff, 0, index); + out.flush(); + } + out.close(); + input.close();*/ + + Map<String,Object> res = new HashMap<>(); + res.put("path",file.getPath()); + return ResultMessage.ok(res); } } -- Gitblit v1.8.0