From 239927b057f65a040594f7a4cb08c8881b303797 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Fri, 18 Aug 2023 14:52:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cjl-230812' into cjl-230812
---
screen-api/src/main/java/com/moral/api/controller/ChartController.java | 306 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 270 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..d68dddb 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,268 @@
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("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