| | |
| | | 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; |
| | |
| | | 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)) { |
| | |
| | | } 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("-", ""); |
| | |
| | | public static String getCompanyId() { |
| | | |
| | | SysUser user = ShiroUtils.getSysUser(); |
| | | if(null != user) return user.getCompanyId(); |
| | | if (null != user) return user.getCompanyId(); |
| | | return FrameworkConfig.getCompanyId(); |
| | | } |
| | | |
| | | public static String getLoginUserName() { |
| | | return ShiroUtils.getUserName() ; |
| | | SysUser user = ShiroUtils.getSysUser(); |
| | | return null == user ? "系统" : user.getUserName(); |
| | | } |
| | | |
| | | public static SysUser getLoginUser() { |
| | | return ShiroUtils.getSysUser(); |
| | | } |
| | | |
| | | public static String subDeptId(SysUser user) { |
| | | if (null == user) { |
| | | user = getLoginUser(); |
| | | } |
| | | |
| | | if (null == user) { |
| | | return getCompanyId() + "001"; |
| | | } |
| | | |
| | | //从全局获取,如果有则取全局的默认,如果没有则取自己所属 |
| | | if (null != contextUserDept.get(user.getLoginName())) { |
| | | return contextUserDept.get(user.getLoginName()); |
| | | } |
| | | |
| | | if (null == user.getDeptId()) { |
| | | return user.getCompanyId(); |
| | | } |
| | | return user.getDeptId().toString(); |
| | | } |
| | | |
| | | public static void updateSubDept(String userId, String deptId) { |
| | | 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); |
| | | } |
| | | } |