/**
* 公司培训课时汇总
* @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();
//保留两位小数
DecimalFormat df= new DecimalFormat("######0.00");
trainingClassGather.setAverageValue(String.valueOf(df.format(averageValue)));
}
//将每个部门12个月培训总时长放入实体类
trainingClassGather.setTotals(String.valueOf(twelveMonthTotal));
list.add(trainingClassGather);
}
}
return list;
}
/**
* 人均培训时长
* @return
*/
@Override
public Map<String,List> getAverageTrainingClass() {
//查询部门表获取所有部门名称和部门id
List<Dept>deptList=deptUserEmployeeUtil.getDeptList(AuthUtil.getTenantId());
Map<String,List>returnMap=new HashMap<>();
//部门名称列表
List<String>deptNameList=new ArrayList<>();
//人均课时列表
List<String>averageValueList=new ArrayList<>();
returnMap.put("deptNameList",deptNameList);
returnMap.put("averageValueList",averageValueList);
if(Func.isNotEmpty(deptList)){
String nowStartDate=getFirstDayOfMonth();//当月开始第一天
String nowEndDate=getLastDayOfMonth();//当月最后一天
for(Dept dept:deptList){
//查询每个部门该月的培训时长
String deptId=String.valueOf(dept.getId());
double sum=employeeTrainingRecordMapper.getTrainingRecordTotalByDeptId(deptId,"","",AuthUtil.getTenantId());
//根据部门id查询当前部门在职人数
List<AllEmployeeBasicInformation> deptUserSum= employeeTrainingRecordMapper.getDeptUserByDeptId(deptId,nowStartDate,nowEndDate,AuthUtil.getTenantId());
//计算部门员工培训时长平均值
double averageValue=0;
if(Func.isNotEmpty(deptUserSum)){
averageValue= sum/deptUserSum.size();
}
returnMap.get("deptNameList").add(dept.getDeptName());
//保留两位小数
DecimalFormat df= new DecimalFormat("######0.00");
returnMap.get("averageValueList").add(df.format(averageValue));
}
}
return returnMap;
}
/**
* 某个月份各个部门培训课时数
* @param moth 年月日格式
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public Map<String, List> getEachDeptTrainingClass(String moth) {
//查询部门表获取所有部门名称和部门id
List<Dept>deptList=deptUserEmployeeUtil.getDeptList(AuthUtil.getTenantId());
Map<String,List>returnMap=new HashMap<>();
//部门名称列表
List<String>deptNameList=new ArrayList<>();
//某个月份部门培训课时列表
List<String>totalTrainingList=new ArrayList<>();
returnMap.put("deptNameList",deptNameList);
returnMap.put("totalTrainingList",totalTrainingList);
if(Func.isNotEmpty(deptList)){
String startDate="";
String endDate="";
if(Func.isNotEmpty(moth)){
//日期转化格式
log.info("某个月份各个部门培训课时数moth======="+moth);
String findMoth=moth.replace("/","-");
String[]times=findMoth.split("-");
//获取指定日期年份
int year=Integer.valueOf(times[0]);
//获取指定日期月份
int mothOne=Integer.valueOf(times[1]);
//获取某年某月的第一天
startDate=getFisrtDayOfMonth(year,mothOne);
//获取某月的最后一天
endDate=getLastDayOfMonth(year,mothOne);
}else {
//moth为空获取当前月的第一天
startDate=getFirstDayOfMonth();
//获取当前月的最后一天
endDate=getLastDayOfMonth();
}
for(Dept dept:deptList){
//查询每个部门该月的培训时长
String deptId=String.valueOf(dept.getId());
double sum=employeeTrainingRecordMapper.getTrainingRecordTotalByDeptId(deptId,startDate,endDate,AuthUtil.getTenantId());
returnMap.get("deptNameList").add(dept.getDeptName());
//保留两位小数
DecimalFormat df= new DecimalFormat("######0.00");
returnMap.get("totalTrainingList").add(String.valueOf(df.format(sum)));
}
}
return returnMap;
}
/**
* 培训课时趋势图
* @return
*/
@Override
public Map<String, List> getTrainingClassTendencyPicture() {
Map<String,List>returnMap=new HashMap<>();
//月份列表
List<String>mothList=new ArrayList<>();
//每个月课时汇总list
List<String>eachMothTotalList=new ArrayList<>();
//每个月人均课时列表
List<String>mothAverageList=new ArrayList<>();
returnMap.put("mothList",mothList);
returnMap.put("mothAverageList",mothAverageList);
returnMap.put("eachMothTotalList",eachMothTotalList);
for(int i=1;i<=12;i++){
//获取该月第一天
String startDate=getFirstDayOfMonth(i);
//获取该月最后一天
String endDate=getLastDayOfMonth(i);
//获取公司该月培训总时长
double sum=employeeTrainingRecordMapper.getTrainingRecordTotalByDeptId("",startDate,endDate,AuthUtil.getTenantId());
//查询公司当前在职人数
int persons=employeeTrainingRecordMapper.getOnJobPerson(AuthUtil.getTenantId());
//计算公司该月平均培训课时
double averageValue=0;
if(Func.isNotEmpty(persons)){
averageValue=sum/persons;
}
//保留两位小数
DecimalFormat df= new DecimalFormat("######0.00");
returnMap.get("eachMothTotalList").add(String.valueOf(df.format(sum)));
returnMap.get("mothAverageList").add(String.valueOf(df.format(averageValue)));
switch (i) {
case 1:
returnMap.get("mothList").add("1月份");
break;
case 2:
returnMap.get("mothList").add("2月份");
break;
case 3:
returnMap.get("mothList").add("3月份");
break;
case 4:
returnMap.get("mothList").add("4月份");
break;
case 5:
returnMap.get("mothList").add("5月份");
break;
case 6:
returnMap.get("mothList").add("6月份");
break;
case 7:
returnMap.get("mothList").add("7月份");
break;
case 8:
returnMap.get("mothList").add("8月份");
break;
case 9:
returnMap.get("mothList").add("9月份");
break;
case 10:
returnMap.get("mothList").add("10月份");
break;
case 11:
returnMap.get("mothList").add("11月份");
break;
case 12:
returnMap.get("mothList").add("12月份");
break;
}
}
return returnMap;
}
/**
* 从1月份到现在
* 各个部门总培训课时数
* @return
*/
@Override
public Map<String, List> getEveryDeptClassTotal() {
//查询部门表获取所有部门名称和部门id
List<Dept>deptList=deptUserEmployeeUtil.getDeptList(AuthUtil.getTenantId());
Map<String,List>returnMap=new HashMap<>();
//部门名称列表
List<String>deptNameList=new ArrayList<>();
//部门培训课时汇总
List<String>totalValueList=new ArrayList<>();
returnMap.put("deptNameList",deptNameList);
returnMap.put("totalValueList",totalValueList);
if(Func.isNotEmpty(deptList)){
for(Dept dept:deptList){
//每个部门从1月份到现在培训课时总数
String deptId=String.valueOf(dept.getId());
//获取当前月份最后一天
String endDate=getLastDayOfMonth();
//获取部门从1月份到现在培训总课时
double sum=employeeTrainingRecordMapper.getTrainingRecordTotalByDeptId(deptId,"",endDate,AuthUtil.getTenantId());
returnMap.get("deptNameList").add(dept.getDeptName());
returnMap.get("totalValueList").add(String.valueOf(sum));
}
}
return returnMap;
}
/**
* 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();
}
/**
* 获取某年某月的第一天
* @Title:getFisrtDayOfMonth
* @Description:
* @param:@param year
* @param:@param month
* @param:@return
* @return:String
* @throws
*/
public String getFisrtDayOfMonth(int year,int month){
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR,year);
//设置月份
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;
}
/**
* 获取某月的最后一天
* @Title:getLastDayOfMonth
* @Description:
* @param:@param year
* @param:@param month
* @param:@return
* @return:String
* @throws
*/
public String getLastDayOfMonth(int year,int month){
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR,year);
//设置月份
cal.set(Calendar.MONTH, month-1);
//获取某月最大天数
int 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 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;
}