basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.TestItemDto; import com.ruoyi.basic.pojo.StructureItemParameter; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -17,6 +18,7 @@ * @author makejava * @since 2024-02-26 16:21:17 */ @Mapper public interface StructureItemParameterMapper extends BaseMapper<StructureItemParameter> { IPage<StructureItemParameter> selectItemParameterList(Page page, @Param("ew") QueryWrapper<StructureItemParameter> ew); cnas-device/src/main/java/com/ruoyi/device/constant/DCResistanceMqttConstants.java
@@ -1,7 +1,7 @@ package com.ruoyi.device.constant; /** * ç´æµçµé»mqttæ·å屿§ãdataStreamãçæ è¯å¸¸é * ç´æµçµé»mqttæ°æ®å±æ§ãdataStreamãçæ è¯å¸¸é */ public class DCResistanceMqttConstants {  cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.device.pojo.CollectBridge; import org.apache.ibatis.annotations.Mapper; /** * æ°åçµæ¡¥éé @@ -9,6 +10,7 @@ * @author zhuo * @since 2025-02-19 */ @Mapper public interface CollectBridgeMapper extends BaseMapper<CollectBridge> { } cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.device.dto.DeviceDto; import com.ruoyi.device.pojo.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -14,6 +15,7 @@ /** * 设å¤(Device)è¡¨æ°æ®åºè®¿é®å± */ @Mapper public interface DeviceMapper extends BaseMapper<Device> { IPage<Device> selectDeviceParameter(Page page, QueryWrapper<Device> ew); cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.device.pojo.DeviceMetricRecord; import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -11,6 +12,7 @@ * @author * @since 2024-09-27 10:20:01 */ @Mapper public interface DeviceMetricRecordMapper extends BaseMapper<DeviceMetricRecord> { } cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java
@@ -72,18 +72,13 @@ switch (topic){ case "/ztt/v3/2455220/publish": //èä¸ï¼ç´æµçµé»æ°æ®è§£æ mqCallback.collectBridgeService.addBridgeValueByNS(parse); mqCallback.collectBridgeService.dcResistanceDataAnalysis(parse); break; case "/ztt/v3/2455221/publish": //èä¸ï¼ä¼¸é¿çæ°æ®è§£æ mqCallback.collectBridgeService.addBridgeValueByNSD(parse); // log.info("伸é¿çæ¶æ¯ä½ï¼{}",parse); mqCallback.collectBridgeService.elongationDataAnalysis(parse); break; } // å¡«å ééæ°æ® // JSONObject jsonObject = JSONObject.parseObject(parse); // mqCallback.collectBridgeService.addBridgeValue(jsonObject); } catch (Exception e) { e.printStackTrace(); log.info("============ããæ¥æ¶æ¶æ¯ä¸»é¢å¼å¸¸ : " + e.getMessage()); cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -16,6 +18,7 @@ */ @Data @TableName("collect_bridge") @NoArgsConstructor public class CollectBridge { @TableId(value = "id", type = IdType.AUTO) @@ -25,10 +28,22 @@ private String entrustCode; @ApiModelProperty("ééå¼") private String collectValue; private BigDecimal collectValue; @ApiModelProperty("æ¶é´") private LocalDateTime collectDate; @ApiModelProperty("é鿏©åº¦") private Double collectTemperature; @ApiModelProperty("ç¬¬ä¸æ¬¡ééæ¶é´") private LocalDateTime firstCollectDate; @ApiModelProperty("æå䏿¬¡ééæ¶é´") private LocalDateTime lastCollectDate; public CollectBridge(String entrustCode, BigDecimal collectValue, LocalDateTime firstCollectDate, LocalDateTime lastCollectDate) { this.entrustCode = entrustCode; this.collectValue = collectValue; this.firstCollectDate = firstCollectDate; this.lastCollectDate = lastCollectDate; } }  cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java
@@ -18,8 +18,8 @@ */ void addBridgeValue(JSONObject jsonObject); void addBridgeValueByNS(String jsonStr); void dcResistanceDataAnalysis(String jsonStr); void addBridgeValueByNSD(String jsonStr); void elongationDataAnalysis(String jsonStr); }  cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
@@ -15,9 +15,11 @@ import com.ruoyi.device.service.CollectBridgeService; import com.ruoyi.device.vo.DeviceMqttVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; @@ -36,97 +38,108 @@ @Slf4j public class CollectBridgeServiceImpl extends ServiceImpl<CollectBridgeMapper, CollectBridge> implements CollectBridgeService { @Autowired private CollectBridgeMapper collectBridgeMapper; /** * å¡«å ééæ°æ® * @param jsonObject */ @Override public void addBridgeValue(JSONObject jsonObject) { JSONArray dataArray = jsonObject.getJSONArray("data"); for (int i = 0; i < dataArray.size(); i++) { JSONObject listInfo = dataArray.getJSONObject(i); // å卿°æ® String dataStream = listInfo.getString("dataStream"); if (dataStream.equals("DQCS.DQCS.SN")) { JSONArray dataPoints = listInfo.getJSONArray("dataPoints"); JSONObject pointsJSONObject = dataPoints.getJSONObject(0); String entrustCode = pointsJSONObject.getString("value"); // è§£ææ¶é´æ³ Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time")); LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); // å åå¨ç¼å·, åç»åå¨å¼ CollectBridge collectBridge = new CollectBridge(); collectBridge.setEntrustCode(entrustCode); collectBridge.setCollectDate(collectDate); baseMapper.insert(collectBridge); } // å¯åå¨å°åçäº64è·åç»æå¼ if (dataStream.equals("DQCS.DQCS.64")) { JSONArray dataPoints = listInfo.getJSONArray("dataPoints"); JSONObject pointsJSONObject = dataPoints.getJSONObject(0); String value = pointsJSONObject.getString("value"); if (value.equals("64")) { for (int j = 0; j < dataArray.size(); j++) { JSONObject listInfo2 = dataArray.getJSONObject(j); String dataStream2 = listInfo2.getString("dataStream"); // å¯åå¨å°åçäº64è·åç»æå¼ if (dataStream2.equals("DQCS.DQCS.DZZ")) { JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints"); JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0); String collectValue = pointsJSONObject2.getString("value"); // è§£ææ¶é´æ³ Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time")); LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); // æ¥è¯¢ææ°ä¸æ¡æ°æ® CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery() .orderByDesc(CollectBridge::getCollectDate) .last("limit 1")); // å¤æä¸¤æ¡æ°æ®æ¯å¦ç¸å·®å¨10åéä¹å åææ²¡æç¼å· if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) && StringUtils.isNotBlank(collectBridge.getEntrustCode())) { // ä¿®æ¹æ£éªå¼ collectBridge.setCollectValue(collectValue); baseMapper.updateById(collectBridge); } else { // åªåå¨å¼ CollectBridge bridge = new CollectBridge(); bridge.setCollectValue(collectValue); bridge.setCollectDate(collectDate); baseMapper.insert(bridge); } } } } } } // JSONArray dataArray = jsonObject.getJSONArray("data"); // for (int i = 0; i < dataArray.size(); i++) { // JSONObject listInfo = dataArray.getJSONObject(i); // // å卿°æ® // String dataStream = listInfo.getString("dataStream"); // if (dataStream.equals("DQCS.DQCS.SN")) { // JSONArray dataPoints = listInfo.getJSONArray("dataPoints"); // JSONObject pointsJSONObject = dataPoints.getJSONObject(0); // String entrustCode = pointsJSONObject.getString("value"); // // è§£ææ¶é´æ³ // Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time")); // LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); // // // å åå¨ç¼å·, åç»åå¨å¼ // CollectBridge collectBridge = new CollectBridge(); // collectBridge.setEntrustCode(entrustCode); // collectBridge.setCollectDate(collectDate); // baseMapper.insert(collectBridge); // // } // // å¯åå¨å°åçäº64è·åç»æå¼ // if (dataStream.equals("DQCS.DQCS.64")) { // JSONArray dataPoints = listInfo.getJSONArray("dataPoints"); // JSONObject pointsJSONObject = dataPoints.getJSONObject(0); // String value = pointsJSONObject.getString("value"); // // if (value.equals("64")) { // for (int j = 0; j < dataArray.size(); j++) { // JSONObject listInfo2 = dataArray.getJSONObject(j); // String dataStream2 = listInfo2.getString("dataStream"); // // å¯åå¨å°åçäº64è·åç»æå¼ // if (dataStream2.equals("DQCS.DQCS.DZZ")) { // JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints"); // JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0); // String collectValue = pointsJSONObject2.getString("value"); // // // è§£ææ¶é´æ³ // Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time")); // LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); // // // æ¥è¯¢ææ°ä¸æ¡æ°æ® // CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery() // .orderByDesc(CollectBridge::getCollectDate) // .last("limit 1")); // // // å¤æä¸¤æ¡æ°æ®æ¯å¦ç¸å·®å¨10åéä¹å åææ²¡æç¼å· // if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) && // StringUtils.isNotBlank(collectBridge.getEntrustCode())) { // // ä¿®æ¹æ£éªå¼ // collectBridge.setCollectValue(collectValue); // baseMapper.updateById(collectBridge); // } else { // // åªåå¨å¼ // CollectBridge bridge = new CollectBridge(); // bridge.setCollectValue(collectValue); // bridge.setCollectDate(collectDate); // baseMapper.insert(bridge); // } // } // } // } // } // } } @Override public void addBridgeValueByNS(String jsonStr) { public void dcResistanceDataAnalysis(String jsonStr) { Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType()); if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){ List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType()); //è¿æ»¤åºå å«å®é çµé»å¼ç对象 // å¤ç NSDQCS.DQCS.DZZ æ°æ® Double value = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ); RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ, value); String entrustCode = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_SN); BigDecimal value = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)); Long count = collectBridgeMapper.selectCount(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode, entrustCode)); if(count>0L){ collectBridgeMapper.update(null,Wrappers.<CollectBridge>lambdaUpdate() .set(CollectBridge::getCollectValue,value) .set(CollectBridge::getLastCollectDate,LocalDateTime.now()) .eq(CollectBridge::getEntrustCode,entrustCode)); }else{ collectBridgeMapper.insert(new CollectBridge(entrustCode,value,LocalDateTime.now(),LocalDateTime.now())); } } } @Override public void addBridgeValueByNSD(String jsonStr) { public void elongationDataAnalysis(String jsonStr) { Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType()); if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){ List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType()); //è¿æ»¤åºå å«å®é çµé»å¼ç对象 // å¤ç NSTSSC.TSSC.WY æ°æ® processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_WY,3); // 伸é¿çï¼å¤ç NSTSSC.TSSC.SCL æ°æ® processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0); } } @@ -135,17 +148,16 @@ * @param dataList æ°æ®å表 * @param dataStream æ°æ®æµæ è¯ */ private Double getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) { private String getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) { DeviceMqttVO deviceMqttVO = dataList.stream() .filter(f -> StringUtils.equals(f.getDataStream(), dataStream)) .findFirst() .orElse(null); if(Objects.nonNull(deviceMqttVO)){ List<DeviceMqttVO.DataPoint> dataPoints = deviceMqttVO.getDataPoints(); BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO; return value.doubleValue(); return CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():""; } return 0.0; return ""; } /** @@ -153,20 +165,26 @@ * @param dataList æ°æ®å表 * @param dataStream æ°æ®æµæ è¯ * @param maxSize ä¿åçæå¤§ä¸ªæ° * @param minVal å卿°æ®çæå°å¼ï¼ä½äºè¯¥å¼åè·³è¿ï¼-1代表ä¸éå¶ */ private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize){ private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize,Double minVal){ // çéåºå½åæ°æ®æµå¯¹åºçæ°æ® Double value = getValueByDataStream(dataList, dataStream); // Double value = Double.parseDouble(getValueByDataStream(dataList, dataStream)); Double value = BigDecimal.valueOf(Math.random()*100).setScale(7, RoundingMode.HALF_EVEN).doubleValue(); //妿æå°å¼ä¸ä¸ºç©ºä¸ä¸ä¸º-1ï¼è·åå°çå¼å°äºæå°å¼åè·³è¿ä¸åå¤ç if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){ return; } //夿keyæ¯å¦åå¨ boolean existKey = RedisUtil.hasKey(dataStream); if(existKey){ long listSize = RedisUtil.lGetListSize(dataStream); if(listSize<maxSize){ RedisUtil.lSet(dataStream,value); long zSetSize = RedisUtil.getZSetSize(dataStream); //å¦ææ°æ®é¿åº¦è¶ è¿æå¤§ä¸ªæ°ï¼åå é¤åæ°æä½çæ°æ® if(zSetSize>=maxSize){ RedisUtil.delZSetRange(dataStream,0,0); } }else{ RedisUtil.lSet(dataStream,value); } RedisUtil.addZSet(dataStream,System.currentTimeMillis(),value); } /** cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java
@@ -88,7 +88,12 @@ if (dataConfig.getStructureItemParameterId() == null) { throw new RuntimeException("ç¼ºå°æ£æµé¡¹id"); } List<DataConfig> list = baseMapper.selectList(Wrappers.<DataConfig>lambdaQuery().eq(DataConfig::getStructureItemParameterId, dataConfig.getStructureItemParameterId())); List<DataConfig> list = baseMapper.selectList(Wrappers.<DataConfig>lambdaQuery() .eq(DataConfig::getDeviceId,dataConfig.getDeviceId()) .eq(DataConfig::getInspectionItem,dataConfig.getInspectionItem()) .eq(DataConfig::getInspectionItemClass,dataConfig.getInspectionItemClass()) .eq(DataConfig::getInspectionItemSubclass,dataConfig.getInspectionItemSubclass()) .eq(DataConfig::getStructureItemParameterId, dataConfig.getStructureItemParameterId())); return Result.success(list); }  cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -17,6 +17,8 @@ import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.common.utils.RedisUtil; import com.ruoyi.device.constant.DCResistanceMqttConstants; import com.ruoyi.device.dto.*; import com.ruoyi.device.mapper.CollectBridgeMapper; import com.ruoyi.device.mapper.DeviceMaintenanceMapper; @@ -49,6 +51,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -253,10 +256,26 @@ // å¤æè®¾å¤æ¯å¦æ¯æ°åç´æ¡¥JCZX-ZB-ER02022 if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) { map.putAll(dataCollectBridge(list, device, dto.getEntrustCode())); }else if(device.getFileType().equals(".mqtt")){ //妿æä»¶ç±»åæ¯mqtt,åä¸èµ°ééå¨éé Map<String, List<DataConfig>> userMap = list.stream() .peek(i -> { String itemName = i.getInspectionItem(); if (StringUtils.isNotBlank(i.getInspectionItemClass())) { itemName += "@" + i.getInspectionItemClass(); } String name = i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? itemName + "," : itemName + "," + i.getInspectionItemSubclass(); } else { map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dto.getDbUserName(),dto.getDbPassword(),dto.getDbTable())); // æ·»å æ£éªé¡¹åç§° i.setInsProductItem(name); }) .collect(Collectors.groupingBy(DataConfig::getInsProductItem)); map.putAll(getActualResistanceValueAsMap(userMap, device,dto.getEntrustCode())); }else { String dbUserName = StringUtils.isNotBlank(dto.getDbUserName())?dto.getDbUserName():""; String dbPassword = StringUtils.isNotBlank(dto.getDbPassword())?dto.getDbPassword():""; String dbTable = StringUtils.isNotBlank(dto.getDbTable())?dto.getDbTable():""; map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dbUserName,dbPassword,dbTable)); } } @@ -268,6 +287,46 @@ } else { return Result.success(null); } } /** * ä» Redis ä¸è·åå®é çµé»å¼ï¼å¹¶ä»¥é®å¼å¯¹å½¢å¼è¿å * @param dataConfig æ°æ®é ç½®ä¿¡æ¯ * @param device 设å¤ä¿¡æ¯ * @return å å«å®é çµé»å¼å¤çç»æçé®å¼å¯¹ï¼è¥æªè·åå°æææ°æ®åè¿å空 Map */ public Map<String, Object> getActualResistanceValueAsMap(Map<String, List<DataConfig>> dataConfig, Device device,String entrustCode) { Map<String, Object> map = new HashMap<>(); if (ObjectUtils.isEmpty(dataConfig)) { return map; } dataConfig.forEach((k, v) -> { AtomicInteger numberOfDataEntries = new AtomicInteger(); List<Object> list = new ArrayList<>(); for (int config = 0; config < v.size(); config++) { String refery = DataAcquisition.getRefer(v.get(config).getRefery()); if (refery.equals(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)){ // æ¥è¯¢å¯¹åºå§æç¼å·çæ°æ® // Object value = RedisUtil.get(refery); CollectBridge collectBridge = collectBridgeMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode,entrustCode).last("limit 1")); if(Objects.isNull(collectBridge)){ throw new ErrorException("ç´æµçµé»æ°éå¼å¸¸ï¼æ²¡ææ¾å°å§æç¼å·ä¸ºã"+entrustCode+"ãçæ°æ®"); } list.add(0,1);//æµè¯é¿åº¦ï¼é»è®¤1 list.add(1,Objects.isNull(collectBridge.getCollectTemperature())?0.0:collectBridge.getCollectTemperature());//todo:æ¸©åº¦ï¼ææ¶æªééå°å¼ list.add(2,collectBridge.getCollectValue());//å®é çµé»å¼ }else { // ä» Redis ä¸è·ååè¡¨æ°æ® List<?> objectList = RedisUtil.lGet(refery, 0, -1); list.addAll(objectList); } numberOfDataEntries.getAndIncrement(); } // è¿è¡å ¬å¼è®¡ç® Object resultValue = DataAcquisition.calculationFormula(list, v.get(0), k, device); map.put(k, resultValue); }); return map; } /** @@ -291,21 +350,21 @@ Map<String, Object> map = new HashMap<>(); userMap.forEach((k, v) -> { List<String> resultValue = new ArrayList<>(); // æ¥è¯¢ç´æ¡¥çµæµçµé»æ°éå¼ List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery() .like(CollectBridge::getEntrustCode, entrustCode) .orderByAsc(CollectBridge::getCollectDate)); resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList()); Map<String, Object> hashMap = new HashMap<>(); hashMap.put("equipName", device.getDeviceName()); hashMap.put("equipValue", device.getManagementNumber()); hashMap.put("result", resultValue); map.put(k, hashMap); }); // userMap.forEach((k, v) -> { // List<String> resultValue = new ArrayList<>(); // // æ¥è¯¢ç´æ¡¥çµæµçµé»æ°éå¼ // List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery() // .like(CollectBridge::getEntrustCode, entrustCode) // .orderByAsc(CollectBridge::getCollectDate)); // // resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList()); // // Map<String, Object> hashMap = new HashMap<>(); // hashMap.put("equipName", device.getDeviceName()); // hashMap.put("equipValue", device.getManagementNumber()); // hashMap.put("result", resultValue); // map.put(k, hashMap); // }); return map; }  cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
@@ -11,6 +11,7 @@ import com.ruoyi.common.utils.RedisUtil; import com.ruoyi.device.constant.DCResistanceMqttConstants; import com.ruoyi.device.dto.DeviceCollectionDto; import com.ruoyi.device.mapper.CollectBridgeMapper; import com.ruoyi.device.pojo.DataConfig; import com.ruoyi.device.pojo.Device; import com.ruoyi.framework.exception.ErrorException; @@ -40,6 +41,8 @@ private static final String splitIdentifier = "@-@"; // èªå®ä¹å¯ä¸æ è¯åå²ç¬¦ public static final String frequency = "frequency"; private CollectBridgeMapper collectBridgeMapper; /** * æ°éå ¥å£ @@ -74,14 +77,17 @@ * mdbEntrustCode mdbæä»¶éè¦ï¼å§æç¼å·å段 为ä»ä¹æ²¡æå»è¿ä¸ªmdbåç¼å¢ï¼å 为已ç»ç»å®¢æ·çé¨åçµèä¸å®è£ äºééå¨ï¼èç¨æ·ä¸æ¥åéæ°å®è£ ééå¨ï¼æä»¥å°±æ²¡æå»é¤ * mdbSampleCode mdbæä»¶éè¦ï¼æ ·åç¼å·å段 */ String mdbEntrustCode = StringUtils.isNotBlank(device.getEntrustCode())?device.getEntrustCode():""; String mdbSampleCode = StringUtils.isNotBlank(device.getSampleCode())?device.getSampleCode():""; String dbFileName = StringUtils.isNotBlank(device.getDbFileName())?device.getDbFileName():""; String http = HTTP + ip + GETFILE + "?filePath=" + device.getCollectUrl() + "&fileExtension=" + device.getFileType() + "&entrustCode=" + entrustCode + "&sampleCode=" + sampleCode + "&mdbEntrustCode=" + device.getEntrustCode() + "&mdbSampleCode=" + device.getSampleCode() + "&dbFileName=" + device.getDbFileName()+ "&mdbEntrustCode=" + mdbEntrustCode + "&mdbSampleCode=" + mdbSampleCode + "&dbFileName=" + dbFileName + "&dbUserName=" + dbUserName + "&dbPassword=" + dbPassword + "&dbTable=" + dbTable; @@ -89,7 +95,6 @@ String result = null; try { result = HttpUtil.get(http); System.out.println("请æ±è¿åç»æ: " + result); } catch (IORuntimeException e) { e.printStackTrace(); throw new ErrorException("æå¨çµèæªå®è£ ææªå¯å¨ï¼LIMSæä»¶ééå¨ï¼"); @@ -102,7 +107,7 @@ throw new ErrorException(jsonObject.get("msg") + ""); } } else { String data = jsonObject.get("data") + ""; String data = jsonObject.get("data") + ""; // èèå°ä¸ä¸ªæ£æµé¡¹å¯è½ä¼åå¨å¤ä¸ªæ°éé ç½®ï¼æä»¥éè¦è¿è¡åç» Map<String, List<DataConfig>> userMap = dataConfig.stream() .peek(i -> { @@ -152,9 +157,9 @@ case ".png": map = readPngString(data, userMap, device); break; case ".mqtt": map = getActualResistanceValueAsMap(userMap, device); break; // case ".mqtt": // map = getActualResistanceValueAsMap(userMap, device); // break; default: map = null; break; @@ -166,68 +171,6 @@ } return map; } } /** * ä» Redis ä¸è·åå®é çµé»å¼ï¼å¹¶ä»¥é®å¼å¯¹å½¢å¼è¿å * @param dataConfig æ°æ®é ç½®ä¿¡æ¯ * @param device 设å¤ä¿¡æ¯ * @return å å«å®é çµé»å¼å¤çç»æçé®å¼å¯¹ï¼è¥æªè·åå°æææ°æ®åè¿å空 Map */ public static Map<String, Object> getActualResistanceValueAsMap(Map<String, List<DataConfig>> dataConfig, Device device) { Map<String, Object> map = new HashMap<>(); if (ObjectUtils.isEmpty(dataConfig)) { return map; } dataConfig.forEach((k, v) -> { AtomicInteger numberOfDataEntries = new AtomicInteger(); List<Object> list = new ArrayList<>(); for (int config = 0; config < v.size(); config++) { String refery = getRefer(v.get(config).getRefery()); if (refery.equals(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)){ // ä» Redis ä¸è·åä¸ä¸ªæ°æ® Object value = RedisUtil.get(refery); list.add(value); numberOfDataEntries.addAndGet(1); }else { // ä» Redis ä¸è·ååè¡¨æ°æ® // List<Object> objectList = RedisUtil.lGet(refery, 0, -1); List<?> objectList = RedisUtil.lGet(refery, 0, -1); for (Object item : objectList) { // System.out.println(item); String[] split = item.toString().replace("[","").replace("]","").split(","); for (Object a : split) { list.add(a); numberOfDataEntries.addAndGet(1); } } } } // æ¼æ¥æ°éé ç½® List<Object> result = new ArrayList<>(); for (int i = 0; i < numberOfDataEntries.get(); i++) { StringBuilder aggregate = new StringBuilder(); for (int j = 0; j < v.size(); j++) { int index; if (j == 0) { index = i; } else { index = numberOfDataEntries.get() + i; } if (index < list.size()) { aggregate.append(list.get(index).toString()).append(","); } } if (aggregate.length() > 0) { aggregate.setLength(aggregate.length() - 1); } result.add(aggregate.toString()); } // è¿è¡å ¬å¼è®¡ç® Object resultValue = calculationFormula(result, v.get(0), k, device); map.put(k, resultValue); }); return map; } @@ -550,7 +493,7 @@ * @param dataConfig åå¨å ¬å¼ç对象 * @return */ private static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem, Device device) { public static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem, Device device) { if (list.size() == 0) { Map<String, Object> hashMap = new HashMap<>(); hashMap.put("equipName", device.getDeviceName()); @@ -761,7 +704,7 @@ } // 鲿¢åç §ç©ä¸ºç©ºæ¥éï¼è¿è¡å¤æå¦æä¸ºç©ºèµå¼ç©ºå符 private static String getRefer(String refer) { public static String getRefer(String refer) { return ObjectUtils.isNotEmpty(refer) ? refer.replaceAll(" ", "") : ""; } /** cnas-device/src/main/java/com/ruoyi/device/vo/DeviceMqttVO.java
@@ -32,7 +32,7 @@ /** * å®é å¼ */ private BigDecimal value; private String value; } } inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
@@ -9,6 +9,7 @@ import com.ruoyi.inspect.dto.SampleProductDto2; import com.ruoyi.inspect.dto.SampleProductExportDto; import com.ruoyi.inspect.pojo.InsOrder; import com.ruoyi.inspect.vo.IfsOrderVO; import com.ruoyi.inspect.vo.InsOrderPrintingVo; import com.ruoyi.inspect.vo.SampleDefectsFatherVo; import org.apache.ibatis.annotations.Param; @@ -144,4 +145,6 @@ * @return */ Integer selectNotSpotCheckOrder(@Param("itmeId") Integer itmeId, @Param("startTime") String startTime, @Param("endTime") String endTime); IfsOrderVO selectOrderInfoById(@Param("id") Integer id); } inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java
@@ -11,6 +11,7 @@ import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo; import com.ruoyi.inspect.vo.InsOrderPlanVO; import com.ruoyi.inspect.vo.SampleVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,6 +23,7 @@ * @createDate 2024-03-14 17:14:57 * @Entity com.yuanchu.mom.pojo.InsSample */ @Mapper public interface InsSampleMapper extends BaseMapper<InsSample> { IPage<InsOrderPlanVO> findInsSampleAndOrder(Page page, inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -37,6 +37,7 @@ import com.ruoyi.inspect.service.InsOrderStateService; import com.ruoyi.inspect.service.InsProductService; import com.ruoyi.inspect.service.InsSampleService; import com.ruoyi.inspect.vo.IfsOrderVO; import com.ruoyi.inspect.vo.InsOrderPrintingVo; import com.ruoyi.system.mapper.UserMapper; import lombok.AllArgsConstructor; @@ -514,9 +515,10 @@ @Override public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) { Map<String, Object> map = new HashMap<>(); InsOrder insOrder = insOrderMapper.selectById(id); // InsOrder insOrder = insOrderMapper.selectById(id); IfsOrderVO ifsOrderVO = insOrderMapper.selectOrderInfoById(id); List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory); map.put("insOrder", insOrder); map.put("insOrder", ifsOrderVO); map.put("sampleProduct", list); //æ¥è¯¢ææè®°å½æ¨¡çå»é List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory); inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package com.ruoyi.inspect.vo; import com.ruoyi.inspect.pojo.InsOrder; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * ifs订åvo */ @Data public class IfsOrderVO extends InsOrder implements Serializable { /** * ç»ç¼é¢è² */ @ApiModelProperty("ç»ç¼é¢è²") private String insulationColor; /** * 夿¤é¢è² */ @ApiModelProperty("夿¤é¢è²") private String outerColor; /** * çå· */ @ApiModelProperty("çå·") private String drumNo; /** * æ¯å¦æ¯æå订å(0:å¦ 1:æ¯) */ @ApiModelProperty("æ¯å¦æ¯æå订å(0:å¦ 1:æ¯)") private Integer isSplitOrder; } inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -469,4 +469,22 @@ and ip.structure_item_parameter_id = #{itmeId} group by io.id) a </select> <select id="selectOrderInfoById" resultType="com.ruoyi.inspect.vo.IfsOrderVO"> select io.*, isor.insulation_color, isor.outer_color, isor.drum_no, iiq.is_split_order from ins_order io left join ifs_inventory_quantity iiq on io.ifs_inventory_id=iiq.id left join ifs_split_order_record isor on iiq.order_no=isor.order_no and iiq.line_no=isor.line_no and iiq.release_no=isor.release_no and iiq.receipt_no=isor.receipt_no and iiq.part_no=isor.part_no AND iiq.update_batch_no = isor.lot_batch_no where io.state !=-1 AND io.id = #{id} LIMIT 1 </select> </mapper> ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtil.java
@@ -628,5 +628,54 @@ return 0; } } //====================================================ZSet======================================================= /** * è·åzsetæ°æ®é¿åº¦ * @param key é® * @return */ public static long getZSetSize(String key){ try { return redisTemplate.opsForZSet().size(key); }catch (Exception e){ e.printStackTrace(); return 0L; } } /** * æ°å¢ä¸ä¸ªzset * @param key é® * @param source åæ° * @param value å¼ * @return */ public static boolean addZSet(String key,double source,Object value){ try { return redisTemplate.opsForZSet().add(key, value, source); }catch(Exception e){ e.printStackTrace(); return false; } } /** * å é¤zsetå ç´ ï¼ææå * @param key é® * @param start å¼å§ç´¢å¼ * @param end ç»æç´¢å¼ * @return */ public static long delZSetRange(String key,long start,long end){ try { return redisTemplate.opsForZSet().removeRange(key,start,end); }catch(Exception e){ e.printStackTrace(); return 0L; } } }