Browse Source

首页统计团队数据修改

anderx 1 year ago
parent
commit
ae95bc4c23

+ 45 - 0
src/main/java/com/goafanti/admin/bo/SalesTeamBo.java

@@ -2,11 +2,56 @@ package com.goafanti.admin.bo;
 
 import com.goafanti.common.model.SalesTeam;
 
+import java.math.BigDecimal;
+
 public class SalesTeamBo extends SalesTeam {
 
     private String depName;
     private String adminName;
     private String superName;
+    private Integer teamPeopleSum;
+    private Integer teamCallSum;
+    private BigDecimal teamCallDurationSum;
+
+
+
+    public SalesTeamBo() {
+    }
+    public SalesTeamBo(SalesTeam salesTeam) {
+        this.setId(salesTeam.getId());
+        this.setDepId(salesTeam.getDepId());
+        this.setAid(salesTeam.getAid());
+        this.setSuperId(salesTeam.getSuperId());
+        this.setName(salesTeam.getName());
+        this.setLvl(salesTeam.getLvl());
+        this.setStatus(salesTeam.getStatus());
+        this.setCreateTime(salesTeam.getCreateTime());
+    }
+
+
+    public Integer getTeamPeopleSum() {
+        return teamPeopleSum;
+    }
+
+    public void setTeamPeopleSum(Integer teamPeopleSum) {
+        this.teamPeopleSum = teamPeopleSum;
+    }
+
+    public Integer getTeamCallSum() {
+        return teamCallSum;
+    }
+
+    public void setTeamCallSum(Integer teamCallSum) {
+        this.teamCallSum = teamCallSum;
+    }
+
+    public BigDecimal getTeamCallDurationSum() {
+        return teamCallDurationSum;
+    }
+
+    public void setTeamCallDurationSum(BigDecimal teamCallDurationSum) {
+        this.teamCallDurationSum = teamCallDurationSum;
+    }
 
     public String getDepName() {
         return depName;

+ 12 - 0
src/main/java/com/goafanti/admin/controller/AdminStatisticsController.java

@@ -94,4 +94,16 @@ public class AdminStatisticsController extends CertifyApiController {
         return res;
     }
 
+
+    /**
+     * 营销团队统计
+     * @return
+     */
+    @RequestMapping(value = "/salesTeam", method = RequestMethod.GET)
+    public Result salesTeam(String startTime,String endTime) {
+        Result res =new Result();
+        res.data(adminStatisticsService.salesTeam(startTime, endTime));
+        return res;
+    }
+
 }

+ 2 - 0
src/main/java/com/goafanti/admin/service/AdminStatisticsService.java

@@ -12,4 +12,6 @@ public interface AdminStatisticsService {
     Object financeInfo(String startTime, String endTime);
 
     Object financeLists(String adminId);
+
+    Object salesTeam(String startTime,String endTime);
 }

+ 55 - 4
src/main/java/com/goafanti/admin/service/impl/AdminStatisticsServiceImpl.java

@@ -1,9 +1,6 @@
 package com.goafanti.admin.service.impl;
 
-import com.goafanti.admin.bo.AdminStatisticsBo;
-import com.goafanti.admin.bo.ConsultantStatisticsBo;
-import com.goafanti.admin.bo.ConsultantUserCount;
-import com.goafanti.admin.bo.OutFinanceCount;
+import com.goafanti.admin.bo.*;
 import com.goafanti.admin.service.AdminStatisticsService;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.*;
@@ -333,6 +330,60 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
         return map;
     }
 
+    @Override
+    public Object salesTeam(String startTime, String endTime) {
+        List<SalesTeamBo> resList=new ArrayList<>();
+        List<SalesTeam> salesTeams = salesTeamMapper.queryByAid(TokenManager.getAdminId());
+        //如果不是团队负责人,所有数据都为null
+        if (!salesTeams.isEmpty()){
+            //先获取顶层再迭代获取每一层
+            for (SalesTeam e : salesTeams) {
+                SalesTeamBo salesTeamBo = new SalesTeamBo(e);
+                int teamCallSum=0;
+                BigDecimal teamCallDurationSum=BigDecimal.ZERO;
+                List<Admin> admins = adminMapper.queryByTeamId(e.getId());
+                for (Admin e2 : admins) {
+                    AdminStatisticsBo as=callLogMapper.selectAdminCallSum(e2.getId(),startTime,endTime);
+                    if (as != null) {
+                        if (as.getCallSum()!= null) teamCallSum = teamCallSum + as.getCallSum();
+                        if (as.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(as.getCallDurationSum());
+                    }
+                }
+                salesTeamBo.setTeamCallSum(teamCallSum);
+                salesTeamBo.setTeamCallDurationSum(teamCallDurationSum);
+                salesTeamBo.setTeamPeopleSum(admins.size());
+                resList.add(salesTeamBo);
+                addSonTeam(resList,salesTeamBo,startTime,endTime);
+            }
+        }
+        return resList;
+    }
+
+    private void addSonTeam(List<SalesTeamBo>list, SalesTeamBo salesTeamBo, String startTime, String endTime) {
+        List<SalesTeam> salesTeams = salesTeamMapper.queryBySuperId(salesTeamBo.getId());
+        int teamCallSum=0;
+        BigDecimal teamCallDurationSum=BigDecimal.ZERO;
+        if (!salesTeams.isEmpty()){
+            //计算所有子项数据
+            for (SalesTeam e : salesTeams) {
+                SalesTeamBo salesTeamBo2 = new SalesTeamBo(e);
+                List<Admin> admins = adminMapper.queryByTeamId(e.getId());
+                for (Admin admin : admins) {
+                    AdminStatisticsBo as=callLogMapper.selectAdminCallSum(admin.getId(),startTime,endTime);
+                }
+                salesTeamBo.setTeamCallSum(teamCallSum);
+                salesTeamBo.setTeamCallDurationSum(teamCallDurationSum);
+                salesTeamBo.setTeamPeopleSum(admins.size());
+                //迭代计算并赋值给上一层
+                addSonTeam(list,salesTeamBo2,startTime,endTime);
+                salesTeamBo.setTeamPeopleSum(salesTeamBo.getTeamPeopleSum()+salesTeamBo2.getTeamPeopleSum());
+                salesTeamBo.setTeamCallSum(salesTeamBo.getTeamCallSum()+salesTeamBo2.getTeamCallSum());
+                salesTeamBo.setTeamCallDurationSum(salesTeamBo.getTeamCallDurationSum().add(salesTeamBo2.getTeamCallDurationSum()));
+                list.add(salesTeamBo2);
+            }
+        }
+    }
+
 
     public  List<String> getThisMonth(Days days) {
         //获取三十天前的日期

+ 1 - 1
src/main/java/com/goafanti/admin/service/impl/SalesTeamServiceImpl.java

@@ -88,6 +88,6 @@ public class SalesTeamServiceImpl extends BaseMybatisDao<SalesTeamMapper> implem
 
     @Override
     public Object list(SalesTeam in) {
-        return salesTeamMapper.findSalesTeamLvlList(in);
+        return salesTeamMapper.findSalesTeamLvlList(in.getLvl());
     }
 }

+ 1 - 1
src/main/java/com/goafanti/common/dao/SalesTeamMapper.java

@@ -84,7 +84,7 @@ public interface SalesTeamMapper {
 
     SalesTeamBo queryDetailsById(Integer id);
 
-    List<SalesTeamBo> findSalesTeamLvlList(SalesTeam in);
+    List<SalesTeamBo> findSalesTeamLvlList(Integer lvl);
 
     List<SalesTeam> queryByAid(String aid);