diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DeviceFtpFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DeviceFtpFeignClient.java new file mode 100644 index 0000000..45671ff --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DeviceFtpFeignClient.java @@ -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 downloadFile(@RequestParam("nDid") String nDid, @RequestParam("name") String name, @RequestParam("size") Integer size, @RequestParam("fileCheck") String fileCheck); +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/WlRecordFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/WlRecordFeignClient.java index 3ae88f8..d9e306d 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/WlRecordFeignClient.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/WlRecordFeignClient.java @@ -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; diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DeviceFtpClientFallbackFactory.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DeviceFtpClientFallbackFactory.java new file mode 100644 index 0000000..b0c509d --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DeviceFtpClientFallbackFactory.java @@ -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 { + @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 downloadFile(String nDid, String name, Integer size, String fileCheck) { + log.error("{}异常,降级处理,异常为:{}","文件下载处理",cause.toString()); + throw new BusinessException(DeviceFtpFeignClient); + } + }; + } +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java index 7ecfcac..172710e 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java @@ -240,13 +240,15 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl 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 i c.setPid(portable.getId()); CsEquipmentDeliveryPO po = csEquipmentDeliveryMapper.selectById(c.getId()); c.setComFlag(po.getRunStatus()); + c.setNDId(po.getNdid()); } portable.setChildren(portables); diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsHarmonicResponseEnum.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsHarmonicResponseEnum.java index afb6afd..3fb804b 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsHarmonicResponseEnum.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsHarmonicResponseEnum.java @@ -16,6 +16,7 @@ public enum CsHarmonicResponseEnum { */ CS_DEVICE_COMMON_ERROR("A00600","治理稳态模块异常"), BIND_TARGET_ERROR("A00601","指标参数绑定异常"), + MAKE_UP_ERROR("A00602","补招失败"), ; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/MakeUpDto.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/MakeUpDto.java index 7fc31b8..1f6caac 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/MakeUpDto.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/MakeUpDto.java @@ -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 fileList; + + } + } diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/MakeUpParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/MakeUpParam.java new file mode 100644 index 0000000..e1ebeeb --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/MakeUpParam.java @@ -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 dataTypeList; + + @ApiModelProperty("起始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + + @ApiModelProperty("工程列表") + private List proList; + + @ApiModelProperty("监测点id") + private String lineId; + + @ApiModelProperty("装置nDid") + private String nDid; + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/OfflineDataUploadController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/OfflineDataUploadController.java index e5fa257..e797c99 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/OfflineDataUploadController.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/OfflineDataUploadController.java @@ -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> makeUpData(@RequestParam("lineId") String lineId){ String methodDescribe = getMethodDescribe("makeUpData"); List 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> makeUp(@RequestBody MakeUpParam param) { + String methodDescribe = getMethodDescribe("makeUp"); + offlineDataUploadService.startMakeUpData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/OfflineDataUploadService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/OfflineDataUploadService.java index fc7661f..263ecae 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/OfflineDataUploadService.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/OfflineDataUploadService.java @@ -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 askDirOrFile(String nDid, String prjName, String path, String fileType); + /** + * 开始装置数据补招 + * 根据项目递归获取文件夹下的bin文件,区分暂态、稳态,存储离线文件的方式,调用黄正剑的离线数据补招功能 + * @return + */ + void startMakeUpData(MakeUpParam param); + } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java index dc36511..120191d 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java @@ -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 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 projectInfoList = objectToList(redisUtil.getObjectByKey(key),RspDataDto.ProjectInfo.class); + List 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 projectInfoList = objectToList(redisUtil.getObjectByKey(key),FileDto.DirInfo.class); + List 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 fileList = new ArrayList<>(); + Map> map = new HashMap<>(); + //组装文件路径 + for (String s : param.getProList()) { + //稳态补招 + if (param.getDataTypeList().contains(0)) { + String minPath = s + "/min"; + List projectInfoList = getFileList(param.getLineId(),param.getNDid(),minPath); + if (CollectionUtil.isNotEmpty(projectInfoList)) { + projectInfoList.forEach(item->{ + String linePath = item.getName(); + List 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 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 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 getFileList(String lineId, String nDid, String path) { + String key = AppRedisKey.PROJECT_INFO + nDid; + redisUtil.delete(key); + List 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); } - - public List objectToList(Object object, Class clazz) { - List resultList = new ArrayList<>(); - if (object instanceof List) { - for (Object o : (List) object) { - resultList.add(clazz.cast(o)); + /** + * 调整文件路径 + */ + 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 resultList; + return nDid + "/" + sb.toString(); } + }