Skip to content

Commit

Permalink
添加定时任务表,进行定时状态修改
Browse files Browse the repository at this point in the history
  • Loading branch information
tendy committed Sep 28, 2017
1 parent 4fb40b0 commit d7af4ff
Show file tree
Hide file tree
Showing 7 changed files with 355 additions and 5 deletions.
38 changes: 38 additions & 0 deletions src/main/java/com/eroom/web/constants/TaskRunningConstants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.eroom.web.constants;

/**
* Created by tendy on 2017/9/28.
*/
public class TaskRunningConstants {

public static class Table{
public final static String ROOM_BOOK = "room_book";
}

public static class Column{
public final static String APPLY_STATE = "apply_state";
}

public static class State{
/**
* 待执行
*/
public final static String WAITING = "01";
/**
* 已执行
*/
public final static String FINISH = "02";
/**
* 执行未处理
*/
public final static String THROW = "03";
/**
* 删除
*/
public final static String DELETE = "09";
/**
* 失败
*/
public final static String FAIL = "04";
}
}
57 changes: 57 additions & 0 deletions src/main/java/com/eroom/web/dao/task/TaskRunningDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.eroom.web.dao.task;

import com.eroom.web.constants.TaskRunningConstants;
import com.eroom.web.dao.BaseDao;
import com.eroom.web.entity.po.TaskRunning;
import com.eroom.web.utils.util.DateUtil;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Repository
public class TaskRunningDao extends BaseDao {

/**
* 获取需要执行的数据
* @return TaskRunning
* @throws Exception
* @author tendy
*/
public List<TaskRunning> getTaskRunningList() throws Exception {
StringBuilder hql = new StringBuilder();
hql.append("from TaskRunning where state = :state and changeTime <= :changeTime order by createTime desc");

Map<String, Object> params = new HashMap<String, Object>();
params.put("state", TaskRunningConstants.State.WAITING);
params.put("changeTime", DateUtil.getCurrentDate());

List<TaskRunning> list = this.getList(hql.toString(), params);
if(CollectionUtils.isEmpty(list)){
return null;
}
return list;
}

/**
* 获取用户支付订单
*
* @return PayOrder
* @throws Exception
* @author tendy
*/
public int updateDataBySql(TaskRunning taskRunning) throws Exception {
StringBuilder sql = new StringBuilder();
Map<String, Object> params = new HashMap<String, Object>();
sql.append("update "+taskRunning.getTable()+" set "+taskRunning.getColumn()+" = (case when "+taskRunning.getColumn()+"=:origin then :value else :origin1 end) where "+taskRunning.getMainColumn()+" = :id");
params.put("origin", taskRunning.getOrigin());
params.put("value", taskRunning.getNewValue());
params.put("origin1", taskRunning.getOrigin());
params.put("id", taskRunning.getMainId());
int num = this.executeUpdateSql(sql.toString(), params);
return num;
}

}
2 changes: 1 addition & 1 deletion src/main/java/com/eroom/web/entity/po/RoomRent.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
* RoomRent generated by hbm2java
*/
@Entity
@Table(name = "t_room_rent", catalog = "eroom")
@Table(name = "room_rent", catalog = "eroom")
public class RoomRent implements java.io.Serializable {

private Long rentId;
Expand Down
203 changes: 203 additions & 0 deletions src/main/java/com/eroom/web/entity/po/TaskRunning.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
package com.eroom.web.entity.po;

import javax.persistence.*;
import java.util.Date;

/**
* Created by tendy on 2017/9/28.
*/
@Entity
@Table(name = "task_running", schema = "eroom", catalog = "")
public class TaskRunning {
private int id;
private String table;
private String column;
private String origin;
private String newValue;
private Date changeTime;
private Date createTime;
private String remark;
private String mainColumn;
private long mainId;
private String state;
private Date updateTime;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

@Basic
@Column(name = "table")
public String getTable() {
return table;
}

public void setTable(String table) {
this.table = table;
}

@Basic
@Column(name = "column")
public String getColumn() {
return column;
}

public void setColumn(String column) {
this.column = column;
}

@Basic
@Column(name = "origin")
public String getOrigin() {
return origin;
}

public void setOrigin(String origin) {
this.origin = origin;
}

@Basic
@Column(name = "new_value")
public String getNewValue() {
return newValue;
}

public void setNewValue(String newValue) {
this.newValue = newValue;
}

@Basic
@Column(name = "change_time")
public Date getChangeTime() {
return changeTime;
}

public void setChangeTime(Date changeTime) {
this.changeTime = changeTime;
}

@Basic
@Column(name = "create_time")
public Date getCreateTime() {
return createTime;
}

public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

@Basic
@Column(name = "remark")
public String getRemark() {
return remark;
}

public void setRemark(String remark) {
this.remark = remark;
}

@Basic
@Column(name = "main_column")
public String getMainColumn() {
return mainColumn;
}

public void setMainColumn(String mainColumn) {
this.mainColumn = mainColumn;
}

@Basic
@Column(name = "main_id")
public long getMainId() {
return mainId;
}

public void setMainId(long mainId) {
this.mainId = mainId;
}

@Basic
@Column(name = "state")
public String getState() {
return state;
}

public void setState(String state) {
this.state = state;
}

@Basic
@Column(name = "update_time")
public Date getUpdateTime() {
return updateTime;
}

public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

TaskRunning that = (TaskRunning) o;

if (id != that.id) return false;
if (mainId != that.mainId) return false;
if (table != null ? !table.equals(that.table) : that.table != null) return false;
if (column != null ? !column.equals(that.column) : that.column != null) return false;
if (origin != null ? !origin.equals(that.origin) : that.origin != null) return false;
if (newValue != null ? !newValue.equals(that.newValue) : that.newValue != null) return false;
if (changeTime != null ? !changeTime.equals(that.changeTime) : that.changeTime != null) return false;
if (createTime != null ? !createTime.equals(that.createTime) : that.createTime != null) return false;
if (remark != null ? !remark.equals(that.remark) : that.remark != null) return false;
if (mainColumn != null ? !mainColumn.equals(that.mainColumn) : that.mainColumn != null) return false;
if (state != null ? !state.equals(that.state) : that.state != null) return false;
if (updateTime != null ? !updateTime.equals(that.updateTime) : that.updateTime != null) return false;

return true;
}

@Override
public int hashCode() {
int result = id;
result = 31 * result + (table != null ? table.hashCode() : 0);
result = 31 * result + (column != null ? column.hashCode() : 0);
result = 31 * result + (origin != null ? origin.hashCode() : 0);
result = 31 * result + (newValue != null ? newValue.hashCode() : 0);
result = 31 * result + (changeTime != null ? changeTime.hashCode() : 0);
result = 31 * result + (createTime != null ? createTime.hashCode() : 0);
result = 31 * result + (remark != null ? remark.hashCode() : 0);
result = 31 * result + (mainColumn != null ? mainColumn.hashCode() : 0);
result = 31 * result + (int) (mainId ^ (mainId >>> 32));
result = 31 * result + (state != null ? state.hashCode() : 0);
result = 31 * result + (updateTime != null ? updateTime.hashCode() : 0);
return result;
}

@Override
public String toString() {
return "TaskRunning{" +
"id=" + id +
", table='" + table + '\'' +
", column='" + column + '\'' +
", origin='" + origin + '\'' +
", newValue='" + newValue + '\'' +
", changeTime=" + changeTime +
", createTime=" + createTime +
", remark='" + remark + '\'' +
", mainColumn='" + mainColumn + '\'' +
", mainId=" + mainId +
", state='" + state + '\'' +
", updateTime=" + updateTime +
'}';
}
}
49 changes: 46 additions & 3 deletions src/main/java/com/eroom/web/task/BookingCheckTask.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.eroom.web.task;

