|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
|
|
import com.google.api.client.util.Sleeper; |
|
|
|
import com.google.common.collect.Lists; |
|
|
|
import com.google.common.collect.Lists; |
|
|
|
import com.hnac.hzims.equipment.EquipmentContants; |
|
|
|
import com.hnac.hzims.equipment.EquipmentContants; |
|
|
|
import com.hnac.hzims.equipment.entity.*; |
|
|
|
import com.hnac.hzims.equipment.entity.*; |
|
|
@ -21,6 +22,7 @@ import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient; |
|
|
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeCodeBySignagesVO; |
|
|
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeCodeBySignagesVO; |
|
|
|
import com.hnac.hzinfo.sdk.analyse.po.MultiAnalyzeCodePO; |
|
|
|
import com.hnac.hzinfo.sdk.analyse.po.MultiAnalyzeCodePO; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.client.DeviceClient; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.client.DeviceClient; |
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.collections4.MapUtils; |
|
|
|
import org.apache.commons.collections4.MapUtils; |
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
@ -38,6 +40,7 @@ import org.springframework.util.Assert; |
|
|
|
import javax.validation.Valid; |
|
|
|
import javax.validation.Valid; |
|
|
|
import java.util.*; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import java.util.stream.Stream; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 服务实现类 |
|
|
|
* 服务实现类 |
|
|
@ -45,6 +48,7 @@ import java.util.stream.Collectors; |
|
|
|
* @author Chill |
|
|
|
* @author Chill |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@Service |
|
|
|
@Service |
|
|
|
|
|
|
|
@Slf4j |
|
|
|
public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntity> implements IEmInfoService { |
|
|
|
public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntity> implements IEmInfoService { |
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
private IEmParamService paramService; |
|
|
|
private IEmParamService paramService; |
|
|
@ -77,6 +81,11 @@ public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntit |
|
|
|
@Value("${hzims.equipment.emInfo.code-prefix}") |
|
|
|
@Value("${hzims.equipment.emInfo.code-prefix}") |
|
|
|
public String emInfoCodePrefix; |
|
|
|
public String emInfoCodePrefix; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 10站点为一组数据 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private static final Integer MAX_SEND = 3; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R<EmInfoEntity> getEmInfoByCode(String emCode) { |
|
|
|
public R<EmInfoEntity> getEmInfoByCode(String emCode) { |
|
|
|
EmInfoNoScopeMapper mapper = SpringUtil.getBean("emInfoNoScopeMapper"); |
|
|
|
EmInfoNoScopeMapper mapper = SpringUtil.getBean("emInfoNoScopeMapper"); |
|
|
@ -417,29 +426,38 @@ public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntit |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void loadEmInfo() { |
|
|
|
public void loadEmInfo() { |
|
|
|
// 查询所有首页展示/状态非删除设备
|
|
|
|
// 查询所有首页展示/状态非删除设备
|
|
|
|
List<EminfoAndEmParamVo> list = this.baseMapper.selectEminfoAndEmParamVoList(); |
|
|
|
List<EminfoAndEmParamVo> devices = this.baseMapper.selectEminfoAndEmParamVoList(); |
|
|
|
// 查询所有设备(ct、pt、installedCapacity)配置参数
|
|
|
|
// 查询所有设备(ct、pt、installedCapacity)配置参数
|
|
|
|
List<EmParamEntity> paramList = this.paramService.getParamByParamNameGenerate(); |
|
|
|
List<EmParamEntity> paramList = this.paramService.getParamByParamNameGenerate(); |
|
|
|
// 获取设备监测点
|
|
|
|
|
|
|
|
// 获取设备监测点位:未配置监测点位不进行统计设备
|
|
|
|
// 获取设备监测点位:未配置监测点位不进行统计设备
|
|
|
|
List<MultiAnalyzeCodePO> multiAnalyzeCodePOList = list.stream().map(o->{ |
|
|
|
List<MultiAnalyzeCodePO> multiAnalyzeCodePOList = devices.stream().map(o->{ |
|
|
|
MultiAnalyzeCodePO multiAnalyzeCodePO = new MultiAnalyzeCodePO(); |
|
|
|
MultiAnalyzeCodePO multiAnalyzeCodePO = new MultiAnalyzeCodePO(); |
|
|
|
multiAnalyzeCodePO.setDeviceCode(o.getEmCode()); |
|
|
|
multiAnalyzeCodePO.setDeviceCode(o.getEmCode()); |
|
|
|
multiAnalyzeCodePO.setSignages(HomePageConstant.SIGNAGES); |
|
|
|
multiAnalyzeCodePO.setSignages(HomePageConstant.SIGNAGES); |
|
|
|
return multiAnalyzeCodePO; |
|
|
|
return multiAnalyzeCodePO; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
R<List<AnalyzeCodeBySignagesVO>> result = searchClient.getAnalyzeCodeBySignages(multiAnalyzeCodePOList); |
|
|
|
// 切割
|
|
|
|
if(!result.isSuccess() || CollectionUtil.isEmpty(result.getData())){ |
|
|
|
int limit = countStep(multiAnalyzeCodePOList.size()); |
|
|
|
return; |
|
|
|
List<List<MultiAnalyzeCodePO>> lists = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> multiAnalyzeCodePOList.stream().skip((long) a * MAX_SEND).limit(MAX_SEND).parallel().collect(Collectors.toList())).collect(Collectors.toList()); |
|
|
|
} |
|
|
|
// 接收数据
|
|
|
|
|
|
|
|
List<AnalyzeCodeBySignagesVO> analys = new ArrayList<>(); |
|
|
|
|
|
|
|
lists.forEach(list->{ |
|
|
|
|
|
|
|
R<List<AnalyzeCodeBySignagesVO>> result = searchClient.getAnalyzeCodeBySignages(list); |
|
|
|
|
|
|
|
if(!result.isSuccess() || CollectionUtil.isEmpty(result.getData())){ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
analys.addAll(result.getData()); |
|
|
|
|
|
|
|
}); |
|
|
|
// 设备遍历
|
|
|
|
// 设备遍历
|
|
|
|
list.forEach(item->{ |
|
|
|
devices.forEach(item->{ |
|
|
|
item.setRideCount(1); |
|
|
|
item.setRideCount(1); |
|
|
|
item.setInstalledCapacity(0.0); |
|
|
|
item.setInstalledCapacity(0.0); |
|
|
|
|
|
|
|
List<AnalyzeCodeBySignagesVO> signages = analys.stream().filter(o-> item.getEmCode().equals(o.getDeviceCode()) && !StringUtil.isEmpty(o.getSignage()) && !StringUtil.isEmpty(o.getRealId())).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if(CollectionUtil.isEmpty(signages)){ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
// list -> map
|
|
|
|
// list -> map
|
|
|
|
item.setPoint(result.getData().stream().filter(o-> item.getEmCode().equals(o.getDeviceCode()) && StringUtil.isNotBlank(o.getSignage()) && StringUtil.isNotBlank(o.getRealId())). |
|
|
|
item.setPoint(signages.stream().collect(Collectors.toMap(AnalyzeCodeBySignagesVO::getSignage,AnalyzeCodeBySignagesVO::getRealId))); |
|
|
|
collect(Collectors.toMap(AnalyzeCodeBySignagesVO::getSignage,AnalyzeCodeBySignagesVO::getRealId))); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 寻找设备配置参数
|
|
|
|
// 寻找设备配置参数
|
|
|
|
List<EmParamEntity> itemParamList = paramList.stream().filter(o->item.getId().equals(o.getInfoId())).collect(Collectors.toList()); |
|
|
|
List<EmParamEntity> itemParamList = paramList.stream().filter(o->item.getId().equals(o.getInfoId())).collect(Collectors.toList()); |
|
|
|
if(CollectionUtil.isNotEmpty(itemParamList)){ |
|
|
|
if(CollectionUtil.isNotEmpty(itemParamList)){ |
|
|
@ -456,6 +474,8 @@ public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntit |
|
|
|
case "installedCapacity": |
|
|
|
case "installedCapacity": |
|
|
|
item.setInstalledCapacity(Double.valueOf(param.getParamValue())); |
|
|
|
item.setInstalledCapacity(Double.valueOf(param.getParamValue())); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 设置ct * pt
|
|
|
|
// 设置ct * pt
|
|
|
@ -465,7 +485,14 @@ public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntit |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
// 设置缓存
|
|
|
|
// 设置缓存
|
|
|
|
redisTemplate.opsForValue().set(em_info_list_path, JSONObject.toJSONString(list.stream().filter(o-> Math.abs(o.getInstalledCapacity()) > 0 || MapUtils.isNotEmpty(o.getPoint())).collect(Collectors.toList()))); |
|
|
|
redisTemplate.opsForValue().set(em_info_list_path, JSONObject.toJSONString(devices.stream().filter(o-> Math.abs(o.getInstalledCapacity()) > 0 || MapUtils.isNotEmpty(o.getPoint())).collect(Collectors.toList()))); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 计算切分次数 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private static Integer countStep(Integer size) { |
|
|
|
|
|
|
|
return (size + MAX_SEND - 1) / MAX_SEND; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void validEmInfo(EmInfoAddVo em_info) { |
|
|
|
private void validEmInfo(EmInfoAddVo em_info) { |
|
|
|