فهرست منبع

数据统计集成

黄远 5 سال پیش
والد
کامیت
b47adf225f
13فایلهای تغییر یافته به همراه351 افزوده شده و 9 حذف شده
  1. 40 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/constants/CommonConstants.java
  2. 23 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/mapper/HomeLiftDataMapper.java
  3. 43 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/mapper/StatisticsCountMapper.java
  4. 1 1
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/model/LiftDataModel.java
  5. 32 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/model/LiftUnitsDataModel.java
  6. 109 5
      lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/service/PlatformDataStatisticsService.java
  7. 3 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/settings/dao/entity/MaintenanceCompany.java
  8. 9 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/settings/service/IMaintenanceCompanyService.java
  9. 19 2
      lift-system-service/src/main/java/cn/com/ty/lift/system/settings/service/impl/MaintenanceCompanyServiceImpl.java
  10. 10 1
      lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/IAreaCodeService.java
  11. 17 0
      lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/AreaCodeService.java
  12. 20 0
      lift-system-service/src/main/resources/mapper/HomeLiftDataMapper.xml
  13. 25 0
      lift-system-service/src/main/resources/mapper/StatisticsCountMapper.xml

+ 40 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/constants/CommonConstants.java

@@ -31,6 +31,11 @@ public class CommonConstants {
      */
     public static final Map<Integer, Long> LIFT_DATA_STATUS_TO_NUM = new HashMap<>();
 
+    /**
+     * vip状态 -> 公司数量
+     */
+    public static final Map<Integer, Long> VIP_STATUS_TO_COMPANY_NUM = new HashMap<>();
+
     /**
      * 用户申请状态码数组
      */
@@ -59,6 +64,10 @@ public class CommonConstants {
         for (int liftDataStatus : LiftDataConstants.LIFT_DATA_STATUS_ARRAY) {
             LIFT_DATA_STATUS_TO_NUM.put(liftDataStatus, 0L);
         }
+        //初始化vip状态对应公司数量
+        for (int vipStatus : PlatformDataStatisticsConstants.MAINTENANCE_VIP_STATUS_ARRAY) {
+            VIP_STATUS_TO_COMPANY_NUM.put(vipStatus, 0L);
+        }
     }
 
     /**
@@ -158,4 +167,35 @@ public class CommonConstants {
                 STATUS_NO_LOCATE
         };
     }
+
+    /**
+     * 数据统计常量
+     */
+    public interface PlatformDataStatisticsConstants {
+        //是否vip用户
+        /**
+         * 所有用户
+         */
+        int IS_VIP_ALL = 10;
+
+        /**
+         * vip用户
+         */
+        int IS_VIP_YES = 1;
+
+        /**
+         * 不是vip用户
+         */
+        int IS_VIP_NO = 0;
+
+        /**
+         * vip用户状态数组
+         */
+        int[] MAINTENANCE_VIP_STATUS_ARRAY = {
+                IS_VIP_ALL,
+                IS_VIP_YES,
+                IS_VIP_NO
+        };
+    }
+
 }

+ 23 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/mapper/HomeLiftDataMapper.java

@@ -0,0 +1,23 @@
+package cn.com.ty.lift.system.homepage.dao.mapper;
+
+import cn.com.ty.lift.system.homepage.dao.model.LiftUnitsDataModel;
+import cn.com.xwy.boot.mybatis.MyBatisMapper;
+
+import java.util.List;
+
+/**
+ * @author huangyuan
+ * @date 2020/2/17
+ * @description 首页电梯数据
+ */
+@MyBatisMapper
+public interface HomeLiftDataMapper {
+
+    /**
+     * @param
+     * @return
+     * @description 获取电梯台量统计信息
+     * @date 2020/2/17 4:19 下午
+     */
+    List<LiftUnitsDataModel> getLiftUnitsData();
+}

+ 43 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/mapper/StatisticsCountMapper.java

