package com.nbport.zgwl.contractlaunch.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 合同编号工具
 *
 * contractSysId：本系统合同唯一标识，格式 CLS-yyyyMMddHHmmss-随机4位
 * contractCode：业务合同编号，格式 合同类型编码-yyyyMMdd-随机4位（如 MM-20260522-1234）
 */
public final class ContractLaunchCodeUtils {

    private ContractLaunchCodeUtils() {
    }

    /** 生成合同系统唯一编码（CLS-时间戳-随机4位） */
    public static String buildContractSysId() {
        return "CLS-" + formatNow("yyyyMMddHHmmss") + "-" + randomDigits(4);
    }

    /** 生成业务合同编号（合同类型编码-日期-随机4位，如 MM-20260522-1234） */
    public static String buildContractCode(String contractTypeCode) {
        String typeCode = contractTypeCode == null || contractTypeCode.isBlank()
                ? "QT"
                : contractTypeCode;
        return typeCode + "-" + formatNow("yyyyMMdd") + "-" + randomDigits(4);
    }

    private static String formatNow(String pattern) {
        return new SimpleDateFormat(pattern).format(new Date());
    }

    private static String randomDigits(int length) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < length; i++) {
            builder.append(ThreadLocalRandom.current().nextInt(10));
        }
        return builder.toString();
    }
}
