2017-03-21 5 views
0
`package com.example; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import javax.transaction.Transactional; 
import javax.transaction.Transactional.TxType; 

import org.springframework.beans.factory.annotation.Autowired; 

import org.springframework.scheduling.annotation.Async; 
import org.springframework.scheduling.annotation.EnableAsync; 
import org.springframework.scheduling.annotation.EnableScheduling; 
import org.springframework.scheduling.annotation.Scheduled; 
import org.springframework.stereotype.Service; 

import com.example.model.Fan; 
import com.example.model.Led; 
import com.example.model.Nutrient; 
import com.example.model.Water; 
import com.example.service.FanScheduleService; 
import com.example.service.FanService; 
import com.example.service.LedScheduleService; 
import com.example.service.LedService; 
import com.example.service.NutrientScheduleService; 
import com.example.service.NutrientService; 
import com.example.service.WaterScheduleService; 
import com.example.service.WaterService; 


@EnableScheduling 
@Service 
//cron = "${scheduling.job.cron}" 
public class ScheduleJob { 
    @Scheduled(fixedDelay=500,initialDelay=500) 

    public void run() throws ParseException { 
     LedSchedule(); 
     FanSchedule(); 
     NutrientSchedule(); 
     WaterSchedule(); 

    } 
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    @Autowired 
    private FanService fanService; 
    @Autowired 
    private FanScheduleService fanScheduleService; 
    @Autowired 
    private LedService ledService; 
    @Autowired 
    private LedScheduleService ledScheduleService; 
    @Autowired 
    private NutrientService nutrientService; 
    @Autowired 
    private NutrientScheduleService nutrientScheduleService; 
    @Autowired 
    private WaterService waterService; 
    @Autowired 
    private WaterScheduleService waterScheduleService; 

    public void FanSchedule() throws ParseException{ 
     boolean test = true; 
     Date start = null; 
     Date end = null; 
     Fan fan = new Fan(); 
     for (int i = 0; i < fanScheduleService.findAll().size(); i++) { 
      String start_date = fanScheduleService.findAll().get(i).getFan_activestartdate(); 
      String end_date = fanScheduleService.findAll().get(i).getFan_activeenddate(); 
      start = dateFormat.parse(start_date); 
      end = dateFormat.parse(end_date); 

      fan = fanService.findById(fanScheduleService.findAll().get(i).getFan().getFan_id()); 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       test = true; 
      } else if(end.before(new Date())) { 
       test = false; 
       } 
     } 
     while(test==true){ 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       fan.setFan_status(true); 

      }else{ 
       fan.setFan_status(false); 

      } 

      try { 
       fanService.update(fan); 

      } catch (Exception e) { 
       System.out.println(e.getMessage()); 
      } 
      break; 
     } 
    } 

    public void LedSchedule() throws ParseException{ 
     boolean test = true; 
     Date start = null; 
     Date end = null; 
     Led led = new Led(); 
     for (int i = 0; i < ledScheduleService.findAll().size(); i++) { 
      String start_date = ledScheduleService.findAll().get(i).getLed_activestartdate(); 
      String end_date = ledScheduleService.findAll().get(i).getLed_activeenddate(); 
      start = dateFormat.parse(start_date); 
      end = dateFormat.parse(end_date); 

      led = ledService.findById(ledScheduleService.findAll().get(i).getLed().getLed_id()); 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       test = true; 

      } else if(end.before(new Date())) { 
       test = false; 
       } 
     } 
     while(test==true){ 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       led.setLed_status(true); 

      }else{ 
       led.setLed_status(false); 

      } 

      try { 
       ledService.update(led); 

      } catch (Exception e) { 

       System.out.println(e.getMessage()); 
      } 
      break; 
     } 
    } 

    public void NutrientSchedule() throws ParseException{ 
     boolean test = true; 
     Date start = null; 
     Date end = null; 
     Nutrient nutrient = new Nutrient(); 
     for (int i = 0; i < nutrientScheduleService.findAll().size(); i++) { 
      String start_date = nutrientScheduleService.findAll().get(i).getNutrient_activestartdate(); 
      String end_date = nutrientScheduleService.findAll().get(i).getNutrient_activeenddate(); 
      start = dateFormat.parse(start_date); 
      end = dateFormat.parse(end_date); 

      nutrient = nutrientService.findById(nutrientScheduleService.findAll().get(i).getNutrient().getNutrient_id()); 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       test = true; 
      } else if(end.before(new Date())) { 
       test = false; 
       } 
     } 
     while(test==true){ 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       nutrient.setNutrient_status(true); 

      }else{ 
       nutrient.setNutrient_status(false); 

      } 
      try { 
       nutrientService.update(nutrient); 

      } catch (Exception e) { 

       System.out.println(e.getMessage()); 
      } 
      break; 
     } 
    } 

    public void WaterSchedule() throws ParseException{ 
     boolean test = true; 
     Date start = null; 
     Date end = null; 
     Water water = new Water(); 
     for (int i = 0; i < waterScheduleService.findAll().size(); i++) { 
      String start_date = waterScheduleService.findAll().get(i).getWater_activestartdate(); 
      String end_date = waterScheduleService.findAll().get(i).getWater_activeenddate(); 
      start = dateFormat.parse(start_date); 
      end = dateFormat.parse(end_date); 

      water = waterService.findById(waterScheduleService.findAll().get(i).getWater().getWater_id()); 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       test = true;  
      } else if(end.before(new Date())) { 
       test = false; 
       } 
     } 
     while(test==true){ 
      if (start.before(new Date()) == true && end.after(new Date())==true) { 
       water.setWater_status(true); 

      }else{ 
       water.setWater_status(false); 

      } 
      try { 
       waterService.update(water); 

      } catch (Exception e) { 

       System.out.println(e.getMessage()); 
      } 
      break; 

こんにちは。私はSpringブートとスケジューラを使用して自分のデータベース内の何かを更新しようとしています。以下のコードFanSchedule()はとてもうまく動作します。しかし、他の方法は正しく動作しません。私はそれらの状態をtrueに設定しようとしています。しかし、時にはそれらの状態が5秒間違いに変わり、真に戻ってしまう。この問題は本当にありがとうございます。スプリングブート+ jpa +スケジューラ

MORE

Hibernate: update waterpump_device set temp_max=?, name=?, status=? where id=? 
Hibernate: update led_device set name=?, status=?, temp_min=? where id=? 
Hibernate: update nutrientpump_device set name=?, status=? where id=? 

だけのファンがHibernateが更新されません。私は、Hibernateがそれらのステータスをfalseに変更すると更新すると思いますか?

+0

@Transactionalをrun()に追加しようとしましたか? –

+0

@zakariaamine私はすでにそれを追加しますが、機能しません。同じように私は削除 –

答えて

関連する問題