Browse Source

公出月份统计

anderx 9 months ago
parent
commit
14f3f24a4d

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

@@ -15,9 +15,9 @@ public class AdminPublicDuration {
     private Double duration;
     @Excel(name = "日期", dateFormat = AFTConstants.YYYYMMDD)
     private Date date;
-    @Excel(name = "天数")
+
     private Integer countNumber;
-    @Excel(name = "平均天数")
+
     private double days;
 
     public Integer getCountNumber() {

+ 89 - 0
src/main/java/com/goafanti/admin/bo/AdminPublicDurationCount.java

@@ -0,0 +1,89 @@
+package com.goafanti.admin.bo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.goafanti.common.utils.excel.Excel;
+
+import java.util.Date;
+
+public class AdminPublicDurationCount {
+
+    private String id;
+    @Excel(name = "姓名")
+    private String name;
+    @Excel(name = "时长")
+    private Double duration;
+    private Date date;
+    @Excel(name = "天数")
+    private Integer countNumber;
+    @Excel(name = "平均天数")
+    private double days;
+
+    public Integer getCountNumber() {
+        return countNumber;
+    }
+
+    public void setCountNumber(Integer countNumber) {
+        this.countNumber = countNumber;
+    }
+
+    public double getDays() {
+        return days;
+    }
+
+    public void setDays(double days) {
+        this.days = days;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public AdminPublicDurationCount(String id, String name, Double duration) {
+        this.id = id;
+        this.name = name;
+        this.duration = duration;
+        this.countNumber = 1;
+    }
+
+    public AdminPublicDurationCount() {
+    }
+
+    public Double getDuration() {
+        return duration;
+    }
+
+    public void setDuration(Double duration) {
+        this.duration = duration;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    @Override
+    public String toString() {
+        return "AdminPublicDuration{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", duration=" + duration +
+                ", date=" + date +
+                '}';
+    }
+}

+ 19 - 7
src/main/java/com/goafanti/admin/controller/AdminStatisticsController.java

@@ -1,6 +1,7 @@
 package com.goafanti.admin.controller;
 
 import com.goafanti.admin.bo.AdminPublicDuration;
+import com.goafanti.admin.bo.AdminPublicDurationCount;
 import com.goafanti.admin.service.AdminStatisticsService;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.controller.CertifyApiController;
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -145,20 +147,30 @@ public class AdminStatisticsController extends CertifyApiController {
      */
     @RequestMapping(value = "/month/data/export", method = RequestMethod.GET)
     public Result monthDataExport(String date,Integer type) {
-        Result res =new Result();
-        NewExcelUtil<AdminPublicDuration> newExcelUtil=new NewExcelUtil<>(AdminPublicDuration.class);
+
         Map<String, Object> map = adminStatisticsService.monthData(date);
-        List<AdminPublicDuration> o;
         String sheetName;
         if (type==null||type==1){
+            NewExcelUtil<AdminPublicDuration> newExcelUtil=new NewExcelUtil<>(AdminPublicDuration.class);
             sheetName="统计月份打卡数据(详情)";
-            o = (List<AdminPublicDuration>) map.get("date");
+            List<AdminPublicDuration> o = (List<AdminPublicDuration>) map.get("date");
+            return newExcelUtil.exportExcel(o,sheetName,uploadPath);
         }else {
             sheetName="统计月份打卡数据(总计)";
-            o = (List<AdminPublicDuration>) map.get("count");
+            List<AdminPublicDuration>  o = (List<AdminPublicDuration>) map.get("count");
+            List<AdminPublicDurationCount>  list = new ArrayList<>();
+            o.forEach(e->{
+                AdminPublicDurationCount adminPublicDurationCount = new AdminPublicDurationCount();
+                adminPublicDurationCount.setId(e.getId());
+                adminPublicDurationCount.setName(e.getName());
+                adminPublicDurationCount.setDuration(e.getDuration());
+                adminPublicDurationCount.setCountNumber(e.getCountNumber());
+                adminPublicDurationCount.setDays(e.getDays());
+                list.add(adminPublicDurationCount);
+            });
+            NewExcelUtil<AdminPublicDurationCount> newExcelUtil=new NewExcelUtil<>(AdminPublicDurationCount.class);
+            return newExcelUtil.exportExcel(list, sheetName, uploadPath);
         }
-        newExcelUtil.exportExcel(o,sheetName,uploadPath);
-        return res;
     }
 
 }

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

@@ -644,9 +644,6 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
         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);
@@ -656,8 +653,12 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
                 summary.setCountNumber(summary.getCountNumber()+1);
                 BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(7.5), 2, RoundingMode.HALF_UP);
                 summary.setDays(divide.doubleValue());
+                System.out.println(name+":"+summary.getDuration()+"/"+summary.getCountNumber()+"="+divide);
             } else {
-                durationMap.put(id, new AdminPublicDuration(id, name, duration));
+                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());
+                durationMap.put(id, e);
             }
         }