From 5090ce5bb28c7e34f5e085be198e0cc4be340c23 Mon Sep 17 00:00:00 2001 From: fl <3098731433@qq.com> Date: Fri, 10 Jan 2025 23:18:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4bug=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AttExceptionHandleController.java | 62 +--- .../system/att/dao/AttExceptionHandleDao.java | 60 +--- .../system/att/entity/AttExceptionBean.java | 38 +-- .../system/att/entity/AttMonthReportBean.java | 26 +- .../bonus/system/att/entity/LeaveBean.java | 5 + .../service/AttExceptionHandleService.java | 32 +- .../AttExceptionHandleServiceImpl.java | 265 +--------------- .../com/bonus/system/att/tasks/AttTasks.java | 24 +- .../system/download/ExportFileController.java | 12 +- .../mapper/att/AttDetailByMonthMapper.xml | 5 - .../mapper/att/AttExceptionHandleMapper.xml | 282 +++--------------- .../mapper/att/AttSourceDataMapper.xml | 92 +++--- 12 files changed, 178 insertions(+), 725 deletions(-) diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttExceptionHandleController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttExceptionHandleController.java index d0a5738..7f04925 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttExceptionHandleController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttExceptionHandleController.java @@ -34,70 +34,20 @@ public class AttExceptionHandleController extends BaseController { private AttExceptionHandleService attExceptionHandle; @RequiresPermissions("att:exception:query") - @GetMapping("/list") - @Log(title = "异常处理->轮休临时外出异常数据->列表查询", businessType = BusinessType.QUERY) - public TableDataInfo list(AttExceptionBean data) { + @GetMapping("/getAttExceptionList") + @Log(title = "异常处理->异常数据->列表查询", businessType = BusinessType.QUERY) + public TableDataInfo getAttExceptionList(AttExceptionBean data) { startPage(); -// List list = attExceptionHandle.selectAttExceptionList(data); return attExceptionHandle.selectAttExceptionList(data); } @RequiresPermissions("att:exception:query") - @GetMapping("/getDetailException") - @Log(title = "异常处理->轮休临时外出异常报表->列表查询", businessType = BusinessType.QUERY) - public TableDataInfo getDetailException(AttExceptionBean data) { + @GetMapping("/getAttExceptionListByMonth") + @Log(title = "异常处理->异常报表->列表查询", businessType = BusinessType.QUERY) + public TableDataInfo getAttExceptionListByMonth(AttExceptionBean data) { startPage(); List list = attExceptionHandle.getDetailException(data); return getDataTable(list); } - @RequiresPermissions("att:exception:query") - @GetMapping("/getDetailExceptionRest") - @Log(title = "异常处理->轮休异常报表未申请详情->列表查询", businessType = BusinessType.QUERY) - public TableDataInfo getDetailExceptionRest(AttDetailLeaveBean data) { - startPage(); - List list = attExceptionHandle.getDetailExceptionRest(data); - return getDataTable(list); - } - - @RequiresPermissions("att:exception:query") - @GetMapping("/getDetailExceptionOut") - @Log(title = "异常处理->临时外出异常报表未申请详情->列表查询", businessType = BusinessType.QUERY) - public TableDataInfo getDetailExceptionOut(AttDetailLeaveBean data) { - startPage(); - List list = attExceptionHandle.getDetailExceptionOut(data); - return getDataTable(list); - } - - @RequiresPermissions("att:exception:query") - @GetMapping("/getDetailExceptionAll") - @Log(title = "异常处理->轮休和临时外出异常报表未申请详情->列表查询", businessType = BusinessType.QUERY) - public TableDataInfo getDetailExceptionAll(AttDetailLeaveBean data) { - startPage(); - List list = attExceptionHandle.getDetailExceptionAll(data); - return getDataTable(list); - } - - @RequiresPermissions("att:exception:query") - @GetMapping("/export") - public void export(HttpServletResponse response, AttExceptionBean data) { - try{ - List list = attExceptionHandle.getDetailException(data); - ExcelUtil util = new ExcelUtil(AttExceptionBean.class); - util.exportExcel(response, list, "轮休临时外出异常报表"); - }catch (Exception e){ - log.error(e.toString(),e); - } - } - - /** - * 审批提醒 - * @param vo - * @return - */ - @PostMapping("/examineRemind") - @Log(title = "异常处理->临时外出异常报表->审批提醒", businessType = BusinessType.QUERY) - public AjaxResult examineRemind(@Validated @RequestBody AttExRemindBean vo) { - return attExceptionHandle.examineRemind(vo); - } } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttExceptionHandleDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttExceptionHandleDao.java index 1c4c83b..f809115 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttExceptionHandleDao.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/dao/AttExceptionHandleDao.java @@ -18,19 +18,9 @@ public interface AttExceptionHandleDao { * @param data 参数 * @return list bean */ - AttExceptionBean selectAttExceptionList(AttExceptionBean data); + List selectAttExceptionList(AttExceptionBean data); - /** - * 轮休临时外出异常月份 - * @return - */ - List> selectAttExceptionMonth(); - /** - * 轮休临时外出异常未处理月份 - * @return - */ - List> selectAttExceptionNoHandleMonth(); /** * 获取轮休临时外出异常数据详情 @@ -39,52 +29,4 @@ public interface AttExceptionHandleDao { */ List getDetailException(AttExceptionBean data); - /** - * 获取轮休临时外出异常数据详情 - * @param data 参数 - * @return list bean - */ - List getDetailAllException(AttExceptionBean data); - - /** - * 获取轮休异常报表未申请详情 - * @param data 参数 - * @return list bean - */ - List getDetailExceptionRest(AttDetailLeaveBean data); - - /** - * 获取临时外出异常报表未申请详情 - * @param data 参数 - * @return list bean - */ - List getDetailExceptionOut(AttDetailLeaveBean data); - - /** - * 获取轮休和临时外出异常报表未申请详情 - * @param data 参数 - * @return list bean - */ - List getDetailExceptionAll(AttDetailLeaveBean data); - - /** - * 获取部门负责人id数据 - * @param data 参数 - * @return list bean - */ - AttExRemindBean getOrgUserId(AttExRemindBean data); - - /** - * 审批提醒 - * @param vo - * @return - */ - int examineRemind(AttExRemindBean vo); - - /** - * 审批提醒 - * @param vo - * @return - */ - int examineRemindTemp(AttExRemindBean vo); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttExceptionBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttExceptionBean.java index c30e985..29d548c 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttExceptionBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/AttExceptionBean.java @@ -44,17 +44,6 @@ public class AttExceptionBean { private Integer orgId; - /** - * 考勤月份的当月一号 - */ - private String attCurrentMonthFirst; - - - /** - * 考勤月份的次月一号 - */ - private String attNextMonthFirst; - /** * 异常数量 */ @@ -71,16 +60,31 @@ public class AttExceptionBean { private int noFinishCount; /** - * 轮休未审批条数 + * 迟到数量 */ - @Excel(name = "轮休未审批条数") - private int errorRestCount; + private int lateCount; /** - * 临时外出未审批条数 + * 早退数量 */ - @Excel(name = "临时外出未审批条数") - private int errorOutCount; + private int earlyCount; + + /** + * 旷工数量 + */ + private int absenteeismCount; + + /** + * 打卡地异常数量 + */ + private int addressCount; + + + /** + * 出入异常数量 + */ + private int goOutCount; + private int[] orgIds; 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 31ad431..f87e687 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 @@ -47,48 +47,54 @@ public class AttMonthReportBean { * 打卡地异常人数 */ @Excel(name = "打卡地异常次数", sort = 8) - private Long addressErrorNum; + private Double addressErrorNum; /** * 早退人数 */ @Excel(name = "早退次数", sort = 6) - private Long earlyNum; + private Double earlyNum; /** * 出入异常人数 */ @Excel(name = "出入异常次数", sort = 9) - private Long einErrorNum; + private Double einErrorNum; /** * 迟到人数 */ @Excel(name = "迟到次数", sort = 5) - private Long lateNum; + private Double lateNum; /** * 请假人数 */ @Excel(name = "请假天数", sort = 10) - private Long leaveNum; + private Double leaveNum; /** * 正常打卡人数 */ @Excel(name = "正常打卡天数", sort = 4) - private Long normalNum; + private Double normalNum; /** * 临时外出人数 */ @Excel(name = "临时外出天数", sort = 12) - private Long outNum; + private Double outNum; /** * 轮休人数 */ @Excel(name = "轮休人数", sort = 11) - private Long restNum; + private Double restNum; /** * 旷工人数 */ @Excel(name = "旷工次数", sort = 7) - private Long skippingNum; + private Double skippingNum; + + /** + * 出差人数 + */ + @Excel(name = "出差人数", sort = 13) + private Double businessTripNum; /** * 月份 @@ -103,7 +109,7 @@ public class AttMonthReportBean { /** * 工作时间外出次数 */ - private Long outCount; + private Double outCount; /** * 自己项目部所在分公司下的所有项目部id diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/LeaveBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/LeaveBean.java index 97ba34f..5ae9572 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/LeaveBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/entity/LeaveBean.java @@ -47,4 +47,9 @@ public class LeaveBean { */ private String attStatus; + /** + * 考勤状态 + */ + private String attType; + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleService.java index 1f7da27..0b96665 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleService.java @@ -20,38 +20,10 @@ public interface AttExceptionHandleService { TableDataInfo selectAttExceptionList(AttExceptionBean data); /** - * 获取轮休临时外出异常数据详情 + * 获取异常数据详情 * @param data 参数 * @return list bean */ List getDetailException(AttExceptionBean data); - /** - * 获取轮休异常报表未申请详情 - * @param data 参数 - * @return list bean - */ - List getDetailExceptionRest(AttDetailLeaveBean data); - - /** - * 获取临时外出异常报表未申请详情 - * @param data 参数 - * @return list bean - */ - List getDetailExceptionOut(AttDetailLeaveBean data); - - /** - * 获取轮休和临时外出异常报表未申请详情 - * @param data 参数 - * @return list bean - */ - List getDetailExceptionAll(AttDetailLeaveBean data); - - - /** - * 审批提醒 - * @param vo - * @return - */ - AjaxResult examineRemind(AttExRemindBean vo); -} + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleServiceImpl.java index 0e50275..4fd132e 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/service/AttExceptionHandleServiceImpl.java @@ -47,36 +47,14 @@ public class AttExceptionHandleServiceImpl implements AttExceptionHandleService{ @Override public TableDataInfo selectAttExceptionList(AttExceptionBean data) { - AttExceptionBean attExceptionBean = new AttExceptionBean(); List list = new ArrayList<>(); - List> mapList = new ArrayList<>(); try { - if(!StringUtils.isEmpty(data.getAttCurrentMonth())){ - LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01"); - LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); - LocalDate nowMonth =date.withDayOfMonth(1); - data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; - data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - attExceptionBean = attExceptionHandleDao.selectAttExceptionList(data); - list.add(attExceptionBean); - }else{ - mapList = attExceptionHandleDao.selectAttExceptionMonth(); - if(mapList.size()!=0){ - for (int i = 0; i < mapList.size(); i++) { - LocalDate date = LocalDate.parse(mapList.get(i).get("month") + "-01"); - LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); - LocalDate nowMonth =date.withDayOfMonth(1); - data.setAttCurrentMonth(String.valueOf(mapList.get(i).get("month"))); - data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; - data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - attExceptionBean = attExceptionHandleDao.selectAttExceptionList(data); - list.add(attExceptionBean); - } - } - } - + list = attExceptionHandleDao.selectAttExceptionList(data); + list.forEach(item -> { + item.setNoFinishCount(item.getErrorCount()-item.getFinishCount()); + }); } catch (Exception e) { - log.error("查询轮休临时外出异常数据", e); + log.error("查询异常数据", e); } TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); @@ -86,251 +64,18 @@ public class AttExceptionHandleServiceImpl implements AttExceptionHandleService{ return rspData; } -// @Override -// public List getDetailException(AttExceptionBean data) -// { -// List listPerson = new ArrayList<>(); -// List list = new ArrayList<>(); -// List> mapList = new ArrayList<>(); -// List listTemp = new ArrayList<>(); -// List> parentIdList = new ArrayList<>(); -// List> sonsIdList = new ArrayList<>(); -// Map map = new HashMap<>(); -// try { -// if(!StringUtils.isEmpty(data.getAttCurrentMonth())){ -// LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01"); -// LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); -// LocalDate nowMonth =date.withDayOfMonth(1); -// data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; -// data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); -// if(data.getOrgId()==null){ -// listTemp = attDetailByMonthDao.getAllParentId(); -// for (int i = 0; i < listTemp.size(); i++) { -// findSonsIds(listTemp.get(i).getOrgId(),sonsIdList); -// } -// }else { -// findSonsIds(data.getOrgId(), sonsIdList); -// } -// for (int i = 0; i < sonsIdList.size(); i++) { -// map = sonsIdList.get(i); -// findParentIds(map,parentIdList); -// sonsIdList.get(i).put("orgName",parentIdList.get(i).get("orgName")); -// } -// int[] orgIdsTemp = new int[sonsIdList.size()]; -// for (int i = 0; i < sonsIdList.size(); i++){ -// orgIdsTemp[i] = (int) sonsIdList.get(i).get("id"); -// } -// data.setOrgIds(orgIdsTemp); -// list = attExceptionHandleDao.getDetailException(data); -// for (int i = 0; i < list.size(); i++) { -// for (int j = 0; j < sonsIdList.size(); j++) { -// if(sonsIdList.get(j).get("id")==list.get(i).getOrgId()){ -// list.get(i).setOrgName((String) sonsIdList.get(j).get("orgName")); -// } -// } -// } -// }else{ -// mapList = attExceptionHandleDao.selectAttExceptionNoHandleMonth(); -// if(mapList.size()!=0){ -// String[] monthError = new String[mapList.size()]; -// for (int i = 0; i < mapList.size(); i++) { -// monthError[i] = (String) mapList.get(i).get("month"); -// } -// data.setMonth(monthError); -// list = attExceptionHandleDao.getDetailAllException(data); -// for (int i = 0; i < list.size(); i++) { -// LocalDate date = LocalDate.parse(list.get(i).getAttCurrentMonth()); -// -// // 格式化日期为 "YYYY-MM" -// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); -// String formattedDate = date.format(formatter); -// list.get(i).setAttCurrentMonth(formattedDate); -// } -// } -// } -// -// } catch (Exception e) { -// log.error("查询轮休临时外出异常数据详细信息", e); -// } -// return list; -// } - @Override public List getDetailException(AttExceptionBean data) { - List listPerson = new ArrayList<>(); List list = new ArrayList<>(); - List> mapList = new ArrayList<>(); - List listTemp = new ArrayList<>(); - List> parentIdList = new ArrayList<>(); - List> sonsIdList = new ArrayList<>(); - Map map = new HashMap<>(); try { - if(!StringUtils.isEmpty(data.getAttCurrentMonth())){ - LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01"); - LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); - LocalDate nowMonth =date.withDayOfMonth(1); - data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; - data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); list = attExceptionHandleDao.getDetailException(data); - - }else{ - list = attExceptionHandleDao.getDetailException(data); - - } - } catch (Exception e) { log.error("查询轮休临时外出异常数据详细信息", e); } return list; } - @Override - public List getDetailExceptionRest(AttDetailLeaveBean data) - { - List list = new ArrayList<>(); - try { - LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01"); - LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); - LocalDate nowMonth =date.withDayOfMonth(1); - data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; - data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - list = attExceptionHandleDao.getDetailExceptionRest(data); - } catch (Exception e) { - log.error("查询轮休异常报表未申请详情", e); - } - return list; - } - - @Override - public List getDetailExceptionOut(AttDetailLeaveBean data) - { - List list = new ArrayList<>(); - try { - LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01"); - LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); - LocalDate nowMonth =date.withDayOfMonth(1); - data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; - data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - list = attExceptionHandleDao.getDetailExceptionOut(data); - - } catch (Exception e) { - log.error("查询临时外出异常报表未申请详情", e); - } - return list; - } - - @Override - public List getDetailExceptionAll(AttDetailLeaveBean data) - { - List list = new ArrayList<>(); - try { - LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01"); - LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1); - LocalDate nowMonth =date.withDayOfMonth(1); - data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ; - data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - list = attExceptionHandleDao.getDetailExceptionAll(data); - - } catch (Exception e) { - log.error("查询轮休和临时外出异常报表未申请详情", e); - } - return list; - } - - /** - * 审批提醒 - * @param vo - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public AjaxResult examineRemind(AttExRemindBean vo) { - try { - SysOrg att = orgDao.selectOrgById(vo.getOrgId()); - if(att==null){ - return AjaxResult.error("审批提醒失败"); - }else{ - String orgIds = att.getOrgHeadUserId(); - if(orgIds != null){ - String[] nameArray = orgIds.split(","); - Long[] longArray = new Long[nameArray.length]; - for (int i = 0; i < nameArray.length; i++) { - try { - longArray[i] = Long.parseLong(nameArray[i].trim()); - } catch (NumberFormatException e) { - longArray[i] = null; // 处理异常情况 - } - } - for (int i = 0; i < longArray.length; i++) { - vo.setUserId(longArray[i]); - int numTemp = attExceptionHandleDao.examineRemindTemp(vo); - if(numTemp!=1){ - return AjaxResult.error("审批提醒失败"); - } - } - vo.setUserUpdate(SecurityUtils.getUserId()); - if("轮休".equals(vo.getLeaveType())){ - vo.setType(67L); - }else{ - vo.setType(68L); - } - int num = attExceptionHandleDao.examineRemind(vo); - if (num==1) { - return AjaxResult.success(); - } - }else{ - return AjaxResult.error("部门没有负责人,无法提醒"); - } - } - return AjaxResult.error("审批提醒失败"); - } catch (Exception e) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return AjaxResult.error(); - } - } - - /** - * 从父级补充所属部门名称 - * @param parentMap - * @param parentIdList - */ - public void findParentIds(Map parentMap,List> parentIdList) { - Map map = attDetailByMonthDao.getDepartmentById(parentMap); - if (map!=null && map.get("parentId") != null) { - // 递归查找上级部门 - findParentIds(map,parentIdList); - }else if(map!=null){ - parentMap.put("orgName",map.get("orgName")); - parentIdList.add(parentMap); - }else{ - parentIdList.add(parentMap); - } - } - - /** - * 获取该部门编号下的所有部门编号 - * @param orgId - * @param sonsIdList - */ - public void findSonsIds(int orgId, List> sonsIdList) { - Map mapFinish = new HashMap<>(); - Map mapTemp = new HashMap<>(); - List> listSon= attDetailByMonthDao.getSonsById(orgId); - if(listSon.size()!=0){ - for (int i = 0; i < listSon.size(); i++) { - mapTemp = listSon.get(i); - if(mapTemp.get("parentId")==null){ - sonsIdList.add(mapTemp); - }else{ - findSonsIds((Integer) mapTemp.get("id"),sonsIdList); - } - } - }else{ - mapFinish = attDetailByMonthDao.getSonsFinish(orgId); - sonsIdList.add(mapFinish); - } - } } 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 112ecb1..e5d0657 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 @@ -287,17 +287,20 @@ public class AttTasks { */ private void threadLeaveData(LeaveBean c, String pushDate) { //1.将请假区间变成日期集合 - if(c.getUserId() == 263){ - System.out.println("米娜"); - } +// if(c.getUserId() == 263){ +// System.out.println("米娜"); +// } List dateLists = getStrDateListBetween(c.getLeaveStartDate(), c.getLeaveEndDate()); if (!dateLists.isEmpty()) { - //根据开始时间、结束时间获取节假日的日期集合 - List holidayList = holidayDao.getHolidayDataByType(c.getLeaveStartDate(), c.getLeaveEndDate()); - // 使用Stream API去除A中包含在B中的元素 - List dateList = dateLists.stream().filter(element -> !holidayList.contains(element)).collect(Collectors.toList()); - - dateList.forEach(v -> { +// //根据开始时间、结束时间获取节假日的日期集合 + // 1 表示固定打卡 + if("1".equals(c.getAttType())){ + //只有固定打卡蒋周六日不算在请假轮休天数中 + List holidayList = holidayDao.getHolidayDataByType(c.getLeaveStartDate(), c.getLeaveEndDate()); + // 使用Stream API去除A中包含在B中的元素 + dateLists = dateLists.stream().filter(element -> !holidayList.contains(element)).collect(Collectors.toList()); + } + dateLists.forEach(v -> { boolean tf = false; AttDataBean toWorkBean = new AttDataBean(v, c.getAttStatus(), "1", c.getOrgId(), c.getUserId()); @@ -667,6 +670,9 @@ public class AttTasks { .collect(Collectors.toList()) .stream().max(Comparator.comparing(AttSourceDataBean::getAttCurrentTime)).orElse(null); if (tf) { + if(v!=null&&v.size()>0&&v.get(0).getName().equals("任荣辉")){ + System.out.println("11111111111"); + } //自由打卡不需要去除数据 getFreeAttData(newList, frontToWorkBean, backOffWorkBean, attGroupBean); } else { 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 b3ce92a..0f1f774 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 @@ -556,7 +556,7 @@ public class ExportFileController { List attDayReportList = attendanceDetailsService.getAttMonthReportList(bean); Sheet departmentSheet1 = exporter.createSheet("月报表详情"); List departmentHeaders1 = Arrays.asList("序号", "姓名", "所属部门", "考勤月", "应考勤天数", "正常打卡天数", - "迟到天数", "早退天数", "旷工天数", "请假天数", "打卡地异常天数", "出入异常天数", "轮休天数", "临时外出天数"); + "迟到天数", "早退天数", "旷工天数", "请假天数", "打卡地异常天数", "出入异常天数", "轮休天数", "临时外出天数", "出差天数"); exporter.addHeaderRowAndTitle(departmentSheet1, departmentHeaders1, title); List> departmentData1 = new ArrayList<>(); for (int i = 0; i < attDayReportList.size(); i++) { @@ -575,6 +575,7 @@ public class ExportFileController { map.put("出入异常天数", attDayReportList.get(i).getEinErrorNum()); map.put("轮休天数", attDayReportList.get(i).getRestNum()); map.put("临时外出天数", attDayReportList.get(i).getOutNum()); + map.put("出差天数", attDayReportList.get(i).getBusinessTripNum()); departmentData1.add(map); } exporter.addDataRows(departmentSheet1, departmentData1, departmentHeaders1); @@ -589,6 +590,7 @@ public class ExportFileController { headers.put("7", "临时外出"); headers.put("8", "出入异常"); headers.put("9", "打卡地异常"); + headers.put("10", "出差详情"); headers.put("99", "工作外出"); Map attStatus = getStringStringMap(); if (StringHelper.isNotEmpty(bean.getMonth())) { @@ -596,14 +598,18 @@ public class ExportFileController { AttDetailBean dayTable = new AttDetailBean(); dayTable.setStartDate(monthFirstAndLast.get(0)); dayTable.setEndDate(monthFirstAndLast.get(1)); - dayTable.setOrgId(String.valueOf(bean.getOrgId())); + if(bean.getOrgId() != null){ + dayTable.setOrgId(String.valueOf(bean.getOrgId())); + } dayTable.setName(bean.getUserName()); headers.entrySet() .forEach(entry -> { if("99".equals(entry.getKey())){ AttDataDetailsBean att = new AttDataDetailsBean(); att.setAttCurrentMonth(bean.getMonth()); - att.setOrgId(bean.getOrgId()); + if(bean.getOrgId() != null){ + att.setOrgId(bean.getOrgId()); + } att.setUserName(bean.getUserName()); List list = attendanceDetailsService.getOutCountList(att); Sheet departmentSheet2 = exporter.createSheet(entry.getValue()); 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 358ff60..b11c8bf 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 @@ -181,12 +181,7 @@ where dict_type = 'att_status' and is_leave = '1')) - - and (vat.toWorkAttStatus = #{attStatis} and vat.offWorkAttStatus = #{attStatis} ) - - and (vat.toWorkAttStatus = #{attStatis} or vat.offWorkAttStatus = #{attStatis} ) - and vat.org_id = #{orgId} diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttExceptionHandleMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttExceptionHandleMapper.xml index b8d4989..51f2215 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttExceptionHandleMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttExceptionHandleMapper.xml @@ -5,246 +5,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + SELECT + DATE_FORMAT( att_current_day, '%Y-%m' ) AS yearMonth, + SUM( + CASE - + WHEN toWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 ) + OR offWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 ) THEN + 1 ELSE 0 + END + ) AS errorCount, + SUM( + CASE - - - - - - - - - - - - - insert into sys_notice( - user_id, - title, - content, - type, - create_time, - update_time, - is_active - )values( - #{userUpdate}, - #{title}, - #{content}, - #{type}, - now(), - now(), - 1 - ) - - - - insert into sys_notice_user( - user_id, - create_time, - update_time, - is_active - )values( - #{userId}, - now(), - now(), - 1 - ) - diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml index b687591..a422169 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml @@ -33,11 +33,11 @@ replace into att_month_report(user_id, name, org_id, org_name, att_current_month, required_days, normal_num, late_num, early_num, skipping_num, - leave_num, address_error_num, ein_error_num, rest_num, out_num) + leave_num, address_error_num, ein_error_num, rest_num, out_num, business_trip_num) values (#{params.userId}, #{params.userName}, #{params.orgId}, #{params.orgName}, #{params.attCurrentMonth}, #{params.requiredDays}, #{params.normalNum}, #{params.lateNum}, #{params.earlyNum}, #{params.skippingNum}, #{params.leaveNum}, - #{params.addressErrorNum}, #{params.einErrorNum}, #{params.restNum}, #{params.outNum}) + #{params.addressErrorNum}, #{params.einErrorNum}, #{params.restNum}, #{params.outNum}, #{params.businessTripNum}) @@ -147,17 +147,17 @@ attendance_date as attCurrentDay, attendance_time as attCurrentTime, CASE attendance_type WHEN '上班' THEN 1 ELSE 2 END as attType, '0' as attAddress, lon as attLon, lat as attLat, '1' as dataSource - from gz_cloud.fc_sup_attendance sup + from gz_cloud_test.fc_sup_attendance sup where sup.attendance_date - >= (#{pushDate} - INTERVAL 1 DAY) + >= #{pushDate} = #{pushDate} and is_wechat != 1 - + select att_current_day, org_id, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 1 and IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 1), 0) as normalNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 2 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 2), 0) as lateNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 3 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 3), 0) as skippingNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 4 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 4), 0) as earlyNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 5 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 5), 0) as restNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) in (SELECT dict_value + IFNULL(sum(toWorkAttStatus = 1 and offWorkAttStatus = 1), 0) as normalNum, + IFNULL(sum(toWorkAttStatus = 2 or offWorkAttStatus) = 2, 0) as lateNum, + IFNULL(sum(toWorkAttStatus = 3 or offWorkAttStatus = 3), 0) as skippingNum, + IFNULL(sum(toWorkAttStatus = 4 or offWorkAttStatus = 4), 0) as earlyNum, + IFNULL(sum(toWorkAttStatus = 5 or offWorkAttStatus = 5), 0) as restNum, + IFNULL(sum(toWorkAttStatus in (SELECT dict_value FROM sys_dict_data where dict_type = 'att_status' and is_leave = '1') or - IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) in (SELECT dict_value + offWorkAttStatus in (SELECT dict_value FROM sys_dict_data where dict_type = 'att_status' and is_leave = '1')), 0) as leaveNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 7 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 7), 0) as outNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 8 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 8), 0) as einErrorNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 9 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 9), 0) as addressErrorNum + IFNULL(sum(toWorkAttStatus = 7 or offWorkAttStatus = 7), 0) as outNum, + IFNULL(sum(toWorkAttStatus = 8 or offWorkAttStatus = 8), 0) as einErrorNum, + IFNULL(sum(toWorkAttStatus = 9 or offWorkAttStatus = 9), 0) as addressErrorNum from v_att_update_data where att_current_day @@ -210,20 +210,20 @@ so.org_name, g.group_id, DATE_FORMAT(att_current_day, '%Y-%m') as attCurrentMonth, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 1 and IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 1), 0) as normalNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 2 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 2), 0) as lateNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 3 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 3), 0) as skippingNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 4 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 4), 0) as earlyNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 5 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 5), 0) as restNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) in (SELECT dict_value - FROM sys_dict_data - where dict_type = 'att_status' and is_leave = '1') or - IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) in (SELECT dict_value - FROM sys_dict_data - where dict_type = 'att_status' and is_leave = '1')), 0) as leaveNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 7 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 7), 0) as outNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 8 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 8), 0) as einErrorNum, - IFNULL(sum(IFNULL(toWorkUpdateAttStatus,toWorkAttStatus) = 9 or IFNULL(offWorkUpdateAttStatus,offWorkAttStatus) = 9), 0) as addressErrorNum + IFNULL( sum( IF ( toWorkAttStatus = 1, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 1, 0.5, 0 )), 0 ) AS normalNum, + IFNULL( sum( IF ( toWorkAttStatus = 2, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 2, 0.5, 0 )), 0 ) AS lateNum, + IFNULL( sum( IF ( toWorkAttStatus = 3, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 3, 0.5, 0 )), 0 ) AS skippingNum, + IFNULL( sum( IF ( toWorkAttStatus = 4, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 4, 0.5, 0 )), 0 ) AS earlyNum, + IFNULL( sum( IF ( toWorkAttStatus = 5, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 5, 0.5, 0 )), 0 ) AS restNum, + sum( + IF + ( toWorkAttStatus IN ( SELECT dict_value FROM sys_dict_data WHERE dict_type = 'att_status' AND is_leave = '1' ), 0.5, 0 ))+ sum( + IF + ( offWorkAttStatus IN ( SELECT dict_value FROM sys_dict_data WHERE dict_type = 'att_status' AND is_leave = '1' ), 0.5, 0 )) AS leaveNum, + IFNULL( sum( IF ( toWorkAttStatus = 7, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 7, 0.5, 0 )), 0 ) AS outNum, + IFNULL( sum( IF ( toWorkAttStatus = 8, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 8, 0.5, 0 )), 0 ) AS einErrorNum, + IFNULL( sum( IF ( toWorkAttStatus = 9, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 9, 0.5, 0 )), 0 ) AS addressErrorNum, + IFNULL( sum( IF ( toWorkAttStatus = 10, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 10, 0.5, 0 )), 0 ) AS businessTripNum 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 @@ -231,7 +231,7 @@ on g.user_id = v.user_id and g.is_active = 1 where DATE_FORMAT(att_current_day, '%Y-%m') = DATE_FORMAT(#{pushDate}, '%Y-%m') and g.group_id is not null - GROUP BY DATE_FORMAT(att_current_day, '%Y-%m'), v.user_id; + GROUP BY DATE_FORMAT(att_current_day, '%Y-%m'), v.user_id