/**
* 公司培训课时汇总
* @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;
}