|
|
|
@ -384,20 +384,17 @@ public class JobMainTask { |
|
|
|
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(); |
|
|
|
boolean bPointFinished = isPointFinished(patrolTaskInfo, taskExecRecord); |
|
|
|
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(); |
|
|
|
@ -421,45 +418,45 @@ public class JobMainTask { |
|
|
|
int delayMilliSeconds = presetAction.getPhotoGap() * 1000; |
|
|
|
final long photoCount = presetAction.getPhotoCount(); |
|
|
|
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())) { |
|
|
|
log.info("VIDEO PresetType videoNvrCode: {}, channelCode: {}", presetPos.getVideoNvrCode(), presetPos.getChannelCode()); |
|
|
|
fileTypes.append(4).append(","); |
|
|
|
@ -522,11 +519,9 @@ public class JobMainTask { |
|
|
|
String rectangle = getRectangle(presetPos.getPresetPosId()); |
|
|
|
String taskPatrolId = getTaskPatrolledId(taskInfo.getDevNo(), taskExecRecord.getTaskPatrolId()); |
|
|
|
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() |
|
|
|
.patrolDeviceName(taskInfo.getEbookName()) |
|
|
|
.patrolDeviceCode(taskInfo.getDevNo()) |
|
|
|
@ -544,19 +539,7 @@ public class JobMainTask { |
|
|
|
.time(new Date()) |
|
|
|
.isOk(bOk ? 1 : 0) |
|
|
|
.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) { |
|
|
|
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); |
|
|
|
|
|
|
|
int total = taskExecRecord.getTotalNumber(); |
|
|
|
int success = taskExecRecord.getFinishNumber(); |
|
|
|
int cursor; |
|
|
|
if (taskExecRecord.getCursorNumber() == null) { |
|
|
|
cursor = 1; |
|
|
|
} else { |
|
|
|
int total = taskExecRecord.getTotalNumber(); |
|
|
|
cursor = taskExecRecord.getCursorNumber(); |
|
|
|
if (cursor < total) |
|
|
|
if (cursor < total) { |
|
|
|
cursor = taskExecRecord.getCursorNumber() + 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
log.info("addCursorNumber cursor: {}", 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); |
|
|
|
List<PatrolTaskInfo> totalInfos = getInfosByTaskCode(taskExecRecord); |
|
|
|
List<PatrolTaskInfo> totalInfos = getInfosByRecord(taskExecRecord); |
|
|
|
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()); |
|
|
|
callRemoteSendMsgRunMode( |
|
|
|
taskExecRecord.getTaskCode(), |
|
|
|
@ -662,6 +644,8 @@ public class JobMainTask { |
|
|
|
totalProgress, |
|
|
|
TaskStatus.RUNNING.getCode()/*运行中百分比上报*/ |
|
|
|
); |
|
|
|
} else { |
|
|
|
log.info("execute point fail, cursor: {}, success: {}, total: {}", cursor, success, total); |
|
|
|
} |
|
|
|
taskExecClient.updatePatrolTaskExecRecord(taskExecRecord); |
|
|
|
return cursor; |
|
|
|
@ -698,7 +682,7 @@ public class JobMainTask { |
|
|
|
String taskProgress = decimalFormatNum(finish, total); |
|
|
|
execRecord.setTaskProgress(taskProgress); |
|
|
|
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()); |
|
|
|
String totalProgress = decimalFormatNum(finishedInfos.size(), totalInfos.size()); |
|
|
|
log.info("totalProgress: {}, finish: {}, total: {}", totalProgress, finishedInfos.size(), totalInfos.size()); |
|
|
|
@ -719,7 +703,7 @@ public class JobMainTask { |
|
|
|
} else { // 该record下的点没有全部执行成功 |
|
|
|
//设置本record的执行状态为终止 |
|
|
|
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()); |
|
|
|
String totalProgress = decimalFormatNum(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, |
|
|
|
boolean bPointFinished, |
|
|
|
PatrolTaskExecRecord taskExecRecord, |
|
|
|
int infoListSize, |
|
|
|
PatrolTaskInfo taskInfo, |
|
|
|
PatrolPresetPos presetPos, |
|
|
|
StringBuffer fileTypes, |
|
|
|
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); |
|
|
|
int cursorNumber = 0; |
|
|
|
try { |
|
|
|
cursorNumber = addCursorNumber(taskExecRecord.getTaskPatrolId(), bPointFinished, bOk); |
|
|
|
cursorNumber = addCursorNumber(taskExecRecord.getTaskPatrolId(), bOk); |
|
|
|
} catch (Exception 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下对应的点执行完毕 |
|
|
|
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) { |
|
|
|
List<PatrolTaskInfo> patrolTaskInfoList = new ArrayList<>(); |
|
|
|
try { |
|
|
|
@ -1006,7 +974,7 @@ public class JobMainTask { |
|
|
|
//patrolTaskInfoList size: 12 devNo: camera, taskId: 10032 |
|
|
|
log.info("EXEC patrolTaskInfoList size: {} devNo: {}, taskId: {}", patrolTaskInfoList.size(), patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); |
|
|
|
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()); |
|
|
|
} |
|
|
|
} |
|
|
|
|