新增实验试剂配置修改

pull/1/head
liuqingkun 3 months ago
parent 33a0114a04
commit a406eb1e0c
  1. 220
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/IExamineReagentService.java
  2. 708
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineReagentServiceImpl.java
  3. 40
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java

@ -24,118 +24,9 @@ public interface IExamineReagentService {
*/
Map<String, List<ExamineExcel>> getGroupExcelData(int group, List<ExamineExcel> excelData);
// 2010597883441655809 非洲猪瘟病毒阻断ELISA抗体检测试剂盒--青岛立见生物科技有限公司
// 2010597883441655810 非洲猪瘟病毒(ASFV)阻断ELISA抗体检测试剂盒--北京鑫康生物技术开发有限公司
// 2010597883441655811 非洲猪瘟病毒抗体阻断ELISA检测试剂盒--测易生物
// 2010597883512958977 猪伪狂犬病病毒gE蛋白阻断ELISA抗体检测试剂盒--科前生物
// 2010597883512958978 猪伪狂犬病病毒gB蛋自阻断ELIA抗体检测试剂盒--科前生物
// 2010597883512958979 猪伪狂犬病毒gPI竞争ELISA抗体检测试剂盒--禾旭生物
// 2010597883512958980 猪伪狂犬病毒gB竞争ELISA抗体检测试剂盒--禾旭生物
// 2010597883512958981 猪瘟病毒ELISA抗体检测试剂盒--深圳市绿诗源生物技术有限公司
// 2010597883512958982 猪瘟病毒阻断ELISA抗体检测试剂盒--科前生物 --有相同的
// 2010597883512958983 猪瘟病毒间接ELISA抗体检测试剂盒--禾旭生物 --有相同的
/**
* 数据库ID2010597883512958984
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒维伯鑫
* 生产厂家维伯鑫
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958984(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958985
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒绿诗源
* 生产厂家深圳市绿诗源生物技术有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958985(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958986
* 试剂名称猪繁殖与呼吸综合征病毒间接ELISA抗体检测试剂盒
* 生产厂家禾旭生物
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958986(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958987
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒测易
* 生产厂家测易生物
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958987(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958988
* 试剂名称猪口蹄疫病毒O型VP1间接ELISA抗体检测试剂盒
* 生产厂家洛阳莱普生信息科技有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958988(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958989
* 试剂名称禽白血病病毒J亚群ELISA抗体检测试剂盒
* 生产厂家哈尔滨国生生物科技股份有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958989(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958990
* 试剂名称禽白血病病毒AB亚群ELISA抗体检测试剂盒
* 生产厂家哈尔滨国生生物科技股份有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958990(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883441655809
* 试剂名称非洲猪瘟病毒阻断ELISA抗体检测试剂盒--
* 试剂名称非洲猪瘟病毒阻断ELISA抗体检测试剂盒
* 生产厂家青岛立见生物科技有限公司
*
* @param group 填报实验结果的组数每组9行12列
@ -146,6 +37,7 @@ public interface IExamineReagentService {
void reagent2010597883441655809(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883441655810
* 试剂名称非洲猪瘟病毒(ASFV)阻断ELISA抗体检测试剂盒
@ -157,10 +49,11 @@ public interface IExamineReagentService {
* @param list
*/
void reagent2010597883441655810(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883441655811
* 试剂名称非洲猪瘟病毒抗体阻断ELISA检测试剂盒
* 生产厂家--测易生物
* 生产厂家测易生物
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
@ -173,120 +66,181 @@ public interface IExamineReagentService {
* 数据库ID2010597883512958977
* 试剂名称猪伪狂犬病病毒gE蛋白阻断ELISA抗体检测试剂盒
* 生产厂家--科前生物
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655977(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958977(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958978
* 试剂名称猪伪狂犬病病毒gB蛋自阻断ELIA抗体检测试剂盒
* 生产厂家--科前生物
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655978(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958978(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958979
* 试剂名称猪伪狂犬病毒gPI竞争ELISA抗体检测试剂盒
* 生产厂家--禾旭生物
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655979(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958979(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958980
* 试剂名称猪伪狂犬病毒gB竞争ELISA抗体检测试剂盒
* 生产厂家---禾旭生物
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655980(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958980(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958981
* 试剂名称猪瘟病毒ELISA抗体检测试剂盒
* 生产厂家--深圳市绿诗源生物技术有限公司
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655981(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958981(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958982
* 试剂名称猪瘟病毒阻断ELISA抗体检测试剂盒
* 生产厂家--科前生物 --有相同的
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655982(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958982(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958983
* 试剂名称猪瘟病毒间接ELISA抗体检测试剂盒
* 生产厂家--禾旭生物 --有相同的
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655983(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958983(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958984
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒维伯鑫
* 生产厂家--维伯鑫
* @param group
* 生产厂家维伯鑫
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655984(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958984(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958985
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒绿诗源
* 生产厂家--深圳市绿诗源生物技术有限公司
* @param group
* 生产厂家深圳市绿诗源生物技术有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655985(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958985(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958986
* 试剂名称猪繁殖与呼吸综合征病毒间接ELISA抗体检测试剂盒
* 生产厂家--禾旭生物 --有相同的
* @param group
* 生产厂家禾旭生物
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655986(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958986(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958987
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒测易
* 生产厂家--测易生物
* @param group
* 生产厂家测易生物
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655987(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958987(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958988
* 试剂名称猪口蹄疫病毒O型VP1间接ELISA抗体检测试剂盒
* 生产厂家--洛阳莱普生信息科技有限公司
* @param group
* 生产厂家洛阳莱普生信息科技有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958988(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958989
* 试剂名称禽白血病病毒J亚群ELISA抗体检测试剂盒
* 生产厂家哈尔滨国生生物科技股份有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883441655988(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list);
void reagent2010597883512958989(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
/**
* 数据库ID2010597883512958990
* 试剂名称禽白血病病毒AB亚群ELISA抗体检测试剂盒
* 生产厂家哈尔滨国生生物科技股份有限公司
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
void reagent2010597883512958990(int group, Map<String, List<ExamineExcel>> groupExcelData,
Map<String, List<Map<String, Map<String, Object>>>> map1,
List<Map<String, Object>> list);
}

@ -39,173 +39,21 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
return groupExcelData;
}
/**
* 数据库ID2010597883512958984
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒维伯鑫
* 生产厂家维伯鑫
* <p>
* 1. 成立条件 阴性对照孔OD均值0.2: 阳性对照孔OD均值0.6:
* 2. 计算方法 S/P值=(样本OD值-阴性对照OD平均值)/(阳性对照OD平均值-阴性对照OD平均值)
* 3. 结果判定 S/P值0.5则判断为阳性 S/P值0.5则判断为阴性
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883512958984(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
double negativeVal1 = Double.parseDouble(excels.get(0).getCode1());
double negativeVal2 = Double.parseDouble(excels.get(1).getCode1());
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg = (negativeVal1 + negativeVal2) / 2;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (negativeAvg <= 0.2 && positiveAvg >= 0.6) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
for (int rowNum = 0; rowNum < excels.size(); rowNum++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (rowNum + 65));
//取到一行记录
ExamineExcel examineExcel = excels.get(rowNum);
int fieldsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int colNum = 1; colNum <= fieldsLength; colNum++) {
String cellVal = getExamineCellData(examineExcel, colNum);
Map<String, Object> mapResult = new HashMap<>();
// colNum 是列,rowNum是行 ,我们定义index是一列列的定义
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if (positiveAvg != 0) {
SP = DECIMAL_FORMAT.format((Double.parseDouble(cellVal) - negativeAvg) / (positiveAvg - negativeAvg));
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) < 0.5) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
}
} else {
mapResult.put("originResult", cellVal);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + colNum, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958985
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒绿诗源
* 生产厂家深圳市绿诗源生物技术有限公司
* <p>
* 1. 成立条件 阳性对照孔的OD均值0.60阴性对照孔的平均 OD 0.40
* 2. 计算方法 S/P=样本OD450/630值-NCx/PCx-NCx NCx表示阴性对照孔平均OD450/630值0.05以下的数值按0.05计算 PCx表示阳1性对照孔平均OD450/630值
* 3. 结果判定 S/P值0.20时判为阳性 S/P值0.20时判为阴性
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883512958985(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
double negativeVal1 = Double.parseDouble(excels.get(0).getCode1());
double negativeVal2 = Double.parseDouble(excels.get(1).getCode1());
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg = (negativeVal1 + negativeVal2) / 2;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (negativeAvg < 0.3 && positiveAvg - negativeAvg >= 0.7) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
for (int rowNum = 0; rowNum < excels.size(); rowNum++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (rowNum + 65));
//取到一行记录
ExamineExcel examineExcel = excels.get(rowNum);
int fieldsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int colNum = 1; colNum <= fieldsLength; colNum++) {
String cellVal = getExamineCellData(examineExcel, colNum);
Map<String, Object> mapResult = new HashMap<>();
// colNum 是列,rowNum是行 ,我们定义index是一列列的定义
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if (positiveAvg != 0) {
SP = DECIMAL_FORMAT.format((Double.parseDouble(cellVal) - negativeAvg) / (positiveAvg - negativeAvg));
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) < 0.2) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
}
} else {
mapResult.put("originResult", cellVal);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + colNum, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883441655809
* 试剂名称非洲猪瘟病毒阻断ELISA抗体检测试剂盒--
* 试剂名称非洲猪瘟病毒阻断ELISA抗体检测试剂盒
* 生产厂家青岛立见生物科技有限公司
* <pre>
* 1. 成立条件
* ASFV B阴性对照血清的平均OD值即ODnc;ASFV B阳性对照血清的平均OD值即ODpc;待检样品的OD值即为ODs;
* ODnc>0.5且PIpc>50试验结果有效;否则重新进行试验
* 2. 计算方法
* 阳性对照血清阻断率PIpc=100-ODpc/ODnc×100;
* 样品阻断率PIs=100-ODs/ODnc×100
* 3. 结果判定:
* PIs>50结果判为阳性;
* PIs50结果判为阴性
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
@ -227,7 +75,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!(negativeAvg>0.5 && (100 - (positiveAvg/negativeAvg ) * 100)>50 )) {
if (!(negativeAvg > 0.5 && (100 - (positiveAvg / negativeAvg) * 100) > 50)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -279,11 +127,23 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883441655810
* 试剂名称非洲猪瘟病毒(ASFV)阻断ELISA抗体检测试剂盒
* 生产厂家北京鑫康生物技术开发有限公司
*
* <pre>
* 1. 成立条件
* 阴性对照OD平均值/阳性对照OD平均值4结果有效
* 2. 计算方法
* 阻断率=(阴性对照平均值-样本OD值)/(阴性对照平均值-阳性对照平均值)x100%
* 3. 结果判定
* 阻断率50%样品判定为阳性
* 阻断率40%样品判定为阴性
* 40%阻断率50%为可疑样本
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
@ -304,7 +164,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (negativeAvg/positiveAvg<4) {
if (negativeAvg / positiveAvg < 4) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -358,10 +218,24 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883441655811
* 试剂名称非洲猪瘟病毒抗体阻断ELISA检测试剂盒
* 生产厂家--测易生物
* 生产厂家测易生物
*
* <pre>
* 1. 成立条件
* 阴性对照OD450nm平均值>0.7;
* 阳性对照OD450nm平均值/阴性对照OD450mm平均值0.3
* 如果实验结果不成立有可能是实验操作失误造成的应按操作说明进行重复实验
* 2. 计算方法
* S/N值=待测样品OD450nm值/阴性对照OD450nm均值
* 3. 结果判定
* S/N值0.4判为阳性
* S/N >0.5判为阴性
* 0.4S/N值05为可疑
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
@ -437,17 +311,31 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958977
* 试剂名称猪伪狂犬病病毒gE蛋白阻断ELISA抗体检测试剂盒
* 生产厂家--科前生物
* 生产厂家科前生物
*
* <pre>
* 1. 成立条件
* 阴性对照OD630nm平均值与阳性对照 OD630nm平均值之差0.3.
* 2. 计算方法
* S/N=样品OD630nm值/阴性对照OD630nm值平均值
* S为样品OD630nm值N为阴性对照OD630nm值平均值
* 3. 结果判定
* S/N值0.6样品判为阳性
* S/N值>0.7样品判为阴性
* 0.6S/N值0.7时该样品判为可疑可间隔2周后重新采样检测
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655977(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958977(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -515,17 +403,32 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958978
* 试剂名称猪伪狂犬病病毒gB蛋自阻断ELIA抗体检测试剂盒
* 生产厂家--科前生物
* 生产厂家科前生物
*
* <pre>
* 1. 成立条件
* 阳性对照OD630nm值均应0.4
* 阴性对照OD630nm平均值与阳性对照 OD630nm平均值之差0.5.
* 2. 计算方法
* S/N=样品OD630nm值/阴性对照OD630nm值平均值
* S为样品OD630nm值N为阴性对照OD630nm值平均值
* 3. 结果判定
* S/N值0.6样品判为阳性
* S/N值>0.7样品判为阴性
* 0.6S/N值0.7时该样品必须重新检测若重测结果相同则过一段时间后重新采样进行检测
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655978(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958978(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -539,7 +442,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!(positiveAvg!=0 && positiveAvg<=0.4 && negativeAvg/positiveAvg>=0.5)) {
if (!(positiveVal1 <= 0.4 && positiveVal2 <= 0.4 && negativeAvg - positiveAvg >= 0.5)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -593,17 +496,32 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958979
* 试剂名称猪伪狂犬病毒gPI竞争ELISA抗体检测试剂盒
* 生产厂家--禾旭生物
* 生产厂家禾旭生物
*
* <pre>
* 1. 成立条件
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2
* 成立条件:标准:NCX-PCX0.4PCX0.3
* 如果试验无效试验中的操作值得怀疑应按照操作说明书重做一次试验
* 2. 计算方法
* S/N值=样品OD450/NCX
* 3. 结果判定
* 如果S/N值0.35样品应判定为抗体阳性
* 如果S/N值>0.35样品应判定为抗体阴性
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655979(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958979(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -669,17 +587,32 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958980
* 试剂名称猪伪狂犬病毒gB竞争ELISA抗体检测试剂盒
* 生产厂家---禾旭生物
* 生产厂家禾旭生物
*
* <pre>
* 1. 成立条件
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2
* 成立条件:标准:NCX-PCX0.4PCX0.3
* 如果试验无效试验中的操作值得怀疑应按照操作说明书重做一次试验
* 2. 计算方法
* S/N值=样品OD450/NCX
* 3. 结果判定
* 如果S/N值0.4样品应判定为抗体阳性
* 如果S/N值>0.4样品应判定为抗体阴性
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655980(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958980(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -745,17 +678,31 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958981
* 试剂名称猪瘟病毒ELISA抗体检测试剂盒
* 生产厂家--深圳市绿诗源生物技术有限公司
* 生产厂家深圳市绿诗源生物技术有限公司
*
* <pre>
* 1. 成立条件
* 阳性对照孔的平均OD值0.60阴性对照孔的平均OD值<0.40
* 2. 计算方法
* S/P=样本OD450/630值-NCx/PCx-NCx
* NCx表示阴性对照孔平均OD450/630值0.05以下的数值按0.05计算
* PCx表示阳1性对照孔平均OD450/630值
* 3. 结果判定
* S/P0.25时判为阳性
* S/P0.25时判为阴性
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655981(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958981(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -765,7 +712,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg1 = ((negativeVal1 + negativeVal2) / 2);
double negativeAvg = negativeAvg1<=0.05?0.05:negativeAvg1;
double negativeAvg = negativeAvg1 <= 0.05 ? 0.05 : negativeAvg1;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
@ -822,17 +769,30 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958982
* 试剂名称猪瘟病毒阻断ELISA抗体检测试剂盒
* 生产厂家--科前生物 --有相同的
* 生产厂家科前生物 --有相同的
*
* <pre>
* 1. 成立条件
* 阴性对照OD630nm值均应>0.50阳性对照OD630nm值的阻断率>50%
* 2. 计算方法
* 阻断率=(1-S/N)×100%
* S为样品OD630nm值N为阴性对照OD630nm值平均值
* 3. 结果判定
* 若被检样品的阻断率35%判为阳性
* 若被检样品的阻断率35%判为阴性
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655982(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958982(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -846,7 +806,9 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!(negativeAvg>0.5 && (positiveAvg/negativeAvg)<0.5)) {
if (!(negativeVal1 > 0.5 && negativeVal2 > 0.5
&& (1 - (positiveVal1 / negativeAvg)) > 0.5
&& (1 - (positiveVal2 / negativeAvg)) > 0.5)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -898,17 +860,32 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958983
* 试剂名称猪瘟病毒间接ELISA抗体检测试剂盒
* 生产厂家--禾旭生物 --有相同的
* 生产厂家禾旭生物 --有相同的
*
* <pre>
* 1. 成立条件
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2
* 成立条件:标准:NCX<0.3PCX>0.6
* 如果试验无效试验中的操作值得怀疑应按照操作说明书重做一次试验
* 2. 计算方法
* S/P值=样品OD450/PCX
* 3. 结果判定
* 如果S/P值0.5样品应判定为抗体阳性
* 如果S/P值0.5样品应判定为抗体阴性
* </pre>
*
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655983(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958983(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -974,17 +951,30 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958984
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒维伯鑫
* 生产厂家--维伯鑫
* @param group
* 生产厂家维伯鑫
*
* <pre>
* 1. 成立条件
* 阴性对照;阴性对照孔OD均值0.2:
* 阳性对照:阳性对照孔OD均值0.6:
* 2. 计算方法
* S/P值=(样本OD值-阴性对照OD平均值)/(阳性对照OD平均值-阴性对照OD平均值)
* 3. 结果判定
* S/P值0.5则判断为阳性
* S/P值0.5则判断为阴性
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655984(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958984(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -993,12 +983,12 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg = ((negativeVal1 + negativeVal2) / 2);
double negativeAvg = (negativeVal1 + negativeVal2) / 2;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!(negativeAvg<=0.2 && positiveAvg>=0.6)) {
if (!(negativeAvg <= 0.2 && positiveAvg >= 0.6)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -1021,13 +1011,13 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if ((positiveAvg-negativeAvg)!=0) {
SP = DECIMAL_FORMAT.format(((Double.parseDouble(cellVal))-negativeAvg)/(positiveAvg-negativeAvg));
if (positiveAvg != 0) {
SP = DECIMAL_FORMAT.format((Double.parseDouble(cellVal) - negativeAvg) / (positiveAvg - negativeAvg));
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) <0.5) {
if (Double.parseDouble(SP) < 0.5) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
@ -1050,248 +1040,31 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958985
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒绿诗源
* 生产厂家--深圳市绿诗源生物技术有限公司
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655985(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
double negativeVal1 = Double.parseDouble(excels.get(0).getCode1());
double negativeVal2 = Double.parseDouble(excels.get(1).getCode1());
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg1 = ((negativeVal1 + negativeVal2) / 2);
double negativeAvg = negativeAvg1 <=0.05 ? 0.05:negativeAvg1;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!(positiveAvg>=0.6 && negativeAvg<0.4)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
for (int rowNum = 0; rowNum < excels.size(); rowNum++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (rowNum + 65));
//取到一行记录
ExamineExcel examineExcel = excels.get(rowNum);
int fieldsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int colNum = 1; colNum <= fieldsLength; colNum++) {
String cellVal = getExamineCellData(examineExcel, colNum);
Map<String, Object> mapResult = new HashMap<>();
// colNum 是列,rowNum是行 ,我们定义index是一列列的定义
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if ((positiveAvg-negativeAvg)!=0) {
SP = DECIMAL_FORMAT.format(((Double.parseDouble(cellVal))-negativeAvg)/(positiveAvg-negativeAvg));
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) <0.2) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
}
} else {
mapResult.put("originResult", cellVal);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + colNum, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958986
* 试剂名称猪繁殖与呼吸综合征病毒间接ELISA抗体检测试剂盒
* 生产厂家--禾旭生物 --有相同的
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655986(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
double negativeVal1 = Double.parseDouble(excels.get(0).getCode1());
double negativeVal2 = Double.parseDouble(excels.get(1).getCode1());
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg1 = ((negativeVal1 + negativeVal2) / 2);
double negativeAvg = negativeAvg1 <=0.05 ? 0.05:negativeAvg1;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!((positiveAvg-negativeAvg)>=0.7 && negativeAvg<0.3)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
for (int rowNum = 0; rowNum < excels.size(); rowNum++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (rowNum + 65));
//取到一行记录
ExamineExcel examineExcel = excels.get(rowNum);
int fieldsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int colNum = 1; colNum <= fieldsLength; colNum++) {
String cellVal = getExamineCellData(examineExcel, colNum);
Map<String, Object> mapResult = new HashMap<>();
// colNum 是列,rowNum是行 ,我们定义index是一列列的定义
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if (positiveAvg!=0) {
SP = DECIMAL_FORMAT.format((Double.parseDouble(cellVal))/positiveAvg);
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) <0.3) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
}
} else {
mapResult.put("originResult", cellVal);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + colNum, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958987
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒测易
* 生产厂家--测易生物
* @param group
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655987(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
double negativeVal1 = Double.parseDouble(excels.get(0).getCode1());
double negativeVal2 = Double.parseDouble(excels.get(1).getCode1());
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg1 = ((negativeVal1 + negativeVal2) / 2);
double negativeAvg = negativeAvg1 <=0.05 ? 0.05:negativeAvg1;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!((positiveAvg-negativeAvg)>=0.3 && negativeAvg<=0.5)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
for (int rowNum = 0; rowNum < excels.size(); rowNum++) {
// 行标头:前端渲染需要A、B、C....
String a = String.valueOf((char) (rowNum + 65));
//取到一行记录
ExamineExcel examineExcel = excels.get(rowNum);
int fieldsLength = examineExcel.getClass().getDeclaredFields().length - 1;
Map<String, Map<String, Object>> map2 = new HashMap<>();
String SP = "0.00";
for (int colNum = 1; colNum <= fieldsLength; colNum++) {
String cellVal = getExamineCellData(examineExcel, colNum);
Map<String, Object> mapResult = new HashMap<>();
// colNum 是列,rowNum是行 ,我们定义index是一列列的定义
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if ((positiveAvg-negativeAvg)!=0) {
SP = DECIMAL_FORMAT.format(((Double.parseDouble(cellVal))-negativeAvg)/(positiveAvg-negativeAvg));
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) <0.3) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
}
} else {
mapResult.put("originResult", cellVal);
mapResult.put("num", "");
}
} else {
mapResult.put("originResult", "");
mapResult.put("num", "");
}
mapResult.put("order", index + i * 96);
map2.put(a + colNum, mapResult);
list.add(mapResult);
}
mapList.add(map2);
}
map1.put("g" + (i + 1), mapList);
}
}
/**
* 数据库ID2010597883512958988
* 试剂名称猪口蹄疫病毒O型VP1间接ELISA抗体检测试剂盒
* 生产厂家--洛阳莱普生信息科技有限公司
* @param group
* 生产厂家深圳市绿诗源生物技术有限公司
*
* <pre>
* 1. 成立条件
* 阳性对照孔的平均OD值0.60阴性对照孔的平均 OD 0.40
* 2. 计算方法
* S/P=样本OD450/630值-NCx/PCx-NCx
* NCx表示阴性对照孔平均OD450/630值0.05以下的数值按0.05计算
* PCx表示阳1性对照孔平均OD450/630值
* 3. 结果判定
* 样本S/P值0.20时判为阳性
* 样品S/P值0.20时判为阴性
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
* @param map1
* @param list
*/
@Override
public void reagent2010597883441655988(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
public void reagent2010597883512958985(int group, Map<String, List<ExamineExcel>> groupExcelData, Map<String, List<Map<String, Map<String, Object>>>> map1, List<Map<String, Object>> list) {
for (int i = 0; i < group; i++) {
List<Map<String, Map<String, Object>>> mapList = new ArrayList<>();
List<ExamineExcel> excels = groupExcelData.get(i + 1 + "");
@ -1300,13 +1073,12 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveVal1 = Double.parseDouble(excels.get(2).getCode1());
double positiveVal2 = Double.parseDouble(excels.get(3).getCode1());
// 阴性对照平均值
double negativeAvg1 = ((negativeVal1 + negativeVal2) / 2);
double negativeAvg = negativeAvg1 <=0.05 ? 0.05:negativeAvg1;
double negativeAvg = (negativeVal1 + negativeVal2) / 2;
// 阳性对照平均值
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (!((positiveAvg-negativeAvg)>=0.5 && negativeAvg<=0.3)) {
if (!(negativeAvg < 0.4 && positiveAvg >= 0.6)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -1329,13 +1101,13 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
int index = (colNum - 1) * 8 + rowNum + 1;
if (StringUtils.isNotBlank(cellVal)) {
if (rowNum > 5 || colNum > 1) {
if ((positiveAvg-negativeAvg)!=0) {
SP = DECIMAL_FORMAT.format(((Double.parseDouble(cellVal))-negativeAvg)/(positiveAvg-negativeAvg));
if (positiveAvg != 0) {
SP = DECIMAL_FORMAT.format((Double.parseDouble(cellVal) - negativeAvg) / (positiveAvg - negativeAvg));
}
mapResult.put("originResult", cellVal);
mapResult.put("value", SP);
mapResult.put("num", "1");
if (Double.parseDouble(SP) <0.3) {
if (Double.parseDouble(SP) < 0.2) {
mapResult.put("result", "阴性");
} else {
mapResult.put("result", "阳性");
@ -1363,6 +1135,19 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
* 数据库ID2010597883512958986
* 试剂名称猪繁殖与呼吸综合征病毒间接ELISA抗体检测试剂盒
* 生产厂家禾旭生物
*
* <pre>
* 1. 成立条件
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2
* 成立条件标准:PCX-NCX0.7;NCX<0.3
* 如果试验无效试验中的操作值得怀疑应按照操作说明书重做一次试验
* 2. 计算方法
* S/P值=样品OD450/PCX
* 3. 结果判定
* 如果S/P值0.3样品应判定为抗体阳性
* 如果S/P值0.3样品应判定为抗体阴性
* </pre>
* <p>
* 1. 成立条件 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 成立条件标准:PCX-NCX0.7;NCX<0.3
* 2. 计算方法 S/P值=样品OD450/PCX
@ -1388,7 +1173,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (negativeAvg < 0.3 && positiveAvg - negativeAvg >= 0.7) {
if (!(negativeAvg < 0.3 && positiveAvg - negativeAvg >= 0.7)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -1445,10 +1230,18 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
* 数据库ID2010597883512958987
* 试剂名称猪繁殖与呼吸综合征病毒ELISA抗体检测试剂盒测易
* 生产厂家测易生物
* <p>
* 1. 成立条件: 阳性对照OD450nm平均值-阴性对照OD450mm平均值0.3; 阴性对照OD450mm平均值0.5;
* 2. 计算方法 S/P值=(待测样品OD450nm值-阴性对照OD450nm均值)/(阳性对照OD450nm均值-阴性对照OD450nm均值)
* 3. 结果判定: S/P值0.4判为阳性 S/P值0.3, 判为阴性
*
* <pre>
* 1. 成立条件:
* 阳性对照OD450nm平均值-阴性对照OD450mm平均值0.3;
* 阴性对照OD450mm平均值0.5;
* 否则实验失效
* 2. 计算方法
* S/P值=(待测样品OD450nm值-阴性对照OD450nm均值)/(阳性对照OD450nm均值-阴性对照OD450nm均值)
* 3. 结果判定:
* S/P值0.4判为阳性
* S/P值0.3, 判为阴性
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
@ -1470,7 +1263,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (positiveAvg - negativeAvg >= 0.3 && negativeAvg <= 0.5) {
if (!(positiveAvg - negativeAvg >= 0.3 && negativeAvg <= 0.5)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -1525,15 +1318,23 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
}
}
/**
* 数据库ID2010597883512958988
* 试剂名称猪口蹄疫病毒O型VP1间接ELISA抗体检测试剂盒
* 生产厂家洛阳莱普生信息科技有限公司
* <p>
* 1. 成立条件: 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 成立条件标准:PCX-NCX0.5;NCX0.3
* 2. 计算方法 S/P值=样品-NCX)/(PCX-NCX)
* 3. 结果判定: S/P值0.3样品应判定为抗体阳性 S/P值0.3样品应判定为抗体阴性
*
* <pre>
* 1. 成立条件:
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2
* 成立条件标准:PCX-NCX0.5;NCX0.3
* 如果试验无效试验中的操作值得怀疑应按照操作说明书重做一次试验
* 2. 计算方法
* S/P值=样品-NCX)/(PCX-NCX)
* 3. 结果判定:
* 如果S/P值0.3样品应判定为抗体阳性
* 如果S/P值0.3样品应判定为抗体阴性
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
@ -1555,7 +1356,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (positiveAvg - negativeAvg >= 0.5 && negativeAvg <= 0.3) {
if (!(positiveAvg - negativeAvg >= 0.5 && negativeAvg <= 0.3)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -1612,10 +1413,17 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
* 数据库ID2010597883512958989
* 试剂名称禽白血病病毒J亚群ELISA抗体检测试剂盒
* 生产厂家哈尔滨国生生物科技股份有限公司
* <p>
* 1. 成立条件: 阳性对照血清OD450nm值均在0.55~1.25之间 阴性对照血清OD450nm值均0.10
* 2. 计算方法 S/P值=待检样品OD450nm值阴性对照血清平均OD450nm值)/(阳性对照血清平均OD450nm值阴性对照血清平均OD450nm值)
* 3. 结果判定: S/P 0.3 判为阳性 S/P 0.3 判为阴性
*
* <pre>
* 1. 成立条件:
* 阳性对照血清OD450nm值均在0.55~1.25之间
* 阴性对照血清OD450nm值均0.10
* 2. 计算方法
* S/P值=待检样品OD450nm值阴性对照血清平均OD450nm值)/(阳性对照血清平均OD450nm值阴性对照血清平均OD450nm值)
* 3. 结果判定:
* S/P 0.3 判为阳性
* S/P 0.3 判为阴性
* </pre>
*
* @param group 填报实验结果的组数每组9行12列
* @param groupExcelData
@ -1637,7 +1445,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (negativeVal1 < 0.10 && negativeVal2 < 0.10 && positiveVal1 >= 0.55 && positiveVal1 <= 1.25 && positiveVal2 >= 0.55 && positiveVal2 <= 1.25) {
if (!(negativeVal1 < 0.10 && negativeVal2 < 0.10 && positiveVal1 >= 0.55 && positiveVal1 <= 1.25 && positiveVal2 >= 0.55 && positiveVal2 <= 1.25)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}
@ -1719,7 +1527,7 @@ public class ExamineReagentServiceImpl implements IExamineReagentService {
double positiveAvg = (positiveVal1 + positiveVal2) / 2;
// 成立条件校验
if (negativeVal1 < 0.10 && negativeVal2 < 0.10 && positiveVal1 >= 0.6 && positiveVal1 <= 1.3 && positiveVal2 >= 0.6 && positiveVal2 <= 1.3) {
if (!(negativeVal1 < 0.10 && negativeVal2 < 0.10 && positiveVal1 >= 0.6 && positiveVal1 <= 1.3 && positiveVal2 >= 0.6 && positiveVal2 <= 1.3)) {
throw new ServiceException("第" + (i + 1) + "板阴阳性对照OD值条件不成立,请修改后重新上传!");
}

@ -5624,32 +5624,22 @@ public class ExamineResultServiceImpl extends BaseServiceImpl<ExamineResultMappe
examineReagentService.reagent2010597883441655810(group, groupExcelData, map1, list);
} else if ("2010597883441655811".equals(reagentId)) {
examineReagentService.reagent2010597883441655811(group, groupExcelData, map1, list);
}else if ("2010597883441655977".equals(reagentId)) {
examineReagentService.reagent2010597883441655977(group, groupExcelData, map1, list);
}else if ("2010597883441655978".equals(reagentId)) {
examineReagentService.reagent2010597883441655978(group, groupExcelData, map1, list);
}else if ("2010597883441655979".equals(reagentId)) {
examineReagentService.reagent2010597883441655979(group, groupExcelData, map1, list);
}else if ("2010597883441655980".equals(reagentId)) {
examineReagentService.reagent2010597883441655980(group, groupExcelData, map1, list);
}else if ("2010597883441655981".equals(reagentId)) {
examineReagentService.reagent2010597883441655981(group, groupExcelData, map1, list);
}else if ("2010597883441655982".equals(reagentId)) {
examineReagentService.reagent2010597883441655982(group, groupExcelData, map1, list);
}else if ("2010597883441655983".equals(reagentId)) {
examineReagentService.reagent2010597883441655983(group, groupExcelData, map1, list);
}else if ("2010597883441655984".equals(reagentId)) {
examineReagentService.reagent2010597883441655984(group, groupExcelData, map1, list);
}else if ("2010597883441655985".equals(reagentId)) {
examineReagentService.reagent2010597883441655985(group, groupExcelData, map1, list);
}else if ("2010597883441655986".equals(reagentId)) {
examineReagentService.reagent2010597883441655986(group, groupExcelData, map1, list);
}else if ("2010597883441655987".equals(reagentId)) {
examineReagentService.reagent2010597883441655987(group, groupExcelData, map1, list);
}else if ("2010597883441655988".equals(reagentId)) {
examineReagentService.reagent2010597883441655988(group, groupExcelData, map1, list);
} else if ("2010597883512958977".equals(reagentId)) {
examineReagentService.reagent2010597883512958977(group, groupExcelData, map1, list);
} else if ("2010597883512958978".equals(reagentId)) {
examineReagentService.reagent2010597883512958978(group, groupExcelData, map1, list);
} else if ("2010597883512958979".equals(reagentId)) {
examineReagentService.reagent2010597883512958979(group, groupExcelData, map1, list);
} else if ("2010597883512958980".equals(reagentId)) {
examineReagentService.reagent2010597883512958980(group, groupExcelData, map1, list);
} else if ("2010597883512958981".equals(reagentId)) {
examineReagentService.reagent2010597883512958981(group, groupExcelData, map1, list);
} else if ("2010597883512958982".equals(reagentId)) {
examineReagentService.reagent2010597883512958982(group, groupExcelData, map1, list);
} else if ("2010597883512958983".equals(reagentId)) {
examineReagentService.reagent2010597883512958983(group, groupExcelData, map1, list);
}
// 无该试剂公式提示
// 无该试剂公式提示
else {
// 无该试剂公式提示
throw new Exception("该试剂未维护公式计算,请联系相关开发人员!");

Loading…
Cancel
Save