|
@@ -29,28 +29,22 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
/**
|
|
/**
|
|
|
* 框架气密 S7 采集与质量握手(OP360)。
|
|
* 框架气密 S7 采集与质量握手(OP360)。
|
|
|
* <pre>
|
|
* <pre>
|
|
|
- * DB9100 控制点位:
|
|
|
|
|
- * 48.0 液冷板判定结果 Bool
|
|
|
|
|
- * 48.1 框架判定结果 Bool
|
|
|
|
|
- * 48.2 过程数据采集触发 Bool
|
|
|
|
|
- * 112.0 质量校验通过反馈(MES 写 true)
|
|
|
|
|
- * 112.1 扫码反馈信号(校验通过后 MES 写 false 复位)
|
|
|
|
|
- * 114.0 扫码框架码 String[60]
|
|
|
|
|
- * 50.0 气密框架码 String[60](提交数据及工位结果使用)
|
|
|
|
|
|
|
+ * DB9100 进站:
|
|
|
|
|
+ * 112.0 A1允许进站 Bool(MES 仅写 true;由 PLC 自行清零,MES 绝不写 false)
|
|
|
|
|
+ * 112.1 A1扫码反馈 Bool(校验通过后 MES 写 false 复位)
|
|
|
|
|
+ * 114.0 进站框架码 String[60]
|
|
|
*
|
|
*
|
|
|
- * DB9100 过程数据(Real):
|
|
|
|
|
- * 0.0 液冷板充气时间
|
|
|
|
|
- * 4.0 液冷板保压时间
|
|
|
|
|
- * 8.0 液冷板测试时间
|
|
|
|
|
- * 12.0 液冷板充气压力
|
|
|
|
|
- * 16.0 液冷板稳定压力
|
|
|
|
|
- * 20.0 液冷板泄漏量
|
|
|
|
|
- * 24.0 框架充气时间
|
|
|
|
|
- * 28.0 框架保压时间
|
|
|
|
|
- * 32.0 框架测试时间
|
|
|
|
|
- * 36.0 框架充气压力
|
|
|
|
|
- * 40.0 框架稳定压力
|
|
|
|
|
- * 44.0 框架泄漏量
|
|
|
|
|
|
|
+ * DB9100 ST01(A)完成采集:
|
|
|
|
|
+ * 240.0 气密ST01工作完成 Bool(成功后 MES 复位 false)
|
|
|
|
|
+ * 178.0 气密ST01框架码 String[60]
|
|
|
|
|
+ * 0.0~20.0 液冷板过程 Real;24.0~44.0 框架过程 Real
|
|
|
|
|
+ * 48.0 / 48.1 液冷板/框架判定 Bool
|
|
|
|
|
+ *
|
|
|
|
|
+ * DB9100 ST02(B)完成采集:
|
|
|
|
|
+ * 304.0 气密ST02工作完成 Bool(成功后 MES 复位 false)
|
|
|
|
|
+ * 242.0 气密ST02框架码 String[60]
|
|
|
|
|
+ * 306.0~326.0 液冷板过程 Real;330.0~350.0 框架过程 Real
|
|
|
|
|
+ * 354.0 / 354.1 液冷板/框架判定 Bool
|
|
|
*
|
|
*
|
|
|
* 配置(application.yml):
|
|
* 配置(application.yml):
|
|
|
* mes.framework.qm.enabled 是否启用(默认 false)
|
|
* mes.framework.qm.enabled 是否启用(默认 false)
|
|
@@ -65,28 +59,32 @@ public class FrameworkQmScheduling {
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(FrameworkQmScheduling.class);
|
|
private static final Logger logger = LoggerFactory.getLogger(FrameworkQmScheduling.class);
|
|
|
|
|
|
|
|
- private static final String ADDR_QUALITY_PASS = "DB9100.112.0";
|
|
|
|
|
|
|
+ private static final String ADDR_ALLOW_ENTRY = "DB9100.112.0";
|
|
|
|
|
+ private static final String ADDR_SCAN_FEEDBACK = "DB9100.112.1";
|
|
|
private static final String ADDR_SCAN_SN = "DB9100.114.0";
|
|
private static final String ADDR_SCAN_SN = "DB9100.114.0";
|
|
|
- private static final String ADDR_QM_SN = "DB9100.50.0";
|
|
|
|
|
private static final int SN_LENGTH = 60;
|
|
private static final int SN_LENGTH = 60;
|
|
|
- private static final String ADDR_SCAN_FEEDBACK = "DB9100.112.1";
|
|
|
|
|
|
|
|
|
|
- private static final String ADDR_YLB_INFLATION_TIME = "DB9100.0.0";
|
|
|
|
|
- private static final String ADDR_YLB_HOLD_TIME = "DB9100.4.0";
|
|
|
|
|
- private static final String ADDR_YLB_TEST_TIME = "DB9100.8.0";
|
|
|
|
|
- private static final String ADDR_YLB_INFLATION_PRESSURE = "DB9100.12.0";
|
|
|
|
|
- private static final String ADDR_YLB_STABLE_PRESSURE = "DB9100.16.0";
|
|
|
|
|
- private static final String ADDR_YLB_LEAK = "DB9100.20.0";
|
|
|
|
|
-
|
|
|
|
|
- private static final String ADDR_INFLATION_TIME = "DB9100.24.0";
|
|
|
|
|
- private static final String ADDR_HOLD_TIME = "DB9100.28.0";
|
|
|
|
|
- private static final String ADDR_TEST_TIME = "DB9100.32.0";
|
|
|
|
|
- private static final String ADDR_INFLATION_PRESSURE = "DB9100.36.0";
|
|
|
|
|
- private static final String ADDR_STABLE_PRESSURE = "DB9100.40.0";
|
|
|
|
|
- private static final String ADDR_LEAK_AMOUNT = "DB9100.44.0";
|
|
|
|
|
- private static final String ADDR_COLLECT_FLAG = "DB9100.48.2";
|
|
|
|
|
- private static final String ADDR_YLB_JUDGE_RESULT = "DB9100.48.0";
|
|
|
|
|
- private static final String ADDR_JUDGE_RESULT = "DB9100.48.1";
|
|
|
|
|
|
|
+ private static final StationChannel ST01 = new StationChannel(
|
|
|
|
|
+ "ST01",
|
|
|
|
|
+ "DB9100.240.0",
|
|
|
|
|
+ "DB9100.178.0",
|
|
|
|
|
+ "DB9100.0.0", "DB9100.4.0", "DB9100.8.0",
|
|
|
|
|
+ "DB9100.12.0", "DB9100.16.0", "DB9100.20.0",
|
|
|
|
|
+ "DB9100.24.0", "DB9100.28.0", "DB9100.32.0",
|
|
|
|
|
+ "DB9100.36.0", "DB9100.40.0", "DB9100.44.0",
|
|
|
|
|
+ "DB9100.48.0", "DB9100.48.1"
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ private static final StationChannel ST02 = new StationChannel(
|
|
|
|
|
+ "ST02",
|
|
|
|
|
+ "DB9100.304.0",
|
|
|
|
|
+ "DB9100.242.0",
|
|
|
|
|
+ "DB9100.306.0", "DB9100.310.0", "DB9100.314.0",
|
|
|
|
|
+ "DB9100.318.0", "DB9100.322.0", "DB9100.326.0",
|
|
|
|
|
+ "DB9100.330.0", "DB9100.334.0", "DB9100.338.0",
|
|
|
|
|
+ "DB9100.342.0", "DB9100.346.0", "DB9100.350.0",
|
|
|
|
|
+ "DB9100.354.0", "DB9100.354.1"
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
private static final String DEFAULT_PLC_IP = "192.168.1.100";
|
|
private static final String DEFAULT_PLC_IP = "192.168.1.100";
|
|
|
private static final String DEFAULT_OPRNO = "OP360";
|
|
private static final String DEFAULT_OPRNO = "OP360";
|
|
@@ -128,7 +126,8 @@ public class FrameworkQmScheduling {
|
|
|
try {
|
|
try {
|
|
|
s7PLC = new S7PLC(EPlcType.S1200, ip);
|
|
s7PLC = new S7PLC(EPlcType.S1200, ip);
|
|
|
handleScanFeedback(s7PLC);
|
|
handleScanFeedback(s7PLC);
|
|
|
- handleCollectTrigger(s7PLC);
|
|
|
|
|
|
|
+ handleStationComplete(s7PLC, ST01);
|
|
|
|
|
+ handleStationComplete(s7PLC, ST02);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
logger.error("框架气密S7任务失败[{}]:{}", ip, e.getMessage());
|
|
logger.error("框架气密S7任务失败[{}]:{}", ip, e.getMessage());
|
|
|
} finally {
|
|
} finally {
|
|
@@ -143,7 +142,8 @@ public class FrameworkQmScheduling {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 扫码反馈为 true:读扫码框架码 → 质量校验 → 通过则写 DB9100.112.0=true,并将 DB9100.112.1 复位为 false
|
|
|
|
|
|
|
+ * 扫码反馈为 true:读进站框架码 → 质量校验 → 通过则写 112.0=true,并将 112.1 复位为 false。
|
|
|
|
|
+ * 注意:112.0(允许进站)仅写 true,由 PLC 自行清零,MES 绝不写 false。
|
|
|
*/
|
|
*/
|
|
|
private void handleScanFeedback(S7PLC s7PLC) {
|
|
private void handleScanFeedback(S7PLC s7PLC) {
|
|
|
if (!s7PLC.readBoolean(ADDR_SCAN_FEEDBACK)) {
|
|
if (!s7PLC.readBoolean(ADDR_SCAN_FEEDBACK)) {
|
|
@@ -160,10 +160,10 @@ public class FrameworkQmScheduling {
|
|
|
|
|
|
|
|
boolean pass = doQualityCheck(sn);
|
|
boolean pass = doQualityCheck(sn);
|
|
|
if (pass) {
|
|
if (pass) {
|
|
|
- s7PLC.writeBoolean(ADDR_QUALITY_PASS, true);
|
|
|
|
|
|
|
+ s7PLC.writeBoolean(ADDR_ALLOW_ENTRY, true);
|
|
|
s7PLC.writeBoolean(ADDR_SCAN_FEEDBACK, false);
|
|
s7PLC.writeBoolean(ADDR_SCAN_FEEDBACK, false);
|
|
|
- logger.info("框架气密质量校验通过 sn={},已写 {}=true,已将 {} 复位为 false",
|
|
|
|
|
- sn, ADDR_QUALITY_PASS, ADDR_SCAN_FEEDBACK);
|
|
|
|
|
|
|
+ logger.info("框架气密质量校验通过 sn={},已写 {}=true(PLC自清),已将 {} 复位为 false",
|
|
|
|
|
+ sn, ADDR_ALLOW_ENTRY, ADDR_SCAN_FEEDBACK);
|
|
|
} else {
|
|
} else {
|
|
|
logger.warn("框架气密质量校验未通过 sn={}", sn);
|
|
logger.warn("框架气密质量校验未通过 sn={}", sn);
|
|
|
}
|
|
}
|
|
@@ -171,58 +171,61 @@ public class FrameworkQmScheduling {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 采集触发为 true:读过程参数 → 落库 mes_product_qmzc → 提交 OP360 工位结果 → 清触发位
|
|
|
|
|
|
|
+ * 通道完成信号为 true:读该通道框架码与过程数据 → 落库 → 报工 → 成功后清完成位。
|
|
|
|
|
+ * ST01 / ST02 互不影响。
|
|
|
*/
|
|
*/
|
|
|
- private void handleCollectTrigger(S7PLC s7PLC) {
|
|
|
|
|
- if (!s7PLC.readBoolean(ADDR_COLLECT_FLAG)) {
|
|
|
|
|
|
|
+ private void handleStationComplete(S7PLC s7PLC, StationChannel ch) {
|
|
|
|
|
+ if (!s7PLC.readBoolean(ch.completeFlag)) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- String qmSn = readWorkpieceCode(s7PLC, ADDR_QM_SN);
|
|
|
|
|
|
|
+ String qmSn = readWorkpieceCode(s7PLC, ch.qmSn);
|
|
|
if (StringUtils.isBlank(qmSn)) {
|
|
if (StringUtils.isBlank(qmSn)) {
|
|
|
- logger.error("框架气密采集失败:无气密框架码,保持 {}=true 待重试", ADDR_COLLECT_FLAG);
|
|
|
|
|
|
|
+ logger.error("框架气密采集[{}]失败:无气密框架码,保持 {}=true 待重试", ch.name, ch.completeFlag);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- float ylbInflationTime = s7PLC.readFloat32(ADDR_YLB_INFLATION_TIME);
|
|
|
|
|
- float ylbTestTime = s7PLC.readFloat32(ADDR_YLB_TEST_TIME);
|
|
|
|
|
- float ylbInflationPressure = s7PLC.readFloat32(ADDR_YLB_INFLATION_PRESSURE);
|
|
|
|
|
- float ylbStablePressure = s7PLC.readFloat32(ADDR_YLB_STABLE_PRESSURE);
|
|
|
|
|
- float ylbLeak = s7PLC.readFloat32(ADDR_YLB_LEAK);
|
|
|
|
|
- float ylbHoldTime = s7PLC.readFloat32(ADDR_YLB_HOLD_TIME);
|
|
|
|
|
-
|
|
|
|
|
- float inflationTime = s7PLC.readFloat32(ADDR_INFLATION_TIME);
|
|
|
|
|
- float testTime = s7PLC.readFloat32(ADDR_TEST_TIME);
|
|
|
|
|
- float inflationPressure = s7PLC.readFloat32(ADDR_INFLATION_PRESSURE);
|
|
|
|
|
- float stablePressure = s7PLC.readFloat32(ADDR_STABLE_PRESSURE);
|
|
|
|
|
- float leakAmount = s7PLC.readFloat32(ADDR_LEAK_AMOUNT);
|
|
|
|
|
- float holdTime = s7PLC.readFloat32(ADDR_HOLD_TIME);
|
|
|
|
|
- boolean ylbJudgePass = s7PLC.readBoolean(ADDR_YLB_JUDGE_RESULT);
|
|
|
|
|
- boolean judgePass = s7PLC.readBoolean(ADDR_JUDGE_RESULT);
|
|
|
|
|
|
|
+ float ylbInflationTime = s7PLC.readFloat32(ch.ylbInflationTime);
|
|
|
|
|
+ float ylbHoldTime = s7PLC.readFloat32(ch.ylbHoldTime);
|
|
|
|
|
+ float ylbTestTime = s7PLC.readFloat32(ch.ylbTestTime);
|
|
|
|
|
+ float ylbInflationPressure = s7PLC.readFloat32(ch.ylbInflationPressure);
|
|
|
|
|
+ float ylbStablePressure = s7PLC.readFloat32(ch.ylbStablePressure);
|
|
|
|
|
+ float ylbLeak = s7PLC.readFloat32(ch.ylbLeak);
|
|
|
|
|
+
|
|
|
|
|
+ float inflationTime = s7PLC.readFloat32(ch.inflationTime);
|
|
|
|
|
+ float holdTime = s7PLC.readFloat32(ch.holdTime);
|
|
|
|
|
+ float testTime = s7PLC.readFloat32(ch.testTime);
|
|
|
|
|
+ float inflationPressure = s7PLC.readFloat32(ch.inflationPressure);
|
|
|
|
|
+ float stablePressure = s7PLC.readFloat32(ch.stablePressure);
|
|
|
|
|
+ float leakAmount = s7PLC.readFloat32(ch.leakAmount);
|
|
|
|
|
+
|
|
|
|
|
+ boolean ylbJudgePass = s7PLC.readBoolean(ch.ylbJudge);
|
|
|
|
|
+ boolean judgePass = s7PLC.readBoolean(ch.frameJudge);
|
|
|
String ylbStationResult = ylbJudgePass ? "OK" : "NG";
|
|
String ylbStationResult = ylbJudgePass ? "OK" : "NG";
|
|
|
String stationResult = judgePass ? "OK" : "NG";
|
|
String stationResult = judgePass ? "OK" : "NG";
|
|
|
|
|
|
|
|
- logger.info("框架气密采集 qmSn={} 液冷板[充气时间={} 测试时间={} 充气压力={} 稳定压力={} 泄漏量={} 保压时间={} 判定={}] "
|
|
|
|
|
|
|
+ logger.info("框架气密采集[{}] qmSn={} 液冷板[充气时间={} 测试时间={} 充气压力={} 稳定压力={} 泄漏量={} 保压时间={} 判定={}] "
|
|
|
+ "框架[充气时间={} 测试时间={} 充气压力={} 稳定压力={} 泄露量={} 保压时间={} 判定={}]",
|
|
+ "框架[充气时间={} 测试时间={} 充气压力={} 稳定压力={} 泄露量={} 保压时间={} 判定={}]",
|
|
|
- qmSn, ylbInflationTime, ylbTestTime, ylbInflationPressure, ylbStablePressure, ylbLeak, ylbHoldTime, ylbStationResult,
|
|
|
|
|
|
|
+ ch.name, qmSn, ylbInflationTime, ylbTestTime, ylbInflationPressure, ylbStablePressure, ylbLeak, ylbHoldTime, ylbStationResult,
|
|
|
inflationTime, testTime, inflationPressure, stablePressure, leakAmount, holdTime, stationResult);
|
|
inflationTime, testTime, inflationPressure, stablePressure, leakAmount, holdTime, stationResult);
|
|
|
|
|
|
|
|
- if (!saveQmzcData(qmSn, ylbInflationTime, ylbTestTime, ylbInflationPressure, ylbStablePressure, ylbLeak, ylbHoldTime,
|
|
|
|
|
|
|
+ if (!saveQmzcData(ch.name, qmSn, ylbInflationTime, ylbTestTime, ylbInflationPressure, ylbStablePressure, ylbLeak, ylbHoldTime,
|
|
|
inflationTime, testTime, inflationPressure, stablePressure, leakAmount, holdTime,
|
|
inflationTime, testTime, inflationPressure, stablePressure, leakAmount, holdTime,
|
|
|
ylbStationResult, stationResult)) {
|
|
ylbStationResult, stationResult)) {
|
|
|
- logger.error("框架气密数据保存失败,保持 {}=true 待重试 qmSn={}", ADDR_COLLECT_FLAG, qmSn);
|
|
|
|
|
|
|
+ logger.error("框架气密数据保存失败[{}],保持 {}=true 待重试 qmSn={}", ch.name, ch.completeFlag, qmSn);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- if (!submitStationResult(qmSn, stationResult)) {
|
|
|
|
|
- logger.error("框架气密工位结果提交失败,保持 {}=true 待重试 qmSn={}", ADDR_COLLECT_FLAG, qmSn);
|
|
|
|
|
|
|
+ if (!submitStationResult(ch.name, qmSn, stationResult)) {
|
|
|
|
|
+ logger.error("框架气密工位结果提交失败[{}],保持 {}=true 待重试 qmSn={}", ch.name, ch.completeFlag, qmSn);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- s7PLC.writeBoolean(ADDR_COLLECT_FLAG, false);
|
|
|
|
|
- logger.info("框架气密采集完成 qmSn={} result={},已将 {} 置 false", qmSn, stationResult, ADDR_COLLECT_FLAG);
|
|
|
|
|
|
|
+ s7PLC.writeBoolean(ch.completeFlag, false);
|
|
|
|
|
+ logger.info("框架气密采集完成[{}] qmSn={} result={},已将 {} 置 false",
|
|
|
|
|
+ ch.name, qmSn, stationResult, ch.completeFlag);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private boolean saveQmzcData(String qmSn, float ylbInflationTime, float ylbTestTime, float ylbInflationPressure,
|
|
|
|
|
|
|
+ private boolean saveQmzcData(String channel, String qmSn, float ylbInflationTime, float ylbTestTime, float ylbInflationPressure,
|
|
|
float ylbStablePressure, float ylbLeak, float ylbHoldTime,
|
|
float ylbStablePressure, float ylbLeak, float ylbHoldTime,
|
|
|
float inflationTime, float testTime, float inflationPressure, float stablePressure,
|
|
float inflationTime, float testTime, float inflationPressure, float stablePressure,
|
|
|
float leakAmount, float holdTime, String ylbStationResult, String stationResult) {
|
|
float leakAmount, float holdTime, String ylbStationResult, String stationResult) {
|
|
@@ -243,15 +246,15 @@ public class FrameworkQmScheduling {
|
|
|
entity.setBysj(fmt(holdTime));
|
|
entity.setBysj(fmt(holdTime));
|
|
|
entity.setResult(stationResult);
|
|
entity.setResult(stationResult);
|
|
|
mesProductQmzcService.save(entity);
|
|
mesProductQmzcService.save(entity);
|
|
|
- logger.info("框架气密数据已保存 qmSn={}", qmSn);
|
|
|
|
|
|
|
+ logger.info("框架气密数据已保存[{}] qmSn={}", channel, qmSn);
|
|
|
return true;
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("框架气密数据保存异常 qmSn={}:{}", qmSn, e.getMessage());
|
|
|
|
|
|
|
+ logger.error("框架气密数据保存异常[{}] qmSn={}:{}", channel, qmSn, e.getMessage());
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private boolean submitStationResult(String sn, String result) {
|
|
|
|
|
|
|
+ private boolean submitStationResult(String channel, String sn, String result) {
|
|
|
try {
|
|
try {
|
|
|
String oprno = getOprno();
|
|
String oprno = getOprno();
|
|
|
if (oprno.length() == 5) {
|
|
if (oprno.length() == 5) {
|
|
@@ -259,17 +262,17 @@ public class FrameworkQmScheduling {
|
|
|
}
|
|
}
|
|
|
String lineSn = getLineSn(sn);
|
|
String lineSn = getLineSn(sn);
|
|
|
if (StringUtils.isBlank(lineSn)) {
|
|
if (StringUtils.isBlank(lineSn)) {
|
|
|
- logger.warn("框架气密工位结果提交失败:无法解析产线编号 sn={}", sn);
|
|
|
|
|
|
|
+ logger.warn("框架气密工位结果提交失败[{}]:无法解析产线编号 sn={}", channel, sn);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
List<ParamsResp> params = new ArrayList<>();
|
|
List<ParamsResp> params = new ArrayList<>();
|
|
|
List<BindMaterialResp> bmlists = new ArrayList<>();
|
|
List<BindMaterialResp> bmlists = new ArrayList<>();
|
|
|
mesProductRecordService.updateRecordResult(sn, oprno, "100000", "", result,
|
|
mesProductRecordService.updateRecordResult(sn, oprno, "100000", "", result,
|
|
|
"", params, lineSn, true, bmlists, null);
|
|
"", params, lineSn, true, bmlists, null);
|
|
|
- logger.info("框架气密工位结果已提交 sn={} oprno={} result={}", sn, oprno, result);
|
|
|
|
|
|
|
+ logger.info("框架气密工位结果已提交[{}] sn={} oprno={} result={}", channel, sn, oprno, result);
|
|
|
return true;
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("框架气密工位结果提交异常 sn={}:{}", sn, e.getMessage());
|
|
|
|
|
|
|
+ logger.error("框架气密工位结果提交异常[{}] sn={}:{}", channel, sn, e.getMessage());
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -344,4 +347,50 @@ public class FrameworkQmScheduling {
|
|
|
private static String fmt(float val) {
|
|
private static String fmt(float val) {
|
|
|
return String.format("%.3f", val);
|
|
return String.format("%.3f", val);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /** 单通道气密完成采集点位 */
|
|
|
|
|
+ private static final class StationChannel {
|
|
|
|
|
+ final String name;
|
|
|
|
|
+ final String completeFlag;
|
|
|
|
|
+ final String qmSn;
|
|
|
|
|
+ final String ylbInflationTime;
|
|
|
|
|
+ final String ylbHoldTime;
|
|
|
|
|
+ final String ylbTestTime;
|
|
|
|
|
+ final String ylbInflationPressure;
|
|
|
|
|
+ final String ylbStablePressure;
|
|
|
|
|
+ final String ylbLeak;
|
|
|
|
|
+ final String inflationTime;
|
|
|
|
|
+ final String holdTime;
|
|
|
|
|
+ final String testTime;
|
|
|
|
|
+ final String inflationPressure;
|
|
|
|
|
+ final String stablePressure;
|
|
|
|
|
+ final String leakAmount;
|
|
|
|
|
+ final String ylbJudge;
|
|
|
|
|
+ final String frameJudge;
|
|
|
|
|
+
|
|
|
|
|
+ StationChannel(String name, String completeFlag, String qmSn,
|
|
|
|
|
+ String ylbInflationTime, String ylbHoldTime, String ylbTestTime,
|
|
|
|
|
+ String ylbInflationPressure, String ylbStablePressure, String ylbLeak,
|
|
|
|
|
+ String inflationTime, String holdTime, String testTime,
|
|
|
|
|
+ String inflationPressure, String stablePressure, String leakAmount,
|
|
|
|
|
+ String ylbJudge, String frameJudge) {
|
|
|
|
|
+ this.name = name;
|
|
|
|
|
+ this.completeFlag = completeFlag;
|
|
|
|
|
+ this.qmSn = qmSn;
|
|
|
|
|
+ this.ylbInflationTime = ylbInflationTime;
|
|
|
|
|
+ this.ylbHoldTime = ylbHoldTime;
|
|
|
|
|
+ this.ylbTestTime = ylbTestTime;
|
|
|
|
|
+ this.ylbInflationPressure = ylbInflationPressure;
|
|
|
|
|
+ this.ylbStablePressure = ylbStablePressure;
|
|
|
|
|
+ this.ylbLeak = ylbLeak;
|
|
|
|
|
+ this.inflationTime = inflationTime;
|
|
|
|
|
+ this.holdTime = holdTime;
|
|
|
|
|
+ this.testTime = testTime;
|
|
|
|
|
+ this.inflationPressure = inflationPressure;
|
|
|
|
|
+ this.stablePressure = stablePressure;
|
|
|
|
|
+ this.leakAmount = leakAmount;
|
|
|
|
|
+ this.ylbJudge = ylbJudge;
|
|
|
|
|
+ this.frameJudge = frameJudge;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|