添加LquidTankTaskTimeoutProcessor。

develop-QA
Tom Li 1 month ago
parent e3a9cba3fb
commit b8a856a2fa
  1. 30
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskGenerateProcessor.java
  2. 13
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/LquidTankTaskTimeoutProcessor.java
  3. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ILquidTankTaskClient.java
  4. 434
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTankTask.java
  5. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  6. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/LiquidTankTaskClient.java
  7. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java
  8. 41
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService.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<LiquidTankTask> list = lquidTankTaskClient.generate();
omsLogger.info("LquidTankTaskGenerateProcessor end");
return new ProcessResult(true);
}
}

@ -3,15 +3,18 @@ package org.springblade.job.processor.quality;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.quality.feign.ILquidTankTaskClient; import org.springblade.desk.quality.feign.ILquidTankTaskClient;
import org.springblade.desk.quality.pojo.entity.LiquidTankTask;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor; import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import tech.powerjob.worker.log.OmsLogger; import tech.powerjob.worker.log.OmsLogger;
import java.util.List;
@Slf4j @Slf4j
@Component @Component
public class LquidTankTaskProcessor implements BasicProcessor { public class LquidTankTaskTimeoutProcessor implements BasicProcessor {
@Resource @Resource
private ILquidTankTaskClient lquidTankTaskClient; private ILquidTankTaskClient lquidTankTaskClient;
@ -19,9 +22,9 @@ public class LquidTankTaskProcessor implements BasicProcessor {
@Override @Override
public ProcessResult process(TaskContext context) throws Exception { public ProcessResult process(TaskContext context) throws Exception {
OmsLogger omsLogger = context.getOmsLogger(); OmsLogger omsLogger = context.getOmsLogger();
omsLogger.info("InspectionTaskGenJob start"); omsLogger.info("LquidTankTaskTimeoutProcessor start");
lquidTankTaskClient.generate(); List<LiquidTankTask> list = lquidTankTaskClient.timeout();
omsLogger.info("InspectionTaskGenJob end"); omsLogger.info("LquidTankTaskGenerateProcessor end");
return null; return new ProcessResult(true);
} }
} }

@ -16,6 +16,11 @@ public interface ILquidTankTaskClient {
String GENERATE = API_PREFIX + "/generate"; String GENERATE = API_PREFIX + "/generate";
String TIMEOUT = API_PREFIX + "/timeout";
@GetMapping(GENERATE) @GetMapping(GENERATE)
public List<LiquidTankTask> generate(); public List<LiquidTankTask> generate();
@GetMapping(TIMEOUT)
public List<LiquidTankTask> timeout();
} }

