程控源调整

This commit is contained in:
caozehui
2026-06-18 10:01:05 +08:00
parent 287ca2cddc
commit aafa38000d
4 changed files with 31 additions and 8 deletions

View File

@@ -106,12 +106,24 @@ public class PreDetectionController extends BaseController {
@ApiImplicitParam(name = "param", value = "查询参数", required = true) @ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<?> startTestSimulate(@RequestBody @Validated SimulateDetectionParam param) { public HttpResult<?> startTestSimulate(@RequestBody @Validated SimulateDetectionParam param) {
String methodDescribe = getMethodDescribe("startTestSimulate"); String methodDescribe = getMethodDescribe("startTestSimulate");
HttpResult<DetectionLockHolderVO> busy = requireHolderSelf(); // ContrastDetectionParam 无 userPageId 字段,用 loginName 作为会话标识(与 WS 会话 key 一致)
HttpResult<DetectionLockHolderVO> busy = tryAcquireLock(param.getUserPageId());
if (busy != null) { if (busy != null) {
return busy; return busy;
} }
preDetectionService.sendScript(param); // 同步阶段抛异常时回滚锁,理由同 startPreTest
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); boolean keepLock = false;
try {
FormalTestManager.stopTime = 0;
FormalTestManager.hasStopFlag = false;
preDetectionService.sendScript(param);
keepLock = true;
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} finally {
if (!keepLock) {
releaseLockSelf("START_CONTRAST_SYNC_FAILED");
}
}
} }
/** /**

View File

@@ -121,6 +121,15 @@ public class SocketSourceResponseService {
sendErrorAndQuit(param, socketDataMsg, errorCode.getMessage()); sendErrorAndQuit(param, socketDataMsg, errorCode.getMessage());
} }
private void sendSimulateInitFailure(PreDetectionParam param, String errorMessage) {
SocketDataMsg socketDataMsg = new SocketDataMsg();
socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue());
socketDataMsg.setOperateCode(SourceOperateCodeEnum.INIT_GATHER.getValue());
socketDataMsg.setCode(SourceResponseCodeEnum.UNKNOWN_ERROR.getCode());
socketDataMsg.setData(errorMessage);
sendWebSocketMessage(param.getUserPageId(), socketDataMsg);
}
/** /**
* 当前检测会话中的设备列表 * 当前检测会话中的设备列表
@@ -214,12 +223,12 @@ public class SocketSourceResponseService {
break; break;
default: default:
// TODO: 记录未知操作码到日志,并向前端发送友好提示 sendSimulateInitFailure(param, "未知操作码");
break; break;
} }
} else { } else {
// TODO: 向前端发送错误提示
log.error("程控源响应消息操作码解析失败,原始消息: {}, 解析结果: {}", msg, enumByCode); log.error("程控源响应消息操作码解析失败,原始消息: {}, 解析结果: {}", msg, enumByCode);
sendSimulateInitFailure(param, "未知操作码");
} }
} }
@@ -272,10 +281,11 @@ public class SocketSourceResponseService {
sendWebSocketMessage(param.getUserPageId(), socketDataMsg); sendWebSocketMessage(param.getUserPageId(), socketDataMsg);
break; break;
default: default:
// 未识别的响应码:发送通用错误消息 sendSimulateInitFailure(param, "未知状态码");
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
break; break;
} }
} else {
sendSimulateInitFailure(param, "未知状态码");
} }
} }

View File

@@ -223,6 +223,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
private void sendYtxSocketSimulate(PreDetectionParam param) { private void sendYtxSocketSimulate(PreDetectionParam param) {
SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(param.getSourceId()); SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(param.getSourceId());
param.setSourceId(sourceParam.getSourceId()); param.setSourceId(sourceParam.getSourceId());
param.setSourceName(sourceParam.getSourceId());
String loginName = RequestUtil.getLoginNameByToken(); String loginName = RequestUtil.getLoginNameByToken();
WebServiceManager.addPreDetectionParam(loginName, param); WebServiceManager.addPreDetectionParam(loginName, param);
if (ObjectUtil.isNotNull(sourceParam)) { if (ObjectUtil.isNotNull(sourceParam)) {

View File

@@ -90,7 +90,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
} }
String userId = webUser.getUserPageId(); String userId = webUser.getUserPageId();
log.debug("源设备接收服务端数据, userId: {}, message: {}", userId, msg); log.info("source接收server端数据, userId: {}, message: {}", userId, msg);
try { try {
// 委托给专门的响应处理服务处理业务逻辑 // 委托给专门的响应处理服务处理业务逻辑