| | |
| | | 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; |
| | |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | import java.io.OutputStream; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public Result<?> dataAcquisition(HttpServletRequest request, DeviceCollectionDto dto) { |
| | | |
| | | |
| | | |
| | | // 查询检验项 |
| | | List<Integer> itemIds = dto.getItemIds(); |
| | | if (CollectionUtils.isEmpty(itemIds)) { |
| | |
| | | // 数采返回信息 |
| | | Map<String, Object> map = new HashMap<>(); |
| | | for (Device device : deviceList) { |
| | | |
| | | Device device1 = deviceMapper.selectById(device.getId()); |
| | | dto.setDbUserName(device1.getDbUserName()); |
| | | dto.setDbPassword(device1.getDbPassword()); |
| | | dto.setDbTable(device1.getDbTable()); |
| | | String ip = device.getIp(); |
| | | |
| | | // 根据检验项获取config |
| | | List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery() |
| | | .in(DataConfig::getStructureItemParameterId, itemParameterIds) |
| | | .eq(DataConfig::getDeviceId, device.getId())); |
| | | |
| | | // 获取设备配置类 |
| | | // 判断设备是否是数字直桥 |
| | | // 判断设备是否是数字直桥JCZX-ZB-ER02022 |
| | | if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) { |
| | | map.putAll(dataCollectBridge(list, device, dto.getEntrustCode())); |
| | | } else { |
| | | map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag())); |
| | | }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(); |
| | | |
| | | // 添加检验项名称 |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | |
| | | } 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | 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; |
| | | } |
| | | |
| | |
| | | template.write(os); |
| | | os.flush(); |
| | | os.close(); |
| | | inputStream.close(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new RuntimeException("导出失败"); |
| | |
| | | DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(i); |
| | | DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | // 维修日期 |
| | | deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getDate().format(dateTimeFormatter)); |
| | | deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getMaintenanceDate().format(dateTimeFormatter)); |
| | | // 处理方法 |
| | | deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getContent()); |
| | | deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getMaintenanceContent()); |
| | | // 备注 |
| | | deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getComments()); |
| | | deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getRemark()); |
| | | } |
| | | |
| | | deviceMetricRecordAndMaintenanceDtoList.add(deviceMetricRecordAndMaintenanceDto); |
| | |
| | | template.write(os); |
| | | os.flush(); |
| | | os.close(); |
| | | inputStream.close(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new RuntimeException("导出失败"); |