@ -24,223 +24,223 @@ import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class LiquidTankTask extends BaseEntity { public class LiquidTankTask extends BaseEntity {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* [槽液检测任务]编码 * [槽液检测任务]编码
*/ */
@Schema(description = "[槽液检测任务]编码") @Schema(description = "[槽液检测任务]编码")
private String code; private String code;
/** /**
* 类型 * 类型
*/ */
@Schema(description = "类型") @Schema(description = "类型")
private Long liquidTankTaskType; private Long liquidTankTaskType;
/** /**
* 名称 * 名称
*/ */
@Schema(description = "名称") @Schema(description = "名称")
private String name; private String name;
/** /**
* [槽液]id * [槽液]id
*/ */
@Schema(description = "[槽液]id") @Schema(description = "[槽液]id")
private Long liquidTankId; private Long liquidTankId;
/** /**
* [作业中心]id * [作业中心]id
*/ */
@Schema(description = "[作业中心]id") @Schema(description = "[作业中心]id")
private Long workCenterId; private Long workCenterId;
/** /**
* 药品[物料]id * 药品[物料]id
*/ */
@Schema(description = "药品[物料]id") @Schema(description = "药品[物料]id")
private Long drugMaterialId; private Long drugMaterialId;
/** /**
* [槽液]编号 * [槽液]编号
*/ */
@Schema(description = "[槽液]编号") @Schema(description = "[槽液]编号")
private String liquidTankCode; private String liquidTankCode;
/** /**
* 待测成分 * 待测成分
*/ */
@Schema(description = "待测成分") @Schema(description = "待测成分")
private String testElement; private String testElement;
/** /**
* 药品名称 * 药品名称
*/ */
@Schema(description = "药品名称") @Schema(description = "药品名称")
private String drugName; private String drugName;
/** /**
* 药品[物料]编码 * 药品[物料]编码
*/ */
@Schema(description = "药品[物料]编码") @Schema(description = "药品[物料]编码")
private String drugMaterialCode; private String drugMaterialCode;
/** /**
* 药品物料名称 * 药品物料名称
*/ */
@Schema(description = "药品物料名称") @Schema(description = "药品物料名称")
private String drugMaterialName; private String drugMaterialName;
/** /**
* 工艺含量 * 工艺含量
*/ */
@Schema(description = "工艺含量") @Schema(description = "工艺含量")
private String processContent; private String processContent;
/** /**
* 目标值 * 目标值
*/ */
@Schema(description = "目标值") @Schema(description = "目标值")
private Long targetValue; private Long targetValue;
/** /**
* 目标上下限 * 目标上下限
*/ */
@Schema(description = "目标上下限") @Schema(description = "目标上下限")
private String bound; private String bound;
/** /**
* 排序 * 排序
*/ */
@Schema(description = "排序") @Schema(description = "排序")
private Long sort; private Long sort;
/** /**
* 备注 * 备注
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
/** /**
* 添加点 * 添加点
*/ */
@Schema(description = "添加点") @Schema(description = "添加点")
private BigDecimal fillingLocation; private BigDecimal fillingLocation;
/** /**
* 电导率测量值 * 电导率测量值
*/ */
@Schema(description = "电导率测量值") @Schema(description = "电导率测量值")
private BigDecimal conductivityTestValue; private BigDecimal conductivityTestValue;
/** /**
* 体积 * 体积
*/ */
@Schema(description = "体积") @Schema(description = "体积")
private BigDecimal volume; private BigDecimal volume;
/** /**
* 单位 * 单位
*/ */
@Schema(description = "单位") @Schema(description = "单位")
private BigDecimal unit; private BigDecimal unit;
/** /**
* [计量单位]id * [计量单位]id
*/ */
@Schema(description = "[计量单位]id") @Schema(description = "[计量单位]id")
private BigDecimal unitId; private BigDecimal unitId;
/** /**
* 加药量单位 * 加药量单位
*/ */
@Schema(description = "加药量单位") @Schema(description = "加药量单位")
private String addUnit; private String addUnit;
/** /**
* 加药量[计量单位]id * 加药量[计量单位]id
*/ */
@Schema(description = "加药量[计量单位]id") @Schema(description = "加药量[计量单位]id")
private BigDecimal addUnitId; private BigDecimal addUnitId;
/** /**
* 分析周期 * 分析周期
*/ */
@Schema(description = "分析周期") @Schema(description = "分析周期")
private Integer analysisCycle; private Integer analysisCycle;
/** /**
* 有效期 * 有效期
*/ */
@Schema(description = "有效期") @Schema(description = "有效期")
private LocalDateTime validDate; private LocalDateTime validDate;
/** /**
* 上次化验日期 * 上次化验日期
*/ */
@Schema(description = "上次化验日期") @Schema(description = "上次化验日期")
private LocalDateTime lastTest; private LocalDateTime lastTest;
/** /**
* 槽液到期日期 * 槽液到期日期
*/ */
@Schema(description = "槽液到期日期") @Schema(description = "槽液到期日期")
private LocalDateTime expiryDate; private LocalDateTime expiryDate;
/** /**
* 化验人[用户]id * 化验人[用户]id
*/ */
@Schema(description = "化验人[用户]id") @Schema(description = "化验人[用户]id")
private BigDecimal testUserId; private BigDecimal testUserId;
/** /**
* 工艺主管[用户]id * 工艺主管[用户]id
*/ */
@Schema(description = "工艺主管[用户]id") @Schema(description = "工艺主管[用户]id")
private BigDecimal processUserId; private BigDecimal processUserId;
/** /**
* 测量值 * 测量值
*/ */
@Schema(description = "测量值") @Schema(description = "测量值")
private BigDecimal testValue; private BigDecimal testValue;
/** /**
* 需添加量 * 需添加量
*/ */
@Schema(description = "需添加量") @Schema(description = "需添加量")
private BigDecimal needAddValue; private BigDecimal needAddValue;
/** /**
* 实际添加量 * 实际添加量
*/ */
@Schema(description = "实际添加量") @Schema(description = "实际添加量")
private BigDecimal actualAddValue; private BigDecimal actualAddValue;
/** /**
* 加药后含量 * 加药后含量
*/ */
@Schema(description = "加药后含量") @Schema(description = "加药后含量")
private BigDecimal afterAddValue; private BigDecimal afterAddValue;
/** /**
* [班组]id * [班组]id
*/ */
@Schema(description = "[班组]id") @Schema(description = "[班组]id")
private Long teamId; private Long teamId;
/** /**
* 参数录入时间 * 参数录入时间
*/ */
@Schema(description = "参数录入时间") @Schema(description = "参数录入时间")
private LocalDateTime entryDate; private LocalDateTime entryDate;
/** /**
* 确认时间 * 确认时间
*/ */
@Schema(description = "确认时间") @Schema(description = "确认时间")
private LocalDateTime confirmDate; private LocalDateTime confirmDate;
/** /**
* 送出[用户]id * 送出[用户]id
*/ */
@Schema(description = "送出[用户]id") @Schema(description = "送出[用户]id")
private Long sendUserId; private Long sendUserId;
/** /**
* 送出时间 * 送出时间
*/ */
@Schema(description = "送出时间") @Schema(description = "送出时间")
private LocalDateTime sendDate; private LocalDateTime sendDate;
/** /**
* 接收[用户]id * 接收[用户]id
*/ */
@Schema(description = "接收[用户]id") @Schema(description = "接收[用户]id")
private Long receiveUserId; private Long receiveUserId;
/** /**
* 接收时间 * 接收时间
*/ */
@Schema(description = "接收时间") @Schema(description = "接收时间")
private LocalDateTime receiveDate; private LocalDateTime receiveDate;
/** /**
* 处理[用户]id * 处理[用户]id
*/ */
@Schema(description = "处理[用户]id") @Schema(description = "处理[用户]id")
private BigDecimal handleUserId; private BigDecimal handleUserId;
/** /**
* 处理时间 * 处理时间
*/ */
@Schema(description = "处理时间") @Schema(description = "处理时间")
private LocalDateTime handleDate; private LocalDateTime handleDate;
/** /**
* 来源类型 * 来源类型
*/ */
@Schema(description = "来源类型") @Schema(description = "来源类型")
private Long fromType; private Long fromType;
} }