@@ -0,0 +1,43 @@
+package cn.com.ty.lift.system.homepage.dao.mapper;
+
+import cn.com.xwy.boot.mybatis.MyBatisMapper;
+
+/**
+ * @author huangyuan
+ * @date 2020/2/17
+ * @description
+ */
+@MyBatisMapper
+public interface StatisticsCountMapper {
+    /**
+     * @param
+     * @return
+     * @description 获取急修总条数
+     * @date 2020/2/17 7:36 下午
+     */
+    long getLiftTotalCount();
+
+    /**
+     * @param
+     * @return
+     * @description 获取项目总条数
+     * @date 2020/2/17 7:37 下午
+     */
+    long getProjectTotalCount();
+
+    /**
+     * @param
+     * @return
+     * @description 获取急修记录总条数
+     * @date 2020/2/17 7:37 下午
+     */
+    long getEmergencyRecordTotalCount();
+
+    /**
+     * @param
+     * @return
+     * @description 获取维保记录总条数
+     * @date 2020/2/17 7:38 下午
+     */
+    long getMaintenanceRecordTotalCount();
+}

+ 1 - 1
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/model/LiftDataModel.java

@@ -9,7 +9,7 @@ import lombok.Data;
  * @description
  */
 @Data
-public class LiftDataModel extends LiftDataResponse {
+public class LiftMapDataModel extends LiftDataResponse {
     /**
      * 电梯急修状态
      */

+ 32 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/dao/model/LiftUnitsDataModel.java

@@ -0,0 +1,32 @@
+package cn.com.ty.lift.system.homepage.dao.model;
+
+import lombok.Data;
+
+/**
+ * @author huangyuan
+ * @date 2020/2/17
+ * @description
+ */
+@Data
+public class LiftUnitsDataModel {
+    /**
+     * 公司id
+     */
+    private Long mtCompanyId;
+
+    /**
+     * 电梯id
+     */
+    private Long liftId;
+
+    /**
+     * 电梯公司状态 1:停保(不活跃电梯)
+     *            2:正常,3:保养中 4:维修中,5:年检中,6:大修中 (其他状态为活跃电梯)
+     */
+    private String liftCompanyStatus;
+
+    /**
+     * 公司省份
+     */
+    private String provinceCode;
+}

+ 109 - 5
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/service/PlatformDataStatisticsService.java

@@ -1,10 +1,25 @@
 package cn.com.ty.lift.system.homepage.service;
 
 import cn.com.ty.lift.common.constants.ApiConstants;
+import cn.com.ty.lift.common.constants.CommonEnum;
+import cn.com.ty.lift.system.constants.CommonConstants;
+import cn.com.ty.lift.system.homepage.dao.mapper.HomeLiftDataMapper;
+import cn.com.ty.lift.system.homepage.dao.mapper.StatisticsCountMapper;
+import cn.com.ty.lift.system.homepage.dao.model.LiftUnitsDataModel;
+import cn.com.ty.lift.system.settings.dao.entity.MaintenanceCompany;
+import cn.com.ty.lift.system.settings.service.IMaintenanceCompanyService;
+import cn.com.ty.lift.system.user.service.IAreaCodeService;
 import cn.com.xwy.boot.web.dto.RestResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * @author huangyuan
  * @date 2020/2/14
@@ -13,6 +28,18 @@ import org.springframework.web.bind.annotation.RequestMapping;
 @Service
 public class PlatformDataStatisticsService {
 
+    @Resource
+    private IMaintenanceCompanyService maintenanceCompanyService;
+
+    @Resource
+    private IAreaCodeService areaCodeService;
+
+    @Resource
+    private HomeLiftDataMapper homeLiftDataMapper;
+
+    @Resource
+    private StatisticsCountMapper statisticsCountMapper;
+
     /**
      * @param
      * @return
@@ -20,7 +47,39 @@ public class PlatformDataStatisticsService {
      * @date 2020/2/14 6:52 下午
      */
     public RestResponse customerStatistics() {
-        return RestResponse.success(ApiConstants.RESULT_SUCCESS, "获取客户统计成功");
+        //省份名称 -> 公司数量(公司认证状态->公司数据)
+        Map<String, Map<Integer, Long>> provinceCodeToCompanyNum = new HashMap<>();
+        //获取省份数据
+        Map<String, String> provinceCodeToName = areaCodeService.getProvinceCodeToName();
+        //获取公司数据通过省份编码分组的数据
+        Map<String, List<MaintenanceCompany>> provinceCodeToMaintenanceCompany = maintenanceCompanyService
+                .getProvinceCodeToMaintenanceCompany();
+        //封装省份对应公司数据
+        if (provinceCodeToMaintenanceCompany.size() > 0) {
+            provinceCodeToMaintenanceCompany.forEach((provinceCode, maintenanceCompanyList) -> {
+                //获取省份名称
+                String provinceName = provinceCodeToName.get(provinceCode);
+
+                //vip标识->公司数量:初始化数据
+                Map<Integer, Long> vipFlagToCompanyNum = CommonConstants.VIP_STATUS_TO_COMPANY_NUM;
+                long allCompanyNum = maintenanceCompanyList.stream().count();
+                //设置省份下所有公司数量
+                vipFlagToCompanyNum.put(CommonConstants.PlatformDataStatisticsConstants.IS_VIP_ALL, allCompanyNum);
+                //设置省份下是vip的公司数量
+                long isNotVipCompanyNum = maintenanceCompanyList.stream()
+                        .filter(maintenanceCompany ->
+                                CommonConstants.PlatformDataStatisticsConstants.IS_VIP_YES
+                                        == maintenanceCompany.getVipFlag())
+                        .count();
+                vipFlagToCompanyNum.put(CommonConstants.PlatformDataStatisticsConstants.IS_VIP_YES, isNotVipCompanyNum);
+                //设置省份下所有不是vip公司的数量
+                vipFlagToCompanyNum.put(CommonConstants.PlatformDataStatisticsConstants.IS_VIP_NO,
+                        allCompanyNum - isNotVipCompanyNum);
+
+                provinceCodeToCompanyNum.put(provinceName, vipFlagToCompanyNum);
+            });
+        }
+        return RestResponse.success(provinceCodeToCompanyNum, ApiConstants.RESULT_SUCCESS, "获取客户统计成功");
     }
 
     /**
@@ -30,14 +89,59 @@ public class PlatformDataStatisticsService {
      * @date 2020/2/14 6:54 下午
      */
     public RestResponse unitsStatistics() {
-        return RestResponse.success(ApiConstants.RESULT_SUCCESS, "获取台量统计成功");
+        //省份名称 -> 台量(台量状态 -> 台量)
+        Map<String, Map<Integer, Long>> provinceCodeToUnits = new HashMap<>();
+        //获取省份数据
+        Map<String, String> provinceCodeToName = areaCodeService.getProvinceCodeToName();
+        //获取电梯信息
+        List<LiftUnitsDataModel> liftUnitsDataModelList = homeLiftDataMapper.getLiftUnitsData();
+        if (liftUnitsDataModelList != null && liftUnitsDataModelList.size() > 0) {
+            //公司省份编码 -> 电梯数据
+            Map<String, List<LiftUnitsDataModel>> provinceCodeToLiftUnitsDataModel = liftUnitsDataModelList.stream()
+                    .collect(Collectors.groupingBy(LiftUnitsDataModel::getProvinceCode));
+            //设置台量
+            provinceCodeToLiftUnitsDataModel.forEach((provinceCode, LiftUnitsDataModelList) -> {
+                Map<Integer, Long> unitsStatusToNum = new HashMap<>();
+                //初始化台量为0 0:总台量 1:活跃台量
+                unitsStatusToNum.put(0, 0L);
+                unitsStatusToNum.put(1, 0L);
+                String provinceName = provinceCodeToName.get(provinceCode);
+                if (LiftUnitsDataModelList != null && liftUnitsDataModelList.size() > 0) {
+                    //计算总台量
+                    unitsStatusToNum.put(0, liftUnitsDataModelList.stream().count());
+                    //计算活跃台量
+                    unitsStatusToNum.put(1, liftUnitsDataModelList.stream().filter(liftUnitsDataModel -> {
+                        if (StringUtils.isNotBlank(liftUnitsDataModel.getLiftCompanyStatus())) {
+                            //如果电梯没有停保就是活跃电梯
+                            CommonEnum.LiftStatus.STOP_INSURANCE.getCode()
+                                    .equals(liftUnitsDataModel.getLiftCompanyStatus());
+                        }
+                        return false;
+                    }).count());
+                }
+                provinceCodeToUnits.put(provinceName, unitsStatusToNum);
+            });
+        }
+        return RestResponse.success(provinceCodeToUnits, ApiConstants.RESULT_SUCCESS, "获取台量统计成功");
     }
 
-    /** 平台统计
+    /**
+     * 平台统计
+     *
      * @return
      */
     @RequestMapping("/overView")
-    public RestResponse overView(){
-        return RestResponse.success(ApiConstants.RESULT_SUCCESS, "获取平台统计成功");    }
+    public RestResponse overView() {
+        Map<Integer, Long> recordCountMap = new HashMap<>();
+        //设置认证台量
+        recordCountMap.put(0, statisticsCountMapper.getLiftTotalCount());
+        //项目总录入数量
+        recordCountMap.put(1, statisticsCountMapper.getProjectTotalCount());
+        //维保次数
+        recordCountMap.put(2, statisticsCountMapper.getMaintenanceRecordTotalCount());
+        //急修次数
+        recordCountMap.put(3, statisticsCountMapper.getEmergencyRecordTotalCount());
+        return RestResponse.success(recordCountMap, ApiConstants.RESULT_SUCCESS, "获取平台统计成功");
+    }
 
 }

+ 3 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/settings/dao/entity/MaintenanceCompany.java

@@ -201,6 +201,9 @@ public class MaintenanceCompany implements Serializable {
     @TableField("vip_flag")
     private Integer vipFlag;
 
+    /**
+     * 省份编码
+     */
     @TableField("province_code")
     private String provinceCode;
 

+ 9 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/settings/service/IMaintenanceCompanyService.java

@@ -6,6 +6,7 @@ import cn.com.xwy.boot.web.dto.RestResponse;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -64,4 +65,12 @@ public interface IMaintenanceCompanyService extends IService<MaintenanceCompany>
      * @date 2020/2/14 2:46 下午
      */
     RestResponse getConfirmCompanyList();
+
+    /**
+     * @param
+     * @return
+     * @description 获取省份编码对应的公司数据
+     * @date 2020/2/17 11:24 上午
+     */
+    Map<String, List<MaintenanceCompany>> getProvinceCodeToMaintenanceCompany();
 }

+ 19 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/settings/service/impl/MaintenanceCompanyServiceImpl.java

@@ -27,8 +27,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -148,8 +150,8 @@ public class MaintenanceCompanyServiceImpl extends ServiceImpl<MaintenanceCompan
             List<MaintenanceCompany> maintenanceCompanyList = (List<MaintenanceCompany>) this.listByIds(companyIdList);
             //设置维保公司人数
             setCompanyUserNum(maintenanceCompanyList);
-            for(MaintenanceCompany maintenanceCompany : maintenanceCompanyList) {
-                if(maintenanceCompany.getId().equals(maintenanceCompanyRequest.getCompanyId())) {
+            for (MaintenanceCompany maintenanceCompany : maintenanceCompanyList) {
+                if (maintenanceCompany.getId().equals(maintenanceCompanyRequest.getCompanyId())) {
                     maintenanceCompany.setCurrentTeamFlag(true);
                 }
             }
@@ -185,4 +187,19 @@ public class MaintenanceCompanyServiceImpl extends ServiceImpl<MaintenanceCompan
         return RestResponse.success(confirmCompanyResponseList, ApiConstants.RESULT_SUCCESS, "获取认证企业数据成功");
     }
 
+    @Override
+    public Map<String, List<MaintenanceCompany>> getProvinceCodeToMaintenanceCompany() {
+        Map<String, List<MaintenanceCompany>> provinceCodeToMaintenanceCompany = new HashMap<>();
+        //获取认证企业
+        List<MaintenanceCompany> maintenanceCompanyList = list(new QueryWrapper<MaintenanceCompany>()
+                .eq("is_certificated", ApiConstants.CompanyConstants.MAINTENANCE_PASS)
+        );
+        //将公司数据通过省份编码分组
+        if (maintenanceCompanyList != null && maintenanceCompanyList.size() > 0) {
+            provinceCodeToMaintenanceCompany = maintenanceCompanyList.stream()
+                    .collect(Collectors.groupingBy(MaintenanceCompany::getProvinceCode));
+        }
+        return provinceCodeToMaintenanceCompany;
+    }
+
 }

+ 10 - 1
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/IAreaCodeService.java

@@ -4,6 +4,7 @@ import cn.com.ty.lift.common.model.AreaCode;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author huangyuan
@@ -12,10 +13,18 @@ import java.util.List;
  */
 public interface IAreaCodeService extends IService<AreaCode> {
     /**
+     * @param
+     * @return
      * @description 获取区域树
      * @date 2019/11/27 10:03 AM
+     */
+    List<AreaCode> areaTree();
+
+    /**
      * @param
      * @return
+     * @description 获取省份编码->省份名称
+     * @date 2020/2/17 10:57 上午
      */
-    List<AreaCode> areaTree();
+    Map<String, String> getProvinceCodeToName();
 }

+ 17 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/AreaCodeService.java

@@ -5,10 +5,14 @@ import cn.com.ty.lift.common.model.AreaCode;
 import cn.com.ty.lift.system.user.dao.mapper.AreaCodeMapper;
 import cn.com.ty.lift.system.user.service.IAreaCodeService;
 import cn.com.ty.lift.common.utils.TreeUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author huangyuan
@@ -24,4 +28,17 @@ public class AreaCodeService extends ServiceImpl<AreaCodeMapper, AreaCode> imple
         List<AreaCode> allAreaCodeList = list();
         return TreeUtil.listToTree(allAreaCodeList, ApiConstants.AREA_PARENT_ATTR, ApiConstants.ROOT_AREA_PARENT_ID, "code");
     }
+
+    @Override
+    public Map<String, String> getProvinceCodeToName() {
+        Map<String, String> provinceCodeToName = new HashMap<>();
+        List<AreaCode> provinceArea = list(new QueryWrapper<AreaCode>()
+                .eq("parent", ApiConstants.ROOT_AREA_PARENT_ID)
+        );
+        if (provinceArea != null && provinceArea.size() > 0) {
+            provinceCodeToName = provinceArea.stream()
+                    .collect(Collectors.toMap(AreaCode::getCode, AreaCode::getName));
+        }
+        return provinceCodeToName;
+    }
 }

