timer 公司内部用法

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




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值