/**
* 生成申请号
* 最高隔离级别,不允许事务并发执行,而必须串行化执行,最安全,不可能出现更新、脏读、不可重复读、幻读,但是效率最低。
* 2017年03月06日 80002386方法说明:
* @return String 生成当前申请记录的申请号
*/
@Transactional(isolation = Isolation.SERIALIZABLE)
public synchronized String createApplyNo(int dataSize)
{
String applyNo = "";
try
{
String maxApplyNo = mdmsItemNameCoreDao.queryMaxApplyNo(APPLYNO);
//数据库中保存的最大值要加上这次生成的申请号的个数
Long maxTempApplyNo = Long.parseLong(maxApplyNo) + dataSize ;
String finalMaxApplyNo = String.valueOf(maxTempApplyNo);
mdmsItemNameCoreDao.updateMaxTempApplyNo(finalMaxApplyNo,APPLYNO);
//返回数据库的最大值加1;
applyNo = String.valueOf(Long.parseLong(maxApplyNo) + 1);
}
catch (Exception e)
{
logger.error("申请号生成失败",e);
throw new NovatarRuntimeException("申请号生成失败,请重试!");
}
return applyNo;
}
@Transactional(isolation = Isolation.SERIALIZABLE)最高隔离级别,不允许事务并发执行,而必须串行化执行,最安全,不可能出现更新、脏读、不可重复读、幻读,
最新推荐文章于 2024-06-15 11:43:33 发布