+ 20 - 0
lift-system-service/src/main/resources/mapper/HomeLiftDataMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.com.ty.lift.system.homepage.dao.mapper.HomeLiftDataMapper">
+
+    <!-- 获取平台电梯数据 - 统计电梯台量 -->
+    <select id="getLiftUnitsData" resultType="cn.com.ty.lift.system.homepage.dao.model.LiftUnitsDataModel">
+        select
+            pclr.mt_company_id as mtCompanyId,
+            pclr.lift_id as liftId,
+            pclr.lift_company_status as liftCompanyStatus,
+            mc.province_code as provinceCode
+        from
+            platform_company_lift_relevance pclr
+        left join
+            maintenance_company mc
+        on
+            pclr.mt_company_id = mc.id
+    </select>
+
+</mapper>

+ 25 - 0
lift-system-service/src/main/resources/mapper/StatisticsCountMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.com.ty.lift.system.homepage.dao.mapper.StatisticsCountMapper">
+
+    <!-- 获取电梯总台量 -->
+    <select id="getLiftTotalCount" resultType="java.lang.Long">
+        select count(1) from lift;
+    </select>
+
+    <!-- 获取录入项目总数 -->
+    <select id="getProjectTotalCount" resultType="java.lang.Long">
+        select count(1) from project;
+    </select>
+
+    <!-- 获取总维保记录数 -->
+    <select id="getEmergencyRecordTotalCount" resultType="java.lang.Long">
+        select count(1) from emergency_repair;
+    </select>
+
+    <!-- 获取维保总记录数 -->
+    <select id="getMaintenanceRecordTotalCount" resultType="java.lang.Long">
+        select count(1) from maintenance_record;
+    </select>
+
+</mapper>