Browse Source

公出月份统计

anderx 9 months ago
parent
commit
0ea0230e46

+ 5 - 5
src/main/java/com/goafanti/admin/bo/AdminPublicDuration.java

@@ -16,7 +16,7 @@ public class AdminPublicDuration {
     @Excel(name = "日期", dateFormat = AFTConstants.YYYYMMDD)
     private Date date;
 
-    private Integer province;
+    private Integer workingHours;
 
     private Double conversion;
     private Integer countNumber;
@@ -31,12 +31,12 @@ public class AdminPublicDuration {
         this.conversion = conversion;
     }
 
-    public Integer getProvince() {
-        return province;
+    public Integer getWorkingHours() {
+        return workingHours;
     }
 
-    public void setProvince(Integer province) {
-        this.province = province;
+    public void setWorkingHours(Integer workingHours) {
+        this.workingHours = workingHours;
     }
 
     public Integer getCountNumber() {

+ 26 - 17
src/main/java/com/goafanti/admin/service/impl/AdminStatisticsServiceImpl.java

@@ -4,6 +4,7 @@ import com.goafanti.admin.bo.*;
 import com.goafanti.admin.service.AdminStatisticsService;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.*;
+import com.goafanti.common.error.BusinessException;
 import com.goafanti.common.model.*;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.LoggerUtils;
@@ -544,7 +545,6 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
         for (PublicRelease e : publicReleases) {
             AdminPublicDuration a = new AdminPublicDuration();
             pushAdminNameAndProvince(e.getAid(),a);
-
             //计算时间差,再加一天就是一共多少天
             long daysBetween = DateUtils.getDaysBetween(e.getReleaseStart(), e.getReleaseEnd());
             daysBetween+=1;
@@ -592,15 +592,9 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
         }
         //将数据统计到人
         Map<String, BigDecimal> durationMap = new HashMap<>();
-        Map<String, String> nameMap = new HashMap<>();
         for (AdminPublicDuration e : list) {
             String id = e.getId(); // 假设 AdminStatisticsBo 有一个 getId() 方法
             BigDecimal duration = BigDecimal.valueOf(e.getDuration()); // 假设 AdminStatisticsBo 有一个 getCallDurationSum() 方法
-            if(!nameMap.containsKey(id)){
-                String name = e.getName();
-
-                nameMap.put(id, name);
-            }
             if (durationMap.containsKey(id)) {
                 BigDecimal currentDuration = durationMap.get(id);
                 durationMap.put(id, currentDuration.add(duration));
@@ -609,7 +603,6 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
             }
         }
         List<AdminPublicDuration> list2=sumDurationsById(list);
-
         Map<String,Object> map=new HashMap<>();
         map.put("date",list);
         map.put("count",list2);
@@ -632,37 +625,53 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
             name = name.substring(0, index);
         }
         a.setName(name);
-        a.setProvince(department.getProvince());
+        a.setWorkingHours(department.getWorkingHoursType());
     }
 
 
     public List<AdminPublicDuration>  sumDurationsById(List<AdminPublicDuration> adminPublicDurations) {
         Map<String, AdminPublicDuration> durationMap = new HashMap<>();
-
         for (AdminPublicDuration adminPublicDuration : adminPublicDurations) {
             String id = adminPublicDuration.getId();
             String name = adminPublicDuration.getName();
             double duration = adminPublicDuration.getDuration();
             if (durationMap.containsKey(id)) {
                 AdminPublicDuration summary = durationMap.get(id);
+                summary.setWorkingHours(adminPublicDuration.getWorkingHours());
                 BigDecimal countDuration = BigDecimal.valueOf(summary.getDuration()).add(BigDecimal.valueOf(duration));
                 summary.setDuration(countDuration.doubleValue());
                 summary.setName(name);
                 summary.setCountNumber(summary.getCountNumber()+1);
-                if (summary.getProvince()==11){
-                    summary.setConversion(7.5);
-                } else if (summary.getProvince()==21){
+                if (summary.getWorkingHours()==null){
+                    throw new BusinessException(String.format("用户[%s]未设置工作类型",name));
+                }
+               if (summary.getWorkingHours()==2){
                     summary.setConversion(7.0);
+                } else{
+                    summary.setConversion(7.5);
                 }
                 if (summary.getConversion()!=null){
-                    BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(7.5), 2, RoundingMode.HALF_UP);
+                    BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(summary.getConversion()), 2, RoundingMode.HALF_UP);
                     summary.setDays(divide.doubleValue());
-                    System.out.println(name+":"+summary.getDuration()+"/"+summary.getCountNumber()+"="+divide);
+                    System.out.println(name+":"+summary.getDuration()+"/"+summary.getConversion()+"="+divide);
                 }
+
             } else {
                 AdminPublicDuration e = new AdminPublicDuration(id, name, duration);
-                BigDecimal divide = BigDecimal.valueOf(duration).divide(BigDecimal.valueOf(7.5), 2, RoundingMode.HALF_UP);
-                e.setDays(divide.doubleValue());
+                e.setWorkingHours(adminPublicDuration.getWorkingHours());
+                if (e.getWorkingHours()==null){
+                    throw new BusinessException(String.format("用户[%s]未设置工作类型",name));
+                }
+                if (e.getWorkingHours()==2){
+                    e.setConversion(7.0);
+                } else{
+                    e.setConversion(7.5);
+                }
+                if (e.getConversion()!=null){
+                    BigDecimal divide = BigDecimal.valueOf(e.getDuration()).divide(BigDecimal.valueOf(e.getConversion()), 2, RoundingMode.HALF_UP);
+                    e.setDays(divide.doubleValue());
+                    System.out.println(name+":"+e.getDuration()+"/"+e.getConversion()+"="+divide);
+                }
                 durationMap.put(id, e);
             }
         }