|
|
@@ -82,7 +82,20 @@ public class InfusionDoseStatsAnalyse implements CommonHistoryStats {
|
|
|
|
|
|
private LineResult appendDoseLine(Map<String, List<CombineHistoryResult>> groupByTime) {
|
|
|
LineResult<BigDecimal> result = LineResult.of("appendDoseLine",false,false,"追加量分析走势图");
|
|
|
- handleMixPolyLines(groupByTime,result,
|
|
|
+
|
|
|
+ //阶梯状计算每个输注在特定区间内的已输注量
|
|
|
+ Map<String, List<CombineHistoryResult>> ladderResult = new HashMap<>();
|
|
|
+ //记录每个输注在最后区间范围内计算的结果, 当前区间的已输注量-前一时间区间的Pca数量=当前时间区间pca数量
|
|
|
+ Map<String, BigDecimal> inputDoseByInfusion = new HashMap<>();
|
|
|
+ groupByTime.forEach((timeRange,combineResults)->{
|
|
|
+ for (CombineHistoryResult combineResult : combineResults) {
|
|
|
+ BigDecimal inputDose = Optional.ofNullable(combineResult.getTotalAppendDose()).orElse(BigDecimal.ZERO);
|
|
|
+ BigDecimal lastInputDose = Optional.ofNullable(inputDoseByInfusion.get(combineResult.getId())).orElse(BigDecimal.ZERO);
|
|
|
+ combineResult.setTotalAppendDose(inputDose.subtract(lastInputDose));
|
|
|
+ inputDoseByInfusion.put(combineResult.getId(),lastInputDose);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ handleMixPolyLines(ladderResult,result,
|
|
|
combineResult -> {
|
|
|
if (combineResult.getTotalAppendDose() == null) {
|
|
|
combineResult.setTotalAppendDose(BigDecimal.valueOf(0));
|
|
|
@@ -102,7 +115,20 @@ public class InfusionDoseStatsAnalyse implements CommonHistoryStats {
|
|
|
*/
|
|
|
private LineResult inputDoseLine(Map<String, List<CombineHistoryResult>> groupByTime) {
|
|
|
LineResult<BigDecimal> result = LineResult.of("inputDoseLine",false,false,"已输入量分析走势图");
|
|
|
- handleMixPolyLines(groupByTime,result,
|
|
|
+ //阶梯状计算每个输注在特定区间内的已输注量
|
|
|
+ Map<String, List<CombineHistoryResult>> ladderResult = new HashMap<>();
|
|
|
+ //记录每个输注在最后区间范围内计算的结果, 当前区间的已输注量-前一时间区间的Pca数量=当前时间区间pca数量
|
|
|
+ Map<String, BigDecimal> inputDoseByInfusion = new HashMap<>();
|
|
|
+ groupByTime.forEach((timeRange,combineResults)->{
|
|
|
+ for (CombineHistoryResult combineResult : combineResults) {
|
|
|
+ BigDecimal inputDose = Optional.ofNullable(combineResult.getInputDose()).orElse(BigDecimal.ZERO);
|
|
|
+ BigDecimal lastInputDose = Optional.ofNullable(inputDoseByInfusion.get(combineResult.getId())).orElse(BigDecimal.ZERO);
|
|
|
+ combineResult.setInputDose(inputDose.subtract(lastInputDose));
|
|
|
+ inputDoseByInfusion.put(combineResult.getId(),lastInputDose);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ handleMixPolyLines(ladderResult,result,
|
|
|
combineResult -> {
|
|
|
if (combineResult.getInputDose() == null) {
|
|
|
combineResult.setInputDose(BigDecimal.valueOf(0));
|