Ver código fonte

数据管理-需量分析优化

jichaobo 3 anos atrás
pai
commit
3837a97039

+ 32 - 4
fiveep-service/src/main/java/com/bizmatics/service/impl/HtAnalogDataServiceImpl.java

@@ -21,6 +21,7 @@ import com.bizmatics.service.util.SecurityUtils;
 import com.bizmatics.service.vo.*;
 import com.fasterxml.jackson.core.type.TypeReference;
 import lombok.SneakyThrows;
+import org.apache.lucene.index.OneMergeWrappingMergePolicy;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -630,13 +631,40 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
 
     @Override
     public List<CommonIcoVO> demandAnalysis(String deviceCode, String monthDate, int cycle) {
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd");
+        String date = FieldEscapeUtils.getLastDayOfMonth(monthDate);
+        String date1=monthDate+"-01 00:00:00";
+        String date2 = date + " 23:59:59";
+        Date startTime;
+        Date endTime;
+        try {
+           startTime = formatter.parse(date1);
+            endTime = formatter.parse(date2);
+        } catch (Exception e) {
+            throw new BusinessException("时间错误");
+        }
+
+        LambdaQueryWrapper<HtAnalogData> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(HtAnalogData::getDemand,HtAnalogData::getFreezingTime)
+                .eq(HtAnalogData::getDeviceName,deviceCode)
+                .between(HtAnalogData::getFreezingTime,startTime,endTime).groupBy(HtAnalogData::getFreezingTime);
+        List<HtAnalogData> list1 = this.list(queryWrapper);
         List<Object> demandList = new ArrayList<>();
         List<Object> freezingTimesList = new ArrayList<>();
-        List<HtAnalogDataVo> maxdemandAnalysis = baseMapper.demandAnalysisList(deviceCode, monthDate);
-        for (int i = 0; i < maxdemandAnalysis.size(); i++){
-            demandList.add(maxdemandAnalysis.get(i).getDemand());
-            freezingTimesList.add(maxdemandAnalysis.get(i).getFreezingTimes());
+        for (int i = 0; i < list1.size(); i++){
+            demandList.add(list1.get(i).getDemand());
+            freezingTimesList.add(formatter1.format(list1.get(i).getFreezingTime()));
         }
+
+
+//        List<Object> demandList = new ArrayList<>();
+//        List<Object> freezingTimesList = new ArrayList<>();
+//        List<HtAnalogDataVo> maxdemandAnalysis = baseMapper.demandAnalysisList(deviceCode, monthDate);
+//        for (int i = 0; i < maxdemandAnalysis.size(); i++){
+//            demandList.add(maxdemandAnalysis.get(i).getDemand());
+//            freezingTimesList.add(maxdemandAnalysis.get(i).getFreezingTimes());
+//        }
         List<CommonIcoVO> list = new ArrayList<>();
         list.add(CommonIcoVO.builder().name("实时有功需量").list(demandList).listDate(freezingTimesList).build());
         return list;

+ 22 - 4
fiveep-service/src/main/java/com/bizmatics/service/util/FieldEscapeUtils.java

@@ -11,10 +11,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * 伍继电力字段转义
@@ -24,6 +22,26 @@ import java.util.Map;
 public class FieldEscapeUtils
 {
 
+    public static String getLastDayOfMonth(String yearMonth) {
+        int year = Integer.parseInt(yearMonth.split("-")[0]);  //年
+        int month = Integer.parseInt(yearMonth.split("-")[1]); //月
+        Calendar cal = Calendar.getInstance();
+        // 设置年份
+        cal.set(Calendar.YEAR, year);
+        // 设置月份
+        // cal.set(Calendar.MONTH, month - 1);
+        cal.set(Calendar.MONTH, month); //设置当前月的上一个月
+        // 获取某月最大天数
+        //int lastDay = cal.getActualMaximum(Calendar.DATE);
+        int lastDay = cal.getMinimum(Calendar.DATE); //获取月份中的最小值,即第一天
+        // 设置日历中月份的最大天数
+        //cal.set(Calendar.DAY_OF_MONTH, lastDay);
+        cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //上月的第一天减去1就是当月的最后一天
+        // 格式化日期
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(cal.getTime());
+    }
+
     public static void remove1(List<String> list) {
         Iterator<String> sListIterator = list.iterator();
         while (sListIterator.hasNext()) {