diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResultVo.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResultVo.java index 4fe0f53..792e055 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResultVo.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ExamineResultVo.java @@ -14,6 +14,8 @@ public class ExamineResultVo extends BaseEntity implements Serializable { private String originalNum; + private String recessiveNum; + private String num; private int index; @@ -22,4 +24,9 @@ public class ExamineResultVo extends BaseEntity implements Serializable { private String result; + /** + * 坐标信息(如:2-1-3) + */ + private String pos; + } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java index 4dc3b0e..7c2f240 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java @@ -453,6 +453,16 @@ public class EntrustController extends BladeController { } return R.data(page); } + // 待编制报告状态 + if (entry != null && entry.getEntrustStatus() != null && "5".equals(entry.getEntrustStatus())) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("entrust_status", "4").or(); + queryWrapper.eq("entrust_status", "5").or(); + queryWrapper.eq("entrust_status", "6"); + query.setDescs("create_time"); + IPage page = service.page(Condition.getPage(query), queryWrapper); + return R.data(page); + } // 全部 query.setDescs("create_time"); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -832,6 +842,11 @@ public class EntrustController extends BladeController { map.put("yzf", service.count(queryWrapper)); queryWrapper.clear(); + queryWrapper.eq("entrust_status", "5").or(); + queryWrapper.eq("entrust_status", "6"); + map.put("dbz", service.count(queryWrapper)); + queryWrapper.clear(); + // queryWrapper.eq("entrust_status", "-1"); // map.put("sb", service.count(queryWrapper)); // } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java index d3a064e..660b1d4 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java @@ -181,7 +181,7 @@ public class ExamineItemController extends BladeController { for (String s : split) { List instrumentList = new ArrayList<>(); Reagent reagent = reagentService.getById(s); - if (reagent.getInstrumentId() != null && !"".equals(reagent.getInstrumentId())) { + if (reagent != null && reagent.getInstrumentId() != null && !"".equals(reagent.getInstrumentId())) { String[] split1 = reagent.getInstrumentId().split(","); for (String s1 : split1) { Instrument instrument = instrumentService.getById(s1); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java index 27a94f2..f0c9803 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java @@ -99,18 +99,16 @@ public class ExamineResultController extends BladeController { } /** - * 普通Excel解析数据 + * 常规Excel解析数据 */ - private R>>>> ptExcel(MultipartFile file, String examineId) { + private R>>>> ptExcel(MultipartFile file, String examineId) throws Exception { try { List read = ExcelUtil.read(file, ExamineExcel.class); Map> map = new HashMap<>(); -// int index = 0; // 组数 int group = 0; // 除9是否有余数 int size = (read.size() + 1) % 9; - if (size == 0) { group = (read.size() + 1) / 9; } else { @@ -145,31 +143,10 @@ public class ExamineResultController extends BladeController { double v2 = (code3 + code4) / 2; DecimalFormat df = new DecimalFormat("#0.000"); for (int j = 0; j < excels.size(); j++) { - String a = ""; - if (j == 0) { - a = "A"; - } - if (j == 1) { - a = "B"; - } - if (j == 2) { - a = "C"; - } - if (j == 3) { - a = "D"; - } - if (j == 4) { - a = "E"; - } - if (j == 5) { - a = "F"; - } - if (j == 6) { - a = "G"; - } - if (j == 7) { - a = "H"; - } + + // 行标头:前端渲染需要A、B、C.... + String a = String.valueOf((char) (j + 65)); + Map> map2 = new HashMap<>(); int u = 1; String SP = "0.00"; @@ -576,6 +553,15 @@ public class ExamineResultController extends BladeController { } } + /** + * 计算常规检验的阴或阳性对照平均值 + */ + private double getConventionalAvg(String i, String j) { + double v1 = Double.parseDouble(i); + double v2 = Double.parseDouble(j); + return (v1 + v2) / 2; + } + /** * 布鲁氏杆菌Excel解析数据 */ diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java index a17ac5c..4d7a33d 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; 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.models.auth.In; import lombok.NoArgsConstructor; import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; @@ -427,6 +428,7 @@ public class EntrustServiceImpl extends BaseServiceImpl if (simple != null) { resultVo.setOriginalNum(simple.getOriginalNum()); resultVo.setNum(simple.getExperieNum()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultVo.setIndex(i); resultVo.setValue(excel.getValue()); resultVo.setResult(excel.getResult()); @@ -451,6 +453,7 @@ public class EntrustServiceImpl extends BaseServiceImpl resultVo.setIndex(i); resultVo.setValue(excel.getCtValue()); resultVo.setResult(excel.getValue()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultList.add(resultVo); } } @@ -468,6 +471,7 @@ public class EntrustServiceImpl extends BaseServiceImpl Simple simple = simpleService.getOne(wrapper1); if (simple != null) { resultVo.setOriginalNum(simple.getOriginalNum()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultVo.setNum(simple.getExperieNum()); resultVo.setIndex(i); resultVo.setValue(excel.getCtValue()); @@ -513,6 +517,7 @@ public class EntrustServiceImpl extends BaseServiceImpl Simple simple = simpleService.getOne(wrapper1); if (simple != null) { resultVo.setOriginalNum(simple.getOriginalNum()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultVo.setNum(simple.getExperieNum()); resultVo.setIndex(i); resultVo.setValue(excel.getValue()); @@ -546,6 +551,7 @@ public class EntrustServiceImpl extends BaseServiceImpl Simple simple = simpleService.getOne(wrapper1); if (simple != null) { resultVo.setOriginalNum(simple.getOriginalNum()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultVo.setNum(simple.getExperieNum()); resultVo.setIndex(i); resultVo.setValue(excel.getValue()); @@ -579,6 +585,7 @@ public class EntrustServiceImpl extends BaseServiceImpl Simple simple = simpleService.getOne(wrapper1); if (simple != null) { resultVo.setOriginalNum(simple.getOriginalNum()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultVo.setNum(simple.getExperieNum()); resultVo.setIndex(i); resultVo.setValue(excel.getValue()); @@ -644,6 +651,7 @@ public class EntrustServiceImpl extends BaseServiceImpl Simple simple = simpleService.getOne(wrapper1); if (simple != null) { resultVo.setOriginalNum(simple.getOriginalNum()); + resultVo.setRecessiveNum(simple.getRecessiveNum()); resultVo.setNum(simple.getExperieNum()); resultVo.setIndex(i); resultVo.setValue(excel.getValue()); @@ -657,36 +665,100 @@ public class EntrustServiceImpl extends BaseServiceImpl } } // 转换可展示的list - List> resultResultList = new ArrayList<>(); - // 根据检测编号分组 - Map> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getNum)); - Set keys = collect.keySet(); - List keyList = new ArrayList<>(); - keyList.addAll(keys); - Collections.sort(keyList, new Comparator() { - @Override - public int compare(String o1, String o2) { - Integer expirNum1 = Integer.valueOf(o1.split("-")[2]); - Integer expirNum2 = Integer.valueOf(o2.split("-")[2]); - return expirNum1 - expirNum2; - } - }); + List> tempResultList = new ArrayList<>(); + List> resultResultList = new ArrayList<>(); + + // 1.生成坐标(给每一个数据单元赋予坐标) - for (String key : keyList) { - Map temp = new HashMap<>(); - List everyExamines = collect.get(key); - temp.put("num", key); - temp.put("originalNum", everyExamines.get(0).getOriginalNum()); - for (int i = 0; i < everyExamines.size(); i++) { - ExamineResultVo everyObj = everyExamines.get(i); - int index = everyObj.getIndex(); - temp.put("value" + index, everyObj.getValue()); - temp.put("result" + index, everyObj.getResult()); + // 1.1.根据原始编号分组 + Map> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getOriginalNum)); + + Set keys = collect.keySet(); + List originalNumList = new ArrayList<>(); + originalNumList.addAll(keys); + // TODO 排序方式不对,现在是:1,10,11,12...,会有中文的情况 + Collections.sort(originalNumList); +// Collections.sort(recessiveNumList, new Comparator() { +// @Override +// public int compare(String o1, String o2) { +// Integer expirNum1 = Integer.valueOf(o1); +// Integer expirNum2 = Integer.valueOf(o2); +// return expirNum1 - expirNum2; +// } +// }); + + // 循环分组后的数据给到每个单元的的值 (例如:2-1-3) + // 定义行数 + int rowCount = 0; + for (String originalNum : originalNumList) { + Map row = new HashMap<>(); + row.put("originalNum", originalNum); + rowCount ++; + List everyResultUnit = collect.get(originalNum); + + // 对检测按照index分组 + Map> voGroupByIndex = everyResultUnit.stream().collect(Collectors.groupingBy(ExamineResultVo::getIndex)); + Set indexKeys = voGroupByIndex.keySet(); + List indexList = new ArrayList<>(); + indexList.addAll(indexKeys); + Collections.sort(indexList); + + for (Integer index : indexList) { + // 当前每一个index对应的检验 + List currExamResVoList = voGroupByIndex.get(index);//W-2022-1,W-2022-2 + // 按照检测编号排序 + Collections.sort(currExamResVoList, new Comparator() { + @Override + public int compare(ExamineResultVo o1, ExamineResultVo o2) { + Integer expirNum1 = Integer.valueOf(o1.getNum().split("-")[2]); + Integer expirNum2 = Integer.valueOf(o2.getNum().split("-")[2]); + return expirNum1 - expirNum2; + } + }); + + String num = ""; + String value = ""; + String result = ""; + for (int i = 0; i < currExamResVoList.size(); i++) { + ExamineResultVo resultVo = currExamResVoList.get(i); + num += resultVo.getNum() + ","; + value += resultVo.getValue() + ","; + result += resultVo.getResult() + ","; + } + row.put("num" + index, num); + row.put("value" + index, value); + row.put("result" + index,result); } - resultResultList.add(temp); + // 将每一行加入到模板循环列表 + tempResultList.add(row); + + // TODO 需要将 W-2022-1,W-2022-2 和原始编号在同一行的数据拆分成两行 +// for (int i = 0; i < tempResultList.size(); i++) { +// Map map = tempResultList.get(i); +// // 如果有一行里有多个检验的情况,如:W-2022-1,W-2022-2 +// // TODO 不对↓ +// String[] split = map.get("num1").split(","); +// if (split.length > 1) { +// // 除去原始编号、备注,再除以3,就是组数 +// Set> entries = map.entrySet(); +// int groups = (entries.size() - 2) / 3; +// // 得到每一组的数据 +// for (int j = 1; j <= groups; j++) { +// // 每一组的在一行里的没个单元数据 +// for (int y = 0; y < split.length; y++) { +// +// } +// Map tempRow = new HashMap<>(); +// +// resultResultList.add(tempRow); +// } +// } else { +// resultResultList.add(map); +// } +// } } // 将附表所需list加进最终map - reportMainBody.put("list", resultResultList); + reportMainBody.put("list", tempResultList); // 打印相关流操作 dealAboutPrintStream(response, reportMainBody, entrust, currTemplate); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java index af31a7f..29b9e1c 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java @@ -307,13 +307,34 @@ public class ExamineResultServiceImpl extends BaseServiceImpl path = entry.getPath(); // 所有上传过的照片 - String[] split = examineResult.getPicturePath().split(","); - if (CollectionUtils.isNotEmpty(path)) { - String picturePath = ""; - // 过滤无用照片并删除 - for (String s : split) { - boolean contains = path.contains(s); - if (!contains) { + if (examineResult.getPicturePath() != null) { + String[] split = examineResult.getPicturePath().split(","); + if (CollectionUtils.isNotEmpty(path)) { + String picturePath = ""; + // 过滤无用照片并删除 + for (String s : split) { + boolean contains = path.contains(s); + if (!contains) { + // 获取图片路径 + String realPath1 = realPath + s; + File file = new File(realPath1); + if (file.exists()) { + file.delete(); + } + } + } + + if (path.size() > 1) { + for (String s : path) { + String s1 = s + ","; + picturePath += s1; + } + } else { + picturePath = path.get(0); + } + entry.setPicturePath(picturePath); + } else { + for (String s : split) { // 获取图片路径 String realPath1 = realPath + s; File file = new File(realPath1); @@ -321,27 +342,8 @@ public class ExamineResultServiceImpl extends BaseServiceImpl 1) { - for (String s : path) { - String s1 = s + ","; - picturePath += s1; - } - } else { - picturePath = path.get(0); - } - entry.setPicturePath(picturePath); - } else { - for (String s : split) { - // 获取图片路径 - String realPath1 = realPath + s; - File file = new File(realPath1); - if (file.exists()) { - file.delete(); - } - } - entry.setPicturePath(""); } return this.updateById(entry); }