完善设备厂家信息

This commit is contained in:
2024-03-25 17:06:48 +08:00
parent 0aada3c958
commit 857d6ca063
4 changed files with 116 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import cn.lihongjie.coal.base.dto.CommonQuery;
import cn.lihongjie.coal.base.dto.IdRequest;
import cn.lihongjie.coal.emDevice.dto.CreateEmDeviceDto;
import cn.lihongjie.coal.emDevice.dto.EmDeviceDto;
import cn.lihongjie.coal.emDevice.dto.FetchHisDataRequest;
import cn.lihongjie.coal.emDevice.dto.UpdateEmDeviceDto;
import cn.lihongjie.coal.emDevice.service.EmDeviceService;
@@ -52,6 +53,12 @@ public class EmDeviceController {
return this.service.list(request);
}
@PostMapping("/fetchHisData")
public Object fetchHisData(@RequestBody FetchHisDataRequest request) {
this.service.fetchHisData(request);
return true;
}
@PostMapping("/archive")
public Object archive(@RequestBody IdRequest request) {
this.service.archive(request);

View File

@@ -0,0 +1,16 @@
package cn.lihongjie.coal.emDevice.dto;
import cn.lihongjie.coal.base.dto.OrgCommonDto;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.*;
@Data
public class FetchHisDataRequest extends OrgCommonDto {
private List<String> ids;
private LocalDateTime startTime;
private LocalDateTime endTime;
}

View File

@@ -9,6 +9,7 @@ import cn.lihongjie.coal.dbFunctions.DbFunctionService;
import cn.lihongjie.coal.emDevice.client.DustApi;
import cn.lihongjie.coal.emDevice.dto.CreateEmDeviceDto;
import cn.lihongjie.coal.emDevice.dto.EmDeviceDto;
import cn.lihongjie.coal.emDevice.dto.FetchHisDataRequest;
import cn.lihongjie.coal.emDevice.dto.UpdateEmDeviceDto;
import cn.lihongjie.coal.emDevice.entity.EmDeviceEntity;
import cn.lihongjie.coal.emDevice.mapper.EmDeviceMapper;
@@ -32,6 +33,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -137,6 +139,89 @@ public class EmDeviceService extends BaseService<EmDeviceEntity, EmDeviceReposit
@Autowired
EmDeviceDataMapper emDeviceDataMapper;
public void fetchHisData(FetchHisDataRequest request) {
if (CollectionUtils.isEmpty(request.getIds())){
return;
}
List<EmDeviceEntity> all = this.repository.findAllById(request.getIds());
Map<String, List<EmDeviceEntity>> groupByAccount =
all.stream()
.filter(x -> x.getThirdAccount() != null)
.filter(x -> StringUtils.isNotEmpty(x.getCode()))
.collect(Collectors.groupingBy(d -> d.getThirdAccount().getId()));
Map<String, EmDeviceEntity> codeMap = all.stream().collect(Collectors.toMap(e -> e.getCode(), e -> e));
for (List<EmDeviceEntity> devices : groupByAccount.values()) {
DustApi.GetRealtimeDataResponse hisData;
String deviceIds = devices.stream().map(CommonEntity::getCode).collect(Collectors.joining(","));
try {
hisData = dustApi.getHistoryData(devices.get(0).getThirdAccount().getToken(), deviceIds, request.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), request.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
} catch (Exception e) {
log.error("get his data error {} ", deviceIds, e);
continue;
}
String code = hisData.code();
if (ObjectUtils.notEqual(code, "1000")) {
log.error(
"get his data error {} {} {}",
hisData.code(),
hisData.message(),
hisData.data());
continue;
}
List<DustApi.DeviceData> data = hisData.data();
if (CollectionUtils.isEmpty(data)) {
log.error(
"get his data empty {} {} {}",
hisData.code(),
hisData.message(),
hisData.data());
continue;
}
if (data.size() != devices.size()) {
List<String> realTimeCode = data.stream().map(DustApi.DeviceData::deviceId).collect(Collectors.toList());
List<String> deviceCode = devices.stream().map(CommonEntity::getCode).collect(Collectors.toList());
log.info("device code not match {} - {} = {}", deviceCode, realTimeCode, CollectionUtils.removeAll(deviceCode, realTimeCode));
}
List<EmDeviceDataEntity> collect = data.stream().map(x -> {
EmDeviceDataEntity emDeviceData = new EmDeviceDataEntity();
emDeviceData.setDeviceId(codeMap.get(x.deviceId()).getId());
emDeviceData.setOrganizationId(codeMap.get(x.deviceId()).getOrganizationId());
emDeviceData.setTime(LocalDateTime.now());
emDeviceDataMapper.updateEntity(emDeviceData, x);
return emDeviceData;
}).collect(Collectors.toList());
emDeviceDataService.saveAll(collect);
log.info("get his data success {} ", deviceIds);
}
}
public void queryRealtimeData() {
List<EmDeviceEntity> all = this.repository.findAll();

View File

@@ -5,4 +5,11 @@ import cn.lihongjie.coal.base.dto.OrgCommonDto;
import lombok.Data;
@Data
public class UpdateEmDeviceSupplierDto extends OrgCommonDto {}
public class UpdateEmDeviceSupplierDto extends OrgCommonDto {
private String contact;
private String contactPhone;
private String address;
}