Pārlūkot izejas kodu

更新年办理数量

zhao 3 mēneši atpakaļ
vecāks
revīzija
2ebe702dbc

+ 2 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/dao/SolveAffairsDao.java

@@ -24,6 +24,8 @@ public interface SolveAffairsDao {
 
 
     SolveAffairs findByMonthAndType(int month, Integer handleType);
+
+    SolveAffairs findByYearAndType(int year, Integer handleType);
 }
 
 

+ 58 - 15
nngkxxdp/src/main/java/com/example/nngkxxdp/task/HandleTask.java

@@ -24,6 +24,8 @@ public class HandleTask {
     private AtomicInteger dailyCount = new AtomicInteger(0);
     private AtomicInteger weeklyCount = new AtomicInteger(0);
     private AtomicInteger monthlyCount = new AtomicInteger(0);
+    //年办理事件数量
+    private AtomicInteger yearlyCount = new AtomicInteger(0);
 
     // 应用启动时加载今日的办件量
     public void loadDailyCount() {
@@ -45,9 +47,26 @@ public class HandleTask {
         // 加载本周和本月的办件量
         loadWeeklyCount();
         loadMonthlyCount();
+        loadYearlyCount();
     }
 
 
+    //在每年元旦重置年办理数量
+    @Scheduled(cron = "0 0 0 1 1 ?") // 每年1月1日零点执行
+    public void resetYearlyCount() {
+        // 保存上年的yearlyCount
+        int previousYearlyCount = yearlyCount.get();
+        saveYearlyCount(previousYearlyCount);
+
+        // 重置yearlyCount
+        yearlyCount.set(0);
+
+        // 插入当前年的记录,初始值为0
+        saveYearlyCount(0);
+
+        System.out.println("Yearly count has been reset to 0.");
+    }
+
     // 在每月初重置月办理数量
     @Scheduled(cron = "0 0 0 1 * ?") // 每月1日凌晨0点执行
     public void resetMonthlyCount() {
@@ -67,14 +86,20 @@ public class HandleTask {
 
     @Scheduled(cron = "0 0 0 * * ?") // 每天凌晨0点执行
     public void resetDailyCount() {
+        // 累加dailyCount到yearlyCount
+        yearlyCount.addAndGet(dailyCount.get());
+
         // 更新本周和本月的办件量
         updateWeeklyCount(dailyCount.get());
-        updateMonthlyCount(weeklyCount.get());
+        updateMonthlyCount(dailyCount.get());
 
         dailyCount.set(0);
         LocalDate today = LocalDate.now();
         saveDailyCount(today, 0);
         System.out.println("Daily count has been reset to 0.");
+
+        // 更新数据库中的yearlyCount
+        saveYearlyCount(yearlyCount.get());
     }
 
     @Scheduled(cron = "0 0/10 * * * ?") // 每10分钟执行
@@ -226,13 +251,6 @@ public class HandleTask {
         updateMonthlyCount(dailyCount);
     }
 
-//    private void SaveWeeklyCountIfEndOfWeek() {
-//        LocalDate today = LocalDate.now();
-//        if (today.getDayOfWeek().getValue() == 7) { // 周日
-//            saveWeeklyCount(today, weeklyCount.get());
-//            weeklyCount.set(0); // 重置周计数
-//        }
-//    }
 
     private void saveWeeklyCount(LocalDate date, int count) {
         SolveAffairs solveAffairs = new SolveAffairs();
@@ -263,13 +281,6 @@ public class HandleTask {
         saveMonthlyCount(LocalDate.now(), monthlyCount.get()); // 每次更新都保存到数据库
     }
 
-//    private void SaveMonthlyCountIfEndOfMonth() {
-//        LocalDate today = LocalDate.now();
-//        if (today.plusDays(1).getMonthValue() != today.getMonthValue()) { // 下一天是下个月
-//            saveMonthlyCount(today, monthlyCount.get());
-//            monthlyCount.set(0); // 重置月计数
-//        }
-//    }
 
     private void saveMonthlyCount(LocalDate date, int count) {
         SolveAffairs solveAffairs = new SolveAffairs();
@@ -291,4 +302,36 @@ public class HandleTask {
             solveAffairsDao.insert(solveAffairs);
         }
     }
+
+    private void saveYearlyCount(int count) {
+        SolveAffairs solveAffairs = new SolveAffairs();
+        solveAffairs.setHandleNum(count);
+        solveAffairs.setHandleType(4); // 年办理数量
+        solveAffairs.setCreateTime(new Date());
+        updateOrCreateYearly(solveAffairs);
+    }
+
+    private void updateOrCreateYearly(SolveAffairs solveAffairs) {
+        int year = LocalDate.now().getYear();
+        SolveAffairs existing = solveAffairsDao.findByYearAndType(year, 4);
+        if (existing != null) {
+            existing.setHandleNum(solveAffairs.getHandleNum());
+            existing.setUpdateTime(new Date());
+            solveAffairsDao.update(existing);
+        } else {
+            solveAffairs.setCreateTime(Date.from(LocalDate.ofYearDay(year, 1).atStartOfDay(ZoneId.systemDefault()).toInstant()));
+            solveAffairsDao.insert(solveAffairs);
+        }
+    }
+
+    private void loadYearlyCount() {
+        int year = LocalDate.now().getYear();
+        SolveAffairs existing = solveAffairsDao.findByYearAndType(year, 4);
+        if (existing != null) {
+            yearlyCount.set(existing.getHandleNum());
+        } else {
+            yearlyCount.set(0);
+        }
+        System.out.println("Loaded yearly count: " + yearlyCount.get());
+    }
 }

+ 3 - 0
nngkxxdp/src/main/resources/mapper/SolveAffairsDao.xml

@@ -51,5 +51,8 @@
     <select id="findByMonthAndType" resultType="com.example.nngkxxdp.entity.SolveAffairs">
         SELECT * FROM t_solve_affairs WHERE MONTH(create_time) = #{month} AND handle_type = #{handleType}
     </select>
+    <select id="findByYearAndType" resultType="com.example.nngkxxdp.entity.SolveAffairs">
+        SELECT * FROM t_solve_affairs WHERE YEAR(create_time) = #{year} AND handle_type = #{handleType}
+    </select>
 
 </mapper>