dongyukun
8 天以前 6248237228efe5e24410b1542c55368941a25806
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java
@@ -2,6 +2,8 @@
import com.iailab.framework.common.pojo.PageResult;
import com.iailab.framework.common.service.impl.BaseServiceImpl;
import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.iailab.framework.mybatis.core.query.QueryWrapperX;
import com.iailab.module.data.api.point.DataPointApiImpl;
import com.iailab.module.data.api.point.dto.ApiPointValueDTO;
import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
@@ -64,6 +66,10 @@
                    arcDataEntity.setArcTime(arcTime);
                    arcDataEntity.setArcId(item.getId());
                    arcDataEntity.setArcValue(value);
                    arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>()
                            .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId())
                            .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime())
                    );
                    insert(arcDataEntity);
                    log.debug("归档完成,point:"+item.getPoint());
                });
@@ -93,6 +99,10 @@
                    arcDataEntity.setArcTime(arcTime);
                    arcDataEntity.setArcId(item.getId());
                    arcDataEntity.setArcValue(value);
                    arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>()
                            .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId())
                            .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime())
                    );
                    insert(arcDataEntity);
                    log.debug("归档完成,point:"+item.getPoint());
                });
@@ -124,6 +134,10 @@
                    arcDataEntity.setArcValue(value);
                    arcDataEntity.setCode(item.getCode());
                    arcDataEntity.setCreateTime(new Date());
                    arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>()
                            .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId())
                            .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime())
                    );
                    insert(arcDataEntity);
                    log.debug("归档完成,point:"+item.getPoint());
                });
@@ -131,23 +145,23 @@
            case MONTH:
                //查询对应类型的归档设置列表
                List<ArcSettingEntity> arcMonthList = arcPointSettingService.list(params);
                Date endTime4 = calendar.getTime();
                calendar.add(Calendar.MONTH, -1);
                Date startTime4 = calendar.getTime();
                //遍历列表
                arcMonthList.forEach(item -> {
                    log.debug("开始归档,point:"+item.getPoint());
                    //获取开始时间
                    calendar.add(Calendar.MONTH, -1);
                    Date startTime = calendar.getTime();
                    //通过point编号查询数据
                    ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
                    queryDto.setPointNo(item.getPoint());
                    queryDto.setStart(startTime);
                    queryDto.setEnd(new Date());
                    queryDto.setStart(startTime4);
                    queryDto.setEnd(endTime4);
                    List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto);
                    //判断根据计算类型计算
                    BigDecimal value = calculate(item.getCalculate(), valueList);
                    //归档
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
                    String arcTime = dateFormat.format(startTime);
                    String arcTime = dateFormat.format(startTime4);
                    ArcDataEntity arcDataEntity = new ArcDataEntity();
                    arcDataEntity.setId(String.valueOf(new Date().getTime()));
                    arcDataEntity.setArcTime(arcTime);
@@ -155,6 +169,10 @@
                    arcDataEntity.setArcValue(value);
                    arcDataEntity.setCode(item.getCode());
                    arcDataEntity.setCreateTime(new Date());
                    arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>()
                            .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId())
                            .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime())
                    );
                    insert(arcDataEntity);
                    log.debug("归档完成,point:"+item.getPoint());
                });
@@ -162,24 +180,23 @@
            case YEAR:
                //查询对应类型的归档设置列表
                List<ArcSettingEntity> arcYearList = arcPointSettingService.list(params);
                Date endTime5 = calendar.getTime();
                calendar.add(Calendar.YEAR, -1);
                Date startTime5 = calendar.getTime();
                //遍历列表
                arcYearList.forEach(item -> {
                    log.debug("开始归档,point:"+item.getPoint());
                    //获取开始时间
                    //Calendar calendar = Calendar.getInstance();
                    calendar.add(Calendar.YEAR, -1);
                    Date startTime = calendar.getTime();
                    //通过point编号查询数据
                    ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
                    queryDto.setPointNo(item.getPoint());
                    queryDto.setStart(startTime);
                    queryDto.setEnd(new Date());
                    queryDto.setStart(startTime5);
                    queryDto.setEnd(endTime5);
                    List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto);
                    //判断根据计算类型计算
                    BigDecimal value = calculate(item.getCalculate(), valueList);
                    //归档
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
                    String arcTime = dateFormat.format(startTime);
                    String arcTime = dateFormat.format(startTime5);
                    ArcDataEntity arcDataEntity = new ArcDataEntity();
                    arcDataEntity.setId(String.valueOf(new Date().getTime()));
                    arcDataEntity.setArcTime(arcTime);
@@ -187,6 +204,10 @@
                    arcDataEntity.setArcValue(value);
                    arcDataEntity.setCode(item.getCode());
                    arcDataEntity.setCreateTime(new Date());
                    arcDataDao.delete(new LambdaQueryWrapperX<ArcDataEntity>()
                            .eq(ArcDataEntity::getArcId, arcDataEntity.getArcId())
                            .eq(ArcDataEntity::getArcTime, arcDataEntity.getArcTime())
                    );
                    insert(arcDataEntity);
                    log.debug("归档完成,point:"+item.getPoint());
                });
@@ -209,9 +230,7 @@
                value = BigDecimal.valueOf(valueList.get(valueList.size() - 1).getV());
                break;
            case SUM:
                for (ApiPointValueDTO dto : valueList) {
                    value = value.add(BigDecimal.valueOf(dto.getV()));
                }
                value = BigDecimal.valueOf(valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum());
                break;
            case DIFF:
                if (valueList.size() < 2) {
@@ -227,9 +246,7 @@
                }
                break;
            case AVG:
                for (ApiPointValueDTO dto : valueList) {
                    value = value.add(BigDecimal.valueOf(dto.getV()));
                }
                value = BigDecimal.valueOf(valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum());
                value = value.divide(BigDecimal.valueOf(valueList.size()), 2, BigDecimal.ROUND_HALF_UP);
                break;
            default: