|
@@ -7,16 +7,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.cn.tianji.common.CommonUtils;
|
|
|
import com.cn.tianji.common.PittotalCache;
|
|
|
import com.cn.tianji.common.RedisUtil;
|
|
|
-import com.cn.tianji.entity.TotalPoolVolumeWarnLog;
|
|
|
-import com.cn.tianji.entity.WarnHistory;
|
|
|
-import com.cn.tianji.entity.WellDrilling;
|
|
|
-import com.cn.tianji.entity.YjTotalPoolWarnValue;
|
|
|
+import com.cn.tianji.entity.*;
|
|
|
import com.cn.tianji.service.TotalPoolVolumeService;
|
|
|
import com.cn.tianji.service.TotalPoolVolumeWarnLogService;
|
|
|
import com.cn.tianji.service.WarnHistoryService;
|
|
|
import com.cn.tianji.service.WellDrillingService;
|
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
+import org.springframework.data.redis.core.RedisOperations;
|
|
|
+import org.springframework.data.redis.core.SessionCallback;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -53,43 +53,51 @@ public class TotalPoolVolumeServiceImpl implements TotalPoolVolumeService {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
@Override
|
|
|
- public void totalPoolVolumeWarn(WellDrilling nowPoint, String redisHasKey,List<YjTotalPoolWarnValue> warnValueDatas) throws ParseException {
|
|
|
- String jh=nowPoint.getJh();
|
|
|
- Date nowDate=new Date();
|
|
|
+ public void totalPoolVolumeWarn(@NotNull WellDrilling nowPoint, String redisHasKey, List<YjTotalPoolWarnValue> warnValueDatas) throws ParseException {
|
|
|
+ String jh = nowPoint.getJh();
|
|
|
+ Date nowDate = new Date();
|
|
|
// String redisHasKey = jh + "_total_pool_volume";
|
|
|
- // String jhTableCode = wellDrillingService.getTableCode(jh);
|
|
|
+ // String jhTableCode = wellDrillingService.getTableCode(jh);
|
|
|
String jhTableCode = CommonUtils.getJhTableName(jh);
|
|
|
- BigDecimal nowPittotalBig= new BigDecimal(0.0);
|
|
|
+ BigDecimal nowPittotalBig = new BigDecimal(0.0);
|
|
|
+ TotalPoolVolumeCatch catchModel = createCatchModel(nowPoint);
|
|
|
try {
|
|
|
- nowPittotalBig = nowPoint.getPittotal();
|
|
|
- }catch (Exception e){
|
|
|
+ nowPittotalBig = nowPoint.getPittotal();
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- log.error("总池体积异常,井号:{}",jh);
|
|
|
- return;
|
|
|
+ log.error("总池体积异常,井号:{}", jh);
|
|
|
+ throw new RuntimeException("获取Pittotal失败", e);
|
|
|
}
|
|
|
BigDecimal bigDecimal = BigDecimal.valueOf(-999.25);
|
|
|
int i = nowPittotalBig.compareTo(bigDecimal);
|
|
|
- if(i<=0){
|
|
|
- log.error("总池体积异常,井号:{},总池体积:{}",jh,bigDecimal);
|
|
|
+ if (i <= 0) {
|
|
|
+ log.error("总池体积异常,井号:{},总池体积:{}", jh, bigDecimal);
|
|
|
return;
|
|
|
}
|
|
|
boolean isPittotalCatch = redisUtil.hasKey(redisHasKey);
|
|
|
//获取当前点往前5分钟的钻进数据
|
|
|
- PittotalCache pittotalCache =new PittotalCache();
|
|
|
- if(isPittotalCatch){
|
|
|
+ PittotalCache pittotalCache = new PittotalCache();
|
|
|
+ if (isPittotalCatch) {
|
|
|
pittotalCache = JSONObject.toJavaObject(JSONObject.parseObject(JSON.toJSONString(redisUtil.get(redisHasKey))), PittotalCache.class);
|
|
|
//判断总池体积差值是否超过预警值
|
|
|
- pittotalCache=warn(nowPittotalBig,nowPoint,pittotalCache,warnValueDatas);
|
|
|
+ pittotalCache = warn(nowPittotalBig, nowPoint, pittotalCache, warnValueDatas);
|
|
|
//判断计算时间是否超过5分钟
|
|
|
long calTimeDiff = CommonUtils.timeDifference(pittotalCache.getStartTime(), sdf.parse(nowPoint.getTime()));
|
|
|
- if(calTimeDiff >= 5 * 60){
|
|
|
- log.info("计算时间超过5分钟时间差:{}分",(calTimeDiff/60));
|
|
|
- List<WellDrilling> referenceData = getReferenceValue(jhTableCode, nowPoint,Calendar.MINUTE, -5);
|
|
|
- BigDecimal pittotalSumBig = referenceData.stream().map(WellDrilling::getPittotal) .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal referenceValueBig= pittotalSumBig.divide(new BigDecimal(referenceData.size()), MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_UP);
|
|
|
- pittotalCache.setStartTime(sdf.parse(nowPoint.getTime()));
|
|
|
- pittotalCache.setReferenceData(referenceData);
|
|
|
- pittotalCache.setReferenceValue(referenceValueBig);
|
|
|
+ if (calTimeDiff >= 5 * 60) {
|
|
|
+ // log.info("计算时间超过5分钟时间差:{}分",(calTimeDiff/60));
|
|
|
+ List<TotalPoolVolumeCatch> referenceData = getReferenceValue(jhTableCode, nowPoint, Calendar.MINUTE, -5);
|
|
|
+ if (!referenceData.isEmpty()) {
|
|
|
+ BigDecimal pittotalSumBig = referenceData.stream().map(TotalPoolVolumeCatch::getPittotal).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ log.info("井号:{},pittotalSumBig:{},referenceData.size(){}", jh, pittotalSumBig, referenceData.size());
|
|
|
+ try {
|
|
|
+ BigDecimal referenceValueBig = pittotalSumBig.divide(new BigDecimal(referenceData.size()), MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ pittotalCache.setStartTime(sdf.parse(nowPoint.getTime()));
|
|
|
+ pittotalCache.setReferenceData(referenceData);
|
|
|
+ pittotalCache.setReferenceValue(referenceValueBig);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
//判断速率时间是否超过30秒
|
|
|
// long rateTimeDiff = CommonUtils.timeDifference(pittotalCache.getRateStartTime(), sdf.parse(nowPoint.getTime()));
|
|
@@ -97,112 +105,213 @@ public class TotalPoolVolumeServiceImpl implements TotalPoolVolumeService {
|
|
|
// log.info("计算时间超过30秒时间差:{}秒",rateTimeDiff);
|
|
|
//
|
|
|
// }
|
|
|
- List<WellDrilling> rateData = pittotalCache.getRateData();
|
|
|
+ List<TotalPoolVolumeCatch> rateData = pittotalCache.getRateData();
|
|
|
+
|
|
|
rateData.remove(0);
|
|
|
- rateData.add(nowPoint);
|
|
|
+ rateData.add(catchModel);
|
|
|
pittotalCache.setRateData(rateData);
|
|
|
pittotalCache.setRateStartTime(sdf.parse(rateData.get(0).getTime()));
|
|
|
pittotalCache.setRateStartPittotal(rateData.get(0).getPittotal());
|
|
|
- redisUtil.set(redisHasKey, pittotalCache);
|
|
|
- }else{
|
|
|
- List<WellDrilling> referenceData = getReferenceValue(jhTableCode, nowPoint, Calendar.MINUTE,-5);
|
|
|
- List<WellDrilling> rateData = getReferenceValue(jhTableCode, nowPoint, Calendar.SECOND,-30);
|
|
|
- if(referenceData.size()>25){
|
|
|
- BigDecimal pittotalSumBig = referenceData.stream().map(WellDrilling::getPittotal) .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal referenceValueBig= pittotalSumBig.divide(new BigDecimal(referenceData.size()), MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ PittotalCache finalPittotalCache = pittotalCache;
|
|
|
+ redisUtil.set(redisHasKey, finalPittotalCache);
|
|
|
+ } else {
|
|
|
+ List<TotalPoolVolumeCatch> referenceData = getReferenceValue(jhTableCode, nowPoint, Calendar.MINUTE, -5);
|
|
|
+ List<TotalPoolVolumeCatch> rateData = getReferenceValue(jhTableCode, nowPoint, Calendar.SECOND, -30);
|
|
|
+ if (referenceData.size() > 25) {
|
|
|
+ BigDecimal pittotalSumBig = referenceData.stream().map(TotalPoolVolumeCatch::getPittotal).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal referenceValueBig = pittotalSumBig.divide(new BigDecimal(referenceData.size()), MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_UP);
|
|
|
pittotalCache.setReferenceData(referenceData);
|
|
|
pittotalCache.setStartTime(sdf.parse(nowPoint.getTime()));
|
|
|
pittotalCache.setReferenceValue(referenceValueBig);
|
|
|
pittotalCache.setRateStartTime(sdf.parse(rateData.get(0).getTime()));
|
|
|
pittotalCache.setRateStartPittotal(rateData.get(0).getPittotal());
|
|
|
pittotalCache.setRateData(rateData);
|
|
|
- pittotalCache=warn(nowPittotalBig,nowPoint,pittotalCache,warnValueDatas);
|
|
|
- redisUtil.set(redisHasKey, pittotalCache);
|
|
|
+ pittotalCache = warn(nowPittotalBig, nowPoint, pittotalCache, warnValueDatas);
|
|
|
+ PittotalCache finalPittotalCache1 = pittotalCache;
|
|
|
+ redisUtil.set(redisHasKey, finalPittotalCache1);
|
|
|
}
|
|
|
}
|
|
|
- Date endDate=new Date();
|
|
|
+ Date endDate = new Date();
|
|
|
long warnTimeDiff = CommonUtils.timeDifference_(nowDate, endDate);
|
|
|
- log.info("计算耗时:{}毫秒",warnTimeDiff);
|
|
|
+ log.info("计算耗时:{}毫秒", warnTimeDiff);
|
|
|
}
|
|
|
|
|
|
+// @Override
|
|
|
+// public void totalPoolVolumeWarn(@NotNull WellDrilling nowPoint, String redisHasKey, List<YjTotalPoolWarnValue> warnValueDatas) {
|
|
|
+// log.warn("总池体积主键aaaa:{}",redisHasKey);
|
|
|
+// // 定义事务操作
|
|
|
+// SessionCallback<List<Object>> transactionOperations = new SessionCallback<List<Object>>() {
|
|
|
+// @Override
|
|
|
+// public List<Object> execute(RedisOperations operations) {
|
|
|
+// operations.multi();
|
|
|
+// try {
|
|
|
+// String jh = nowPoint.getJh();
|
|
|
+//
|
|
|
+// BigDecimal nowPittotalBig = new BigDecimal(0.0);
|
|
|
+// String jhTableCode = CommonUtils.getJhTableName(jh);
|
|
|
+// TotalPoolVolumeCatch catchModel = createCatchModel(nowPoint);
|
|
|
+//
|
|
|
+// try {
|
|
|
+// nowPittotalBig = nowPoint.getPittotal();
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("总池体积异常,井号:{}", jh, e);
|
|
|
+// throw new RuntimeException("获取Pittotal失败", e);
|
|
|
+// }
|
|
|
+//
|
|
|
+// BigDecimal bigDecimal = BigDecimal.valueOf(-999.25);
|
|
|
+// int i = nowPittotalBig.compareTo(bigDecimal);
|
|
|
+// if (i <= 0) {
|
|
|
+// log.error("总池体积异常,井号:{},总池体积:{}", jh, bigDecimal);
|
|
|
+// throw new RuntimeException("总池体积异常");
|
|
|
+// }
|
|
|
+// log.warn("总池体积主键:{}",redisHasKey);
|
|
|
+// boolean isPittotalCatch = redisUtil.hasKey(redisHasKey);
|
|
|
+// PittotalCache pittotalCache = new PittotalCache();
|
|
|
+// if (isPittotalCatch) {
|
|
|
+// pittotalCache = JSONObject.toJavaObject(JSONObject.parseObject(JSON.toJSONString(redisUtil.get(redisHasKey))), PittotalCache.class);
|
|
|
+// pittotalCache = warn(nowPittotalBig, nowPoint, pittotalCache, warnValueDatas);
|
|
|
+// long calTimeDiff = CommonUtils.timeDifference(pittotalCache.getStartTime(), sdf.parse(nowPoint.getTime()));
|
|
|
+// if (calTimeDiff >= 5 * 60) {
|
|
|
+// log.info("计算时间超过5分钟时间差:{}分", (calTimeDiff / 60));
|
|
|
+// List<TotalPoolVolumeCatch> referenceData = getReferenceValue(jhTableCode, nowPoint, Calendar.MINUTE, -5);
|
|
|
+// BigDecimal pittotalSumBig = referenceData.stream().map(TotalPoolVolumeCatch::getPittotal).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+// BigDecimal referenceValueBig = pittotalSumBig.divide(new BigDecimal(referenceData.size()), MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_UP);
|
|
|
+// pittotalCache.setStartTime(sdf.parse(nowPoint.getTime()));
|
|
|
+// pittotalCache.setReferenceData(referenceData);
|
|
|
+// pittotalCache.setReferenceValue(referenceValueBig);
|
|
|
+// }
|
|
|
+//
|
|
|
+// List<TotalPoolVolumeCatch> rateData = pittotalCache.getRateData();
|
|
|
+// rateData.remove(0);
|
|
|
+// rateData.add(catchModel);
|
|
|
+// pittotalCache.setRateData(rateData);
|
|
|
+// pittotalCache.setRateStartTime(sdf.parse(rateData.get(0).getTime()));
|
|
|
+// pittotalCache.setRateStartPittotal(rateData.get(0).getPittotal());
|
|
|
+// operations.opsForValue().set(redisHasKey, pittotalCache);
|
|
|
+// } else {
|
|
|
+// List<TotalPoolVolumeCatch> referenceData = getReferenceValue(jhTableCode, nowPoint, Calendar.MINUTE, -5);
|
|
|
+// List<TotalPoolVolumeCatch> rateData = getReferenceValue(jhTableCode, nowPoint, Calendar.SECOND, -30);
|
|
|
+// if (referenceData.size() > 25) {
|
|
|
+// BigDecimal pittotalSumBig = referenceData.stream().map(TotalPoolVolumeCatch::getPittotal).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+// BigDecimal referenceValueBig = pittotalSumBig.divide(new BigDecimal(referenceData.size()), MathContext.DECIMAL128).setScale(2, RoundingMode.HALF_UP);
|
|
|
+// pittotalCache.setReferenceData(referenceData);
|
|
|
+// pittotalCache.setStartTime(sdf.parse(nowPoint.getTime()));
|
|
|
+// pittotalCache.setReferenceValue(referenceValueBig);
|
|
|
+// pittotalCache.setRateStartTime(sdf.parse(rateData.get(0).getTime()));
|
|
|
+// pittotalCache.setRateStartPittotal(rateData.get(0).getPittotal());
|
|
|
+// pittotalCache.setRateData(rateData);
|
|
|
+// pittotalCache = warn(nowPittotalBig, nowPoint, pittotalCache, warnValueDatas);
|
|
|
+// operations.opsForValue().set(redisHasKey, pittotalCache);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("事务执行过程中发生异常", e);
|
|
|
+// throw new RuntimeException("事务执行失败", e);
|
|
|
+// }
|
|
|
+// return operations.exec();
|
|
|
+// }
|
|
|
+// };
|
|
|
+// // 执行事务
|
|
|
+// try {
|
|
|
+// Date nowDate = new Date();
|
|
|
+// redisUtil.executeTransaction(transactionOperations);
|
|
|
+// log.info("事务执行成功");
|
|
|
+// Date endDate=new Date();
|
|
|
+// long warnTimeDiff = CommonUtils.timeDifference_(nowDate, endDate);
|
|
|
+// log.info("计算耗时:{}毫秒",warnTimeDiff);
|
|
|
+// } catch (RuntimeException e) {
|
|
|
+// log.error("事务执行失败: {}", e.getMessage());
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// }
|
|
|
+
|
|
|
/**
|
|
|
* 获取指定时间范围内的数据
|
|
|
+ *
|
|
|
* @param jhTableName 井表名
|
|
|
- * @param nowPoint 当前点数据
|
|
|
- * @param mi 时间差
|
|
|
+ * @param nowPoint 当前点数据
|
|
|
+ * @param mi 时间差
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<WellDrilling> getReferenceValue(String jhTableName, WellDrilling nowPoint, int type, Integer mi) throws ParseException {
|
|
|
+ public List<TotalPoolVolumeCatch> getReferenceValue(String jhTableName, @NotNull WellDrilling nowPoint, int type, Integer mi) throws ParseException {
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
calendar.setTime(sdf.parse(nowPoint.getTime()));
|
|
|
calendar.add(type, mi);
|
|
|
Date time = calendar.getTime();
|
|
|
- String startTime= sdf.format(time);
|
|
|
- String endTime= CommonUtils.removeMilliseconds(nowPoint.getTime());
|
|
|
- log.info("获取的井;{};开始时间:{};结束时间:{}",jhTableName,startTime,endTime);
|
|
|
+ String startTime = sdf.format(time);
|
|
|
+ String endTime = CommonUtils.removeMilliseconds(nowPoint.getTime());
|
|
|
+ log.info("获取的井;{};开始时间:{};结束时间:{}", jhTableName, startTime, endTime);
|
|
|
//查询当前点前一分钟的点
|
|
|
QueryWrapper<WellDrilling> wrapper = new QueryWrapper<WellDrilling>();
|
|
|
// wrapper.apply(("TIME <= '" + sdf.format(time) + "'"));
|
|
|
- wrapper.apply("TO_DATE(SUBSTR(TIME, 1, 19), 'yyyy-MM-dd HH24:mi:ss') <= to_date({0},'yyyy-mm-dd hh24:mi:ss')",endTime);
|
|
|
- wrapper.apply("TO_DATE(SUBSTR(TIME, 1, 19), 'yyyy-MM-dd HH24:mi:ss') >= to_date({0},'yyyy-mm-dd hh24:mi:ss')",startTime);
|
|
|
+ wrapper.apply("TO_DATE(SUBSTR(TIME, 1, 19), 'yyyy-MM-dd HH24:mi:ss') <= to_date({0},'yyyy-mm-dd hh24:mi:ss')", endTime);
|
|
|
+ wrapper.apply("TO_DATE(SUBSTR(TIME, 1, 19), 'yyyy-MM-dd HH24:mi:ss') >= to_date({0},'yyyy-mm-dd hh24:mi:ss')", startTime);
|
|
|
wrapper.orderByDesc("time");
|
|
|
- return wellDrillingService.selectListOrcale(jhTableName, wrapper);
|
|
|
+ List<WellDrilling> wellDrillings = wellDrillingService.selectListOrcale(jhTableName, wrapper);
|
|
|
+ List<TotalPoolVolumeCatch> res = new ArrayList<>();
|
|
|
+ wellDrillings.forEach(item -> {
|
|
|
+ TotalPoolVolumeCatch catchModel = createCatchModel(item);
|
|
|
+ res.add(catchModel);
|
|
|
+ });
|
|
|
+ return res;
|
|
|
}
|
|
|
|
|
|
- public PittotalCache warn(BigDecimal nowPittotalBig, WellDrilling nowPoint, PittotalCache pittotalCache,List<YjTotalPoolWarnValue> warnValueDatas) throws ParseException {
|
|
|
+ public PittotalCache warn(@NotNull BigDecimal nowPittotalBig, WellDrilling nowPoint, @NotNull PittotalCache pittotalCache, List<YjTotalPoolWarnValue> warnValueDatas) throws ParseException {
|
|
|
BigDecimal pittotalSub = nowPittotalBig.subtract(pittotalCache.getReferenceValue()).setScale(1, RoundingMode.HALF_UP);
|
|
|
BigDecimal rantePittotalSub = nowPittotalBig.subtract(pittotalCache.getRateStartPittotal()).setScale(1, RoundingMode.HALF_UP);
|
|
|
- log.info("参考值均值:{};当前点值:{},起点时间:{}",pittotalCache.getReferenceValue(),nowPittotalBig,pittotalCache.getStartTime());
|
|
|
- log.info("参考值均值(速率):{};当前点值:{},起点时间:{}",pittotalCache.getRateStartPittotal(),nowPittotalBig,pittotalCache.getRateStartTime());
|
|
|
+ log.info("参考值均值:{};当前点值:{},起点时间:{}", pittotalCache.getReferenceValue(), nowPittotalBig, pittotalCache.getStartTime());
|
|
|
+ log.info("参考值均值(速率):{};当前点值:{},起点时间:{}", pittotalCache.getRateStartPittotal(), nowPittotalBig, pittotalCache.getRateStartTime());
|
|
|
int wanrType = pittotalSub.compareTo(BigDecimal.ZERO);
|
|
|
//判断预警类被
|
|
|
//井漏
|
|
|
- if(wanrType<0){
|
|
|
+ if (wanrType < 0) {
|
|
|
List<YjTotalPoolWarnValue> warnData = warnValueDatas.stream().filter(item -> item.getWarnType().equals("井漏")).collect(Collectors.toList());
|
|
|
BigDecimal pittotalWarnValue = warnData.get(0).getPittotalWarn();
|
|
|
BigDecimal ranteWarnValue = warnData.get(0).getRanteWarn();
|
|
|
int pittotalWarn = pittotalSub.compareTo(pittotalWarnValue);
|
|
|
int ranteWarn = rantePittotalSub.compareTo(ranteWarnValue);
|
|
|
- if(pittotalWarn<=0&&ranteWarn<=0){
|
|
|
- pittotalCache = saveOrUpdateTotalPoolVolumeWarnLog(nowPoint,pittotalCache,"井漏",pittotalSub.setScale(2,RoundingMode.HALF_UP),
|
|
|
- rantePittotalSub.setScale(2,RoundingMode.HALF_UP),pittotalWarnValue,ranteWarnValue,"小于");
|
|
|
+ if (pittotalWarn <= 0 && ranteWarn <= 0) {
|
|
|
+ pittotalCache = saveOrUpdateTotalPoolVolumeWarnLog(nowPoint, pittotalCache, "井漏", pittotalSub.setScale(2, RoundingMode.HALF_UP),
|
|
|
+ rantePittotalSub.setScale(2, RoundingMode.HALF_UP), pittotalWarnValue, ranteWarnValue, "小于");
|
|
|
}
|
|
|
- }else{ //溢流
|
|
|
+ } else { //溢流
|
|
|
List<YjTotalPoolWarnValue> warnData = warnValueDatas.stream().filter(item -> item.getWarnType().equals("溢流")).collect(Collectors.toList());
|
|
|
BigDecimal pittotalWarnValue = warnData.get(0).getPittotalWarn();
|
|
|
BigDecimal ranteWarnValue = warnData.get(0).getRanteWarn();
|
|
|
int pittotalWarn = pittotalSub.compareTo(pittotalWarnValue);
|
|
|
int ranteWarn = rantePittotalSub.compareTo(ranteWarnValue);
|
|
|
- if(pittotalWarn>=0&&ranteWarn>=0){
|
|
|
- pittotalCache = saveOrUpdateTotalPoolVolumeWarnLog(nowPoint,pittotalCache,"溢流",pittotalSub.setScale(2,RoundingMode.HALF_UP),
|
|
|
- rantePittotalSub.setScale(2,RoundingMode.HALF_UP),pittotalWarnValue,ranteWarnValue,"大于");
|
|
|
+ if (pittotalWarn >= 0 && ranteWarn >= 0) {
|
|
|
+ pittotalCache = saveOrUpdateTotalPoolVolumeWarnLog(nowPoint, pittotalCache, "溢流", pittotalSub.setScale(2, RoundingMode.HALF_UP),
|
|
|
+ rantePittotalSub.setScale(2, RoundingMode.HALF_UP), pittotalWarnValue, ranteWarnValue, "大于");
|
|
|
}
|
|
|
}
|
|
|
return pittotalCache;
|
|
|
}
|
|
|
|
|
|
@SneakyThrows
|
|
|
- public PittotalCache saveOrUpdateTotalPoolVolumeWarnLog(WellDrilling nowPoint, PittotalCache pittotalCache,String warnType, BigDecimal pittotalSub,BigDecimal ratePittotalSub,BigDecimal referenceWarnValue,BigDecimal rateWarnValue,String sizeStr){
|
|
|
- List<WellDrilling> referenceData = pittotalCache.getReferenceData();
|
|
|
- Date warnTime=sdf.parse(nowPoint.getTime());
|
|
|
- String jh=nowPoint.getJh();
|
|
|
- TotalPoolVolumeWarnLog totalPoolVolumeWarnLog = totalPoolVolumeWarnLogService.createTotalPoolVolumeWarnLog(jh, nowPoint.getOperatingMode(), nowPoint.getMotion(), warnType,warnTime , nowPoint.getPittotal(), pittotalCache.getReferenceValue(),
|
|
|
+ public PittotalCache saveOrUpdateTotalPoolVolumeWarnLog(@NotNull WellDrilling nowPoint, @NotNull PittotalCache pittotalCache, String warnType, BigDecimal pittotalSub, BigDecimal ratePittotalSub, BigDecimal referenceWarnValue, BigDecimal rateWarnValue, String sizeStr) {
|
|
|
+ List<TotalPoolVolumeCatch> referenceData = pittotalCache.getReferenceData();
|
|
|
+ Date warnTime = sdf.parse(nowPoint.getTime());
|
|
|
+ String jh = nowPoint.getJh();
|
|
|
+ TotalPoolVolumeWarnLog totalPoolVolumeWarnLog = totalPoolVolumeWarnLogService.createTotalPoolVolumeWarnLog(jh, nowPoint.getOperatingMode(), nowPoint.getMotion(), warnType, warnTime, nowPoint.getPittotal(), pittotalCache.getReferenceValue(),
|
|
|
sdf.parse(referenceData.get(referenceData.size() - 1).getTime()), sdf.parse(referenceData.get(0).getTime()), pittotalCache.getRateStartPittotal(), pittotalCache.getRateStartTime(), sdf.parse(nowPoint.getTime()), pittotalSub, ratePittotalSub,
|
|
|
referenceWarnValue, rateWarnValue, sizeStr);
|
|
|
Date lastWarnDate = pittotalCache.getLastWarnDate();
|
|
|
- if(lastWarnDate!=null){
|
|
|
+ if (lastWarnDate != null) {
|
|
|
long warnTimeDiff = CommonUtils.timeDifference(lastWarnDate, warnTime);
|
|
|
- if(warnTimeDiff >= 12){
|
|
|
+ if (warnTimeDiff >= 12) {
|
|
|
//大于10秒说明不是连续的预警数据,重新记录
|
|
|
List<TotalPoolVolumeWarnLog> list = new ArrayList<>();
|
|
|
totalPoolVolumeWarnLog.setDataType("0");
|
|
|
list.add(totalPoolVolumeWarnLog);
|
|
|
pittotalCache.setWarnList(list);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
List<TotalPoolVolumeWarnLog> warnList = pittotalCache.getWarnList();
|
|
|
totalPoolVolumeWarnLog.setDataType("1");
|
|
|
warnList.add(totalPoolVolumeWarnLog);
|
|
|
- if(warnList.size()>=3){
|
|
|
+ if (warnList.size() >= 3) {
|
|
|
totalPoolVolumeWarnLogService.save(totalPoolVolumeWarnLog);
|
|
|
// QueryWrapper<TotalPoolVolumeWarnLog> wrapper = new QueryWrapper<>();
|
|
|
// wrapper.eq("JH",jh);
|
|
@@ -220,7 +329,7 @@ public class TotalPoolVolumeServiceImpl implements TotalPoolVolumeService {
|
|
|
}
|
|
|
pittotalCache.setWarnList(warnList);
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
List<TotalPoolVolumeWarnLog> list = new ArrayList<>();
|
|
|
list.add(totalPoolVolumeWarnLog);
|
|
|
pittotalCache.setWarnList(list);
|
|
@@ -229,48 +338,13 @@ public class TotalPoolVolumeServiceImpl implements TotalPoolVolumeService {
|
|
|
return pittotalCache;
|
|
|
}
|
|
|
|
|
|
- public PittotalCache saveOrUpdateWarnHistory(String jh, Float bitDepth, Float warnPit, Date warnTime, Float startPit, Date startTime, Float jlSub, Float pitValue,String warnDes,PittotalCache pittotalCache) {
|
|
|
|
|
|
- WarnHistory history = new WarnHistory();
|
|
|
- history.setJh(jh);
|
|
|
- history.setWarnType("总池体积变化异常");
|
|
|
- history.setWarnBitdepth(bitDepth);
|
|
|
- history.setWarnWoh(warnPit);
|
|
|
- history.setWarnTime(warnTime);
|
|
|
- history.setPitStartTime(startTime);
|
|
|
- history.setPitStart(startPit);
|
|
|
- history.setPitSub(jlSub);
|
|
|
- history.setPitValue(pitValue);
|
|
|
- history.setWarnDes(warnDes);
|
|
|
- Date lastWarnDate = pittotalCache.getLastWarnDate();
|
|
|
- if(lastWarnDate!=null){
|
|
|
- long warnTimeDiff = CommonUtils.timeDifference(lastWarnDate, warnTime);
|
|
|
- //判断最新预警时间与最后预警时间是否为连续时间
|
|
|
- if(warnTimeDiff >= 10){ //大于10秒说明不是连续的预警数据,重新记录
|
|
|
- List<WarnHistory> warnList= new ArrayList<>();
|
|
|
- pittotalCache.setWarnListOld(warnList);
|
|
|
- }else{
|
|
|
- List<WarnHistory> warnList = pittotalCache.getWarnListOld();
|
|
|
- warnList.add(history);
|
|
|
- if(warnList.size()>=3){
|
|
|
- QueryWrapper<WarnHistory> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("JH",jh).eq("WARN_TIME",lastWarnDate);
|
|
|
- List<WarnHistory> list = warnHistoryService.list(wrapper);
|
|
|
- if(list.size()>0){
|
|
|
- WarnHistory updateModel = list.get(0);
|
|
|
- history.setId(updateModel.getId());
|
|
|
- warnHistoryService.updateById(history);
|
|
|
- }else{
|
|
|
- warnHistoryService.save(history);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- List<WarnHistory> list = new ArrayList<>();
|
|
|
- list.add(history);
|
|
|
- pittotalCache.setWarnListOld(list);
|
|
|
- }
|
|
|
- pittotalCache.setLastWarnDate(warnTime);
|
|
|
- return pittotalCache;
|
|
|
+ public TotalPoolVolumeCatch createCatchModel(@NotNull WellDrilling point) {
|
|
|
+ TotalPoolVolumeCatch molde = new TotalPoolVolumeCatch();
|
|
|
+ molde.setTid(point.getTid());
|
|
|
+ molde.setJh(point.getJh());
|
|
|
+ molde.setTime(point.getTime());
|
|
|
+ molde.setPittotal(point.getPittotal());
|
|
|
+ return molde;
|
|
|
}
|
|
|
}
|