兰所单板实验流程逻辑和原始记录逻辑修改

dev
litao 2 years ago
parent 4257ac2f49
commit 1d9dc9cfcc
  1. 39
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java
  2. 132
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java

@ -1688,11 +1688,13 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return o1.getOrder() - o2.getOrder();
}
});
int group = list.size() / 96;
for (int i = 0; i < group; i++) {
List<Double> doubles = new ArrayList<>();
double a1 = Double.parseDouble(list.get(95).getValue());
double a2 = Double.parseDouble(list.get(94).getValue());
double a3 = Double.parseDouble(list.get(93).getValue());
double a4 = Double.parseDouble(list.get(92).getValue());
double a1 = Double.parseDouble(list.get((i * 96) + 95).getValue());
double a2 = Double.parseDouble(list.get((i * 96) + 94).getValue());
double a3 = Double.parseDouble(list.get((i * 96) + 93).getValue());
double a4 = Double.parseDouble(list.get((i * 96) + 92).getValue());
doubles.add(a1);
doubles.add(a2);
doubles.add(a3);
@ -1704,7 +1706,34 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
examineDataArrVO.setLog2(format2);
examineDataArrVO.setResult("");
list1.add(examineDataArrVO);
list1.addAll(voList);
int finalI = i;
list1.addAll(voList.stream().filter(vo -> vo.getOrder() > finalI * 96 && vo.getOrder() <= (finalI + 1) * 96).collect(Collectors.toList()));
// 阳性对照值
double avg = Double.parseDouble(format2);
ExamineDataArrVO yang = new ExamineDataArrVO();
yang.setNum("阳性对照");
yang.setResult("成立");
if (avg == 1.0 / 512) {
yang.setLog2("1:512");
} else if (avg < 1.0 / 512 && avg > 1.0 / 1024) {
yang.setLog2("1:720");
} else if (avg == 1.0 / 1024) {
yang.setLog2("1:1024");
} else if (avg < 1.0 / 1024 && avg > 1.0 / 2048) {
yang.setLog2("1:1440");
} else if (avg == 1.0 / 2048) {
yang.setLog2("1:2048");
}
list1.add(yang);
// 阴性对照值
ExamineDataArrVO yin = new ExamineDataArrVO();
yin.setNum("阴性对照");
yin.setLog2("<1:8");
yin.setResult("成立");
list1.add(yin);
}
if (list1.size() > 0) {
Map<String, List<ExamineDataArrVO>> resultMap = new HashMap<>();

@ -809,74 +809,132 @@ public class ExamineResultServiceImpl extends BaseServiceImpl<ExamineResultMappe
examineService.updateById(examine);
// 兰所单板----------------------------------------------------------------------------------------------------
if ("1".equals(split[1])) {
Map<String, List<ExamineExcel>> groupMap = new HashMap<>();
// 组数
int group = 0;
// 除9是否有余数
int size = (originRowDatas.size() + 1) % 9;
if (size == 0) {
group = (originRowDatas.size() + 1) / 9;
} else {
group = (originRowDatas.size() + 1) / 9 + 1;
}
for (int i = 0; i < group; i++) {
List<ExamineExcel> excels = new ArrayList<>();
for (int j = i * 8 + i; j < (i + 1) * 8 + i; j++) {
ExamineExcel excel = originRowDatas.get(j);
excels.add(excel);
}
groupMap.put((i + 1) + "", excels);
}
String simpleName1 = examine.getSimpleName().split("-")[0];
String[] experieNum = examine.getExperieNum().split(",");
// 结果resultList
List<Map<String, Object>> resultList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("#0.000");
for (int i = 0; i < group; i++) {
List<ExamineExcel> excels = groupMap.get(i + 1 + "");
// 获取4个抗原对照值
List<Double> list = new ArrayList<>();
list.add(Double.parseDouble(originRowDatas.get(4).getCode12()));
list.add(Double.parseDouble(originRowDatas.get(5).getCode12()));
list.add(Double.parseDouble(originRowDatas.get(6).getCode12()));
list.add(Double.parseDouble(originRowDatas.get(7).getCode12()));
list.add(Double.parseDouble(excels.get(4).getCode12()));
list.add(Double.parseDouble(excels.get(5).getCode12()));
list.add(Double.parseDouble(excels.get(6).getCode12()));
list.add(Double.parseDouble(excels.get(7).getCode12()));
List<Double> list1 = list.stream().sorted().collect(Collectors.toList());
DecimalFormat df = new DecimalFormat("#0.000");
// 对照平均值
Double avg = Double.valueOf(df.format((list1.get(1) + list1.get(2)) / 4));
// 对照平均值(临界值)
Double avg = Double.parseDouble(df.format((list1.get(1) + list1.get(2)) / 4));
// 成立条件判断
if (avg > 1.0 / 512 || avg < 1.0 / 2048) {
throw new ServiceException("阳性对照条件不成立,请修改后重新上传!");
}
// Map<String, Object> map = new HashMap<>();
// map.put("num", "临界值");
// map.put("log2", avg);
// map.put("result", " ");
// resultList.add(map);
// 结果resultList
List<Map<String, Object>> resultList = new ArrayList<>();
for (int r = 0; r < 8; r++) {
if (r > 0) {
// 第1列
resultList.add(assumb(r, 1, originRowDatas.get(r).getCode1(), originRowDatas.get(r - 1).getCode1(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 1, excels.get(r).getCode1(), excels.get(r - 1).getCode1(), avg, simpleName1, experieNum, i));
// 第2列
resultList.add(assumb(r, 2, originRowDatas.get(r).getCode2(), originRowDatas.get(r - 1).getCode2(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 2, excels.get(r).getCode2(), excels.get(r - 1).getCode2(), avg, simpleName1, experieNum, i));
// 第3列
resultList.add(assumb(r, 3, originRowDatas.get(r).getCode3(), originRowDatas.get(r - 1).getCode3(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 3, excels.get(r).getCode3(), excels.get(r - 1).getCode3(), avg, simpleName1, experieNum, i));
// 第4列
resultList.add(assumb(r, 4, originRowDatas.get(r).getCode4(), originRowDatas.get(r - 1).getCode4(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 4, excels.get(r).getCode4(), excels.get(r - 1).getCode4(), avg, simpleName1, experieNum, i));
// 第5列
resultList.add(assumb(r, 5, originRowDatas.get(r).getCode5(), originRowDatas.get(r - 1).getCode5(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 5, excels.get(r).getCode5(), excels.get(r - 1).getCode5(), avg, simpleName1, experieNum, i));
// 第6列
resultList.add(assumb(r, 6, originRowDatas.get(r).getCode6(), originRowDatas.get(r - 1).getCode6(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 6, excels.get(r).getCode6(), excels.get(r - 1).getCode6(), avg, simpleName1, experieNum, i));
// 第7列
resultList.add(assumb(r, 7, originRowDatas.get(r).getCode7(), originRowDatas.get(r - 1).getCode7(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 7, excels.get(r).getCode7(), excels.get(r - 1).getCode7(), avg, simpleName1, experieNum, i));
// 第8列
resultList.add(assumb(r, 8, originRowDatas.get(r).getCode8(), originRowDatas.get(r - 1).getCode8(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 8, excels.get(r).getCode8(), excels.get(r - 1).getCode8(), avg, simpleName1, experieNum, i));
// 第9列
resultList.add(assumb(r, 9, originRowDatas.get(r).getCode9(), originRowDatas.get(r - 1).getCode9(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 9, excels.get(r).getCode9(), excels.get(r - 1).getCode9(), avg, simpleName1, experieNum, i));
// 第10列
resultList.add(assumb(r, 10, originRowDatas.get(r).getCode10(), originRowDatas.get(r - 1).getCode10(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 10, excels.get(r).getCode10(), excels.get(r - 1).getCode10(), avg, simpleName1, experieNum, i));
// 第11列
resultList.add(assumb(r, 11, originRowDatas.get(r).getCode11(), originRowDatas.get(r - 1).getCode11(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 11, excels.get(r).getCode11(), excels.get(r - 1).getCode11(), avg, simpleName1, experieNum, i));
// 第12列
resultList.add(assumb(r, 12, originRowDatas.get(r).getCode12(), originRowDatas.get(r - 1).getCode12(), avg, simpleName1, experieNum));
resultList.add(assumb(r, 12, excels.get(r).getCode12(), excels.get(r - 1).getCode12(), avg, simpleName1, experieNum, i));
} else {
// 第1列
resultList.add(assumb(r, 1, originRowDatas.get(r).getCode1(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 1, excels.get(r).getCode1(), null, avg, simpleName1, experieNum, i));
// 第2列
resultList.add(assumb(r, 2, originRowDatas.get(r).getCode2(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 2, excels.get(r).getCode2(), null, avg, simpleName1, experieNum, i));
// 第3列
resultList.add(assumb(r, 3, originRowDatas.get(r).getCode3(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 3, excels.get(r).getCode3(), null, avg, simpleName1, experieNum, i));
// 第4列
resultList.add(assumb(r, 4, originRowDatas.get(r).getCode4(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 4, excels.get(r).getCode4(), null, avg, simpleName1, experieNum, i));
// 第5列
resultList.add(assumb(r, 5, originRowDatas.get(r).getCode5(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 5, excels.get(r).getCode5(), null, avg, simpleName1, experieNum, i));
// 第6列
resultList.add(assumb(r, 6, originRowDatas.get(r).getCode6(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 6, excels.get(r).getCode6(), null, avg, simpleName1, experieNum, i));
// 第7列
resultList.add(assumb(r, 7, originRowDatas.get(r).getCode7(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 7, excels.get(r).getCode7(), null, avg, simpleName1, experieNum, i));
// 第8列
resultList.add(assumb(r, 8, originRowDatas.get(r).getCode8(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 8, excels.get(r).getCode8(), null, avg, simpleName1, experieNum, i));
// 第9列
resultList.add(assumb(r, 9, originRowDatas.get(r).getCode9(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 9, excels.get(r).getCode9(), null, avg, simpleName1, experieNum, i));
// 第10列
resultList.add(assumb(r, 10, originRowDatas.get(r).getCode10(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 10, excels.get(r).getCode10(), null, avg, simpleName1, experieNum, i));
// 第11列
resultList.add(assumb(r, 11, originRowDatas.get(r).getCode11(), null, avg, simpleName1, experieNum));
resultList.add(assumb(r, 11, excels.get(r).getCode11(), null, avg, simpleName1, experieNum, i));
// 第12列
resultList.add(assumb(r, 12, originRowDatas.get(r).getCode12(), null, avg, simpleName1, experieNum));
}
resultList.add(assumb(r, 12, excels.get(r).getCode12(), null, avg, simpleName1, experieNum, i));
}
}
// // 阳性对照值
// Map<String, Object> yangMap = new HashMap<>();
// yangMap.put("num", "阳性对照");
// if (avg == 1.0 / 512) {
// yangMap.put("log2", "1:512");
// } else if (avg < 1.0 / 512 && avg > 1.0 / 1024) {
// yangMap.put("log2", "1:720");
// } else if (avg == 1.0 / 1024) {
// yangMap.put("log2", "1:1024");
// } else if (avg < 1.0 / 1024 && avg > 1.0 / 2048) {
// yangMap.put("log2", "1:1440");
// } else if (avg == 1.0 / 2048) {
// yangMap.put("log2", "1:2048");
// }
// yangMap.put("result", "成立");
// resultList.add(yangMap);
// // 阴性对照值
// Map<String, Object> yinMap = new HashMap<>();
// yinMap.put("num", "阴性对照");
// yinMap.put("log2", "<1:8");
// yinMap.put("result", "成立");
// resultList.add(yinMap);
}
List<Map<String, Object>> mapList = new ArrayList<>();
@ -5282,11 +5340,11 @@ public class ExamineResultServiceImpl extends BaseServiceImpl<ExamineResultMappe
/**
* 组装每一个实验数据及结果map
*/
private Map<String, Object> assumb(int row, int col, String value, String lastValue, Double avg, String simpleName1, String[] experieNums) {
private Map<String, Object> assumb(int row, int col, String value, String lastValue, Double avg, String simpleName1, String[] experieNums, int group) {
// row:行: 0-7
// col:列: 1-12
// 计算排序
int order = (row + 1) + (col - 1) * 8;
int order = (group * 96) + (row + 1) + (col - 1) * 8;
// 如果是前十列
if (col < 11) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(value)) {
@ -5318,7 +5376,7 @@ public class ExamineResultServiceImpl extends BaseServiceImpl<ExamineResultMappe
map.put("value", value);
map.put("log2", log);
map.put("result", result);
map.put("num", experieNums[col - 1]);
map.put("num", experieNums[(group * 10) + col - 1]);
return map;
} else {
Map<String, Object> map = new HashMap<>();

Loading…
Cancel
Save