14,redis 生成唯一的编号

import com.sd.platform.common.utils.DateHelper;
import com.sd.platform.common.utils.StringHelper;
import com.sd.platform.redisutils.enums.EnumBill;
import java.util.Date;

public class BillRedis {
    private static final String key = "pf_bill_no";
    private static final String idKey = "pf_bill_id";
    private static Long timeOut = 60 * 60 * 24L;
    /**
     * 生成单据编号
     * @param companyCode 公司代号
     * @param bill 单据类型
     * @return
     */
    public static String generateNo(String companyCode, EnumBill bill){
        return generateNo(companyCode, bill, null);
    }

    /**
     * 生成单据编号
     * @param companyCode 公司代号
     * @param bill  单据类型
     * @param date 日期
     * @return
     */
    public static String generateNo(String companyCode, EnumBill bill, Date date){
        if(date == null){
            date = DateHelper.now();
        }
        String redisKey = String.format("%s_%s_%s_%s", key, companyCode, bill.toString(), DateHelper.formatDate(date, "yyyyMMdd"));
        Long id = RedisUtil.incr(redisKey, 1L);
     RedisUtil.expire(key, timeOut);
        String billNo = DateHelper.formatDate(date, "yyyyMMdd") + StringHelper.padLeft(id.toString(), "0", 6);
        return billNo;
    }

    /**
     * 获取单据ID
     * @param companyCode
     * @param bill
   * @return
     */
    public static Long generateId(String companyCode, EnumBill bill){
        String redisKey = String.format("%s_%s_%s", idKey, companyCode, bill.toString());
        Long id = RedisUtil.incr(redisKey, 1L);
        return id;
       }
}
            





猜你喜欢

转载自blog.csdn.net/weixin_34274029/article/details/90849457
今日推荐