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"; + }