关于定时器实现自动整理数据的功能,加事物,效率可以提高100倍左右

/**
 * 
 * 类名称:TimerTask   
 * 类描述:定时器任务
 * 创建人:fsf
 * 创建时间:Aug 29, 2017 10:56:27 AM      
 * @version  V1.0
 *
 */
@Component
public class TimerTask {
    @Autowired
    private QuanJuBiaoDao quanJuBiaoDao;
    
    public QuanJuBiaoDao getQuanJuBiaoDao() {
        return quanJuBiaoDao;
    }
    public void setQuanJuBiaoDao(QuanJuBiaoDao quanJuBiaoDao) {
        this.quanJuBiaoDao = quanJuBiaoDao;
    }
    @Autowired
    private DataTableDao dataTableDao;
    
    public DataTableDao getDataTableDao() {
        return dataTableDao;
    }

    public void setDataTableDao(DataTableDao dataTableDao) {
        this.dataTableDao = dataTableDao;
    }
    @Autowired
    private OutSideClassDao outSideClassDao;
    public OutSideClassDao getOutSideClassDao() {
        return outSideClassDao;
    }
    public void setOutSideClassDao(OutSideClassDao outSideClassDao) {
        this.outSideClassDao = outSideClassDao;
    }
    @Autowired
    private UserInfoDao userInfoDao;
    
    public UserInfoDao getUserInfoDao() {
        return userInfoDao;
    }
    public void setUserInfoDao(UserInfoDao userInfoDao) {
        this.userInfoDao = userInfoDao;
    }
    @Autowired
    private MainUserDao mainUserDao;
    
    public MainUserDao getMainUserDao() {
        return mainUserDao;
    }
    public void setMainUserDao(MainUserDao mainUserDao) {
        this.mainUserDao = mainUserDao;
        
    }
    @Autowired
    private MainClassDao mainClassDao;
    
    public MainClassDao getMainClassDao() {
        return mainClassDao;
    }
    public void setMainClassDao(MainClassDao mainClassDao) {
        this.mainClassDao = mainClassDao;
    }
    @Autowired
    private DataChangeDao dataChangeDao;
    
    public DataChangeDao getDataChangeDao() {
        return dataChangeDao;
    }
    public void setDataChangeDao(DataChangeDao dataChangeDao) {
        this.dataChangeDao = dataChangeDao;
    }
    @Autowired
    private AvgScoreDao avgScoreDao;
    
