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;