yq 2 年 前
コミット
37eb4c7f22

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDataOverview.java

@@ -58,6 +58,8 @@ public class DmpDataOverview implements Serializable {
      */
     private String productDevice;
 
+    private Integer cycleType;
+
     /**
      * 设备月活跃分析
      */

+ 2 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -31,7 +31,6 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -149,9 +148,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         ServletOutputStream outputStream = null;
         try {
             //使用流的形式传输
-            response.setHeader("content-type", "application/octet-stream");
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
             //防止中文乱码
-            response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode("设备信息.xls", "UTF-8"));
+            response.setCharacterEncoding("utf-8");
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
         } catch (IOException e) {

+ 29 - 13
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/job/DmpDataOverviewJob.java

@@ -43,7 +43,7 @@ public class DmpDataOverviewJob {
         Date date1 = DateUtils.setHours(date, 0);
         Date date2 = DateUtils.setMinutes(date1, 0);
         Date date3 = DateUtils.setSeconds(date2, 0);
-        Date date4 = DateUtils.setDays(date3, 0);
+        Date date4 = DateUtils.setDays(date3, 1);
         //产品日
         List<DmpDataOverview> dmpDataOverviews = new ArrayList<>();
         List<DmpDataOverviewVO> list = getListMap(null, dayStartTime, dayEndTime);
@@ -64,10 +64,10 @@ public class DmpDataOverviewJob {
                     .findFirst()
                     .ifPresent(hy -> dmpDataOverviewVO.setHyCount(hy.getHyCount()));
         }
-        List<DmpDataOverview> listByTimeAndIds = getListByTimeAndIds(monthList, date4);
+        List<DmpDataOverview> listByTimeAndIds = getListByTimeAndIds(monthList, firstDayOfMonth,lastDayOfMonth);
         for (DmpDataOverviewVO dmpDataOverviewVO : monthList) {
             listByTimeAndIds.stream()
-                    .filter(dm -> dmpDataOverviewVO.getProductId().equals(dm.getProductId()) && dm.getCreatedTime().equals(date4))
+                    .filter(dm -> dmpDataOverviewVO.getProductId().equals(dm.getProductId()) && DateUtils.isSameDay(dm.getCreatedTime(),date4))
                     .findAny()
                     .map(dm -> {
                         dm.setDeviceNumber(JSON.toJSONString(dmpDataOverviewVO));
@@ -78,6 +78,7 @@ public class DmpDataOverviewJob {
                         dmpDataOverview.setDeviceNumber(JSON.toJSONString(dmpDataOverviewVO));
                         dmpDataOverview.setProductId(dmpDataOverviewVO.getProductId());
                         dmpDataOverview.setCreatedTime(date4);
+                        dmpDataOverview.setCycleType(2);
                         listByTimeAndIds.add(dmpDataOverview);
                         return dmpDataOverview;
                     });
@@ -86,20 +87,35 @@ public class DmpDataOverviewJob {
     }
 
 
+    public static void main(String[] args) {
+        Date date = new Date();
+        Date date1 = DateUtils.setHours(date, 0);
+        Date date2 = DateUtils.setMinutes(date1, 0);
+        Date date3 = DateUtils.setSeconds(date2, 0);
+        Date date4 = DateUtils.setDays(date3, 1);
+        System.out.println(DateUtils.isSameDay(date4, date4));
+    }
+
     /**
-     * 获取月统计信息
+     * 统计信息
      * @param productIds
-     * @param date
+     * @param startTime
+     * @param endTime
      * @return
      */
-    public List<DmpDataOverview> getListByTimeAndIds(List<DmpDataOverviewVO> productIds,Date date){
-        List<Integer> productId = productIds.stream()
-                .map(DmpDataOverviewVO::getProductId)
-                .collect(Collectors.toList());
-        LambdaQueryWrapper<DmpDataOverview> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.in(CollectionUtils.isNotEmpty(productId),DmpDataOverview::getProductId,productId)
-                .eq(DmpDataOverview::getCreatedTime,date);
-        return dmpDataOverviewService.list(queryWrapper);
+    public List<DmpDataOverview> getListByTimeAndIds(List<DmpDataOverviewVO> productIds,Date startTime,Date endTime){
+        if (CollectionUtils.isNotEmpty(productIds)){
+            List<Integer> productId = productIds.stream()
+                    .map(DmpDataOverviewVO::getProductId)
+                    .collect(Collectors.toList());
+            LambdaQueryWrapper<DmpDataOverview> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.in(DmpDataOverview::getProductId,productId)
+                    .between(DmpDataOverview::getCreatedTime,startTime,endTime)
+                    .eq(DmpDataOverview::getCycleType,2);
+            return dmpDataOverviewService.list(queryWrapper);
+        }else {
+            return new ArrayList<>();
+        }
     }
 
     public List<DmpDataOverviewVO> getHyListMap(Integer productId,Date startTime,Date endTime){