1.文件下载调整;

2.bug调整
This commit is contained in:
xy
2024-10-30 16:10:19 +08:00
parent b49b40aa8b
commit 37d369cefd
6 changed files with 46 additions and 37 deletions

View File

@@ -88,30 +88,29 @@ public class AskDeviceDataServiceImpl implements AskDeviceDataService {
public boolean downloadFile(String nDid, String name, Integer size, String fileCheck) {
boolean result = false;
try {
redisUtil.saveByKeyWithExpire("fileDowning:"+nDid,"fileDowning",600L);
redisUtil.saveByKeyWithExpire("fileCheck"+name,fileCheck,600L);
redisUtil.saveByKeyWithExpire("fileDowning:"+nDid,"fileDowning",120L);
redisUtil.saveByKeyWithExpire("fileCheck"+nDid+name,fileCheck,120L);
Object object = getDeviceMid(nDid);
if (!Objects.isNull(object)) {
mid = (Integer) object;
}
ReqAndResDto.Req reqAndResParam = getAllPojo(mid,name);
publisher.send("/Pfm/DevFileCmd/V1/"+nDid,new Gson().toJson(reqAndResParam),1,false);
//这里使用简单的轮询,但建议考虑更高效的机制
for (int i = 0; i < 12; i++) {
Thread.sleep(10000);
Object object2 = redisUtil.getObjectByKey("downloadFilePath:"+name);
if (!Objects.isNull(object2)) {
result = true;
break;
} else {
Object object3 = redisUtil.getObjectByKey(AppRedisKey.FILE_PART.concat(name));
if (!Objects.isNull(object3)) {
FileStreamDto dto = JSON.parseObject(JSON.toJSONString(object3), FileStreamDto.class);
String json = "{fileName:"+name+",allStep:"+dto.getTotal()+",nowStep:"+ (CollectionUtil.isEmpty(dto.getList())?0:dto.getList().size())+"}";
publisher.send("/Web/Progress/" + nDid, new Gson().toJson(json), 1, false);
}
}
}
// //这里使用简单的轮询,但建议考虑更高效的机制
// for (int i = 0; i < 60; i++) {
// Thread.sleep(5000);
// Object object3 = redisUtil.getObjectByKey(AppRedisKey.FILE_PART.concat(name));
// FileStreamDto dto = JSON.parseObject(JSON.toJSONString(object3), FileStreamDto.class);
// if (dto.getList().size() == dto.getTotal()) {
// result = true;
// String json = "{fileName:"+name+",allStep:"+dto.getTotal()+",nowStep:"+ dto.getTotal() +"}";
// publisher.send("/Web/Progress/" + nDid, new Gson().toJson(json), 1, false);
// break;
// } else {
// String json = "{fileName:"+name+",allStep:"+dto.getTotal()+",nowStep:"+ (CollectionUtil.isEmpty(dto.getList())?0:dto.getList().size())+"}";
// publisher.send("/Web/Progress/" + nDid, new Gson().toJson(json), 1, false);
// }
// }
mid = mid + 1;
if (mid > 10000) {
mid = 1;
@@ -119,7 +118,7 @@ public class AskDeviceDataServiceImpl implements AskDeviceDataService {
redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,mid);
} catch (Exception e) {
redisUtil.delete("fileDowning:"+nDid);
redisUtil.delete("fileCheck"+name);
redisUtil.delete("fileCheck"+nDid+name);
throw new BusinessException(AlgorithmResponseEnum.FILE_DOWNLOAD_ERROR);
}
return result;