Bladeren bron

增加company端新统计接口,整合之前的统计代码。新增加一个页面不需要按照时间分组统计

Guos 5 dagen geleden
bovenliggende
commit
c5e006149f

+ 17 - 1
fs-admin/src/main/java/com/fs/api/controller/StatisticManageController.java

@@ -23,13 +23,26 @@ public class StatisticManageController {
     private IStatisticManageService statisticManageService;
 
     /**
-     * 获取统计信息
+     * 日综合获取统计信息(需要按时间分组)
      * @param param
      * @return
      */
     @PostMapping("/statisticMain")
     public R statisticMain(@RequestBody ComprehensiveStatisticsParam param) {
         Assert.notNull(param.getDimension(), "请选择统计维度");
+        param.setTimeGroupFlag(true);
+        return R.ok().put("data", statisticManageService.statisticMain(param));
+    }
+
+    /**
+     * 获取综合统计信息(不需要按时间分组)
+     * @param param
+     * @return
+     */
+    @PostMapping("/statisticMainN")
+    public R statisticMainN(@RequestBody ComprehensiveStatisticsParam param) {
+        Assert.notNull(param.getDimension(), "请选择统计维度");
+        param.setTimeGroupFlag(false);
         return R.ok().put("data", statisticManageService.statisticMain(param));
     }
 
@@ -59,4 +72,7 @@ public class StatisticManageController {
     public R getSearchUserInfo(@RequestParam("id") Long id){
         return R.ok().put("data", statisticManageService.getSearchUserInfo(id));
     }
+
+
+
 }

+ 17 - 3
fs-company/src/main/java/com/fs/company/controller/crm/ComprehensiveStatisticsController.java

@@ -28,7 +28,22 @@ public class ComprehensiveStatisticsController extends BaseController {
     private ICrmStatisticManageService iCrmStatisticManageService;
 
     /**
-     * 获取统计信息
+     * 获取综合统计信息
+     * @param param
+     * @return
+     */
+    @PostMapping("/statisticMainN")
+    public R statisticMainN(@RequestBody ComprehensiveStatisticsParam param) {
+        Assert.notNull(param.getDimension(), "请选择统计维度");
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        Long companyId = loginUser.getCompany().getCompanyId();
+        param.setCompanyId(companyId);
+        param.setTimeGroupFlag(false);
+        return R.ok().put("data", iCrmStatisticManageService.statisticMain(param));
+    }
+
+    /**
+     * 日综合获取统计信息(需要按时间分组)
      * @param param
      * @return
      */
@@ -38,6 +53,7 @@ public class ComprehensiveStatisticsController extends BaseController {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         Long companyId = loginUser.getCompany().getCompanyId();
         param.setCompanyId(companyId);
+        param.setTimeGroupFlag(true);
         return R.ok().put("data", iCrmStatisticManageService.statisticMain(param));
     }
 
@@ -81,6 +97,4 @@ public class ComprehensiveStatisticsController extends BaseController {
         return util.exportExcel(data, "综合统计");
     }
 
-
-
 }

+ 0 - 1
fs-service/src/main/java/com/fs/company/service/ICrmStatisticManageService.java

@@ -24,5 +24,4 @@ public interface ICrmStatisticManageService {
     List<CompanyDeptUserInfo> getSearchDeptInfo(Long id);
 
     List<ComprehensiveStatisticsDTO> statisticMain(ComprehensiveStatisticsParam param);
-
 }

+ 30 - 19
fs-service/src/main/java/com/fs/company/service/impl/CrmStatisticManageServiceImpl.java

@@ -78,29 +78,39 @@ public class CrmStatisticManageServiceImpl implements ICrmStatisticManageService
      */
     public List<ComprehensiveStatisticsDTO> getStatisticNumByCompany(ComprehensiveStatisticsParam param) {
         List result = Lists.newArrayList();
-        List<Date> dates = MyDateUtils.generateDateList(param.getStartTime(), param.getEndTime());
-        for (Date date : dates){
-            param.setStartTime(date);
-            param.setEndTime(date);
-            ComprehensiveStatisticsDTO statisticDataByDeptId =
-                        statisticManageMapper.getStatisticDataByDeptId(param);
-                if(ObjectUtils.isEmpty(statisticDataByDeptId)){
-                    statisticDataByDeptId = new ComprehensiveStatisticsDTO();
-                    statisticDataByDeptId.setAnswerNum(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setRedPacketNum(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setSendCount(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setRedPacketAmount(BigDecimal.ZERO);
-                    statisticDataByDeptId.setCompleteNum(BigDecimal.ZERO.intValue());
-                }
-                statisticDataByDeptId.setCompanyName(param.getCompanyName());
-                statisticDataByDeptId.setCompanyId(param.getCompanyId());
-                statisticDataByDeptId.setStatisticsTime(date);
-                result.add(statisticDataByDeptId);
-
+        if(param.getTimeGroupFlag()){
+            List<Date> dates = MyDateUtils.generateDateList(param.getStartTime(), param.getEndTime());
+            for (Date date : dates){
+                param.setStartTime(date);
+                param.setEndTime(date);
+                performStatistic(param, date, result);
+            }
+        }else{
+            performStatistic(param, null, result);
         }
         return result;
     }
 
+    //计算
+    public void performStatistic(ComprehensiveStatisticsParam param, Date date, List result) {
+        ComprehensiveStatisticsDTO statisticDataByDeptId =
+                statisticManageMapper.getStatisticDataByDeptId(param);
+        if(ObjectUtils.isEmpty(statisticDataByDeptId)){
+            statisticDataByDeptId = new ComprehensiveStatisticsDTO();
+            statisticDataByDeptId.setAnswerNum(BigDecimal.ZERO.intValue());
+            statisticDataByDeptId.setRedPacketNum(BigDecimal.ZERO.intValue());
+            statisticDataByDeptId.setSendCount(BigDecimal.ZERO.intValue());
+            statisticDataByDeptId.setRedPacketAmount(BigDecimal.ZERO);
+            statisticDataByDeptId.setCompleteNum(BigDecimal.ZERO.intValue());
+        }
+        statisticDataByDeptId.setCompanyName(param.getCompanyName());
+        statisticDataByDeptId.setCompanyId(param.getCompanyId());
+        if(date == null){
+            statisticDataByDeptId.setStatisticsTime(date);
+        }
+        result.add(statisticDataByDeptId);
+    }
+
     /**
      * 根据公司获取统部门的计数据
      */
@@ -115,4 +125,5 @@ public class CrmStatisticManageServiceImpl implements ICrmStatisticManageService
         return statisticManageService.getStatisticNumByDeptId(param);
     }
 
+
 }

+ 89 - 68
fs-service/src/main/java/com/fs/company/service/impl/StatisticManageServiceImpl.java

@@ -105,46 +105,57 @@ public class StatisticManageServiceImpl implements IStatisticManageService {
         Long id = param.getId();
         List<CompanyDeptUserInfo> searchUserInfo = statisticManageMapper.getSearchUserInfo(id);
         List result = Lists.newArrayList();
-        List<Date> dates = MyDateUtils.generateDateList(param.getStartTime(), param.getEndTime());
-        for (Date date : dates) {
-            param.setStartTime(date);
-            param.setEndTime(date);
-            for (CompanyDeptUserInfo companyDeptUserInfo : searchUserInfo) {
-                Long parentId = companyDeptUserInfo.getParentId();
-                Long deptId = companyDeptUserInfo.getDeptId();
-                if (parentId != BigDecimal.ZERO.longValue()) {
-                    Optional<CompanyDeptUserInfo> first = searchUserInfo.stream().filter(dept -> dept.getDeptId().equals(parentId)).findFirst();
-                    if (first.isPresent()){
-                        CompanyDeptUserInfo findParentDept = first.get();
-                        String parentDeptName = findParentDept.getDeptName();
-                        String deptName = companyDeptUserInfo.getDeptName();
-                        companyDeptUserInfo.setDeptName(parentDeptName + "/" + deptName);
-                    }
-                }
-                String companyName = companyDeptUserInfo.getCompanyName();
-                Long companyId = companyDeptUserInfo.getCompanyId();
-                param.setUserId(companyDeptUserInfo.getUserId());
-                ComprehensiveStatisticsDTO statisticDataByDeptId =
-                        statisticManageMapper.getStatisticDataByDeptId(param);
-                if(ObjectUtils.isEmpty(statisticDataByDeptId)){
-                    statisticDataByDeptId = new ComprehensiveStatisticsDTO();
-                    statisticDataByDeptId.setAnswerNum(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setRedPacketNum(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setSendCount(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setRedPacketAmount(BigDecimal.ZERO);
-                    statisticDataByDeptId.setCompleteNum(BigDecimal.ZERO.intValue());
+
+        if(param.getTimeGroupFlag()){
+            List<Date> dates = MyDateUtils.generateDateList(param.getStartTime(), param.getEndTime());
+            for (Date date : dates) {
+                param.setStartTime(date);
+                param.setEndTime(date);
+                personalDimension(param, date, searchUserInfo, result);
+            }
+        }else{
+            personalDimension(param, null, searchUserInfo, result);
+        }
+        return result;
+    }
+
+    private void personalDimension(ComprehensiveStatisticsParam param, Date date, List<CompanyDeptUserInfo> searchUserInfo, List result) {
+        for (CompanyDeptUserInfo companyDeptUserInfo : searchUserInfo) {
+            Long parentId = companyDeptUserInfo.getParentId();
+            Long deptId = companyDeptUserInfo.getDeptId();
+            if (parentId != BigDecimal.ZERO.longValue()) {
+                Optional<CompanyDeptUserInfo> first = searchUserInfo.stream().filter(dept -> dept.getDeptId().equals(parentId)).findFirst();
+                if (first.isPresent()){
+                    CompanyDeptUserInfo findParentDept = first.get();
+                    String parentDeptName = findParentDept.getDeptName();
+                    String deptName = companyDeptUserInfo.getDeptName();
+                    companyDeptUserInfo.setDeptName(parentDeptName + "/" + deptName);
                 }
-                statisticDataByDeptId.setCompanyUserName(companyDeptUserInfo.getNickName());
-                statisticDataByDeptId.setCompanyUserId(companyDeptUserInfo.getUserId());
-                statisticDataByDeptId.setDeptName(companyDeptUserInfo.getDeptName());
-                statisticDataByDeptId.setDeptId(deptId.intValue());
-                statisticDataByDeptId.setCompanyName(companyName);
-                statisticDataByDeptId.setCompanyId(companyId);
+            }
+            String companyName = companyDeptUserInfo.getCompanyName();
+            Long companyId = companyDeptUserInfo.getCompanyId();
+            param.setUserId(companyDeptUserInfo.getUserId());
+            ComprehensiveStatisticsDTO statisticDataByDeptId =
+                    statisticManageMapper.getStatisticDataByDeptId(param);
+            if(ObjectUtils.isEmpty(statisticDataByDeptId)){
+                statisticDataByDeptId = new ComprehensiveStatisticsDTO();
+                statisticDataByDeptId.setAnswerNum(BigDecimal.ZERO.intValue());
+                statisticDataByDeptId.setRedPacketNum(BigDecimal.ZERO.intValue());
+                statisticDataByDeptId.setSendCount(BigDecimal.ZERO.intValue());
+                statisticDataByDeptId.setRedPacketAmount(BigDecimal.ZERO);
+                statisticDataByDeptId.setCompleteNum(BigDecimal.ZERO.intValue());
+            }
+            statisticDataByDeptId.setCompanyUserName(companyDeptUserInfo.getNickName());
+            statisticDataByDeptId.setCompanyUserId(companyDeptUserInfo.getUserId());
+            statisticDataByDeptId.setDeptName(companyDeptUserInfo.getDeptName());
+            statisticDataByDeptId.setDeptId(deptId.intValue());
+            statisticDataByDeptId.setCompanyName(companyName);
+            statisticDataByDeptId.setCompanyId(companyId);
+            if(date != null){
                 statisticDataByDeptId.setStatisticsTime(date);
-                result.add(statisticDataByDeptId);
             }
+            result.add(statisticDataByDeptId);
         }
-        return result;
     }
 
     /**
@@ -154,43 +165,53 @@ public class StatisticManageServiceImpl implements IStatisticManageService {
         //先从公司拿到公司和部门的信息
         List<CompanyDeptUserInfo> searchDeptInfo = statisticManageMapper.getSearchDeptInfo(param.getId());;
         List result = Lists.newArrayList();
-        List<Date> dates = MyDateUtils.generateDateList(param.getStartTime(), param.getEndTime());
-        for (Date date : dates){
-            param.setStartTime(date);
-            param.setEndTime(date);
-            for (CompanyDeptUserInfo companyDeptUserInfo : searchDeptInfo) {
-                //判断当前部门的父级id不是0就组装名称
-                Long parentId = companyDeptUserInfo.getParentId();
-                if(parentId != BigDecimal.ZERO.longValue()){
-                    String parentDeptName = searchDeptInfo.stream().filter(dept -> dept.getDeptId().equals(parentId)).findFirst().get().getDeptName();
-                    String deptName = companyDeptUserInfo.getDeptName();
-                    companyDeptUserInfo.setDeptName(parentDeptName + "/" + deptName);
-                }
-                String companyName = companyDeptUserInfo.getCompanyName();
-                Long deptId = companyDeptUserInfo.getDeptId();
-                Long companyId = companyDeptUserInfo.getCompanyId();
-                param.setDeptId(deptId);
-                ComprehensiveStatisticsDTO statisticDataByDeptId =
-                        statisticManageMapper.getStatisticDataByDeptId(param);
-                if(ObjectUtils.isEmpty(statisticDataByDeptId)){
-                    statisticDataByDeptId = new ComprehensiveStatisticsDTO();
-                    statisticDataByDeptId.setAnswerNum(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setRedPacketNum(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setSendCount(BigDecimal.ZERO.intValue());
-                    statisticDataByDeptId.setRedPacketAmount(BigDecimal.ZERO);
-                    statisticDataByDeptId.setCompleteNum(BigDecimal.ZERO.intValue());
-                }
-                statisticDataByDeptId.setDeptName(companyDeptUserInfo.getDeptName());
-                statisticDataByDeptId.setDeptId(deptId.intValue());
-                statisticDataByDeptId.setCompanyName(companyName);
-                statisticDataByDeptId.setCompanyId(companyId);
-                statisticDataByDeptId.setStatisticsTime(date);
-                result.add(statisticDataByDeptId);
+        if(param.getTimeGroupFlag()){
+            List<Date> dates = MyDateUtils.generateDateList(param.getStartTime(), param.getEndTime());
+            for (Date date : dates){
+                param.setStartTime(date);
+                param.setEndTime(date);
+                deptDimension(param, date, searchDeptInfo, result);
             }
+        }else{
+            deptDimension(param, null, searchDeptInfo, result);
         }
         return result;
     }
 
+    private void deptDimension(ComprehensiveStatisticsParam param, Date date, List<CompanyDeptUserInfo> searchDeptInfo, List result) {
+        for (CompanyDeptUserInfo companyDeptUserInfo : searchDeptInfo) {
+            //判断当前部门的父级id不是0就组装名称
+            Long parentId = companyDeptUserInfo.getParentId();
+            if(parentId != BigDecimal.ZERO.longValue()){
+                String parentDeptName = searchDeptInfo.stream().filter(dept -> dept.getDeptId().equals(parentId)).findFirst().get().getDeptName();
+                String deptName = companyDeptUserInfo.getDeptName();
+                companyDeptUserInfo.setDeptName(parentDeptName + "/" + deptName);
+            }
+            String companyName = companyDeptUserInfo.getCompanyName();
+            Long deptId = companyDeptUserInfo.getDeptId();
+            Long companyId = companyDeptUserInfo.getCompanyId();
+            param.setDeptId(deptId);
+            ComprehensiveStatisticsDTO statisticDataByDeptId =
+                    statisticManageMapper.getStatisticDataByDeptId(param);
+            if(ObjectUtils.isEmpty(statisticDataByDeptId)){
+                statisticDataByDeptId = new ComprehensiveStatisticsDTO();
+                statisticDataByDeptId.setAnswerNum(BigDecimal.ZERO.intValue());
+                statisticDataByDeptId.setRedPacketNum(BigDecimal.ZERO.intValue());
+                statisticDataByDeptId.setSendCount(BigDecimal.ZERO.intValue());
+                statisticDataByDeptId.setRedPacketAmount(BigDecimal.ZERO);
+                statisticDataByDeptId.setCompleteNum(BigDecimal.ZERO.intValue());
+            }
+            statisticDataByDeptId.setDeptName(companyDeptUserInfo.getDeptName());
+            statisticDataByDeptId.setDeptId(deptId.intValue());
+            statisticDataByDeptId.setCompanyName(companyName);
+            statisticDataByDeptId.setCompanyId(companyId);
+            if(date != null){
+                statisticDataByDeptId.setStatisticsTime(date);
+            }
+            result.add(statisticDataByDeptId);
+        }
+    }
+
     /**
      * 获取搜索公司信息
      */

+ 2 - 0
fs-service/src/main/java/com/fs/statis/param/ComprehensiveStatisticsParam.java

@@ -55,5 +55,7 @@ public class ComprehensiveStatisticsParam {
 
     private Long logType;
 
+    private Boolean timeGroupFlag; //时间分组条件是否生效
+
 }
 

+ 4 - 2
fs-service/src/main/resources/mapper/company/StatisticManageMapper.xml

@@ -340,8 +340,10 @@
         <if test="courseId != null">
             and fs.course_id = #{courseId}
         </if>
-        GROUP BY fs.statistics_time
-        order by fs.statistics_time
+        <if test="timeGroupFlag">
+            GROUP BY fs.statistics_time
+        </if>
+            order by fs.statistics_time
         <if test="dimension != null">
             <if test="dimension == 2">
                 , fs.company_id