|
@@ -15,6 +15,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.usky.backend.client.DeviceDataClient;
|
|
|
+import com.usky.backend.domain.response.DataRealTimeResponseVO;
|
|
|
import com.usky.common.core.bean.CommonPage;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.core.util.BeanMapperUtils;
|
|
@@ -37,6 +39,7 @@ import javax.servlet.ServletOutputStream;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -56,6 +59,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
@Autowired
|
|
|
private BaseFacilityDeviceService baseFacilityDeviceService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private DeviceDataClient deviceDataClient;
|
|
|
+
|
|
|
@Override
|
|
|
public void add(DmpDeviceInfo dmpDeviceInfo) {
|
|
|
if (checkNameUnique(dmpDeviceInfo)){
|
|
@@ -76,6 +82,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
|
|
|
dmpDeviceStatus.setDeviceStatus(2);
|
|
|
dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
|
|
|
+ dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
|
|
|
dmpDeviceStatusService.save(dmpDeviceStatus);
|
|
|
}else{
|
|
|
throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,无对应产品信息");
|
|
@@ -280,6 +287,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
dmpDeviceStatus.setProductId(devList.get(i).getProductId());
|
|
|
dmpDeviceStatus.setDeviceStatus(2);
|
|
|
dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
|
|
|
+ dmpDeviceStatus.setProductCode(devList.get(i).getProductCode());
|
|
|
dmpDeviceStatusList.add(dmpDeviceStatus);
|
|
|
}else{
|
|
|
throw new BusinessException("新增设备信息'" + devList.get(i).getDeviceId() + "'失败,无对应产品信息");
|
|
@@ -388,4 +396,68 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
throw new BusinessException("解析表格异常,检查表格格式"+e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonPage<Object> deviceCurrentDataList(String deviceName,String installAddress,String productCode,Integer pageNum,Integer pageSize){
|
|
|
+ List<Object> list = new ArrayList<>();
|
|
|
+
|
|
|
+ List<DmpDeviceInfo> devList = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(DmpDeviceInfo::getDeleteFlag,0)
|
|
|
+ .eq(DmpDeviceInfo::getTenantId, SecurityUtils.getTenantId())
|
|
|
+ .like(StringUtils.isNotBlank(deviceName),DmpDeviceInfo::getDeviceName,deviceName)
|
|
|
+ .like(StringUtils.isNotBlank(installAddress),DmpDeviceInfo::getInstallAddress,installAddress)
|
|
|
+ .eq(DmpDeviceInfo::getProductCode,productCode)
|
|
|
+ .orderByAsc(DmpDeviceInfo::getId);
|
|
|
+ devList = this.list(queryWrapper);
|
|
|
+ if(devList.size() <=0){
|
|
|
+ return new CommonPage<>(list,0,pageNum,pageSize);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(devList.size()>0){
|
|
|
+ List<String> deviceList = new ArrayList<>();
|
|
|
+ for(int k=0;k<devList.size();k++){
|
|
|
+ deviceList.add(devList.get(k).getDeviceId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(deviceList.size() > 0){
|
|
|
+ List<DataRealTimeResponseVO> dataRealList = deviceDataClient.data(productCode,deviceList);
|
|
|
+ if(dataRealList.size() > 0){
|
|
|
+ for(int i=0;i<devList.size();i++){
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("deviceId",devList.get(i).getDeviceId());
|
|
|
+ map.put("deviceName",devList.get(i).getDeviceName());
|
|
|
+ map.put("installAddress",devList.get(i).getInstallAddress());
|
|
|
+ map.put("latestTime", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
+
|
|
|
+ for(int j=0;j<dataRealList.size();j++){
|
|
|
+ if(devList.get(i).getProductCode().equals(dataRealList.get(j).getProductCode()) && devList.get(i).getDeviceId().equals(dataRealList.get(j).getDeviceId())){
|
|
|
+ map.put(dataRealList.get(j).getAttributeName(),dataRealList.get(j).getAttributeData());
|
|
|
+ map.put(dataRealList.get(j).getAttributeName()+"Time",dataRealList.get(j).getDataTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ list.add(map);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Object> objectList = new ArrayList<>();
|
|
|
+ int total = 0;
|
|
|
+ if(list.size() > 0){
|
|
|
+ total = list.size();
|
|
|
+ }
|
|
|
+ int current = 0;
|
|
|
+ if(pageNum != 0 && pageSize > 0){
|
|
|
+ current = (pageNum - 1)*pageSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ objectList = list.stream().skip(current).limit(pageSize).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ return new CommonPage<>(objectList,total,pageNum,pageSize);
|
|
|
+ }
|
|
|
}
|