@ -146,7 +146,7 @@ public class InspectionTaskController extends BladeController {
} }
/** /**
* todo:调用时机待定 * todo:调用时机待定talk to 李涛
* 工序开始新增[检验任务] * 工序开始新增[检验任务]
*/ */
@PostMapping("/start") @PostMapping("/start")

@ -19,5 +19,10 @@ public class LiquidTankTaskClient implements ILquidTankTaskClient {
public List<LiquidTankTask> generate() { public List<LiquidTankTask> generate() {
return service.generate(); return service.generate();
} }
@Override
public List<LiquidTankTask> timeout() {
return service.timeout();
}
} }

@ -122,7 +122,7 @@ public class LiquidTank extends BaseEntity {
* 化验人[用户]id * 化验人[用户]id
*/ */
@Schema(description = "化验人[用户]id") @Schema(description = "化验人[用户]id")
private BigDecimal testUserId; private Long testUserId;
/** /**
* 工艺主管[用户]id * 工艺主管[用户]id
*/ */

@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.flowable.task.service.delegate.TaskListener; import org.flowable.task.service.delegate.TaskListener;
import org.springblade.desk.quality.constant.ColBase; import org.springblade.desk.quality.constant.ColBase;
import org.springblade.desk.quality.constant.ColValue; 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.LiquidTankGenMapper;
import org.springblade.desk.quality.mapper.gen.LiquidTankTaskGenMapper; import org.springblade.desk.quality.mapper.gen.LiquidTankTaskGenMapper;
import org.springblade.desk.quality.pojo.entity.LiquidTank; import org.springblade.desk.quality.pojo.entity.LiquidTank;
@ -27,7 +28,14 @@ public class LiquidTankTaskService {
@Resource @Resource
private LiquidTankTaskGenMapper genMapper; private LiquidTankTaskGenMapper genMapper;
/**
* 定时运行:每天00:00
* 生成槽液任务
*
* @return
*/
public List<LiquidTankTask> generate() { public List<LiquidTankTask> generate() {
log.info("========generate========start");
// 如果是节假日,则跳过生成。 // 如果是节假日,则跳过生成。
if (false) { if (false) {
log.info("节假日,则跳过生成。"); log.info("节假日,则跳过生成。");
@ -41,6 +49,16 @@ public class LiquidTankTaskService {
// 遍历插入槽液任务。 // 遍历插入槽液任务。
List<LiquidTankTask> rList = new ArrayList<>(); List<LiquidTankTask> rList = new ArrayList<>();
for (LiquidTank tank : tankList) { for (LiquidTank tank : tankList) {
// 如果有未处理任务,则跳过不生成新任务。
Long count = genMapper.selectCount(
new QueryWrapper<LiquidTankTask>()
.eq("LIQUID_TANK_ID", tank.getId())
.eq(ColBase.STATUS, LiquidTankTaskConst.STATUS_HANDLED)
);
if (count >= 1) {
log.info("槽液{}存在未处理的槽液任务", tank.getId());
continue;
}
LiquidTankTask task = new LiquidTankTask(); LiquidTankTask task = new LiquidTankTask();
task.setLiquidTankId(tank.getId()); task.setLiquidTankId(tank.getId());
task.setName("name"); task.setName("name");
@ -53,6 +71,29 @@ public class LiquidTankTaskService {
genMapper.insert(task); genMapper.insert(task);
rList.add(task); rList.add(task);
} }
log.info("========generate========end");
return rList; return rList;
} }
/**
* 定时运行:每天09:30
* 槽液任务超时提醒
*
* @return
*/
public List<LiquidTankTask> timeout() {
log.info("========timeout========start");
// 查询出所有未处理的槽液任务
List<LiquidTankTask> list = genMapper.selectList(new QueryWrapper<LiquidTankTask>()
.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;
}
} }

Loading…
Cancel
Save