Browse Source

公出月分工时统计开发

anderx 9 months ago
parent
commit
42ef6c2ae4

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

@@ -0,0 +1,43 @@
+package com.goafanti.admin.bo;
+
+import java.time.LocalDate;
+
+public class AdminPublicDuration {
+
+    private String id;
+    private String name;
+    private Double duration;
+    private LocalDate date;
+
+    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 Double getDuration() {
+        return duration;
+    }
+
+    public void setDuration(Double duration) {
+        this.duration = duration;
+    }
+
+    public LocalDate getDate() {
+        return date;
+    }
+
+    public void setDate(LocalDate date) {
+        this.date = date;
+    }
+}

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

@@ -119,4 +119,14 @@ public class AdminStatisticsController extends CertifyApiController {
         return res;
     }
 
+    /**
+     * 统计月份打卡数据
+     */
+    @RequestMapping(value = "/month/data", method = RequestMethod.GET)
+    public Result monthData(String date) {
+        Result res =new Result();
+        res.data(adminStatisticsService.monthData(date));
+        return res;
+    }
+
 }

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

@@ -16,4 +16,6 @@ public interface AdminStatisticsService {
     Object salesTeam(String aid,String startTime,String endTime);
 
     Object salesTeamClean();
+
+    Object monthData(String month);
 }

+ 41 - 0
src/main/java/com/goafanti/admin/service/impl/AdminStatisticsServiceImpl.java

@@ -6,6 +6,7 @@ import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.*;
 import com.goafanti.common.model.Admin;
 import com.goafanti.common.model.AdminUserCount;
+import com.goafanti.common.model.PublicRelease;
 import com.goafanti.common.model.SalesTeam;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.LoggerUtils;
@@ -16,6 +17,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @Service
@@ -428,6 +432,8 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
         return 1;
     }
 
+
+
     private void addSonTeam(List<SalesTeamBo>list, SalesTeamBo salesTeamBo, String startTime, String endTime) {
         List<SalesTeam> salesTeams = salesTeamMapper.queryBySuperId(salesTeamBo.getId());
 
@@ -522,4 +528,39 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
             this.endDay = endDay;
         }
     }
+
+
+    /**
+     *  月份数据
+     * @return
+     */
+    @Override
+    public Object monthData(String  dateStr) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDateTime localDateTime =LocalDateTime.parse(dateStr,formatter);
+        LocalDateTime newDateTime = localDateTime.plusMonths(1);
+        List<PublicRelease> publicReleases = publicReleaseMapper.selectByMonth(localDateTime, newDateTime);
+        List<AdminPublicDuration> list=new ArrayList<>();
+        for (PublicRelease e : publicReleases) {
+            long daysBetween = DateUtils.getDaysBetween(e.getReleaseStart(), e.getReleaseEnd());
+            if (daysBetween==0){
+                AdminPublicDuration a = new AdminPublicDuration();
+                a.setId(e.getAid());
+                a.setDate(e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
+                a.setDuration(e.getDuration());
+                Admin admin = adminMapper.queryById(e.getAid());
+                a.setName(admin.getName());
+                list.add(a);
+            }
+
+
+        }
+        return null;
+    }
+
+
+
+
+
+
 }

+ 3 - 0
src/main/java/com/goafanti/common/dao/PublicReleaseMapper.java

@@ -9,6 +9,7 @@ import com.goafanti.weChat.bo.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.data.domain.Pageable;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -148,5 +149,7 @@ public interface PublicReleaseMapper {
     List<PublicRelease> checkTech(@Param("aid")String aid, @Param("start") Date start, @Param("end")Date end);
 
     List<MyUserDetailsBo> selectCountByUid(String id);
+
+    List<PublicRelease> selectByMonth(LocalDateTime localDateTime, LocalDateTime newDateTime);
 }
 

+ 6 - 0
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -1230,6 +1230,12 @@
             or  (release_start &lt; #{start} and release_end &gt; #{start})
             or  (release_start &lt; #{end} and release_end &gt; #{end}))
     </select>
+    <select id="selectByMonth" resultMap="PublicReleaseMap">
+        select
+        <include refid="PublicReleaseAllSql"/>
+        from public_release where aid=#{aid} and status in (2) and clock_in=1
+        and (release_start &gt; #{start} and release_start &lt; #{end})
+    </select>
 
 
 </mapper>

+ 18 - 30
src/main/java/com/goafanti/common/utils/DateUtils.java

@@ -7,6 +7,7 @@ import org.apache.commons.lang3.time.DateFormatUtils;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
 import java.util.Calendar;
 import java.util.Date;
@@ -418,6 +419,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 		return format.format(date);
 	}
 
+	public static String formatDateYYYYMMdd(Date date, String pattern) {
+		SimpleDateFormat format = new SimpleDateFormat(parsePatterns[1]);
+		return format.format(date);
+	}
+
 	public static String formatDateYYYYMMddHHmm(Date date) {
 		SimpleDateFormat format = new SimpleDateFormat(parsePatterns[2]);
 		return format.format(date);
@@ -554,39 +560,21 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
 	}
 
+	public static long getDaysBetween(Date startDate, Date endDate) {
+		// 将Date转换为LocalDate(需指定时区)
+		LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+		LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
 
-	public static void main(String[] args) {
-		// 当前日期
-		LocalDate today = LocalDate.now();
-		System.out.println("今天: " + today);
-
-		// 明天
-		LocalDate tomorrow = today.plusDays(1);
-		System.out.println("明天: " + tomorrow);
-
-		// 本周第一天(假设周一为一周开始)
-		LocalDate firstDayOfThisWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
-		System.out.println("本周第一天: " + firstDayOfThisWeek);
-
-		// 下周第一天
-		LocalDate firstDayOfNextWeek = firstDayOfThisWeek.plusWeeks(1);
-		System.out.println("下周第一天: " + firstDayOfNextWeek);
-
-		// 本月第一天
-		LocalDate firstDayOfThisMonth = today.withDayOfMonth(1);
-		System.out.println("本月第一天: " + firstDayOfThisMonth);
-
-		// 下月第一天
-		LocalDate firstDayOfNextMonth = today.plusMonths(1).withDayOfMonth(1);
-		System.out.println("下月第一天: " + firstDayOfNextMonth);
+		// 计算天数差(end - start)
+		return ChronoUnit.DAYS.between(start, end);
+	}
 
-		// 今年第一天
-		LocalDate firstDayOfThisYear = today.withDayOfYear(1);
-		System.out.println("今年第一天: " + firstDayOfThisYear);
 
-		// 明年第一天
-		LocalDate firstDayOfNextYear = today.plusYears(1).withDayOfYear(1);
-		System.out.println("明年第一天: " + firstDayOfNextYear);
+	public static void main(String[] args) {
+		Date date = StringToDate("2023-08-08 09:00:00", AFTConstants.YYYYMMDDHHMMSS);
+		Date date1 = StringToDate("2023-08-09 06:00:00", AFTConstants.YYYYMMDDHHMMSS);
+		long daysBetween = getDaysBetween(date, date1);
+		System.out.println(daysBetween);
 	}
 
 }