/** * 公司培训课时汇总 * @return */ @Override public List<CompanyTrainingClassGather> getCompanyTrainingClassGather() { List<CompanyTrainingClassGather> list=new ArrayList<>(); //查询部门表获取所有部门名称和部门id List<Dept>deptList=deptUserEmployeeUtil.getDeptList(AuthUtil.getTenantId()); if(Func.isNotEmpty(deptList)){ String nowStartDate=getFirstDayOfMonth();//当月开始第一天 String nowEndDate=getLastDayOfMonth();//当月最后一天 for(Dept dept:deptList){ double twelveMonthTotal=0;//该部门12月培训总时长 CompanyTrainingClassGather trainingClassGather= new CompanyTrainingClassGather(); for(int i=1;i<=12;i++){ double sum=0;//每个部门该月培训总时长 trainingClassGather.setDeptName(dept.getDeptName()); String startDate=getFirstDayOfMonth(i); String endDate=getLastDayOfMonth(i); String deptId=String.valueOf(dept.getId()); //查询每个部门该月的培训时长 sum=employeeTrainingRecordMapper.getTrainingRecordTotalByDeptId(deptId,startDate,endDate,AuthUtil.getTenantId()); twelveMonthTotal+=sum; //将每个部门的12月的培训时长放入对应的月份 switch (i) { case 1: //将一月份人员培训时长放入实体类类 trainingClassGather.setJanuary(String.valueOf(sum)); break; case 2: trainingClassGather.setFebruary(String.valueOf(sum)); break; case 3: trainingClassGather.setMarch(String.valueOf(sum)); break; case 4: trainingClassGather.setApril(String.valueOf(sum)); break; case 5: trainingClassGather.setMay(String.valueOf(sum)); break; case 6: trainingClassGather.setJune(String.valueOf(sum)); break; case 7: trainingClassGather.setJuly(String.valueOf(sum)); break; case 8: trainingClassGather.setAugust(String.valueOf(sum)); break; case 9: trainingClassGather.setSeptember(String.valueOf(sum)); break; case 10: trainingClassGather.setOctober(String.valueOf(sum)); break; case 11: trainingClassGather.setNovember(String.valueOf(sum)); break; case 12: trainingClassGather.setDecember(String.valueOf(sum)); break; } } //根据部门id查询当前部门在职人数 List<AllEmployeeBasicInformation> deptUserSum= employeeTrainingRecordMapper.getDeptUserByDeptId(String.valueOf(dept.getId()),nowStartDate,nowEndDate,AuthUtil.getTenantId()); //计算部门员工培训时长平均值 if(Func.isNotEmpty(deptUserSum)){ double averageValue= twelveMonthTotal/deptUserSum.size(); trainingClassGather.setAverageValue(String.valueOf(averageValue)); } //将每个部门12个月培训总时长放入实体类 trainingClassGather.setTotals(String.valueOf(twelveMonthTotal)); list.add(trainingClassGather); } } return list; } /** * double类型相加 * @param v1 * @param v2 * @return */ public double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 获得该月第一天 * @param month * @return */ public String getFirstDayOfMonth(int month) { Calendar cal = Calendar.getInstance(); // 设置月份 cal.set(Calendar.MONTH, month - 1); // 获取某月最小天数 int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH); // 设置日历中月份的最小天数 cal.set(Calendar.DAY_OF_MONTH, firstDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String firstDayOfMonth = sdf.format(cal.getTime()); return firstDayOfMonth; } /** * 获得该月最后一天 * * @param month * @param month * @return */ public String getLastDayOfMonth(int month) { Calendar cal = Calendar.getInstance(); // 设置月份 cal.set(Calendar.MONTH, month - 1); // 获取某月最大天数 int lastDay=0; //2月的平年瑞年天数 if(month==2) { lastDay = cal.getLeastMaximum(Calendar.DAY_OF_MONTH); }else { lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); } // 设置日历中月份的最大天数 cal.set(Calendar.DAY_OF_MONTH, lastDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String lastDayOfMonth = sdf.format(cal.getTime()); return lastDayOfMonth; } /** * 获得现在月第一天 * @param * @return */ public String getFirstDayOfMonth() { Calendar cal = Calendar.getInstance(); int month = cal.get(Calendar.MONTH) + 1; // 设置月份 cal.set(Calendar.MONTH, month - 1); // 获取某月最小天数 int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH); // 设置日历中月份的最小天数 cal.set(Calendar.DAY_OF_MONTH, firstDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String firstDayOfMonth = sdf.format(cal.getTime()); return firstDayOfMonth; } /** * 获得现在月最后一天 * * @param * @return */ public String getLastDayOfMonth() { Calendar cal = Calendar.getInstance(); // 设置月份 int month = cal.get(Calendar.MONTH) + 1; cal.set(Calendar.MONTH, month - 1); // 获取某月最大天数 int lastDay=0; //2月的平年瑞年天数 if(month==2) { lastDay = cal.getLeastMaximum(Calendar.DAY_OF_MONTH); }else { lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); } // 设置日历中月份的最大天数 cal.set(Calendar.DAY_OF_MONTH, lastDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String lastDayOfMonth = sdf.format(cal.getTime()); return lastDayOfMonth; }