1、指令is_judged变更为四个状态,修改指令研判接口

2、修改处理研判后任务的逻辑,若指令存在,增加is_judged判断,如果为2,要变为1,其他不变。如果指令不存在,isjudged默认为2
This commit is contained in:
PushM
2024-06-16 01:10:36 +08:00
parent 5af3493ba0
commit aa6188b1ef
5 changed files with 75 additions and 28 deletions

View File

@@ -79,9 +79,9 @@ public class TaskCommandInfo {
@JsonProperty("is_valid") @JsonProperty("is_valid")
private Boolean isValid = true; private Boolean isValid = true;
@Schema(description = "指令是否已研判", example = "true") @Schema(description = "指令是否已研判,0待研判1下发2本次忽略3永久忽略", example = "true")
@JsonProperty("is_judged") @JsonProperty("is_judged")
private Boolean isJudged = true; private Integer isJudged = 1;
@Schema(description = "五元组信息") @Schema(description = "五元组信息")
@NotNull(message = "五元组信息不能为空。") @NotNull(message = "五元组信息不能为空。")

View File

@@ -65,10 +65,10 @@ public class AlertMessageService {
if (taskType == TaskTypeEnum.DYNAMIC.getTaskType())//实时 if (taskType == TaskTypeEnum.DYNAMIC.getTaskType())//实时
switch (StateEnum.getStateEnumByNum(taskStatus)) { switch (StateEnum.getStateEnumByNum(taskStatus)) {
case RUNNING: case RUNNING:
insertCommandAndAlertMessage(dynamicTaskCommandInfoList, true, true, alertMessage); insertCommandAndAlertMessage(dynamicTaskCommandInfoList, true, 1, alertMessage);
break; break;
case PAUSED: case PAUSED:
insertCommandAndAlertMessage(dynamicTaskCommandInfoList, false, true, alertMessage); insertCommandAndAlertMessage(dynamicTaskCommandInfoList, false, 1, alertMessage);
break; break;
default://主要是stop default://主要是stop
//command不入库 //command不入库
@@ -79,10 +79,10 @@ public class AlertMessageService {
else if (taskType == TaskTypeEnum.JUDGED.getTaskType())//研判后 else if (taskType == TaskTypeEnum.JUDGED.getTaskType())//研判后
switch (StateEnum.getStateEnumByNum(taskStatus)) { switch (StateEnum.getStateEnumByNum(taskStatus)) {
case RUNNING: case RUNNING:
insertCommandAndAlertMessage(dynamicTaskCommandInfoList, true, false, alertMessage); insertCommandAndAlertMessage(dynamicTaskCommandInfoList, true, 0, alertMessage);
break; break;
case PAUSED: case PAUSED:
insertCommandAndAlertMessage(dynamicTaskCommandInfoList, false, false, alertMessage); insertCommandAndAlertMessage(dynamicTaskCommandInfoList, false, 0, alertMessage);
break; break;
default://主要是stop default://主要是stop
//command不入库 //command不入库
@@ -131,7 +131,7 @@ public class AlertMessageService {
@DSTransactional @DSTransactional
private void insertCommandAndAlertMessage(List<TaskCommandInfo> dynamicTaskCommandInfoList, private void insertCommandAndAlertMessage(List<TaskCommandInfo> dynamicTaskCommandInfoList,
Boolean isValid, Boolean isValid,
Boolean isJudged, Integer isJudged,
AlertMessage alertMessage){ AlertMessage alertMessage){
List<String> commandUUIDs = new ArrayList<>(); List<String> commandUUIDs = new ArrayList<>();
@@ -139,7 +139,7 @@ public class AlertMessageService {
//command入库 //command入库
dynamicTaskCommandInfo.setIsValid(isValid); dynamicTaskCommandInfo.setIsValid(isValid);
dynamicTaskCommandInfo.setIsJudged(isJudged); dynamicTaskCommandInfo.setIsJudged(isJudged);
String commandUUID = commandService.createCommand(dynamicTaskCommandInfo); String commandUUID = commandService.createCommand2(dynamicTaskCommandInfo, isJudged);
//alertmessage入库 //alertmessage入库
@@ -156,26 +156,7 @@ public class AlertMessageService {
); );
alertMessageMapper.insertAlertMessage(alertMessage); alertMessageMapper.insertAlertMessage(alertMessage);
} }
//发送指令新建信号...实时任务 isJudged=1 才首次立刻下发
try {
if (isJudged){
stateHandler.sendCommandDistributeSignal(commandUUIDs);
}
}catch (Exception e) {
log.info(String.format("动态任务首次指令下发c3出错任务id: %d,commandUUIDs: %s",
dynamicTaskCommandInfoList.get(0).getTaskId(),
commandUUIDs));
}
//发送RCP查询信号
try {
if (isJudged){
stateHandler.sendCommandRcpQuerySignal(commandUUIDs);
}
}catch (Exception e) {
log.info(String.format("动态任务首次指令查询RCP出错任务id: %d,commandUUIDs: %s",
dynamicTaskCommandInfoList.get(0).getTaskId(),
commandUUIDs));
}
} }
private String insertAlertMessageOnly(AlertMessage alertMessage){ private String insertAlertMessageOnly(AlertMessage alertMessage){
//alertmessage入库 //alertmessage入库

View File

@@ -58,4 +58,6 @@ public interface CommandMapper {
List<WhiteListObject> whiteListCommandCheck(@Param("command") FiveTupleWithMask fiveTupleWithMask); List<WhiteListObject> whiteListCommandCheck(@Param("command") FiveTupleWithMask fiveTupleWithMask);
@DS("mysql") @DS("mysql")
void createCommandWhiteListConnect(@Param("command_id") String uuid, @Param("whiteLists") List<WhiteListObject> whiteListsHit); void createCommandWhiteListConnect(@Param("command_id") String uuid, @Param("whiteLists") List<WhiteListObject> whiteListsHit);
void updateCommandIsJudgedIfIgnoreThisTime(@Param("command_id") String commandUUID);
} }

View File

@@ -70,6 +70,61 @@ public class CommandService {
return commandInfo.getUUID(); return commandInfo.getUUID();
} }
@DSTransactional
public String createCommand2(TaskCommandInfo commandInfo, Integer isJudged) {
String uuid = commandMapper.queryCommandInfo(commandInfo);
if (uuid != null) {
if (isJudged == 0){
//研判后任务,将本次忽略的指令设置为待研判
commandMapper.updateCommandIsJudgedIfIgnoreThisTime(uuid);
}
return uuid;
}
commandInfo.setDisplayId(
"ZL-"
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))
+ "-"
+ String.format("%06d", counter.generateId("command"))
);
//指令:白名单检查
List<WhiteListObject> whiteListsHit = commandMapper.whiteListCommandCheck(commandInfo.getFiveTupleWithMask());
if (!whiteListsHit.isEmpty()) {
commandInfo.setUUID(UUID.randomUUID().toString());
commandMapper.createCommandInWhiteListHit(commandInfo);
commandMapper.createCommandWhiteListConnect(commandInfo.getUUID(), whiteListsHit);
//写入历史表
insertCommandHistory(commandInfo.getUUID());
return commandInfo.getUUID();
}
commandInfo.setUUID(UUID.randomUUID().toString());
commandMapper.createCommand(commandInfo);
//写入历史表
insertCommandHistory(commandInfo.getUUID());
//发送指令新建信号...实时任务 isJudged=1 才首次立刻下发
try {
if (isJudged == 1){
stateHandler.sendCommandDistributeSignal(Collections.singletonList(commandInfo.getUUID()));
}
}catch (Exception e) {
log.info(String.format("实时任务首次指令下发c3出错commandUUIDs: %s",
commandInfo.getUUID()));
}
//发送RCP查询信号
try {
if (isJudged == 1){
stateHandler.sendCommandRcpQuerySignal(Collections.singletonList(commandInfo.getUUID()));
}
}catch (Exception e) {
log.info(String.format("实时任务首次指令查询RCP出错commandUUIDs: %s",
commandInfo.getUUID()));
}
return commandInfo.getUUID();
}
public List<String> createCommands(List<TaskCommandInfo> taskCommandInfos) { public List<String> createCommands(List<TaskCommandInfo> taskCommandInfos) {
List<String> commandUUIDs = ListUtils.newArrayListWithExpectedSize(taskCommandInfos.size()); List<String> commandUUIDs = ListUtils.newArrayListWithExpectedSize(taskCommandInfos.size());
@@ -137,6 +192,8 @@ public class CommandService {
} }
public Boolean setCommandJudged(String commandId, Integer isJudged) { public Boolean setCommandJudged(String commandId, Integer isJudged) {
//查詢指令当前is_judged状态,如果为0才可以被修改
//设置指令是否已经研判 //设置指令是否已经研判
Boolean success = commandMapper.setCommandJudged(commandId, isJudged); Boolean success = commandMapper.setCommandJudged(commandId, isJudged);
@@ -145,6 +202,7 @@ public class CommandService {
if (isJudged != 1) { if (isJudged != 1) {
return success; return success;
} }
//如果isJudged=1,则发送指令首次下发信号和RCP首次查询信号
//指令首次下发 //指令首次下发
try { try {
stateHandler.sendCommandDistributeSignal(commandUUIDs); stateHandler.sendCommandDistributeSignal(commandUUIDs);

View File

@@ -421,6 +421,12 @@
</foreach> </foreach>
and expire_time = NULL and expire_time = NULL
</update> </update>
<update id="updateCommandIsJudgedIfIgnoreThisTime">
update t_command
set IS_JUDGED = 0
where COMMAND_ID = #{command_id}
and IS_JUDGED = 2
</update>
<select id="queryCommandInfo" resultType="java.lang.String"> <select id="queryCommandInfo" resultType="java.lang.String">
SELECT COMMAND_ID FROM t_command SELECT COMMAND_ID FROM t_command