From de775139ac660c9d2e38ae54364f25e6724ca668 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 28 八月 2026 15:41:38 +0800
Subject: [PATCH] feat(device): 1.添加设备导入导出功能并优化数据库关联查询 2.计量溯源性-标准物质清单导入导出
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 53 insertions(+), 1 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index 1315240..cb1f287 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -874,6 +874,19 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateInsOrder(InsOrderUpdateDto insOrderUpdateDto) {
+ InsOrder currentOrder = insOrderMapper.selectById(insOrderUpdateDto.getInsOrder().getId());
+ if (currentOrder == null || !Objects.equals(currentOrder.getState(), 2)) {
+ throw new ErrorException("鍙湁閫�鍥炵殑妫�楠屽崟鍙互淇敼");
+ }
+ boolean hasSelectedProduct = CollectionUtils.isNotEmpty(insOrderUpdateDto.getSampleProduct())
+ && insOrderUpdateDto.getSampleProduct().stream()
+ .filter(sample -> CollectionUtils.isNotEmpty(sample.getInsProduct()))
+ .flatMap(sample -> sample.getInsProduct().stream())
+ .anyMatch(product -> Objects.equals(product.getState(), 1));
+ if (!hasSelectedProduct) {
+ throw new ErrorException("璇疯嚦灏戦�夋嫨涓�涓楠岄」");
+ }
+
// 淇敼璁㈠崟
insOrderUpdateDto.getInsOrder().setState(0);
insOrderUpdateDto.getInsOrder().setTell("");
@@ -881,11 +894,50 @@
// 淇敼妫�楠岄」
for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) {
+ Long sampleCount = insSampleMapper.selectCount(Wrappers.<InsSample>lambdaQuery()
+ .eq(InsSample::getId, sampleProductDto.getId())
+ .eq(InsSample::getInsOrderId, insOrderUpdateDto.getInsOrder().getId()));
+ if (sampleCount == 0) {
+ throw new ErrorException("妫�楠屾牱鍝佹暟鎹紓甯�");
+ }
+
insSampleService.update(Wrappers.<InsSample>lambdaUpdate()
.eq(InsSample::getId, sampleProductDto.getId())
.set(InsSample::getSpecialStandardMethod, sampleProductDto.getSpecialStandardMethod()));
- insProductService.updateBatchById(sampleProductDto.getInsProduct());
+ List<InsProduct> products = sampleProductDto.getInsProduct();
+ if (CollectionUtils.isEmpty(products)) {
+ continue;
+ }
+
+ Set<Integer> productIds = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+ .eq(InsProduct::getInsSampleId, sampleProductDto.getId()))
+ .stream()
+ .map(InsProduct::getId)
+ .collect(Collectors.toSet());
+ if (products.stream().anyMatch(product -> product.getId() != null && !productIds.contains(product.getId()))) {
+ throw new ErrorException("妫�楠岄」鏁版嵁寮傚父");
+ }
+
+ List<Integer> removedIds = products.stream()
+ .filter(product -> product.getId() != null && !Objects.equals(product.getState(), 1))
+ .map(InsProduct::getId)
+ .collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(removedIds)) {
+ insProductService.removeByIds(removedIds);
+ }
+
+ List<InsProduct> existingProducts = products.stream()
+ .filter(product -> product.getId() != null && Objects.equals(product.getState(), 1))
+ .collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(existingProducts)) {
+ insProductService.updateBatchById(existingProducts);
+ }
+
+ List<InsProduct> newProducts = products.stream()
+ .filter(product -> product.getId() == null && Objects.equals(product.getState(), 1))
+ .collect(Collectors.toList());
+ addInsProductMethod(sampleProductDto.getId(), newProducts);
}
return true;
--
Gitblit v1.9.3