diff --git a/das-dn/hostadsbf/hostadsbf.cpp b/das-dn/hostadsbf/hostadsbf.cpp index 6de3f500..0b4f78dd 100644 --- a/das-dn/hostadsbf/hostadsbf.cpp +++ b/das-dn/hostadsbf/hostadsbf.cpp @@ -20,184 +20,184 @@ static datalen2mbaddrmap m_datalen2mbaddr_map; static struDataLengthADSAddr m_datalen_adsaddr[] = { - { 2,421,0.1 }, - { 2,409,0.1 }, - { 2,445,0.01 }, - { 2,659,0.001 }, - { 2,663,0.001 }, - { 2,400,1 }, - { 2,402,1 }, - { 2,404,1 }, - { 2,449,0.01 }, - { 2,425,0.1 }, - { 2,413,0.1 }, - { 2,-600,0.1 }, - { 2,655,0.1 }, - { 2,715,0.1 }, - { 2,461,0.1 }, - { 2,493,0.1 }, - { 2,-600,0.1 }, - { 2,497,0.1 }, - { 2,501,0.01 }, - { 2,433,0.01 }, - { 2,437,0.01 }, - { 2,441,0.01 }, - { 2,687,0.01 }, - { 2,691,0.01 }, - { 2,695,0.01 }, - { 2,517,0.1 }, - { 2,-600,0.1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 2,465,0.01 }, - { 2,469,0.1 }, - { 2,473,0.1 }, - { 2,477,0.1 }, - { 2,481,0.1 }, - { 2,485,0.1 }, - { 2,489,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.01 }, - { 2,-600,0.01 }, - { 2,-600,0.01 }, - { 2,457,0.001 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,675,0.1 }, - { 2,505,0.1 }, - { 2,509,0.1 }, - { 2,513,0.1 }, - { 2,2,0.1 }, - { 2,14,0.1 }, - { 2,26,0.1 }, - { 2,38,0.1 }, - { 2,50,0.1 }, - { 2,62,0.1 }, - { 2,74,0.1 }, - { 2,-600,0.1 }, - { 2,98,0.1 }, - { 2,110,0.1 }, - { 2,122,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,-600,0.1 }, - { 2,134,0.1 }, - { 2,146,0.1 }, - { 2,158,0.1 }, - { 2,170,0.1 }, - { 2,182,0.1 }, - { 2,206,0.1 }, - { 2,218,0.1 }, - { 2,230,0.1 }, - { 2,242,0.1 }, - { 2,254,0.1 }, - { 2,266,0.1 }, - { 2,521,0.001 }, - { 2,525,0.001 }, - { 4,537,1 }, - { 4,533,1 }, - { 4,545,1 }, - { 4,541,1 }, - { 4,-600,1 }, - { 4,-600,1 }, - { 2,549,1 }, - { 2,551,1 }, - { 2,553,1 }, - { 2,555,1 }, - { 2,557,1 }, - { 2,559,1 }, - { 2,561,1 }, - { 2,563,1 }, - { 2,565,1 }, - { 2,567,1 }, - { 2,569,1 }, - { 2,571,1 }, - { 2,573,1 }, - { 2,575,1 }, - { 2,577,1 }, - { 2,579,1 }, - { 2,581,1 }, - { 2,583,1 }, - { 2,585,1 }, - { 2,587,1 }, - { 2,589,1 }, - { 2,591,1 }, - { 2,593,1 }, - { 2,595,1 }, - { 2,597,1 }, - { 2,599,1 }, - { 2,601,1 }, - { 2,603,1 }, - { 2,605,1 }, - { 2,607,1 }, - { 2,609,1 }, - { 2,611,1 }, - { 2,613,1 }, - { 2,615,1 }, - { 2,617,1 }, - { 2,619,1 }, - { 2,621,1 }, - { 2,623,1 }, - { 2,625,1 }, - { 2,627,1 }, - { 2,629,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,1 }, - { 2,-600,0.1 }, - { 2,429,0.1 }, - { 2,-600,0.1 }, - { 2,417,0.1 }, - { 2,-600,0.01 }, - { 2,453,0.01 }, - { 2,683,0.01 }, - { 2,-600,0.1 }, - { 4,639,1 }, - { 4,631,1 }, - { 4,635,1 }, - { 2,643,0.01 }, - { 2,647,0.01 }, - { 2,651,0.01 }, - { 2,679,0.1 }, - { 2,703,0.001 }, - { 2,707,0.001 }, - { 2,667,0.001 }, - { 2,671,0.001 }, - { 2,194,0.1 }, - { 2,699,1 }, - { 2,10,0.1 } + { 2, 421, 0.1 }, + { 2, 409, 0.1 }, + { 2, 445, 0.01 }, + { 2, 659, 0.001 }, + { 2, 663, 0.001 }, + { 2, 400, 1 }, + { 2, 402, 1 }, + { 2, 404, 1 }, + { 2, 449, 0.01 }, + { 2, 425, 0.1 }, + { 2, 413, 0.1 }, + { 2, -600, 0.1 }, + { 2, 655, 0.1 }, + { 2, 715, 0.1 }, + { 2, 461, 0.1 }, + { 2, 493, 0.1 }, + { 2, -600, 0.1 }, + { 2, 497, 0.1 }, + { 2, 501, 0.01 }, + { 2, 433, 0.01 }, + { 2, 437, 0.01 }, + { 2, 441, 0.01 }, + { 2, 687, 0.01 }, + { 2, 691, 0.01 }, + { 2, 695, 0.01 }, + { 2, 517, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 2, 465, 0.01 }, + { 2, 469, 0.1 }, + { 2, 473, 0.1 }, + { 2, 477, 0.1 }, + { 2, 481, 0.1 }, + { 2, 485, 0.1 }, + { 2, 489, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.01 }, + { 2, -600, 0.01 }, + { 2, -600, 0.01 }, + { 2, 457, 0.001 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, 675, 0.1 }, + { 2, 505, 0.1 }, + { 2, 509, 0.1 }, + { 2, 513, 0.1 }, + { 2, 2, 0.1 }, + { 2, 14, 0.1 }, + { 2, 26, 0.1 }, + { 2, 38, 0.1 }, + { 2, 50, 0.1 }, + { 2, 62, 0.1 }, + { 2, 74, 0.1 }, + { 2, -600, 0.1 }, + { 2, 98, 0.1 }, + { 2, 110, 0.1 }, + { 2, 122, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, -600, 0.1 }, + { 2, 134, 0.1 }, + { 2, 146, 0.1 }, + { 2, 158, 0.1 }, + { 2, 170, 0.1 }, + { 2, 182, 0.1 }, + { 2, 206, 0.1 }, + { 2, 218, 0.1 }, + { 2, 230, 0.1 }, + { 2, 242, 0.1 }, + { 2, 254, 0.1 }, + { 2, 266, 0.1 }, + { 2, 521, 0.001 }, + { 2, 525, 0.001 }, + { 4, 537, 1 }, + { 4, 533, 1 }, + { 4, 545, 1 }, + { 4, 541, 1 }, + { 4, -600, 1 }, + { 4, -600, 1 }, + { 2, 549, 1 }, + { 2, 551, 1 }, + { 2, 553, 1 }, + { 2, 555, 1 }, + { 2, 557, 1 }, + { 2, 559, 1 }, + { 2, 561, 1 }, + { 2, 563, 1 }, + { 2, 565, 1 }, + { 2, 567, 1 }, + { 2, 569, 1 }, + { 2, 571, 1 }, + { 2, 573, 1 }, + { 2, 575, 1 }, + { 2, 577, 1 }, + { 2, 579, 1 }, + { 2, 581, 1 }, + { 2, 583, 1 }, + { 2, 585, 1 }, + { 2, 587, 1 }, + { 2, 589, 1 }, + { 2, 591, 1 }, + { 2, 593, 1 }, + { 2, 595, 1 }, + { 2, 597, 1 }, + { 2, 599, 1 }, + { 2, 601, 1 }, + { 2, 603, 1 }, + { 2, 605, 1 }, + { 2, 607, 1 }, + { 2, 609, 1 }, + { 2, 611, 1 }, + { 2, 613, 1 }, + { 2, 615, 1 }, + { 2, 617, 1 }, + { 2, 619, 1 }, + { 2, 621, 1 }, + { 2, 623, 1 }, + { 2, 625, 1 }, + { 2, 627, 1 }, + { 2, 629, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 1 }, + { 2, -600, 0.1 }, + { 2, 429, 0.1 }, + { 2, -600, 0.1 }, + { 2, 417, 0.1 }, + { 2, -600, 0.01 }, + { 2, 453, 0.01 }, + { 2, 683, 0.01 }, + { 2, -600, 0.1 }, + { 4, 639, 1 }, + { 4, 631, 1 }, + { 4, 635, 1 }, + { 2, 643, 0.01 }, + { 2, 647, 0.01 }, + { 2, 651, 0.01 }, + { 2, 679, 0.1 }, + { 2, 703, 0.001 }, + { 2, 707, 0.001 }, + { 2, 667, 0.001 }, + { 2, 671, 0.001 }, + { 2, 194, 0.1 }, + { 2, 699, 1 }, + { 2, 10, 0.1 } }; float adsGetUnitYCRealFromValue(int uid, int order, LONG value) @@ -967,7 +967,7 @@ BOOLEAN CHostADSBFProcess::OnTimer(void) { if (m_turbine == NULL) { - vLog(LOG_DEBUG, "%s not connected.\n", m_pidName.c_str()); + //vLog(LOG_DEBUG, "%s not connected.\n", m_pidName.c_str()); if ((m_apdu_t0_begin + 20) < system32.timers) { m_apdu_t0_begin = system32.timers; @@ -1014,18 +1014,6 @@ BOOLEAN CHostADSBFProcess::OnTimer(void) return TRUE; } -BOOLEAN CHostADSBFProcess::readDeviceState(const AdsDevice& route) -{ - const auto state = route.GetState(); - vLog(LOG_DEBUG, "ADS state: %d devState: %d\n", (uint16_t)state.ads, (uint16_t)state.device); - if ((uint16_t)state.ads >= ADSSTATE::ADSSTATE_MAXSTATES && (uint16_t)state.device >= ADSSTATE::ADSSTATE_MAXSTATES) - { - return FALSE; - } - - return TRUE; -} - BOOLEAN CHostADSBFProcess::readFileID() { int uid = GetCurUnitID(); diff --git a/das-dn/hostadsbf/hostadsbf.h b/das-dn/hostadsbf/hostadsbf.h index 891537f4..6e6cdd14 100644 --- a/das-dn/hostadsbf/hostadsbf.h +++ b/das-dn/hostadsbf/hostadsbf.h @@ -88,7 +88,6 @@ public: private: BOOLEAN calc(void); - BOOLEAN readDeviceState(const AdsDevice& route); BOOLEAN readRealData(void); BOOLEAN readFileID(void); }; diff --git a/das-dn/third_party/AdsLib/Sockets.cpp b/das-dn/third_party/AdsLib/Sockets.cpp index d6bd11f6..b64bae53 100644 --- a/das-dn/third_party/AdsLib/Sockets.cpp +++ b/das-dn/third_party/AdsLib/Sockets.cpp @@ -124,7 +124,6 @@ Socket::Socket(const struct addrinfo* const host, const int type) : if (INVALID_SOCKET == m_Socket) { continue; } - if (SOCK_STREAM == type) { if (::connect(m_Socket, rp->ai_addr, rp->ai_addrlen)) { LOG_WARN("Socket connect["<(rp->ai_addr)->sin_addr)) << "] timeout"); @@ -155,7 +154,7 @@ Socket::Socket(const struct addrinfo* const host, const int type) : Socket::~Socket() { Shutdown(); - closesocket(m_Socket); +// closesocket(m_Socket); if (m_WSAInitialized) { WSACleanup(); @@ -182,6 +181,7 @@ void Socket::Shutdown() if(IsValid()) { shutdown(m_Socket, SHUT_RDWR); + closesocket(m_Socket); m_Socket = INVALID_SOCKET; m_Connected = false; } @@ -243,6 +243,7 @@ bool Socket::Select(timeval* timeout) FD_ZERO(&readSockets); FD_SET(m_Socket, &readSockets); + if (!IsValid()) return false; /* wait for receive data */ const int state = NATIVE_SELECT(m_Socket + 1, &readSockets, nullptr, nullptr, timeout); if (0 == state) { diff --git a/das/src/main/java/com/das/modules/data/controller/DataController.java b/das/src/main/java/com/das/modules/data/controller/DataController.java index f03c75b0..76808959 100644 --- a/das/src/main/java/com/das/modules/data/controller/DataController.java +++ b/das/src/main/java/com/das/modules/data/controller/DataController.java @@ -4,6 +4,7 @@ import com.das.common.result.R; import com.das.common.utils.JsonUtils; import com.das.modules.data.domain.SnapshotValueQueryParam; import com.das.modules.data.domain.TSValueQueryParam; +import com.das.modules.data.domain.WindowValueQueryParam; import com.das.modules.data.service.DataService; import com.das.modules.data.service.impl.DataServiceImpl; import jakarta.validation.Valid; @@ -53,4 +54,17 @@ public class DataController { } return R.success(dataService.queryTimeSeriesValues(param)); } + + /** + * 区间聚合函数 + * @param param 查询条件 + * @return TD数据库数据 + */ + @PostMapping("/windows") + public R>>> queryWindowsValues(@RequestBody @Valid WindowValueQueryParam param) { + if (log.isDebugEnabled()){ + log.debug("/api/rtdbsvr/timeseries is calling"); + } + return R.success(dataService.queryWindowsValues(param)); + } } diff --git a/das/src/main/java/com/das/modules/data/domain/WindowValueQueryParam.java b/das/src/main/java/com/das/modules/data/domain/WindowValueQueryParam.java new file mode 100644 index 00000000..58917482 --- /dev/null +++ b/das/src/main/java/com/das/modules/data/domain/WindowValueQueryParam.java @@ -0,0 +1,34 @@ +package com.das.modules.data.domain; + +import lombok.Data; + +import java.util.List; + +/** + * 时序数据查询实体 + */ +@Data +public class WindowValueQueryParam +{ + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 间隔 + */ + private String interval; + + /** + * 设备属性列表 + */ + private List devices; + + private String calFunction; +} diff --git a/das/src/main/java/com/das/modules/data/service/DataService.java b/das/src/main/java/com/das/modules/data/service/DataService.java index 7628653f..72b94837 100644 --- a/das/src/main/java/com/das/modules/data/service/DataService.java +++ b/das/src/main/java/com/das/modules/data/service/DataService.java @@ -2,6 +2,7 @@ package com.das.modules.data.service; import com.das.modules.data.domain.SnapshotValueQueryParam; import com.das.modules.data.domain.TSValueQueryParam; +import com.das.modules.data.domain.WindowValueQueryParam; import com.das.modules.node.domain.bo.CalculateRTData; import java.util.List; @@ -13,6 +14,8 @@ public interface DataService { Map>> queryTimeSeriesValues(TSValueQueryParam param); + Map>> queryWindowsValues(WindowValueQueryParam param); + void createTdStable(); void updateCalFieldData(List values); diff --git a/das/src/main/java/com/das/modules/data/service/TDEngineService.java b/das/src/main/java/com/das/modules/data/service/TDEngineService.java index 639eb10b..affaf740 100644 --- a/das/src/main/java/com/das/modules/data/service/TDEngineService.java +++ b/das/src/main/java/com/das/modules/data/service/TDEngineService.java @@ -506,6 +506,188 @@ public class TDEngineService { return result; } + public Map>> fetchHighWindowsCurve(Long irn, Date startTime, Date endTime, String interval, List fieldList,String calFunction) { + String tbName = String.format("h%d", irn); + Date now = new Date(); + if (endTime.after(now)) { + endTime = now; + } + Map>> result = new HashMap<>(); + Map> valueMap = new HashMap<>(); + for (String item : fieldList) { + Map timeValueMap = new HashMap<>(); + List times = new ArrayList<>(); + List objects = new ArrayList<>(); + timeValueMap.put("times", times); + timeValueMap.put("values", objects); + valueMap.put(item, timeValueMap); + } + StringBuffer sb = new StringBuffer(2048); + if (!(StrUtil.isNotBlank(interval) && interval.equals("NONE"))) { + String intervalStr = convertInterval(interval); + + sb.append("select _WSTART, _WEND"); + fieldList.forEach(field -> + sb.append(" ,").append(calFunction).append("(").append(field).append(") ").append("as ").append(field) + ); + sb.append(" from "); + sb.append(tbName); + sb.append(" where "); + sb.append(String.format(" updatetime >= %d and updatetime < %d ", startTime.getTime(), endTime.getTime())); + sb.append(String.format(" INTERVAL(%s)", intervalStr)); + sb.append(String.format(" FILL(%s)", "NONE")); + } + log.debug(sb.toString()); + try (Connection conn = hikariDataSource.getConnection(); + Statement smt = conn.createStatement(); + ResultSet rs = smt.executeQuery(sb.toString())) { + while (rs.next()) { + for (int i = 0; i < fieldList.size(); i++) { + if (valueMap.get(fieldList.get(i)) == null) { + Map map = new HashMap<>(); + List timeList = new ArrayList<>(); + timeList.add(rs.getTimestamp(1).getTime()); + List valueList = new ArrayList<>(); + valueList.add(rs.getObject(fieldList.get(i).toLowerCase())); + map.put("times", timeList); + map.put("values", valueList); + valueMap.put(fieldList.get(i), map); + } else { + Map map = valueMap.get(fieldList.get(i)); + List times = (List) map.get("times"); + List values = (List) map.get("values"); + times.add(rs.getTimestamp(1).getTime()); + values.add(rs.getObject(fieldList.get(i).toLowerCase())); + } + } + } + result.put(irn.toString(), valueMap); + } catch (Exception e) { + log.error("获取数据异常", e); + return result; + } + return result; + } + + public Map>> fetchLowWindowsCurve(Long irn, Date startTime, Date endTime, String interval, List fieldList,String calFunction) { + String tbName = String.format("l%d", irn); + Date now = new Date(); + if (endTime.after(now)) { + endTime = now; + } + Map>> result = new HashMap<>(); + Map> valueMap = new HashMap<>(); + for (String item : fieldList) { + Map timeValueMap = new HashMap<>(); + List times = new ArrayList<>(); + List objects = new ArrayList<>(); + timeValueMap.put("times", times); + timeValueMap.put("values", objects); + valueMap.put(item, timeValueMap); + } + StringBuffer sb = new StringBuffer(2048); + if (!(StrUtil.isNotBlank(interval) && interval.equals("NONE"))) { + String intervalStr = convertInterval(interval); + + sb.append("select _WSTART, _WEND"); + fieldList.forEach(field -> + sb.append(" ,").append(calFunction).append("(").append(field).append(") ").append("as ").append(field) + ); + sb.append(" from "); + sb.append(tbName); + sb.append(" where "); + sb.append(String.format(" updatetime >= %d and updatetime < %d ", startTime.getTime(), endTime.getTime())); + sb.append(String.format(" INTERVAL(%s)", intervalStr)); + sb.append(String.format(" FILL(%s)", "NONE")); + } + log.debug(sb.toString()); + try (Connection conn = hikariDataSource.getConnection(); + Statement smt = conn.createStatement(); + ResultSet rs = smt.executeQuery(sb.toString())) { + while (rs.next()) { + for (int i = 0; i < fieldList.size(); i++) { + if (valueMap.get(fieldList.get(i)) == null) { + Map map = new HashMap<>(); + List timeList = new ArrayList<>(); + timeList.add(rs.getTimestamp(1).getTime()); + List valueList = new ArrayList<>(); + valueList.add(rs.getObject(fieldList.get(i).toLowerCase())); + map.put("times", timeList); + map.put("values", valueList); + valueMap.put(fieldList.get(i), map); + } else { + Map map = valueMap.get(fieldList.get(i)); + List times = (List) map.get("times"); + List values = (List) map.get("values"); + times.add(rs.getTimestamp(1).getTime()); + values.add(rs.getObject(fieldList.get(i).toLowerCase())); + } + } + } + result.put(irn.toString(), valueMap); + } catch (Exception e) { + log.error("获取数据异常", e); + return result; + } + return result; + } + + public Map>> fetchCalWindowsCurve(Long irn, Date startTime, Date endTime, String interval, String calFieldCode,String calFunction) { + Date now = new Date(); + if (endTime.after(now)) { + endTime = now; + } + Map>> result = new HashMap<>(); + Map> valueMap = new HashMap<>(); + Map timeValueMap = new HashMap<>(); + List times = new ArrayList<>(); + List objects = new ArrayList<>(); + timeValueMap.put("times", times); + timeValueMap.put("values", objects); + valueMap.put(calFieldCode, timeValueMap); + + StringBuffer sb = new StringBuffer(2048); + if (!(StrUtil.isNotBlank(interval) && interval.equals("NONE"))) { + sb.append("select _WSTART, _WEND,"); + sb.append(calFunction).append("(datavalue) as datavalue"); + sb.append(" from c_"); + sb.append(irn).append("_").append(calFieldCode); + sb.append(" where "); + sb.append(String.format(" updatetime >= %d and updatetime < %d ", startTime.getTime(), endTime.getTime())); + sb.append(String.format(" INTERVAL(%s)", interval)); + sb.append(String.format(" FILL(%s)", "NONE")); + } + log.debug(sb.toString()); + try (Connection conn = hikariDataSource.getConnection(); + Statement smt = conn.createStatement(); + ResultSet rs = smt.executeQuery(sb.toString())) { + while (rs.next()) { + if (valueMap.get(calFieldCode) == null) { + Map map = new HashMap<>(); + List timeList = new ArrayList<>(); + timeList.add(rs.getTimestamp(1).getTime()); + List valueList = new ArrayList<>(); + valueList.add(rs.getObject("datavalue")); + map.put("times", timeList); + map.put("values", valueList); + valueMap.put(calFieldCode, map); + } else { + Map map = valueMap.get(calFieldCode); + List timeList = (List) map.get("times"); + List values = (List) map.get("values"); + timeList.add(rs.getTimestamp(1).getTime()); + values.add(rs.getObject("datavalue")); + } + + } + result.put(irn.toString(), valueMap); + } catch (Exception e) { + log.error("获取数据异常", e); + return result; + } + return result; + } + public Map>> fetchLowHistoryCurve(Long irn, Date startTime, Date endTime, String interval, List fieldList) { SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String tbName = String.format("l%d", irn); @@ -614,7 +796,6 @@ public class TDEngineService { sb.append(" order by updatetime"); } else { sb.append("select updatetime, datavalue"); - sb.append(" from "); sb.append(" from c_"); sb.append(irn).append("_").append(calFieldCode); sb.append(" where "); diff --git a/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java b/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java index 43fc2235..cf24925b 100644 --- a/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java +++ b/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java @@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import com.das.common.exceptions.ServiceException; import com.das.common.utils.AdminRedisTemplate; +import com.das.common.utils.StringUtils; import com.das.modules.cache.domain.DeviceInfoCache; import com.das.modules.cache.service.CacheService; import com.das.modules.data.domain.SnapshotValueQueryParam; import com.das.modules.data.domain.TSValueQueryParam; +import com.das.modules.data.domain.WindowValueQueryParam; import com.das.modules.data.service.DataService; import com.das.modules.data.service.TDEngineService; import com.das.modules.equipment.domain.vo.IotModelFieldVo; @@ -151,6 +153,27 @@ public class DataServiceImpl implements DataService { return result; } + @Override + public Map>> queryWindowsValues(WindowValueQueryParam param) { + Long start = System.currentTimeMillis(); + if (CollectionUtil.isEmpty(param.getDevices()) || (param.getStartTime() == null && param.getEndTime() == null && param.getCalFunction() == null)) { + throw new ServiceException("必要参数缺失"); + } + Date startTime = new Date(Long.parseLong(param.getStartTime())); + Date endTime = new Date(Long.parseLong(param.getEndTime())); + String windowType = param.getCalFunction(); + Map>> result = new HashMap<>(param.getDevices().size()); + List deviceFieldList = param.getDevices(); + for (SnapshotValueQueryParam item : deviceFieldList) { + //field分为高频和低频查询 + Map>> values = queryWindowsCurveValues(Long.valueOf(item.getDeviceId()), startTime, endTime, param.getInterval(), item.getAttributes(),windowType); + result.putAll(values); + } + Long end = System.currentTimeMillis(); + log.debug("读取快照{}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); + return result; + } + private Map>> queryHistoryCurveValues(Long irn, Date startTime, Date endTime, String interval, String fill, List attributes) { StopWatch stopWatch = new StopWatch(); stopWatch.start("prepare resources"); @@ -208,6 +231,67 @@ public class DataServiceImpl implements DataService { return result; } + private Map>> queryWindowsCurveValues(Long irn, Date startTime, Date endTime, String interval, List attributes,String windowType) { + StopWatch stopWatch = new StopWatch(); + stopWatch.start("prepare resources"); + String function = mappingFunction(windowType); + if (StringUtils.isEmpty(function)){ + throw new ServiceException("计算方法参数不正确,请检查参数"); + } + String iotModelCode = sysIotModelFieldMapper.queryModelCodeByDeviceId(irn); + Map highSpeedFieldMap = highIotFieldMap.get(iotModelCode); + Map lowSpeedFieldMap = lowIotFieldMap.get(iotModelCode); + Map calFieldMap = calculateIotFieldMap.get(iotModelCode); + List highSpeedField = new ArrayList<>(); + List lowSpeedField = new ArrayList<>(); + List calField = new ArrayList<>(); + for (String field : attributes) { + if (highSpeedFieldMap.containsKey(field)) { + highSpeedField.add(field); + } + if (lowSpeedFieldMap.containsKey(field)) { + lowSpeedField.add(field); + } + if (calFieldMap.containsKey(field)){ + calField.add(field); + } + } + stopWatch.stop(); + stopWatch.start("HighSpeedValues"); + Map>> result = new HashMap<>(); + if (!CollectionUtils.isEmpty(highSpeedField)) { + Map>> highHistoryCurve = tdEngineService.fetchHighWindowsCurve(irn, startTime, endTime, interval, highSpeedField,function); + result.putAll(highHistoryCurve); + } + stopWatch.stop(); + stopWatch.start("LowSpeedValues"); + if (!CollectionUtils.isEmpty(lowSpeedField)) { + Map>> lowHistoryCurve = tdEngineService.fetchLowWindowsCurve(irn, startTime, endTime, interval, lowSpeedField,function); + if (result.get(irn.toString()) == null) { + result.putAll(lowHistoryCurve); + } else { + result.get(irn.toString()).putAll(lowHistoryCurve.get(irn.toString())); + } + } + stopWatch.stop(); + stopWatch.start("CalculateValues"); + if (!CollectionUtils.isEmpty(calField)){ + ListUtil.page(calField,COMMIT_COUNT,list -> { + for (String item : list){ + Map>> calHistoryCurve = tdEngineService.fetchCalWindowsCurve(irn, startTime, endTime, interval, item,function); + if (result.get(irn.toString()) == null) { + result.putAll(calHistoryCurve); + } else { + result.get(irn.toString()).putAll(calHistoryCurve.get(irn.toString())); + } + } + }); + } + stopWatch.stop(); + log.debug("查询历史数据耗时: {}", stopWatch.prettyPrint()); + return result; + } + @Override public void updateCalFieldData(List calValues) { //更新数据至redis,TD @@ -320,4 +404,13 @@ public class DataServiceImpl implements DataService { } return tdEngineService.getTimeAvgValue(tableName, attr.toLowerCase(), startTime, endTime); } + + private String mappingFunction(String calFunction){ + return switch (calFunction) { + case "average" -> "AVG"; + case "max" -> "MAX"; + case "min" -> "MIN"; + default -> ""; + }; + } } diff --git a/das/src/main/java/com/das/modules/equipment/controller/SysIotModelController.java b/das/src/main/java/com/das/modules/equipment/controller/SysIotModelController.java index da45c31e..4c5e3e02 100644 --- a/das/src/main/java/com/das/modules/equipment/controller/SysIotModelController.java +++ b/das/src/main/java/com/das/modules/equipment/controller/SysIotModelController.java @@ -251,8 +251,12 @@ public class SysIotModelController { /** 物模型属性修改 */ @PostMapping("/attribute/getAllSubsystem") - public R> getAllSubsystem() { - List allSubsystem = sysIotModelService.getAllSubsystem(); + public R> getAllSubsystem(@RequestBody SysIotModelFieldDto sysIotModelFieldDto) { + Long iotModelId = sysIotModelFieldDto.getIotModelId(); + if (iotModelId == null){ + throw new ServiceException("参数物模型id不存在"); + } + List allSubsystem = sysIotModelService.getAllSubsystem(iotModelId); return R.success(allSubsystem); } } diff --git a/das/src/main/java/com/das/modules/equipment/mapper/SysIotModelFieldMapper.java b/das/src/main/java/com/das/modules/equipment/mapper/SysIotModelFieldMapper.java index f2b8a4e1..4db11198 100644 --- a/das/src/main/java/com/das/modules/equipment/mapper/SysIotModelFieldMapper.java +++ b/das/src/main/java/com/das/modules/equipment/mapper/SysIotModelFieldMapper.java @@ -33,6 +33,6 @@ public interface SysIotModelFieldMapper extends BaseMapperPlus selectModelFieldListByModelId(@Param("modelId") Long modelId); - List getAllSubsystem(); + List getAllSubsystem(@Param("modelId") Long iotModelId); } diff --git a/das/src/main/java/com/das/modules/equipment/service/SysIotModelService.java b/das/src/main/java/com/das/modules/equipment/service/SysIotModelService.java index b66abf10..3bbba875 100644 --- a/das/src/main/java/com/das/modules/equipment/service/SysIotModelService.java +++ b/das/src/main/java/com/das/modules/equipment/service/SysIotModelService.java @@ -47,6 +47,6 @@ public interface SysIotModelService { List getSysIotModelByType(Integer objectType); - List getAllSubsystem(); + List getAllSubsystem(Long iotModelId); } diff --git a/das/src/main/java/com/das/modules/equipment/service/impl/SysIotModelServiceImpl.java b/das/src/main/java/com/das/modules/equipment/service/impl/SysIotModelServiceImpl.java index bb268fdb..40c56d9a 100644 --- a/das/src/main/java/com/das/modules/equipment/service/impl/SysIotModelServiceImpl.java +++ b/das/src/main/java/com/das/modules/equipment/service/impl/SysIotModelServiceImpl.java @@ -146,10 +146,13 @@ public class SysIotModelServiceImpl implements SysIotModelService { @Override public PageDataInfo querySysIotModelField(SysIotModelFieldDto sysIotModelFieldDto) { + PageQuery pageQuery = new PageQuery(); pageQuery.setPageNum(sysIotModelFieldDto.getPageNum()); pageQuery.setPageSize(sysIotModelFieldDto.getPageSize()); + log.info("查询物模型属性参数:{}",sysIotModelFieldDto); IPage iPage = sysIotModelFieldMapper.querySysIotModelFieldList(pageQuery.build(), sysIotModelFieldDto); + log.info("查询物模型属性返回总数{},:{}",iPage.getTotal(),iPage.getRecords()); return PageDataInfo.build(iPage.getRecords(), iPage.getTotal()); } @@ -545,8 +548,8 @@ public class SysIotModelServiceImpl implements SysIotModelService { } @Override - public List getAllSubsystem() { - return sysIotModelFieldMapper.getAllSubsystem(); + public List getAllSubsystem(Long iotModelId) { + return sysIotModelFieldMapper.getAllSubsystem(iotModelId); } public void createTdStableOrColumn(SysIotModelField sysIotModelField) { diff --git a/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java b/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java index 0af9179b..6800f689 100644 --- a/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java +++ b/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java @@ -51,13 +51,13 @@ public class FaultRecorderController { String code = jsonObject.getString("deviceCode"); String startTime = jsonObject.getString("startTime"); String endTime = jsonObject.getString("endTime"); - List result = faultRecorderService.getDirOrFileList("Statuscode",code,startTime,endTime); + List result = faultRecorderService.getDirOrFileList("Tracelog",code,startTime,endTime); return R.success(result); } @RequestMapping(value = "/parseData", method = RequestMethod.POST) - public R>> parseData(@RequestBody JSONObject jsonObject) throws IOException { - Map> dataCurve = faultRecorderService.getDataCurve(jsonObject.getString("url"), jsonObject.getString("deviceCode")); + public R> parseData(@RequestBody JSONObject jsonObject) throws IOException { + Map dataCurve = faultRecorderService.getDataCurve(jsonObject.getString("url"), jsonObject.getString("deviceCode")); return R.success(dataCurve); } diff --git a/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java b/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java index bdc89a28..799e2bd4 100644 --- a/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java +++ b/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java @@ -19,7 +19,7 @@ public interface FaultRecorderService { void download(String path, HttpServletResponse httpServletResponse) throws IOException; - Map> getDataCurve(String url, String deviceCode) throws IOException; + Map getDataCurve(String url, String deviceCode); void updateFdrConfig(SysEquipment sysEquipment); diff --git a/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java b/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java index 024b257d..fce3a2df 100644 --- a/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java +++ b/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java @@ -168,30 +168,31 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { } @Override - public Map> getDataCurve(String url, String deviceCode) throws IOException { - Map> resultMap = null; - try (InputStream fileStream = minioViewsServcie.getFileStream(url)) { - //根据device Code查询故障录波格式 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("CODE", deviceCode); - SysEquipment sysEquipment = sysEquipmentMapper.selectOne(queryWrapper); - if (sysEquipment == null) { - throw new ServiceException("设备不存在,请选择正确设备"); - } + public Map getDataCurve(String url, String deviceCode) { + Map resultMap = null; + //根据device Code查询故障录波格式 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CODE", deviceCode); + SysEquipment sysEquipment = sysEquipmentMapper.selectOne(queryWrapper); + if (sysEquipment == null) { + throw new ServiceException("设备不存在,请选择正确设备"); + } - if (StringUtils.isBlank(sysEquipment.getOptions())){ - throw new ServiceException("请添加设备文件解析配置"); - } - FileParseConfig fileParseConfig = JSON.parseObject(sysEquipment.getOptions(), FileParseConfig.class); - FdrFormatVo fdrFormatVo = fileParseConfig.getFdrFormat(); - if (fdrFormatVo == null){ - throw new ServiceException("请添加故障录波配置"); - } + if (StringUtils.isBlank(sysEquipment.getOptions())){ + throw new ServiceException("请添加设备文件解析配置"); + } + FileParseConfig fileParseConfig = JSON.parseObject(sysEquipment.getOptions(), FileParseConfig.class); + FdrFormatVo fdrFormatVo = fileParseConfig.getFdrFormat(); + if (fdrFormatVo == null){ + throw new ServiceException("请添加故障录波配置"); + } + try (InputStream fileStream = minioViewsServcie.getFileStream(url)) { // 解析文件内容 resultMap = parseFile(fileStream, fdrFormatVo.getTimeFormat(), fdrFormatVo.getDelimiter(), fdrFormatVo.getValidStartLine()); } catch (Exception e) { - e.printStackTrace(); + log.error("文件解析异常:{}",e); + throw new ServiceException("文件解析异常,请检查配置"); } return resultMap; } @@ -210,15 +211,20 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { sysEquipmentMapper.updateById(sysEquipment); } - public Map> parseFile(InputStream inputStream, String timeFormat, String delimiter, int validStartLine) { + public Map parseFile(InputStream inputStream, String timeFormat, String delimiter, int validStartLine) { List> result = new ArrayList<>(); - Map> stringListMap = null; + Map stringListMap = null; try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { String line; int lineNumber = 0; while ((line = reader.readLine()) != null) { lineNumber++; + + if (lineNumber == 2){ + List lineData = Arrays.stream(line.split(":")).toList(); + result.add(lineData); + } // 忽略有效行之前的行 if (lineNumber < validStartLine) { continue; @@ -230,23 +236,34 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { stringListMap = parseDataCurve(result, timeFormat); } catch (Exception e) { log.error("文件解析失败{}", e); + throw new ServiceException("文件解析失败"); } return stringListMap; } - public Map> parseDataCurve(List> data, String timeFormat) throws ParseException { + public Map parseDataCurve(List> data, String timeFormat) throws ParseException { + List faultTimeList = data.get(0); + Long faultTime = null; + try { + faultTime = convertToTimestamp(faultTimeList.get(1).trim(), timeFormat); + } catch (Exception e) { + log.error("faultTime转换失败"); + } + Map result = new HashMap<>(); + result.put("faultTime", faultTime); + data.remove(0); List listField = data.get(0); Map> map = new HashMap<>(); data.remove(0); for (List item : data) { for (int i = 0; i < item.size(); i++) { if (map.get(listField.get(i)) == null) { - if (i == 0){ + if (i == 0) { List timeList = new ArrayList<>(); long timestamp = convertToTimestamp(item.get(i), timeFormat); timeList.add(timestamp); - map.put(listField.get(i),timeList); - }else { + map.put(listField.get(i), timeList); + } else { List valueList = new ArrayList<>(); valueList.add(Double.valueOf(item.get(i))); map.put(listField.get(i), valueList); @@ -254,18 +271,18 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { } else { List valueList = map.get(listField.get(i)); - if (i == 0){ - valueList.add(convertToTimestamp(item.get(i),timeFormat)); + if (i == 0) { + valueList.add(convertToTimestamp(item.get(i), timeFormat)); - } - else { + } else { valueList.add(Double.valueOf(item.get(i))); } } } } - return map; + result.put("dataCurve",map); + return result; } public long convertToTimestamp(String time, String pattern) throws ParseException { diff --git a/das/src/main/java/com/das/modules/page/controller/HomeParamSetController.java b/das/src/main/java/com/das/modules/page/controller/HomeParamSetController.java new file mode 100644 index 00000000..05e0c63a --- /dev/null +++ b/das/src/main/java/com/das/modules/page/controller/HomeParamSetController.java @@ -0,0 +1,53 @@ +package com.das.modules.page.controller; + +import com.das.common.exceptions.ServiceException; +import com.das.common.result.R; +import com.das.modules.page.domian.dto.SysHomeParamSetDto; +import com.das.modules.page.domian.vo.SysHomeParamSetVo; +import com.das.modules.page.service.HomeParamSetService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 首页参数设置 相关Controller + */ +@Slf4j +@RequestMapping("/api/page/home/set") +@RestController +public class HomeParamSetController { + + @Autowired + private HomeParamSetService homeParamSetService; + + + /** 新增系统参数设置页面 */ + @PostMapping("/add") + public R add(@RequestBody SysHomeParamSetDto sysHomeParamSetDto) { + SysHomeParamSetVo sysHomeParamSetVo = homeParamSetService.add(sysHomeParamSetDto); + return R.success(sysHomeParamSetVo); + } + + + /** 获取系统参数设置页面 */ + @PostMapping("/getList") + public R> getList(@RequestBody SysHomeParamSetDto sysHomeParamSetDto) { + List list = homeParamSetService.getList(sysHomeParamSetDto); + return R.success(list); + } + + /** 更新系统参数设置页面 */ + @PostMapping("/update") + public R update(@RequestBody SysHomeParamSetDto sysHomeParamSetDto) { + if (sysHomeParamSetDto.getId() == null) { + throw new ServiceException("id不能为空"); + } + SysHomeParamSetVo sysHomeParamSetVo = homeParamSetService.update(sysHomeParamSetDto); + return R.success(sysHomeParamSetVo); + } +} diff --git a/das/src/main/java/com/das/modules/page/domian/dto/SysHomeParamSetDto.java b/das/src/main/java/com/das/modules/page/domian/dto/SysHomeParamSetDto.java new file mode 100644 index 00000000..4d25bc16 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/domian/dto/SysHomeParamSetDto.java @@ -0,0 +1,18 @@ +package com.das.modules.page.domian.dto; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +@Data +public class SysHomeParamSetDto { + + private Long id; + + private String paramName; + + private String paramValue; + + private JSONArray paramValueJson; + + private String paramDesc; +} diff --git a/das/src/main/java/com/das/modules/page/domian/vo/SysHomeParamSetVo.java b/das/src/main/java/com/das/modules/page/domian/vo/SysHomeParamSetVo.java new file mode 100644 index 00000000..98e42c03 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/domian/vo/SysHomeParamSetVo.java @@ -0,0 +1,18 @@ +package com.das.modules.page.domian.vo; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +@Data +public class SysHomeParamSetVo { + + private Long id; + + private String paramName; + + private String paramValue; + + private JSONArray paramValueJson; + + private String paramDesc; +} diff --git a/das/src/main/java/com/das/modules/page/entity/SysHomeParamSet.java b/das/src/main/java/com/das/modules/page/entity/SysHomeParamSet.java new file mode 100644 index 00000000..c2e74643 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/entity/SysHomeParamSet.java @@ -0,0 +1,32 @@ +package com.das.modules.page.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.das.common.constant.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serial; + +@Data +@TableName("sys_home_param_set") +public class SysHomeParamSet extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String paramName; + + private String paramValue; + + private String paramDesc; +} diff --git a/das/src/main/java/com/das/modules/page/mapper/SysHomeParamSetMapper.java b/das/src/main/java/com/das/modules/page/mapper/SysHomeParamSetMapper.java new file mode 100644 index 00000000..09384190 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/mapper/SysHomeParamSetMapper.java @@ -0,0 +1,16 @@ +package com.das.modules.page.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.das.modules.page.domian.dto.SysHomeParamSetDto; +import com.das.modules.page.domian.vo.SysHomeParamSetVo; +import com.das.modules.page.entity.SysHomeParamSet; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface SysHomeParamSetMapper extends BaseMapper { + + List getList(@Param("info") SysHomeParamSetDto sysHomeParamSetDto); +} diff --git a/das/src/main/java/com/das/modules/page/service/HomeParamSetService.java b/das/src/main/java/com/das/modules/page/service/HomeParamSetService.java new file mode 100644 index 00000000..f3a023a5 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/service/HomeParamSetService.java @@ -0,0 +1,15 @@ +package com.das.modules.page.service; + +import com.das.modules.page.domian.dto.SysHomeParamSetDto; +import com.das.modules.page.domian.vo.SysHomeParamSetVo; + +import java.util.List; + +public interface HomeParamSetService { + + SysHomeParamSetVo add(SysHomeParamSetDto sysHomeParamSetDto); + + List getList(SysHomeParamSetDto sysHomeParamSetDto); + + SysHomeParamSetVo update(SysHomeParamSetDto sysHomeParamSetDto); +} diff --git a/das/src/main/java/com/das/modules/page/service/impl/HomeParamSetServiceImpl.java b/das/src/main/java/com/das/modules/page/service/impl/HomeParamSetServiceImpl.java new file mode 100644 index 00000000..19aa6384 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/service/impl/HomeParamSetServiceImpl.java @@ -0,0 +1,69 @@ +package com.das.modules.page.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import com.alibaba.fastjson.JSONArray; +import com.das.common.config.SessionUtil; +import com.das.common.utils.BeanCopyUtils; +import com.das.modules.auth.domain.vo.SysUserVo; +import com.das.modules.page.domian.dto.SysHomeParamSetDto; +import com.das.modules.page.domian.vo.SysHomeParamSetVo; +import com.das.modules.page.entity.SysHomeParamSet; +import com.das.modules.page.mapper.SysHomeParamSetMapper; +import com.das.modules.page.service.HomeParamSetService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +@Service +public class HomeParamSetServiceImpl implements HomeParamSetService { + + @Autowired + private SysHomeParamSetMapper sysHomeParamSetMapper; + + @Override + public SysHomeParamSetVo add(SysHomeParamSetDto sysHomeParamSetDto) { + SysHomeParamSet sysHomeParamSet = new SysHomeParamSet(); + BeanCopyUtils.copy(sysHomeParamSetDto, sysHomeParamSet); + SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY); + sysHomeParamSet.setCreatedBy(sysUserVo.getAccount()); + sysHomeParamSet.setUpdatedBy(sysUserVo.getAccount()); + sysHomeParamSet.setCreatedTime(new Date()); + sysHomeParamSet.setUpdatedTime(new Date()); + sysHomeParamSet.setRevision(1); + if (sysHomeParamSetDto.getParamValueJson() !=null){ + sysHomeParamSet.setParamValue(sysHomeParamSetDto.getParamValueJson().toString()); + } + sysHomeParamSetMapper.insert(sysHomeParamSet); + SysHomeParamSetVo sysHomeParamSetVo = new SysHomeParamSetVo(); + BeanCopyUtils.copy(sysHomeParamSet, sysHomeParamSetVo); + return sysHomeParamSetVo; + } + + @Override + public List getList(SysHomeParamSetDto sysHomeParamSetDto) { + List list = sysHomeParamSetMapper.getList(sysHomeParamSetDto); + for (SysHomeParamSetVo sysHomeParamSetVo : list) { + if (StringUtils.isNotBlank(sysHomeParamSetVo.getParamValue())){ + JSONArray json = JSONArray.parseArray(sysHomeParamSetVo.getParamValue()); + sysHomeParamSetVo.setParamValueJson(json); + } + } + return list; + } + + @Override + public SysHomeParamSetVo update(SysHomeParamSetDto sysHomeParamSetDto) { + SysHomeParamSet sysHomeParamSet = new SysHomeParamSet(); + BeanCopyUtils.copy(sysHomeParamSetDto, sysHomeParamSet); + if (sysHomeParamSetDto.getParamValueJson() !=null){ + sysHomeParamSet.setParamValue(sysHomeParamSetDto.getParamValueJson().toString()); + } + sysHomeParamSetMapper.updateById(sysHomeParamSet); + SysHomeParamSetVo sysHomeParamSetVo = new SysHomeParamSetVo(); + SysHomeParamSetVo result = BeanCopyUtils.copy(sysHomeParamSet, sysHomeParamSetVo); + return result; + } +} diff --git a/das/src/main/java/com/das/modules/plc/controller/PlcLogsController.java b/das/src/main/java/com/das/modules/plc/controller/PlcLogsController.java index 7f69e56a..dd176596 100644 --- a/das/src/main/java/com/das/modules/plc/controller/PlcLogsController.java +++ b/das/src/main/java/com/das/modules/plc/controller/PlcLogsController.java @@ -44,7 +44,7 @@ public class PlcLogsController { String code = jsonObject.getString("deviceCode"); String startTime = jsonObject.getString("startTime"); String endTime = jsonObject.getString("endTime"); - List result = plcLogService.getDirOrFileList("Tracelog",code,startTime,endTime); + List result = plcLogService.getDirOrFileList("Statuscode",code,startTime,endTime); return R.success(result); } diff --git a/das/src/main/java/com/das/modules/plc/service/PlcLogService.java b/das/src/main/java/com/das/modules/plc/service/PlcLogService.java index 9d8485f8..6ff0344e 100644 --- a/das/src/main/java/com/das/modules/plc/service/PlcLogService.java +++ b/das/src/main/java/com/das/modules/plc/service/PlcLogService.java @@ -14,7 +14,7 @@ public interface PlcLogService { List getDirOrFileList(String fileType, String name, String startTime, String endTime); - Map> getDataCurve(String url, String deviceCode) throws IOException; + Map> getDataCurve(String url, String deviceCode); void updatePlcConfig(SysEquipment sysEquipment); diff --git a/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java b/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java index 728e8e40..843a7f67 100644 --- a/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java +++ b/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java @@ -63,30 +63,31 @@ public class PlcLogsServiceImpl implements PlcLogService { } @Override - public Map> getDataCurve(String url, String deviceCode) throws IOException { + public Map> getDataCurve(String url, String deviceCode){ Map> resultMap = null; - try (InputStream fileStream = minioViewsServcie.getFileStream(url)) { - //根据device Code查询故障录波格式 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("CODE", deviceCode); - SysEquipment sysEquipment = sysEquipmentMapper.selectOne(queryWrapper); - if (sysEquipment == null) { - throw new ServiceException("设备不存在,请选择正确设备"); - } + //根据device Code查询故障录波格式 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CODE", deviceCode); + SysEquipment sysEquipment = sysEquipmentMapper.selectOne(queryWrapper); + if (sysEquipment == null) { + throw new ServiceException("设备不存在,请选择正确设备"); + } - if (StringUtils.isBlank(sysEquipment.getOptions())){ - throw new ServiceException("请添加设备文件解析配置"); - } - FileParseConfig fileParseConfig = JSON.parseObject(sysEquipment.getOptions(), FileParseConfig.class); - FdrFormatVo fdrFormatVo = fileParseConfig.getPlcFormat(); - if (fdrFormatVo == null){ - throw new ServiceException("请添加plclog配置"); - } + if (StringUtils.isBlank(sysEquipment.getOptions())){ + throw new ServiceException("请添加设备文件解析配置"); + } + FileParseConfig fileParseConfig = JSON.parseObject(sysEquipment.getOptions(), FileParseConfig.class); + FdrFormatVo fdrFormatVo = fileParseConfig.getPlcFormat(); + if (fdrFormatVo == null){ + throw new ServiceException("请添加plclog配置"); + } + try (InputStream fileStream = minioViewsServcie.getFileStream(url)) { // 解析文件内容 resultMap = parseFile(fileStream, fdrFormatVo.getTimeFormat(), fdrFormatVo.getDelimiter(), fdrFormatVo.getValidStartLine()); } catch (Exception e) { - e.printStackTrace(); + log.error("文件解析异常:{}",e); + throw new ServiceException("文件解析异常,请检查配置"); } return resultMap; } @@ -162,6 +163,7 @@ public class PlcLogsServiceImpl implements PlcLogService { stringListMap = parseDataCurve(result, timeFormat); } catch (Exception e) { log.error("文件解析失败{}", e); + throw new ServiceException("文件解析失败"); } return stringListMap; } diff --git a/das/src/main/resources/mapper/SysHomeParamSetMapper.xml b/das/src/main/resources/mapper/SysHomeParamSetMapper.xml new file mode 100644 index 00000000..3c27c1bb --- /dev/null +++ b/das/src/main/resources/mapper/SysHomeParamSetMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/das/src/main/resources/mapper/SysIotModelFieldMapper.xml b/das/src/main/resources/mapper/SysIotModelFieldMapper.xml index 9cc9a998..ce265982 100644 --- a/das/src/main/resources/mapper/SysIotModelFieldMapper.xml +++ b/das/src/main/resources/mapper/SysIotModelFieldMapper.xml @@ -31,7 +31,7 @@ and t.subsystem = #{info.subSystem} - + and t.confidential = #{info.confidential} @@ -65,6 +65,6 @@ select * from sys_iot_model_field where iot_model_id = #{modelId} order by porder diff --git a/ui/dasadmin/src/api/backend/SystemParam/request.ts b/ui/dasadmin/src/api/backend/SystemParam/request.ts new file mode 100644 index 00000000..cfb96f26 --- /dev/null +++ b/ui/dasadmin/src/api/backend/SystemParam/request.ts @@ -0,0 +1,18 @@ +import createAxios from '/@/utils/axios' + +export function getParamList(params: object = {}) { + return createAxios({ + url: '/api/page/home/set/getList', + method: 'POST', + data: params, + }) +} + +export function Paramupdate(params: object = {}) { + return createAxios({ + url: '/api/page/home/set/update', + method: 'POST', + data: params, + }) +} + diff --git a/ui/dasadmin/src/api/backend/deviceModel/request.ts b/ui/dasadmin/src/api/backend/deviceModel/request.ts index 207c1993..143105a2 100644 --- a/ui/dasadmin/src/api/backend/deviceModel/request.ts +++ b/ui/dasadmin/src/api/backend/deviceModel/request.ts @@ -178,4 +178,12 @@ export function queryfaultCodeDict(params: object = {}) { { showErrorMessage: false }) +} + +export function getAllSubSystemReq(params: { iotModelId: string }) { + return createAxios({ + url: '/api/equipment/model/attribute/getAllSubsystem', + method: 'post', + data: params + }) } \ No newline at end of file diff --git a/ui/dasadmin/src/api/backend/logRecord/request.ts b/ui/dasadmin/src/api/backend/logRecord/request.ts index 73bed395..1ca61352 100644 --- a/ui/dasadmin/src/api/backend/logRecord/request.ts +++ b/ui/dasadmin/src/api/backend/logRecord/request.ts @@ -35,7 +35,10 @@ export const previewFileReq = (data: { method: 'post', data, timeout: 60 * 1000 - }) + }, + { + showErrorMessage: false + }) } export const downloadFileReq = (data: { diff --git a/ui/dasadmin/src/api/backend/malfunction/request.ts b/ui/dasadmin/src/api/backend/malfunction/request.ts index 3aa9d973..71af53d1 100644 --- a/ui/dasadmin/src/api/backend/malfunction/request.ts +++ b/ui/dasadmin/src/api/backend/malfunction/request.ts @@ -36,6 +36,8 @@ export const previewFileReq = (data: { method: 'post', data, timeout: 60 * 1000 + }, { + showErrorMessage: false }) } diff --git a/ui/dasadmin/src/assets/WindBlower/1.png b/ui/dasadmin/src/assets/WindBlower/1.png new file mode 100644 index 00000000..2d270e74 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/1.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/10.png b/ui/dasadmin/src/assets/WindBlower/10.png new file mode 100644 index 00000000..e2303e0e Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/10.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/2.png b/ui/dasadmin/src/assets/WindBlower/2.png new file mode 100644 index 00000000..60042462 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/2.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/3.png b/ui/dasadmin/src/assets/WindBlower/3.png new file mode 100644 index 00000000..984efde4 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/3.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/4.png b/ui/dasadmin/src/assets/WindBlower/4.png new file mode 100644 index 00000000..647c4cb2 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/4.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/5.png b/ui/dasadmin/src/assets/WindBlower/5.png new file mode 100644 index 00000000..4771080e Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/5.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/6.png b/ui/dasadmin/src/assets/WindBlower/6.png new file mode 100644 index 00000000..85aae496 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/6.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/7.png b/ui/dasadmin/src/assets/WindBlower/7.png new file mode 100644 index 00000000..578bb293 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/7.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/8.png b/ui/dasadmin/src/assets/WindBlower/8.png new file mode 100644 index 00000000..866ba5b5 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/8.png differ diff --git a/ui/dasadmin/src/assets/WindBlower/9.png b/ui/dasadmin/src/assets/WindBlower/9.png new file mode 100644 index 00000000..52172d09 Binary files /dev/null and b/ui/dasadmin/src/assets/WindBlower/9.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan1.png b/ui/dasadmin/src/assets/dashboard/fan/fan1.png new file mode 100644 index 00000000..935748c4 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan1.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan10.png b/ui/dasadmin/src/assets/dashboard/fan/fan10.png new file mode 100644 index 00000000..7c11be37 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan10.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan11.png b/ui/dasadmin/src/assets/dashboard/fan/fan11.png new file mode 100644 index 00000000..31366380 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan11.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan12.png b/ui/dasadmin/src/assets/dashboard/fan/fan12.png new file mode 100644 index 00000000..56ce8128 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan12.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan13.png b/ui/dasadmin/src/assets/dashboard/fan/fan13.png new file mode 100644 index 00000000..e363af18 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan13.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan2.png b/ui/dasadmin/src/assets/dashboard/fan/fan2.png new file mode 100644 index 00000000..1db94124 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan2.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan3.png b/ui/dasadmin/src/assets/dashboard/fan/fan3.png new file mode 100644 index 00000000..ef80ddb7 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan3.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan4.png b/ui/dasadmin/src/assets/dashboard/fan/fan4.png new file mode 100644 index 00000000..9239b10d Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan4.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan5.png b/ui/dasadmin/src/assets/dashboard/fan/fan5.png new file mode 100644 index 00000000..71ba768d Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan5.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan6.png b/ui/dasadmin/src/assets/dashboard/fan/fan6.png new file mode 100644 index 00000000..893f8033 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan6.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan7.png b/ui/dasadmin/src/assets/dashboard/fan/fan7.png new file mode 100644 index 00000000..5a438832 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan7.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan8.png b/ui/dasadmin/src/assets/dashboard/fan/fan8.png new file mode 100644 index 00000000..90fc654f Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan8.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/fan9.png b/ui/dasadmin/src/assets/dashboard/fan/fan9.png new file mode 100644 index 00000000..8d45fb47 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/fan9.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart1.png b/ui/dasadmin/src/assets/dashboard/fan/heart1.png new file mode 100644 index 00000000..8c0881eb Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart1.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart10.png b/ui/dasadmin/src/assets/dashboard/fan/heart10.png new file mode 100644 index 00000000..4ee970a8 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart10.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart12.png b/ui/dasadmin/src/assets/dashboard/fan/heart12.png new file mode 100644 index 00000000..70b809a4 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart12.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart13.png b/ui/dasadmin/src/assets/dashboard/fan/heart13.png new file mode 100644 index 00000000..636aa44f Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart13.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart2.png b/ui/dasadmin/src/assets/dashboard/fan/heart2.png new file mode 100644 index 00000000..7d00612c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart2.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart3.png b/ui/dasadmin/src/assets/dashboard/fan/heart3.png new file mode 100644 index 00000000..43430911 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart3.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart4.png b/ui/dasadmin/src/assets/dashboard/fan/heart4.png new file mode 100644 index 00000000..06384bb9 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart4.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart5.png b/ui/dasadmin/src/assets/dashboard/fan/heart5.png new file mode 100644 index 00000000..65103e8c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart5.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart6.png b/ui/dasadmin/src/assets/dashboard/fan/heart6.png new file mode 100644 index 00000000..2092af2e Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart6.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart7.png b/ui/dasadmin/src/assets/dashboard/fan/heart7.png new file mode 100644 index 00000000..42ab86b4 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart7.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart8.png b/ui/dasadmin/src/assets/dashboard/fan/heart8.png new file mode 100644 index 00000000..737a9f57 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart8.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/heart9.png b/ui/dasadmin/src/assets/dashboard/fan/heart9.png new file mode 100644 index 00000000..18a7cdcd Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart9.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf1.png b/ui/dasadmin/src/assets/dashboard/fan/leaf1.png new file mode 100644 index 00000000..e1ad7ab8 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf1.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf10.png b/ui/dasadmin/src/assets/dashboard/fan/leaf10.png new file mode 100644 index 00000000..9cf55b6d Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf10.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf11.png b/ui/dasadmin/src/assets/dashboard/fan/leaf11.png new file mode 100644 index 00000000..5e0c8a2e Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf11.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf12.png b/ui/dasadmin/src/assets/dashboard/fan/leaf12.png new file mode 100644 index 00000000..609f69d7 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf12.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf13.png b/ui/dasadmin/src/assets/dashboard/fan/leaf13.png new file mode 100644 index 00000000..d8d53000 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf13.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf2.png b/ui/dasadmin/src/assets/dashboard/fan/leaf2.png new file mode 100644 index 00000000..81dc8bc8 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf2.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf3.png b/ui/dasadmin/src/assets/dashboard/fan/leaf3.png new file mode 100644 index 00000000..6af8941c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf3.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf4.png b/ui/dasadmin/src/assets/dashboard/fan/leaf4.png new file mode 100644 index 00000000..1ccc3a01 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf4.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf5.png b/ui/dasadmin/src/assets/dashboard/fan/leaf5.png new file mode 100644 index 00000000..ede6e51b Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf5.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf6.png b/ui/dasadmin/src/assets/dashboard/fan/leaf6.png new file mode 100644 index 00000000..61404275 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf6.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf7.png b/ui/dasadmin/src/assets/dashboard/fan/leaf7.png new file mode 100644 index 00000000..58b6abf6 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf7.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf8.png b/ui/dasadmin/src/assets/dashboard/fan/leaf8.png new file mode 100644 index 00000000..91f5bd73 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf8.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fan/leaf9.png b/ui/dasadmin/src/assets/dashboard/fan/leaf9.png new file mode 100644 index 00000000..c423a9be Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/leaf9.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/base.png b/ui/dasadmin/src/assets/dashboard/fannew/base.png new file mode 100644 index 00000000..79a19563 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/base.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan1.png b/ui/dasadmin/src/assets/dashboard/fannew/fan1.png new file mode 100644 index 00000000..787d7e5e Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan1.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan10.png b/ui/dasadmin/src/assets/dashboard/fannew/fan10.png new file mode 100644 index 00000000..29c6980f Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan10.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan11.png b/ui/dasadmin/src/assets/dashboard/fannew/fan11.png new file mode 100644 index 00000000..54388021 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan11.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan12.png b/ui/dasadmin/src/assets/dashboard/fannew/fan12.png new file mode 100644 index 00000000..53961a6d Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan12.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan13.png b/ui/dasadmin/src/assets/dashboard/fannew/fan13.png new file mode 100644 index 00000000..027c8375 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan13.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan2.png b/ui/dasadmin/src/assets/dashboard/fannew/fan2.png new file mode 100644 index 00000000..7afbf977 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan2.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan3.png b/ui/dasadmin/src/assets/dashboard/fannew/fan3.png new file mode 100644 index 00000000..fadd01ec Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan3.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan4.png b/ui/dasadmin/src/assets/dashboard/fannew/fan4.png new file mode 100644 index 00000000..7bd1db2f Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan4.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan5.png b/ui/dasadmin/src/assets/dashboard/fannew/fan5.png new file mode 100644 index 00000000..5a68e538 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan5.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan6.png b/ui/dasadmin/src/assets/dashboard/fannew/fan6.png new file mode 100644 index 00000000..0ae89068 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan6.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan7.png b/ui/dasadmin/src/assets/dashboard/fannew/fan7.png new file mode 100644 index 00000000..38de923a Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan7.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan8.png b/ui/dasadmin/src/assets/dashboard/fannew/fan8.png new file mode 100644 index 00000000..559b6829 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan8.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/fan9.png b/ui/dasadmin/src/assets/dashboard/fannew/fan9.png new file mode 100644 index 00000000..f996cf2a Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/fan9.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart1.png b/ui/dasadmin/src/assets/dashboard/fannew/heart1.png new file mode 100644 index 00000000..516ce670 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart1.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart10.png b/ui/dasadmin/src/assets/dashboard/fannew/heart10.png new file mode 100644 index 00000000..d1c72b23 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart10.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart11.png b/ui/dasadmin/src/assets/dashboard/fannew/heart11.png new file mode 100644 index 00000000..f746ba6a Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart11.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart12.png b/ui/dasadmin/src/assets/dashboard/fannew/heart12.png new file mode 100644 index 00000000..53d98eb5 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart12.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart13.png b/ui/dasadmin/src/assets/dashboard/fannew/heart13.png new file mode 100644 index 00000000..704556e5 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart13.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart2.png b/ui/dasadmin/src/assets/dashboard/fannew/heart2.png new file mode 100644 index 00000000..796cd6f6 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart2.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart3.png b/ui/dasadmin/src/assets/dashboard/fannew/heart3.png new file mode 100644 index 00000000..5662847d Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart3.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart4.png b/ui/dasadmin/src/assets/dashboard/fannew/heart4.png new file mode 100644 index 00000000..1321a300 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart4.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart5.png b/ui/dasadmin/src/assets/dashboard/fannew/heart5.png new file mode 100644 index 00000000..ba0ddb38 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart5.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart6.png b/ui/dasadmin/src/assets/dashboard/fannew/heart6.png new file mode 100644 index 00000000..f483fa67 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart6.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart7.png b/ui/dasadmin/src/assets/dashboard/fannew/heart7.png new file mode 100644 index 00000000..32c30da5 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart7.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart8.png b/ui/dasadmin/src/assets/dashboard/fannew/heart8.png new file mode 100644 index 00000000..13c3e579 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart8.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/heart9.png b/ui/dasadmin/src/assets/dashboard/fannew/heart9.png new file mode 100644 index 00000000..9d24e1fc Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/heart9.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf1.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf1.png new file mode 100644 index 00000000..08551b05 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf1.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf10.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf10.png new file mode 100644 index 00000000..f10a3abd Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf10.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf11.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf11.png new file mode 100644 index 00000000..818334f3 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf11.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf12.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf12.png new file mode 100644 index 00000000..7578190c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf12.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf13.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf13.png new file mode 100644 index 00000000..e023490c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf13.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf2.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf2.png new file mode 100644 index 00000000..008e95da Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf2.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf3.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf3.png new file mode 100644 index 00000000..d2b64946 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf3.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf4.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf4.png new file mode 100644 index 00000000..3a279e3c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf4.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf5.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf5.png new file mode 100644 index 00000000..87d60456 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf5.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf6.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf6.png new file mode 100644 index 00000000..34221c0e Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf6.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf7.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf7.png new file mode 100644 index 00000000..c6e8244e Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf7.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf8.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf8.png new file mode 100644 index 00000000..2ae9fa7c Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf8.png differ diff --git a/ui/dasadmin/src/assets/dashboard/fannew/leaf9.png b/ui/dasadmin/src/assets/dashboard/fannew/leaf9.png new file mode 100644 index 00000000..1262a633 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fannew/leaf9.png differ diff --git a/ui/dasadmin/src/views/backend/SystemParam/index.vue b/ui/dasadmin/src/views/backend/SystemParam/index.vue index 92018c59..f8c1caac 100644 --- a/ui/dasadmin/src/views/backend/SystemParam/index.vue +++ b/ui/dasadmin/src/views/backend/SystemParam/index.vue @@ -9,13 +9,13 @@
- - + + diff --git a/ui/dasadmin/src/views/backend/auth/Enumeration/index.vue b/ui/dasadmin/src/views/backend/auth/Enumeration/index.vue index 678cac5b..8a9f24f2 100644 --- a/ui/dasadmin/src/views/backend/auth/Enumeration/index.vue +++ b/ui/dasadmin/src/views/backend/auth/Enumeration/index.vue @@ -67,7 +67,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -160,7 +160,7 @@ - + @@ -326,6 +326,12 @@ const rules = reactive>({ required: true, message: '名称不能为空', trigger: 'blur', + }], + description: [ + { + required: true, + message: '描述不能为空', + trigger: 'blur', }] }) @@ -383,6 +389,12 @@ const rules1 = reactive>({ required: true, message: '值不能为空', trigger: 'blur', + }], + description: [ + { + required: true, + message: '描述不能为空', + trigger: 'blur', }] }) diff --git a/ui/dasadmin/src/views/backend/auth/model/index.vue b/ui/dasadmin/src/views/backend/auth/model/index.vue index 4d9325f4..3a3bb745 100644 --- a/ui/dasadmin/src/views/backend/auth/model/index.vue +++ b/ui/dasadmin/src/views/backend/auth/model/index.vue @@ -277,6 +277,9 @@ + + +