jiazx0107
2025-11-30 87e5654c26476fabd1156023350d7726092af8c1
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
@@ -3,8 +3,8 @@
import com.ruoyi.common.config.FrameworkConfig;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.time.LocalDateTime;
@@ -22,16 +22,42 @@
    private static final AtomicLong sequence = new AtomicLong(0);
    private static String lastTimestamp = "";
    //全局用户实时坐在部门
    public static Map<String, String> contextUserDept = new HashMap<>();
    /**
     * 全局用于存放SN与组织编码的关系,例如分机SN和组织编码关系
     */
    public static Map<String, String> contextSnCompanyIdMap = new HashMap<>();
    /**
     * 生成顺序ID:年月日时分秒毫秒(17位) + 序列号(4位) = 21位
     */
    public static String generateId() {
        String pattern = "yyyyMMddHHmmssSSS";
        return generateId(null, pattern);
    }
    /**
     * 生成单据编码, (格式: yyyyMMddHHmmss + 4位随机数)
     * @param prefix
     * @return
     */
    public static String generateOrderId(String prefix) {
        String pattern = "yyyyMMddHHmmss";
        return generateId(prefix, pattern);
    }
    /**
     *
     *
     * @return
     */
    public static String generateId() {
        String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
    private static String generateId(String prefix, String pattern) {
        if (null == pattern) pattern = "yyyyMMddHHmmss";
        String currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
        long seq;
        synchronized (ContextUtil.class) {
            if (currentTimestamp.equals(lastTimestamp)) {
@@ -39,12 +65,14 @@
            } else {
                sequence.set(0);
                seq = 0;
                lastTimestamp = currentTimestamp;
            }
        }
        return String.format("%s%04d", currentTimestamp, seq);
        if (null == prefix) return String.format("%s%04d", currentTimestamp, seq);
        return prefix + "_" + String.format("%s%04d", currentTimestamp, seq);
    }
    public static String UUID() {
        return UUID.randomUUID().toString().replaceAll("-", "");
@@ -58,7 +86,7 @@
    public static String getCompanyId() {
        SysUser user = ShiroUtils.getSysUser();
        if(null != user) return user.getCompanyId();
        if (null != user) return user.getCompanyId();
        return FrameworkConfig.getCompanyId();
    }
@@ -95,4 +123,51 @@
        if (null == deptId) return;
        contextUserDept.put(userId, deptId);
    }
    /**
     * 获取顺序号
     * @param oldOrderId 原有顺序号
     * @param num 位数
     * @return
     */
    public static String getOrderId(String oldOrderId, Integer num) {
        Integer index3 = 1001;
        Integer index4 = 10001;
        Integer index5 = 100001;
        Integer index = 0;
        String orderId = "001";
        if (StringUtils.isNotEmpty(oldOrderId)) {
            index = Integer.valueOf(oldOrderId);
        }
        if (3 == num) {
            orderId = ((index3 + index) + "").substring(1);
        }
        if (4 == num) {
            orderId = ((index4 + index) + "").substring(1);
        }
        if (5 == num) {
            orderId = ((index5 + index) + "").substring(1);
        }
        return orderId;
    }
    /**
     * 存放SN与所属组织的关系
     *
     * @param sn
     * @param companyId
     */
    public static void addSerCompany(String sn, String companyId) {
        contextSnCompanyIdMap.put(sn, companyId);
    }
    /**
     * 通过SN获取当前SN所属的组织
     *
     * @param sn
     * @return
     */
    public static String getCompanyIdBySn(String sn) {
        return contextSnCompanyIdMap.get(sn);
    }
}