1.打印原始记录仪器设备排序

2.样品原始编号修改
3.
pull/1/head
litao 4 years ago
parent fccf211c4c
commit a4cb43f1d0
  1. 5
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Simple.java
  2. 403
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java
  3. 10
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/SimpleController.java
  4. 80
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java

@ -1,5 +1,6 @@
package org.springblade.lims.entry;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.models.auth.In;
@ -10,6 +11,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author swj
@ -78,5 +80,8 @@ public class Simple extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
// 样品集合
@TableField(exist = false)
private List<Simple> simples;
}

@ -593,7 +593,7 @@ public class ExamineResultController extends BladeController {
map1.put("g" + (i + 1), mapList);
}
}
// 非洲猪瘟病毒抗体检测试剂盒
// 非洲猪瘟病毒ELISA抗体检测试剂盒(哈尔滨维科生物技术有限公司)
else if ("1580730163250188290".equals(reagentId)) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
@ -673,7 +673,7 @@ public class ExamineResultController extends BladeController {
} else if (Double.parseDouble(SP) < 0.1) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "疑");
mapResult.put("result", "疑");
}
} else {
mapResult.put("originResult", code);
@ -757,11 +757,11 @@ public class ExamineResultController extends BladeController {
int index = (n - 1) * 8 + j + 1; //n是列,j是行 ,我们定义index是一列列的定义
if (StringUtil.isNoneBlank(code)) {
if (j > 5 || n > 1) {
String SP = df.format(100 - Double.parseDouble(code) / v1 * 100);
String PB = df.format(100 - Double.parseDouble(code) / v1 * 100);
mapResult.put("originResult", code);
mapResult.put("value", SP);
mapResult.put("value", PB);
mapResult.put("num", "1");
if (Double.parseDouble(SP) > 50) {
if (Double.parseDouble(PB) > 50) {
mapResult.put("result", "阳性");
} else {
mapResult.put("result", "阴性");
@ -801,7 +801,7 @@ public class ExamineResultController extends BladeController {
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
String PI = "0.00";
for (int n = 1; n <= filedsLength; n++) {
String code;
switch (n) {
@ -850,15 +850,304 @@ public class ExamineResultController extends BladeController {
if (StringUtil.isNoneBlank(code)) {
if (j > 5 || n > 1) {
if (v1 != 0) {
SP = df.format((v1 - Double.parseDouble(code)) / v1);
PI = df.format((v1 - Double.parseDouble(code)) / v1);
}
mapResult.put("originResult", code);
mapResult.put("value", PI);
mapResult.put("num", "1");
if (Double.parseDouble(PI) >= 0.5) {
mapResult.put("result", "阳性");
} else {
mapResult.put("result", "阴性");
}
} else {
mapResult.put("originResult", code);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + n, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
// 非洲猪瘟病毒ELISA抗体检测试剂盒(北京金诺百泰生物技术有限公司)
else if ("1570667729797705730".equals(reagentId)) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = map.get(i + 1 + "");
double code1 = Double.parseDouble(excels.get(0).getCode1());
double code2 = Double.parseDouble(excels.get(1).getCode1());
double code3 = Double.parseDouble(excels.get(2).getCode1());
double code4 = Double.parseDouble(excels.get(3).getCode1());
double v1 = (code1 + code2) / 2;
double v2 = (code3 + code4) / 2;
DecimalFormat df = new DecimalFormat("#0.000");
for (int j = 0; j < excels.size(); j++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (j + 65));
ExamineExcel examineExcel = excels.get(j);//取到一行记录
int filedsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int n = 1; n <= filedsLength; n++) {
String code;
switch (n) {
case 1:
code = examineExcel.getCode1();
break;
case 2:
code = examineExcel.getCode2();
break;
case 3:
code = examineExcel.getCode3();
break;
case 4:
code = examineExcel.getCode4();
break;
case 5:
code = examineExcel.getCode5();
break;
case 6:
code = examineExcel.getCode6();
break;
case 7:
code = examineExcel.getCode7();
break;
case 8:
code = examineExcel.getCode8();
break;
case 9:
code = examineExcel.getCode9();
break;
case 10:
code = examineExcel.getCode10();
break;
case 11:
code = examineExcel.getCode11();
break;
case 12:
code = examineExcel.getCode12();
break;
default:
code = "0";
}
Map<String, Object> mapResult = new HashMap<>();
int index = (n - 1) * 8 + j + 1; //n是列,j是行 ,我们定义index是一列列的定义
if (StringUtil.isNoneBlank(code)) {
if (j > 5 || n > 1) {
if ((v2 - v1) != 0) {
SP = df.format((Double.parseDouble(code) - v1) / (v2 - v1));
}
mapResult.put("originResult", code);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) >= 0.5) {
if (Double.parseDouble(SP) >= 0.4) {
mapResult.put("result", "阳性");
} else if (Double.parseDouble(SP) <= 0.3) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "可疑");
}
} else {
mapResult.put("originResult", code);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + n, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
// 猪繁殖与呼吸综合征病毒间接ELISA抗体检测试剂盒
else if ("1582988982068027393".equals(reagentId)) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = map.get(i + 1 + "");
double code3 = Double.parseDouble(excels.get(2).getCode1());
double code4 = Double.parseDouble(excels.get(3).getCode1());
double v2 = (code3 + code4) / 2;
DecimalFormat df = new DecimalFormat("#0.000");
for (int j = 0; j < excels.size(); j++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (j + 65));
ExamineExcel examineExcel = excels.get(j);//取到一行记录
int filedsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int n = 1; n <= filedsLength; n++) {
String code;
switch (n) {
case 1:
code = examineExcel.getCode1();
break;
case 2:
code = examineExcel.getCode2();
break;
case 3:
code = examineExcel.getCode3();
break;
case 4:
code = examineExcel.getCode4();
break;
case 5:
code = examineExcel.getCode5();
break;
case 6:
code = examineExcel.getCode6();
break;
case 7:
code = examineExcel.getCode7();
break;
case 8:
code = examineExcel.getCode8();
break;
case 9:
code = examineExcel.getCode9();
break;
case 10:
code = examineExcel.getCode10();
break;
case 11:
code = examineExcel.getCode11();
break;
case 12:
code = examineExcel.getCode12();
break;
default:
code = "0";
}
Map<String, Object> mapResult = new HashMap<>();
int index = (n - 1) * 8 + j + 1; //n是列,j是行 ,我们定义index是一列列的定义
if (StringUtil.isNoneBlank(code)) {
if (j > 5 || n > 1) {
if (v2 != 0) {
SP = df.format((Double.parseDouble(code) / v2));
}
mapResult.put("originResult", code);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) >= 0.4) {
mapResult.put("result", "阳性");
} else {
mapResult.put("result", "阴性");
}
} else {
mapResult.put("originResult", code);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + n, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
// 猪瘟病毒阻断ELISA抗体检测试剂盒(武汉科前生物股份有限公司)
else if ("1570283733628678145".equals(reagentId)) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = map.get(i + 1 + "");
double code1 = Double.parseDouble(excels.get(0).getCode1());
double code2 = Double.parseDouble(excels.get(1).getCode1());
double v1 = (code1 + code2) / 2;
DecimalFormat df = new DecimalFormat("#0.000");
for (int j = 0; j < excels.size(); j++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (j + 65));
ExamineExcel examineExcel = excels.get(j);//取到一行记录
int filedsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int n = 1; n <= filedsLength; n++) {
String code;
switch (n) {
case 1:
code = examineExcel.getCode1();
break;
case 2:
code = examineExcel.getCode2();
break;
case 3:
code = examineExcel.getCode3();
break;
case 4:
code = examineExcel.getCode4();
break;
case 5:
code = examineExcel.getCode5();
break;
case 6:
code = examineExcel.getCode6();
break;
case 7:
code = examineExcel.getCode7();
break;
case 8:
code = examineExcel.getCode8();
break;
case 9:
code = examineExcel.getCode9();
break;
case 10:
code = examineExcel.getCode10();
break;
case 11:
code = examineExcel.getCode11();
break;
case 12:
code = examineExcel.getCode12();
break;
default:
code = "0";
}
Map<String, Object> mapResult = new HashMap<>();
int index = (n - 1) * 8 + j + 1; //n是列,j是行 ,我们定义index是一列列的定义
if (StringUtil.isNoneBlank(code)) {
if (j > 5 || n > 1) {
if (v1 != 0) {
SP = df.format(1 - (Double.parseDouble(code) / v1));
}
mapResult.put("originResult", code);
mapResult.put("value", Double.parseDouble(SP) * 100 + "%");
mapResult.put("num", "1");
if (Double.parseDouble(SP) >= 0.4) {
mapResult.put("result", "阳性");
} else if (Double.parseDouble(SP) <= 0.3) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "可疑");
}
} else {
mapResult.put("originResult", code);
@ -877,6 +1166,104 @@ public class ExamineResultController extends BladeController {
map1.put("g" + (i + 1), mapList);
}
}
// 猪伪狂犬病病毒gE蛋白ELISA抗体检测试剂盒(武汉科前生物股份有限公司)
else if ("1570296117147660290".equals(reagentId)) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = map.get(i + 1 + "");
double code1 = Double.parseDouble(excels.get(0).getCode1());
double code2 = Double.parseDouble(excels.get(1).getCode1());
double v1 = (code1 + code2) / 2;
DecimalFormat df = new DecimalFormat("#0.000");
for (int j = 0; j < excels.size(); j++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (j + 65));
ExamineExcel examineExcel = excels.get(j);//取到一行记录
int filedsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SN = "0.00";
for (int n = 1; n <= filedsLength; n++) {
String code;
switch (n) {
case 1:
code = examineExcel.getCode1();
break;
case 2:
code = examineExcel.getCode2();
break;
case 3:
code = examineExcel.getCode3();
break;
case 4:
code = examineExcel.getCode4();
break;
case 5:
code = examineExcel.getCode5();
break;
case 6:
code = examineExcel.getCode6();
break;
case 7:
code = examineExcel.getCode7();
break;
case 8:
code = examineExcel.getCode8();
break;
case 9:
code = examineExcel.getCode9();
break;
case 10:
code = examineExcel.getCode10();
break;
case 11:
code = examineExcel.getCode11();
break;
case 12:
code = examineExcel.getCode12();
break;
default:
code = "0";
}
Map<String, Object> mapResult = new HashMap<>();
int index = (n - 1) * 8 + j + 1; //n是列,j是行 ,我们定义index是一列列的定义
if (StringUtil.isNoneBlank(code)) {
if (j > 5 || n > 1) {
if (v1 != 0) {
SN = df.format(Double.parseDouble(code) / v1);
}
mapResult.put("originResult", code);
mapResult.put("value", Double.parseDouble(SN));
mapResult.put("num", "1");
if (Double.parseDouble(SN) <= 0.35) {
mapResult.put("result", "阳性");
} else if (Double.parseDouble(SN) > 0.4) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "可疑");
}
} else {
mapResult.put("originResult", code);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + n, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
// for (int i = 0; i < group; i++) {
// List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();

@ -1,6 +1,7 @@
package org.springblade.lims.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
@ -91,4 +92,13 @@ public class SimpleController extends BladeController {
return map;
}
/**
* 样品原始编号修改
*/
@PostMapping("/update")
public void updateSimple(@RequestBody Simple simple) {
if (CollectionUtils.isNotEmpty(simple.getSimples())) {
service.updateBatchById(simple.getSimples());
}
}
}

@ -693,19 +693,18 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
// 1.生成坐标(给每一个数据单元赋予坐标)
// 1.1.根据原始编号分组
// Map<String, List<ExamineResultVo>> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getOriginalNum));
Map<String, List<ExamineResultVo>> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getRecessiveNum));
// Map<String, List<ExamineResultVo>> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getRecessiveNum));
Map<String, List<ExamineResultVo>> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getNum));
Set<String> keys = collect.keySet();
List<String> recessiveNumList = new ArrayList<>();
recessiveNumList.addAll(keys);
// TODO 排序方式不对,现在是:1,10,11,12...,会有中文的情况
// Collections.sort(originalNumList);
Collections.sort(recessiveNumList, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Integer expirNum1 = Integer.valueOf(o1);
Integer expirNum2 = Integer.valueOf(o2);
Integer expirNum1 = Integer.valueOf(o1.split("-")[o1.split("-").length - 1]);
Integer expirNum2 = Integer.valueOf(o2.split("-")[o2.split("-").length - 1]);
return expirNum1 - expirNum2;
}
});
@ -717,6 +716,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
List<ExamineResultVo> everyResultUnit = collect.get(originalNum);
Map<String, String> row = new HashMap<>();
row.put("originalNum", everyResultUnit.get(0).getOriginalNum());
row.put("num", everyResultUnit.get(0).getNum());
rowCount++;
// 对检测按照index分组
@ -739,22 +739,16 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
}
});
String num = "";
// String num = "";
String value = "";
String result = "";
for (int i = 0; i < currExamResVoList.size(); i++) {
ExamineResultVo resultVo = currExamResVoList.get(i);
if (i == currExamResVoList.size() - 1) {
num += resultVo.getNum();
value += resultVo.getValue();
result += resultVo.getResult();
} else {
num += resultVo.getNum() + ",";
value += resultVo.getValue() + ",";
result += resultVo.getResult() + ",";
}
// num += resultVo.getNum();
value += resultVo.getValue();
result += resultVo.getResult();
}
row.put("num" + index, num);
// row.put("num" + index, num);
row.put("value" + index, value);
row.put("result" + index, result);
}
@ -1182,7 +1176,15 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
result.put("2", examineResult.getDisposal());
result.put("3", StringUtils.remove(examine.getSimpleName(), "-"));
result.put("4", examine.getSimpleCount());
result.put("5", byId.getName());
// 标题名称
if ("4".equals(byId.getInputMode())) {
result.put("5", byId.getName().substring(0, byId.getName().length() - 2));
// 检测项目
result.put("19", byId.getName());
} else {
result.put("5", byId.getName());
}
// 检测依据
if (examineBasis != null) {
result.put("6", examineBasis.getName());
}
@ -1273,15 +1275,29 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
// 使用仪器名称及编号
String[] split2 = examineResult.getInstrumentId().split(",");
String instrumentName = "";
List<String> strings = new ArrayList<>();
for (int i = 0; i < split2.length; i++) {
Instrument instrument = instrumentService.getById(split2[i]);
String s2 = instrument.getName() + instrument.getCode();
if (i == (split2.length - 1)) {
instrumentName += s2;
strings.add(s2);
}
// 按照仪器编号排序
Collections.sort(strings, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Integer expirNum1 = Integer.valueOf(o1.split("-")[o1.split("-").length - 1]);
Integer expirNum2 = Integer.valueOf(o2.split("-")[o2.split("-").length - 1]);
return expirNum1 - expirNum2;
}
});
for (int i = 0; i < strings.size(); i++) {
if (i == (strings.size() - 1)) {
instrumentName += strings.get(i);
} else {
instrumentName += s2 + ",";
instrumentName += strings.get(i) + ",";
}
}
result.put("9", instrumentName.replace(",", "\r\n"));
// String value = DictBizCache.getValue(DictBizEnum.SIMPLE_STATUS, examineResult.getSimpleStatus());
result.put("10", examineResult.getSimpleStatus());
@ -1342,6 +1358,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
// 如果是布鲁氏检测 (列排单+式和列排多+式)
if ("2".equals(byId.getInputMode()) || "6".equals(byId.getInputMode())) {
if ("2".equals(byId.getInputMode())) {
result.put("18", "平板凝集");
} else {
result.put("18", "试管凝集");
}
List<ExamineTemplate2Excel> list = JSON.parseArray(examineResult.getExamineDataArr(), ExamineTemplate2Excel.class);
// 阴阳性数量
// long yin = list.stream().filter((ExamineTemplate2Excel e) -> "阴性".equals(e.getResult())).count();
@ -1383,7 +1405,6 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
}
everyGroupData.add(list.get(j));
count++;
}
for (int j = 1; j <= resultMap.size(); j++) {
List<ExamineTemplate2Excel> arrVOList = resultMap.get(String.valueOf(j));
@ -2575,6 +2596,23 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
}
// 普通检测
else {
// 根据试剂给不同检测数值命名
if ("1580730163250188290".equals(examineResult.getReagentId())
|| "1570667729797705730".equals(examineResult.getReagentId())
|| "1582988982068027393".equals(examineResult.getReagentId())){
result.put("18", "S/P");
} else if ("1580815808211578882".equals(examineResult.getReagentId())) {
result.put("18", "PI");
} else if ("1570666183341043714".equals(examineResult.getReagentId())) {
result.put("18", "PB");
} else if ("1570283733628678145".equals(examineResult.getReagentId())) {
result.put("18", "阻断率");
} else if ("1570296117147660290".equals(examineResult.getReagentId())) {
result.put("18", "S/N");
} else {
result.put("18", "样品OD");
}
if (list.size() % 96 == 0) {
for (int i = 0; i < list.size() / 96; i++) {
double a1 = Double.parseDouble(list.get(i * 96).getOriginResult());

Loading…
Cancel
Save