定時發送消息任務

在業務邏輯層方面:

   @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);
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章