Browse Source

数据统计-接口调试程序完善

黄远 5 years ago
parent
commit
357c5a6d30

+ 25 - 0
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/constants/DataStatisticsConstants.java

@@ -10,6 +10,31 @@ import java.util.Map;
  */
 public class DataStatisticsConstants {
 
+    /**
+     * 间隔类型为年
+     */
+    public static final String INTERVAL_TYPE_YEAR = "intervalYear";
+
+    /**
+     * 间隔类型为月
+     */
+    public static final String INTERVAL_TYPE_MONTH = "intervalMonth";
+
+    /**
+     * 间隔类型为天
+     */
+    public static final String INTERVAL_TYPE_DAY = "intervalDay";
+
+    /**
+     * 间隔类型为小时
+     */
+    public static final String INTERVAL_TYPE_HOUR = "intervalHour";
+
+    /**
+     * 间隔类型为分
+     */
+    public static final String INTERVAL_TYPE_MINUTE = "intervalMinute";
+
     /**
      * 时间格式
      */

+ 4 - 3
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/service/ContractDataService.java

@@ -45,7 +45,8 @@ public class ContractDataService {
         List<ContractDataModel> contractDataModelList = contractDataMapper.getContractDataList(commonRequest);
         if (contractDataModelList != null && contractDataModelList.size() > 0) {
             //将合同数据变为 id->数据的map
-            Map<Long, ContractDataModel> idToContractModel = contractDataModelList.stream().collect(Collectors.toMap(ContractDataModel::getId, a -> a));
+            Map<Long, Long> idToContractModel = contractDataModelList.stream().collect(
+                    Collectors.groupingBy(ContractDataModel::getId, Collectors.counting()));
             //设置合同状态
             contractDataModelList.forEach(a -> {
                 if (a.getStatus() != null) {
@@ -55,8 +56,8 @@ public class ContractDataService {
                         case 3:
                             //合同结束,如果有续签,则合同未丢失,如果没有需求合同丢失
                             a.setContractType(3);
-                            ContractDataModel contractDataModel = idToContractModel.get(a.getId());
-                            if (contractDataModel != null) {
+                            Long count = idToContractModel.get(a.getId());
+                            if (count != null && count > 0) {
                                 a.setContractType(0);
                             }
                     }

+ 36 - 6
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/service/MaintenanceDataService.java

@@ -101,7 +101,12 @@ public class MaintenanceDataService {
             //保养状态 0:待完成 1:已完成 2:超期
             //设置完成保养数
             long finishNum = maintenanceDataModelList.stream()
-                    .filter(a -> a.getMaintenanceStatus() == 1)
+                    .filter(a -> {
+                        if (a.getMaintenanceStatus() != null) {
+                            return a.getMaintenanceStatus() == 1;
+                        }
+                        return false;
+                    })
                     .count();
             maintenanceOverViewResponse.setFinishNum(finishNum);
             setBeyondNum(maintenanceOverViewResponse, maintenanceDataModelList);
@@ -122,7 +127,12 @@ public class MaintenanceDataService {
         if (maintenanceDataModelList != null && maintenanceDataModelList.size() > 0) {
             //获取超期数
             maintenanceDataModelList = maintenanceDataModelList.stream()
-                    .filter(a -> a.getMaintenanceStatus() == 2)
+                    .filter(a -> {
+                        if (a.getMaintenanceStatus() != null) {
+                            return a.getMaintenanceStatus() == 2;
+                        }
+                        return false;
+                    })
                     .collect(Collectors.toList());
             Map<String, Long> allProjectNameToBeyondNum = maintenanceDataModelList.stream()
                     .collect(Collectors.groupingBy(MaintenanceDataModel::getProjectName, Collectors.counting()));
@@ -148,12 +158,22 @@ public class MaintenanceDataService {
                               List<MaintenanceDataModel> maintenanceDataModelList) {
         //设置总超期数
         long totalBeyondNum = maintenanceDataModelList.stream()
-                .filter(a -> a.getMaintenanceStatus() == 2)
+                .filter(a -> {
+                    if (a.getMaintenanceStatus() != null) {
+                        return a.getMaintenanceStatus() == 2;
+                    }
+                    return false;
+                })
                 .count();
         maintenanceOverViewResponse.setTotalBeyondNum(totalBeyondNum);
         //获取超期的维保记录
         List<MaintenanceDataModel> beyondMaintenanceDataModelList = maintenanceDataModelList.stream()
-                .filter(a -> a.getMaintenanceStatus() == 2)
+                .filter(a -> {
+                    if (a.getMaintenanceStatus() != null) {
+                        return a.getMaintenanceStatus() == 2;
+                    }
+                    return false;
+                })
                 .collect(Collectors.toList());
         if (beyondMaintenanceDataModelList != null && beyondMaintenanceDataModelList.size() > 0) {
             //获取当前时间
@@ -162,11 +182,21 @@ public class MaintenanceDataService {
             setBeyondType(maintenanceDataModelList, beyondMaintenanceDataModelList, now);
             //设置计划超期数
             long planBeyondNum = beyondMaintenanceDataModelList.stream()
-                    .filter(a -> a.getBeyondType() == 1)
+                    .filter(a -> {
+                        if (a.getBeyondType() != null) {
+                            return a.getBeyondType() == 1;
+                        }
+                        return false;
+                    })
                     .count();
             //设置法规超期数
             long lawBeyondNum = beyondMaintenanceDataModelList.stream()
-                    .filter(a -> a.getBeyondType() == 2)
+                    .filter(a -> {
+                        if (a.getBeyondType() != null) {
+                            return a.getBeyondType() == 2;
+                        }
+                        return false;
+                    })
                     .count();
             maintenanceOverViewResponse.setPlanBeyondNum(planBeyondNum);
             maintenanceOverViewResponse.setLawBeyondNum(lawBeyondNum);

+ 17 - 5
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/service/PaymentDataService.java

@@ -10,11 +10,11 @@ import cn.com.ty.lift.batch.applet.dao.model.response.RegionPaymentResponse;
 import cn.com.ty.lift.batch.applet.util.DataStatisticsUtil;
 import cn.com.ty.lift.common.constants.ApiConstants;
 import cn.com.xwy.boot.web.dto.RestResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.time.Duration;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Comparator;
@@ -140,7 +140,12 @@ public class PaymentDataService {
             final List<RegionPaymentResponse> finalRegionPaymentResponseList = new ArrayList<>();
             //区域名称对应付款数据
             Map<String, List<PaymentDataModel>> regionNameToPaymentData = paymentDataModelList.stream()
-                    .collect(Collectors.groupingBy(PaymentDataModel::getRegionName));
+                    .collect(Collectors.groupingBy(a -> {
+                        if (StringUtils.isNotBlank(a.getRegionName())) {
+                            return a.getRegionName();
+                        }
+                        return "暂无名称";
+                    }));
             regionNameToPaymentData.forEach((key, value) -> {
                 RegionPaymentResponse regionPaymentResponse = new RegionPaymentResponse();
                 //计划收款总和
@@ -181,7 +186,12 @@ public class PaymentDataService {
             final List<ProjectPaymentResponse> finalProjectPaymentResponseList = new ArrayList<>();
             //将数据转化为项目名->付款数据
             Map<String, List<PaymentDataModel>> projectNameToPaymentData = paymentDataModelList.stream()
-                    .collect(Collectors.groupingBy(PaymentDataModel::getProjectName));
+                    .collect(Collectors.groupingBy(a -> {
+                        if (StringUtils.isNotBlank(a.getProjectName())) {
+                            return a.getProjectName();
+                        }
+                        return "暂无名称";
+                    }));
             projectNameToPaymentData.forEach((key, value) -> {
                 if (value != null && value.size() > 0) {
                     PaymentDataModel paymentDataModel = value.get(0);
@@ -201,8 +211,10 @@ public class PaymentDataService {
                     if (paymentDataModel.getWorkDate() != null) {
                         afterDate = paymentDataModel.getWorkDate();
                     }
-                    Duration duration = Duration.between(afterDate, paymentDataModel.getPlanDate());
-                    projectPaymentResponse.setDueToDays(duration.toDays());
+                    if (afterDate != null && paymentDataModel.getPlanDate() != null) {
+                        projectPaymentResponse.setDueToDays(Long.valueOf(afterDate.until(
+                                paymentDataModel.getPlanDate()).getDays()));
+                    }
                     //合同金额
                     double contractMoney = paymentDataModel.getContractMoney() != null
                             ? paymentDataModel.getContractMoney().doubleValue() : 0d;

+ 6 - 2
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/util/DataInitUtil.java

@@ -1,5 +1,6 @@
 package cn.com.ty.lift.batch.applet.util;
 
+import cn.com.ty.lift.batch.applet.constants.DataStatisticsConstants;
 import cn.com.ty.lift.batch.applet.dao.model.request.CommonRequest;
 import cn.com.ty.lift.batch.applet.service.*;
 import lombok.extern.slf4j.Slf4j;
@@ -42,7 +43,8 @@ public class DataInitUtil {
      */
     public void initAppletData() {
         //除维保以外其他统计类数据获取数据时间段: 3年前 - 当前时间
-        CommonRequest otherCommonRequest = DataStatisticsUtil.initCommonRequest(-3L);
+        CommonRequest otherCommonRequest = DataStatisticsUtil.initCommonRequest(-3L,
+                DataStatisticsConstants.INTERVAL_TYPE_YEAR);
         //初始化急修数据
         emergencyRepairDataService.putEmergencyRepairDataListToRedis(otherCommonRequest);
         log.info("初始化急修数据成功");
@@ -59,7 +61,9 @@ public class DataInitUtil {
         annualInspectionDataService.putAnnualInspectionDataToRedis(otherCommonRequest);
         log.info("初始化年检数据成功");
         //维保数据获取数据的时间段: 1年前 - 当前时间
-        CommonRequest maintenanceCommonRequest = DataStatisticsUtil.initCommonRequest(-1L);
+        //测试数据 3个月前 - 当前时间
+        CommonRequest maintenanceCommonRequest = DataStatisticsUtil.initCommonRequest(-30L,
+                DataStatisticsConstants.INTERVAL_TYPE_DAY);
         maintenanceDataService.putMaintenanceDataListToRedis(maintenanceCommonRequest);
         log.info("初始化维保数据成功");
     }

+ 37 - 7
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/util/DataStatisticsUtil.java

@@ -34,9 +34,16 @@ public class DataStatisticsUtil {
      */
     public static void putStatisticsDataToRedis(List<? extends BaseDataModel> dataList, RedisTemplate redisTemplate,
                                                 String dataKey) {
-        //通过公司id给数组分组
-        Map<Long, ? extends List<? extends BaseDataModel>> mtCompanyIdToData = dataList.stream()
-                .collect(Collectors.groupingBy(BaseDataModel::getMtCompanyId));
+        Map<Long, ? extends List<? extends BaseDataModel>> mtCompanyIdToData = new HashMap<>();
+        if (dataList != null && dataList.size() > 0) {
+            //通过公司id对数据进行分组
+            mtCompanyIdToData = dataList.stream().collect(Collectors.groupingBy(baseDataModel -> {
+                if (baseDataModel.getMtCompanyId() != null) {
+                    return baseDataModel.getMtCompanyId();
+                }
+                return 123456789L;
+            }));
+        }
         //存放缓存时间为1天
         redisTemplate.opsForValue().set(dataKey, mtCompanyIdToData, 1L, TimeUnit.DAYS);
     }
@@ -211,16 +218,39 @@ public class DataStatisticsUtil {
     }
 
     /**
-     * @param yearInterval 年份间隔 正值:之后的年份 负值:之前的年份
+     * @param timeInterval 时间间隔 正值:之后的时间 负值:之前的时间
+     * @param intervalType 间隔类型 : intervalYear 年
+     *                     intervalMonth 月
+     *                     intervalDay 天
+     *                     intervalMinute 分
      * @return
      * @description 初始化commonRequest请求对象
      * @date 2020/2/10 12:07 下午
      */
-    public static CommonRequest initCommonRequest(Long yearInterval) {
+    public static CommonRequest initCommonRequest(Long timeInterval, String intervalType) {
         CommonRequest commonRequest = new CommonRequest();
         LocalDateTime now = LocalDateTime.now();
-        //获取时间间隔前的时间
-        LocalDateTime beforeTime = now.plusYears(yearInterval);
+        //获取时间间隔前的时间, 默认为年份间隔
+        LocalDateTime beforeTime = now.plusYears(timeInterval);
+        //通过时间间隔类型来计算时间
+        switch (intervalType) {
+            //月份间隔
+            case DataStatisticsConstants.INTERVAL_TYPE_MONTH:
+                beforeTime = now.plusMonths(timeInterval);
+                break;
+            //天间隔
+            case DataStatisticsConstants.INTERVAL_TYPE_DAY:
+                beforeTime = now.plusDays(timeInterval);
+                break;
+            //小时间隔
+            case DataStatisticsConstants.INTERVAL_TYPE_HOUR:
+                beforeTime = now.plusHours(timeInterval);
+                break;
+            //分钟间隔
+            case DataStatisticsConstants.INTERVAL_TYPE_MINUTE:
+                beforeTime = now.plusMinutes(timeInterval);
+                break;
+        }
         //获取格式化后的时间字符串
         //起始时间
         commonRequest.setStartTimeDate(beforeTime);

+ 28 - 0
lift-batch-service/src/main/resources/application-web.yml

@@ -0,0 +1,28 @@
+spring:
+  datasource:
+    url: jdbc:mysql://111.47.6.224:13769/rdsliftmanager?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: Tyty-2020
+    driver-class-name: com.mysql.cj.jdbc.Driver
+
+  #redis缓存配置
+  redis:
+    database: 0 #数据库索引,默认为0
+    host: 111.47.6.224 #服务器地址
+    port: 13789 #端口
+    password: newtyty #验证密码
+    jedis:
+      pool:
+        max-active: 8 #最大连接数
+        max-idle: 8 #最大空闲链接
+        max-wait: 20000ms
+        min-idle: 0
+    timeout: 600000
+
+#aliyun OSS服务配置信息,加载到SystemConfiguration
+aliyun:
+  oss:
+    endpoint: http://oss-cn-beijing.aliyuncs.com
+    bucketName: temp15827479607
+    accessKeyId: LTAI4FkSqFZa6LH9HqAsVott
+    accessKeySecret: w7GXuh5tf1hduQuZ2AzT3a4q14BI1i

+ 1 - 1
lift-batch-service/src/main/resources/application.yml

@@ -5,7 +5,7 @@ spring:
   application:
     name: lift-batch-service
   profiles:
-    active: local
+    active: web
 
 # mybatis-plus配置
 mybatis-plus: