From 98d925ee9e40ccffed46f9000ae4f066aa99776b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 15 四月 2026 09:40:26 +0800
Subject: [PATCH] ``` refactor(energy): 优化实时能耗数据服务实现
---
src/main/java/com/ruoyi/common/utils/OrderUtils.java | 95 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 95 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/OrderUtils.java b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
index 2364bf9..9857ee9 100644
--- a/src/main/java/com/ruoyi/common/utils/OrderUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
@@ -13,6 +13,7 @@
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -20,6 +21,50 @@
* @date : 2025/9/15 15:31
*/
public class OrderUtils {
+
+ /**
+ * List<Integer> 杞崲涓� Long[] 鏁扮粍
+ * @param ids
+ * @return
+ */
+ public static Long[] listIntegerToLongArray(List<Integer> ids) {
+ return ids.stream()
+ // 澶勭悊null鍊硷細濡傛灉鍏冪礌涓簄ull锛岃浆鎹负0L锛堝彲鏍规嵁涓氬姟璋冩暣锛屾瘮濡傛姏寮傚父锛�
+ .map(id -> id != null ? id.longValue() : -1L)
+ // 灏哠tream<Long>杞崲涓篖ong[]鏁扮粍
+ .toArray(Long[]::new);
+ }
+
+ /**
+ * 鍒ゆ柇鐩爣id鏄惁鍦ㄩ�楀彿鍒嗛殧鐨勫瓧绗︿覆涓�
+ * @param targetId
+ * @param str
+ * @return
+ */
+ public boolean isStaffIdExist(Object targetId,String str) {
+ // 绌哄�兼牎楠岋紝閬垮厤绌烘寚閽�
+ if (str == null || str.trim().isEmpty() || targetId == null) {
+ return false;
+ }
+ // 鎸夐�楀彿鍒嗗壊鎴愭暟缁�
+ String[] idArray = str.split(",");
+ // 閬嶅巻鏁扮粍鍒ゆ柇鏄惁鍖呭惈鐩爣id
+ for (String id : idArray) {
+ // 鍘婚櫎绌烘牸锛堥槻姝㈠瓧绗︿覆涓湁澶氫綑绌烘牸锛屽"1, 121"锛�
+ String cleanId = id.trim();
+ // 杞崲涓烘暟瀛楀苟姣旇緝
+ try {
+ if (cleanId.equals(String.valueOf(targetId))) {
+ return true;
+ }
+ } catch (NumberFormatException e) {
+ // 鑻ュ瓨鍦ㄩ潪鏁板瓧ID锛岀洿鎺ヨ繑鍥瀎alse
+ return false;
+ }
+ }
+ return false;
+ }
+
/**
@@ -55,6 +100,56 @@
return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1)) + "-" + new Date().getTime();
}
+ /**
+ * 鏌ヨ褰撳ぉ鍩轰簬 create_time 鐨勬渶鏂扮紪鍙凤紝骞剁敓鎴愪笅涓�涓紪鍙�
+ * @param mapper mapper
+ * @param preFix 缂栧彿鍓嶇紑
+ * @param code 缂栧彿瀛楁
+ * @param <T> 瀹炰綋绫诲瀷
+ * @return 璁㈠崟缂栧彿
+ */
+ public static <T> String countTodayByCreateTime(BaseMapper<T> mapper,String preFix,String code) {
+ LocalDate today = LocalDate.now();
+ LocalDateTime todayStart = today.atStartOfDay();
+ LocalDateTime tomorrowStart = today.plusDays(1).atStartOfDay();
+ String dateStr = today.format(DateTimeFormatter.BASIC_ISO_DATE);
+ String codePrefix = preFix + dateStr;
+
+ QueryWrapper<T> wrapper = new QueryWrapper<>();
+ wrapper.select(code)
+ .ge("create_time", todayStart)
+ .lt("create_time", tomorrowStart)
+ .likeRight(code, codePrefix)
+ .orderByDesc(code)
+ .last("LIMIT 1");
+
+ long nextSeq = 1;
+ List<Map<String, Object>> records = mapper.selectMaps(wrapper);
+ if (!records.isEmpty()) {
+ Object lastCode = records.get(0).get(code);
+ if (lastCode != null) {
+ nextSeq = extractSequence(lastCode.toString(), codePrefix) + 1;
+ }
+ }
+
+ return preFix + dateStr + String.format("%03d", nextSeq);
+ }
+
+ private static long extractSequence(String fullCode, String codePrefix) {
+ if (!fullCode.startsWith(codePrefix)) {
+ return 0;
+ }
+ String seqStr = fullCode.substring(codePrefix.length()).trim();
+ if (seqStr.isEmpty()) {
+ return 0;
+ }
+ try {
+ return Long.parseLong(seqStr);
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ }
+
/**
* 鏌ヨ褰撳ぉ锛堝熀浜巆reateTime瀛楁锛夌殑璁板綍鏁伴噺
--
Gitblit v1.9.3