init中
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
//创建 线程
Timer timer = new Timer();
timer.schedule(new ReinitializationSerialNumber(wac), getDayTime(),24 * 60 * 60 * 1000);
public Date getDayTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}
继承TimerTask创建类
package gts.erp.timer;
import gts.erp.service.ERPUtilServiceImpl;
import java.util.TimerTask;
import org.springframework.web.context.WebApplicationContext;
public class ReinitializationSerialNumber extends TimerTask{
private WebApplicationContext wac;
public ReinitializationSerialNumber(WebApplicationContext wac) {
this.wac = wac;
}
public void run() {
ERPUtilServiceImpl erpUtilServiceImpl = (ERPUtilServiceImpl)wac.getBean("erpUtilService");
erpUtilServiceImpl.reinitializationSerialNumber();
}
}
public void reinitializationSerialNumber() {
// 读取数据 --> TN_SERIAL_NUMBER
TableBean serialNumberTablebean = new TableBean();
serialNumberTablebean = this.getBaseDAO().queryForTableBean(new ClassPOJO("TN_SERIAL_NUMBER"));
// CN_CYCLE_FLAG 是否 年
boolean isYear = isYearStart();
// CN_CYCLE_FLAG 是否 月
boolean isMonth = isMonthStart();
// CN_CYCLE_FLAG 是否 周
boolean isWeek = isWeekStart();
//定义 更新的TableBean
TableBean updateTableBean = new TableBean("TN_SERIAL_NUMBER");
//说明该TableBean 是用于更新
updateTableBean.setDbTableDataOperationId(TriangleDefinition.DATABASE_TABLE_DATA_OPERATION_UPDATE);
for (int i = 0; i < serialNumberTablebean.size(); i++) {
RowBean rowBean = serialNumberTablebean.get(i);
String cycleFlag = rowBean.getCellBeanValue("CR_CYCLE_FLAG");
//类型是年 且当前日期符合 将rowBean添加到TableBean中
if (ERPDefinition.LOOKUP_SERIAL_NUMBER_CYCLE_YEAR.equals(cycleFlag) && isYear) {
rowBean.setCellBeanValue("CN_SN", "0");
updateTableBean.addRowBean(rowBean);
} else if (ERPDefinition.LOOKUP_SERIAL_NUMBER_CYCLE_MONTH.equals(cycleFlag) && isMonth) {
rowBean.setCellBeanValue("CN_SN", "0");
updateTableBean.addRowBean(rowBean);
} else if (ERPDefinition.LOOKUP_SERIAL_NUMBER_CYCLE_WEEK.equals(cycleFlag) && isWeek) {
rowBean.setCellBeanValue("CN_SN", "0");
updateTableBean.addRowBean(rowBean);
} else if (ERPDefinition.LOOKUP_SERIAL_NUMBER_CYCLE_DAY.equals(cycleFlag)) {
rowBean.setCellBeanValue("CN_SN", "0");
updateTableBean.addRowBean(rowBean);
}
}
this.getBaseDAO().saveOrUpdateTableBean(updateTableBean);
}
应用
* 根据key cycleFlag(周期标志) 查询流水号
* 存在 根据key 更新流水号
* 不存在 插入
* @param String key,String cycleFlag(周期性标志)
* @return returnData 流水号
*/
public synchronized String getSerialNumber(String key, int cycleFlag) {
String currentTime = String.valueOf(ERPBLHelper.getCurrentTime());
String sn_default = "1";
String returnData = sn_default;
try {
CondSetBean csb = new CondSetBeanJustAnd();
csb.addCondBean(new CondBeanEqual("CN_NAME", key));
csb.addCondBean(new CondBeanEqual("CR_CYCLE_FLAG", String.valueOf(cycleFlag)));
FormBean serialNumberFB = this.getBaseDAO().queryForFormBean(new ClassPOJO("TN_SERIAL_NUMBER"), csb);
if (serialNumberFB != null && serialNumberFB.size() > 0) {
returnData = String.valueOf(Long.parseLong(serialNumberFB.getCellBeanValue("CN_SN")) + 1);
serialNumberFB.setCellBeanValue("CN_SN", returnData);
} else {
// 得到一个默认管理员的ID
CondSetBean csbUser = new CondSetBeanJustAnd();
csbUser.addCondBean(new CondBeanEqual("CR_TYPE_ID", TriangleDefinition.USER_TYPE_ADMIN_META));
TableBean userTableBean = this.getBaseDAO().queryForTableBean(new ClassPOJO("ST_USER"), csbUser);
String userId = userTableBean.get(0).getCellBeanValue(TriangleDefinition.COLUMN_NAME_CN_ID);
serialNumberFB = new FormBean("TN_SERIAL_NUMBER");
serialNumberFB.addCellBean(new CellBean("CN_NAME", key));
serialNumberFB.addCellBean(new CellBean("CR_CYCLE_FLAG", String.valueOf(cycleFlag)));
serialNumberFB.addCellBean(new CellBean("CN_SN", sn_default));
serialNumberFB.addCellBean(new CellBean("CR_CREATE_USER_ID", userId));
serialNumberFB.addCellBean(new CellBean("CN_CREATE_DATETIME", currentTime));
serialNumberFB.addCellBean(new CellBean("CR_MODIFY_USER_ID", userId));
serialNumberFB.addCellBean(new CellBean("CN_MODIFY_DATETIME", currentTime));
}
this.getBaseDAO().saveOrUpdateFormBean(serialNumberFB);
} catch (Exception e) {
TriangleBLHelper.printExceptionLog(log, e);
e.printStackTrace();
throw new RuntimeException("**** Run time Exception!****");
}
return returnData;
}