在线补招装置数据
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.fallback.DeviceFtpClientFallbackFactory;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/deviceFile", fallbackFactory = DeviceFtpClientFallbackFactory.class,contextId = "deviceFile")
|
||||
|
||||
public interface DeviceFtpFeignClient {
|
||||
|
||||
@PostMapping("/downloadFile")
|
||||
HttpResult<String> downloadFile(@RequestParam("nDid") String nDid, @RequestParam("name") String name, @RequestParam("size") Integer size, @RequestParam("fileCheck") String fileCheck);
|
||||
}
|
||||
@@ -1,18 +1,10 @@
|
||||
package com.njcn.csdevice.api;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.OperateType;
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.common.utils.LogUtil;
|
||||
import com.njcn.csdevice.api.fallback.WlRecordClientFallbackFactory;
|
||||
import com.njcn.csdevice.pojo.param.WlRecordParam;
|
||||
import com.njcn.csdevice.pojo.po.WlRecord;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.njcn.csdevice.api.fallback;
|
||||
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.csdevice.api.DeviceFtpFeignClient;
|
||||
import feign.hystrix.FallbackFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class DeviceFtpClientFallbackFactory implements FallbackFactory<DeviceFtpFeignClient> {
|
||||
@Override
|
||||
public DeviceFtpFeignClient create(Throwable cause) {
|
||||
//判断抛出异常是否为解码器抛出的业务异常
|
||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||
if (cause.getCause() instanceof BusinessException) {
|
||||
BusinessException businessException = (BusinessException) cause.getCause();
|
||||
}
|
||||
Enum<?> DeviceFtpFeignClient = exceptionEnum;
|
||||
return new DeviceFtpFeignClient() {
|
||||
|
||||
@Override
|
||||
public HttpResult<String> downloadFile(String nDid, String name, Integer size, String fileCheck) {
|
||||
log.error("{}异常,降级处理,异常为:{}","文件下载处理",cause.toString());
|
||||
throw new BusinessException(DeviceFtpFeignClient);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -240,13 +240,15 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
||||
queryWrapper.orderBy(true, false, "create_time");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotBlank(queryParam.getDevType()) || !Objects.isNull(queryParam.getDevType())){
|
||||
System.out.println(StrUtil.isNotBlank(queryParam.getDevType()));
|
||||
System.out.println(!Objects.isNull(queryParam.getDevType()));
|
||||
if (StrUtil.isNotBlank(queryParam.getDevType()) && !Objects.isNull(queryParam.getDevType())){
|
||||
queryWrapper.eq("cs_equipment_delivery.dev_type", queryParam.getDevType());
|
||||
}
|
||||
if (StrUtil.isNotBlank(queryParam.getDevModel()) || !Objects.isNull(queryParam.getDevModel())){
|
||||
if (StrUtil.isNotBlank(queryParam.getDevModel()) && !Objects.isNull(queryParam.getDevModel())){
|
||||
queryWrapper.eq("cs_equipment_delivery.dev_model", queryParam.getDevModel());
|
||||
}
|
||||
if (StrUtil.isNotBlank(queryParam.getDevAccessMethod()) || !Objects.isNull(queryParam.getDevAccessMethod())){
|
||||
if (StrUtil.isNotBlank(queryParam.getDevAccessMethod()) && !Objects.isNull(queryParam.getDevAccessMethod())){
|
||||
queryWrapper.eq("cs_equipment_delivery.dev_access_method", queryParam.getDevAccessMethod());
|
||||
}
|
||||
if (!Objects.isNull(queryParam.getStatus())){
|
||||
|
||||
@@ -102,6 +102,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
c.setPid(portable.getId());
|
||||
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(c.getId());
|
||||
c.setComFlag(po.getRunStatus());
|
||||
c.setNDId(po.getNdid());
|
||||
}
|
||||
portables.forEach(dev -> dev.setChildren(getChildren(dev, finalLineList)));
|
||||
checkDevSetData(portables);
|
||||
@@ -181,6 +182,7 @@ public class CsLedgerServiceImpl extends ServiceImpl<CsLedgerMapper, CsLedger> i
|
||||
c.setPid(portable.getId());
|
||||
CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(c.getId());
|
||||
c.setComFlag(po.getRunStatus());
|
||||
c.setNDId(po.getNdid());
|
||||
}
|
||||
portable.setChildren(portables);
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ public enum CsHarmonicResponseEnum {
|
||||
*/
|
||||
CS_DEVICE_COMMON_ERROR("A00600","治理稳态模块异常"),
|
||||
BIND_TARGET_ERROR("A00601","指标参数绑定异常"),
|
||||
MAKE_UP_ERROR("A00602","补招失败"),
|
||||
|
||||
;
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.njcn.csharmonic.pojo.dto;
|
||||
|
||||
import com.alibaba.nacos.shaded.com.google.gson.annotations.SerializedName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
@@ -29,4 +31,22 @@ public class MakeUpDto implements Serializable {
|
||||
@SerializedName("EndTime")
|
||||
private Integer endTime;
|
||||
|
||||
|
||||
@Data
|
||||
public static class FileInfo implements Serializable {
|
||||
|
||||
@ApiModelProperty("工程存储路径")
|
||||
private String proName;
|
||||
|
||||
@ApiModelProperty("装置nDid")
|
||||
private String nDid;
|
||||
|
||||
@ApiModelProperty("监测点id")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("需要处理的文件")
|
||||
private List<String> fileList;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.njcn.csharmonic.pojo.param;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
*/
|
||||
@Data
|
||||
public class MakeUpParam implements Serializable {
|
||||
|
||||
@ApiModelProperty("数据类型 0:稳态 1:暂态")
|
||||
private List<Integer> dataTypeList;
|
||||
|
||||
@ApiModelProperty("起始时间")
|
||||
private String startTime;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private String endTime;
|
||||
|
||||
@ApiModelProperty("工程列表")
|
||||
private List<String> proList;
|
||||
|
||||
@ApiModelProperty("监测点id")
|
||||
private String lineId;
|
||||
|
||||
@ApiModelProperty("装置nDid")
|
||||
private String nDid;
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csharmonic.pojo.param.MakeUpParam;
|
||||
import com.njcn.csharmonic.pojo.vo.MakeUpVo;
|
||||
import com.njcn.csharmonic.service.OfflineDataUploadService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
@@ -49,6 +50,7 @@ public class OfflineDataUploadController extends BaseController {
|
||||
@PostMapping(value = "/makeUpData")
|
||||
@ApiOperation("补招数据-界面")
|
||||
@ApiImplicitParam(name = "lineId", value = "监测点id", required = true)
|
||||
@Deprecated
|
||||
public HttpResult<List<MakeUpVo>> makeUpData(@RequestParam("lineId") String lineId){
|
||||
String methodDescribe = getMethodDescribe("makeUpData");
|
||||
List<MakeUpVo> list = offlineDataUploadService.getMakeUpData(lineId);
|
||||
@@ -70,4 +72,14 @@ public class OfflineDataUploadController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping(value = "/makeUp")
|
||||
@ApiOperation("设备补招")
|
||||
@ApiImplicitParam(name = "param", value = "补招参数", required = true)
|
||||
public HttpResult<List<MakeUpVo>> makeUp(@RequestBody MakeUpParam param) {
|
||||
String methodDescribe = getMethodDescribe("makeUp");
|
||||
offlineDataUploadService.startMakeUpData(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.csharmonic.service;
|
||||
|
||||
import com.njcn.csharmonic.pojo.param.MakeUpParam;
|
||||
import com.njcn.csharmonic.pojo.vo.MakeUpVo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -32,4 +33,11 @@ public interface OfflineDataUploadService {
|
||||
*/
|
||||
List<MakeUpVo> askDirOrFile(String nDid, String prjName, String path, String fileType);
|
||||
|
||||
/**
|
||||
* 开始装置数据补招
|
||||
* 根据项目递归获取文件夹下的bin文件,区分暂态、稳态,存储离线文件的方式,调用黄正剑的离线数据补招功能
|
||||
* @return
|
||||
*/
|
||||
void startMakeUpData(MakeUpParam param);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
||||
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
|
||||
import com.njcn.access.api.CsTopicFeignClient;
|
||||
import com.njcn.access.enums.AccessEnum;
|
||||
import com.njcn.access.enums.TypeEnum;
|
||||
import com.njcn.access.pojo.RspDataDto;
|
||||
import com.njcn.access.pojo.dto.CsModelDto;
|
||||
import com.njcn.access.pojo.dto.ReqAndResDto;
|
||||
import com.njcn.access.pojo.dto.file.FileDto;
|
||||
import com.njcn.access.utils.ChannelObjectUtil;
|
||||
import com.njcn.access.utils.MqttUtil;
|
||||
import com.njcn.common.config.GeneralInfo;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.api.DeviceFtpFeignClient;
|
||||
import com.njcn.csharmonic.enums.CsHarmonicResponseEnum;
|
||||
import com.njcn.csharmonic.offline.constant.OfflineConstant;
|
||||
import com.njcn.csharmonic.offline.log.Log;
|
||||
import com.njcn.csharmonic.offline.log.vo.NewTaglogbuffer;
|
||||
@@ -17,9 +23,12 @@ import com.njcn.csharmonic.offline.mincfg.AnalyseComtradeCfg;
|
||||
import com.njcn.csharmonic.offline.mincfg.tagComtradeCfg;
|
||||
import com.njcn.csharmonic.offline.vo.Response;
|
||||
import com.njcn.csharmonic.pojo.dto.MakeUpDto;
|
||||
import com.njcn.csharmonic.pojo.param.MakeUpParam;
|
||||
import com.njcn.csharmonic.pojo.vo.MakeUpVo;
|
||||
import com.njcn.csharmonic.service.OfflineDataUploadService;
|
||||
import com.njcn.influx.pojo.po.cs.PqdData;
|
||||
import com.njcn.oss.constant.OssPath;
|
||||
import com.njcn.oss.utils.FileStorageUtil;
|
||||
import com.njcn.redis.pojo.enums.AppRedisKey;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -29,17 +38,15 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectOutputStream;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.njcn.access.enums.TypeEnum.DATA_48;
|
||||
|
||||
@@ -56,9 +63,14 @@ import static com.njcn.access.enums.TypeEnum.DATA_48;
|
||||
public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
|
||||
private final MqttPublisher publisher;
|
||||
|
||||
private final CsTopicFeignClient csTopicFeignClient;
|
||||
private final RedisUtil redisUtil;
|
||||
private final ChannelObjectUtil channelObjectUtil;
|
||||
private final MqttUtil mqttUtil;
|
||||
private static Integer mid = 1;
|
||||
private final DeviceFtpFeignClient deviceFtpFeignClient;
|
||||
private final FileStorageUtil fileStorageUtil;
|
||||
private final GeneralInfo generalInfo;
|
||||
|
||||
@Override
|
||||
public byte[] uploadAnalysis(List<MultipartFile> files,String type) throws Exception{
|
||||
@@ -131,7 +143,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
if (!Objects.isNull(object)) {
|
||||
// 创建 DateTimeFormatter 对象并指定格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
List<RspDataDto.ProjectInfo> projectInfoList = objectToList(redisUtil.getObjectByKey(key),RspDataDto.ProjectInfo.class);
|
||||
List<RspDataDto.ProjectInfo> projectInfoList = channelObjectUtil.objectToList(redisUtil.getObjectByKey(key),RspDataDto.ProjectInfo.class);
|
||||
projectInfoList.forEach(item->{
|
||||
MakeUpVo vo = new MakeUpVo();
|
||||
vo.setType("dir");
|
||||
@@ -143,7 +155,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
vo.setStartTime(formattedDate);
|
||||
}
|
||||
long endTime = item.getPrjTimeEnd();
|
||||
if (endTime != 0) {
|
||||
if (endTime != -1) {
|
||||
LocalDateTime dateTime = Instant.ofEpochMilli(endTime*1000).atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
String formattedDate = dateTime.format(formatter);
|
||||
vo.setEndTime(formattedDate);
|
||||
@@ -170,7 +182,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
String key = AppRedisKey.PROJECT_INFO + nDid;
|
||||
Object object = redisUtil.getObjectByKey(key);
|
||||
if (!Objects.isNull(object)) {
|
||||
List<FileDto.DirInfo> projectInfoList = objectToList(redisUtil.getObjectByKey(key),FileDto.DirInfo.class);
|
||||
List<FileDto.DirInfo> projectInfoList = channelObjectUtil.objectToList(redisUtil.getObjectByKey(key),FileDto.DirInfo.class);
|
||||
projectInfoList.forEach(item->{
|
||||
MakeUpVo vo = new MakeUpVo();
|
||||
vo.setPrjName(prjName);
|
||||
@@ -196,6 +208,148 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startMakeUpData(MakeUpParam param) {
|
||||
List<String> fileList = new ArrayList<>();
|
||||
Map<String,List<String>> map = new HashMap<>();
|
||||
//组装文件路径
|
||||
for (String s : param.getProList()) {
|
||||
//稳态补招
|
||||
if (param.getDataTypeList().contains(0)) {
|
||||
String minPath = s + "/min";
|
||||
List<FileDto.DirInfo> projectInfoList = getFileList(param.getLineId(),param.getNDid(),minPath);
|
||||
if (CollectionUtil.isNotEmpty(projectInfoList)) {
|
||||
projectInfoList.forEach(item->{
|
||||
String linePath = item.getName();
|
||||
List<FileDto.DirInfo> lineDataList = getFileList(param.getLineId(),param.getNDid(),linePath);
|
||||
if (CollectionUtil.isNotEmpty(lineDataList)) {
|
||||
fileList.addAll(lineDataList.stream().map(FileDto.DirInfo::getName).collect(Collectors.toList()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
//暂态补招
|
||||
if (param.getDataTypeList().contains(1)) {
|
||||
//事件
|
||||
String logPath = s + "/log";
|
||||
List<FileDto.DirInfo> logList = getFileList(param.getLineId(),param.getNDid(),logPath);
|
||||
if (CollectionUtil.isNotEmpty(logList)) {
|
||||
fileList.addAll(logList.stream().map(FileDto.DirInfo::getName).collect(Collectors.toList()));
|
||||
}
|
||||
//录波文件
|
||||
String comtradePath = s + "/comtrade";
|
||||
List<FileDto.DirInfo> comtradeList = getFileList(param.getLineId(),param.getNDid(),comtradePath);
|
||||
if (CollectionUtil.isNotEmpty(comtradeList)) {
|
||||
fileList.addAll(comtradeList.stream().map(FileDto.DirInfo::getName).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(fileList)) {
|
||||
map.put(s,fileList);
|
||||
}
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(map)) {
|
||||
map.forEach((k,v)->{
|
||||
String proName = k.replace("/bd0/cmn/",OssPath.DEV_MAKE_UP_PATH + param.getNDid() + "/");
|
||||
String key = AppRedisKey.PROJECT_INFO + param.getNDid();
|
||||
v.forEach(item->{
|
||||
redisUtil.delete(key);
|
||||
Object object = redisUtil.getObjectByKey(AppRedisKey.DEVICE_MID + param.getNDid());
|
||||
if (!Objects.isNull(object)) {
|
||||
mid = (Integer) object;
|
||||
}
|
||||
askFileInfo(param.getNDid(),mid,item);
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
FileDto.FileInfo info = channelObjectUtil.objectToSingleObject(redisUtil.getObjectByKey(key),FileDto.FileInfo.class);
|
||||
String path = deviceFtpFeignClient.downloadFile(param.getNDid(),item,info.getFileSize(),info.getFileCheck()).getData();
|
||||
String lsFile = generalInfo.getBusinessTempPath() + File.separator + item.split(StrUtil.SLASH)[item.split(StrUtil.SLASH).length - 1];
|
||||
moveFile(path,getFilePath(item,param.getNDid()),lsFile);
|
||||
//删除临时文件
|
||||
File file = new File(lsFile);
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
//删除下载文件
|
||||
//fileStorageUtil.deleteFile(path);
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(CsHarmonicResponseEnum.MAKE_UP_ERROR);
|
||||
}
|
||||
});
|
||||
//推送消息,按照离线数据方式处理
|
||||
MakeUpDto.FileInfo dto = new MakeUpDto.FileInfo();
|
||||
dto.setProName(proName);
|
||||
dto.setNDid(param.getNDid());
|
||||
dto.setLineId(param.getLineId());
|
||||
dto.setFileList(v);
|
||||
publisher.send("/Web/makeUp/" + param.getLineId(), new Gson().toJson(dto), 1, false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 迁移文件
|
||||
*/
|
||||
public void moveFile(String oldPath, String newPath, String lsPath) {
|
||||
try {
|
||||
InputStream inputStream = fileStorageUtil.getFileStream(oldPath);
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(lsPath);
|
||||
// 创建一个缓冲区
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
fileOutputStream.write(buffer, 0, bytesRead);
|
||||
}
|
||||
File src = new File(lsPath);
|
||||
src.getParentFile().mkdirs();
|
||||
InputStream is = Files.newInputStream(src.toPath());
|
||||
fileStorageUtil.uploadStreamSpecifyName(is, OssPath.DEV_MAKE_UP_PATH,newPath);
|
||||
inputStream.close();
|
||||
fileOutputStream.close();
|
||||
is.close();
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(CsHarmonicResponseEnum.MAKE_UP_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 询问文件信息
|
||||
*/
|
||||
public void askFileInfo(String nDid, Integer mid, String fileName) {
|
||||
String version = csTopicFeignClient.find(nDid).getData();
|
||||
ReqAndResDto.Req reqAndResParam = new ReqAndResDto.Req();
|
||||
reqAndResParam.setMid(mid);
|
||||
reqAndResParam.setDid(0);
|
||||
reqAndResParam.setPri(AccessEnum.FIRST_CHANNEL.getCode());
|
||||
reqAndResParam.setType(Integer.parseInt(TypeEnum.TYPE_8.getCode()));
|
||||
reqAndResParam.setExpire(-1);
|
||||
String json = "{Name:\""+fileName+"\"}";
|
||||
JSONObject jsonObject = JSONObject.fromObject(json);
|
||||
reqAndResParam.setMsg(jsonObject);
|
||||
log.info("请求文件信息报文:" + new Gson().toJson(reqAndResParam));
|
||||
publisher.send("/Pfm/DevFileCmd/"+version+"/"+nDid,new Gson().toJson(reqAndResParam),1,false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取文件数据
|
||||
*/
|
||||
public List<FileDto.DirInfo> getFileList(String lineId, String nDid, String path) {
|
||||
String key = AppRedisKey.PROJECT_INFO + nDid;
|
||||
redisUtil.delete(key);
|
||||
List<FileDto.DirInfo> result = new ArrayList<>();
|
||||
askProjectInfo(lineId,nDid, Integer.parseInt(TypeEnum.TYPE_8.getCode()),path,"DevFileCmd");
|
||||
try {
|
||||
Thread.sleep(5000);
|
||||
Object object = redisUtil.getObjectByKey(key);
|
||||
if (!Objects.isNull(object)) {
|
||||
result = channelObjectUtil.objectToList(redisUtil.getObjectByKey(key),FileDto.DirInfo.class);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 询问装置项目信息报文
|
||||
@@ -235,7 +389,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
reqAndResParam.setType(8454);
|
||||
MakeUpDto makeUpDto = new MakeUpDto();
|
||||
makeUpDto.setClDid(clDid);
|
||||
makeUpDto.setDataType(Integer.parseInt(TypeEnum.DATA_48.getCode()));
|
||||
makeUpDto.setDataType(Integer.parseInt(DATA_48.getCode()));
|
||||
makeUpDto.setDataAttr(0);
|
||||
makeUpDto.setOperate(1);
|
||||
makeUpDto.setStartTime(-1);
|
||||
@@ -251,14 +405,21 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
|
||||
reqAndResParam.setMsg(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 调整文件路径
|
||||
*/
|
||||
private String getFilePath(String path, String nDid) {
|
||||
String[] parts = path.split("/");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (int i = 3; i < parts.length; i++) {
|
||||
if (!first) {
|
||||
sb.append("/");
|
||||
}
|
||||
sb.append(parts[i]);
|
||||
first = false;
|
||||
}
|
||||
return nDid + "/" + sb.toString();
|
||||
}
|
||||
|
||||
public <T> List<T> objectToList(Object object, Class<T> clazz) {
|
||||
List<T> resultList = new ArrayList<>();
|
||||
if (object instanceof List<?>) {
|
||||
for (Object o : (List<?>) object) {
|
||||
resultList.add(clazz.cast(o));
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user