代码优化

This commit is contained in:
xy
2024-10-22 11:17:30 +08:00
parent 6d7000ddc2
commit 021d17e6e7
2 changed files with 14 additions and 94 deletions

View File

@@ -44,6 +44,7 @@ import com.njcn.mq.template.AppFileMessageTemplate;
import com.njcn.mq.template.AppFileStreamMessageTemplate;
import com.njcn.redis.pojo.enums.AppRedisKey;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.rt.api.RtFeignClient;
import com.njcn.zlevent.api.WaveFeignClient;
import com.njcn.zlevent.pojo.dto.WaveTimeDto;
import lombok.AllArgsConstructor;
@@ -97,6 +98,7 @@ public class MqttMessageHandler {
private final OverlimitMapper overlimitMapper;
private final ChannelObjectUtil channelObjectUtil;
private final WaveFeignClient waveFeignClient;
private final RtFeignClient rtFeignClient;
@Autowired
Validator validator;
@@ -205,95 +207,6 @@ public class MqttMessageHandler {
}
}
// /**
// * 装置类型模板应答
// * 1.判断网关的类型
// * 2.直联设备的DevCfg和DevMod是以直联设备为准上送平台端平台端保存。通过校验DevMod模板信息来从平台端模板池中选取对应的模板如果找不到匹配模板需告警提示人工干预处理。
// * 3.平台端需读取装置的DevMod来判断网关支持的设备模板包含设备型号和模板版本根据app提交的接入子设备DID匹配数据模板型号及版本生成DevCfg下发给网关网关根据下发信息生成就地设备点表。
// * @param topic
// * @param message
// * @param nDid
// * @param payload
// */
// @MqttSubscribe(value = "/Pfm/DevRsp/{version}/{edgeId}",qos = 1)
// @Transactional(rollbackFor = Exception.class)
// public void devModelOperation(String topic, MqttMessage message, @NamedValue("version") String version, @NamedValue("edgeId") String nDid, @Payload String payload){
// log.info("收到当前设备所用模板响应--->" + nDid);
// DeviceLogDTO logDto = new DeviceLogDTO();
// try{
// logDto.setUserName(RequestUtil.getUsername());
// logDto.setLoginName(RequestUtil.getLoginName());
// } catch (Exception e) {
// logDto.setUserName("系统重启或定时任务创建");
// logDto.setLoginName(null);
// }
// logDto.setOperate(nDid + "设备类型模板应答");
// logDto.setResult(1);
// //业务处理
// Gson gson = new Gson();
// ModelDto modelDto = gson.fromJson(new String(message.getPayload(), StandardCharsets.UTF_8), ModelDto.class);
// if (Objects.equals(modelDto.getType(),Integer.parseInt(TypeEnum.TYPE_18.getCode()))){
// List<DevModInfoDto> list = modelDto.getMsg().getDevMod();
// List<DevCfgDto> list2 = modelDto.getMsg().getDevCfg();
// if (CollectionUtils.isEmpty(list)){
// log.error(AccessResponseEnum.MODEL_VERSION_ERROR.getMessage());
// logDto.setResult(0);
// logDto.setFailReason(AccessResponseEnum.MODEL_VERSION_ERROR.getMessage());
// csLogsFeignClient.addUserLog(logDto);
// //有异常删除缓存的模板信息
// redisUtil.delete(AppRedisKey.MODEL + nDid);
// throw new BusinessException(AccessResponseEnum.MODEL_VERSION_ERROR);
// }
// //校验前置传递的装置模板库中是否存在
// List<CsModelDto> modelList = new ArrayList<>();
// list.forEach(item->{
// Integer did = null;
// for (DevCfgDto item2 : list2) {
// if (Objects.equals(item.getDevType(),item2.getDevType())){
// did = item2.getDid();
// }
// }
// CsModelDto csModelDto = new CsModelDto();
// CsDevModelPO po = devModelFeignClient.findModel(item.getDevType(),item.getVersionNo(),item.getVersionDate()).getData();
// if (Objects.isNull(po)){
// log.error(AccessResponseEnum.MODEL_NO_FIND.getMessage());
// logDto.setResult(0);
// logDto.setFailReason(AccessResponseEnum.MODEL_NO_FIND.getMessage());
// csLogsFeignClient.addUserLog(logDto);
// //有异常删除缓存的模板信息
// redisUtil.delete(AppRedisKey.MODEL + nDid);
// throw new BusinessException(AccessResponseEnum.MODEL_NO_FIND);
// }
// if (Objects.equals(po.getType(),0)){
// List<CsDataSet> dataSetList = dataSetFeignClient.getModuleDataSet(po.getId()).getData();
// if (CollectionUtils.isEmpty(dataSetList)){
// logDto.setResult(0);
// logDto.setFailReason(AccessResponseEnum.MODULE_NUMBER_IS_NULL.getMessage());
// csLogsFeignClient.addUserLog(logDto);
// //有异常删除缓存的模板信息
// redisUtil.delete(AppRedisKey.MODEL + nDid);
// throw new BusinessException(AccessResponseEnum.MODULE_NUMBER_IS_NULL);
// }
// csModelDto.setModuleNumber(dataSetList.size());
// }
// csModelDto.setDevType(po.getDevTypeName());
// csModelDto.setModelId(po.getId());
// csModelDto.setDid(did);
// csModelDto.setType(po.getType());
// modelList.add(csModelDto);
// });
// //存储模板id
// String key2 = AppRedisKey.MODEL + nDid;
// redisUtil.saveByKeyWithExpire(key2,modelList,600L);
// //存储监测点模板信息,用于界面回显
// List<String> modelId = modelList.stream().map(CsModelDto::getModelId).collect(Collectors.toList());
// List<CsLineModel> lineList = csLineModelService.getMonitorNumByModelId(modelId);
// String key = AppRedisKey.LINE + nDid;
// redisUtil.saveByKeyWithExpire(key,lineList,600L);
// //csLogsFeignClient.addUserLog(logDto);
// }
// }
/**
* 设备响应
* @param topic
@@ -626,10 +539,7 @@ public class MqttMessageHandler {
JSONObject jsonObject2 = JSONObject.parseObject(JSON.toJSONString(dataDto));
AppAutoDataMessage appAutoDataMessage = JSONObject.toJavaObject(jsonObject2, AppAutoDataMessage.class);
appAutoDataMessage.setId(nDid);
appAutoDataMessage.getMsg().getDataArray().forEach(item->{
log.info(nDid + "处理实时数据" + item.getDataAttr());
});
appAutoDataMessageTemplate.sendMember(appAutoDataMessage);
rtFeignClient.analysis(appAutoDataMessage);
break;
//处理主动上送的统计数据
case 2:

View File

@@ -64,12 +64,12 @@ public class FileServiceImpl implements IFileService {
private final ICsWaveAnalysisService iCsWaveAnalysisService;
private final ChannelObjectUtil channelObjectUtil;
private final RemoveInfoUtils removeInfoUtils;
private static Integer mid = 1;
@Override
public void analysisFileInfo(AppFileMessage appFileMessage) {
if (Objects.equals(appFileMessage.getCode(), AccessEnum.SUCCESS.getCode())){
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
int mid = 1;
int range = 51200;
String fileName = appFileMessage.getMsg().getFileInfo().getName();
//缓存文件信息用于文件流拼接
@@ -100,10 +100,20 @@ public class FileServiceImpl implements IFileService {
csWave.setCheckNumber(appFileMessage.getMsg().getFileInfo().getFileCheck());
csWave.setStatus(0);
csWaveService.save(csWave);
//获取mid
Object object = channelObjectUtil.getDeviceMid(appFileMessage.getId());
if (!Objects.isNull(object)) {
mid = (Integer) object;
}
//请求当前文件的数据
askFileStream(appFileMessage.getId(),mid,fileName,-1,range);
redisUtil.saveByKey(AppRedisKey.RMQ_FILE_CONSUME_KEY.concat(fileInfoDto.getName()), fileInfoDto);
redisUtil.delete(AppRedisKey.TIME+fileName);
mid = mid + 1;
if (mid > 10000) {
mid = 1;
}
redisUtil.saveByKey(AppRedisKey.DEVICE_MID + appFileMessage.getId(),mid);
}
} else {
throw new BusinessException(AccessResponseEnum.RESPONSE_ERROR);