import com.eroom.web.constants.TaskRunningConstants;
import com.eroom.web.dao.rent.RoomBookDao;
import com.eroom.web.dao.task.TaskRunningDao;
import com.eroom.web.entity.po.TaskRunning;
import com.eroom.web.utils.util.CollectionUtil;
import com.eroom.web.utils.util.DateUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Expand All @@ -9,6 +13,7 @@

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@Component
public class BookingCheckTask {
Expand All @@ -18,6 +23,9 @@ public class BookingCheckTask {
@Resource
private RoomBookDao roomBookDao;

@Resource
private TaskRunningDao taskRunningDao;


/**
* 每天晚上12点检查用户预约是否到期
Expand All @@ -35,10 +43,41 @@ public void checkBooking() {
}

/**
* 每5分钟定时扫描数据库数据进行预约订单状态修改
* 每5分钟定时扫描任务表查找需要更新的数据
*/
public void checkBookingState(){

@Scheduled(cron = "59 59 23 ? * *")
public void checkTaskRunnning(){
List<TaskRunning> list = null;
try {
list = taskRunningDao.getTaskRunningList();
} catch (Exception e) {
logger.error("BookingCheckTask.checkBookingState 定时任务执行异常 error:"+e.toString());
}
if(CollectionUtil.isEmpty(list)){
return;
}
for(TaskRunning item : list){
try {
int num = taskRunningDao.updateDataBySql(item);
if(num > 0){
item.setState(TaskRunningConstants.State.FINISH);
}else{
item.setState(TaskRunningConstants.State.THROW);
}
taskRunningDao.update(item);
logger.info("BookingCheckTask.checkBookingState 单个任务执行成功 taskRunning:"+item.toString());
} catch (Exception e) {
item.setState(TaskRunningConstants.State.FAIL);
try {
taskRunningDao.update(item);
} catch (Exception e1) {
e1.printStackTrace();
logger.error("BookingCheckTask.checkBookingState 更新定时任务异常 taskRunning:"+item.toString()+" error:"+e.toString());
}
e.printStackTrace();
logger.error("BookingCheckTask.checkBookingState 单个任务执行异常 taskRunning:"+item.toString()+" error:"+e.toString());
}
}
}

/**
Expand All @@ -49,4 +88,8 @@ public void checkBookingState(){
* 定时扫描数据库数据进行租房订单状态修改
*/

/**
* 每5分钟定时扫描数据库数据进行预约订单状态修改
*/

}
Loading

0 comments on commit d7af4ff

Please sign in to comment.