|
|
@ -43,6 +43,8 @@ public class PrintTaskServiceImpl extends ServiceImpl<PrintTaskDao, PrintTask> i |
|
|
task.setRetryCount(0); |
|
|
task.setRetryCount(0); |
|
|
task.setCreatedBy(createdBy); |
|
|
task.setCreatedBy(createdBy); |
|
|
task.setCreatedDate(new Date()); |
|
|
task.setCreatedDate(new Date()); |
|
|
|
|
|
task.setUnitId(labelData != null && labelData.get("unit_id") != null |
|
|
|
|
|
? labelData.get("unit_id").toString() : null); |
|
|
|
|
|
|
|
|
boolean saved = this.save(task); |
|
|
boolean saved = this.save(task); |
|
|
if (!saved) { |
|
|
if (!saved) { |
|
|
@ -135,5 +137,79 @@ public class PrintTaskServiceImpl extends ServiceImpl<PrintTaskDao, PrintTask> i |
|
|
throw new RuntimeException("归档失败: " + e.getMessage(), e); |
|
|
throw new RuntimeException("归档失败: " + e.getMessage(), e); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 获取失败的打印任务列表 |
|
|
|
|
|
* |
|
|
|
|
|
* @param site 站点编码 |
|
|
|
|
|
* @return 失败的任务列表 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
|
|
|
public List<PrintTask> getFailedTasks(String site) { |
|
|
|
|
|
log.info("查询失败的打印任务,站点: {}", site); |
|
|
|
|
|
|
|
|
|
|
|
return this.lambdaQuery() |
|
|
|
|
|
.eq(PrintTask::getSite, site) |
|
|
|
|
|
.eq(PrintTask::getTaskStatus, "FAILED") |
|
|
|
|
|
.orderByDesc(PrintTask::getCreatedDate) |
|
|
|
|
|
.list(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 重试失败的打印任务 |
|
|
|
|
|
* |
|
|
|
|
|
* <p><b>功能说明:</b></p> |
|
|
|
|
|
* <ul> |
|
|
|
|
|
* <li>查询所有状态为FAILED的打印任务</li> |
|
|
|
|
|
* <li>将这些任务的状态重置为PENDING</li> |
|
|
|
|
|
* <li>清空错误信息</li> |
|
|
|
|
|
* <li>重新加入打印队列</li> |
|
|
|
|
|
* </ul> |
|
|
|
|
|
* |
|
|
|
|
|
* @param site 站点编码 |
|
|
|
|
|
* @return 重试的任务数量 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public int retryFailedTasks(String site) { |
|
|
|
|
|
log.info("=== 开始重试失败的打印任务 === 站点: {}", site); |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
// 1. 查询所有失败的任务 |
|
|
|
|
|
List<PrintTask> failedTasks = this.lambdaQuery() |
|
|
|
|
|
.eq(PrintTask::getSite, site) |
|
|
|
|
|
.eq(PrintTask::getTaskStatus, "FAILED") |
|
|
|
|
|
.list(); |
|
|
|
|
|
|
|
|
|
|
|
if (failedTasks.isEmpty()) { |
|
|
|
|
|
log.info("没有需要重试的失败任务"); |
|
|
|
|
|
return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
log.info("找到 {} 个失败的打印任务", failedTasks.size()); |
|
|
|
|
|
|
|
|
|
|
|
// 2. 将失败任务状态重置为PENDING |
|
|
|
|
|
boolean updated = this.lambdaUpdate() |
|
|
|
|
|
.set(PrintTask::getTaskStatus, "PENDING") |
|
|
|
|
|
.set(PrintTask::getErrorMessage, null) |
|
|
|
|
|
.set(PrintTask::getStartedDate, null) |
|
|
|
|
|
.set(PrintTask::getCompletedDate, null) |
|
|
|
|
|
.eq(PrintTask::getSite, site) |
|
|
|
|
|
.eq(PrintTask::getTaskStatus, "FAILED") |
|
|
|
|
|
.update(); |
|
|
|
|
|
|
|
|
|
|
|
if (updated) { |
|
|
|
|
|
log.info("=== 重试失败任务完成 === 成功将 {} 个任务重新加入打印队列", failedTasks.size()); |
|
|
|
|
|
return failedTasks.size(); |
|
|
|
|
|
} else { |
|
|
|
|
|
log.warn("重试失败任务时更新状态失败"); |
|
|
|
|
|
return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error("=== 重试失败任务异常 === 错误信息: {}", e.getMessage(), e); |
|
|
|
|
|
throw new RuntimeException("重试失败任务异常: " + e.getMessage(), e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|