    public AvgScoreDao getAvgScoreDao() {
        return avgScoreDao;
    }
    public void setAvgScoreDao(AvgScoreDao avgScoreDao) {
        this.avgScoreDao = avgScoreDao;
    }
/**
   * 每天00点30启动任务   看下面的那个
   */
  //@Scheduled(cron = "0 40 10 ? * *")
 @Transactional
  public void brushData()
  {
      System.out.println("job1 开始执行..."+new Date()+"执行了");
      *//**
       *准备工作,将用户表检验一遍,没有的添加过来 
       * *//*
      //1,查询出原数据库所有的用户
      List<UserInfo> listuser = userInfoDao.selectAllUserInfo();
      //2,对于userinfo进行循环,对比插入自己的数据库
      for(UserInfo ui:listuser){
          String username = mainUserDao.selectUserNameByIdStuNum(ui.getUser_num());
          if(username==null){
             MainUser mu = new MainUser();
             mu.setCheckState(1);
             MainClass mc = mainClassDao.selectClassIdByBianHaoAndYear(ui.getUser_oc_number());
             mu.setClassId(mc.getClassId());
             mu.setBeginYear(mc.getBeginYear());
             mu.setEmail(ui.getUser_email());
             mu.setIdNum(ui.getUser_idcard());
             mu.setRealName(ui.getUser_realname());//真实名字
             mu.setStudentNum(ui.getUser_num());
             mu.setUser_privilege(ui.getUser_privilege());
             mu.setUser_type(ui.getUser_type());
             mu.setUserName(ui.getUser_name());//用户名
             mu.setUserPwd("123456");
             if(ui.getUser_sex().equals("1")){
                    mu.setUserSex("男");
                }else{
                    mu.setUserSex("女");
                }
             mainUserDao.insertMainUser(mu);
          }
      }
      *//**
       * 准备工作一,先检测班级,检测班级是否存在
       * *//*
      //1,查询刷过来的数据里面所有的班级
      List<OutSideClass> listoc =outSideClassDao.selectAllOutSideClass();
      //2,将班级进行循环对比
      for(OutSideClass oc:listoc){
          String classname= mainClassDao.selectClassNameByBianHao(oc.getOc_number());
          if(classname==null){
              MainClass mc = new MainClass(); 
              mc.setBeginYear(oc.getOc_year());
              mc.setClassName(oc.getOc_name());
              mc.setClassNumber(oc.getOc_number());
              mc.setRegTime(oc.getOc_begintime());
              //根据原来的用户id查询用户名称
              String user_num = userInfoDao.selectUserStuNumByUserId(oc.getOc_teacher_id());
              //根据用户的工号查询用户当前的Id
              long teacherId = mainUserDao.selectUserIdByStuNum(user_num);
              mc.setTeacherId(teacherId);
              mc.setClassManagerId(teacherId);
              //如果为null,封装之后进行添加
              mainClassDao.insertMainClass(mc);
          }
      }
      *//**
       * 第一步查询上次的刷新时间发生的时间
       * *//*
      String shuaxinshijian=quanJuBiaoDao.selectValueByKey("shuaxinshijian");
      *//**
       * 第二步查询出上此刷新之后的数据集合
       * *//*
      List<DataTable> list = dataTableDao.selectAllDataTableByDate(shuaxinshijian);
      *//**
       * 第三部整理出集合,调用时间的存储过程
       * *//*
      for(DataTable dt:list){
        Integer integer=1;
          Double changeValue =dt.getDt_grade();//此次改变的分值
          long userId =dt.getDt_user_id();//用户的id
          String classId =dt.getDt_oc_id();
          String changReasondTitle ="";//变更原因标题
          String propertyName =dt.getDt_event_name();//变更的三级属性名称
          if(propertyName.equals("爱劳动")){}else{
          String changReasondes="";//变更原因描述
          String path = "";//图片的路径
          //根据三级属性调用
          XmlItem xi=XmlData.getMe().getByName(propertyName);
          long propertyValue =xi.getId();//添加的三级属性的id
          System.out.println(propertyValue);
          long changeSencondItemID=xi.getXmlItemParent().getId();//二级属性的id
          //根据二级属性调用
          XmlItem sencondxi=XmlData.getMe().getById(changeSencondItemID);
          //查询一级属性的id
        long changeFirstItemID=sencondxi.getXmlItemParent().getId();
          //根据班级id查询出班级的开始年份
          String oc_year=outSideClassDao.selectYearById(dt.getDt_oc_id());
          if(oc_year!=null){
              long termID =TermUtil.getMe(oc_year);//班级开始年份
              if(termID<=6){    
                  Map<String, Object> parms = new HashMap<String, Object>();
                  //用户id
                    parms.put("userIDParam", Long.valueOf(userId));
                    //班级id
                    parms.put("classIDParam", Long.valueOf(classId));
                    //学期
                    parms.put("termIDParam", termID);
                    //变更一级属性id
                    parms.put("firstFiveDataIDParam", changeFirstItemID);
                    //变更的一级属性成绩
                    parms.put("firstFiveDataDefaultValueParam", changeValue);
                    //变更的二级属性id
                    parms.put("secondDataIDParam", changeSencondItemID);
                    //二级属性的成绩变化量
                    parms.put("secondDefaultValueParam", changeValue);
                    //变更的3级属性id
                    parms.put("thirdDataIDParam", propertyValue);
                    //3级属性的分数变化量
                    parms.put("changeValueParam", changeValue);
                    //数据来源于哪个系统
                    parms.put("changeSourceParam", dt.getDt_system());
                    parms.put("checkStateParam", 0);//0是审核通过,1是未审核
                    //标题头
                    parms.put("changReasondTitleParam", changReasondTitle);
                    //描述
                    parms.put("changReasondesParam",changReasondes);
                    //返回值
                    parms.put("retValue", integer);
                    //返回值
                    parms.put("retChangeID",Long.valueOf(userId));
                    parms.put("changePic1Param", path);
                    parms.put("changePic2Param", path);
                    parms.put("changePic3Param", path);
                    parms.put("changePic4Param", path);
                    parms.put("changePic5Param", path);
              }
          }
         }
      }
      //for循环执行完之后,查询出数据库时间最大的一条数据,修改全局表的查询时间
      List<String> maxDate = dataTableDao.selectMaxDate();
      quanJuBiaoDao.updateValueByKey(maxDate.get(0));
      
  } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值