package com.unis.framework.common.util.orderNum;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author qingsong.han
 * @description: 生成单号
 * @create 2024-05-21 14:18
 */
public class OrderNumberUtil {

    /**
     * int 定长拼接-后缀顺序号
     *
     * @param length 总长度
     * @param param  参数
     * @return 参数前补0
     */
    public static String integerToString(int length, int param) {
        return String.format("%0" + length + "d", param);
    }

    /**
     * 主方法
     * 调用生成完整规则序号: 尾数+1的编号
     * @param length 位数必须大于0
     * @param xh 字符串
     * @return 尾数+1的编号
     */
    public synchronized static String initNum(int length, String xh) {
        // 初始化
        int num = 1;
        if (!StringUtils.isEmpty(xh)) {
            String substring = xh.substring(xh.length() - length);
            int i = Integer.parseInt(substring);
            if (i < maxNum(length))
                num += i;
        }
        return integerToString(length, num);
    }

    /**
     * 获取int位数的最大值:如6位->999999
     * @param length int位数
     * @return int
     */
    private static int maxNum(int length) {
        if (0 < length) {
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < length; i++) {
                builder.append(9);
            }
            return Integer.parseInt(builder.toString());
        }
        return 0;
    }

    public synchronized static String generateCode(List<String> stringList) {
        StringBuilder code = new StringBuilder();

        if (stringList != null && !stringList.isEmpty()) {
            for (String string : stringList) {
                code.append(string);
            }
        }else {
            return null;
        }
        return code.toString();
    }

}
