|
|
|
|
@ -39,173 +39,21 @@ public class ExamineReagentServiceImpl implements IExamineReagentService { |
|
|
|
|
return groupExcelData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958984 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958985 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883441655809 |
|
|
|
|
* 试剂名称:非洲猪瘟病毒阻断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,结果判为阳性; |
|
|
|
|
* PIs≤50,结果判为阴性。 |
|
|
|
|
* </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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883441655810 |
|
|
|
|
* 试剂名称:非洲猪瘟病毒(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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883441655811 |
|
|
|
|
* 试剂名称:非洲猪瘟病毒抗体阻断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.4<S/N值<05,为可疑; |
|
|
|
|
* </pre> |
|
|
|
|
* |
|
|
|
|
* @param group 填报实验结果的组数,每组9行,12列 |
|
|
|
|
* @param groupExcelData |
|
|
|
|
@ -437,17 +311,31 @@ public class ExamineReagentServiceImpl implements IExamineReagentService { |
|
|
|
|
map1.put("g" + (i + 1), mapList); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958977 |
|
|
|
|
* 试剂名称:猪伪狂犬病病毒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.6<S/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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958978 |
|
|
|
|
* 试剂名称:猪伪狂犬病病毒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.6<S/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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958979 |
|
|
|
|
* 试剂名称:猪伪狂犬病毒gPI竞争ELISA抗体检测试剂盒 |
|
|
|
|
* 生产厂家:--禾旭生物 |
|
|
|
|
* 生产厂家:禾旭生物 |
|
|
|
|
* |
|
|
|
|
* <pre> |
|
|
|
|
* 1. 成立条件: |
|
|
|
|
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 |
|
|
|
|
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 |
|
|
|
|
* 成立条件:标准:NCX-PCX≥0.4,PCX≤0.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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958980 |
|
|
|
|
* 试剂名称:猪伪狂犬病毒gB竞争ELISA抗体检测试剂盒 |
|
|
|
|
* 生产厂家:---禾旭生物 |
|
|
|
|
* 生产厂家:禾旭生物 |
|
|
|
|
* |
|
|
|
|
* <pre> |
|
|
|
|
* 1. 成立条件: |
|
|
|
|
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 |
|
|
|
|
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 |
|
|
|
|
* 成立条件:标准:NCX-PCX≥0.4,PCX≤0.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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958981 |
|
|
|
|
* 试剂名称:猪瘟病毒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/P≥0.25时判为阳性: |
|
|
|
|
* S/P<0.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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958982 |
|
|
|
|
* 试剂名称:猪瘟病毒阻断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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958983 |
|
|
|
|
* 试剂名称:猪瘟病毒间接ELISA抗体检测试剂盒 |
|
|
|
|
* 生产厂家:--禾旭生物 --有相同的 |
|
|
|
|
* 生产厂家:禾旭生物 --有相同的 |
|
|
|
|
* |
|
|
|
|
* <pre> |
|
|
|
|
* 1. 成立条件: |
|
|
|
|
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 |
|
|
|
|
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 |
|
|
|
|
* 成立条件:标准:NCX<0.3,PCX>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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958984 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958985 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958986 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒间接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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958987 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958988 |
|
|
|
|
* 试剂名称:猪口蹄疫病毒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 { |
|
|
|
|
* 数据库ID:2010597883512958986 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒间接ELISA抗体检测试剂盒 |
|
|
|
|
* 生产厂家:禾旭生物 |
|
|
|
|
* |
|
|
|
|
* <pre> |
|
|
|
|
* 1. 成立条件: |
|
|
|
|
* 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 |
|
|
|
|
* 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 |
|
|
|
|
* 成立条件标准:PCX-NCX≥0.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-NCX≥0.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 { |
|
|
|
|
* 数据库ID:2010597883512958987 |
|
|
|
|
* 试剂名称:猪繁殖与呼吸综合征病毒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 { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 数据库ID:2010597883512958988 |
|
|
|
|
* 试剂名称:猪口蹄疫病毒O型VP1间接ELISA抗体检测试剂盒 |
|
|
|
|
* 生产厂家:洛阳莱普生信息科技有限公司 |
|
|
|
|
* <p> |
|
|
|
|
* 1. 成立条件: 阴性对照平均值(NCX)NCX=(NC1+NC2)/2 阳性对照平均值(PCX)PCX=(PC1+PC2)/2 成立条件标准:PCX-NCX≥0.5;NCX≤0.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-NCX≥0.5;NCX≤0.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 { |
|
|
|
|
* 数据库ID:2010597883512958989 |
|
|
|
|
* 试剂名称:禽白血病病毒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值条件不成立,请修改后重新上传!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|