diff --git a/das/src/main/java/com/das/common/log/MdcExecutor.java b/das/src/main/java/com/das/common/log/MdcExecutor.java deleted file mode 100644 index 9faa956c..00000000 --- a/das/src/main/java/com/das/common/log/MdcExecutor.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.das.common.log; - -import lombok.extern.slf4j.Slf4j; -import org.slf4j.MDC; - -import java.util.concurrent.Executor; - -/** - * @author chenhaojie - * - */ -@Slf4j -public class MdcExecutor implements Executor { - - private final Executor executor; - - public MdcExecutor(Executor executor) { - this.executor = executor; - } - - @Override - public void execute(Runnable command) { - final String requestId = MDC.get("REQUEST_ID"); - executor.execute(() -> { - MDC.put("REQUEST_ID", requestId); - try { - command.run(); - } finally { - MDC.remove("REQUEST_ID"); - } - }); - } -} diff --git a/das/src/main/java/com/das/common/log/RequestIdUtils.java b/das/src/main/java/com/das/common/log/RequestIdUtils.java deleted file mode 100644 index 5aaba3a8..00000000 --- a/das/src/main/java/com/das/common/log/RequestIdUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.das.common.log; - -import java.util.UUID; - -/** - * @author chenhaojie - * - */ -public class RequestIdUtils { - - private static final ThreadLocal requestIdHolder = new ThreadLocal<>(); - - private RequestIdUtils() { - } - - public static void generateRequestId() { - requestIdHolder.set(UUID.randomUUID()); - } - - public static void generateRequestId(UUID uuid) { - requestIdHolder.set(uuid); - } - - public static UUID getRequestId() { - return requestIdHolder.get(); - } - - public static void removeRequestId() { - requestIdHolder.remove(); - } - -} diff --git a/das/src/main/java/com/das/common/log/RequestLogInterceptor.java b/das/src/main/java/com/das/common/log/RequestLogInterceptor.java deleted file mode 100644 index 0ed962cc..00000000 --- a/das/src/main/java/com/das/common/log/RequestLogInterceptor.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.das.common.log; - -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.slf4j.MDC; -import org.springframework.util.StringUtils; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import java.util.UUID; - -/** - * @author chenhaojie - * - */ -@Slf4j -public class RequestLogInterceptor implements HandlerInterceptor { - - - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { - - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { - String servletPath = request.getServletPath(); - - log.info("preHandle 后置处理----------"); - log.info("servletPath:{}", servletPath); - RequestIdUtils.removeRequestId(); - MDC.clear(); - } - - /** - * 获取RequestId - * 优先从header头获取,如果没有则自己生成 - * @return RequestId - */ - private String getRequestId(){ - // 因为如果有网关,则一般会从网关传递过来,所以优先从header头获取 - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if(attributes != null && StringUtils.hasText(attributes.getRequest().getHeader("x-request-id"))) { - HttpServletRequest request = attributes.getRequest(); - String requestId = request.getHeader("x-request-id"); - UUID uuid = UUID.fromString(requestId); - RequestIdUtils.generateRequestId(uuid); - return requestId; - } - UUID existUUID = RequestIdUtils.getRequestId(); - if(existUUID != null){ - return existUUID.toString(); - } - RequestIdUtils.generateRequestId(); - return RequestIdUtils.getRequestId().toString(); - } - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { - String servletPath = request.getServletPath(); - // 生成RequestId - String requestId = this.getRequestId(); - // 配置日志文件打印 REQUEST_ID - MDC.put("REQUEST_ID", requestId); - - log.info("servletPath:{}", servletPath); - log.info("preHandle 前置处理----------"); - return true; - } -} diff --git a/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java b/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java index b7ed5c58..892f7f9b 100644 --- a/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java +++ b/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java @@ -1,5 +1,6 @@ package com.das.modules.cache.domain; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; /** @@ -32,4 +33,14 @@ public class DeviceInfoCache { * 物模型ID */ private Long iotModelId; + + /** + * 制造商 + */ + private String madeinFactory; + + /** + * 型号规格 + */ + private String model; } diff --git a/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java b/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java index e08ce6fc..5f50a77d 100644 --- a/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java +++ b/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java @@ -40,6 +40,8 @@ public class EquipmentCacheImpl implements EquipmentCache { deviceInfoCache.setDeviceCode(equipment.getCode()); deviceInfoCache.setDeviceName(equipment.getName()); deviceInfoCache.setObjectType(equipment.getObjectType()); + deviceInfoCache.setModel(equipment.getModel()); + deviceInfoCache.setMadeinFactory(equipment.getMadeinFactory()); deviceInfoCache.setParentDeviceId(equipment.getParentEquipmentId()); deviceInfoCache.setIotModelId(equipment.getIotModelId()); deviceInfoCaches.add(deviceInfoCache); @@ -75,6 +77,8 @@ public class EquipmentCacheImpl implements EquipmentCache { if (equipment != null) { DeviceInfoCache deviceInfoCache = new DeviceInfoCache(); deviceInfoCache.setDeviceId(equipment.getId()); + deviceInfoCache.setMadeinFactory(equipment.getMadeinFactory()); + deviceInfoCache.setModel(equipment.getModel()); deviceInfoCache.setDeviceCode(equipment.getCode()); deviceInfoCache.setDeviceName(equipment.getName()); deviceInfoCache.setObjectType(equipment.getObjectType()); diff --git a/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java b/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java index d548237e..fa302467 100644 --- a/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java +++ b/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java @@ -45,7 +45,8 @@ public class IotModelCacheImpl implements IotModelCache { @PreDestroy public void destroy(){ - + iotFieldsMap.clear(); + iotModelInfoIdMap.clear(); } @Override diff --git a/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java b/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java index fa4e9bdd..afa2be98 100644 --- a/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java +++ b/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java @@ -26,7 +26,7 @@ public class CalcModule { private Date updateTime; private String cron; - public static final CalcModule of(String content){ + public static CalcModule of(String content){ CalcModule calcModule = new CalcModule(); calcModule.setScript(content); try(BufferedReader reader = new BufferedReader(new StringReader(content))){ diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java b/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java index ed108544..c7f98040 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java @@ -23,12 +23,10 @@ import java.util.Map; @Slf4j public class FunctionWindSpeedFactor extends AbstractFunction { - private DataService dataService = null; private CacheService cacheService = null; - public FunctionWindSpeedFactor(DataService dataService, CacheService cacheService) { - this.dataService = dataService; + public FunctionWindSpeedFactor(CacheService cacheService) { this.cacheService = cacheService; } diff --git a/das/src/main/java/com/das/modules/calc/service/CalcService.java b/das/src/main/java/com/das/modules/calc/service/CalcService.java index 3b1ed193..01994800 100644 --- a/das/src/main/java/com/das/modules/calc/service/CalcService.java +++ b/das/src/main/java/com/das/modules/calc/service/CalcService.java @@ -136,7 +136,7 @@ public class CalcService { FunctionOffsetDate offsetDate = new FunctionOffsetDate(); aviator.addFunction(offsetDate); - FunctionWindSpeedFactor windSpeedFactor = new FunctionWindSpeedFactor(dataService,cacheService); + FunctionWindSpeedFactor windSpeedFactor = new FunctionWindSpeedFactor(cacheService); aviator.addFunction(windSpeedFactor); FunctionIsOnline isOnline = new FunctionIsOnline(adminRedisTemplate, cacheService); 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..7b24ded7 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; @@ -36,7 +37,8 @@ public class DataController { @PostMapping("/snapshot") public R>> querySnapshotValues(@RequestBody @Valid List param) { if (log.isDebugEnabled()){ - log.debug("/api/rtdbsvr/snapshot is calling"); + log.debug("/api/data/snapshot is calling"); + log.debug("request params: {}", param); } return R.success(dataService.querySnapshotValues(param)); } @@ -49,8 +51,23 @@ public class DataController { @PostMapping("/history") public R>>> queryTimeSeriesValues(@RequestBody @Valid TSValueQueryParam param) { if (log.isDebugEnabled()){ - log.debug("/api/rtdbsvr/timeseries is calling"); + log.debug("/api/data/history is calling"); + log.debug("request params: {}", param); } 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/data/windows is calling"); + log.debug("request params: {}", param); + } + return R.success(dataService.queryWindowsValues(param)); + } } diff --git a/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java b/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java index 2ee1b88b..3f705163 100644 --- a/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java +++ b/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java @@ -30,4 +30,10 @@ public class DeviceEventInfo { private String deviceCode; private String deviceName; + + private String model; + + private String madeinFactory; + + private Integer firstTriggeredCode; } 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..b8c09675 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 @@ -1,8 +1,11 @@ package com.das.modules.data.service; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.das.common.utils.PageDataInfo; +import com.das.modules.cache.domain.DeviceInfoCache; +import com.das.modules.cache.service.CacheService; import com.das.modules.data.domain.DeviceEventInfo; import com.das.modules.data.domain.RTValue; import com.das.modules.equipment.domain.vo.IotModelFieldVo; @@ -12,6 +15,7 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import jakarta.annotation.PreDestroy; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; @@ -45,6 +49,8 @@ public class TDEngineService { @Value("${tdengine.batch-size:10000}") private int batchSize; + @Autowired + private CacheService cacheService; public void init() { if (hikariDataSource == null) { HikariConfig config = new HikariConfig(); @@ -86,7 +92,7 @@ public class TDEngineService { log.info(sb.toString()); pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("创建超级表失败,失败原因{}", e); + log.error("创建超级表失败", e); } } } catch (Exception ignored) { @@ -108,7 +114,7 @@ public class TDEngineService { log.info(sb.toString()); pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("创建超级表失败,失败原因{}", e); + log.error("创建[计算量]超级表失败", e); } } catch (Exception ignored) { @@ -135,7 +141,7 @@ public class TDEngineService { try { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("新增超级表列失败:{},失败原因{}", sb, e); + log.error(String.format("新增超级表列失败:%s", sb.toString()), e); } } @@ -161,7 +167,7 @@ public class TDEngineService { try { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("删除超级表列失败:{},失败原因{}", sb, e); + log.error(String.format("删除超级表列失败:%s", sb.toString()), e); } } catch (Exception ignored) { @@ -183,7 +189,7 @@ public class TDEngineService { try { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("删除超级表失败:{},失败原因{}", sb, e); + log.error(String.format("删除超级表失败:%s", sb.toString()), e); } } catch (Exception ignored) { @@ -256,7 +262,7 @@ public class TDEngineService { }); //初始化event_info - String eventInfo = "create stable IF NOT EXISTS event_info (event_time timestamp,event_id bigint primary key,attributecode varchar(64),event_type tinyint,event_level tinyint,event_text varchar(256),confirmed tinyint,confirm_account varchar(32),confirm_time timestamp) tags (device_id bigint,device_code varchar(64),device_name varchar(192))"; + String eventInfo = "create stable IF NOT EXISTS event_info (event_time timestamp,event_id bigint primary key,attributecode varchar(64),event_type tinyint,event_level tinyint,event_text varchar(256),confirmed tinyint,confirm_account varchar(32),confirm_time timestamp,first_triggered_code INTEGER) tags (device_id bigint,device_code varchar(64),device_name varchar(192))"; try { pstmt.executeUpdate(eventInfo); } catch (SQLException ex) { @@ -414,6 +420,8 @@ public class TDEngineService { sb.append(dv.getConfirmAccount()); sb.append(","); sb.append(dv.getConfirmTime()); + sb.append(","); + sb.append(dv.getFirstTriggeredCode()); sb.append(")"); } try { @@ -506,6 +514,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 +804,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 "); @@ -652,7 +841,7 @@ public class TDEngineService { return result; } - public PageDataInfo queryEvent(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList, Integer pageSize, Integer offset, Integer limit) { + public PageDataInfo queryEvent(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList, Integer pageSize, Integer offset, Integer limit,Integer firstTriggeredCode) { List result = new ArrayList<>(); StringBuffer sb = new StringBuffer(2048); Integer total = 0; @@ -661,6 +850,9 @@ public class TDEngineService { if (eventLevel != null) { sb.append(String.format(" and t.event_level = %d", eventLevel)); } + if (firstTriggeredCode != null){ + sb.append(String.format(" and t.first_triggered_code = %d", firstTriggeredCode)); + } if (!CollectionUtils.isEmpty(deviceCodeList)) { sb.append(" and t.device_code in ("); for (int i = 0; i < deviceCodeList.size(); i++) { @@ -683,7 +875,7 @@ public class TDEngineService { } if (pageSize != null) { sb.append(" desc limit ").append(offset).append(",").append(pageSize); - total = getEventCount(eventLevel, startTime, endTime, deviceCodeList); + total = getEventCount(eventLevel, startTime, endTime, deviceCodeList,firstTriggeredCode); } log.debug(sb.toString()); @@ -703,7 +895,11 @@ public class TDEngineService { deviceEventInfo.setConfirmTime(rs.getLong("confirm_time")); deviceEventInfo.setDeviceCode(rs.getString("device_code")); deviceEventInfo.setDeviceId(rs.getString("device_id")); + DeviceInfoCache deviceInfoCache = cacheService.getEquipmentCache().getDeviceInfoCacheById(rs.getLong("device_id")); deviceEventInfo.setDeviceName(rs.getString("device_name")); + deviceEventInfo.setFirstTriggeredCode(ObjectUtil.isEmpty(rs.getString("first_triggered_code")) ? null : Integer.valueOf(rs.getString("first_triggered_code"))); + deviceEventInfo.setMadeinFactory(deviceInfoCache.getMadeinFactory()); + deviceEventInfo.setModel(deviceInfoCache.getModel()); result.add(deviceEventInfo); } } catch (Exception e) { @@ -713,13 +909,16 @@ public class TDEngineService { return PageDataInfo.build(result, total); } - private Integer getEventCount(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList) { + private Integer getEventCount(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList,Integer firstTriggeredCode) { StringBuffer sb = new StringBuffer(2048); sb.append("select count(t.*) as total from event_info t where "); sb.append(String.format(" t.event_time >= %d and t.event_time < %d", startTime, endTime)); if (eventLevel != null) { sb.append(String.format(" and t.event_level = %d", eventLevel)); } + if (firstTriggeredCode != null){ + sb.append(String.format(" and t.first_triggered_code = %d", firstTriggeredCode)); + } if (!CollectionUtils.isEmpty(deviceCodeList)) { sb.append(" and t.device_code in ("); for (int i = 0; i < deviceCodeList.size(); i++) { @@ -764,7 +963,7 @@ public class TDEngineService { Statement pstmt = conn.createStatement()) { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("新增超级表列失败:{},失败原因{}", sb, e); + log.error(String.format("新增超级表列失败:%s", sb.toString()), e); } } 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..8bb1b9e2 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; @@ -121,7 +123,7 @@ public class DataServiceImpl implements DataService { } }); long end = System.currentTimeMillis(); - log.debug("读取快照{}个,耗时: {}秒", paramList.size(), (end - start) / 1000.0); + log.debug("querySnapshotValues {}个,耗时: {}秒", paramList.size(), (end - start) / 1000.0); return result; } @@ -147,7 +149,36 @@ public class DataServiceImpl implements DataService { result.putAll(values); } Long end = System.currentTimeMillis(); - log.debug("读取快照{}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); + log.debug("queryTimeSeriesValues {}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); + 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(); + String interval = param.getInterval(); + Long offset = calculateRemainder(Long.parseLong(param.getStartTime()), interval); + if (offset != 0){ + String offsetSecond = offset/1000 + "s"; + interval = interval + ","+offsetSecond; + } + + System.out.println("不能被整除的部分 (毫秒): " + result); + for (SnapshotValueQueryParam item : deviceFieldList) { + //field分为高频和低频查询 + Map>> values = queryWindowsCurveValues(Long.valueOf(item.getDeviceId()), startTime, endTime, interval, item.getAttributes(),windowType); + result.putAll(values); + } + Long end = System.currentTimeMillis(); + log.debug("queryTimeSeriesValues {}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); return result; } @@ -208,6 +239,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 +412,39 @@ public class DataServiceImpl implements DataService { } return tdEngineService.getTimeAvgValue(tableName, attr.toLowerCase(), startTime, endTime); } + + public long calculateRemainder(long startTime, String interval) { + // 解析interval的数值和单位 + long intervalInMilliseconds = parseIntervalToMilliseconds(interval); + + // 计算不能被整除的部分 + return startTime % intervalInMilliseconds; + } + + public long parseIntervalToMilliseconds(String interval) { + // 提取间隔的数字和单位 + long intervalValue = Long.parseLong(interval.replaceAll("[^0-9]", "")); + char unit = interval.charAt(interval.length() - 1); + + // 根据单位转换为毫秒 + return switch (unit) { + case 'm' -> // 分钟 + intervalValue * 60 * 1000; // 1 分钟 = 60 * 1000 毫秒 + case 'h' -> // 小时 + intervalValue * 60 * 60 * 1000; // 1 小时 = 60 * 60 * 1000 毫秒 + case 'd' -> // 天 + intervalValue * 24 * 60 * 60 * 1000; // 1 天 = 24 * 60 * 60 * 1000 毫秒 + default -> throw new ServiceException("不支持的单位: " + unit); + }; + } + + + 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/EquipmentController.java b/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java index 4373ec1a..7fa6a9f7 100644 --- a/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java +++ b/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java @@ -7,8 +7,11 @@ import com.das.common.exceptions.ServiceException; import com.das.common.result.R; import com.das.common.utils.PageDataInfo; import com.das.modules.equipment.domain.dto.SysEquipmentDto; +import com.das.modules.equipment.domain.dto.SysGenExtPropsDto; import com.das.modules.equipment.domain.vo.EquipmentTypeVo; import com.das.modules.equipment.domain.vo.SysEquipmentVo; +import com.das.modules.equipment.entity.SysEquipmentDocs; +import com.das.modules.equipment.entity.SysGenExtProps; import com.das.modules.equipment.service.SysEquipmentService; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -138,4 +141,63 @@ public class EquipmentController { sysEquipmentService.importSysEquipment(id, file); return R.success("导入成功"); } + + /** + * 新增设备附属属性 + * @return 所有附属属性 + */ + @PostMapping("/extProps/add") + public R addSysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) { + //判断是否有权限 + boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString()); + if(!hasPermission){ + return R.fail("没有设备管理权限"); + } + return R.success(sysEquipmentService.creatSysEquipmentExtProps(sysGenExtPropsDto)); + } + + /** + * 更新设备附属属性 + * @return 所有附属属性 + */ + @PostMapping("/extProps/update") + public R updateSysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) { + //判断是否有权限 + boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString()); + if(!hasPermission){ + return R.fail("没有设备管理权限"); + } + return R.success(sysEquipmentService.updateSysEquipmentExtProps(sysGenExtPropsDto)); + } + + /** + * 更新设备附属属性 + * @return 所有附属属性 + */ + @PostMapping("/extProps/query") + public R querySysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) { + //判断是否有权限 + boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString()); + if(!hasPermission){ + return R.fail("没有设备管理权限"); + } + return R.success(sysEquipmentService.querySysEquipmentExtProps(sysGenExtPropsDto.getId())); + } + + @PostMapping("/extProps/delete") + public R deleteSysEquipmentExtProps(@RequestBody SysGenExtPropsDto sysGenExtPropsDto) { + //判断是否有权限 + boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString()); + if(!hasPermission){ + return R.fail("没有设备管理权限"); + } + sysEquipmentService.deleteSysEquipmentExtProps(sysGenExtPropsDto.getId()); + return R.success(); + } + + @RequestMapping(value = "/file/upload", method = RequestMethod.POST) + public R addFile(Long deviceId, String folderName, MultipartFile file) { + SysEquipmentDocs upload = sysEquipmentService.upload(deviceId, folderName, file); + return R.success(upload); + } } 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/domain/dto/SysEquipmentDto.java b/das/src/main/java/com/das/modules/equipment/domain/dto/SysEquipmentDto.java index 66598d90..89b30c73 100644 --- a/das/src/main/java/com/das/modules/equipment/domain/dto/SysEquipmentDto.java +++ b/das/src/main/java/com/das/modules/equipment/domain/dto/SysEquipmentDto.java @@ -112,4 +112,9 @@ public class SysEquipmentDto implements Serializable { */ private Double nominalCapacity; + /** + * 所属工程 + */ + private String belongProject; + } diff --git a/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java b/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java new file mode 100644 index 00000000..6f4201c1 --- /dev/null +++ b/das/src/main/java/com/das/modules/equipment/domain/dto/SysGenExtPropsDto.java @@ -0,0 +1,106 @@ +package com.das.modules.equipment.domain.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysGenExtPropsDto { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String fanName; + + private String fanNumber; + + private String fanType; + + private String fanTypeDetails; + + private String pitchSystemModel; + + private String pitchSystemManufacturer; + + private String pitchSystemDetails; + + private String blade1Model; + + private String blade1Manufacturer; + + private String blade1Details; + + private String blade1BearingModel; + + private String blade1BearingManufacturer; + + private String blade1BearingDetails; + + private String blade2Model; + + private String blade2Manufacturer; + + private String blade2Details; + + private String blade2BearingModel; + + private String blade2BearingManufacturer; + + private String blade2BearingDetails; + + private String blade3Model; + + private String blade3Manufacturer; + + private String blade3Details; + + private String blade3BearingModel; + + private String blade3BearingManufacturer; + + private String blade3BearingDetails; + + private String mainBearingModel; + + private String mainBearingManufacturer; + + private String mainBearingDetails; + + private String gearboxModel; + + private String gearboxManufacturer; + + private String gearboxDetails; + + private String generatorModel; + + private String generatorManufacturer; + + private String generatorDetails; + + private String converterModel; + + private String converterManufacturer; + + private String converterDetails; + + private String mainControlSystemModel; + + private String mainControlSystemManufacturer; + + private String mainControlSystemSoftwareVersion; + + private String mainControlSystemSoftwareVersionDetails; + + private String towerBaseCabinetDetails; + + private String nacelleCabinetDetails; +} diff --git a/das/src/main/java/com/das/modules/equipment/domain/vo/SysEquipmentVo.java b/das/src/main/java/com/das/modules/equipment/domain/vo/SysEquipmentVo.java index d874dead..460b7694 100644 --- a/das/src/main/java/com/das/modules/equipment/domain/vo/SysEquipmentVo.java +++ b/das/src/main/java/com/das/modules/equipment/domain/vo/SysEquipmentVo.java @@ -124,4 +124,9 @@ public class SysEquipmentVo implements Serializable { */ private String options; + /** + * 所属工程 + */ + private String belongProject; + } diff --git a/das/src/main/java/com/das/modules/equipment/entity/SysEquipment.java b/das/src/main/java/com/das/modules/equipment/entity/SysEquipment.java index 7f7c4c49..4594f84c 100644 --- a/das/src/main/java/com/das/modules/equipment/entity/SysEquipment.java +++ b/das/src/main/java/com/das/modules/equipment/entity/SysEquipment.java @@ -143,4 +143,10 @@ public class SysEquipment extends BaseEntity { */ @TableField(value = "options") private String options; + + /** + * 所属工程 + */ + @TableField(value = "belong_project") + private String belongProject; } diff --git a/das/src/main/java/com/das/modules/equipment/entity/SysEquipmentDocs.java b/das/src/main/java/com/das/modules/equipment/entity/SysEquipmentDocs.java new file mode 100644 index 00000000..e4f3096f --- /dev/null +++ b/das/src/main/java/com/das/modules/equipment/entity/SysEquipmentDocs.java @@ -0,0 +1,36 @@ +package com.das.modules.equipment.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@TableName("sys_equipment_docs") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysEquipmentDocs { + + @TableId(value = "deviceid") + private Long deviceId; + + @TableField(value = "name") + private String name; + + @TableField(value = "url") + private String url; + /** + * 更新时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("update_time") + private Date updateTime; + +} diff --git a/das/src/main/java/com/das/modules/equipment/entity/SysGenExtProps.java b/das/src/main/java/com/das/modules/equipment/entity/SysGenExtProps.java new file mode 100644 index 00000000..5fa833fc --- /dev/null +++ b/das/src/main/java/com/das/modules/equipment/entity/SysGenExtProps.java @@ -0,0 +1,162 @@ +package com.das.modules.equipment.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@TableName("sys_gen_extprops") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysGenExtProps { + + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "fan_name") + private String fanName; + + @TableField(value = "fan_Number") + private String fanNumber; + + @TableField(value = "fan_type") + private String fanType; + + @TableField(value = "fan_type_details") + private String fanTypeDetails; + + // Pitch System + @TableField(value = "pitch_system_model") + private String pitchSystemModel; + + @TableField(value = "pitch_system_manufacturer") + private String pitchSystemManufacturer; + + @TableField(value = "pitch_system_details") + private String pitchSystemDetails; + + // Blade 1 + @TableField(value = "blade1_model") + private String blade1Model; + + @TableField(value = "blade1_manufacturer") + private String blade1Manufacturer; + + @TableField(value = "blade1_details") + private String blade1Details; + + @TableField(value = "blade1_bearing_model") + private String blade1BearingModel; + + @TableField(value = "blade1_bearing_manufacturer") + private String blade1BearingManufacturer; + + @TableField(value = "blade1_bearing_details") + private String blade1BearingDetails; + + // Blade 2 + @TableField(value = "blade2_model") + private String blade2Model; + + @TableField(value = "blade2_manufacturer") + private String blade2Manufacturer; + + @TableField(value = "blade2_details") + private String blade2Details; + + @TableField(value = "blade2_bearing_model") + private String blade2BearingModel; + + @TableField(value = "blade2_bearing_manufacturer") + private String blade2BearingManufacturer; + + @TableField(value = "blade2_bearing_details") + private String blade2BearingDetails; + + // Blade 3 + @TableField(value = "blade3_model") + private String blade3Model; + + @TableField(value = "blade3_manufacturer") + private String blade3Manufacturer; + + @TableField(value = "blade3_details") + private String blade3Details; + + @TableField(value = "blade3_bearing_model") + private String blade3BearingModel; + + @TableField(value = "blade3_bearing_manufacturer") + private String blade3BearingManufacturer; + + @TableField(value = "blade3_bearing_details") + private String blade3BearingDetails; + + // Main Bearing + @TableField(value = "main_bearing_model") + private String mainBearingModel; + + @TableField(value = "main_bearing_manufacturer") + private String mainBearingManufacturer; + + @TableField(value = "main_bearing_details") + private String mainBearingDetails; + + // Gearbox + @TableField(value = "gearbox_model") + private String gearboxModel; + + @TableField(value = "gearbox_manufacturer") + private String gearboxManufacturer; + + @TableField(value = "gearbox_details") + private String gearboxDetails; + + // Generator + @TableField(value = "generator_model") + private String generatorModel; + + @TableField(value = "generator_manufacturer") + private String generatorManufacturer; + + @TableField(value = "generator_details") + private String generatorDetails; + + // Converter + @TableField(value = "converter_model") + private String converterModel; + + @TableField(value = "converter_manufacturer") + private String converterManufacturer; + + @TableField(value = "converter_details") + private String converterDetails; + + // Main Control System + @TableField(value = "main_control_system_model") + private String mainControlSystemModel; + + @TableField(value = "main_control_system_manufacturer") + private String mainControlSystemManufacturer; + + @TableField(value = "main_control_system_software_version") + private String mainControlSystemSoftwareVersion; + + @TableField(value = "main_control_system_software_version_details") + private String mainControlSystemSoftwareVersionDetails; + + // Cabinet Details + + @TableField(value = "tower_base_cabinet_details") + private String towerBaseCabinetDetails; + + @TableField(value = "nacelle_cabinet_details") + private String nacelleCabinetDetails; +} diff --git a/das/src/main/java/com/das/modules/equipment/mapper/SysEquipmentDocsMapper.java b/das/src/main/java/com/das/modules/equipment/mapper/SysEquipmentDocsMapper.java new file mode 100644 index 00000000..9ec6ce93 --- /dev/null +++ b/das/src/main/java/com/das/modules/equipment/mapper/SysEquipmentDocsMapper.java @@ -0,0 +1,10 @@ +package com.das.modules.equipment.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.das.modules.equipment.entity.SysEquipmentDocs; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysEquipmentDocsMapper extends BaseMapper { + +} diff --git a/das/src/main/java/com/das/modules/equipment/mapper/SysGenExtPropsMapper.java b/das/src/main/java/com/das/modules/equipment/mapper/SysGenExtPropsMapper.java new file mode 100644 index 00000000..9ea8a705 --- /dev/null +++ b/das/src/main/java/com/das/modules/equipment/mapper/SysGenExtPropsMapper.java @@ -0,0 +1,10 @@ +package com.das.modules.equipment.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.das.modules.equipment.entity.SysGenExtProps; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysGenExtPropsMapper extends BaseMapper { + +} 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/SysEquipmentService.java b/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java index 13543df9..b85657e9 100644 --- a/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java +++ b/das/src/main/java/com/das/modules/equipment/service/SysEquipmentService.java @@ -2,7 +2,10 @@ package com.das.modules.equipment.service; import com.das.common.utils.PageDataInfo; import com.das.modules.equipment.domain.dto.SysEquipmentDto; +import com.das.modules.equipment.domain.dto.SysGenExtPropsDto; import com.das.modules.equipment.domain.vo.SysEquipmentVo; +import com.das.modules.equipment.entity.SysEquipmentDocs; +import com.das.modules.equipment.entity.SysGenExtProps; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; @@ -28,4 +31,13 @@ public interface SysEquipmentService { void importSysEquipment(String parentEquipmentId,MultipartFile file) throws IOException, ParseException; + SysGenExtProps creatSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto); + + SysGenExtProps updateSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto); + + void deleteSysEquipmentExtProps(Long id); + + SysGenExtProps querySysEquipmentExtProps(Long id); + + SysEquipmentDocs upload(Long deviceId, String folderName, MultipartFile file); } 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/SysEquipmentServiceImpl.java b/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java index 80b14e14..2474085f 100644 --- a/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java +++ b/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.das.common.config.SessionUtil; import com.das.common.constant.EquipmentTypeIds; +import com.das.common.constant.FileConstants; import com.das.common.exceptions.ServiceException; import com.das.common.utils.BeanCopyUtils; import com.das.common.utils.PageDataInfo; @@ -17,16 +18,26 @@ import com.das.common.utils.PageQuery; import com.das.common.utils.SequenceUtils; import com.das.modules.auth.domain.vo.SysUserVo; import com.das.modules.auth.mapper.SysOrgMapper; +import com.das.modules.cache.domain.DeviceInfoCache; import com.das.modules.cache.service.CacheService; +import com.das.modules.cache.service.EquipmentCache; import com.das.modules.data.service.TDEngineService; import com.das.modules.data.service.impl.DataServiceImpl; import com.das.modules.equipment.domain.dto.SysEquipmentDto; +import com.das.modules.equipment.domain.dto.SysGenExtPropsDto; import com.das.modules.equipment.domain.excel.SysEquipmentExcel; import com.das.modules.equipment.domain.vo.SysEquipmentVo; import com.das.modules.equipment.entity.SysEquipment; +import com.das.modules.equipment.entity.SysEquipmentDocs; +import com.das.modules.equipment.entity.SysGenExtProps; +import com.das.modules.equipment.mapper.SysEquipmentDocsMapper; import com.das.modules.equipment.mapper.SysEquipmentMapper; +import com.das.modules.equipment.mapper.SysGenExtPropsMapper; import com.das.modules.equipment.mapper.SysIotModelMapper; import com.das.modules.equipment.service.SysEquipmentService; +import com.das.modules.fdr.config.MinioProperties; +import com.das.modules.fdr.service.MinioViewsServcie; +import jakarta.annotation.Resource; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -73,6 +84,21 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { @Autowired private TDEngineService tdEngineService; + @Autowired + private SysGenExtPropsMapper sysGenExtPropsMapper; + + @Autowired + private MinioViewsServcie minioViewsServcie; + + @Resource + private MinioProperties minioAutoProperties; + + @Autowired + private EquipmentCache equipmentCache; + + @Autowired + private SysEquipmentDocsMapper sysEquipmentDocsMapper; + @Override public SysEquipmentVo creatSysEquipment(SysEquipmentDto sysEquipmentDto) { //去除空格 @@ -358,4 +384,56 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { } } + + @Override + public SysGenExtProps creatSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto) { + if (sysGenExtPropsDto.getId() == null){ + throw new ServiceException("设备id不能为空"); + } + SysGenExtProps sysEquipmentExtProps = new SysGenExtProps(); + BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps); + sysGenExtPropsMapper.insert(sysEquipmentExtProps); + return sysEquipmentExtProps; + } + + @Override + public SysGenExtProps updateSysEquipmentExtProps(SysGenExtPropsDto sysGenExtPropsDto) { + if (sysGenExtPropsDto.getId() == null){ + throw new ServiceException("设备id不能为空"); + } + SysGenExtProps sysEquipmentExtProps = new SysGenExtProps(); + BeanCopyUtils.copy(sysGenExtPropsDto, sysEquipmentExtProps); + sysGenExtPropsMapper.updateById(sysEquipmentExtProps); + return sysEquipmentExtProps; + } + + @Override + public void deleteSysEquipmentExtProps(Long id) { + sysGenExtPropsMapper.deleteById(id); + } + + @Override + public SysGenExtProps querySysEquipmentExtProps(Long id) { + return sysGenExtPropsMapper.selectById(id); + } + + @Override + public SysEquipmentDocs upload(Long deviceId, String folderName, MultipartFile file) { + DeviceInfoCache deviceInfoCache = equipmentCache.getDeviceInfoCacheById(deviceId); + String parent = FileConstants.FILE_SEPARATOR +"风机图片"+ FileConstants.FILE_SEPARATOR + deviceInfoCache.getDeviceCode(); + String url = minioViewsServcie.upload(minioAutoProperties.getPublicBucket(), parent, folderName, file); + String fileName = url.substring(url.lastIndexOf("/")); + SysEquipmentDocs sysEquipmentDocs = new SysEquipmentDocs(); + sysEquipmentDocs.setDeviceId(deviceId); + sysEquipmentDocs.setName(fileName); + sysEquipmentDocs.setUrl(url); + sysEquipmentDocs.setUpdateTime(new Date()); + SysEquipmentDocs sysEquipmentDocsInfo = sysEquipmentDocsMapper.selectById(deviceId); + if (sysEquipmentDocsInfo == null){ + sysEquipmentDocsMapper.insert(sysEquipmentDocs); + }else { + sysEquipmentDocsMapper.updateById(sysEquipmentDocs); + } + return sysEquipmentDocs; + } } 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..7e0a3b6c 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,6 +146,7 @@ public class SysIotModelServiceImpl implements SysIotModelService { @Override public PageDataInfo querySysIotModelField(SysIotModelFieldDto sysIotModelFieldDto) { + PageQuery pageQuery = new PageQuery(); pageQuery.setPageNum(sysIotModelFieldDto.getPageNum()); pageQuery.setPageSize(sysIotModelFieldDto.getPageSize()); @@ -545,8 +546,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/event/domain/EventQueryParam.java b/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java index 0c280839..8e3ae18f 100644 --- a/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java +++ b/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java @@ -45,4 +45,9 @@ public class EventQueryParam * pageSize */ private Integer pageSize; + + /** + * 首次故障码 + */ + private Integer firstTriggeredCode; } diff --git a/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java b/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java index f26b7483..27021b14 100644 --- a/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java +++ b/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java @@ -34,7 +34,7 @@ public class EventServiceImpl implements EventService { if (param.getPageNum() != null) { offset = (param.getPageNum() - 1) * param.getPageSize(); } - PageDataInfo deviceEventInfos = tdEngineService.queryEvent(param.getEventLevel(), param.getStartTime(), param.getEndTime(), param.getDeviceCode(), param.getPageSize(), offset, param.getLimit()); + PageDataInfo deviceEventInfos = tdEngineService.queryEvent(param.getEventLevel(), param.getStartTime(), param.getEndTime(), param.getDeviceCode(), param.getPageSize(), offset, param.getLimit(),param.getFirstTriggeredCode()); return deviceEventInfos; } diff --git a/das/src/main/java/com/das/modules/fdr/config/MinioConfig.java b/das/src/main/java/com/das/modules/fdr/config/MinioConfig.java index 92941ef5..4b93d1da 100644 --- a/das/src/main/java/com/das/modules/fdr/config/MinioConfig.java +++ b/das/src/main/java/com/das/modules/fdr/config/MinioConfig.java @@ -42,6 +42,14 @@ public class MinioConfig { createBucket(bucketName, minioClient); } } + String publicBucket = minioAutoProperties.getPublicBucket(); + if (!checkBucket(publicBucket, minioClient)) { + log.info("文件public桶[{}]不存在, 开始检查是否可以新建桶", publicBucket); + if (minioAutoProperties.isCreateBucket()) { + log.info("createBucket为{},开始新建public文件桶", minioAutoProperties.isCreateBucket()); + createBucket(publicBucket, minioClient); + } + } log.info("文件桶[{}]已存在, minio客户端连接成功!", bucketName); } else { throw new RuntimeException("桶不存在, 请检查桶名称是否正确或者将checkBucket属性改为false"); diff --git a/das/src/main/java/com/das/modules/fdr/config/MinioProperties.java b/das/src/main/java/com/das/modules/fdr/config/MinioProperties.java index 3ce7cfed..ea13bc90 100644 --- a/das/src/main/java/com/das/modules/fdr/config/MinioProperties.java +++ b/das/src/main/java/com/das/modules/fdr/config/MinioProperties.java @@ -40,6 +40,9 @@ public class MinioProperties { @Value("${minio.bucket}") private String bucket; + @Value("${minio.publicBucket}") + private String publicBucket; + /** * 桶不在的时候是否新建桶 */ 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 00167c3e..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); + Map getDataCurve(String url, String deviceCode); void updateFdrConfig(SysEquipment sysEquipment); diff --git a/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java b/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java index 0a81db32..ac85e1b8 100644 --- a/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java +++ b/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java @@ -78,7 +78,7 @@ public class MinioViewsServcie { } - public String upload(String path, String folderName,MultipartFile file) { + public String upload(String bucketName, String path, String folderName,MultipartFile file) { String targetFile = null; try { // 上传一个空对象来模拟文件夹 @@ -87,14 +87,14 @@ public class MinioViewsServcie { ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]); minioClient.putObject( PutObjectArgs.builder() - .bucket(minioProperties.getBucket()) + .bucket(bucketName) .object(targetFile) .stream(bais, 0, -1) .build()); } else { targetFile= path +"/" + file.getOriginalFilename(); - uploadFile(minioProperties.getBucket(), file, targetFile, "application/octet-stream"); + uploadFile(bucketName, file, targetFile, "application/octet-stream"); } } catch (Exception e) { throw new RuntimeException(e); @@ -123,7 +123,7 @@ public class MinioViewsServcie { .stream(inputStream, inputStream.available(), -1) .build()); }catch (Exception e){ - log.error("minio文件上传失败{}", e); + log.error("minio文件上传失败", e); } } 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 6f17e958..56421928 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 @@ -14,6 +14,7 @@ import com.das.modules.curve.mapper.TheoreticalPowerCurveMapper; import com.das.modules.equipment.domain.excel.SheetInfoBean; import com.das.modules.equipment.entity.SysEquipment; import com.das.modules.equipment.mapper.SysEquipmentMapper; +import com.das.modules.fdr.config.MinioProperties; import com.das.modules.fdr.domain.FileNode; import com.das.modules.fdr.domain.SysFaultCodeDict; import com.das.modules.fdr.domain.SysFaultRecordingDesc; @@ -26,6 +27,7 @@ import com.das.modules.fdr.service.FaultRecorderService; import com.das.modules.fdr.service.MinioViewsServcie; import io.micrometer.common.util.StringUtils; import io.minio.MinioClient; +import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -52,6 +54,9 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { @Autowired MinioClient minioClient; + @Resource + private MinioProperties minioAutoProperties; + @Autowired private SysEquipmentMapper sysEquipmentMapper; @@ -82,7 +87,7 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { @Override public String upload(String parent, String folderName, MultipartFile file) { - return minioViewsServcie.upload(parent, folderName, file); + return minioViewsServcie.upload(minioAutoProperties.getBucket(), parent, folderName, file); } @Override @@ -128,6 +133,9 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { queryWrapper.eq("madeinfactory",madeinfactory); queryWrapper.eq("MODEL",model); TheoreticalPowerCurveEntity theoreticalPowerCurveEntity = theoreticalPowerCurveMapper.selectOne(queryWrapper); + if (theoreticalPowerCurveEntity == null) { + return Collections.emptyList(); + } QueryWrapper sysFaultCodeDictQueryWrapper = new QueryWrapper<>(); sysFaultCodeDictQueryWrapper.eq("parent",theoreticalPowerCurveEntity.getId()); sysFaultCodeDictQueryWrapper.orderByAsc("code"); @@ -168,8 +176,8 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { } @Override - public Map> getDataCurve(String url, String deviceCode) { - Map> resultMap = null; + public Map getDataCurve(String url, String deviceCode) { + Map resultMap = null; //根据device Code查询故障录波格式 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("CODE", deviceCode); @@ -191,8 +199,8 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { resultMap = parseFile(fileStream, fdrFormatVo.getTimeFormat(), fdrFormatVo.getDelimiter(), fdrFormatVo.getValidStartLine()); } catch (Exception e) { - e.printStackTrace(); - throw new ServiceException("配置解析异常"); + log.error("文件解析异常",e); + throw new ServiceException("文件解析异常,请检查配置"); } return resultMap; } @@ -211,15 +219,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,24 +243,35 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { } stringListMap = parseDataCurve(result, timeFormat); } catch (Exception e) { - log.error("文件解析失败{}", 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); @@ -255,18 +279,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/node/service/impl/NodeMessageServiceImpl.java b/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java index 3192ac98..f8c5e684 100644 --- a/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java +++ b/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java @@ -358,6 +358,7 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node log.info("消息data转化deviceVo,{}", list); for (DeviceEventVo item : list) { DeviceInfoCache deviceInfoCache = cacheService.getEquipmentCache().getDeviceInfoCacheById(Long.valueOf(item.getDeviceId())); + Integer firstTriggeredCode = adminRedisTemplate.get(String.format("RT:%s:%s", item.getDeviceId(), "FirstTriggeredCode".toLowerCase())); DeviceEventInfo deviceEventInfo = new DeviceEventInfo(); deviceEventInfo.setEventTime(item.getEventTime()); deviceEventInfo.setEventId(IdWorker.getId()); @@ -365,6 +366,7 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node deviceEventInfo.setDeviceId(item.getDeviceId()); deviceEventInfo.setDeviceName(deviceInfoCache.getDeviceName()); deviceEventInfo.setDeviceCode(deviceInfoCache.getDeviceCode()); + deviceEventInfo.setFirstTriggeredCode(firstTriggeredCode); String eventType = getEventType(item.getEventType()); String model = dataService.deviceModelMap.get(item.getDeviceId()); if (StringUtils.isEmpty(model)) { @@ -405,7 +407,7 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node try { tdEngineService.updateDeviceEventValues(valueList); } catch (Exception e) { - log.error("事件信息存入Td失败,失败原因{}", e); + log.error("事件信息存入Td失败,失败原因", e); } } diff --git a/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java b/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java index f5031917..090bf0c2 100644 --- a/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java +++ b/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java @@ -551,7 +551,7 @@ public class SysNodeServiceImpl implements SysNodeService { }) .anyMatch(order -> !orderSet.add(order)); }catch (Exception e){ - log.error("校验order不重复失败:{}",e); + log.error("校验order不重复失败",e); } return orderRepeated; } diff --git a/das/src/main/java/com/das/modules/page/controller/HomeController.java b/das/src/main/java/com/das/modules/page/controller/HomeController.java index ddd7917a..30a52685 100644 --- a/das/src/main/java/com/das/modules/page/controller/HomeController.java +++ b/das/src/main/java/com/das/modules/page/controller/HomeController.java @@ -1,13 +1,16 @@ package com.das.modules.page.controller; +import com.das.common.exceptions.ServiceException; import com.das.common.result.R; import com.das.modules.data.domain.TSValueQueryParam; +import com.das.modules.page.domian.dto.HomeWindTurbineMatrixDataDto; import com.das.modules.page.domian.dto.WindFarmRealDataDto; import com.das.modules.page.domian.vo.HomeWindFarmRealDataVo; import com.das.modules.page.domian.vo.HomeWindTurbineMatrixDataVoVo; import com.das.modules.page.service.HomeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -32,8 +35,11 @@ public class HomeController { * @return 风机矩阵数据 */ @PostMapping("/getWindTurbineMatrixData") - public R> getWindTurbineMatrixData() { - return R.success(homeService.getWindTurbineMatrixData()); + public R> getWindTurbineMatrixData(@RequestBody HomeWindTurbineMatrixDataDto homeWindTurbineMatrixDataDto) { + if (CollectionUtils.isEmpty(homeWindTurbineMatrixDataDto.getAttributesList())){ + throw new ServiceException("属性列表不能为空"); + } + return R.success(homeService.getWindTurbineMatrixData(homeWindTurbineMatrixDataDto)); } 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/HomeWindTurbineMatrixDataDto.java b/das/src/main/java/com/das/modules/page/domian/dto/HomeWindTurbineMatrixDataDto.java new file mode 100644 index 00000000..294096d9 --- /dev/null +++ b/das/src/main/java/com/das/modules/page/domian/dto/HomeWindTurbineMatrixDataDto.java @@ -0,0 +1,36 @@ +package com.das.modules.page.domian.dto; + +import lombok.Data; + +import java.util.List; + +/** + * 首页风机矩阵 + */ +@Data +public class HomeWindTurbineMatrixDataDto { + + /** + * 设备类型编码 + */ + private Integer objectType; + + /** + * 所属工程 + */ + private String belongProject; + + /** + * 制造商 + */ + private String madeinFactory; + + /** + * 物理模型属性 + */ + private List attributesList; + + + + +} 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/HomeWindTurbineMatrixDataVoVo.java b/das/src/main/java/com/das/modules/page/domian/vo/HomeWindTurbineMatrixDataVoVo.java index f4e50de1..916179f2 100644 --- a/das/src/main/java/com/das/modules/page/domian/vo/HomeWindTurbineMatrixDataVoVo.java +++ b/das/src/main/java/com/das/modules/page/domian/vo/HomeWindTurbineMatrixDataVoVo.java @@ -35,6 +35,10 @@ public class HomeWindTurbineMatrixDataVoVo { private Double nominalCapacity; private String deviceCode; + /** + * 制造商 + */ + private String madeinFactory; private Map attributeMap; 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/HomeService.java b/das/src/main/java/com/das/modules/page/service/HomeService.java index b7c86286..5f25e0fa 100644 --- a/das/src/main/java/com/das/modules/page/service/HomeService.java +++ b/das/src/main/java/com/das/modules/page/service/HomeService.java @@ -1,6 +1,7 @@ package com.das.modules.page.service; import com.das.modules.data.domain.TSValueQueryParam; +import com.das.modules.page.domian.dto.HomeWindTurbineMatrixDataDto; import com.das.modules.page.domian.dto.WindFarmRealDataDto; import com.das.modules.page.domian.vo.HomeWindFarmRealDataVo; import com.das.modules.page.domian.vo.HomeWindTurbineMatrixDataVoVo; @@ -13,7 +14,7 @@ public interface HomeService { * 接口1: 首页风机矩阵数据 * @return 风机矩阵数据 */ - List getWindTurbineMatrixData(); + List getWindTurbineMatrixData(HomeWindTurbineMatrixDataDto homeWindTurbineMatrixDataDto); 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/page/service/impl/HomeServiceImpl.java b/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java index 755cf3d6..a362717a 100644 --- a/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java +++ b/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java @@ -2,6 +2,7 @@ package com.das.modules.page.service.impl; import com.das.common.constant.EquipmentTypeIds; +import com.das.common.utils.BeanCopyUtils; import com.das.common.utils.JsonUtils; import com.das.modules.data.domain.SnapshotValueQueryParam; import com.das.modules.data.domain.TSValueQueryParam; @@ -9,6 +10,7 @@ import com.das.modules.data.service.impl.DataServiceImpl; import com.das.modules.equipment.domain.dto.SysEquipmentDto; import com.das.modules.equipment.domain.vo.SysEquipmentVo; import com.das.modules.equipment.mapper.SysEquipmentMapper; +import com.das.modules.page.domian.dto.HomeWindTurbineMatrixDataDto; import com.das.modules.page.domian.dto.WindFarmRealDataDto; import com.das.modules.page.domian.vo.HomeWindFarmRealDataVo; import com.das.modules.page.domian.vo.HomeWindTurbineMatrixDataVoVo; @@ -42,36 +44,16 @@ public class HomeServiceImpl implements HomeService { * @return 风机矩阵数据 */ @Override - public List getWindTurbineMatrixData() { + public List getWindTurbineMatrixData(HomeWindTurbineMatrixDataDto homeWindTurbineMatrixDataDto ) { SysEquipmentDto sysEquipmentDto = new SysEquipmentDto(); - sysEquipmentDto.setObjectType(EquipmentTypeIds.EQUIPMENT_TYPE_STATION_WTG); + BeanCopyUtils.copy(homeWindTurbineMatrixDataDto ,sysEquipmentDto ); //获取所有风机设备 List sysEquipmentVos = sysEquipmentMapper.queryEquipmentListInPage(sysEquipmentDto); //风机返回数据列表 List homeWindRealTimeVoList = new ArrayList<>(); List paramList = new ArrayList<>(); - //构建需要查询的物模型属 性 - List attributesList = new ArrayList<>(); - //风速 - attributesList.add("iwindspeed"); - //风机状态判断条件所需的字段iturbineoperationmode、iYPLevel、GridLostDetected(可能会调整) - //风机状态 - attributesList.add("iturbineoperationmode"); - //偏航运行模式 - attributesList.add("iyplevel"); - //风机电网掉电 - attributesList.add("gridlostdetected"); - //刹车等级 - attributesList.add("ibplevel"); - //有功功率(MW) - attributesList.add("igenpower"); - //日发电量(kwh) - attributesList.add("ikwhthisday"); - //是否锁定 - attributesList.add("Locked"); - attributesList.add("ProcessedOperationMode"); - //叶轮转速 - attributesList.add("iRotorSpeed"); + //构建需要查询的物模型属性 + List attributesList = homeWindTurbineMatrixDataDto.getAttributesList(); for (SysEquipmentVo item : sysEquipmentVos) { //构建查询属性参数 SnapshotValueQueryParam snapshotValueQueryParam = new SnapshotValueQueryParam(); @@ -88,6 +70,7 @@ public class HomeServiceImpl implements HomeService { homeWindRealTimeVoResult.setBelongLine(item.getBelongLine()); homeWindRealTimeVoResult.setStandard(item.getStandard()); homeWindRealTimeVoResult.setNominalCapacity(item.getNominalCapacity()); + homeWindRealTimeVoResult.setMadeinFactory(item.getMadeinFactory()); homeWindRealTimeVoList.add(homeWindRealTimeVoResult); } //获取设备测点数据 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/impl/PlcLogsServiceImpl.java b/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java index 958880d9..8b1721fd 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 @@ -86,8 +86,8 @@ public class PlcLogsServiceImpl implements PlcLogService { resultMap = parseFile(fileStream, fdrFormatVo.getTimeFormat(), fdrFormatVo.getDelimiter(), fdrFormatVo.getValidStartLine()); } catch (Exception e) { - e.printStackTrace(); - throw new ServiceException("配置解析异常"); + log.error("文件解析异常",e); + throw new ServiceException("文件解析异常,请检查配置"); } return resultMap; } @@ -162,7 +162,8 @@ public class PlcLogsServiceImpl implements PlcLogService { } stringListMap = parseDataCurve(result, timeFormat); } catch (Exception e) { - log.error("文件解析失败{}", e); + log.error("文件解析失败", e); + throw new ServiceException("文件解析失败"); } return stringListMap; } diff --git a/das/src/main/resources/application.yml b/das/src/main/resources/application.yml index 8c8f6e94..ed5945e9 100644 --- a/das/src/main/resources/application.yml +++ b/das/src/main/resources/application.yml @@ -109,5 +109,6 @@ tdengine: minio: url: http://192.168.109.187:9000 bucket: das + publicBucket: das-public accessKey: das secretKey: zaq12WSX \ No newline at end of file diff --git a/das/src/main/resources/mapper/SysEquipmentMapper.xml b/das/src/main/resources/mapper/SysEquipmentMapper.xml index 2f2488ed..521631b3 100644 --- a/das/src/main/resources/mapper/SysEquipmentMapper.xml +++ b/das/src/main/resources/mapper/SysEquipmentMapper.xml @@ -85,6 +85,12 @@ and t.object_type = #{info.objectType} + + and t.belong_project = #{info.belongProject} + + + and t.madein_factory = #{info.madeinFactory} + order by t.name 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/docs/deploy/asserts/image-4.png b/docs/deploy/asserts/image-redis03.png similarity index 100% rename from docs/deploy/asserts/image-4.png rename to docs/deploy/asserts/image-redis03.png 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 6f1683b4..143105a2 100644 --- a/ui/dasadmin/src/api/backend/deviceModel/request.ts +++ b/ui/dasadmin/src/api/backend/deviceModel/request.ts @@ -180,9 +180,10 @@ export function queryfaultCodeDict(params: object = {}) { }) } -export function getAllSubSystemReq() { +export function getAllSubSystemReq(params: { iotModelId: string }) { return createAxios({ url: '/api/equipment/model/attribute/getAllSubsystem', - method: 'post' + 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/api/backend/org/request.ts b/ui/dasadmin/src/api/backend/org/request.ts index 18c84b2e..9917729f 100644 --- a/ui/dasadmin/src/api/backend/org/request.ts +++ b/ui/dasadmin/src/api/backend/org/request.ts @@ -30,11 +30,12 @@ export const delInstitutionalListReq = (data: delDataType) => { url: '/api/org/delete', method: 'post', data: data, + },{ + showErrorMessage:false }) } export const getInstitutionalTreeListReq = (data: getTreeDataType) => { - console.log(data); return createAxios>({ url: '/api/org/list', method: 'post', diff --git a/ui/dasadmin/src/api/backend/statAnalysis/request.ts b/ui/dasadmin/src/api/backend/statAnalysis/request.ts index 73691363..7073f374 100644 --- a/ui/dasadmin/src/api/backend/statAnalysis/request.ts +++ b/ui/dasadmin/src/api/backend/statAnalysis/request.ts @@ -16,6 +16,15 @@ export const historyReq = (data: any) => { }) } +export const windowReq = (data: any) => { + return createAxios({ + url: '/api/data/windows', + method: 'post', + data: data, + timeout: 60 * 1000, + }) +} + export const runAirBlowerReq = ( data: { deviceId: string 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/bg3.png b/ui/dasadmin/src/assets/dashboard/bg3.png new file mode 100644 index 00000000..7a5b7a6e Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/bg3.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/heart11.png b/ui/dasadmin/src/assets/dashboard/fan/heart11.png new file mode 100644 index 00000000..70b809a4 Binary files /dev/null and b/ui/dasadmin/src/assets/dashboard/fan/heart11.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/lang/common/zh-cn/alarm.ts b/ui/dasadmin/src/lang/common/zh-cn/alarm.ts index dcca6c6f..f892d876 100644 --- a/ui/dasadmin/src/lang/common/zh-cn/alarm.ts +++ b/ui/dasadmin/src/lang/common/zh-cn/alarm.ts @@ -1,6 +1,7 @@ export default { select: '请选择', selectDate: '选择日期时间', + firstTriggeredCode: '首触故障码', type: '类别', alarmTime: '告警时间', } diff --git a/ui/dasadmin/src/lang/common/zh-cn/statAnalysis.ts b/ui/dasadmin/src/lang/common/zh-cn/statAnalysis.ts index 77c95ada..69ed542c 100644 --- a/ui/dasadmin/src/lang/common/zh-cn/statAnalysis.ts +++ b/ui/dasadmin/src/lang/common/zh-cn/statAnalysis.ts @@ -4,6 +4,7 @@ export default { trendComparison: '多机对比', deviceId: '风机', attributes: '测点名称', + calFunction: '方法', interval: '间隔', search: '查询', import: '下载', diff --git a/ui/dasadmin/src/lang/common/zh-cn/userInfo.ts b/ui/dasadmin/src/lang/common/zh-cn/userInfo.ts index 94d7171f..ad27ecbf 100644 --- a/ui/dasadmin/src/lang/common/zh-cn/userInfo.ts +++ b/ui/dasadmin/src/lang/common/zh-cn/userInfo.ts @@ -1,8 +1,8 @@ export default { 'Last logged in on': '上次登录于', 'user name': '用户名', - 'User nickname': '用户昵称', - 'Please enter a nickname': '请输入昵称', + 'User nickname': '职员名称', + 'Please enter a nickname': '请输入名称', 'e-mail address': '邮箱地址', 'phone number': '手机号码', autograph: '签名', diff --git a/ui/dasadmin/src/stores/faults.ts b/ui/dasadmin/src/stores/faults.ts new file mode 100644 index 00000000..35a36073 --- /dev/null +++ b/ui/dasadmin/src/stores/faults.ts @@ -0,0 +1,18 @@ +import { defineStore } from 'pinia' + +import type { Faults } from '/@/stores/interface' +export const useFaultsStore = defineStore('faults', { + state: (): Faults => ({ + data: {}, + keys: [] + }), + actions: { + setData(data: Faults['data']) { + this.data = data + }, + setKeys(keys: string[]) { + this.keys = keys + } + }, + persist: true +}) diff --git a/ui/dasadmin/src/stores/interface/index.ts b/ui/dasadmin/src/stores/interface/index.ts index 41d4e7d9..e3c81b23 100644 --- a/ui/dasadmin/src/stores/interface/index.ts +++ b/ui/dasadmin/src/stores/interface/index.ts @@ -135,3 +135,9 @@ export interface Enums { } keys: string[] } +export interface Faults { + data: { + [key: string]: { [k: string]: string } + } + keys: string[] +} 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/alarms/index.vue b/ui/dasadmin/src/views/backend/alarms/index.vue index a12c329b..12865d49 100644 --- a/ui/dasadmin/src/views/backend/alarms/index.vue +++ b/ui/dasadmin/src/views/backend/alarms/index.vue @@ -22,10 +22,22 @@ :placeholder="t('alarm.select') + t('airBlower.airBlowerNumber')" class="alarmSelect" clearable + @change="handleairBlowerChange" >
+
{{ t('alarm.firstTriggeredCode') }}
+ + + +
{{ t('alarm.type') }}
@@ -37,15 +49,22 @@
- - - + + + + + + + + - + diff --git a/ui/dasadmin/src/views/backend/home/windMatrix.vue b/ui/dasadmin/src/views/backend/home/windMatrix.vue index 18a7e79c..92703362 100644 --- a/ui/dasadmin/src/views/backend/home/windMatrix.vue +++ b/ui/dasadmin/src/views/backend/home/windMatrix.vue @@ -1,39 +1,40 @@