首页 > 技术文章 > 公司培训课时汇总

xianz666 2020-12-02 16:35 原文

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

  

推荐阅读