|
|
@@ -6,10 +6,8 @@ import com.yunfeiyun.agmp.common.constant.ErrorCode;
|
|
|
import com.yunfeiyun.agmp.common.core.page.PageDomain;
|
|
|
import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
|
|
|
import com.yunfeiyun.agmp.common.core.page.TableSupport;
|
|
|
-import com.yunfeiyun.agmp.common.enums.RedisCacheKey;
|
|
|
import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
|
|
|
import com.yunfeiyun.agmp.common.utils.DateUtils;
|
|
|
-import com.yunfeiyun.agmp.common.utils.JSONUtils;
|
|
|
import com.yunfeiyun.agmp.common.utils.StringUtils;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.device.ElementFactorUtil;
|
|
|
@@ -25,7 +23,6 @@ import com.yunfeiyun.agmp.iotm.util.MongoUtil;
|
|
|
import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
|
|
|
import com.yunfeiyun.agmp.iotm.web.service.IIotDevicefactorService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.http.util.TextUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
@@ -52,11 +49,15 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
|
|
|
@Autowired
|
|
|
private RedisCacheManager redisCacheManager;
|
|
|
|
|
|
+ public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
|
|
|
+ return dataList(reqVo, true);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取数据列表接口
|
|
|
* @param reqVo
|
|
|
*/
|
|
|
- public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
|
|
|
+ public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo, boolean isNow) throws ParseException {
|
|
|
TableDataInfo rspData = new TableDataInfo();
|
|
|
rspData.setCode(ErrorCode.SUCCESS.getCode());
|
|
|
rspData.setMsg(ErrorCode.SUCCESS.getMessage());
|
|
|
@@ -66,21 +67,22 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
|
|
|
IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
|
|
|
|
|
|
String devBid = findDevice.getDevBid();
|
|
|
- Date startDate = null;
|
|
|
- Date endDate = null;
|
|
|
- try{
|
|
|
- startDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getStartTime());
|
|
|
- endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getEndTime());
|
|
|
- }catch (Exception e){
|
|
|
- log.error("时间格式错误", e);
|
|
|
- throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "请输入正确的起止时间");
|
|
|
- }
|
|
|
-
|
|
|
Criteria criteria = new Criteria().and("devBid").is(devBid);
|
|
|
- criteria = criteria.andOperator(
|
|
|
- Criteria.where("time").gte(startDate),
|
|
|
- Criteria.where("time").lte(endDate)
|
|
|
- );
|
|
|
+ if(isNow){
|
|
|
+ Date startDate = null;
|
|
|
+ Date endDate = null;
|
|
|
+ try{
|
|
|
+ startDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getStartTime());
|
|
|
+ endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getEndTime());
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("时间格式错误", e);
|
|
|
+ throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "请输入正确的起止时间");
|
|
|
+ }
|
|
|
+ criteria = criteria.andOperator(
|
|
|
+ Criteria.where("time").gte(startDate),
|
|
|
+ Criteria.where("time").lte(endDate)
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
MatchOperation matchOperation = Aggregation.match(criteria);
|
|
|
|
|
|
@@ -122,7 +124,7 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
|
|
|
* 获取折线图数据列表接口
|
|
|
* @param reqVo
|
|
|
*/
|
|
|
- public List<IotQxzDataListRseVo> chartList(IotDeviceQxzDataListReqVo reqVo) {
|
|
|
+ public List<IotQxzDataListRseVo> chartList(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
|
|
|
|
|
|
//1、查出总条数 2、查出“符合条件的、当前页的”数据 3、json结构重组(如果需要的话) 4、附加 要素自定义 信息
|
|
|
|
|
|
@@ -301,40 +303,24 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
|
|
|
* @param reqVo
|
|
|
* @return
|
|
|
*/
|
|
|
- public IotDevicelasteddata dataLatest(IotDeviceQxzDataListReqVo reqVo) {
|
|
|
+ public IotDevicelasteddata dataLatest(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
|
|
|
String devBid = reqVo.getDevBid();
|
|
|
- //从redis取出
|
|
|
- IotDevicelasteddata latestData = redisCacheManager.getCacheObject(RedisCacheKey.SYS_RES, devBid);
|
|
|
- if(latestData==null){
|
|
|
- log.info("devBid:{},【最近数据】null",devBid);
|
|
|
- return null;
|
|
|
- }
|
|
|
|
|
|
- if(TextUtils.isEmpty(latestData.getDevldContent())){
|
|
|
- log.info("devBid:{},【最近数据】 content empty",devBid);
|
|
|
+ IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
|
|
|
+ TableDataInfo tableDataInfo = dataList(reqVo, false);
|
|
|
+ List<List<IotQxzDataListRseVo>> rest = (List<List<IotQxzDataListRseVo>>) tableDataInfo.getData();
|
|
|
+ if(rest == null || rest.isEmpty()){
|
|
|
+ log.info("devBid:{},【最近数据】empty",devBid);
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- List<IotYfqxzdata> iotYfqxzdataList = JSONUtils.toList(latestData.getDevldContent(),IotYfqxzdata.class);
|
|
|
- if(iotYfqxzdataList != null && !iotYfqxzdataList.isEmpty()){
|
|
|
- List<QxzDataDto> dataList = new ArrayList<>();
|
|
|
- for(IotYfqxzdata item: iotYfqxzdataList){
|
|
|
- QxzDataDto dto = new QxzDataDto();
|
|
|
- BeanUtils.copyProperties(item, dto);
|
|
|
- dataList.add(dto);
|
|
|
- }
|
|
|
- //查出该设备的“自定义要素信息列表”
|
|
|
- IotDevicefactor param = new IotDevicefactor();
|
|
|
- param.setDevBid(devBid);
|
|
|
- List<IotDevicefactor> factorList = iotDevicefactorService.selectIotDevicefactorList(param);
|
|
|
-
|
|
|
- IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
|
|
|
-
|
|
|
- List<IotQxzDataListRseVo> iotQxzDataListRseVoList = ElementFactorUtil.qxzListProcessData(dataList, factorList, findDevice, false);
|
|
|
- latestData.setDevldContent(JSONArray.toJSONString(iotQxzDataListRseVoList));
|
|
|
- }else{
|
|
|
- log.debug("无数据");
|
|
|
- }
|
|
|
+ List<IotQxzDataListRseVo> iotQxzDataListRseVoList = rest.get(0);
|
|
|
+ IotQxzDataListRseVo iotQxzDataListRseVo = iotQxzDataListRseVoList.get(0);
|
|
|
+ IotDevicelasteddata latestData = new IotDevicelasteddata();
|
|
|
+ BeanUtils.copyProperties(findDevice, latestData);
|
|
|
+ latestData.setDevldCreateddate(iotQxzDataListRseVo.getTime());
|
|
|
+ latestData.setDevldUpdateddate(iotQxzDataListRseVo.getTime());
|
|
|
+ latestData.setDevldContent(JSONArray.toJSONString(iotQxzDataListRseVoList));
|
|
|
return latestData;
|
|
|
}
|
|
|
}
|