在業務邏輯層方面:
@Scheduled(cron="0 9 9 ? * MON-FRI")
public void pushScoreDataToClassTeacher(){
TaskVO tvo=new TaskVO();
List<TaskVO> list=scoreService.getScoreListTeacher(tvo);//得到所有有考勤班級的老師
for(TaskVO teacher:list){//遍歷教師
ScoreVO vo=new ScoreVO();
vo.setSchool_id(teacher.getSchool_id());//學校ID
vo.setScore_type(DictConstants.SCORE_TYPE_ATTEND);//考勤
vo.setTeam_type(DictConstants.TEAM_TYPE_CLASS);//教師考勤
vo.setScore_date(teacher.getScore_date());//扣分時間
//判斷該教師是否爲任課教師
if(DictConstants.DICT_TEACHER_CLASS.equals(teacher.getDuty())){//任課教師
vo.setTeam_id(teacher.getTeam_id());
ScoreVO score=dao.queryObject("scoreMap.getScore1", vo);//最新一條考勤信息
//計算實到人數
Integer actually=score.getTeam_count()-score.getCount();
float team_Cont = score.getTeam_count();
//計算出勤率
float rate=(actually/team_Cont)*100;
//用DecimalFormat 返回的是String格式的
DecimalFormat decimalFormat=new DecimalFormat(".00");//小數位數
String rateString=decimalFormat.format(rate);//返回的是字符串類型
//普通教師接收短信
if(score!=null)
messageService.sendMessage(teacher.getPhone(), MsgService.getMsg("MESSAGE_TEACHER_ATTEND",teacher.getTeam_name(),actually,rateString+"%",score.getCreate_date()));
}
}
}
//定時發送管理層教師短信
@Scheduled(cron="0 34 10 * * ?")
public void pushScoreDataToSchoolLayer() {
TaskVO tvo=new TaskVO();
List<TaskVO> list=scoreService.getScoreListSchoolLayer(tvo);//得到所有有考勤班級的老師
for (TaskVO layer:list) {
ScoreVO vo=new ScoreVO();
vo.setSchool_id(layer.getSchool_id());//學校ID
vo.setScore_type(DictConstants.SCORE_TYPE_ATTEND);//考勤
vo.setTeam_type(DictConstants.TEAM_TYPE_CLASS);//教師考勤
String time_attend=DateUtil.getNow("yyyy-MM-dd");
vo.setScore_date(time_attend);//統計時間
int count=dao.queryObject("scoreMap.getCountClass", vo);//得到今日考勤的班級
List<ScoreVO> slist=dao.queryForList("scoreMap.getAttendAmount", vo);
int actually=0;//統計班級的實到人數
int sum=0;//統計班級的總人數
for(ScoreVO svo:slist){//遍歷考勤的班級
actually=actually+(svo.getTeam_count()-svo.getCount());
sum=sum+svo.getTeam_count();
}
float sum_count=sum;
float rate=(actually/sum_count)*100;//出勤率
//用DecimalFormat 返回的是String格式的
DecimalFormat decimalFormat=new DecimalFormat(".00");//小數位數
String rateString=decimalFormat.format(rate);//返回的是字符串類型
String time=DateUtil.getNow("yyyy-MM-dd");//獲取系統時間
//管理層接收消息
if(count>0)
messageService.sendMessage("13735485749", MsgService.getMsg("MESSAGE_TEACHER_LEADER_ATTEND",count,actually,rateString+"%",time));
}
}
dao類:
//獲取有考勤的教師列表(推送)
public List<TaskVO> getScoreListTeacher(TaskVO vo){
vo.setScore_type(DictConstants.SCORE_TYPE_ATTEND);
vo.setTeam_type(DictConstants.TEAM_TYPE_CLASS);
String format="yyyy-MM-dd";
vo.setScore_date(DateUtil.getNow(format));
return dao.queryForList("scoreListMap.getScoreListList1",vo);
}