|
@@ -4,11 +4,13 @@ import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
import com.ruoyi.sim.config.SimConfig;
|
|
|
import com.ruoyi.sim.constant.CommConst;
|
|
|
+import com.ruoyi.sim.constant.FaultIdConst;
|
|
|
import com.ruoyi.sim.domain.*;
|
|
|
import com.ruoyi.sim.domain.vo.FaultCheckVo;
|
|
|
import com.ruoyi.sim.domain.vo.ScanSeatVo;
|
|
|
import com.ruoyi.sim.domain.vo.SimSocketParamVo;
|
|
|
import com.ruoyi.sim.util.SimDateUtil;
|
|
|
+import org.apache.commons.collections4.SetUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.slf4j.Logger;
|
|
@@ -85,9 +87,9 @@ public class CommSendService {
|
|
|
RealExam re = realExamService.selectRealExamByExamId(ref.getExamId());
|
|
|
Seat seat = seatService.selectSeatBySeatId(re.getSeatId());
|
|
|
Sim sim = simService.selectSimBySimId(e.getSimId());
|
|
|
- Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
|
|
|
- if (f != null && Fault.Type.REAL_GZBW.equals(f.getFaultType()) && Fault.State.ENABLE.equals(f.getFaultState())) {
|
|
|
- readOneSimOneFaultResistance(seat, sim, ref, f, null);
|
|
|
+ Fault fault = faultService.selectFaultByFaultId(ref.getFaultId());
|
|
|
+ if (fault != null && Fault.Type.REAL_GZBW.equals(fault.getFaultType()) && Fault.State.ENABLE.equals(fault.getFaultState())) {
|
|
|
+ readOneSimOneFaultResistance(seat, sim, ref, fault, null);
|
|
|
}
|
|
|
});
|
|
|
});
|
|
@@ -121,8 +123,8 @@ public class CommSendService {
|
|
|
}
|
|
|
Seat seat = seatService.selectSeatBySeatId(re.getSeatId());
|
|
|
Sim sim = simService.selectSimBySimId(re.getSimId());
|
|
|
- Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
|
|
|
- readOneSimOneFaultResistance(seat, sim, ref, f, RealExamFault.State.LOOP_READ);
|
|
|
+ Fault fault = faultService.selectFaultByFaultId(ref.getFaultId());
|
|
|
+ readOneSimOneFaultResistance(seat, sim, ref, fault, RealExamFault.State.LOOP_READ);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -137,8 +139,8 @@ public class CommSendService {
|
|
|
for (RealExamFault ref : list) {
|
|
|
Seat seat = seatService.selectSeatBySeatId(re.getSeatId());
|
|
|
Sim sim = simService.selectSimBySimId(re.getSimId());
|
|
|
- Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
|
|
|
- readOneSimOneFaultResistance(seat, sim, ref, f, RealExamFault.State.FINISH);
|
|
|
+ Fault fault = faultService.selectFaultByFaultId(ref.getFaultId());
|
|
|
+ readOneSimOneFaultResistance(seat, sim, ref, fault, RealExamFault.State.FINISH);
|
|
|
}
|
|
|
// 计算扣分。
|
|
|
// 最后都读取到,才算扣分。
|
|
@@ -151,8 +153,8 @@ public class CommSendService {
|
|
|
public void readOneSimAtLastByDebug(Seat seat, Sim sim) {
|
|
|
l.info("readOneSimAtLastByDebug");
|
|
|
List<Fault> list = faultService.listType3(sim.getSimType());
|
|
|
- for (Fault f : list) {
|
|
|
- readOneSimOneFaultResistance(seat, sim, null, f, null);
|
|
|
+ for (Fault fault : list) {
|
|
|
+ readOneSimOneFaultResistance(seat, sim, null, fault, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -620,7 +622,7 @@ public class CommSendService {
|
|
|
// msg判断,是否含有"故障部位"字符串
|
|
|
{
|
|
|
if (checkReplace) {
|
|
|
- AjaxResult arE2 = readOneSimAllFaultCheck(seat, sim);
|
|
|
+ AjaxResult arE2 = readOneSimAllFaultStartCheck(seat, sim);
|
|
|
if (arE2.isError()) {
|
|
|
return arE2;
|
|
|
}
|
|
@@ -738,15 +740,15 @@ public class CommSendService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 开始考试前检查读取。
|
|
|
+ * 一个模拟器 所有故障 开始考试前 检查读取。
|
|
|
* 有两处引用。正式开始和调试。
|
|
|
*
|
|
|
* @param seat
|
|
|
* @param sim
|
|
|
* @return
|
|
|
*/
|
|
|
- public AjaxResult readOneSimAllFaultCheck(Seat seat, Sim sim) {
|
|
|
- // 查询所有真实的故障部位。
|
|
|
+ public AjaxResult readOneSimAllFaultStartCheck(final Seat seat, final Sim sim) {
|
|
|
+ // 查询某型号所有真实的故障部位。
|
|
|
Fault q = new Fault();
|
|
|
q.setFaultType(Fault.Type.REAL_GZBW);
|
|
|
q.setSimType(sim.getSimType());
|
|
@@ -754,50 +756,48 @@ public class CommSendService {
|
|
|
// 未正确安装可换件故障List
|
|
|
// NG not good
|
|
|
List<FaultCheckVo> listNGVo = new ArrayList<>();
|
|
|
-// Map<String, FaultCheckVo> mapVo = new HashMap<>();
|
|
|
+ // not good fault_id HashSet
|
|
|
Set<String> setNG = new HashSet<>();
|
|
|
- // 单一检查
|
|
|
+ // 单一故障部位检查
|
|
|
{
|
|
|
for (Fault oneF : listF) {
|
|
|
FaultCheckVo voOne = new FaultCheckVo();
|
|
|
voOne.setSeat(seat);
|
|
|
voOne.setSim(sim);
|
|
|
voOne.setFault(oneF);
|
|
|
- AjaxResult ar = readOneSimOneFaultCheck(voOne);
|
|
|
+ AjaxResult ar = readOneSimOneFaultStartSimpleCheck(voOne);
|
|
|
// getDefaultErrorAR voReturn 可能为空
|
|
|
FaultCheckVo voReturn = (FaultCheckVo) ar.get(AjaxResult.DATA_TAG);
|
|
|
if (voReturn != null) {
|
|
|
if (voReturn.isCheckOk()) {
|
|
|
- l.info("log 故障部位[" + oneF.getBindHardwareMsg() + "][" + oneF.getReplaceName() + "]安装ok;");
|
|
|
+ l.info("log 故障部位[{}][{}]安装ok;", oneF.getBindHardwareMsg(), oneF.getReplaceName());
|
|
|
} else {
|
|
|
- l.info("log 故障部位[" + oneF.getBindHardwareMsg() + "][" + oneF.getReplaceName() + "]未正确安装;");
|
|
|
+ l.info("log 故障部位[{}][{}]未正确安装;", oneF.getBindHardwareMsg(), oneF.getReplaceName());
|
|
|
listNGVo.add(voReturn);
|
|
|
- // add map.
|
|
|
- // mapVo.put(buildKey(voReturn.getSim().getSimType(), voReturn.getFault().getBindHardwareMsg()), voReturn);
|
|
|
setNG.add(oneF.getFaultId());
|
|
|
}
|
|
|
}
|
|
|
- // readOneSimOneFaultCheck 得出ar有问题直接返回
|
|
|
+ // 得出ar有问题直接返回,不执行后面检查。
|
|
|
if (ar.isError()) {
|
|
|
return ar;
|
|
|
}
|
|
|
}
|
|
|
- // 复核条件检查
|
|
|
- {
|
|
|
- AjaxResult ar = checkStep2(sim, setNG);
|
|
|
- if (ar.isError()) {
|
|
|
- return ar;
|
|
|
- }
|
|
|
+ }
|
|
|
+ // 复核条件检查
|
|
|
+ {
|
|
|
+ AjaxResult ar = readOneSimAllFaultStartGlobalCheck(sim, setNG);
|
|
|
+ if (ar.isError()) {
|
|
|
+ return ar;
|
|
|
}
|
|
|
- //
|
|
|
- if (!listNGVo.isEmpty()) {
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- for (FaultCheckVo oneVo : listNGVo) {
|
|
|
- sb.append(oneVo.getErrorMsg());
|
|
|
- }
|
|
|
- sb.append("请正确安装可换件,检查后重新开始!");
|
|
|
- return AjaxResult.error(sb.toString());
|
|
|
+ }
|
|
|
+ //
|
|
|
+ if (!listNGVo.isEmpty()) {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for (FaultCheckVo oneVo : listNGVo) {
|
|
|
+ sb.append(oneVo.getErrorMsg());
|
|
|
}
|
|
|
+ sb.append("请正确安装可换件,检查后重新开始!");
|
|
|
+ return AjaxResult.error(sb.toString());
|
|
|
}
|
|
|
return AjaxResult.success("所有故障部位检查没有问题。");
|
|
|
}
|
|
@@ -813,7 +813,17 @@ public class CommSendService {
|
|
|
return simType + "@" + bindHardwareMsg;
|
|
|
}
|
|
|
|
|
|
- private AjaxResult checkStep2(Sim sim, Set<String> setNG) {
|
|
|
+ /**
|
|
|
+ * 一个模拟器 全部故障 开始考试前 复合读取检查。
|
|
|
+ *
|
|
|
+ * @param sim
|
|
|
+ * @param setNG
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public AjaxResult readOneSimAllFaultStartGlobalCheck(Sim sim, Set<String> setNG) {
|
|
|
+ if (Objects.isNull(setNG) || setNG.isEmpty()) {
|
|
|
+ return AjaxResult.success("");
|
|
|
+ }
|
|
|
if (StringUtils.equals(sim.getSimType(), Sim.TYPE_0003)) {
|
|
|
// if (map.containsKey(buildKeyType0003("01"))) {
|
|
|
// SimMsg smR = map.get(buildKeyType0003("01")).getSimMsgReceive();
|
|
@@ -825,20 +835,24 @@ public class CommSendService {
|
|
|
//
|
|
|
// }
|
|
|
// }
|
|
|
- if (setNG != null && setNG.contains("0003GZBW0003") && setNG.contains("0003GZBW0004") && setNG.contains("0003GZBW000B") && setNG.contains("0003GZBW000E")) {
|
|
|
+ if (setNG.contains(FaultIdConst.T0003.F03) &&
|
|
|
+ setNG.contains(FaultIdConst.T0003.F04) &&
|
|
|
+ setNG.contains(FaultIdConst.T0003.F0B) &&
|
|
|
+ setNG.contains(FaultIdConst.T0003.F0E)
|
|
|
+ ) {
|
|
|
return AjaxResult.error("请检查 显控报警板与主板连接线 连接情况!");
|
|
|
}
|
|
|
}
|
|
|
- return AjaxResult.success("");
|
|
|
+ return AjaxResult.success("复合读取检查 成功。");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 检查读取。
|
|
|
+ * 一个模拟器 一个故障 开始考试前 简单读取检查。
|
|
|
*
|
|
|
* @param vo
|
|
|
* @return
|
|
|
*/
|
|
|
- public AjaxResult readOneSimOneFaultCheck(FaultCheckVo vo) {
|
|
|
+ public AjaxResult readOneSimOneFaultStartSimpleCheck(FaultCheckVo vo) {
|
|
|
l.info("readOneSimOneFaultCheck vo = {}", vo);
|
|
|
SimMsg smS = commBuildService.buildSendMsgReadFaultResistance(vo.getSim().getSimNum(), vo.getFault().getBindHardwareMsg());
|
|
|
SimMsg smR = send(smS, vo.getSeat(), vo.getSim(), RETRY_COUNT_CHECK_ONE_FAULT, commStrategy.getSleepLong());
|
|
@@ -895,15 +909,15 @@ public class CommSendService {
|
|
|
*
|
|
|
* @param sim
|
|
|
* @param ref debug调试模式为空。可以为空。
|
|
|
- * @param f
|
|
|
+ * @param fault
|
|
|
* @param faultIds debug模式必须有值
|
|
|
*/
|
|
|
- public void readOneSimOneFaultFirstTime(Seat seat, Sim sim, RealExamFault ref, Fault f, String[] faultIds) {
|
|
|
+ public void readOneSimOneFaultFirstTime(Seat seat, Sim sim, RealExamFault ref, Fault fault, String[] faultIds) {
|
|
|
l.info("readOneSimOneFaultFirstTime");
|
|
|
// 读取一次当前电阻代表值作为出题值。
|
|
|
- SimMsg sm1 = commBuildService.buildSendMsgReadFaultResistance(sim.getSimNum(), f.getBindHardwareMsg());
|
|
|
- SimMsg sm2 = send(sm1, seat, sim, RETRY_COUNT_WRITE_ONE_FAULT, commStrategy.getSleepLong());
|
|
|
- simReceiveService.setFaultQuestionValue(sm2, sim, ref, f, faultIds);
|
|
|
+ SimMsg smS = commBuildService.buildSendMsgReadFaultResistance(sim.getSimNum(), fault.getBindHardwareMsg());
|
|
|
+ SimMsg smR = send(smS, seat, sim, RETRY_COUNT_WRITE_ONE_FAULT, commStrategy.getSleepLong());
|
|
|
+ simReceiveService.setFaultQuestionValue(smR, sim, ref, fault, faultIds);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -937,27 +951,29 @@ public class CommSendService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 读取一个模拟器的一个故障点位的值。
|
|
|
+ *
|
|
|
* @param sim
|
|
|
* @param reF
|
|
|
- * @param f
|
|
|
+ * @param fault
|
|
|
* @param refState 修改的目标状态。debug模式下执行为null。
|
|
|
*/
|
|
|
- public void readOneSimOneFaultResistance(Seat seat, Sim sim, RealExamFault reF, Fault f, String refState) {
|
|
|
+ public void readOneSimOneFaultResistance(Seat seat, Sim sim, RealExamFault reF, Fault fault, final String refState) {
|
|
|
l.info("readOneSimOneFaultResistance");
|
|
|
- SimMsg sm1 = commBuildService.buildSendMsgReadFaultResistance(sim.getSimNum(), f.getBindHardwareMsg());
|
|
|
+ SimMsg smS = commBuildService.buildSendMsgReadFaultResistance(sim.getSimNum(), fault.getBindHardwareMsg());
|
|
|
SimMsg sm2 = null;
|
|
|
if (reF != null && refState != null) {
|
|
|
- if (RealExamFault.State.FINISH.equals(refState)) { // 是否最后一次读取。
|
|
|
- sm2 = send(sm1, seat, sim, RETRY_COUNT_READ_ONE_RESISTANCE_FINAL, commStrategy.getSleepShort());
|
|
|
- } else if (RealExamFault.State.LOOP_READ.equals(refState)) { // 是否是中间读取
|
|
|
- sm2 = send(sm1, seat, sim, RETRY_COUNT_READ_ONE_RESISTANCE_MIDDLE, commStrategy.getSleepShort(), false);
|
|
|
+ if (StringUtils.equals(refState, RealExamFault.State.LOOP_READ)) { // 是否是中间读取
|
|
|
+ sm2 = send(smS, seat, sim, RETRY_COUNT_READ_ONE_RESISTANCE_MIDDLE, commStrategy.getSleepShort(), false);
|
|
|
+ } else if (StringUtils.equals(refState, RealExamFault.State.FINISH)) { // 是否最后一次读取。
|
|
|
+ sm2 = send(smS, seat, sim, RETRY_COUNT_READ_ONE_RESISTANCE_FINAL, commStrategy.getSleepShort());
|
|
|
} else {
|
|
|
- sm2 = send(sm1, seat, sim, RETRY_COUNT_0, commStrategy.getSleepShort());
|
|
|
+ sm2 = send(smS, seat, sim, RETRY_COUNT_0, commStrategy.getSleepShort());
|
|
|
}
|
|
|
} else {
|
|
|
- sm2 = send(sm1, seat, sim, RETRY_COUNT_READ_ONE_RESISTANCE_FINAL, commStrategy.getSleepShort());
|
|
|
+ sm2 = send(smS, seat, sim, RETRY_COUNT_READ_ONE_RESISTANCE_FINAL, commStrategy.getSleepShort());
|
|
|
}
|
|
|
- simReceiveService.setFaultAnswerValue(sm2, sim, reF, f, refState);
|
|
|
+ simReceiveService.setFaultAnswerValue(sm2, sim, reF, fault, refState);
|
|
|
}
|
|
|
|
|
|
public SimMsg send(final SimMsg sm, final Seat seat, final Sim sim, final int retryTotalCount, final long sleep) {
|
|
@@ -975,7 +991,7 @@ public class CommSendService {
|
|
|
* @param sim 可以为空!更新最后发送/接收时间 用。
|
|
|
* @param retryTotalCount 重试次数
|
|
|
* @param sleep 不使用传入0,不进行挂起。
|
|
|
- * @param importantTask
|
|
|
+ * @param importantTask 是否是重要的。
|
|
|
* @return
|
|
|
*/
|
|
|
public SimMsg send(final SimMsg sm, final Seat seat, final Sim sim, final int retryTotalCount, final long sleep, final boolean importantTask) {
|