|
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ruoyi.common.constant.Constants.INT_2;
|
|
@@ -119,9 +120,10 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
@Override
|
|
|
public Map<String, Map<String, List<ContinuousAssayResultRes>>> continuousAssayCountByDates(AssayReq assayReq) {
|
|
|
//返回的最终对象
|
|
|
- Map<String, Map<String, List<ContinuousAssayResultRes>>> resultMap = new HashMap<>();
|
|
|
+ Map<String, Map<String, List<ContinuousAssayResultRes>>> resultMap = new LinkedHashMap<>();
|
|
|
//通过筛选条件获取最基本的数据列表
|
|
|
List<ContinuousAssayBasic> list = this.zAssayResultMapper.continuousAssayCountByDates(assayReq);
|
|
|
+ AtomicInteger totalCount = new AtomicInteger();//合计次数
|
|
|
if(!CollectionUtils.isEmpty(list)){
|
|
|
//有数据 再分组,再分别统计信息
|
|
|
Map<String, List<ContinuousAssayBasic>> itemNameMap = list.stream().collect(Collectors.groupingBy(ContinuousAssayBasic::getItemName));
|
|
@@ -135,8 +137,7 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
ContinuousAssayResultRes continuousAssayResultRes = new ContinuousAssayResultRes();
|
|
|
//处理统计信息
|
|
|
int assayCounts = assayBasicList.size();//实际检测数量
|
|
|
- Double minVal = assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).min(Double::compareTo).get();
|
|
|
- Double maxVal = assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).max(Double::compareTo).get();
|
|
|
+ totalCount.addAndGet(assayCounts);
|
|
|
//调用通用的获取合格数量的方法
|
|
|
List<ZAssayResult> zAssayResults = new ArrayList<>();
|
|
|
for (ContinuousAssayBasic continuousAssayBasic : assayBasicList) {
|
|
@@ -150,14 +151,22 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
//封装到对象
|
|
|
continuousAssayResultRes.setAssayName(assayName);
|
|
|
continuousAssayResultRes.setAssayCounts(assayCounts);
|
|
|
- continuousAssayResultRes.setMinVal(minVal);
|
|
|
- continuousAssayResultRes.setMaxVal(maxVal);
|
|
|
+ continuousAssayResultRes.setMinVal(assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).min(Double::compareTo).get());
|
|
|
+ continuousAssayResultRes.setMaxVal(assayBasicList.stream().map(ContinuousAssayBasic::getResultConcentration).max(Double::compareTo).get());
|
|
|
continuousAssayResultRes.setPassedRates(NumberUtils.getDoublePercentAndNLength(INT_4, ((double) passedCounts/(double)assayCounts), INT_2));
|
|
|
innerList.add(continuousAssayResultRes);
|
|
|
innerMap.put(assayName, innerList);
|
|
|
});
|
|
|
resultMap.put(k, innerMap);
|
|
|
});
|
|
|
+ //2024年10月10日10:10:10 把 合计的结果也返回
|
|
|
+ HashMap<String, List<ContinuousAssayResultRes>> extraMap = new HashMap<>();
|
|
|
+ List<ContinuousAssayResultRes> extraList = new ArrayList<>();
|
|
|
+ ContinuousAssayResultRes continuousAssayResultRes = new ContinuousAssayResultRes();
|
|
|
+ continuousAssayResultRes.setAssayCounts(totalCount.get());
|
|
|
+ extraList.add(continuousAssayResultRes);
|
|
|
+ extraMap.put("合计", extraList);
|
|
|
+ resultMap.put("total", extraMap);
|
|
|
}
|
|
|
return resultMap;
|
|
|
}
|