From b8a856a2fa45d546f2849216594eff84ac9d572b Mon Sep 17 00:00:00 2001 From: Tom Li Date: Fri, 14 Nov 2025 15:23:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0LquidTankTaskTimeoutProcessor?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LquidTankTaskGenerateProcessor.java | 30 ++ ...ava => LquidTankTaskTimeoutProcessor.java} | 13 +- .../quality/feign/ILquidTankTaskClient.java | 5 + .../quality/pojo/entity/LiquidTankTask.java | 434 +++++++++--------- .../controller/InspectionTaskController.java | 2 +- .../quality/feign/LiquidTankTaskClient.java | 5 + .../desk/quality/pojo/entity/LiquidTank.java | 2 +- .../service/LiquidTankTaskService.java | 41 ++ 8 files changed, 308 insertions(+), 224 deletions(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskGenerateProcessor.java rename blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/{LquidTankTaskProcessor.java => LquidTankTaskTimeoutProcessor.java} (63%) diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskGenerateProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskGenerateProcessor.java new file mode 100644 index 0000000..a90d00f --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskGenerateProcessor.java @@ -0,0 +1,30 @@ +package org.springblade.job.processor.quality; + +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.quality.feign.ILquidTankTaskClient; +import org.springblade.desk.quality.pojo.entity.LiquidTankTask; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; +import tech.powerjob.worker.log.OmsLogger; + +import java.util.List; + +@Slf4j +@Component +public class LquidTankTaskGenerateProcessor implements BasicProcessor { + + @Resource + private ILquidTankTaskClient lquidTankTaskClient; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + OmsLogger omsLogger = context.getOmsLogger(); + omsLogger.info("LquidTankTaskGenerateProcessor start"); + List list = lquidTankTaskClient.generate(); + omsLogger.info("LquidTankTaskGenerateProcessor end"); + return new ProcessResult(true); + } +} diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskTimeoutProcessor.java similarity index 63% rename from blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskProcessor.java rename to blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskTimeoutProcessor.java index 6049153..c5108b7 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskTimeoutProcessor.java @@ -3,15 +3,18 @@ package org.springblade.job.processor.quality; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springblade.desk.quality.feign.ILquidTankTaskClient; +import org.springblade.desk.quality.pojo.entity.LiquidTankTask; import org.springframework.stereotype.Component; import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.core.processor.sdk.BasicProcessor; import tech.powerjob.worker.log.OmsLogger; +import java.util.List; + @Slf4j @Component -public class LquidTankTaskProcessor implements BasicProcessor { +public class LquidTankTaskTimeoutProcessor implements BasicProcessor { @Resource private ILquidTankTaskClient lquidTankTaskClient; @@ -19,9 +22,9 @@ public class LquidTankTaskProcessor implements BasicProcessor { @Override public ProcessResult process(TaskContext context) throws Exception { OmsLogger omsLogger = context.getOmsLogger(); - omsLogger.info("InspectionTaskGenJob start"); - lquidTankTaskClient.generate(); - omsLogger.info("InspectionTaskGenJob end"); - return null; + omsLogger.info("LquidTankTaskTimeoutProcessor start"); + List list = lquidTankTaskClient.timeout(); + omsLogger.info("LquidTankTaskGenerateProcessor end"); + return new ProcessResult(true); } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ILquidTankTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ILquidTankTaskClient.java index 3b7142d..06e141a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ILquidTankTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ILquidTankTaskClient.java @@ -16,6 +16,11 @@ public interface ILquidTankTaskClient { String GENERATE = API_PREFIX + "/generate"; + String TIMEOUT = API_PREFIX + "/timeout"; + @GetMapping(GENERATE) public List generate(); + + @GetMapping(TIMEOUT) + public List timeout(); } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTankTask.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTankTask.java index 37c8fb8..fdbeb90 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTankTask.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTankTask.java @@ -24,223 +24,223 @@ import java.time.LocalDateTime; @EqualsAndHashCode(callSuper = true) public class LiquidTankTask extends BaseEntity { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - /** - * [槽液检测任务]编码 - */ - @Schema(description = "[槽液检测任务]编码") - private String code; - /** - * 类型 - */ - @Schema(description = "类型") - private Long liquidTankTaskType; - /** - * 名称 - */ - @Schema(description = "名称") - private String name; - /** - * [槽液]id - */ - @Schema(description = "[槽液]id") - private Long liquidTankId; - /** - * [作业中心]id - */ - @Schema(description = "[作业中心]id") - private Long workCenterId; - /** - * 药品[物料]id - */ - @Schema(description = "药品[物料]id") - private Long drugMaterialId; - /** - * [槽液]编号 - */ - @Schema(description = "[槽液]编号") - private String liquidTankCode; - /** - * 待测成分 - */ - @Schema(description = "待测成分") - private String testElement; - /** - * 药品名称 - */ - @Schema(description = "药品名称") - private String drugName; - /** - * 药品[物料]编码 - */ - @Schema(description = "药品[物料]编码") - private String drugMaterialCode; - /** - * 药品物料名称 - */ - @Schema(description = "药品物料名称") - private String drugMaterialName; - /** - * 工艺含量 - */ - @Schema(description = "工艺含量") - private String processContent; - /** - * 目标值 - */ - @Schema(description = "目标值") - private Long targetValue; - /** - * 目标上下限 - */ - @Schema(description = "目标上下限") - private String bound; - /** - * 排序 - */ - @Schema(description = "排序") - private Long sort; - /** - * 备注 - */ - @Schema(description = "备注") - private String remark; - /** - * 添加点 - */ - @Schema(description = "添加点") - private BigDecimal fillingLocation; - /** - * 电导率测量值 - */ - @Schema(description = "电导率测量值") - private BigDecimal conductivityTestValue; - /** - * 体积 - */ - @Schema(description = "体积") - private BigDecimal volume; - /** - * 单位 - */ - @Schema(description = "单位") - private BigDecimal unit; - /** - * [计量单位]id - */ - @Schema(description = "[计量单位]id") - private BigDecimal unitId; - /** - * 加药量单位 - */ - @Schema(description = "加药量单位") - private String addUnit; - /** - * 加药量[计量单位]id - */ - @Schema(description = "加药量[计量单位]id") - private BigDecimal addUnitId; - /** - * 分析周期 - */ - @Schema(description = "分析周期") - private Integer analysisCycle; - /** - * 有效期 - */ - @Schema(description = "有效期") - private LocalDateTime validDate; - /** - * 上次化验日期 - */ - @Schema(description = "上次化验日期") - private LocalDateTime lastTest; - /** - * 槽液到期日期 - */ - @Schema(description = "槽液到期日期") - private LocalDateTime expiryDate; - /** - * 化验人[用户]id - */ - @Schema(description = "化验人[用户]id") - private BigDecimal testUserId; - /** - * 工艺主管[用户]id - */ - @Schema(description = "工艺主管[用户]id") - private BigDecimal processUserId; - /** - * 测量值 - */ - @Schema(description = "测量值") - private BigDecimal testValue; - /** - * 需添加量 - */ - @Schema(description = "需添加量") - private BigDecimal needAddValue; - /** - * 实际添加量 - */ - @Schema(description = "实际添加量") - private BigDecimal actualAddValue; - /** - * 加药后含量 - */ - @Schema(description = "加药后含量") - private BigDecimal afterAddValue; - /** - * [班组]id - */ - @Schema(description = "[班组]id") - private Long teamId; - /** - * 参数录入时间 - */ - @Schema(description = "参数录入时间") - private LocalDateTime entryDate; - /** - * 确认时间 - */ - @Schema(description = "确认时间") - private LocalDateTime confirmDate; - /** - * 送出[用户]id - */ - @Schema(description = "送出[用户]id") - private Long sendUserId; - /** - * 送出时间 - */ - @Schema(description = "送出时间") - private LocalDateTime sendDate; - /** - * 接收[用户]id - */ - @Schema(description = "接收[用户]id") - private Long receiveUserId; - /** - * 接收时间 - */ - @Schema(description = "接收时间") - private LocalDateTime receiveDate; - /** - * 处理[用户]id - */ - @Schema(description = "处理[用户]id") - private BigDecimal handleUserId; - /** - * 处理时间 - */ - @Schema(description = "处理时间") - private LocalDateTime handleDate; - /** - * 来源类型 - */ - @Schema(description = "来源类型") - private Long fromType; + /** + * [槽液检测任务]编码 + */ + @Schema(description = "[槽液检测任务]编码") + private String code; + /** + * 类型 + */ + @Schema(description = "类型") + private Long liquidTankTaskType; + /** + * 名称 + */ + @Schema(description = "名称") + private String name; + /** + * [槽液]id + */ + @Schema(description = "[槽液]id") + private Long liquidTankId; + /** + * [作业中心]id + */ + @Schema(description = "[作业中心]id") + private Long workCenterId; + /** + * 药品[物料]id + */ + @Schema(description = "药品[物料]id") + private Long drugMaterialId; + /** + * [槽液]编号 + */ + @Schema(description = "[槽液]编号") + private String liquidTankCode; + /** + * 待测成分 + */ + @Schema(description = "待测成分") + private String testElement; + /** + * 药品名称 + */ + @Schema(description = "药品名称") + private String drugName; + /** + * 药品[物料]编码 + */ + @Schema(description = "药品[物料]编码") + private String drugMaterialCode; + /** + * 药品物料名称 + */ + @Schema(description = "药品物料名称") + private String drugMaterialName; + /** + * 工艺含量 + */ + @Schema(description = "工艺含量") + private String processContent; + /** + * 目标值 + */ + @Schema(description = "目标值") + private Long targetValue; + /** + * 目标上下限 + */ + @Schema(description = "目标上下限") + private String bound; + /** + * 排序 + */ + @Schema(description = "排序") + private Long sort; + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + /** + * 添加点 + */ + @Schema(description = "添加点") + private BigDecimal fillingLocation; + /** + * 电导率测量值 + */ + @Schema(description = "电导率测量值") + private BigDecimal conductivityTestValue; + /** + * 体积 + */ + @Schema(description = "体积") + private BigDecimal volume; + /** + * 单位 + */ + @Schema(description = "单位") + private BigDecimal unit; + /** + * [计量单位]id + */ + @Schema(description = "[计量单位]id") + private BigDecimal unitId; + /** + * 加药量单位 + */ + @Schema(description = "加药量单位") + private String addUnit; + /** + * 加药量[计量单位]id + */ + @Schema(description = "加药量[计量单位]id") + private BigDecimal addUnitId; + /** + * 分析周期 + */ + @Schema(description = "分析周期") + private Integer analysisCycle; + /** + * 有效期 + */ + @Schema(description = "有效期") + private LocalDateTime validDate; + /** + * 上次化验日期 + */ + @Schema(description = "上次化验日期") + private LocalDateTime lastTest; + /** + * 槽液到期日期 + */ + @Schema(description = "槽液到期日期") + private LocalDateTime expiryDate; + /** + * 化验人[用户]id + */ + @Schema(description = "化验人[用户]id") + private BigDecimal testUserId; + /** + * 工艺主管[用户]id + */ + @Schema(description = "工艺主管[用户]id") + private BigDecimal processUserId; + /** + * 测量值 + */ + @Schema(description = "测量值") + private BigDecimal testValue; + /** + * 需添加量 + */ + @Schema(description = "需添加量") + private BigDecimal needAddValue; + /** + * 实际添加量 + */ + @Schema(description = "实际添加量") + private BigDecimal actualAddValue; + /** + * 加药后含量 + */ + @Schema(description = "加药后含量") + private BigDecimal afterAddValue; + /** + * [班组]id + */ + @Schema(description = "[班组]id") + private Long teamId; + /** + * 参数录入时间 + */ + @Schema(description = "参数录入时间") + private LocalDateTime entryDate; + /** + * 确认时间 + */ + @Schema(description = "确认时间") + private LocalDateTime confirmDate; + /** + * 送出[用户]id + */ + @Schema(description = "送出[用户]id") + private Long sendUserId; + /** + * 送出时间 + */ + @Schema(description = "送出时间") + private LocalDateTime sendDate; + /** + * 接收[用户]id + */ + @Schema(description = "接收[用户]id") + private Long receiveUserId; + /** + * 接收时间 + */ + @Schema(description = "接收时间") + private LocalDateTime receiveDate; + /** + * 处理[用户]id + */ + @Schema(description = "处理[用户]id") + private BigDecimal handleUserId; + /** + * 处理时间 + */ + @Schema(description = "处理时间") + private LocalDateTime handleDate; + /** + * 来源类型 + */ + @Schema(description = "来源类型") + private Long fromType; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java index 07423c3..2d9a28c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java @@ -146,7 +146,7 @@ public class InspectionTaskController extends BladeController { } /** - * todo:调用时机待定。 + * todo:调用时机待定。talk to 李涛。 * 工序开始,新增[检验任务] */ @PostMapping("/start") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/LiquidTankTaskClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/LiquidTankTaskClient.java index 5d9e01f..48bedcb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/LiquidTankTaskClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/LiquidTankTaskClient.java @@ -19,5 +19,10 @@ public class LiquidTankTaskClient implements ILquidTankTaskClient { public List generate() { return service.generate(); } + + @Override + public List timeout() { + return service.timeout(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java index c3e55ad..9b67bd2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java @@ -122,7 +122,7 @@ public class LiquidTank extends BaseEntity { * 化验人[用户]id */ @Schema(description = "化验人[用户]id") - private BigDecimal testUserId; + private Long testUserId; /** * 工艺主管[用户]id */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService.java index 38a5b5f..0750421 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService.java @@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; import org.flowable.task.service.delegate.TaskListener; import org.springblade.desk.quality.constant.ColBase; import org.springblade.desk.quality.constant.ColValue; +import org.springblade.desk.quality.constant.LiquidTankTaskConst; import org.springblade.desk.quality.mapper.gen.LiquidTankGenMapper; import org.springblade.desk.quality.mapper.gen.LiquidTankTaskGenMapper; import org.springblade.desk.quality.pojo.entity.LiquidTank; @@ -27,7 +28,14 @@ public class LiquidTankTaskService { @Resource private LiquidTankTaskGenMapper genMapper; + /** + * 定时运行:每天00:00 + * 生成槽液任务。 + * + * @return + */ public List generate() { + log.info("========generate========start"); // 如果是节假日,则跳过生成。 if (false) { log.info("节假日,则跳过生成。"); @@ -41,6 +49,16 @@ public class LiquidTankTaskService { // 遍历插入槽液任务。 List rList = new ArrayList<>(); for (LiquidTank tank : tankList) { + // 如果有未处理任务,则跳过不生成新任务。 + Long count = genMapper.selectCount( + new QueryWrapper() + .eq("LIQUID_TANK_ID", tank.getId()) + .eq(ColBase.STATUS, LiquidTankTaskConst.STATUS_HANDLED) + ); + if (count >= 1) { + log.info("槽液{}存在未处理的槽液任务", tank.getId()); + continue; + } LiquidTankTask task = new LiquidTankTask(); task.setLiquidTankId(tank.getId()); task.setName("name"); @@ -53,6 +71,29 @@ public class LiquidTankTaskService { genMapper.insert(task); rList.add(task); } + log.info("========generate========end"); return rList; } + + /** + * 定时运行:每天09:30 + * 槽液任务超时提醒。 + * + * @return + */ + public List timeout() { + log.info("========timeout========start"); + // 查询出所有未处理的槽液任务 + List list = genMapper.selectList(new QueryWrapper() + .eq(ColBase.STATUS, LiquidTankTaskConst.STATUS_HANDLED)); + for (LiquidTankTask task : list) { + LiquidTank tank = liquidTankGenMapper.selectById(task.getLiquidTankId()); + // todo:对监测员进行提醒。 + // 按天运行,可以一直重复提醒。 + String msg = "槽液 " + tank.getCode() + ",未及时检验!请及时处理。"; + Long userId = tank.getTestUserId(); + } + log.info("========timeout========end"); + return list; + } }