Browse Source

公出月分工时统计开发

anderx 9 months ago
parent
commit
bfc393b8a9

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

@@ -17,7 +17,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
+import java.time.LocalDate;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -537,13 +537,15 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
     @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);
+        LocalDate localDate =LocalDate.parse(dateStr,formatter);
+        LocalDate newDate = localDate.plusMonths(1);
+        List<PublicRelease> publicReleases = publicReleaseMapper.selectByMonth(localDate, newDate);
         List<AdminPublicDuration> list=new ArrayList<>();
         for (PublicRelease e : publicReleases) {
+            //计算时间差,再加一天就是一共多少天
             long daysBetween = DateUtils.getDaysBetween(e.getReleaseStart(), e.getReleaseEnd());
-            if (daysBetween==0){
+            daysBetween+=1;
+            if (daysBetween==1){
                 AdminPublicDuration a = new AdminPublicDuration();
                 a.setId(e.getAid());
                 a.setDate(e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
@@ -551,11 +553,22 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
                 Admin admin = adminMapper.queryById(e.getAid());
                 a.setName(admin.getName());
                 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));
+                    a.setDuration(v);
+                    Admin admin = adminMapper.queryById(e.getAid());
+                    a.setName(admin.getName());
+                    list.add(a);
+                }
             }
 
 
         }
-        return null;
+        return list;
     }
 
 

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

@@ -9,7 +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.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 
@@ -150,6 +150,6 @@ public interface PublicReleaseMapper {
 
     List<MyUserDetailsBo> selectCountByUid(String id);
 
-    List<PublicRelease> selectByMonth(LocalDateTime localDateTime, LocalDateTime newDateTime);
+    List<PublicRelease> selectByMonth(@Param("start") LocalDate start, @Param("end") LocalDate end);
 }
 

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

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

+ 8 - 1
src/main/java/com/goafanti/common/utils/DateUtils.java

@@ -572,9 +572,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 
 	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);
+		Date date1 = StringToDate("2023-08-12 06:00:00", AFTConstants.YYYYMMDDHHMMSS);
 		long daysBetween = getDaysBetween(date, date1);
+		daysBetween+=1;
 		System.out.println(daysBetween);
+		for (int i = 0; i <daysBetween; i++) {
+			LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+			LocalDate localDate1 = localDate.plusDays(i);
+			System.out.println(localDate1);
+		}
+
 	}
 
 }