Browse Source

公出月分工时统计开发

anderx 9 months ago
parent
commit
2ee5fc2c50

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

@@ -1,13 +1,15 @@
 package com.goafanti.admin.bo;
 
-import java.time.LocalDate;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
 
 public class AdminPublicDuration {
 
     private String id;
     private String name;
     private Double duration;
-    private LocalDate date;
+    private Date date;
 
     public String getId() {
         return id;
@@ -25,6 +27,15 @@ public class AdminPublicDuration {
         this.name = name;
     }
 
+    public AdminPublicDuration(String id, String name, Double duration) {
+        this.id = id;
+        this.name = name;
+        this.duration = duration;
+    }
+
+    public AdminPublicDuration() {
+    }
+
     public Double getDuration() {
         return duration;
     }
@@ -33,11 +44,22 @@ public class AdminPublicDuration {
         this.duration = duration;
     }
 
-    public LocalDate getDate() {
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    public Date getDate() {
         return date;
     }
 
-    public void setDate(LocalDate date) {
+    public void setDate(Date date) {
         this.date = date;
     }
+
+    @Override
+    public String toString() {
+        return "AdminPublicDuration{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", duration=" + duration +
+                ", date=" + date +
+                '}';
+    }
 }

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

@@ -125,7 +125,7 @@ public class AdminStatisticsController extends CertifyApiController {
     @RequestMapping(value = "/month/data", method = RequestMethod.GET)
     public Result monthData(String date) {
         Result res =new Result();
-        res.data(adminStatisticsService.monthData(date));
+        res.setData(adminStatisticsService.monthData(date));
         return res;
     }
 

+ 3 - 1
src/main/java/com/goafanti/admin/service/AdminStatisticsService.java

@@ -1,5 +1,7 @@
 package com.goafanti.admin.service;
 
+import java.util.Map;
+
 public interface AdminStatisticsService {
     Object info( String startTime,String endTime);
 
@@ -17,5 +19,5 @@ public interface AdminStatisticsService {
 
     Object salesTeamClean();
 
-    Object monthData(String month);
+    Map<String,Object> monthData(String month);
 }

+ 29 - 6
src/main/java/com/goafanti/admin/service/impl/AdminStatisticsServiceImpl.java

@@ -535,7 +535,7 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
      * @return
      */
     @Override
-    public Object monthData(String  dateStr) {
+    public Map<String,Object>  monthData(String  dateStr) {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate localDate =LocalDate.parse(dateStr,formatter);
         LocalDate newDate = localDate.plusMonths(1);
@@ -548,27 +548,50 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
             if (daysBetween==1){
                 AdminPublicDuration a = new AdminPublicDuration();
                 a.setId(e.getAid());
-                a.setDate(e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
+                a.setDate(e.getReleaseStart());
                 a.setDuration(e.getDuration());
                 Admin admin = adminMapper.queryById(e.getAid());
                 a.setName(admin.getName());
+                System.out.println(a);
                 list.add(a);
             }else if(daysBetween>0){
                 double v = e.getDuration() / daysBetween;
                 for (int i = 0; i < daysBetween; i++) {
                     AdminPublicDuration a = new AdminPublicDuration();
                     a.setId(e.getAid());
-                    a.setDate(e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(i));
+                    LocalDate localDate1 = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(i);
+                    a.setDate(Date.from(localDate1.atStartOfDay(ZoneId.systemDefault()).toInstant()));
                     a.setDuration(v);
                     Admin admin = adminMapper.queryById(e.getAid());
                     a.setName(admin.getName());
+                    System.out.println(a);
                     list.add(a);
                 }
             }
-
-
         }
-        return list;
+        //将数据统计到人
+        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 (durationMap.containsKey(id)) {
+                BigDecimal currentDuration = durationMap.get(id);
+                durationMap.put(id, currentDuration.add(duration));
+                String name = e.getName();
+                nameMap.put(id, name);
+            } else {
+                durationMap.put(id, duration);
+            }
+        }
+        List<AdminPublicDuration> list2=new ArrayList<>();
+        for (Map.Entry<String, BigDecimal> entry : durationMap.entrySet()) {
+            list2.add(new AdminPublicDuration(entry.getKey(),nameMap.get(entry.getKey()),entry.getValue().doubleValue()));
+        }
+        Map<String,Object> map=new HashMap<>();
+        map.put("date",list);
+        map.put("count",list2);
+        return map;
     }
 
 

+ 5 - 5
src/main/resources/props/config_local.properties

@@ -6,13 +6,13 @@ static.host=//static.jishutao.com/${kede.version}
 #static.host=//172.16.1.187/${kede.version}
 #avatar.host=//172.16.1.199:3000
 
-#jdbc.url=jdbc\:mysql://localhost:3306/aft20250313?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+jdbc.url=jdbc\:mysql://localhost:3306/aft20250313?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 #jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
-#jdbc.username=root
-#jdbc.password=123456
-jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 jdbc.username=root
-jdbc.password=aftdev
+jdbc.password=123456
+#jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+#jdbc.username=root
+#jdbc.password=aftdev
 jdbc.validationQuery=SELECT 'x'
 jdbc.initialSize=3
 jdbc.maxActive=20