添加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 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<LiquidTankTask> list = lquidTankTaskClient.timeout();
omsLogger.info("LquidTankTaskGenerateProcessor end");
return new ProcessResult(true);
}
}

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

@ -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;
}

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

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

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

@ -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<LiquidTankTask> generate() {
log.info("========generate========start");
// 如果是节假日,则跳过生成。
if (false) {
log.info("节假日,则跳过生成。");
@ -41,6 +49,16 @@ public class LiquidTankTaskService {
// 遍历插入槽液任务。
List<LiquidTankTask> rList = new ArrayList<>();
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();
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<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