diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java index 524e6e9..cb10d16 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java @@ -91,6 +91,10 @@ public class SysUser extends BaseEntity { */ private List orgList; + /** + * 角色组 + */ + private List roleList; /** * 角色组 */ diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/enums/AttStatus.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/enums/AttStatus.java index ba5dedc..c8d9e3a 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/enums/AttStatus.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/enums/AttStatus.java @@ -11,7 +11,7 @@ public enum AttStatus { 临时外出("7"), 出入异常("8"), 打卡地异常("9"), - 出差("10"), + 出差报备("10"), 法("11"), 年("12"), 探("13"), @@ -19,7 +19,8 @@ public enum AttStatus { 病("15"), 产("16"), 婚("17"), - 丧("18"); + 丧("18"), + 育("19"); private String code; @@ -43,7 +44,7 @@ public enum AttStatus { return "√"; }else if (this == AttStatus.未){ return "旷"; - }else if (this == AttStatus.出差){ + }else if (this == AttStatus.出差报备){ return "△"; } return this.name(); diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java index a8966b7..7e54d76 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java @@ -108,8 +108,10 @@ public class AESCBCUtil { public static void main(String[] args) throws Exception { - String jmData= AESCBCUtil.encrypt("Bonus@admin123"); + String jmData= AESCBCUtil.encrypt("15240004260wechat"); + String jmData1= AESCBCUtil.encrypt("GZkq@123456!"); System.out.println("加密后字符串:" + jmData); + System.out.println("加密后字符串:" + jmData1); String data= AESCBCUtil.decrypt(jmData); System.out.println("解密后的字串是:" + data); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttDetailByMonthController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttDetailByMonthController.java index 8290d4a..6ea9246 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttDetailByMonthController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttDetailByMonthController.java @@ -210,6 +210,7 @@ public class AttDetailByMonthController extends BaseController { attStatus.put("16", "产假"); attStatus.put("17", "婚假"); attStatus.put("18", "丧假"); + attStatus.put("19", "育儿假"); return attStatus; } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java index 1b06517..1eea790 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java @@ -198,4 +198,18 @@ public class AttendanceDetailsController extends BaseController { attendanceDetailsService.exportAttMonthReportData(response, o); } + @RequiresPermissions("att:public:list") + @GetMapping("/getOutCountList") + @Log(title = "考勤报表->公用->外出次数查询", businessType = BusinessType.QUERY) + public TableDataInfo getOutCountList(AttDataDetailsBean bean) { + try{ + startPage(); + return getDataTable(attendanceDetailsService.getOutCountList(bean)); + }catch (Exception e){ + log.error(e.toString(),e); + } + return getDataTableError(new ArrayList<>()); + } + + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttendanceDetailsDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttendanceDetailsDao.java index 9ce4003..b5b7ad1 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttendanceDetailsDao.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttendanceDetailsDao.java @@ -82,4 +82,6 @@ public interface AttendanceDetailsDao { * @return list bean */ List getAttDayReportDetailsList(AttDataDetailsBean bean); + + List getOutCountList(AttDataDetailsBean bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDataDetailsBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDataDetailsBean.java index 621bf9f..40bc2ae 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDataDetailsBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDataDetailsBean.java @@ -196,6 +196,9 @@ public class AttDataDetailsBean { /** 部门列表 */ private List orgList; + /** 上班时间外出次数 */ + private Integer outCount; + public AttDataDetailsBean() { } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDayReportBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDayReportBean.java index 11d2e7f..11234ee 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDayReportBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDayReportBean.java @@ -80,6 +80,11 @@ public class AttDayReportBean { */ private String endDate; + /** + * 工作时间外出次数 + */ + private Long outCount; + public AttDayReportBean(String attCurrentDay, Long normalNum, Long lateNum, Long earlyNum, Long skippingNum, Long leaveNum, Long addressErrorNum, Long einErrorNum, Long restNum, Long outNum) { diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDetailByMonthBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDetailByMonthBean.java index f098b47..5dd87f8 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDetailByMonthBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttDetailByMonthBean.java @@ -98,4 +98,9 @@ public class AttDetailByMonthBean { private int[] orgIds; + /** + * 工作时间外出次数 + */ + private int outCount; + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttMonthReportBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttMonthReportBean.java index fd1f68d..093ce70 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttMonthReportBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttMonthReportBean.java @@ -98,4 +98,9 @@ public class AttMonthReportBean { */ private Long groupId; + /** + * 工作时间外出次数 + */ + private Long outCount; + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsService.java index 470d529..a802437 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsService.java @@ -95,4 +95,5 @@ public interface AttendanceDetailsService { */ List getAttDayReportDetailsList(AttDataDetailsBean bean); + List getOutCountList(AttDataDetailsBean bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsServiceImpl.java index 72957de..6c1128c 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttendanceDetailsServiceImpl.java @@ -159,6 +159,11 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService { return attendanceDetailsDao.getAttDayReportDetailsList(bean); } + @Override + public List getOutCountList(AttDataDetailsBean bean) { + return attendanceDetailsDao.getOutCountList(bean); + } + public List getAttDayReportListAll(List list) { List allList = new ArrayList<>(); Map map = list.stream() diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java index 86d5517..1c57130 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java @@ -60,7 +60,7 @@ public class AttTasks { private volatile boolean executed = false; // 标志位,表示任务是否已经执行过 // @Scheduled(cron = "0 0/10 * * * ?") -// @Scheduled(initialDelay = 60000 * 5, fixedDelay = 60000 * 10) + @Scheduled(initialDelay = 6000, fixedDelay = 60000 * 10) @Async public void getAttTasks() { log.info("--------考勤定时器开启------"); @@ -72,7 +72,7 @@ public class AttTasks { /** * 历史考勤数据 */ - @Scheduled(fixedDelay = 60000 * 30) +// @Scheduled(initialDelay = 60000 * 4,fixedDelay = 60000 * 30) @Async public void getHisAttTasks() { log.info("--------考勤定时器开启------"); @@ -80,9 +80,22 @@ public class AttTasks { return; // 如果任务已经执行过,直接返回 } executed = true; // 设置标志位,表示任务已经执行过 - String startDate = "2024-11-01"; - String endDate = "2024-11-05"; - List dateList = getStrDateListBetween(startDate, endDate); +// String startDate = "2024-11-01"; +// String endDate = "2024-11-05"; +// List dateList = getStrDateListBetween(startDate, endDate); + List dateList = new ArrayList<>(); + dateList.add("2024-11-02"); + dateList.add("2024-11-03"); + dateList.add("2024-11-09"); + dateList.add("2024-11-10"); + dateList.add("2024-11-16"); + dateList.add("2024-11-17"); + dateList.add("2024-11-23"); + dateList.add("2024-11-24"); + dateList.add("2024-11-30"); + dateList.add("2024-12-01"); + dateList.add("2024-12-07"); + dateList.add("2024-12-08"); // 创建固定大小的线程池 ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); // 分批处理日期列表 @@ -93,7 +106,7 @@ public class AttTasks { executorService.submit(() -> { for (String date : batch) { try { - delHisData(date); +// delHisData(date); pushAttData(date, 2); } catch (Exception e) { // 记录异常并继续处理下一个日期 @@ -282,13 +295,13 @@ public class AttTasks { //开始和结束的那天是否只请了半天 if (c.getLeaveStartDate().equals(v)) { if (c.getLeaveStartInterval().equals("2")) { - replaceAttData(offWorkBean, 1, pushDate); + replaceHolidayData(offWorkBean, 0); } else { tf = true; } } else if (c.getLeaveEndDate().equals(v)) { if (c.getLeaveEndInterval().equals("1")) { - replaceAttData(toWorkBean, 1, pushDate); + replaceHolidayData(toWorkBean, 0); } else { tf = true; } @@ -297,8 +310,8 @@ public class AttTasks { } if (tf) { - replaceAttData(toWorkBean, 1, pushDate); - replaceAttData(offWorkBean, 1, pushDate); + replaceHolidayData(toWorkBean, 0); + replaceHolidayData(offWorkBean, 0); } }); } @@ -365,7 +378,7 @@ public class AttTasks { .findFirst() .ifPresent(c -> v.setAttStatus("11")); v.setAttCurrentDay(pushDate); - replaceAttData(v, 0, pushDate); + replaceAttData(v, pushDate); }); } } @@ -373,7 +386,7 @@ public class AttTasks { /** * 新增修改考勤数据 */ - private void replaceAttData(AttDataBean v, int type, String pushDate) { + private void replaceAttData(AttDataBean v, String pushDate) { //查询考勤模版数据是否已经插入 Boolean isAttExist = attSourceDataDao.selectAttIsExist(v); if (!isAttExist) { @@ -386,27 +399,62 @@ public class AttTasks { attSourceDataDao.insertAttData(v); } else { if (!v.getAttStatus().equals("0")) { - attSourceDataDao.updateAttData(v, type); + attSourceDataDao.updateAttData(v, 0); } if (v.getAttStatus().equals("0")) { //将未打卡的全部置为旷工 - changeAbsenteeAttStatus(v, type, 0, pushDate); + changeAbsenteeAttStatus(v, 0, 0, pushDate); } } //查询能修改的考勤模版数据是否已经插入 Boolean isAttUpdateExist = attSourceDataDao.selectAttUpdateIsExist(v); if (!isAttUpdateExist) { + // 判断 pushDate 是否在今天之前 + boolean isPastDate = isBeforeToday(pushDate); + if (isPastDate) { + v.setAttStatus("3"); + } attSourceDataDao.insertAttUpdateData(v); } else { if (!v.getAttStatus().equals("0")) { - attSourceDataDao.updateAttUpdateData(v, type); + attSourceDataDao.updateAttUpdateData(v, 0); } else { //将未打卡的全部置为旷工 - changeAbsenteeAttStatus(v, type, 1, pushDate); + changeAbsenteeAttStatus(v, 0, 1, pushDate); } } } + + /** + * 新增修改请假数据(更新考勤表) + */ + private void replaceHolidayData(AttDataBean v, int type) { + //查询考勤模版数据是否已经插入 + Boolean isAttExist = attSourceDataDao.selectAttIsExist(v); + if (!isAttExist) { + //没有基础数据,插入基础数据并改状态为对应请假状态 + attSourceDataDao.insertAttData(v); + } else { + if (!v.getAttStatus().equals("0")) { + //改状态为对应请假状态 + attSourceDataDao.updateAttData(v, type); + } + } + //查询能修改的考勤模版数据是否已经插入 + Boolean isAttUpdateExist = attSourceDataDao.selectAttUpdateIsExist(v); + if (!isAttUpdateExist) { + //没有基础数据,插入基础数据并改状态为对应请假状态 + attSourceDataDao.insertAttUpdateData(v); + } else { + if (!v.getAttStatus().equals("0")) { + //改状态为对应请假状态 + attSourceDataDao.updateAttUpdateData(v, type); + } + } + } + + /** * 将未打卡的全部置为旷工 * @@ -421,22 +469,12 @@ public class AttTasks { boolean isPastDate = isBeforeToday(pushDate); if (isPastDate) { // 如果 pushDate 是过去的时间,直接执行原逻辑 - if ("1".equals(v.getAttType())) { v.setAttStatus("3"); if (update == 0) { attSourceDataDao.updateAttData(v, type); } else if (update == 1) { attSourceDataDao.updateAttUpdateData(v, type); } - } - if ("2".equals(v.getAttType())) { - v.setAttStatus("3"); - if (update == 0) { - attSourceDataDao.updateAttData(v, type); - } else if (update == 1) { - attSourceDataDao.updateAttUpdateData(v, type); - } - } } else { LocalTime currentTime; // 使用当前时间 @@ -653,7 +691,6 @@ public class AttTasks { } ) )); - if (!tf) { //固定打卡,以最靠近上班打卡时间前的出闸机的时间为基准,去除掉之前的所有打卡数据 processGroupedItems(groupedItems, attGroupBean); @@ -669,12 +706,10 @@ public class AttTasks { .filter(a -> a.getAttType().equals("2")) .collect(Collectors.toList()) .stream().max(Comparator.comparing(AttSourceDataBean::getAttCurrentTime)).orElse(null); - if (tf) { //自由打卡不需要去除数据 getFreeAttData(newList, frontToWorkBean, backOffWorkBean, attGroupBean); } else { - if (backOffWorkBean != null) { //最新一次下班时间插入list newList.add(backOffWorkBean); @@ -683,13 +718,18 @@ public class AttTasks { // System.out.println("c.getAttCurrentTime() = "); // } // 处理逻辑 出入异常的逻辑 - Map> result = checkAdjacentAttType1WithGapAndCheckTypesBefore(v, attGroupBean.getEntryAbnormalMinute()); - if (result.containsKey(true)) { - List matchingItems = result.get(true); - frontToWorkBean = matchingItems.get(0); - frontToWorkBean.setAbnormalAttTime(matchingItems.get(1).getAttCurrentTime()); - frontToWorkBean.setAbnormalAttAddress(matchingItems.get(1).getAttAddress()); - frontToWorkBean.setAttStatus(8); + try { + Map> result = checkAdjacentAttType1WithGapAndCheckTypesBefore(v, attGroupBean.getEntryAbnormalMinute()); + if (result.containsKey(true)) { + List matchingItems = result.get(true); + frontToWorkBean = matchingItems.get(0); + frontToWorkBean.setAbnormalAttTime(matchingItems.get(1).getAttCurrentTime()); + frontToWorkBean.setAbnormalAttAddress(matchingItems.get(1).getAttAddress()); + frontToWorkBean.setAttStatus(8); + } + }catch(Exception e){ + e.printStackTrace(); + log.error("出入异常处理报错"); } //没有下班卡则添加第一次打卡数据 newList.add(frontToWorkBean); @@ -697,52 +737,57 @@ public class AttTasks { LocalTime lastOutTime = null; DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); - //存储工作异常的list - List longBreakRecords = new ArrayList<>(); - for (int i = 0; i < v.size(); i++) { - AttSourceDataBean record = v.get(i); - // 如果是“出”的记录,保存时间 - if ("2".equals(record.getAttType())) { - lastOutTime = LocalDateTime.parse(record.getAttCurrentTime(), dateTimeFormatter).toLocalTime(); - if(lastOutTime.isAfter(LocalTime.parse(attGroupBean.getOffWorkTime(), timeFormatter))){ - //进在下班之后,不考虑 - break; + try { + //存储工作异常的list + List longBreakRecords = new ArrayList<>(); + for (int i = 0; i < v.size(); i++) { + AttSourceDataBean record = v.get(i); + // 如果是“出”的记录,保存时间 + if ("2".equals(record.getAttType())) { + lastOutTime = LocalDateTime.parse(record.getAttCurrentTime(), dateTimeFormatter).toLocalTime(); + if(lastOutTime.isAfter(LocalTime.parse(attGroupBean.getOffWorkTime(), timeFormatter))){ + //进在下班之后,不考虑 + break; + } } - } - // 如果是“进”的记录并且之前有“出”的记录 - else if ("1".equals(record.getAttType()) && lastOutTime != null) { - LocalTime inTime = LocalDateTime.parse(record.getAttCurrentTime(), dateTimeFormatter).toLocalTime(); - // 计算实际工作时间(不包括午休时间) + // 如果是“进”的记录并且之前有“出”的记录 + else if ("1".equals(record.getAttType()) && lastOutTime != null) { + LocalTime inTime = LocalDateTime.parse(record.getAttCurrentTime(), dateTimeFormatter).toLocalTime(); + // 计算实际工作时间(不包括午休时间) // if(record.getName().equals("何波")){ // System.out.println("11111111111"); // } - // 出-》进 的时间在上班时间前,去除 - if(inTime.isBefore(LocalTime.parse(attGroupBean.getToWorkTime(), timeFormatter))){ - //进在上班之后,不考虑 - break; + // 出-》进 的时间在上班时间前,去除 + if(inTime.isBefore(LocalTime.parse(attGroupBean.getToWorkTime(), timeFormatter))){ + //进在上班之后,不考虑 + break; + } + Duration workDuration = calculateWorkDuration(lastOutTime, inTime, attGroupBean); + // 如果工作时间外出超过了规定时间,记录下这对“出”和“进” + if (workDuration != null && !workDuration.isNegative() && workDuration.toMinutes() > attGroupBean.getWorkAbnormalMinute()) { + AttSourceDataBean longBreakRecord = new AttSourceDataBean(); + longBreakRecord.setUserId(record.getUserId()); + longBreakRecord.setName(record.getName()); + longBreakRecord.setOrgId(attGroupBean.getOrgId()); + longBreakRecord.setAttCurrentDay(record.getAttCurrentDay()); + longBreakRecord.setAttCurrentTime(v.get(i - 1).getAttCurrentTime() + " " + record.getAttCurrentTime()); + longBreakRecord.setAttAddress(v.get(i - 1).getAttAddress() + " " + record.getAttAddress()); + longBreakRecords.add(longBreakRecord); + } + // 更新lastOutTime为null,因为已经处理了这一对 + lastOutTime = null; } - Duration workDuration = calculateWorkDuration(lastOutTime, inTime, attGroupBean); - // 如果工作时间外出超过了规定时间,记录下这对“出”和“进” - if (workDuration != null && !workDuration.isNegative() && workDuration.toMinutes() > attGroupBean.getWorkAbnormalMinute()) { - AttSourceDataBean longBreakRecord = new AttSourceDataBean(); - longBreakRecord.setUserId(record.getUserId()); - longBreakRecord.setName(record.getName()); - longBreakRecord.setOrgId(attGroupBean.getOrgId()); - longBreakRecord.setAttCurrentDay(record.getAttCurrentDay()); - longBreakRecord.setAttCurrentTime(v.get(i - 1).getAttCurrentTime() + " " + record.getAttCurrentTime()); - longBreakRecord.setAttAddress(v.get(i - 1).getAttAddress() + " " + record.getAttAddress()); - longBreakRecords.add(longBreakRecord); + } + //判断有没有临时外出请假等等 + if(!longBreakRecords.isEmpty()){ + int x = attSourceDataDao.getLeaveDataByUserId(longBreakRecords.get(0)); + if(x==0){ + attSourceDataDao.insertWorkAbnormal(longBreakRecords); } - // 更新lastOutTime为null,因为已经处理了这一对 - lastOutTime = null; - } - } - //判断有没有临时外出请假等等 - if(!longBreakRecords.isEmpty()){ - int x = attSourceDataDao.getLeaveDataByUserId(longBreakRecords.get(0)); - if(x==0){ - attSourceDataDao.insertWorkAbnormal(longBreakRecords); } + }catch(Exception e){ + e.printStackTrace(); + log.error("工作异常处理报错"); } } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java index f04dc09..fbade91 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java @@ -62,8 +62,8 @@ import static com.bonus.system.att.utils.DistanceCalculator.calculateDistance; */ @Configuration @Slf4j -//@EnableScheduling -//@EnableAsync +@EnableScheduling +@EnableAsync public class WechatTasks { @Resource(name = "WechatPushDao") @@ -71,14 +71,17 @@ public class WechatTasks { private String token; + private int index = 4; + /** * 人员基础数据同步定时器 */ // @Scheduled(cron = "0 0/10 * * * ?") -// @Scheduled(initialDelay = 60000 * 1,fixedDelay = 60000 * 1) +// @Scheduled(initialDelay = 6000,fixedDelay = 60000 * 10) @Async public void pushPersonTask() { log.info("--------人员基础数据同步定时器开启------"); + index=4; //考勤库人员 List list = dao.getPersonList(); //考勤小程序库人员 @@ -103,12 +106,12 @@ public class WechatTasks { /** * 休假出差数据同步定时器 */ -// @Scheduled(initialDelay = 60000 * 2,fixedDelay = 60000 * 1) +// @Scheduled(initialDelay = 60000 * 2,fixedDelay = 60000 * 10) @Async public void leaveTask() { log.info("--------休假出差数据定时器开启------"); + index=4; //小程序库人员 -// List list = dao.getWechatLeaveList(); String jsonStr = "{}"; String method = "getWechatLeaveList"; String string = httpPost(method, jsonStr); @@ -125,16 +128,10 @@ public class WechatTasks { bean.setOrgName(orgInfo.getOrgName()); } dao.insertWebLeave(bean); -// dao.updateWechatLeave(bean); String jsonStr2 = FastJsonHelper.beanToJsonStr(bean); String method2 = "updateWechatLeave"; String string2 = httpPost(method2, jsonStr2); } - //删除所有已经同步过去的数据 -// dao.deleteWechatLeave(); -// String jsonStr3 = "{}"; -// String method3 = "deleteWechatLeave"; -// String string3 = httpPost(method3, jsonStr3); //在将所有数据同步过去 List webList = dao.getWebLeaveList(); String jsonStr2 = "{}"; @@ -161,11 +158,9 @@ public class WechatTasks { log.info("插入请假数据到小程序:"+string2); } else { // 如果存在,则判断时间是否后于小程序时间 - // 如果 userId 存在于 wechatList,则比较 updateTime EvectionBean wechatUser = wechatUserMap.get(id); if (bean.getUpdateTime().after(wechatUser.getUpdateTime())) { // 如果 list 中的 updateTime 更新,则更新数据库 a -// dao.updateWechatPerson(user); String jsonStr = FastJsonHelper.beanToJsonStr(bean); String method = "updateWechatLeaveMsg"; String string = httpPost(method, jsonStr); @@ -182,10 +177,11 @@ public class WechatTasks { /** * 考勤数据同步定时器 */ -// @Scheduled(initialDelay = 60000 * 3,fixedDelay = 60000 * 1) +// @Scheduled(initialDelay = 60000 * 3,fixedDelay = 60000 * 10) @Async public void wechatAttTask() { log.info("--------考勤数据定时器开启------"); + index=4; // //小程序库人员考勤 String jsonStr = "{}"; String method = "getWechatAttList"; @@ -217,7 +213,6 @@ public class WechatTasks { //外勤 bean.setIsOutsideAtt("1"); } - }); //新增数据 attSourceList.forEach(c -> { @@ -270,7 +265,8 @@ public class WechatTasks { private void syncListsToDatabase(List list, List wechatList) { // 将 wechatList 转换为 Map,以便快速查找 - Map wechatUserMap = wechatList.stream() + Map wechatUserMap = Optional.ofNullable(wechatList) + .orElse(Collections.emptyList()).stream() .collect(Collectors.toMap(SysUser::getUserId, user -> user, (existing, replacement) -> existing)); // 遍历 list,检查每个用户是否存在于 wechatList 中 @@ -337,20 +333,31 @@ public class WechatTasks { // .header("Content-Type", "application/json") // .body(jsonStr) // .execute(); - HttpResponse response = HttpRequest.post(IpAndPathConfig.getWechatUrl() + "/wechatData/" + method) - .header("Content-Type", "application/json") - .header("token",token) // 添加Token到请求头 - .body(jsonStr) - .execute(); - int statusCode = response.getStatus(); - System.out.println(response.body()); - JSONObject jsonObject = FastJsonHelper.jsonStrToJsonObj(response.body()); - return jsonObject.getString("obj"); + if(index > 0){ + HttpResponse response = HttpRequest.post(IpAndPathConfig.getWechatUrl() + "/wechatData/" + method) + .header("Content-Type", "application/json") + .header("token",token) // 添加Token到请求头 + .body(jsonStr) + .execute(); + int statusCode = response.getStatus(); + System.out.println(response.body()); + JSONObject jsonObject = FastJsonHelper.jsonStrToJsonObj(response.body()); + if("401".equals(jsonObject.getString("code"))){ + wechatLogin(); + index--; + return httpPost(method, jsonStr); + } + if("200".equals(jsonObject.getString("code") ) ){ + index = 4; + } + return jsonObject.getString("obj"); + } } catch (Exception e) { e.printStackTrace(); // 处理异常,例如记录日志或抛出自定义异常 return ""; } + return ""; } /** @@ -385,12 +392,6 @@ public class WechatTasks { } } - - @Scheduled(initialDelay = 1000,fixedDelay = 60000 * 10) - @Async - public void login() { - wechatLogin(); - } public void wechatLogin() { OkHttpClient client = new OkHttpClient().newBuilder() .build(); @@ -398,7 +399,7 @@ public class WechatTasks { RequestBody body = null; try { // body = RequestBody.create(mediaType, "username=15240004260&password=GZkq@123456!"); - body = RequestBody.create(mediaType, "username="+ AESCBCUtil.encrypt("15240004260")+"&password="+AESCBCUtil.encrypt("GZkq@123456!")); + body = RequestBody.create(mediaType, "username="+ AESCBCUtil.encrypt("15240004260wechat")+"&password="+AESCBCUtil.encrypt("GZkq@123456!")); } catch (Exception e) { throw new RuntimeException(e); } @@ -424,9 +425,5 @@ public class WechatTasks { } - public static void main(String[] args) throws Exception { - String encrypt = AESCBCUtil.encrypt("GZkq@123456!"); - System.out.println(encrypt); - } } \ No newline at end of file diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/utils/IpAndPathConfig.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/utils/IpAndPathConfig.java index c3992e8..5983aa3 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/utils/IpAndPathConfig.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/utils/IpAndPathConfig.java @@ -23,7 +23,7 @@ public class IpAndPathConfig { public static String wechatTestUrl = "http://192.168.0.14:1907/gz_att_wechat"; - public static String wechatProdUrl = "http://112.29.103.165:21880/wcd/getWorkerCard"; + public static String wechatProdUrl = "https://jj.jypxks.com/gz_att_wechat"; public static String getWechatUrl(){ if(environment.contains("prod")){ diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java index cf2da65..aa35001 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java @@ -234,6 +234,8 @@ public class SysUserController extends BaseController { } // 角色集合 Set roles = sysMenuService.getRolePermission(user); + List roleList = userService.getRoleList(user); + user.setRoleList(roleList); // 权限集合 Set permissions = sysMenuService.getMenuPermission(user); AjaxResult ajax = AjaxResult.success(); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/dao/SysUserMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/dao/SysUserMapper.java index 1989d06..a2b458e 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/dao/SysUserMapper.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/dao/SysUserMapper.java @@ -226,4 +226,6 @@ public interface SysUserMapper Long getUserAttGroupByUserId(Long userId); void updateAttOrgByUserId(OrgChangeBean item); + + List getRoleListById(SysUser user); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/SysUserService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/SysUserService.java index 8254c36..c634787 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/SysUserService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/SysUserService.java @@ -144,4 +144,6 @@ public interface SysUserService { List getAttGroupByUserId(SysUser user); int updatePermission(SysUser user); + + List getRoleList(SysUser user); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysOrgServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysOrgServiceImpl.java index 09a8da1..065a59a 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysOrgServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysOrgServiceImpl.java @@ -108,14 +108,14 @@ public class SysOrgServiceImpl implements SysOrgService { @Override public int updateOrg(SysOrg org) { - if (org.getLat() == null || org.getLon()== null){ +// if (org.getLat() == null || org.getLon()== null){ Map map = AddressCoordinateFormatUtil.addressToCoordinate(org.getAddress()); if (map == null) { return 3; } org.setLon(map.get("longitude")); org.setLat(map.get("latitude")); - } +// } int i = orgDao.updateOrg(org); if (i > 0) { if (StringUtils.isNotBlank(org.getOrgHeadUserId())) { diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysUserServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysUserServiceImpl.java index ce38be1..6d8acbe 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysUserServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/service/impl/SysUserServiceImpl.java @@ -84,6 +84,8 @@ public class SysUserServiceImpl implements SysUserService sysUser.setAttGroupId(attGroupList.get(0).getId()); sysUser.setAttGroupName(attGroupList.get(0).getName()); } + List roleList = userMapper.getRoleListById(sysUser); + sysUser.setRoleList(roleList); // 权限集合 Set permissions = sysMenuService.getMenuPermission(sysUser); LoginUser sysUserVo = new LoginUser(); @@ -250,6 +252,11 @@ public class SysUserServiceImpl implements SysUserService } } + @Override + public List getRoleList(SysUser user) { + return userMapper.getRoleListById(user); + } + @Override @Transactional(rollbackFor = Exception.class) public int deleteUserByIds(Long userId) { diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/ProDeptRoleController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/ProDeptRoleController.java index 278b242..f24b7da 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/ProDeptRoleController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/ProDeptRoleController.java @@ -134,6 +134,24 @@ public class ProDeptRoleController extends BaseController { return error(); } + /** + * 获取项目部角色列表(表格) + */ + @RequiresPermissions("dept:role:list") + @GetMapping("/getRoleUserNoManagerList") + @Log(title = "项目部管理->项目部角色管理->列表查询", businessType = BusinessType.QUERY) + public TableDataInfo getRoleUserNoManagerList(ProDeptRoleBean bean) { + try{ + List roleUserList = proDeptRoleService.getRoleUserNoManagerList(bean); + return endPage(roleUserList); + }catch (Exception e){ + log.error(e.toString(),e); + } + return getDataTableError(new ArrayList<>()); + } + + + /** * 查询八大员数据列表 */ diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/ProDeptRoleDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/ProDeptRoleDao.java index 731d023..27df814 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/ProDeptRoleDao.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/ProDeptRoleDao.java @@ -22,6 +22,8 @@ public interface ProDeptRoleDao { */ List getRoleUserList(@Param("bean") ProDeptRoleBean bean); + List getRoleUserNoManagerList(@Param("bean")ProDeptRoleBean bean); + /** * 查询组织选择列表 * @return list bean @@ -95,4 +97,5 @@ public interface ProDeptRoleDao { Long getParentOrgById(MapVo mapVo); String getOrgChildById(Long orgId); + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleService.java index 8ab80c3..e9ab85f 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleService.java @@ -44,4 +44,6 @@ public interface ProDeptRoleService { List getMoreOrgData(ProDeptRoleBean bean); ProDeptRoleBean getInfoById(ProDeptRoleBean o); + + List getRoleUserNoManagerList(ProDeptRoleBean bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleServiceImpl.java index e0f9366..fa07b43 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/ProDeptRoleServiceImpl.java @@ -7,6 +7,7 @@ import com.bonus.common.core.utils.BuildTreeUtil; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.MapVo; +import com.bonus.system.api.domain.SysUser; import com.bonus.system.basic.domain.SysNotice; import com.bonus.system.basic.domain.SysOrg; import com.bonus.system.basic.service.SysNoticeService; @@ -40,21 +41,49 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { @Override public List getRoleUserList(ProDeptRoleBean bean) { //只能查自己分公司的人 - List orgList = SecurityUtils.getLoginUser().getSysUser().getOrgList(); - if(!orgList.isEmpty()){ - ArrayList ids = new ArrayList<>(); - for (MapVo mapVo : orgList) { - Long orgId = proDeptRoleDao.getParentOrgById(mapVo); - String id = proDeptRoleDao.getOrgChildById(orgId); - // 使用 Arrays.asList() 将数组转换为 ArrayList - ArrayList idList = new ArrayList<>(Arrays.asList(id.split(","))); - ids.addAll(idList); + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + List roleId = sysUser.getRoleList(); + if (Collections.frequency(roleId, 1L)>0) { + List orgList = sysUser.getOrgList(); + if (!orgList.isEmpty()) { + ArrayList ids = new ArrayList<>(); + for (MapVo mapVo : orgList) { +// Long orgId = proDeptRoleDao.getParentOrgById(mapVo); +// String id = proDeptRoleDao.getOrgChildById(orgId); +// // 使用 Arrays.asList() 将数组转换为 ArrayList +// ArrayList idList = new ArrayList<>(Arrays.asList(id.split(","))); +// ids.addAll(idList); + ids.add(String.valueOf(mapVo.getId())); + + } + bean.setOrgList(ids); } - bean.setOrgList(ids); + } return proDeptRoleDao.getRoleUserList(bean); } + public List getRoleUserNoManagerList(ProDeptRoleBean bean) { + //只能查自己分公司的人 + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + List roleId = sysUser.getRoleList(); + if (Collections.frequency(roleId, 1L)>0) { + List orgList = sysUser.getOrgList(); + if (!orgList.isEmpty()) { + ArrayList ids = new ArrayList<>(); + for (MapVo mapVo : orgList) { +// String id = proDeptRoleDao.getOrgChildById(orgId); +// // 使用 Arrays.asList() 将数组转换为 ArrayList +// ArrayList idList = new ArrayList<>(Arrays.asList(id.split(","))); +// ids.addAll(idList); + ids.add(String.valueOf(mapVo.getId())); + } + bean.setOrgList(ids); + } + } + return proDeptRoleDao.getRoleUserNoManagerList(bean); + } + /** * 更新项目部角色人员 * @@ -67,7 +96,7 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { */ @Transactional(rollbackFor = Exception.class) @Override - public int updatePersonAssignment(ProDeptRoleDo bean,String personStatus) { + public int updatePersonAssignment(ProDeptRoleDo bean, String personStatus) { int result = 0; Long loginId = SecurityUtils.getLoginUser().getSysUser().getUserId(); bean.setCreateUserId(loginId); @@ -98,11 +127,11 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { Map> stringListMap = compareLists(oldCheckList, checkList); delList = stringListMap.get("onlyInList1"); addList = stringListMap.get("onlyInList2"); - if (result > 0 ) { + if (result > 0) { //获取部门负责人 List userList = noticeService.getUserIdByOrgId(bean.getOrgId()); // 将 List 转换为数组 - if(!userList.isEmpty()){ + if (!userList.isEmpty()) { Long[] userIds = userList.toArray(new Long[0]); //发送审批消息 SysNotice notice = new SysNotice(); @@ -233,10 +262,10 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { orgList = Arrays.asList(moreOrgId.split(",")); } //这一块要组装数据,需要先处理分页,让框架自动分页 - List list = proDeptRoleDao.getOrgEightRoleDetail(orgList,bean.getParentOrgName()); + List list = proDeptRoleDao.getOrgEightRoleDetail(orgList, bean.getParentOrgName()); //再去查真实数据处理 List resultList = new ArrayList<>(); - if(!list.isEmpty()){ + if (!list.isEmpty()) { resultList = proDeptRoleDao.getDataDetail(list); } return rowSwitch(resultList); @@ -245,7 +274,7 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { @Override public List getMoreOrgData(ProDeptRoleBean bean) { List moreOrgData = proDeptRoleDao.getMoreOrgData(bean); - if(!moreOrgData.isEmpty()){ + if (!moreOrgData.isEmpty()) { moreOrgData = proDeptRoleDao.getMoreOrgDataByUserName(bean, moreOrgData); } return moreOrgData; @@ -258,6 +287,7 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { /** * 列转行 + * * @param resultList * @return */ @@ -278,7 +308,7 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { if (StringUtils.isEmpty(userName)) { // 如果存在 null 用户名,添加缺员角色 bean.setUserName("缺员"); - }else{ + } else { //将人名称添加到集合中 // 如果有非 null 的用户名,并且存在相同字段 String[] split = userName.split(","); @@ -295,7 +325,7 @@ public class ProDeptRoleServiceImpl implements ProDeptRoleService { List duplicates = new ArrayList<>(); for (Map.Entry entryMap : countMap.entrySet()) { if (entryMap.getValue() > 1) { - duplicates.add(entryMap.getKey()); + duplicates.add(entryMap.getKey()); } } //将名字与重复集合比较,包含重复元素的将其改为"兼职" diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java index ab073cb..92b8ad7 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java @@ -344,7 +344,7 @@ public class ExportFileController { writer.merge(rowNum + listData.size(), rowNum + listData.size() + 1, 0, 0, "说明", false); writer.merge(rowNum + listData.size(), rowNum + listData.size(), 1, 2 + days.size(), - "1.考勤记录:出勤记“√”,出差记“Δ”,年休假记“年”,探亲假记“探”,事假记“事”,法定假记“法”,病假记“病”,产假记“产”,婚假记“婚”,丧假记“丧”,补休记“补”,旷工记“旷”,迟到记“迟”,早退记“退”,省内工地记“工”,省外工地记“外”,出差需在备注栏备注清楚出差地点。", false); + "1.考勤记录:出勤记“√”,出差记“Δ”,年休假记“年”,探亲假记“探”,事假记“事”,法定假记“法”,病假记“病”,产假记“产”,婚假记“婚”,丧假记“丧”,育儿假记“育”,补休记“补”,旷工记“旷”,迟到记“迟”,早退记“退”,省内工地记“工”,省外工地记“外”,出差需在备注栏备注清楚出差地点。", false); writer.merge(rowNum + listData.size() + 1, rowNum + listData.size() + 1, 1, 2 + days.size(), "2.员工有关请假凭证,记录清楚准确,与本表于次月3日前一并报人力资源管理部门(专业分公司报送时间为30日前)。", false); writer.autoSizeColumn(3); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/controller/HolidayController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/controller/HolidayController.java index 0809dc3..3ba4646 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/controller/HolidayController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/controller/HolidayController.java @@ -122,7 +122,7 @@ public class HolidayController extends BaseController { @Log(title = "流程管理->假期管理->列表查询", businessType = BusinessType.QUERY) public TableDataInfo checkList(HolidayBean bean) { try{ - List holidayList = holidayService.getHolidayList(bean); + List holidayList = holidayService.getHolidayListCheck(bean); return endPage(holidayList); }catch (Exception e){ log.error(e.toString(),e); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayService.java index a7c82eb..d3e67e1 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayService.java @@ -62,4 +62,6 @@ public interface HolidayService { int changeStatus(HolidayBean o); AjaxResult excelUpload(MultipartFile file, HttpServletRequest request, HttpServletResponse response); + + List getHolidayListCheck(HolidayBean bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayServiceImpl.java index 78db7ac..6e9552c 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/holiday/service/HolidayServiceImpl.java @@ -55,6 +55,12 @@ public class HolidayServiceImpl implements HolidayService { @Override public List getHolidayList(HolidayBean bean) { + //只能查自己部门的人 + return holidayDao.getHolidayList(bean); + } + + @Override + public List getHolidayListCheck(HolidayBean bean) { //只能查自己部门的人 List orgList = SecurityUtils.getLoginUser().getSysUser().getOrgList(); if(!orgList.isEmpty()){ diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttDetailByMonthMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttDetailByMonthMapper.xml index e795cfe..8663343 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttDetailByMonthMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttDetailByMonthMapper.xml @@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" org_id as orgId, org_name as orgName, att_current_month as attCurrentMonth, + count(awa.user_id) as outCount, coalesce(required_days,0) as requiredDays, coalesce(normal_num,0) as normalNum, coalesce(late_num,0) as lateNum, @@ -61,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" coalesce(address_error_num,0) as addressErrorNum, coalesce(ein_error_num,0) as einErrorNum from att_month_report amr + LEFT JOIN att_work_abnormal awa ON LOCATE(amr.att_current_month,awa.att_current_day) and awa.user_id = amr.user_id where amr.is_active = 1 and amr.required_days != amr.normal_num @@ -72,7 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and INSTR(amr.name,#{name}) > 0 - group by user_id + GROUP BY amr.att_current_month,amr.user_id - select su.user_name, so.org_name, v.* from v_att_update_data v + select su.user_name, so.org_name,COUNT( awa.user_id ) as outCount, v.* from v_att_update_data v left join sys_user su on su.user_id = v.user_id left join sys_organization so on so.id = v.org_id + LEFT JOIN att_work_abnormal awa ON v.user_id = awa.user_id + AND v.att_current_day = awa.att_current_day where v.att_current_day BETWEEN #{startDate} AND #{endDate} AND v.org_id = #{orgId} @@ -16,7 +18,7 @@ AND su.user_name like concat('%', #{userName}, '%') - and (v.toWorkAttStatus in (12,13,14,15,16,17,18) or v.offWorkAttStatus in (12,13,14,15,16,17,18)) + and (v.toWorkAttStatus in (12,13,14,15,16,17,18,19) or v.offWorkAttStatus in (12,13,14,15,16,17,18,19)) @@ -26,7 +28,11 @@ and ( toWorkAttStatus = #{attStatus} or offWorkAttStatus = #{attStatus} ) - ORDER BY att_current_day DESC + GROUP BY + v.att_current_day, + v.user_id + ORDER BY + v.att_current_day DESC + diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/WechatPushMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/WechatPushMapper.xml index 7f65857..bdbd268 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/WechatPushMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/WechatPushMapper.xml @@ -33,7 +33,7 @@ - replace INTO gz_cloud_test.fc_sup_attendance ( + replace INTO gz_cloud.fc_sup_attendance ( name, id_number, org_id, @@ -175,7 +175,7 @@ If(PROJECT_ID is null,0,PROJECT_ID) AS proId, If(ORG_ID is null,0,ORG_ID) AS orgId FROM - gz_cloud_test.bm_sup_attend_history + gz_cloud.bm_sup_attend_history WHERE ID_NUMBER = #{idNumber} limit 1 diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml index a54bef6..8506756 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml @@ -300,4 +300,8 @@ select org_id from att_group_person_relation where user_id=#{userId} and is_active = 1 limit 1 + \ No newline at end of file diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/dept/ProDeptRoleMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/dept/ProDeptRoleMapper.xml index 17afeba..5c325a1 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/dept/ProDeptRoleMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/dept/ProDeptRoleMapper.xml @@ -63,6 +63,65 @@ Order BY aa.update_time DESC + +