BusSampleItem updateItemParam; for (BusSampleDTO sm : samples) { if (sm.getTotalQuantity() == null || sm.getTotalQuantity() < 1) continue; // 新增或修改过后的信息 BusSampleReport report = reportList.stream().filter(r -> r.getSampleId().equals(sm.getId())).findFirst().get(); BusSampleItemTest test = testList.stream().filter(r -> r.getSampleId().equals(sm.getId())).findFirst().get(); BusSampleItem item = itemList.stream().filter(r -> (r.getSampleId().equals(sm.getId()) && r.getId().equals(test.getItemId()))).findFirst().get(); List<BusSampleReport> currNewReports = new ArrayList<>(); Map<String, String> map = reportNum.stream().filter(m -> sm.getId().equals(Func.toLong(m.get("sampleId")))).findFirst().orElse(null); if (map == null) { // 新增的样品 createNewData(dto, sm, sm.getTotalQuantity(), 0, report, item, test, currNewReports, newItems, newTests); // 用于检测信息录入,包信息展示 int noLength = Integer.parseInt(currNewReports.get(0).getReportNo().substring(currNewReports.get(0).getReportNo().length() - 6)) - 1; busSampleAttrService.update(Wrappers.<BusSampleAttr>lambdaUpdate() .eq(BusSampleAttr::getId, sm.getId()) .set(BusSampleAttr::getReportNumber, currNewReports.get(0).getReportNo() + "~" + (noLength + sm.getTotalQuantity()))); } else { // 修改的样品 Integer si = sm.getTotalQuantity() - Func.toInt(map.get("reportNum")); if (si > 0) { // 需要新增信息 createNewData(dto, sm, si, Func.toInt(map.get("reportNum")), report, item, test, currNewReports, newItems, newTests); } else if (si < 0) { // 删除多余数据 sampleReportService.deleteReportsByParam(sm); // 证书编号流水撤回 CustomParam param = new CustomParam(); param.setTenantId(AuthUtil.getTenantId()); param.setInspectionKey(sm.getInspectionType()); param.setDeptKey(AuthUtil.getDeptId()); //param.setTestDate(DateUtil.formatDate(DateUtil.localDateToDate(testVO.getTestDate()), "yyyy-MM-dd")); //cparam.setCustomId(CustomRuleVar.CERTIFICATE_REPORT_NUM); param.setDictKey(dto.getBusinessType()); param.setCustomerCodeValue(dto.getCustomerCode()); param.setBleedingKey(Func.toStr(sm.getBleedingSite())); param.setBatchSize(Func.toLong(si)); sampleReportService.makeReportNo(dto.getBusinessType(), param); } 这是第二段代码
时间: 2024-04-22 12:25:24 浏览: 136
xdocreport.samples:从 code.google.compxdocreport.samples 自动导出
根据你提供的第二段代码,这部分代码是在对样品进行处理,包括新增样品和修改样品的情况。代码逻辑如下:
1. 遍历样本列表 `samples`,对每个样本进行处理。
2. 如果样本的总数量为空或小于 1,则跳过当前样本的处理。
3. 使用样本的 ID,在报告列表 `reportList` 中查找对应的报告对象 `report`。
4. 使用样本的 ID,在测试列表 `testList` 中查找对应的测试对象 `test`。
5. 使用样本的 ID 和测试项目的 ID,在项目列表 `itemList` 中查找对应的项目对象 `item`。
6. 创建空的当前新报告列表 `currNewReports`。
7. 在报告数量列表 `reportNum` 中查找与当前样本 ID 匹配的映射 `map`。
8. 如果映射 `map` 为空,则表示当前样本是新增的样品。
a. 调用 `createNewData` 方法,传入相应参数,创建新的数据,并将新的报告、项目和测试添加到对应的列表中。
b. 获取当前新报告列表中第一个报告对象的报告编号,并根据逻辑生成编号范围,更新到 `busSampleAttrService` 中。
9. 如果映射 `map` 不为空,则表示当前样本是修改的样品。
a. 计算出需要新增或删除的信息数量 `si`。
b. 如果需要新增信息数量大于 0,则调用 `createNewData` 方法,传入相应参数,创建新的数据,并将新的报告、项目和测试添加到对应的列表中。
c. 如果需要新增信息数量小于 0,则删除多余的报告数据,并进行相关撤回操作。
以上是根据第二段代码推断出的逻辑。如果你有其他问题或需要进一步解释,请随时提问。
阅读全文