槽液曲线生成数据

master
pangyang 1 month ago
parent 5622d5cd98
commit bf88f8743c
  1. 1
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankTaskVO.java
  2. 289
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankTaskCopyController.java
  3. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java

@ -90,4 +90,5 @@ public class LiquidTankTaskVO extends LiquidTankTask {
private String drugAddUserSign;
@Schema(description = "控制规范(报告)")
private String norm;
}

@ -221,6 +221,127 @@ public class LiquidTankTaskCopyController extends BladeController {
/**
* [槽液曲线] 查询Copy任务 list分页
*/
@GetMapping("/listWave")
@ApiOperationSupport(order = 20)
@Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj")
public R listWave(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
Query query) {
map.forEach((key, value) -> {
log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
}
);
List<Long> ids = new ArrayList<>();
ids.add(2029787979027017730L);
ids.add(2029746616600240129L);
ids.add(2029744474384678914L);
ids.add(2029740705257250817L);
QueryWrapper<LiquidTankTaskCopy> qw = Condition.getQueryWrapper(map, LiquidTankTaskCopy.class);
// 正常结束的,异常结束的
// qw.in(BaseCol.STATUS, asList(LiquidTankTaskConst.S_FINISH_FAILED, LiquidTankTaskConst.S_FINISH_OK));
// [作业中心]id
qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId")));
// 范围日期
if (map.containsKey(BaseRequest.CREATE_TIME_START) && map.containsKey(BaseRequest.CREATE_TIME_END)) {
Date crStart = RequestUtil.buildDateBeginOfDay(map, BaseRequest.CREATE_TIME_START);
Date crEnd = RequestUtil.buildDateEndOfDay(map, BaseRequest.CREATE_TIME_END);
qw.between(BaseCol.CREATE_TIME, crStart, crEnd);
}
// qw.in("ID",ids);
// 排序 槽液id升序 复测化验时间升序
qw.orderByAsc(
List.of(
"SAMPLE_DATE",
"WORK_CENTER_ID",
"WORK_TANK_ID",
"TEST_ELEMENT"
));
List<LiquidTankTaskCopy> records = service.list(qw);
// List<LiquidTankTaskCopyVO> vos = records.stream()
// .map(LiquidTankTaskCopyWrapper.build()::entityVO)
// .collect(Collectors.toList());
//// IPage<LiquidTankTaskCopy> pages = service.page(Condition.getPage(query), qw);
//// IPage<LiquidTankTaskCopyVO> pagesVO = LiquidTankTaskCopyWrapper.build().pageVO(pages);
// pagesVO.stream()
// .peek(service::setVOValue)
// .collect(Collectors.toList());
Map<String, LiquidTankTaskCopy> latestRecordMap = records.stream()
.collect(Collectors.groupingBy(
record -> record.getWorkTankId() + "_" + record.getWorkCenterId()+"_"+record.getTestElement()+"_"+record.getSampleDate(),
// 每组内按dateTime降序,取最新的一条
Collectors.collectingAndThen(
Collectors.maxBy(Comparator.comparing(LiquidTankTaskCopy::getCreateTime)),
optional -> optional.orElse(null) // 处理Optional避免空指针
)
));
// 3. 转换为List(如果需要List格式)
List<LiquidTankTaskCopy> lesss = new ArrayList<>(latestRecordMap.values());
//
//
List<LiquidTankTaskCopyVO> voess = lesss.stream()
.map(LiquidTankTaskCopyWrapper.build()::entityVO)
.collect(Collectors.toList());
List<LiquidTankTaskCopyVO> vos = voess.stream()
.sorted(Comparator.comparing(LiquidTankTaskCopyVO::getSampleDate))
.collect(Collectors.toList());
// key 自带排序
// key: [作业槽]id
// value: 任务数据列表
Map<String, List<LiquidTankTaskCopyVO>> treeMap = new TreeMap<>();
// 遍历赋值到treeMap中
vos.forEach(vo -> {
final Long wtId = vo.getWorkTankId();
final Long wcId = vo.getWorkCenterId();
final String testElement = vo.getTestElement();
final LocalDate date = vo.getSampleDate();
final String keys = wtId + "_" + wcId + "_" + testElement;
// 不包含,新建
if (!treeMap.containsKey(keys)) {
List<LiquidTankTaskCopyVO> list = new ArrayList<>();
treeMap.put(keys, list);
}
treeMap.get(keys).add(vo);
});
// 前端要求匹配对象
LiquidTankWaveDrawVO allVO = new LiquidTankWaveDrawVO();
List<LiquidTankWaveDrawSingleVO> allChart = allVO.getWaveData();
// 每个entry一个图表
for (Map.Entry<String, List<LiquidTankTaskCopyVO>> entry : treeMap.entrySet()) {
String key = entry.getKey();
// 数据列表
List<LiquidTankTaskCopyVO> list = entry.getValue();
LiquidTankWaveDrawSingleVO singleChart = new LiquidTankWaveDrawSingleVO();
for (LiquidTankTaskCopyVO one : list) {
singleChart.setWcId(one.getWorkCenterId());
singleChart.setWcName(one.getWcName());
singleChart.setWorkTankId(one.getWorkTankId());
singleChart.setWorkTankName(one.getWorkTankName());
singleChart.setLiquidTankId(one.getLiquidTankId());
singleChart.setTestElement(one.getTestElement());
singleChart.getMaxList().add(one.getTargetValueMax());
singleChart.getMinList().add(one.getTargetValueMin());
singleChart.getTargetList().add(one.getTargetValue());
singleChart.getTestList().add(one.getRepeatTestValue());
singleChart.getTestDateList().add(one.getSampleDate());
singleChart.setId(one.getId());
}
allChart.add(singleChart);
}
return R.data(allVO);
}
// @GetMapping("/listWave")
// @ApiOperationSupport(order = 20)
// @Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj")
@ -232,7 +353,7 @@ public class LiquidTankTaskCopyController extends BladeController {
// );
// QueryWrapper<LiquidTankTaskCopy> qw = Condition.getQueryWrapper(map, LiquidTankTaskCopy.class);
// // 正常结束的,异常结束的
// qw.in(BaseCol.STATUS, asList(LiquidTankTaskConst.S_FINISH_FAILED, LiquidTankTaskConst.S_FINISH_OK));
//// qw.in(BaseCol.STATUS, asList(LiquidTankTaskConst.S_FINISH_FAILED, LiquidTankTaskConst.S_FINISH_OK));
// // [作业中心]id
// qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId")));
// // 范围日期
@ -247,6 +368,8 @@ public class LiquidTankTaskCopyController extends BladeController {
// BaseCol.ID,
// LiquidTankTaskCopy.COL_REPEAT_TEST_DATE
// ));
//
//
// IPage<LiquidTankTaskCopy> pages = service.page(Condition.getPage(query), qw);
// IPage<LiquidTankTaskCopyVO> pagesVO = LiquidTankTaskCopyWrapper.build().pageVO(pages);
// pagesVO.getRecords()
@ -287,7 +410,7 @@ public class LiquidTankTaskCopyController extends BladeController {
// singleChart.getMinList().add(one.getTargetValueMin());
// singleChart.getTargetList().add(one.getTargetValue());
// singleChart.getTestList().add(one.getRepeatTestValue());
// singleChart.getTestDateList().add(one.getRepeatTestDate());
// singleChart.getTestDateList().add(one.getSampleDate());
// singleChart.setId(one.getId());
// }
// allChart.add(singleChart);
@ -296,87 +419,87 @@ public class LiquidTankTaskCopyController extends BladeController {
// }
@GetMapping("/listWave")
@ApiOperationSupport(order = 20)
@Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj")
public R listWave(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
Query query) {
map.forEach((key, value) -> {
log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
}
);
map.forEach((key, value) -> {
log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
}
);
QueryWrapper<LiquidTankTask> qw = Condition.getQueryWrapper(map, LiquidTankTask.class);
// 正常结束的,异常结束的
qw.in(BaseCol.STATUS, asList(LiquidTankTaskConst.S_FINISH_FAILED, LiquidTankTaskConst.S_FINISH_OK));
// [作业中心]id
qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId")));
// [作业槽]id
// qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_TANK_ID), LiquidTankTaskCopy.COL_WORK_TANK_ID, Func.toLong(map.get("workTankId")));
// 待测成分/分析项目
// qw.like(map.containsKey(LiquidTankTaskCopy.COL_TEST_ELEMENT), LiquidTankTaskCopy.COL_TEST_ELEMENT, Func.toStr(map.get("testElement")));
// 范围日期
if (map.containsKey(BaseRequest.CREATE_TIME_START) && map.containsKey(BaseRequest.CREATE_TIME_END)) {
Date crStart = RequestUtil.buildDateBeginOfDay(map, BaseRequest.CREATE_TIME_START);
Date crEnd = RequestUtil.buildDateEndOfDay(map, BaseRequest.CREATE_TIME_END);
qw.between(BaseCol.CREATE_TIME, crStart, crEnd);
}
// ID 升序
qw.orderByAsc(BaseCol.ID);
//
IPage<LiquidTankTask> pages = taskService.page(Condition.getPage(query), qw);
IPage<LiquidTankTaskVO> pagesVO = LiquidTankTaskWrapper.build().pageVO(pages);
pagesVO.getRecords()
.stream()
.peek(taskService::setVOCopyValue)
.collect(Collectors.toList());
// key 自带排序
// key: [作业槽]id
// value: 任务数据列表
Map<Long, List<LiquidTankTaskVO>> treeMap = new TreeMap<>();
// 遍历赋值到treeMap中
pagesVO.getRecords().forEach(vo -> {
final Long wtId = vo.getWorkTankId();
// 不包含,新建
if (!treeMap.containsKey(wtId)) {
List<LiquidTankTaskVO> list = new ArrayList<>();
treeMap.put(wtId, list);
}
treeMap.get(wtId).add(vo);
});
// 前端要求匹配对象
LiquidTankWaveDrawVO allVO = new LiquidTankWaveDrawVO();
List<LiquidTankWaveDrawSingleVO> allChart = allVO.getWaveData();
// 每个entry一个图表
for (Map.Entry<Long, List<LiquidTankTaskVO>> entry : treeMap.entrySet()) {
Long wtId = entry.getKey();
// 数据列表
List<LiquidTankTaskVO> list = entry.getValue();
LiquidTankWaveDrawSingleVO singleChart = new LiquidTankWaveDrawSingleVO();
for (LiquidTankTaskVO one : list) {
singleChart.setWcId(one.getWorkCenterId());
singleChart.setWcName(one.getWcName());
singleChart.setWorkTankId(one.getWorkTankId());
singleChart.setWorkTankName(one.getWorkTankName());
singleChart.setLiquidTankId(one.getLiquidTankId());
singleChart.setTestElement(one.getTestElement());
singleChart.getMaxList().add(one.getTargetValueMax());
singleChart.getMinList().add(one.getTargetValueMin());
singleChart.getTargetList().add(one.getTargetValue());
singleChart.getTestList().add(one.getRepeatTestValue());
LocalDate localDate = one.getRepeatFillDate().toLocalDate();
singleChart.getTestDateList().add(localDate);
// singleChart.getTestDateList().add(one.getRepeatFillDate());
singleChart.setId(one.getId());
}
allChart.add(singleChart);
}
return R.data(allVO);
}
// @GetMapping("/listWave")
// @ApiOperationSupport(order = 20)
// @Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj")
// public R listWave(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
// Query query) {
// map.forEach((key, value) -> {
// log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
// }
// );
// map.forEach((key, value) -> {
// log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
// }
// );
// QueryWrapper<LiquidTankTask> qw = Condition.getQueryWrapper(map, LiquidTankTask.class);
// // 正常结束的,异常结束的
// qw.in(BaseCol.STATUS, asList(LiquidTankTaskConst.S_FINISH_FAILED, LiquidTankTaskConst.S_FINISH_OK));
// // [作业中心]id
// qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId")));
// // [作业槽]id
//// qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_TANK_ID), LiquidTankTaskCopy.COL_WORK_TANK_ID, Func.toLong(map.get("workTankId")));
// // 待测成分/分析项目
//// qw.like(map.containsKey(LiquidTankTaskCopy.COL_TEST_ELEMENT), LiquidTankTaskCopy.COL_TEST_ELEMENT, Func.toStr(map.get("testElement")));
// // 范围日期
// if (map.containsKey(BaseRequest.CREATE_TIME_START) && map.containsKey(BaseRequest.CREATE_TIME_END)) {
// Date crStart = RequestUtil.buildDateBeginOfDay(map, BaseRequest.CREATE_TIME_START);
// Date crEnd = RequestUtil.buildDateEndOfDay(map, BaseRequest.CREATE_TIME_END);
// qw.between(BaseCol.CREATE_TIME, crStart, crEnd);
// }
// // ID 升序
// qw.orderByAsc(BaseCol.ID);
// //
// IPage<LiquidTankTask> pages = taskService.page(Condition.getPage(query), qw);
// IPage<LiquidTankTaskVO> pagesVO = LiquidTankTaskWrapper.build().pageVO(pages);
//
// pagesVO.getRecords()
// .stream()
// .peek(taskService::setVOCopyValue)
// .collect(Collectors.toList());
// // key 自带排序
// // key: [作业槽]id
// // value: 任务数据列表
// Map<Long, List<LiquidTankTaskVO>> treeMap = new TreeMap<>();
// // 遍历赋值到treeMap中
// pagesVO.getRecords().forEach(vo -> {
// final Long wtId = vo.getWorkTankId();
// // 不包含,新建
// if (!treeMap.containsKey(wtId)) {
// List<LiquidTankTaskVO> list = new ArrayList<>();
// treeMap.put(wtId, list);
// }
// treeMap.get(wtId).add(vo);
// });
// // 前端要求匹配对象
// LiquidTankWaveDrawVO allVO = new LiquidTankWaveDrawVO();
// List<LiquidTankWaveDrawSingleVO> allChart = allVO.getWaveData();
// // 每个entry一个图表
// for (Map.Entry<Long, List<LiquidTankTaskVO>> entry : treeMap.entrySet()) {
// Long wtId = entry.getKey();
// // 数据列表
// List<LiquidTankTaskVO> list = entry.getValue();
// LiquidTankWaveDrawSingleVO singleChart = new LiquidTankWaveDrawSingleVO();
// for (LiquidTankTaskVO one : list) {
// singleChart.setWcId(one.getWorkCenterId());
// singleChart.setWcName(one.getWcName());
// singleChart.setWorkTankId(one.getWorkTankId());
// singleChart.setWorkTankName(one.getWorkTankName());
// singleChart.setLiquidTankId(one.getLiquidTankId());
// singleChart.setTestElement(one.getTestElement());
// singleChart.getMaxList().add(one.getTargetValueMax());
// singleChart.getMinList().add(one.getTargetValueMin());
// singleChart.getTargetList().add(one.getTargetValue());
// singleChart.getTestList().add(one.getRepeatTestValue());
// LocalDate localDate = one.getRepeatFillDate().toLocalDate();
// singleChart.getTestDateList().add(localDate);
//// singleChart.getTestDateList().add(one.getRepeatFillDate());
// singleChart.setId(one.getId());
// }
// allChart.add(singleChart);
// }
// return R.data(allVO);
// }
/**
* [槽液检测任务复制] page分页

@ -127,7 +127,10 @@ public class LiquidTankTaskSetVoService {
);
vo.setLiquidTank(lt);
// 取样时间:当天时间
vo.setSampleDate(LocalDate.now());
if(vo.getSampleDate()== null){
vo.setSampleDate(LocalDate.now());
}
// vo.setSampleDate(LocalDate.now());
// 有效期
// Date validDateT = DateUtil.offsetDay(vo.getCreateTime(), vo.getAnalysisCycle());
// vo.setValidDate(LocalDateTimeUtil.of(validDateT).toLocalDate());

Loading…
Cancel
Save