Просмотр исходного кода

首页统计团队数据修改

anderx 1 год назад
Родитель
Сommit
05af2e498d

+ 31 - 11
src/main/java/com/goafanti/admin/service/impl/AdminStatisticsServiceImpl.java

@@ -333,14 +333,23 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
     @Override
     public Object salesTeam(String startTime, String endTime) {
         List<SalesTeamBo> resList=new ArrayList<>();
-        List<SalesTeam> salesTeams = salesTeamMapper.queryByAid(TokenManager.getAdminId());
+        String aid = TokenManager.getAdminId();
+
+        List<SalesTeam> salesTeams = salesTeamMapper.queryByAid(aid);
         //如果不是团队负责人,所有数据都为null
+        int teamCallSum=0;
+        BigDecimal teamCallDurationSum=BigDecimal.ZERO;
+        //先计算负责人
+        AdminStatisticsBo ab=callLogMapper.selectAdminCallSum(aid,startTime,endTime);
+        if (ab!= null) {
+            if (ab.getCallSum()!= null) teamCallSum = teamCallSum + ab.getCallSum();
+            if (ab.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(ab.getCallDurationSum());
+        }
         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);
@@ -361,24 +370,35 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
 
     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);
+                int teamCallSum=0;
+                BigDecimal teamCallDurationSum=BigDecimal.ZERO;
+                //先计算负责人
+                AdminStatisticsBo ab=callLogMapper.selectAdminCallSum(s,startTime,endTime);
+                if (ab!= null) {
+                    if (ab.getCallSum()!= null) teamCallSum = teamCallSum + ab.getCallSum();
+                    if (ab.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(ab.getCallDurationSum());
+                }
                 List<Admin> admins = adminMapper.queryByTeamId(e.getId());
                 for (Admin admin : admins) {
                     AdminStatisticsBo as=callLogMapper.selectAdminCallSum(admin.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());
+                salesTeamBo2.setTeamCallSum(teamCallSum);
+                salesTeamBo2.setTeamCallDurationSum(teamCallDurationSum);
+                salesTeamBo2.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()));
+                if (salesTeamBo2.getTeamPeopleSum()!=null)salesTeamBo.setTeamPeopleSum(salesTeamBo.getTeamPeopleSum() + salesTeamBo2.getTeamPeopleSum());
+                if (salesTeamBo2.getTeamCallSum()!=null)salesTeamBo.setTeamCallSum(salesTeamBo.getTeamCallSum()+salesTeamBo2.getTeamCallSum());
+                if (salesTeamBo2.getTeamCallDurationSum()!=null)salesTeamBo.setTeamCallDurationSum(salesTeamBo.getTeamCallDurationSum().add(salesTeamBo2.getTeamCallDurationSum()));
                 list.add(salesTeamBo2);
             }
         }