公司培训课时汇总

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

  

posted @ 2020-12-14 16:44  红尘沙漏  阅读(133)  评论(0编辑  收藏  举报