package com.ruoyi.common.utils;

import org.apache.commons.lang3.RandomStringUtils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 编码工具类
 */
public class CodeUtils {
    //获取区域编码
    public static String getAreaCode() {
        return getOrderNum("A");
    }

    /**
     * 获取管控对象编码
     *
     * @return
     */
    public static String getHazardCode() {
        return getOrderNum("H");
    }
    /**
     * 获取隐患编码
     *
     * @return
     */
    public static String getDangerCode() {
        return getOrderNum("D");
    }

    /**
     * 生成订单号（20位）：时间（精确到毫秒）+3位随机数
     */
    private static synchronized String getOrderNum(String start) {
        //时间（精确到毫秒）
        DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
        String localDate = LocalDateTime.now().format(ofPattern);
        //3位随机数
        String randomNumeric = RandomStringUtils.randomNumeric(3);
        String orderNum = localDate + randomNumeric;
        return (StringUtils.isNotBlank(start) ? start : "") + orderNum;
    }

    public static void main(String[] args) {
        System.out.println("CodeUtils.getDangerCode() = " + CodeUtils.getDangerCode());
    }
}
