员工培训课时达成率导出

/**
	 * 员工培训课时达成率导出
	 * @param response
	 * @param startDate
	 * @param endDate
	 */
	@Override
	public void exportTrainingRecord(HttpServletResponse response, String startDate, String endDate) {
		startDate+="-01";
		endDate+="-31";
		//获取工号,部门名称,入职时间,员工姓名,员工基本信息表左联用户表,查找在结束日期之前入职的人员
		List<AllEmployeeBasicInformation> employeeList=employeeTrainingRecordMapper.getEmployeeMsg(AuthUtil.getTenantId(),"");
		log.info("获取工号,部门名称,入职时间,员工姓名,employeeList======"+employeeList);
		//要导出的list
		List<ExcelTrainingRecord> excelList=new ArrayList<>();
		if(Func.isNotEmpty(employeeList)){
			for(AllEmployeeBasicInformation basicInfo:employeeList){
				ExcelTrainingRecord excelTrainingRecord=new ExcelTrainingRecord();
				//获取员工培训记录时长,根据开始和结束时间区间
				double sum=employeeTrainingRecordMapper.getEmployeeTrainingHours(AuthUtil.getTenantId(),startDate,endDate,basicInfo.getAccount());
				//员工是否在开始时间年之后年份入职
				String[]dates=startDate.split("-");
				String entryDate=basicInfo.getEntryDate();
				String[]entryDates=entryDate.split("-");
				String[]endTimes=endDate.split("-");
				//开始日期月份
				int startMoth=Integer.parseInt(dates[1]);
				//结束日期月份
				int endMoth=Integer.parseInt(endTimes[1]);
				double hours=0;
				if(dates[0].equals(entryDates[0])){
					//员工是在开始时间年份入职
					//获取月份
					int entryMoth= Integer.parseInt(entryDates[1]);
					//如果入职月份大于等于开始月份
					if(entryMoth>=startMoth){
						//计算入职月份应参加课时数
						int dat=Integer.parseInt(entryDates[2]);
						if(dat==30){
							hours=(6.7/30)*1;
						}else if(dat==31){
							hours=(6.7/30)*2;
						}else {
							hours=(6.7/30)*(30-dat);
						}
						//计算其他月份的培训课时
						if((endMoth-entryMoth)>=1){
							hours+=6.7*(endMoth-entryMoth);
						}
					}else{
						//如果入职年份小于开始年份
						hours=(endMoth-startMoth+1)*6.7;
					}
				}else{
					//在开始日期之前入职的
					hours=(endMoth-startMoth+1)*6.7;

				}
				//判断是否达标
				if((sum/hours)>=1){
					excelTrainingRecord.setIsAccomplish("是");
				}else {
					excelTrainingRecord.setIsAccomplish("否");
				}
				//保留两位小数
				DecimalFormat df= new DecimalFormat("######0.00");
				double msg=0;
				if(hours!=0){
					msg=(sum/hours)*100;
				}
				String achievingRate=String.valueOf(df.format(msg))+"%";
				excelTrainingRecord.setAchievingRate(achievingRate);
				//应参加课时数
				excelTrainingRecord.setTakePartInHours(String.valueOf(df.format(hours)));
				//实际参加课时数
				excelTrainingRecord.setPracticalTakePartInHours(String.valueOf(sum));
				//入职日期
				excelTrainingRecord.setEntryDate(basicInfo.getEntryDate());
				//姓名
				excelTrainingRecord.setRealName(basicInfo.getRealName());
				//部门名称
				excelTrainingRecord.setDepartment(basicInfo.getDepartment());
				excelList.add(excelTrainingRecord);
			}
		}
		log.info("员工培训课时达成率导出excelList========"+excelList);
		ExcelUtil.export(response, "员工"+startDate+"——"+endDate+"培训课时达成率"+ DateUtil.time(), "员工培训课时达成率导出", excelList, ExcelTrainingRecord.class);
	}

  

上一篇:Linux 进程间通讯方式 pipe()函数 (转载)


下一篇:django 记一次数据库文件下载excel