|
@@ -56,11 +56,11 @@ public class AsyncServiceImpl {
|
|
|
Map<String, Object> map = calc(table, startTime, endTime);
|
|
|
|
|
|
|
|
|
- //0.已织造米数 1.总重量 2.总能耗
|
|
|
+ //0.已织造米数 1.总能耗 2.总重量
|
|
|
float[] total = (float[]) map.get("total");
|
|
|
hour.setLength(BigDecimal.valueOf(total[0]));
|
|
|
- hour.setWeight(BigDecimal.valueOf(total[1]));
|
|
|
- hour.setKwh(BigDecimal.valueOf(total[2]));
|
|
|
+ hour.setWeight(BigDecimal.valueOf(total[2]));
|
|
|
+ hour.setKwh(BigDecimal.valueOf(total[1]));
|
|
|
hour.setOpenTime((long) total[3]);
|
|
|
hour.setCloseTime((long) total[4]);
|
|
|
calcHours.add(hour);
|
|
@@ -99,7 +99,8 @@ public class AsyncServiceImpl {
|
|
|
"Alarm_unit_14", "Alarm_unit_15", "Alarm_unit_16", "Alarm_unit_17", "Alarm_unit_18",
|
|
|
"Alarm_unit_19", "Alarm_unit_20", "Alarm_unit_21", "Alarm_unit_22", "Alarm_unit_23",
|
|
|
"Alarm_unit_24", "Alarm_unit_25", "Alarm_unit_26", "Alarm_unit_27", "Capacity_data_33",
|
|
|
- "Capacity_data_15", "Capacity_data_16", "Capacity_data_17", "Capacity_data_18", "Capacity_data_19"
|
|
|
+ "Capacity_data_15", "Capacity_data_16", "Capacity_data_17", "Capacity_data_18", "Capacity_data_19",
|
|
|
+ "Capacity_data_34"
|
|
|
};
|
|
|
|
|
|
|
|
@@ -133,11 +134,11 @@ public class AsyncServiceImpl {
|
|
|
JSONArray timestamps = data.getJSONArray("timestamps");
|
|
|
//初始时间点数据
|
|
|
//0-data2,1-data37,2-data38,3-data39,4-data42,5-data-43,6data-44
|
|
|
- //2024-06-26 1-6不要了 0织造米长
|
|
|
- float[] first = new float[1];
|
|
|
+ //2024-06-26 1-6不要了 0织造米长 1.电量
|
|
|
+ float[] first = new float[2];
|
|
|
//上一个时间点数据
|
|
|
- float[] last = new float[1];
|
|
|
- //统计数据,后面2个分别代表0.织造米长 1.重量,2.电量,3.开机时间,4.停机时间
|
|
|
+ float[] last = new float[2];
|
|
|
+ //统计数据,后面2个分别代表0.织造米长,1.电量 2.重量,3.开机时间,4.停机时间
|
|
|
float[] total = new float[5];
|
|
|
//上一个时间点盘头数据
|
|
|
int[] lastPanHead = new int[5];
|
|
@@ -165,7 +166,7 @@ public class AsyncServiceImpl {
|
|
|
JSONArray da = values.getJSONArray(i);
|
|
|
//0-data2,1-data37,2-data38,3-data39,4-data42,5-data-43,6data-44
|
|
|
//当前时间数据
|
|
|
- float[] curr = {da.getFloat(0)};
|
|
|
+ float[] curr = {da.getFloat(0), da.getFloat(fieldList.indexOf("Capacity_data_34"))};
|
|
|
int[] currPan = {da.getInt(fieldList.indexOf("Capacity_data_15")), da.getInt(fieldList.indexOf("Capacity_data_16")), da.getInt(fieldList.indexOf("Capacity_data_17")),
|
|
|
da.getInt(fieldList.indexOf("Capacity_data_18")), da.getInt(fieldList.indexOf("Capacity_data_19"))};
|
|
|
int curr48 = da.getInt(7);
|
|
@@ -180,20 +181,19 @@ public class AsyncServiceImpl {
|
|
|
last48 = curr48;
|
|
|
continue;
|
|
|
}
|
|
|
- //计算电量
|
|
|
- calcKwh(da, total);
|
|
|
//计算盘头
|
|
|
calcPan(currPan, lastPanHead, panHeadInfo, timestamps.getLong(i));
|
|
|
|
|
|
- for (int j = 0; j < first.length; j++) {
|
|
|
+// for (int j = 0; j < first.length; j++) {
|
|
|
//如果当前值为小于上一个,且上一个值不为0,则计算
|
|
|
//因为会出现数据波动,停机再启动之后的第一个点不为0,为0.00几几几的
|
|
|
//计算累加类的数据
|
|
|
- if (curr[j] < last[j] && last[j] != 0f) {
|
|
|
- calcTotal(j, last, first, total, lastMkz, lastFk);
|
|
|
- first[j] = curr[j];
|
|
|
+ //这里只计算米长
|
|
|
+ if (curr[0] < last[0] && last[0] != 0f) {
|
|
|
+ calcTotal(0, last, first, total, lastMkz, lastFk);
|
|
|
+ first[0] = curr[0];
|
|
|
}
|
|
|
- }
|
|
|
+// }
|
|
|
calcAlarms(values, old, timestamps.getLong(i), alarmRecord, i);
|
|
|
calcStops(curr48, last48, timestamps.getLong(i), total, stopRecord, old, i);
|
|
|
|
|
@@ -206,13 +206,17 @@ public class AsyncServiceImpl {
|
|
|
}
|
|
|
//最后再补一次计算
|
|
|
for (int j = 0; j < first.length; j++) {
|
|
|
+ //这里米长和电量都要计算
|
|
|
calcTotal(j, last, first, total, lastMkz, lastFk);
|
|
|
}
|
|
|
|
|
|
//存入最后一条记录的停机状态
|
|
|
// CacheUtils.put(Constants.IOT_TOKEN, table, values.getJSONArray(values.size() - 1));
|
|
|
-
|
|
|
- total[3] = (endTime - startTime) / 1000 + 1 - total[4];
|
|
|
+ long openTime = (endTime - startTime) / 1000 + 1;
|
|
|
+ if (openTime < total[4]) {
|
|
|
+ total[4] = openTime;
|
|
|
+ }
|
|
|
+ total[3] = openTime - total[4];
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>(16);
|
|
|
result.put("total", total);
|
|
@@ -244,27 +248,9 @@ public class AsyncServiceImpl {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 能耗计算
|
|
|
- * total[2].总电量
|
|
|
- *
|
|
|
- * @param da 当前数据
|
|
|
- * @param total 统计数组
|
|
|
- */
|
|
|
-
|
|
|
- private void calcKwh(JSONArray da, float[] total) {
|
|
|
- BigDecimal v = da.getBigDecimal(fieldList.indexOf("Capacity_data_33"));
|
|
|
- //单位为W 换算成当前这一秒的用电量 需要除以1000变成千瓦,再除以3600 变成千瓦时
|
|
|
- v = v.divide(BigDecimal.valueOf(3600), 5, RoundingMode.HALF_UP);
|
|
|
- v = v.divide(BigDecimal.valueOf(1000), 5, RoundingMode.HALF_UP);
|
|
|
- float kwh = v.floatValue();
|
|
|
- total[2] = total[2] + kwh;
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 停机次数计算
|
|
|
- */
|
|
|
- /**
|
|
|
* 停机处理
|
|
|
*
|
|
|
* @param curr 当前值
|
|
@@ -444,9 +430,9 @@ public class AsyncServiceImpl {
|
|
|
float v = last[j] - first[j];
|
|
|
total[j] += v;
|
|
|
if (j == 0) {
|
|
|
- //如果是米长,则计算重量
|
|
|
- float weight = BigDecimal.valueOf(v * lastMkz * lastFk / 1000 / 1000).setScale(2, RoundingMode.HALF_UP).floatValue();
|
|
|
- total[1] = total[1] + weight;
|
|
|
+ //如果是米长,则计算重量,米长*米克重*2 2024-11-15
|
|
|
+ float weight = BigDecimal.valueOf(v * lastMkz * 2 / 1000 / 1000).setScale(2, RoundingMode.HALF_UP).floatValue();
|
|
|
+ total[2] = total[2] + weight;
|
|
|
}
|
|
|
}
|
|
|
|