|
@@ -536,17 +536,17 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
if (latest2DataList.size() >= 2) {
|
|
|
//铁量差 = 理论出铁量 - 实际出铁量
|
|
|
TL2Data tl2Data1Last = latest2DataList.get(0);
|
|
|
- BigDecimal theoryWeightLast = new BigDecimal(tl2Data1Last.getTheoryWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal ironWeightLast = new BigDecimal(tl2Data1Last.getIronWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal tlcLast = theoryWeightLast.subtract(ironWeightLast).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal theoryWeightLast = new BigDecimal(tl2Data1Last.getTheoryWeight()).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal ironWeightLast = new BigDecimal(tl2Data1Last.getIronWeight()).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal tlcLast = theoryWeightLast.subtract(ironWeightLast).setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
TL2Data tl2Data1Grand = latest2DataList.get(1);
|
|
|
//
|
|
|
- BigDecimal theoryWeightGrand = new BigDecimal(tl2Data1Grand.getTheoryWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal theoryWeightGrand = new BigDecimal(tl2Data1Grand.getTheoryWeight()).setScale(2, RoundingMode.HALF_UP);
|
|
|
//
|
|
|
- BigDecimal ironWeightGrand = new BigDecimal(tl2Data1Grand.getIronWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal ironWeightGrand = new BigDecimal(tl2Data1Grand.getIronWeight()).setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
- BigDecimal tlcGrand = theoryWeightGrand.subtract(ironWeightGrand).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal tlcGrand = theoryWeightGrand.subtract(ironWeightGrand).setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
//近两次铁量差=近两次
|
|
|
BigDecimal tlcjlc = tlcLast.add(tlcGrand);
|
|
@@ -619,11 +619,42 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
//代表要减去的时间,非剩余时间
|
|
|
private AtomicInteger mDiffCloseTime = new AtomicInteger(0);
|
|
|
|
|
|
+ /***
|
|
|
+ * 剩余出铁时间 = (理论铁量(1300)-累计出铁量)/流速
|
|
|
+ */
|
|
|
private void getCloseTime() {
|
|
|
+ if(ironLoading1.get() <= 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
|
- realtimeData.setValue(Math.max(mTotalCloseTime - getIronElapsedMinute() - mDiffCloseTime.get(), 0));
|
|
|
realtimeData.setDesc("距离堵口预计还剩");
|
|
|
realtimeData.setUnit("分钟");
|
|
|
+ int diffCloseTime = 0;
|
|
|
+ //实时出铁时间
|
|
|
+ int ironElapsedMinute = getIronElapsedMinute();
|
|
|
+
|
|
|
+ if(ironElapsedMinute <= 0){
|
|
|
+ realtimeData.setValue(diffCloseTime);
|
|
|
+ PushData.send2CloseTime(realtimeData);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //最大出铁标准量
|
|
|
+ double stdIronWeightMax = Double.parseDouble(mContext.lookupVariable(ExpressionConstants.stdIronWeightMax).toString());
|
|
|
+ //实时总铁量
|
|
|
+ BigDecimal totalWeight = mTotalWeight.get();
|
|
|
+ //平均流速
|
|
|
+ BigDecimal avgSpeed = totalWeight.divide(BigDecimal.valueOf(ironElapsedMinute), 2, RoundingMode.HALF_UP);
|
|
|
+ //剩余重量
|
|
|
+ BigDecimal diffWeight = BigDecimal.valueOf(Math.max(stdIronWeightMax - totalWeight.doubleValue(), 0));
|
|
|
+ if(avgSpeed.compareTo(BigDecimal.ZERO) <= 0){
|
|
|
+ realtimeData.setValue(diffCloseTime);
|
|
|
+ PushData.send2CloseTime(realtimeData);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //计算剩余时间
|
|
|
+ diffCloseTime = diffWeight.divide(avgSpeed, 2, RoundingMode.HALF_UP).intValue();
|
|
|
+ realtimeData.setValue(diffCloseTime);
|
|
|
PushData.send2CloseTime(realtimeData);
|
|
|
}
|
|
|
|
|
@@ -1154,17 +1185,17 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
private Runnable runnableClosurePredict(ClosurePredictInfo mClosurePredictInfo) {
|
|
|
return () -> {
|
|
|
if (mMaxSpeed.get() > 0 && ironLoading1.get() > 0) {
|
|
|
- if (this.mLastSpeed.get() == 0) {
|
|
|
-
|
|
|
- } else if (mMaxSpeed.get() > this.mLastSpeed.get()) {
|
|
|
- //当前流速大于以前的流速
|
|
|
- mDiffCloseTime.set(mDiffCloseTime.get() + mClosurePredictInfo.getDecrMinute());
|
|
|
- } else if (mMaxSpeed.get() < this.mLastSpeed.get()) {
|
|
|
- //当前流速小于以前的流速
|
|
|
- mDiffCloseTime.set(mDiffCloseTime.get() - mClosurePredictInfo.getIncrMinute());
|
|
|
- }
|
|
|
- this.mLastSpeed.set(mMaxSpeed.get());
|
|
|
- RedisUtils.addFixedElement(RedisConstants.DIFF_CLOSE_TIME, mDiffCloseTime.get());
|
|
|
+// if (this.mLastSpeed.get() == 0) {
|
|
|
+//
|
|
|
+// } else if (mMaxSpeed.get() > this.mLastSpeed.get()) {
|
|
|
+// //当前流速大于以前的流速
|
|
|
+// mDiffCloseTime.set(mDiffCloseTime.get() + mClosurePredictInfo.getDecrMinute());
|
|
|
+// } else if (mMaxSpeed.get() < this.mLastSpeed.get()) {
|
|
|
+// //当前流速小于以前的流速
|
|
|
+// mDiffCloseTime.set(mDiffCloseTime.get() - mClosurePredictInfo.getIncrMinute());
|
|
|
+// }
|
|
|
+// this.mLastSpeed.set(mMaxSpeed.get());
|
|
|
+// RedisUtils.addFixedElement(RedisConstants.DIFF_CLOSE_TIME, mDiffCloseTime.get());
|
|
|
getCloseTime();
|
|
|
}
|
|
|
|
|
@@ -1358,8 +1389,8 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
|
|
|
// 计算实际数据
|
|
|
int actualIronTime = getIronElapsedMinute();
|
|
|
- double actualIronWeight = mTotalWeight.get().setScale(2, RoundingMode.DOWN).doubleValue();
|
|
|
- double actualIronSpeed = actualIronTime == 0 ? 0 : BigDecimal.valueOf(actualIronWeight).divide(BigDecimal.valueOf(actualIronTime), 2, RoundingMode.DOWN).doubleValue();
|
|
|
+ double actualIronWeight = mTotalWeight.get().setScale(2, RoundingMode.HALF_UP).doubleValue();
|
|
|
+ double actualIronSpeed = actualIronTime == 0 ? 0 : BigDecimal.valueOf(actualIronWeight).divide(BigDecimal.valueOf(actualIronTime), 2, RoundingMode.HALF_UP).doubleValue();
|
|
|
|
|
|
OptionalDouble averageTemp = tempList.stream()
|
|
|
.mapToInt(Integer::intValue)
|
|
@@ -1933,6 +1964,10 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
mWarnCountMap.put("speedMinWarn", 0);
|
|
|
mWarnCountMap.put("speedMaxWarn", 0);
|
|
|
}
|
|
|
+
|
|
|
+ //剩余铁量计算-流速
|
|
|
+ getCloseTime();
|
|
|
+
|
|
|
}
|
|
|
} else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_TAPHOLE2_STATUS(opcData.getServerType()))) {
|
|
|
ironLoading2.set(Integer.parseInt(opcData.getData().toString()));
|
|
@@ -2010,6 +2045,8 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
log.info(" ├─ 📝 更新上次流量值: {} → {}", ironWeight1Pre, bigDecimalNew);
|
|
|
ironWeight1Pre = bigDecimalNew;
|
|
|
|
|
|
+ //剩余铁量计算-流量
|
|
|
+ getCloseTime();
|
|
|
} else {
|
|
|
log.info(" ├─ ⏸️ 出铁状态未激活,流量值设为0");
|
|
|
realtimeData.setValue(0);
|
|
@@ -2243,12 +2280,12 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
String elementS = fixedLatestElement.getElementS();
|
|
|
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
|
- realtimeData.setValue(new BigDecimal(elementSi).setScale(3, RoundingMode.DOWN).toPlainString());
|
|
|
+ realtimeData.setValue(new BigDecimal(elementSi).setScale(3, RoundingMode.HALF_UP).toPlainString());
|
|
|
realtimeData.setUnit("%");
|
|
|
realtimeData.setDesc("硅");
|
|
|
|
|
|
RealtimeData realtimeData2 = new RealtimeData();
|
|
|
- realtimeData2.setValue(new BigDecimal(elementS).setScale(3, RoundingMode.DOWN).toPlainString());
|
|
|
+ realtimeData2.setValue(new BigDecimal(elementS).setScale(3, RoundingMode.HALF_UP).toPlainString());
|
|
|
realtimeData2.setUnit("%");
|
|
|
realtimeData2.setDesc("硫");
|
|
|
|