diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
index 6287b8069714babc8d3b67f445f3b4dc1e664c64..5faa1611d9e476060096d9ab3b5145c12b7040b1 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
@@ -209,15 +209,20 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
         attendanceRecordQuery.setAttendanceDateStart(DateUtil.beginOfMonth(new Date()).toDateStr());
         attendanceRecordQuery.setAttendanceDateEnd(DateUtil.today());
         List<AttendanceRecordEntity> attendanceRecordEntities = recordService.find(attendanceRecordQuery);
-        //鎬绘墦鍗′汉娆�
-        long total = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
-        //long total = attendanceRecordEntities.parallelStream().map(item -> item.getStaffId()).distinct().count();
+
+
+        //鑾峰彇褰撴湀鎵撳崱浜烘暟锛屽鏋滃瓨鍦�
+        Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), Long.class);
+        if (ObjectUtils.isEmpty(totalCache)) {
+            totalCache = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
+            cacheService.hset(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), totalCache);
+        }
 
         //杩熷埌娆℃暟
         long beLate = attendanceRecordEntities.parallelStream()
                 .flatMap(item -> item.getAttendanceRecordDetailList().stream())
                 .filter(f -> GoWorkResultEnum.杩熷埌.getValue() == f.getGoWorkResult() || OffWorkResultEnum.杩熷埌.getValue() == f.getOffWorkResult())
-                .map(i->i.getStaffId())
+                .map(i -> i.getStaffId())
                 .distinct()
                 .count();
 
@@ -225,7 +230,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
         long leaveEarly = attendanceRecordEntities.parallelStream()
                 .flatMap(item -> item.getAttendanceRecordDetailList().stream())
                 .filter(f -> GoWorkResultEnum.鏃╅€€.getValue() == f.getGoWorkResult() || OffWorkResultEnum.鏃╅€€.getValue() == f.getOffWorkResult())
-                .map(i->i.getStaffId())
+                .map(i -> i.getStaffId())
                 .distinct()
                 .count();
 
@@ -233,7 +238,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
         long lackOfCards = attendanceRecordEntities.parallelStream()
                 .flatMap(item -> item.getAttendanceRecordDetailList().stream())
                 .filter(f -> GoWorkResultEnum.缂哄崱.getValue() == f.getGoWorkResult() || OffWorkResultEnum.缂哄崱.getValue() == f.getOffWorkResult())
-                .map(i->i.getStaffId())
+                .map(i -> i.getStaffId())
                 .distinct()
                 .count();
 
@@ -259,12 +264,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
                 .count();
         //寮傚父鑰冨嫟璁板綍
         //鏈€冨嫟
-       // long noAtt=lackOfCards;
-        long att = totalAttend - lackOfCardsAttend-levealPersonNum;
-        if (att!=0L){
-            BigDecimal bigDecimal = new BigDecimal(att).divide(new BigDecimal(totalAttend),4,BigDecimal.ROUND_CEILING).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_CEILING);
-            homeStatInfo.setAttendRadio(bigDecimal.toString()+"%");
-        }else{
+        // long noAtt=lackOfCards;
+        long att = totalAttend - lackOfCardsAttend - levealPersonNum;
+        if (att != 0L) {
+            BigDecimal bigDecimal = new BigDecimal(att).divide(new BigDecimal(totalAttend), 4, BigDecimal.ROUND_CEILING).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_CEILING);
+            homeStatInfo.setAttendRadio(bigDecimal.toString() + "%");
+        } else {
             homeStatInfo.setAttendRadio("0%");
         }
 
@@ -272,7 +277,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
         homeStatInfo.setLatePersonNum(beLate);
         homeStatInfo.setLeftEarlyPersonNum(leaveEarly);
         homeStatInfo.setMissCardPersonNum(lackOfCards);
-        homeStatInfo.setAttendPersonNum(total);
+        homeStatInfo.setAttendPersonNum(totalCache);
 
         data.put("homeStat", homeStatInfo);
         data.put("token", token);
@@ -289,7 +294,6 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
     }
 
 
-
     @RequestMapping("validcode")
     public String validCode(HttpServletRequest request, HttpServletResponse response, LoginForm loginForm) {
         JSONObject ret = new JSONObject();
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
index f60144020a7c2e9ff1bcb4f95cdbd67e848fa119..d2d9f65ed8d79f3a101e61b677e3e070f3223616 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
@@ -16,4 +16,9 @@ public class RedisKey {
      */
     public static final String KEY_DINGTALK_ACCESSTOKEN_CACHE = "dingtalk:token:";
 
+    /**
+     * 姣忔湀鎵撳崱浜烘暟
+     */
+    public static final String KEY_ATTENC_TOTOAL_CACHE = "attend:total";
+
 }