|
@@ -3,7 +3,10 @@ package com.jjt.utils;
|
|
|
import cn.hutool.json.JSONArray;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
import com.jjt.biz.domain.TwinDevice;
|
|
|
-import com.jjt.calc.domain.*;
|
|
|
+import com.jjt.calc.domain.TwinCalcHour;
|
|
|
+import com.jjt.calc.domain.TwinCalcHourSpec;
|
|
|
+import com.jjt.calc.domain.TwinRecordAlarms;
|
|
|
+import com.jjt.calc.domain.TwinRecordStop;
|
|
|
import com.jjt.common.utils.DateUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
@@ -14,7 +17,6 @@ import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneOffset;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.Future;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -31,25 +33,34 @@ public class AsyncService {
|
|
|
@Resource
|
|
|
private IotService iotService;
|
|
|
/**
|
|
|
- * 字段列表,方便看下标
|
|
|
+ * 小经编字段列表,方便看下标
|
|
|
*/
|
|
|
- private final String[] fields = {"Capacity_data_2", "Capacity_data_37", "Capacity_data_38", "Capacity_data_39", "Capacity_data_42",
|
|
|
- "Capacity_data_43", "Capacity_data_44", "Capacity_data_48", "Formula_data_3", "Formula_data_13",
|
|
|
- "Capacity_data_36", "Capacity_data_41", "Alarm_unit_1", "Alarm_unit_2", "Alarm_unit_3",
|
|
|
+ private final String[] xFields = {
|
|
|
+ "Capacity_data_1", "Capacity_data_2", "Capacity_data_15", "Capacity_data_16", "Capacity_data_17",
|
|
|
+ "Capacity_data_18", "Capacity_data_19", "Capacity_data_48",
|
|
|
+ "Formula_data_3", "Formula_data_15", "Formula_data_24", "Alarm_unit_1",
|
|
|
+ "Alarm_unit_10", "Alarm_unit_11", "Alarm_unit_12", "Alarm_unit_13", "Alarm_unit_14",
|
|
|
+ "Alarm_unit_15", "Alarm_unit_16", "Alarm_unit_17", "Alarm_unit_18", "Alarm_unit_19",
|
|
|
+ "Alarm_unit_2", "Alarm_unit_20", "Alarm_unit_21", "Alarm_unit_22", "Alarm_unit_23",
|
|
|
+ "Alarm_unit_24", "Alarm_unit_25", "Alarm_unit_26", "Alarm_unit_27", "Alarm_unit_3",
|
|
|
"Alarm_unit_4", "Alarm_unit_5", "Alarm_unit_6", "Alarm_unit_7", "Alarm_unit_8",
|
|
|
- "Alarm_unit_9", "Alarm_unit_10", "Alarm_unit_11", "Alarm_unit_12", "Alarm_unit_13",
|
|
|
- "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_34", "Formula_data_24", "Formula_data_15", "Capacity_data_1"
|
|
|
+ "Alarm_unit_9"
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 大经编字段列表,方便看下标
|
|
|
+ */
|
|
|
+ private final String[] dFields = {
|
|
|
+ "Capacity_data_117 AS Capacity_data_1", "Capacity_data_177 AS Capacity_data_2", "Capacity_data_15", "Capacity_data_16", "Capacity_data_17",
|
|
|
+ "Capacity_data_18", "Capacity_data_19", "Capacity_data_118 AS Capacity_data_48",
|
|
|
+ "Formula_data_43 AS Formula_data_3", "Formula_data_55 AS Formula_data_15", "Capacity_data_112 AS Formula_data_24"
|
|
|
};
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 字段列表,方便查找位置
|
|
|
*/
|
|
|
- private final List<String> fieldList = Arrays.stream(fields).collect(Collectors.toList());
|
|
|
+ private final List<String> fieldList = Arrays.stream(xFields).collect(Collectors.toList());
|
|
|
|
|
|
@Async("threadPoolTaskExecutor")
|
|
|
public Future<Map<String, Object>> currData(TwinDevice twinDevice) {
|
|
@@ -83,20 +94,15 @@ public class AsyncService {
|
|
|
public Future<Map<String, List<?>>> process(TwinDevice twinDevice, LocalDateTime start, LocalDateTime end) {
|
|
|
//开始时间都减了一秒的,这里要加回来,用于计算时段等数据
|
|
|
LocalDateTime ldt = start.plusSeconds(1);
|
|
|
- Date date = Date.from(ldt.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
|
|
|
- Long startTime = start.toInstant(ZoneOffset.of("+8")).toEpochMilli();
|
|
|
- Long endTime = end.toInstant(ZoneOffset.of("+8")).toEpochMilli();
|
|
|
+ Date date = DateUtils.toDate(ldt.toLocalDate());
|
|
|
int period = ldt.getHour();
|
|
|
Map<String, List<?>> result = new HashMap<>(16);
|
|
|
List<TwinCalcHour> calcHours = new ArrayList<>();
|
|
|
- String table = twinDevice.getDevicePath();
|
|
|
TwinCalcHour hour = new TwinCalcHour();
|
|
|
hour.setDeviceId(twinDevice.getDeviceId());
|
|
|
hour.setDataDate(date);
|
|
|
hour.setHour(period);
|
|
|
-
|
|
|
- Map<String, Object> map = calc(table, startTime, endTime);
|
|
|
-
|
|
|
+ Map<String, Object> map = calc(twinDevice, start, end);
|
|
|
|
|
|
//0.已织造米数 1.总能耗 2.总重量 3.开机时间 4.关机时间
|
|
|
float[] total = (float[]) map.get("total");
|
|
@@ -107,9 +113,6 @@ public class AsyncService {
|
|
|
hour.setCloseTime((long) total[4]);
|
|
|
calcHours.add(hour);
|
|
|
|
|
|
- List<TwinPanHeadInfo> panHeadInfo = (List<TwinPanHeadInfo>) map.get("panHead");
|
|
|
- panHeadInfo.forEach(info -> info.setDeviceId(twinDevice.getDeviceId()));
|
|
|
-
|
|
|
List<TwinCalcHourSpec> specs = (List<TwinCalcHourSpec>) map.get("specList");
|
|
|
specs.forEach(spec -> {
|
|
|
spec.setDeviceId(twinDevice.getDeviceId());
|
|
@@ -180,7 +183,6 @@ public class AsyncService {
|
|
|
result.put("calc", calcHours);
|
|
|
result.put("stopRecord", newStopRecord);
|
|
|
result.put("alarmRecord", newAlarmRecord);
|
|
|
- result.put("panHead", panHeadInfo);
|
|
|
result.put("specList", specs);
|
|
|
return new AsyncResult<>(result);
|
|
|
}
|
|
@@ -188,25 +190,28 @@ public class AsyncService {
|
|
|
|
|
|
/**
|
|
|
* // 0 Capacity_data_2 已织造米数
|
|
|
- * // 1 Capacity_data_37 A班组开机时间
|
|
|
- * // 2 Capacity_data_38 A班组停机时间
|
|
|
- * // 3 Capacity_data_39 A班当前产量
|
|
|
- * // 4 Capacity_data_42 B班组开机时间
|
|
|
- * // 5 Capacity_data_43 B班组停机时间
|
|
|
- * // 6 Capacity_data_44 B班当前产量
|
|
|
* // 7 Capacity_data_48 停机状态
|
|
|
* // 8 Formula_data_3 米克重
|
|
|
* // 9 Formula_data_13 卷曲幅宽
|
|
|
*/
|
|
|
- public Map<String, Object> calc(String table, long startTime, long endTime) {
|
|
|
+ public Map<String, Object> calc(TwinDevice twinDevice, LocalDateTime start, LocalDateTime end) {
|
|
|
+ //为true表示小经编,false表示大经编
|
|
|
+ boolean flag = twinDevice.getDeviceCode().startsWith("C_");
|
|
|
+ String table = twinDevice.getDevicePath();
|
|
|
+ String[] fields = xFields;
|
|
|
+ if (!flag) {
|
|
|
+ fields = dFields;
|
|
|
+ }
|
|
|
String sql = "select %s from %s where time>%s and time <=%s";
|
|
|
- sql = String.format(sql, String.join(",", fields), table, startTime, endTime);
|
|
|
+ sql = String.format(sql, String.join(",", fields), table, DateUtils.parseIso(start), DateUtils.parseIso(end));
|
|
|
long s = System.currentTimeMillis();
|
|
|
JSONObject jsonObject = iotService.query(sql);
|
|
|
long e = System.currentTimeMillis();
|
|
|
- log.info("接口耗时:{}ms,table:{},time:{}", e - s, table, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date(endTime)));
|
|
|
+ log.info("接口耗时:{}ms,table:{},time:{}", e - s, table, end);
|
|
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
|
JSONArray values = data.getJSONArray("values");
|
|
|
+ values = mergedValues(values);
|
|
|
+
|
|
|
JSONArray timestamps = data.getJSONArray("timestamps");
|
|
|
//初始时间点数据
|
|
|
//0-data2,1-data37,2-data38,3-data39,4-data42,5-data-43,6data-44
|
|
@@ -218,112 +223,138 @@ public class AsyncService {
|
|
|
float[] last = new float[3];
|
|
|
//统计数据,后面2个分别代表0.织造米长,1.电量 2.重量,3.开机时间,4.停机时间
|
|
|
float[] total = new float[5];
|
|
|
- //上一个时间点盘头数据
|
|
|
- int[] lastPanHead = new int[5];
|
|
|
//米克重
|
|
|
int lastMkz = 0;
|
|
|
- //卷曲幅宽
|
|
|
- float lastFk = 0f;
|
|
|
//毛高
|
|
|
float lastHeight = 0f;
|
|
|
//上次密度记录的米长
|
|
|
float lastSpecLength = 0f;
|
|
|
- //开始不为0的电能
|
|
|
- //不为0的电能结束
|
|
|
- float startKwh = 0f, endKwh = 0f;
|
|
|
int last48 = 0;
|
|
|
//告警时间记录
|
|
|
List<TwinRecordAlarms> alarmRecord = new ArrayList<>();
|
|
|
//停机记录
|
|
|
List<TwinRecordStop> stopRecord = new ArrayList<>();
|
|
|
- //盘头记录
|
|
|
- List<TwinPanHeadInfo> panHeadInfo = new ArrayList<>();
|
|
|
|
|
|
for (int i = 0; i < values.size(); i++) {
|
|
|
JSONArray da = values.getJSONArray(i);
|
|
|
- //0-data2,1-data37,2-data38,3-data39,4-data42,5-data-43,6data-44
|
|
|
- //当前时间数据 米长,正向电能,牵拉密度
|
|
|
- float[] curr = {da.getFloat(fieldList.indexOf("Capacity_data_2")), da.getFloat(fieldList.indexOf("Capacity_data_34")), da.getFloat(fieldList.indexOf("Formula_data_24"))};
|
|
|
- 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);
|
|
|
+ //当前时间数据 米长,正向电能,牵拉密度 2025-06-19 取消电量计算没必要了
|
|
|
+ float[] curr = {da.getFloat(fieldList.indexOf("Capacity_data_2")), 0f, da.getFloat(fieldList.indexOf("Formula_data_24"))};
|
|
|
+ int curr48 = da.getInt(fieldList.indexOf("Capacity_data_48"));
|
|
|
|
|
|
if (i == 0) {
|
|
|
//第一次数据是上次最后一条,只做记录用,不做处理
|
|
|
first = curr.clone();
|
|
|
last = curr.clone();
|
|
|
- lastPanHead = currPan.clone();
|
|
|
- lastMkz = da.getInt(8);
|
|
|
- lastFk = da.getFloat(9);
|
|
|
+ lastMkz = da.getInt(fieldList.indexOf("Formula_data_3"));
|
|
|
lastHeight = da.getFloat(fieldList.indexOf("Formula_data_15"));
|
|
|
last48 = curr48;
|
|
|
- startKwh = da.getFloat(fieldList.indexOf("Capacity_data_34"));
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- //计算盘头
|
|
|
- calcPan(currPan, lastPanHead, panHeadInfo, timestamps.getLong(i));
|
|
|
- //计算规格米长
|
|
|
if (last[2] != curr[2]) {
|
|
|
calcSpec(total[0], lastSpecLength, last[2], lastMkz, lastHeight, specList);
|
|
|
lastSpecLength = total[0];
|
|
|
}
|
|
|
- //处理电量跳点
|
|
|
- float currKwh = da.getFloat(fieldList.indexOf("Capacity_data_34"));
|
|
|
- if (startKwh == 0) {
|
|
|
- startKwh = currKwh;
|
|
|
- }
|
|
|
-
|
|
|
- if (currKwh != 0f) {
|
|
|
- endKwh = currKwh;
|
|
|
- }
|
|
|
-
|
|
|
-// for (int j = 0; j < first.length; j++) {
|
|
|
//如果当前值为小于上一个,且上一个值不为0,则计算
|
|
|
//因为会出现数据波动,停机再启动之后的第一个点不为0,为0.00几几几的
|
|
|
//计算累加类的数据
|
|
|
//这里只计算米长
|
|
|
if (curr[0] < last[0] && last[0] != 0f) {
|
|
|
- calcTotal(0, last, first, total, lastMkz, lastFk);
|
|
|
+// calcTotal(0, last, first, total, lastMkz, lastFk);
|
|
|
+ calcTotal(0, last, first, total, lastMkz);
|
|
|
first[0] = curr[0];
|
|
|
}
|
|
|
-// }
|
|
|
- calcAlarms(values, timestamps.getLong(i), alarmRecord, i);
|
|
|
+ if (flag) {
|
|
|
+ calcAlarms(values, timestamps.getLong(i), alarmRecord, i);
|
|
|
+ }
|
|
|
calcStops(curr48, last48, timestamps.getLong(i), total, stopRecord, i);
|
|
|
|
|
|
//复制数组,设置last值为当前值
|
|
|
last = curr.clone();
|
|
|
- lastPanHead = currPan.clone();
|
|
|
- if (da.getInt(8) != 0) {
|
|
|
- lastMkz = da.getInt(8);
|
|
|
+ if (da.getInt(fieldList.indexOf("Formula_data_3")) != 0) {
|
|
|
+ lastMkz = da.getInt(fieldList.indexOf("Formula_data_3"));
|
|
|
}
|
|
|
- lastFk = da.getFloat(9);
|
|
|
lastHeight = da.getFloat(fieldList.indexOf("Formula_data_15"));
|
|
|
last48 = curr48;
|
|
|
}
|
|
|
- //最后再补一次计算
|
|
|
-// for (int j = 0; j < first.length; j++) {
|
|
|
-// //这里米长和电量都要计算
|
|
|
-// calcTotal(j, last, first, total, lastMkz, lastFk);
|
|
|
-// }
|
|
|
//还是只计算米长
|
|
|
- calcTotal(0, last, first, total, lastMkz, lastFk);
|
|
|
- calcSpec(total[0], lastSpecLength, last[2], lastMkz, lastHeight, specList);
|
|
|
- //计算电量
|
|
|
- total[1] = endKwh - startKwh;
|
|
|
+ calcTotal(0, last, first, total, lastMkz);
|
|
|
|
|
|
+ calcSpec(total[0], lastSpecLength, last[2], lastMkz, lastHeight, specList);
|
|
|
total[3] = 3600 - total[4];
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>(16);
|
|
|
result.put("total", total);
|
|
|
result.put("stopRecord", stopRecord);
|
|
|
result.put("alarmRecord", alarmRecord);
|
|
|
- result.put("panHead", panHeadInfo);
|
|
|
result.put("specList", specList);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 处理数据 一会这儿有,一会那个有的情况
|
|
|
+ *
|
|
|
+ * @param values 原始数据
|
|
|
+ */
|
|
|
+ private JSONArray mergedValues(JSONArray values) {
|
|
|
+ /*
|
|
|
+ * 合并values数组中的数据,将缺失的数据补全
|
|
|
+ * 1. 遍历values数组,从第二条记录开始(第一条作为基准)
|
|
|
+ * 2. 将后续记录中非空的字段值补到第一条记录的对应位置
|
|
|
+ * 3. 当第一条记录所有字段都非空时停止处理
|
|
|
+ */
|
|
|
+ JSONArray mergedValues = new JSONArray();
|
|
|
+ JSONArray firstValues = values.getJSONArray(0);
|
|
|
+ for (int i = 1; i < values.size(); i++) {
|
|
|
+ JSONArray curr = values.getJSONArray(i);
|
|
|
+ // 遍历当前记录的每个字段
|
|
|
+ for (int j = 0; j < curr.size(); j++) {
|
|
|
+ // 如果当前字段有值且第一条记录的对应字段为空,则补充值
|
|
|
+ if (curr.get(j) != null && !curr.get(j).toString().isEmpty()
|
|
|
+ && (firstValues.get(j) == null || firstValues.get(j).toString().isEmpty())) {
|
|
|
+ firstValues.set(j, curr.get(j));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查第一条记录是否所有字段都已补全
|
|
|
+ boolean isAll = true;
|
|
|
+ for (Object firstValue : firstValues) {
|
|
|
+ if (firstValue == null || firstValue.toString().isEmpty()) {
|
|
|
+ isAll = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果所有字段都已补全,则停止处理
|
|
|
+ if (isAll) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < values.size(); i++) {
|
|
|
+ JSONArray curr = values.getJSONArray(i);
|
|
|
+ JSONArray merged = new JSONArray();
|
|
|
+ if (i > 0) {
|
|
|
+ // 取前一条记录作为基准
|
|
|
+ JSONArray prev = mergedValues.getJSONArray(i - 1);
|
|
|
+ for (int j = 0; j < curr.size(); j++) {
|
|
|
+ if (curr.get(j) != null && !curr.get(j).toString().isEmpty()) {
|
|
|
+ merged.add(curr.get(j));
|
|
|
+ } else {
|
|
|
+ merged.add(prev.get(j));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 第一条记录直接使用
|
|
|
+ merged = curr;
|
|
|
+ }
|
|
|
+ mergedValues.add(merged);
|
|
|
+ }
|
|
|
+ return mergedValues;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 按规格计算米长
|
|
|
*
|
|
|
* @param len 当前米长
|
|
@@ -344,28 +375,6 @@ public class AsyncService {
|
|
|
specList.add(spec);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 计算盘头信息
|
|
|
- * 数组 分别是GB1-GB5
|
|
|
- *
|
|
|
- * @param currPan 当前剩余圈数
|
|
|
- * @param lastPanHead 上一条记录剩余圈数
|
|
|
- * @param panHeadInfo info
|
|
|
- * @param time 时间戳
|
|
|
- */
|
|
|
- private void calcPan(int[] currPan, int[] lastPanHead, List<TwinPanHeadInfo> panHeadInfo, Long time) {
|
|
|
- //如果当前记录大于上一条记录,则证明是重新叫料了,需要记录下当前值
|
|
|
- for (int i = 0; i < currPan.length; i++) {
|
|
|
- if (currPan[i] > lastPanHead[i]) {
|
|
|
- TwinPanHeadInfo info = new TwinPanHeadInfo();
|
|
|
- info.setRecordTime(new Date(time));
|
|
|
- info.setPhNum((long) (i + 1));
|
|
|
- info.setPhMax((long) currPan[i]);
|
|
|
- panHeadInfo.add(info);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 停机次数计算
|
|
@@ -446,15 +455,15 @@ public class AsyncService {
|
|
|
}
|
|
|
//需要单独计算alarm27
|
|
|
//数据位置
|
|
|
- int pos = j + 12;
|
|
|
- int curr27 = curr.getInt(pos);
|
|
|
- if (curr27 != 0) {
|
|
|
- flags[j] = false;
|
|
|
- recordAlarms = new TwinRecordAlarms();
|
|
|
- recordAlarms.setAlarmType(j + 1);
|
|
|
- recordAlarms.setStartTime(new Date(time));
|
|
|
- alarmRecord.add(recordAlarms);
|
|
|
- }
|
|
|
+// int pos = j + 12;
|
|
|
+// int curr27 = curr.getInt(pos);
|
|
|
+// if (curr27 != 0) {
|
|
|
+// flags[j] = false;
|
|
|
+// recordAlarms = new TwinRecordAlarms();
|
|
|
+// recordAlarms.setAlarmType(j + 1);
|
|
|
+// recordAlarms.setStartTime(new Date(time));
|
|
|
+// alarmRecord.add(recordAlarms);
|
|
|
+// }
|
|
|
}
|
|
|
int j = 0;
|
|
|
for (; j < index; j++) {
|
|
@@ -478,32 +487,32 @@ public class AsyncService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (flags[j]) {
|
|
|
- //需要单独计算alarm27
|
|
|
- //数据位置
|
|
|
- int pos = j + 12;
|
|
|
- int alarm27 = curr.getInt(pos);
|
|
|
- //上面已经处理过i=0,所以这里i不可能等于0
|
|
|
- int last27 = last.getInt(pos);
|
|
|
- if (alarm27 != 0 && last27 == 0) {
|
|
|
- recordAlarms = new TwinRecordAlarms();
|
|
|
- recordAlarms.setAlarmType(j + 1);
|
|
|
- recordAlarms.setStartTime(new Date(time));
|
|
|
- alarmRecord.add(recordAlarms);
|
|
|
- }
|
|
|
- if (alarm27 == 0 && last27 != 0) {
|
|
|
- recordAlarms = new TwinRecordAlarms();
|
|
|
- recordAlarms.setAlarmType(j + 1);
|
|
|
- recordAlarms.setEndTime(new Date(time));
|
|
|
- alarmRecord.add(recordAlarms);
|
|
|
- }
|
|
|
- }
|
|
|
+// if (flags[j]) {
|
|
|
+// //需要单独计算alarm27
|
|
|
+// //数据位置
|
|
|
+// int pos = j + 12;
|
|
|
+// int alarm27 = curr.getInt(pos);
|
|
|
+// //上面已经处理过i=0,所以这里i不可能等于0
|
|
|
+// int last27 = last.getInt(pos);
|
|
|
+// if (alarm27 != 0 && last27 == 0) {
|
|
|
+// recordAlarms = new TwinRecordAlarms();
|
|
|
+// recordAlarms.setAlarmType(j + 1);
|
|
|
+// recordAlarms.setStartTime(new Date(time));
|
|
|
+// alarmRecord.add(recordAlarms);
|
|
|
+// }
|
|
|
+// if (alarm27 == 0 && last27 != 0) {
|
|
|
+// recordAlarms = new TwinRecordAlarms();
|
|
|
+// recordAlarms.setAlarmType(j + 1);
|
|
|
+// recordAlarms.setEndTime(new Date(time));
|
|
|
+// alarmRecord.add(recordAlarms);
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 重量计算 提取公共方法
|
|
|
*/
|
|
|
- private void calcTotal(int j, float[] last, float[] first, float[] total, int lastMkz, float lastFk) {
|
|
|
+ private void calcTotal(int j, float[] last, float[] first, float[] total, int lastMkz) {
|
|
|
float v = last[j] - first[j];
|
|
|
total[j] += v;
|
|
|
if (j == 0) {
|