feat(job):优化工单查询逻辑并支持参数传递

- 在 AlibabaWorkOrderJob 中引入 StrUtil 工具类- 修改 buildSql 方法签名以支持额外的查询参数- 更新 SQL 构建逻辑以处理新的参数输入
- 添加条件判断确保时间范围的有效性
- 在 DemoJob 中增加对传入参数的打印输出
This commit is contained in:
2025-11-14 17:42:14 +08:00
parent 23e58125de
commit 945d5e8dd0
2 changed files with 9 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
package com.jeelowcode.module.biz.job;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.sql.SqlUtil;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.jeelowcode.module.biz.entity.AlibabaWorkOrder;
@@ -54,10 +55,10 @@ public class AlibabaWorkOrderJob implements JobHandler {
LocalDateTime maxWorkOrderTime = workOrderService.getMaxWorkOrderTime();
StringBuilder sqlBuilder = new StringBuilder();
if (maxWorkOrderTime == null) {
sqlBuilder.append(buildSql(null, null));
sqlBuilder.append(buildSql("0", null, null));
} else {
LocalDateTime endTime = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
sqlBuilder.append(buildSql(maxWorkOrderTime, endTime));
sqlBuilder.append(buildSql(param, maxWorkOrderTime, endTime));
}
// 执行SQL查询数据
DataSource dataSource = dataSources.get(ALIBABA_DATASOURCE_NAME);
@@ -106,13 +107,14 @@ public class AlibabaWorkOrderJob implements JobHandler {
}
/**
* 构建查询SQL
* 构建SQL查询语句
*
* @param params 查询参数
* @param startTime 开始时间
* @param endTime 结束时间
* @return SQL
* @return SQL查询语句
*/
public static String buildSql(LocalDateTime startTime, LocalDateTime endTime) {
public static String buildSql(String params, LocalDateTime startTime, LocalDateTime endTime) {
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("SELECT " +
" mwoe.ID AS \"id\", " +
@@ -485,7 +487,7 @@ public class AlibabaWorkOrderJob implements JobHandler {
" ) " +
" )");
// 如果时间参数存在并且合法,则添加时间条件
if (Objects.nonNull(startTime) && Objects.nonNull(endTime) && startTime.isBefore(endTime)) {
if (StrUtil.equals("1", params) && Objects.nonNull(startTime) && Objects.nonNull(endTime) && startTime.isBefore(endTime)) {
String formattedStart = LocalDateTimeUtil.format(startTime, FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
String formattedEnd = LocalDateTimeUtil.format(endTime, FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);