|
@@ -0,0 +1,174 @@
|
|
|
+package com.welampiot.controller;
|
|
|
+
|
|
|
+import com.welampiot.common.BaseResult;
|
|
|
+import com.welampiot.common.InterfaceResultEnum;
|
|
|
+import com.welampiot.dto.WaterLevelDevInfoDTO;
|
|
|
+import com.welampiot.dto.WaterLevelDevInfoLogDTO;
|
|
|
+import com.welampiot.service.WaterLevelDevInfoLogService;
|
|
|
+import com.welampiot.service.WaterLevelDevInfoService;
|
|
|
+import com.welampiot.utils.ToolUtils;
|
|
|
+import com.welampiot.vo.WaterLevelDevInfoLogVO;
|
|
|
+import com.welampiot.vo.WaterLevelDevInfoVO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.CrossOrigin;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * ClassName: WaterLevelController
|
|
|
+ * Package: com.welampiot.controller
|
|
|
+ * Description:
|
|
|
+ *
|
|
|
+ * @Author: zhj_Start
|
|
|
+ * @Create: 2023/4/28 - 17:03
|
|
|
+ * @Version: v1.0
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@CrossOrigin
|
|
|
+@RequestMapping("/waterLevel")
|
|
|
+public class WaterLevelController {
|
|
|
+ @Autowired
|
|
|
+ private WaterLevelDevInfoService waterLevelDevInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WaterLevelDevInfoLogService waterLevelDevInfoLogService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ToolUtils toolUtils;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取液位传感器设备列表
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/getList", method = RequestMethod.POST)
|
|
|
+ public BaseResult getList(HttpServletRequest request){
|
|
|
+ Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
|
|
|
+ Integer online = (Integer) toolUtils.getRequestContent(request,"online",1);
|
|
|
+ String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
|
|
|
+ int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
|
|
|
+ int count = request.getParameter("count") == null ? 1 : Integer.parseInt(request.getParameter("count"));
|
|
|
+
|
|
|
+ WaterLevelDevInfoDTO dto = new WaterLevelDevInfoDTO();
|
|
|
+ dto.setOnline(online);
|
|
|
+ dto.setPage(count * (page - 1));
|
|
|
+ dto.setCount(count);
|
|
|
+ dto.setVersion(version);
|
|
|
+ dto.setKeyword(keyword);
|
|
|
+ dto.setSectionList(toolUtils.getSectionList(request));
|
|
|
+
|
|
|
+ WaterLevelDevInfoVO vo = waterLevelDevInfoService.getWaterLevelListByDTO(dto);
|
|
|
+ return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取液位传感器设备统计数据信息
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/envStatisticsInfo", method = RequestMethod.POST)
|
|
|
+ public BaseResult envStatisticsInfo(HttpServletRequest request) throws ParseException {
|
|
|
+ Integer version = (Integer) toolUtils.getRequestContent(request, "version", 1);
|
|
|
+ Integer id = (Integer) toolUtils.getRequestContent(request, "id", 1);
|
|
|
+ if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version);
|
|
|
+ Integer dateType = (Integer) toolUtils.getRequestContent(request, "dateType", 1);
|
|
|
+ Integer timezone = waterLevelDevInfoLogService.getTimezoneByWaterLevelId(id);
|
|
|
+ if (timezone == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL, version);
|
|
|
+ long l = System.currentTimeMillis() - timezone * 3600 * 1000;
|
|
|
+ long startTime = 0L;
|
|
|
+ long endTime = 0L;
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ if (dateType == 0) { // 1 天
|
|
|
+ startTime = l - 24 * 3600 * 1000;
|
|
|
+ endTime = l;
|
|
|
+ } else if (dateType == 1) { // 3 天
|
|
|
+ startTime = l - 24 * 3600 * 1000 * 3;
|
|
|
+ endTime = l;
|
|
|
+ } else if (dateType == 2) { // 7 天
|
|
|
+ startTime = l - 24 * 3600 * 1000 * 7;
|
|
|
+ endTime = l;
|
|
|
+ } else if (dateType == 3) { // 14 天
|
|
|
+ startTime = l - 24 * 3600 * 1000 * 14;
|
|
|
+ endTime = l;
|
|
|
+ }else if (dateType == 4){ // 日期选择 最多30天
|
|
|
+ String date = (String) toolUtils.getRequestContent(request,"date",2);
|
|
|
+ if (date.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_DATE_ERROR,version);
|
|
|
+ List<String> split = Arrays.asList(date.split("/"));
|
|
|
+ System.out.println(split);
|
|
|
+ System.out.println(split.get(0));
|
|
|
+ System.out.println(split.get(1));
|
|
|
+ startTime = simpleDateFormat.parse(split.get(0) + " 00:00:00").getTime();
|
|
|
+ endTime = simpleDateFormat.parse(split.get(1) + " 23:59:59").getTime();
|
|
|
+ if (endTime < startTime) toolUtils.response(InterfaceResultEnum.LACK_DATE_FORMAT_ERROR,version);
|
|
|
+ if (endTime - startTime > 29L *24 * 3600 * 1000) toolUtils.response(InterfaceResultEnum.LACK_DATE_RANGE_ERROR,version);
|
|
|
+ startTime -= timezone * 3600 * 1000;
|
|
|
+ endTime -= timezone * 3600 * 1000;
|
|
|
+ }
|
|
|
+
|
|
|
+ HashMap<String, Integer> objectObjectHashMap = new HashMap<>();
|
|
|
+ long timeT = startTime;
|
|
|
+ int i = 0;
|
|
|
+
|
|
|
+ List<Object> dateList = new ArrayList<>();
|
|
|
+ List<Object> dataSafeList = new ArrayList<>();
|
|
|
+ List<Object> depthList = new ArrayList<>();
|
|
|
+ ArrayList<WaterLevelDevInfoLogDTO> list = new ArrayList<>();
|
|
|
+ simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
|
|
|
+ while (timeT < endTime) {
|
|
|
+ objectObjectHashMap.put(simpleDateFormat.format(new Date(timeT)), i);
|
|
|
+ dateList.add(simpleDateFormat.format(new Date(timeT + timezone * 3600 * 1000)));
|
|
|
+ dataSafeList.add(0);
|
|
|
+ depthList.add(0);
|
|
|
+ list.add(null);
|
|
|
+ timeT += 3600 * 1000;
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String startDate = simpleDateFormat.format(new Date(startTime));
|
|
|
+ String endDate = simpleDateFormat.format(new Date(endTime));
|
|
|
+ WaterLevelDevInfoLogDTO dto = new WaterLevelDevInfoLogDTO();
|
|
|
+ dto.setWaterLevelId(id);
|
|
|
+ dto.setStartDate(startDate);
|
|
|
+ dto.setEndDate(endDate);
|
|
|
+ List<WaterLevelDevInfoLogDTO> envStatisticsInfoByLogDTO = waterLevelDevInfoLogService.getEnvStatisticsInfoByLogDTO(dto);
|
|
|
+ for (WaterLevelDevInfoLogDTO waterLevelDevInfoLogDTO : envStatisticsInfoByLogDTO) {
|
|
|
+ Date date = new Date(simpleDateFormat2.parse(waterLevelDevInfoLogDTO.getUpdateTime()).getTime());
|
|
|
+ String s = simpleDateFormat.format(date);
|
|
|
+ if (objectObjectHashMap.containsKey(s)) {
|
|
|
+ Integer integer = objectObjectHashMap.get(s);
|
|
|
+ list.set(integer, waterLevelDevInfoLogDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (WaterLevelDevInfoLogDTO waterLevelDevInfoLogDTO : list) {
|
|
|
+ if (waterLevelDevInfoLogDTO != null) {
|
|
|
+ Date date = new Date(simpleDateFormat2.parse(waterLevelDevInfoLogDTO.getUpdateTime()).getTime());
|
|
|
+ String s = simpleDateFormat.format(date);
|
|
|
+ Integer integer = null;
|
|
|
+ if (objectObjectHashMap.containsKey(s)) {
|
|
|
+ integer = objectObjectHashMap.get(s);
|
|
|
+ list.set(integer, waterLevelDevInfoLogDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (waterLevelDevInfoLogDTO.getSafeDepth() != null && !waterLevelDevInfoLogDTO.getSafeDepth().equals("0") && integer != null){
|
|
|
+ dataSafeList.set(integer,Float.valueOf(waterLevelDevInfoLogDTO.getSafeDepth()));
|
|
|
+ }
|
|
|
+ if (waterLevelDevInfoLogDTO.getDepth() != null && !waterLevelDevInfoLogDTO.getDepth().equals("0") && integer != null){
|
|
|
+ depthList.set(integer,Float.valueOf(waterLevelDevInfoLogDTO.getDepth()));
|
|
|
+ }
|
|
|
+ date = new Date(simpleDateFormat2.parse(waterLevelDevInfoLogDTO.getUpdateTime()).getTime() + timezone * 3600 * 1000);
|
|
|
+ waterLevelDevInfoLogDTO.setUpdateTime(simpleDateFormat.format(date));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WaterLevelDevInfoLogVO waterLevelDevInfoLogVO = new WaterLevelDevInfoLogVO();
|
|
|
+ waterLevelDevInfoLogVO.setDateList(dateList);
|
|
|
+ waterLevelDevInfoLogVO.setDataSafeList(dataSafeList);
|
|
|
+ waterLevelDevInfoLogVO.setDepthList(depthList);
|
|
|
+ return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version, waterLevelDevInfoLogVO);
|
|
|
+ }
|
|
|
+}
|