Переглянути джерело

市自来水更新:
1.市自来水五个片区15分钟单位的实际数据采集
2.15分钟单位实际数据查询接口
3.15分钟单位预测数据查询接口
4.定时任务新增片区和分区站点的15分钟单位的数据采集,每五分钟获取一次
5.实现15分钟预测插值并实现拆分平滑处理
6.和尚山十五分钟数据特殊处理
7.自来水修改泵组优化数据查询接口,变更为查询条件为时间范围

1037015548@qq.com 4 тижнів тому
батько
коміт
c97ac374a1

+ 1 - 1
src/main/java/com/shkpr/service/aimodelpower/bizmgr/KprAimWaterCollecationBizFun.java

@@ -1164,7 +1164,7 @@ public class KprAimWaterCollecationBizFun {
     /**
      * 传入水厂id及日期
      */
-    public static ResponseRes selectTbMHourwaterWatersupply(JPTbMHourWater jpTbMHourWater,String subType){
+    public static ResponseRes selectTbMHourwaterWatersupply(JPTbMHourPump jpTbMHourWater,String subType){
         ResponseRes responseRes = new ResponseRes();
         //TODO 默认值
         List<InPumpModel> defaultModels = new ArrayList<>();

+ 4 - 3
src/main/java/com/shkpr/service/aimodelpower/controllerapi/WaterCollecationController.java

@@ -615,7 +615,7 @@ public class WaterCollecationController {
         final String URI_PATH = request.getRequestURI();
         final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
         final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
-        JPTbMHourWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbMHourWater.class);
+        JPTbMHourPump oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbMHourPump.class);
         if (oJsonParam == null
                 || !oJsonParam.checkValid()){
             throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
@@ -700,12 +700,13 @@ public class WaterCollecationController {
                     }
                     List<InPumpModel> resMap = new ArrayList<>();
                     for (String id:childIdList) {
-                        JPTbMHourWater hourWater = new JPTbMHourWater();
+                        JPTbMHourPump hourWater = new JPTbMHourPump();
                         hourWater.setIsPage(oJsonParam.getIsPage());
                         hourWater.setOrgId(id);
                         hourWater.setLimit(oJsonParam.getLimit());
                         hourWater.setOffset(oJsonParam.getOffset());
-                        hourWater.setQueryDate(oJsonParam.getQueryDate());
+                        hourWater.setStartDate(oJsonParam.getStartDate());
+                        hourWater.setEndDate(oJsonParam.getEndDate());
                         hourWater.checkValid();
                         ResponseRes obj =  KprAimWaterCollecationBizFun.selectTbMHourwaterWatersupply(hourWater, outSubType);
                         resMap.addAll((List<InPumpModel>)obj.getResdata());

+ 2 - 2
src/main/java/com/shkpr/service/aimodelpower/globalmgr/ScheduleTaskMgr.java

@@ -263,7 +263,7 @@ public class ScheduleTaskMgr {
     }
 
 //    TODO 自来水的注释以下俩方法initPumpRecordAll checkPumpRecordAll
-    @PostConstruct
+    /*@PostConstruct
     public void initPumpRecordAll(){
         new Timer().schedule(new TimerTask() {
             @Override
@@ -291,7 +291,7 @@ public class ScheduleTaskMgr {
                 KprAimTapWaterBizFun.initWaterPumpReacordAll(formattedDate);
             }
         },5000);
-    }
+    }*/
 
     @PostConstruct
     public void initDatabaseName(){

+ 102 - 0
src/main/java/com/shkpr/service/aimodelpower/jsonbean/zilaishui/JPTbMHourPump.java

@@ -0,0 +1,102 @@
+package com.shkpr.service.aimodelpower.jsonbean.zilaishui;
+
+import com.global.base.log.LogLevelFlag;
+import com.global.base.log.LogPrintMgr;
+import com.shkpr.service.aimodelpower.commtools.TimeTool;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidList;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidSS;
+import lombok.Data;
+import org.hibernate.validator.constraints.Range;
+import org.springframework.util.StringUtils;
+
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
+
+/**
+ * @ClassName JPTbMHourPump
+ * @Description: TODO
+ * @Author LX
+ * @Date 2025/6/6
+ * @Version V1.0
+ **/
+@Data
+public class JPTbMHourPump {
+    private Boolean isPage = false;//是否分页 默认false
+
+    private String orgId;//水厂id
+
+    @Range(min = 0, max = 65535, groups = {CommonParamValidList.class, CommonParamValidSS.class})
+    private Integer limit = 20;//若分页 默认数为20
+
+    @Range(min = 0, max = Integer.MAX_VALUE, groups = {CommonParamValidList.class, CommonParamValidSS.class})
+    private Integer offset = 0;//若分页 默认起始值为0
+
+    private Long startDate;//开始日期 (实际时间为 年 月 日(就为当月的一号),时分秒为 00:00:00,如2023-03-01 00:00:00)
+
+    private Long endDate;//结束日期 (实际时间为 年 月 日(就为当月的一号),时分秒为 00:00:00,如2023-03-01 00:00:00)
+
+    //业务字段
+    private String forDateStr;
+
+    public boolean checkValid(){
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        if (startDate == null && endDate != null) {
+            return false;
+        }
+        StringBuilder strSql = new StringBuilder("");
+        if (startDate == null && endDate == null) {
+            //TODO 说明前端没传,那么默认为查今天0点到当前小时点的
+            LocalDateTime nowDate = LocalDateTime.now();//结束时间
+            nowDate = nowDate.withHour(0);
+            nowDate = nowDate.withMinute(0);
+            nowDate = nowDate.withSecond(0);
+
+            LocalDateTime startLocalDate = nowDate;
+
+            String startLocalDateStr = startLocalDate.format(formatter);
+            String endLocalDateStr = LocalDateTime.now().withMinute(0).withSecond(0).format(formatter);
+            strSql.append(" AND CONCAT(\"Date\", ' ', \"Hour\") BETWEEN  '" + startLocalDateStr + "' " + "AND '" + endLocalDateStr + "'");
+            forDateStr = strSql.toString();
+            startDate = TimeTool.convertDateStr2UTC(startLocalDateStr);
+            endDate = TimeTool.convertDateStr2UTC(endLocalDateStr);
+        } else if (startDate != null && endDate != null) {
+            try {
+                LocalDateTime startLocalDate = LocalDateTime.parse(TimeTool.convertUTC2DateStr(startDate, TimeTool.TIMESTAMP_FORMAT), DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT));
+                LocalDateTime endLocalDate = LocalDateTime.parse(TimeTool.convertUTC2DateStr(endDate, TimeTool.TIMESTAMP_FORMAT), DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT));
+//                long monthsBetween = ChronoUnit.MONTHS.between(startLocalDate, endLocalDate);
+                if (startLocalDate.isAfter(endLocalDate)) {
+                    return false;
+                } else if (endLocalDate.isBefore(startLocalDate)) {
+                    return false;
+                } else if (startLocalDate.equals(endLocalDate) || startLocalDate.isBefore(endLocalDate)) {
+                    //TODO 说明符合可组成查询日期的条件
+                    //TODO 按照需求,特殊化结束时间再加4天
+                    String startLocalDateStr = startLocalDate.format(formatter);
+                    String endLocalDateStr = endLocalDate.format(formatter);
+                    strSql.append(" AND CONCAT(\"Date\", ' ', \"Hour\") BETWEEN  '" + startLocalDateStr + "' " + "AND '" + endLocalDateStr + "'");
+                    forDateStr = strSql.toString();
+                    startDate = TimeTool.convertDateStr2UTC(startLocalDateStr);
+                    endDate = TimeTool.convertDateStr2UTC(endLocalDateStr);
+                }
+            } catch (Exception ex) {
+                LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, "JPCustomerMeterSS", "JPCustomerMeterSS"
+                        , String.format("errorMsg:%s====>"
+                                , ex.getLocalizedMessage()));
+                return false;
+            }
+        } else if (startDate != null && endDate == null) {//警告没事,增加代码可读性
+            //TODO 说明startDate传了  endDate没传 , 那么endDate为startDate月的最后一天
+            LocalDateTime startLocalDate = LocalDateTime.parse(TimeTool.convertUTC2DateStr(startDate, TimeTool.TIMESTAMP_FORMAT), DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT));
+            LocalDateTime endLocalDate =  LocalDateTime.now().withMinute(0).withSecond(0);
+            String startLocalDateStr = startLocalDate.format(formatter);
+            String endLocalDateStr = endLocalDate.format(formatter);
+            strSql.append(" AND CONCAT(\"Date\", ' ', \"Hour\") BETWEEN  '" + startLocalDateStr + "' " + "AND '" + endLocalDateStr + "'");
+            forDateStr = strSql.toString();
+            endDate = TimeTool.convertDateStr2UTC(endLocalDateStr);
+        }
+        return true;
+    }
+}