package com.ylx.massage.utils; import com.ylx.common.core.redis.RedisCache; import org.apache.commons.lang3.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author jianlong * @date 2024-04-15 14:38 */ public class BillNoUtil { @Resource private RedisCache redisCache; public static final String NIGHT_FRAGRANCE_KEY_PREFIX = "NIGHT:codegenrator:"; /** * 从Redis中获取某种类型的自增值 * 生成规则 年(两位)+月(两位)+流水码(五位) * @param type * @return */ // public String getAutoNumber(String type) { // String autoKeyFlag = ""; //定义接收用于自增的value // String autoKey = type+"tableAutoKey"; // Boolean exists = redisCache.exists(autoKey); // long time = 2505600;//一个月时间 // if(exists) { // autoKeyFlag = String.valueOf(redisCache.incr(autoKey)); // }else { // redisService.set(autoKey, "0", "NX", "EX", time); // autoKeyFlag = String.valueOf(redisCache.incr(autoKey)); // } // DecimalFormat df = new DecimalFormat("00000"); // autoKeyFlag = df.format(Integer.parseInt(autoKeyFlag)); // autoKeyFlag = String.valueOf(new SimpleDateFormat("yyMM").format(new Date()))+autoKeyFlag; // return autoKeyFlag; // } //// //// public List fun() { //// return batchGenerateCode("JSIRTP", new SimpleDateFormat("yyMMdd"), 3, 4); //// } // /** * 批量获取Code * * @param prefix:业务场景,比如 PAYEE 表示收款 * @param sdf: 日期格式化方式,如 yyyyMMdd * @param batchNum: 批量生成多少条,如 1000条 * @param increaseFormatNum: 自增数格式化成多少位,如 5位 * @return 生成的编码列表, 如[] */ // public List batchGenerateCode(String prefix, DateFormat sdf, int batchNum, int increaseFormatNum) { // if (null == prefix || sdf == null || batchNum <= 0) { // return null; // } // //构造key // Date date = Calendar.getInstance().getTime(); // String formatDate = sdf.format(date); // String redisKey = new StringBuffer(NIGHT_FRAGRANCE_KEY_PREFIX).append(prefix).append(":").append(formatDate).toString(); // //批量生成no // Long finalNum = redisCache.incr(redisKey, batchNum); // //设置过期时间 // redisCache.expire(redisKey, DateUtils.getCurrent2TodayEndMillisTime() / SysConstant.ONE_THOUSAND); // //获取自增位格式化位数 // DecimalFormat df = new DecimalFormat(StringUtils.repeat("0", increaseFormatNum)); // // //构造结果 // List result = new ArrayList<>(batchNum); // for (long num = finalNum - batchNum + 1; num <= finalNum; num++) { // result.add(new StringBuffer(prefix).append(formatDate).append(df.format(num)).toString()); // } // return result; // } }