Browse Source

JobMainTask修改优化

master
lijiuwei 8 months ago
parent
commit
b7d561f53f
1 changed files with 76 additions and 108 deletions
  1. +76
    -108
      inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java

+ 76
- 108
inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java View File

@ -384,20 +384,17 @@ public class JobMainTask {
log.info(Color.CYAN + "************************** executing patrolPoint, patrolPointId: {}, patrolPresetPos: {}" + Color.END, patrolTaskInfo.getDeviceId(), JSONObject.toJSONString(presetPosList, true)); log.info(Color.CYAN + "************************** executing patrolPoint, patrolPointId: {}, patrolPresetPos: {}" + Color.END, patrolTaskInfo.getDeviceId(), JSONObject.toJSONString(presetPosList, true));
PatrolPresetPos presetPos = !presetPosList.isEmpty() ? presetPosList.get(0) : PatrolPresetPos.builder().presetPosId("0").build(); PatrolPresetPos presetPos = !presetPosList.isEmpty() ? presetPosList.get(0) : PatrolPresetPos.builder().presetPosId("0").build();
boolean bPointFinished = isPointFinished(patrolTaskInfo, taskExecRecord);
String taskPatrolId = taskExecRecord.getTaskPatrolId(); String taskPatrolId = taskExecRecord.getTaskPatrolId();
log.info("taskPatrolId: {}, bPointFinished: {}", taskPatrolId, bPointFinished);
if (!bPointFinished) {
/*摄像头转到预置位*/
boolean noError = setCameraToPreset(presetPos);
if ("prod".equals(activeProfile) && noError) {
log.info("setCameraToPreset no error, delay 20 seconds");
myDelay(20000);
} else {
log.info("setCameraToPreset has error, delay 2 seconds");
myDelay(2000);
}
log.info("taskPatrolId: {}", taskPatrolId);
/*摄像头转到预置位*/
boolean noError = setCameraToPreset(presetPos);
if ("prod".equals(activeProfile) && noError) {
log.info("setCameraToPreset no error, delay 20 seconds");
myDelay(20000);
} else {
log.info("setCameraToPreset has error, delay 2 seconds");
myDelay(2000);
} }
StringBuffer fileTypes = new StringBuffer(); StringBuffer fileTypes = new StringBuffer();
@ -421,45 +418,45 @@ public class JobMainTask {
int delayMilliSeconds = presetAction.getPhotoGap() * 1000; int delayMilliSeconds = presetAction.getPhotoGap() * 1000;
final long photoCount = presetAction.getPhotoCount(); final long photoCount = presetAction.getPhotoCount();
boolean bOk = false; boolean bOk = false;
if (!bPointFinished) {
try {
log.info("PHOTO PresetType chanType: {}, videoNvrCode: {}, channelCode: {}", chanType, presetPos.getVideoNvrCode(), presetPos.getChannelCode());
if ("vl".equals(chanType)) {
String paramUrl = liveIVS_URL + "/api/v1/device/channelsnap?serial=" + presetPos.getVideoNvrCode() + "&realtime=true&code=" + presetPos.getChannelCode();
String paramFileName = taskPatrolId.split(StringUtils.UNDERLINE)[1] + StringUtils.UNDERLINE
+ taskPatrolId.split(StringUtils.UNDERLINE)[2] + StringUtils.UNDERLINE
+ presetPos.getPatrolPointId() + StringUtils.UNDERLINE
+ taskExecRecord.getDevNo() + ".jpg";
String paramFileDir = basePath + "CCD";
log.info("paramUrl: {}, paramFileName: {}, paramFileDir: {}", paramUrl, paramFileName, paramFileDir);
FtpResult ftpResult = saveFile(paramUrl, paramFileName, paramFileDir);
if (ftpResult != null && StringUtils.isNotEmpty(ftpResult.getFilepath())) {
log.info("filePath: {}", ftpResult.getFilepath());
bOk = ftpResult.isOk();
filePaths.append("/" + ftpResult.getFilepath());
}
} else if ("ir".equals(chanType)) {
InfraredModel infraredModel = new InfraredModel();
infraredModel.setChannelSerial(presetPos.getChannelCode());
infraredModel.setPresetId(Integer.parseInt(presetPos.getPresetPosCode()));
EqpBook eqpbook = new EqpBook();
eqpbook.setPatrolDeviceCode(presetPos.getPatrolDeviceCode());
List<EqpBook> eqpBookListList = taskExecClient.selectBasedataEqpBookList(eqpbook);
if (!eqpBookListList.isEmpty()) {
Response ir_gen = remoteInvokeService.invoke("IR_GEN", presetPos.getPatrolDeviceCode().split("#")[0], new HashMap<>());
log.info("ir_gen: {}", JSONObject.toJSONString(ir_gen));
Object data = ir_gen.getData();
String path = JSONObject.parseObject(JSONObject.toJSONString(data)).getString("filePath");
path = path.split("33333")[1];
filePaths.append(path).append(",");
log.info("INFRA:{}", taskExecRecord.getTaskName() + " path : " + path);
}
try {
log.info("PHOTO PresetType chanType: {}, videoNvrCode: {}, channelCode: {}", chanType, presetPos.getVideoNvrCode(), presetPos.getChannelCode());
if ("vl".equals(chanType)) {
String paramUrl = liveIVS_URL + "/api/v1/device/channelsnap?serial=" + presetPos.getVideoNvrCode() + "&realtime=true&code=" + presetPos.getChannelCode();
String paramFileName = taskPatrolId.split(StringUtils.UNDERLINE)[1] + StringUtils.UNDERLINE
+ taskPatrolId.split(StringUtils.UNDERLINE)[2] + StringUtils.UNDERLINE
+ presetPos.getPatrolPointId() + StringUtils.UNDERLINE
+ taskExecRecord.getDevNo() + ".jpg";
String paramFileDir = basePath + "CCD";
log.info("paramUrl: {}, paramFileName: {}, paramFileDir: {}", paramUrl, paramFileName, paramFileDir);
FtpResult ftpResult = saveFile(paramUrl, paramFileName, paramFileDir);
if (ftpResult != null && StringUtils.isNotEmpty(ftpResult.getFilepath())) {
log.info("filePath: {}", ftpResult.getFilepath());
bOk = ftpResult.isOk();
filePaths.append("/" + ftpResult.getFilepath());
}
} else if ("ir".equals(chanType)) {
InfraredModel infraredModel = new InfraredModel();
infraredModel.setChannelSerial(presetPos.getChannelCode());
infraredModel.setPresetId(Integer.parseInt(presetPos.getPresetPosCode()));
EqpBook eqpbook = new EqpBook();
eqpbook.setPatrolDeviceCode(presetPos.getPatrolDeviceCode());
List<EqpBook> eqpBookListList = taskExecClient.selectBasedataEqpBookList(eqpbook);
if (!eqpBookListList.isEmpty()) {
Response ir_gen = remoteInvokeService.invoke("IR_GEN", presetPos.getPatrolDeviceCode().split("#")[0], new HashMap<>());
log.info("ir_gen: {}", JSONObject.toJSONString(ir_gen));
Object data = ir_gen.getData();
String path = JSONObject.parseObject(JSONObject.toJSONString(data)).getString("filePath");
path = path.split("33333")[1];
filePaths.append(path).append(",");
log.info("INFRA:{}", taskExecRecord.getTaskName() + " path : " + path);
} }
} catch (Exception e) {
log.error("error", e);
} }
} catch (Exception e) {
log.error("error", e);
} }
recordPersist(bOk, bPointFinished, taskExecRecord, infoListSize, patrolTaskInfo, presetPos, fileTypes, filePaths);
recordPersist(bOk, taskExecRecord, infoListSize, patrolTaskInfo, presetPos, fileTypes, filePaths);
} else if (PresetAction.VIDEO.getCode().equals(presetAction.getActionType())) { } else if (PresetAction.VIDEO.getCode().equals(presetAction.getActionType())) {
log.info("VIDEO PresetType videoNvrCode: {}, channelCode: {}", presetPos.getVideoNvrCode(), presetPos.getChannelCode()); log.info("VIDEO PresetType videoNvrCode: {}, channelCode: {}", presetPos.getVideoNvrCode(), presetPos.getChannelCode());
fileTypes.append(4).append(","); fileTypes.append(4).append(",");
@ -522,11 +519,9 @@ public class JobMainTask {
String rectangle = getRectangle(presetPos.getPresetPosId()); String rectangle = getRectangle(presetPos.getPresetPosId());
String taskPatrolId = getTaskPatrolledId(taskInfo.getDevNo(), taskExecRecord.getTaskPatrolId()); String taskPatrolId = getTaskPatrolledId(taskInfo.getDevNo(), taskExecRecord.getTaskPatrolId());
final String deviceId = taskInfo.getDeviceId(); final String deviceId = taskInfo.getDeviceId();
log.info("taskPatrolId: {}, deviceId: {}", taskPatrolId, deviceId);
List<PatrolTaskPointExecRecord> pointExecRecords = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().taskPatrolledId(taskPatrolId).deviceId(deviceId).build());
PatrolTaskPointExecRecord pointExecRecord;
if (pointExecRecords.isEmpty()) {
pointExecRecord = PatrolTaskPointExecRecord
log.info("pointExecRecord crud add taskPatrolId: {}, deviceId: {}", taskPatrolId, deviceId);
PatrolTaskPointExecRecord pointExecRecord = PatrolTaskPointExecRecord
.builder() .builder()
.patrolDeviceName(taskInfo.getEbookName()) .patrolDeviceName(taskInfo.getEbookName())
.patrolDeviceCode(taskInfo.getDevNo()) .patrolDeviceCode(taskInfo.getDevNo())
@ -544,19 +539,7 @@ public class JobMainTask {
.time(new Date()) .time(new Date())
.isOk(bOk ? 1 : 0) .isOk(bOk ? 1 : 0)
.build(); .build();
taskExecClient.addPatrolTaskPointExecRecord(pointExecRecord);
} else {
log.info("update record, pointExecRecords size: {}", pointExecRecords.size());
pointExecRecord = pointExecRecords.get(0);
int isOk = pointExecRecord.getIsOk();
if (isOk == 0) { // 上一次未成功的才更新
pointExecRecord.setIsOk(bOk ? 1 : 0);
int tries = pointExecRecord.getTries();
pointExecRecord.setTries(tries + 1);
pointExecRecord.setTime(new Date());
taskExecClient.updatePatrolTaskPointExecRecord(pointExecRecord);
}
}
taskExecClient.addPatrolTaskPointExecRecord(pointExecRecord);
if (bOk) { if (bOk) {
String patrolId = taskExecRecord.getTaskPatrolId(); String patrolId = taskExecRecord.getTaskPatrolId();
@ -628,32 +611,31 @@ public class JobMainTask {
} }
} }
private int addCursorNumber(String taskPatrolId, boolean bPointFinished, boolean bOk) {
private int addCursorNumber(String taskPatrolId,boolean bOk) {
PatrolTaskExecRecord taskExecRecord = taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(taskPatrolId); PatrolTaskExecRecord taskExecRecord = taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(taskPatrolId);
int total = taskExecRecord.getTotalNumber();
int success = taskExecRecord.getFinishNumber();
int cursor; int cursor;
if (taskExecRecord.getCursorNumber() == null) { if (taskExecRecord.getCursorNumber() == null) {
cursor = 1; cursor = 1;
} else { } else {
int total = taskExecRecord.getTotalNumber();
cursor = taskExecRecord.getCursorNumber(); cursor = taskExecRecord.getCursorNumber();
if (cursor < total)
if (cursor < total) {
cursor = taskExecRecord.getCursorNumber() + 1; cursor = taskExecRecord.getCursorNumber() + 1;
}
} }
log.info("addCursorNumber cursor: {}", cursor);
taskExecRecord.setCursorNumber(cursor); taskExecRecord.setCursorNumber(cursor);
if (!bPointFinished && bOk) {
int finish = taskExecRecord.getFinishNumber();
int total = taskExecRecord.getTotalNumber();
int value = finish + 1;
log.info("addFinishNumber finish: {}, total: {}", value, total);
taskExecRecord.setFinishNumber(value);
String taskProgress = decimalFormatNum(finish, total);
if (bOk) {
success++;
log.info("execute point success, cursor: {}, success: {}, total: {}", cursor, success, total);
taskExecRecord.setFinishNumber(success);
String taskProgress = decimalFormatNum(success, total);// task_progress=success/total -> patrol_task_exec_record
taskExecRecord.setTaskProgress(taskProgress); taskExecRecord.setTaskProgress(taskProgress);
List<PatrolTaskInfo> totalInfos = getInfosByTaskCode(taskExecRecord);
List<PatrolTaskInfo> totalInfos = getInfosByRecord(taskExecRecord);
List<PatrolTaskPointExecRecord> finishedInfos = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().oldTaskPatrolledId(taskExecRecord.getOldTaskPatrolId()).build()); List<PatrolTaskPointExecRecord> finishedInfos = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().oldTaskPatrolledId(taskExecRecord.getOldTaskPatrolId()).build());
String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size());
String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size());// task_progress=finish/total -> patrol_task_status
log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size()); log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size());
callRemoteSendMsgRunMode( callRemoteSendMsgRunMode(
taskExecRecord.getTaskCode(), taskExecRecord.getTaskCode(),
@ -662,6 +644,8 @@ public class JobMainTask {
totalProgress, totalProgress,
TaskStatus.RUNNING.getCode()/*运行中百分比上报*/ TaskStatus.RUNNING.getCode()/*运行中百分比上报*/
); );
} else {
log.info("execute point fail, cursor: {}, success: {}, total: {}", cursor, success, total);
} }
taskExecClient.updatePatrolTaskExecRecord(taskExecRecord); taskExecClient.updatePatrolTaskExecRecord(taskExecRecord);
return cursor; return cursor;
@ -698,7 +682,7 @@ public class JobMainTask {
String taskProgress = decimalFormatNum(finish, total); String taskProgress = decimalFormatNum(finish, total);
execRecord.setTaskProgress(taskProgress); execRecord.setTaskProgress(taskProgress);
execRecord.setTaskState(TaskStatus.DONE.getCode()); // 子任务在当前轮回中遍历完成标记 execRecord.setTaskState(TaskStatus.DONE.getCode()); // 子任务在当前轮回中遍历完成标记
List<PatrolTaskInfo> totalInfos = getInfosByTaskCode(execRecord);
List<PatrolTaskInfo> totalInfos = getInfosByRecord(execRecord);
List<PatrolTaskPointExecRecord> finishedInfos = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().oldTaskPatrolledId(execRecord.getOldTaskPatrolId()).build()); List<PatrolTaskPointExecRecord> finishedInfos = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().oldTaskPatrolledId(execRecord.getOldTaskPatrolId()).build());
String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size()); String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size());
log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size()); log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size());
@ -719,7 +703,7 @@ public class JobMainTask {
} else { // 该record下的点没有全部执行成功 } else { // 该record下的点没有全部执行成功
//设置本record的执行状态为终止 //设置本record的执行状态为终止
execRecord.setTaskState(TaskStatus.HALTED.getCode()); execRecord.setTaskState(TaskStatus.HALTED.getCode());
List<PatrolTaskInfo> totalInfos = getInfosByTaskCode(execRecord);
List<PatrolTaskInfo> totalInfos = getInfosByRecord(execRecord);
List<PatrolTaskPointExecRecord> finishedInfos = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().oldTaskPatrolledId(execRecord.getOldTaskPatrolId()).build()); List<PatrolTaskPointExecRecord> finishedInfos = taskExecClient.selectPatrolTaskPointExecRecordList(PatrolTaskPointExecRecord.builder().oldTaskPatrolledId(execRecord.getOldTaskPatrolId()).build());
String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size()); String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size());
log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size()); log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size());
@ -743,31 +727,29 @@ public class JobMainTask {
} }
synchronized private PatrolTaskExecRecord recordPersist(boolean bOk, synchronized private PatrolTaskExecRecord recordPersist(boolean bOk,
boolean bPointFinished,
PatrolTaskExecRecord taskExecRecord, PatrolTaskExecRecord taskExecRecord,
int infoListSize, int infoListSize,
PatrolTaskInfo taskInfo, PatrolTaskInfo taskInfo,
PatrolPresetPos presetPos, PatrolPresetPos presetPos,
StringBuffer fileTypes, StringBuffer fileTypes,
StringBuffer filePaths) { StringBuffer filePaths) {
if (!bPointFinished) {
log.info(Color.CYAN + "**************************addPointRecord start" + Color.END);
try {
addPointRecord(bOk, taskExecRecord, taskInfo, presetPos, fileTypes, filePaths);
} catch (Exception e) {
log.error("error", e);
}
log.info(Color.CYAN + "**************************addPointRecord end" + Color.END);
log.info(Color.CYAN + "**************************addPointRecord start" + Color.END);
try {
addPointRecord(bOk, taskExecRecord, taskInfo, presetPos, fileTypes, filePaths);
} catch (Exception e) {
log.error("error", e);
} }
log.info(Color.CYAN + "**************************addPointRecord end" + Color.END);
log.info(Color.CYAN + "**************************addCursorNumber start" + Color.END); log.info(Color.CYAN + "**************************addCursorNumber start" + Color.END);
int cursorNumber = 0; int cursorNumber = 0;
try { try {
cursorNumber = addCursorNumber(taskExecRecord.getTaskPatrolId(), bPointFinished, bOk);
cursorNumber = addCursorNumber(taskExecRecord.getTaskPatrolId(), bOk);
} catch (Exception e) { } catch (Exception e) {
log.error("error", e); log.error("error", e);
} }
log.info(Color.CYAN + "**************************addCursorNumber end, CUR:{},DEV:{},OK:{},FIN:{},CAM:{},ID:{}" + Color.END, cursorNumber, taskExecRecord.getTaskPatrolId(), bOk, bPointFinished, presetPos.getChannelCode(), presetPos.getPatrolPointId());
log.info(Color.CYAN + "**************************addCursorNumber end" + Color.END);
if (cursorNumber == infoListSize) {// devNo下对应的点执行完毕 if (cursorNumber == infoListSize) {// devNo下对应的点执行完毕
log.info(Color.CYAN + "**************************windUpRecord start" + Color.END); log.info(Color.CYAN + "**************************windUpRecord start" + Color.END);
@ -906,20 +888,6 @@ public class JobMainTask {
} }
} }
private List<PatrolTaskInfo> getInfosByTaskCode(final PatrolTaskExecRecord record) {
List<PatrolTaskInfo> patrolTaskInfoList = new ArrayList<>();
try {
patrolTaskInfoList = taskExecClient.selectTaskInfoList(PatrolTaskInfo.builder()
.taskMajorId(record.getTaskId().toString())
.devType("2")
.build());
return patrolTaskInfoMaintainAreaRemove(patrolTaskInfoList);
} catch (Exception e) {
log.error("error", e);
return patrolTaskInfoList;
}
}
private List<PatrolTaskInfo> getInfosByRecord(final PatrolTaskExecRecord record) { private List<PatrolTaskInfo> getInfosByRecord(final PatrolTaskExecRecord record) {
List<PatrolTaskInfo> patrolTaskInfoList = new ArrayList<>(); List<PatrolTaskInfo> patrolTaskInfoList = new ArrayList<>();
try { try {
@ -1006,7 +974,7 @@ public class JobMainTask {
//patrolTaskInfoList size: 12 devNo: camera, taskId: 10032 //patrolTaskInfoList size: 12 devNo: camera, taskId: 10032
log.info("EXEC patrolTaskInfoList size: {} devNo: {}, taskId: {}", patrolTaskInfoList.size(), patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); log.info("EXEC patrolTaskInfoList size: {} devNo: {}, taskId: {}", patrolTaskInfoList.size(), patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId());
for (final PatrolTaskInfo taskInfo : patrolTaskInfoList) { for (final PatrolTaskInfo taskInfo : patrolTaskInfoList) {
log.info("EXEC Immediate Progress: {}, id: {}, taskInfo: {}", patrolTaskExecRecord.getTaskProgress(), patrolTaskExecRecord.getTaskPatrolId() + "@@@" + patrolTaskExecRecord.getTaskPatrolId(), "deviceId:" + taskInfo.getDeviceId() + " LineId=" + taskInfo.getLineId());
log.info("EXEC Immediate taskPatrolId: {}, deviceId: {}, lineId: {}", patrolTaskExecRecord.getTaskPatrolId(), taskInfo.getDeviceId(), taskInfo.getLineId());
prePointExec(patrolTaskExecRecord, taskInfo, patrolTaskInfoList.size()); prePointExec(patrolTaskExecRecord, taskInfo, patrolTaskInfoList.size());
} }
} }


Loading…
Cancel
Save