Package net.risesoft.service
Class AutoFormSequenceService
- java.lang.Object
-
- net.risesoft.service.AutoFormSequenceService
-
@Service @Transactional(value="rsTenantTransactionManager", readOnly=true) public class AutoFormSequenceService extends Object- Author:
- qinman, zhangchongjie
- Date:
- 2022/12/20
-
-
Constructor Summary
Constructors Constructor Description AutoFormSequenceService()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringcalculateSequence(int patternLength, int sequence)StringgenSequence(String tenantId, String labelName, String character)生成带有格式的序列号IntegergetSequence(String tenantId, String labelName, String character)获取序列号,并更新数据库表中的值,这里暂时没有考虑并发的情况,先实现了功能 对并发的处理有如下几种考虑: 1、使用jdbctemplate,在sql语句中设置锁的级别是Serializable 2、对每一个标签生成一个表,在程序中生成一个32位码并将其插入到数据表中,从数据表中查找该32位码对应的自增字段, 优点是记录当前的序列号是否被使用过,缺点是每个序列号都要一个数据表与之对应 3、使用mongdb的原子性操作voidupdateSequence(String tenantId, String labelName, String character)更新指定的序列号,执行加一操作
-
-
-
Method Detail
-
calculateSequence
public String calculateSequence(int patternLength, int sequence)
- Parameters:
patternLength- 要生成的总长度sequence- 序列号- Returns:
-
genSequence
public String genSequence(String tenantId, String labelName, String character)
生成带有格式的序列号- Parameters:
tenantId-labelName-- Returns:
-
getSequence
@Transactional public Integer getSequence(String tenantId, String labelName, String character)
获取序列号,并更新数据库表中的值,这里暂时没有考虑并发的情况,先实现了功能 对并发的处理有如下几种考虑: 1、使用jdbctemplate,在sql语句中设置锁的级别是Serializable 2、对每一个标签生成一个表,在程序中生成一个32位码并将其插入到数据表中,从数据表中查找该32位码对应的自增字段, 优点是记录当前的序列号是否被使用过,缺点是每个序列号都要一个数据表与之对应 3、使用mongdb的原子性操作- Parameters:
tenantId-labelName-- Returns:
-
-