槽液曲线生成数据

liweidong
pangyang 2 months 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; private String drugAddUserSign;
@Schema(description = "控制规范(报告)") @Schema(description = "控制规范(报告)")
private String norm; private String norm;
} }

@ -221,6 +221,127 @@ public class LiquidTankTaskCopyController extends BladeController {
/** /**
* [槽液曲线] 查询Copy任务 list分页 * [槽液曲线] 查询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") // @GetMapping("/listWave")
// @ApiOperationSupport(order = 20) // @ApiOperationSupport(order = 20)
// @Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj") // @Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj")
@ -232,7 +353,7 @@ public class LiquidTankTaskCopyController extends BladeController {
// ); // );
// QueryWrapper<LiquidTankTaskCopy> qw = Condition.getQueryWrapper(map, LiquidTankTaskCopy.class); // 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 // // [作业中心]id
// qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId"))); // 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, // BaseCol.ID,
// LiquidTankTaskCopy.COL_REPEAT_TEST_DATE // LiquidTankTaskCopy.COL_REPEAT_TEST_DATE
// )); // ));
//
//
// IPage<LiquidTankTaskCopy> pages = service.page(Condition.getPage(query), qw); // IPage<LiquidTankTaskCopy> pages = service.page(Condition.getPage(query), qw);
// IPage<LiquidTankTaskCopyVO> pagesVO = LiquidTankTaskCopyWrapper.build().pageVO(pages); // IPage<LiquidTankTaskCopyVO> pagesVO = LiquidTankTaskCopyWrapper.build().pageVO(pages);
// pagesVO.getRecords() // pagesVO.getRecords()
@ -287,7 +410,7 @@ public class LiquidTankTaskCopyController extends BladeController {
// singleChart.getMinList().add(one.getTargetValueMin()); // singleChart.getMinList().add(one.getTargetValueMin());
// singleChart.getTargetList().add(one.getTargetValue()); // singleChart.getTargetList().add(one.getTargetValue());
// singleChart.getTestList().add(one.getRepeatTestValue()); // singleChart.getTestList().add(one.getRepeatTestValue());
// singleChart.getTestDateList().add(one.getRepeatTestDate()); // singleChart.getTestDateList().add(one.getSampleDate());
// singleChart.setId(one.getId()); // singleChart.setId(one.getId());
// } // }
// allChart.add(singleChart); // allChart.add(singleChart);
@ -296,87 +419,87 @@ public class LiquidTankTaskCopyController extends BladeController {
// } // }
@GetMapping("/listWave") // @GetMapping("/listWave")
@ApiOperationSupport(order = 20) // @ApiOperationSupport(order = 20)
@Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj") // @Operation(summary = "[槽液曲线] 查询任务 list分页", description = "传入LiquidTankTaskCopy Obj")
public R listWave(@Parameter(hidden = true) @RequestParam Map<String, Object> map, // public R listWave(@Parameter(hidden = true) @RequestParam Map<String, Object> map,
Query query) { // Query query) {
map.forEach((key, value) -> { // map.forEach((key, value) -> {
log.warn("key = {}, value = {}, type = {}", key, value, value.getClass()); // log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
} // }
); // );
map.forEach((key, value) -> { // map.forEach((key, value) -> {
log.warn("key = {}, value = {}, type = {}", key, value, value.getClass()); // log.warn("key = {}, value = {}, type = {}", key, value, value.getClass());
} // }
); // );
QueryWrapper<LiquidTankTask> qw = Condition.getQueryWrapper(map, LiquidTankTask.class); // QueryWrapper<LiquidTankTask> qw = Condition.getQueryWrapper(map, LiquidTankTask.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 // // [作业中心]id
qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId"))); // qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_CENTER_ID), LiquidTankTaskCopy.COL_WORK_CENTER_ID, Func.toLong(map.get("workCenterId")));
// [作业槽]id // // [作业槽]id
// qw.eq(map.containsKey(LiquidTankTaskCopy.COL_WORK_TANK_ID), LiquidTankTaskCopy.COL_WORK_TANK_ID, Func.toLong(map.get("workTankId"))); //// 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"))); //// 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)) { // if (map.containsKey(BaseRequest.CREATE_TIME_START) && map.containsKey(BaseRequest.CREATE_TIME_END)) {
Date crStart = RequestUtil.buildDateBeginOfDay(map, BaseRequest.CREATE_TIME_START); // Date crStart = RequestUtil.buildDateBeginOfDay(map, BaseRequest.CREATE_TIME_START);
Date crEnd = RequestUtil.buildDateEndOfDay(map, BaseRequest.CREATE_TIME_END); // Date crEnd = RequestUtil.buildDateEndOfDay(map, BaseRequest.CREATE_TIME_END);
qw.between(BaseCol.CREATE_TIME, crStart, crEnd); // qw.between(BaseCol.CREATE_TIME, crStart, crEnd);
} // }
// ID 升序 // // ID 升序
qw.orderByAsc(BaseCol.ID); // qw.orderByAsc(BaseCol.ID);
// // //
IPage<LiquidTankTask> pages = taskService.page(Condition.getPage(query), qw); // IPage<LiquidTankTask> pages = taskService.page(Condition.getPage(query), qw);
IPage<LiquidTankTaskVO> pagesVO = LiquidTankTaskWrapper.build().pageVO(pages); // IPage<LiquidTankTaskVO> pagesVO = LiquidTankTaskWrapper.build().pageVO(pages);
//
pagesVO.getRecords() // pagesVO.getRecords()
.stream() // .stream()
.peek(taskService::setVOCopyValue) // .peek(taskService::setVOCopyValue)
.collect(Collectors.toList()); // .collect(Collectors.toList());
// key 自带排序 // // key 自带排序
// key: [作业槽]id // // key: [作业槽]id
// value: 任务数据列表 // // value: 任务数据列表
Map<Long, List<LiquidTankTaskVO>> treeMap = new TreeMap<>(); // Map<Long, List<LiquidTankTaskVO>> treeMap = new TreeMap<>();
// 遍历赋值到treeMap中 // // 遍历赋值到treeMap中
pagesVO.getRecords().forEach(vo -> { // pagesVO.getRecords().forEach(vo -> {
final Long wtId = vo.getWorkTankId(); // final Long wtId = vo.getWorkTankId();
// 不包含,新建 // // 不包含,新建
if (!treeMap.containsKey(wtId)) { // if (!treeMap.containsKey(wtId)) {
List<LiquidTankTaskVO> list = new ArrayList<>(); // List<LiquidTankTaskVO> list = new ArrayList<>();
treeMap.put(wtId, list); // treeMap.put(wtId, list);
} // }
treeMap.get(wtId).add(vo); // treeMap.get(wtId).add(vo);
}); // });
// 前端要求匹配对象 // // 前端要求匹配对象
LiquidTankWaveDrawVO allVO = new LiquidTankWaveDrawVO(); // LiquidTankWaveDrawVO allVO = new LiquidTankWaveDrawVO();
List<LiquidTankWaveDrawSingleVO> allChart = allVO.getWaveData(); // List<LiquidTankWaveDrawSingleVO> allChart = allVO.getWaveData();
// 每个entry一个图表 // // 每个entry一个图表
for (Map.Entry<Long, List<LiquidTankTaskVO>> entry : treeMap.entrySet()) { // for (Map.Entry<Long, List<LiquidTankTaskVO>> entry : treeMap.entrySet()) {
Long wtId = entry.getKey(); // Long wtId = entry.getKey();
// 数据列表 // // 数据列表
List<LiquidTankTaskVO> list = entry.getValue(); // List<LiquidTankTaskVO> list = entry.getValue();
LiquidTankWaveDrawSingleVO singleChart = new LiquidTankWaveDrawSingleVO(); // LiquidTankWaveDrawSingleVO singleChart = new LiquidTankWaveDrawSingleVO();
for (LiquidTankTaskVO one : list) { // for (LiquidTankTaskVO one : list) {
singleChart.setWcId(one.getWorkCenterId()); // singleChart.setWcId(one.getWorkCenterId());
singleChart.setWcName(one.getWcName()); // singleChart.setWcName(one.getWcName());
singleChart.setWorkTankId(one.getWorkTankId()); // singleChart.setWorkTankId(one.getWorkTankId());
singleChart.setWorkTankName(one.getWorkTankName()); // singleChart.setWorkTankName(one.getWorkTankName());
singleChart.setLiquidTankId(one.getLiquidTankId()); // singleChart.setLiquidTankId(one.getLiquidTankId());
singleChart.setTestElement(one.getTestElement()); // singleChart.setTestElement(one.getTestElement());
singleChart.getMaxList().add(one.getTargetValueMax()); // singleChart.getMaxList().add(one.getTargetValueMax());
singleChart.getMinList().add(one.getTargetValueMin()); // singleChart.getMinList().add(one.getTargetValueMin());
singleChart.getTargetList().add(one.getTargetValue()); // singleChart.getTargetList().add(one.getTargetValue());
singleChart.getTestList().add(one.getRepeatTestValue()); // singleChart.getTestList().add(one.getRepeatTestValue());
LocalDate localDate = one.getRepeatFillDate().toLocalDate(); // LocalDate localDate = one.getRepeatFillDate().toLocalDate();
singleChart.getTestDateList().add(localDate); // singleChart.getTestDateList().add(localDate);
// singleChart.getTestDateList().add(one.getRepeatFillDate()); //// singleChart.getTestDateList().add(one.getRepeatFillDate());
singleChart.setId(one.getId()); // singleChart.setId(one.getId());
} // }
allChart.add(singleChart); // allChart.add(singleChart);
} // }
return R.data(allVO); // return R.data(allVO);
} // }
/** /**
* [槽液检测任务复制] page分页 * [槽液检测任务复制] page分页

@ -127,7 +127,10 @@ public class LiquidTankTaskSetVoService {
); );
vo.setLiquidTank(lt); 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()); // Date validDateT = DateUtil.offsetDay(vo.getCreateTime(), vo.getAnalysisCycle());
// vo.setValidDate(LocalDateTimeUtil.of(validDateT).toLocalDate()); // vo.setValidDate(LocalDateTimeUtil.of(validDateT).toLocalDate());

Loading…
Cancel
Save