From 82ce59218139d9fefeae7b9e5fbc88b499ff023f Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 08 十月 2026 13:35:06 +0800
Subject: [PATCH] feat(inspect): 新增新聚检验订单编辑功能并优化报告生成流程 - 新增 updateNewJuInsOrder 接口支持新聚检验订单修改 - 增加文件上传大小限制至200MB,请求大小限制至400MB - 在设备信息中新增出厂编号字段显示 - 优化温湿度处理逻辑,报告中仅显示温度信息 - 新增印章管理功能,支持MA标志章、报告章和骑缝章配置 - 完善检验报告生成流程,增加多种报告类型常量定义 - 优化附件上传功能,增加空值检查和返回值处理 - 调整委托编号生成逻辑,完善新聚订单可编辑性判断 - 更新CNAS流程中报告编号使用正式报告编号替代委托编号

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java |  302 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 286 insertions(+), 16 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 5be630d..e999547 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
@@ -57,6 +57,7 @@
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
@@ -107,6 +108,8 @@
     private StandardTemplateService standardTemplateService;
     private InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
     private InsOrderTemplateDeviceMapper insOrderTemplateDeviceMapper;
+    private InsSampleReceiptMapper insSampleReceiptMapper;
+    private ApplicationEventPublisher applicationEventPublisher;
 
 
 
@@ -120,7 +123,34 @@
             isOrderAll = "1";
             sampleOrderDto.setState(null);
         }
-        return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
+        // 妫�楠屼腑锛氭柊鑱氫笅鍗曞厤瀹℃牳鍗冲彈鐞嗭紝闇�鏍峰搧鎺ユ敹鎻愪氦鍚庯紙ins_sample_receipt.status=1锛夋墠灞曠ず
+        String receiptSubmitted = sampleOrderDto.getState() != null && sampleOrderDto.getState() == 1 ? "1" : null;
+        IPage<SampleOrderDto> result = insOrderMapper.selectInsOrderPage(page,
+                QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll, receiptSubmitted);
+        List<Integer> candidateIds = result.getRecords().stream()
+                .filter(row -> Integer.valueOf(-1).equals(row.getTypeSource())
+                        && Integer.valueOf(1).equals(row.getState()))
+                .map(SampleOrderDto::getId)
+                .collect(Collectors.toList());
+        if (!candidateIds.isEmpty()) {
+            Set<Integer> receivedIds = insSampleReceiptMapper.selectList(Wrappers.<InsSampleReceipt>lambdaQuery()
+                            .in(InsSampleReceipt::getInsOrderId, candidateIds)
+                            .eq(InsSampleReceipt::getStatus, 1)
+                            .select(InsSampleReceipt::getInsOrderId)).stream()
+                    .map(InsSampleReceipt::getInsOrderId).collect(Collectors.toSet());
+            Set<Integer> taskIds = insOrderStateService.list(Wrappers.<InsOrderState>lambdaQuery()
+                            .in(InsOrderState::getInsOrderId, candidateIds)
+                            .select(InsOrderState::getInsOrderId)).stream()
+                    .map(InsOrderState::getInsOrderId).collect(Collectors.toSet());
+            Set<Integer> assignedIds = insSampleUserMapper.selectList(Wrappers.<InsSampleUser>lambdaQuery()
+                            .in(InsSampleUser::getInsSampleId, candidateIds)
+                            .select(InsSampleUser::getInsSampleId)).stream()
+                    .map(InsSampleUser::getInsSampleId).collect(Collectors.toSet());
+            result.getRecords().forEach(row -> row.setEditable(
+                    candidateIds.contains(row.getId()) && !receivedIds.contains(row.getId())
+                            && !taskIds.contains(row.getId()) && !assignedIds.contains(row.getId())));
+        }
+        return result;
     }
 
 
@@ -175,13 +205,17 @@
         }
 
         if (userId != null) {
-            InsSampleUser insSampleUser = new InsSampleUser();
-            insSampleUser.setState(0);
-            insSampleUser.setUserId(userId);
-            insSampleUser.setInsSampleId(orderId);
-            insSampleUser.setSonLaboratory(directTemplateOrder
-                    ? DIRECT_TEMPLATE_LABORATORY : sonLaboratory);
-            insSampleUserMapper.insert(insSampleUser);
+            Set<String> assignedLaboratories = StringUtils.isBlank(sonLaboratory)
+                    ? taskLaboratories
+                    : Collections.singleton(sonLaboratory);
+            for (String laboratory : assignedLaboratories) {
+                InsSampleUser insSampleUser = new InsSampleUser();
+                insSampleUser.setState(0);
+                insSampleUser.setUserId(userId);
+                insSampleUser.setInsSampleId(orderId);
+                insSampleUser.setSonLaboratory(laboratory);
+                insSampleUserMapper.insert(insSampleUser);
+            }
         }
 
         // 鍒ゆ柇璁㈠崟鏈夋病鏈夌粦瀹氭娊鏍疯鍒�
@@ -412,9 +446,7 @@
             // 瀹℃牳妫�楠屽崟
             upInsOrderOfState(insOrder);
 
-            // 鍒嗛厤妫�楠屼汉
-            String sonLaboratory = insOrder.getTypeSource().equals(1)?"鍘熸潗鏂�":"鎴愬搧瀹為獙瀹�";
-            upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), sonLaboratory);
+            // 瀹℃牳閫氳繃鍚庝粎杩涘叆鏍峰搧鎺ユ敹锛涚敱鏍峰搧鎺ユ敹椤甸潰閫夋嫨涓绘楠屼汉鍚庡啀鍒涘缓妫�楠屼换鍔°��
 
             //鏄惁涓哄師鏉愭枡涓嬪崟
             if(insOrder.getTypeSource().equals(1)){
@@ -477,6 +509,27 @@
         if (StringUtils.isBlank(sampleCode) || sampleCode.length() < 2) {
             throw new ErrorException("鏍峰搧缂栧彿涓嶈兘涓虹┖涓斾笉鑳藉皯浜�2浣�");
         }
+        // 濮旀墭瑕佹眰瀛楁鏍¢獙锛氬洓缁勫崟閫夊繀閫夛紝鍒嗗寘/蹇�掕仈鍔ㄥ繀濉�
+        InsOrder reqOrder = dto.getInsOrder();
+        if (reqOrder.getSampleDate() == null) {
+            throw new ErrorException("閫佹牱鏃ユ湡涓嶈兘涓虹┖");
+        }
+        if (reqOrder.getSubcontractType() == null || reqOrder.getSampleDisposal() == null
+                || reqOrder.getResultEvaluation() == null || reqOrder.getReportDelivery() == null) {
+            throw new ErrorException("璇烽�夋嫨鍒嗗寘鍐呭銆佹牱鍝佸缃�佸缁撴灉璇勪环鍜屾姤鍛婁氦浠樻柟寮�");
+        }
+        if (Integer.valueOf(1).equals(reqOrder.getSubcontractType())
+                && StringUtils.isBlank(reqOrder.getSubcontractCompany())) {
+            throw new ErrorException("鍒嗗寘鍐呭涓烘湁鏃讹紝鍒嗗寘鍗曚綅淇℃伅涓嶈兘涓虹┖");
+        }
+        if (Integer.valueOf(2).equals(reqOrder.getReportDelivery())) {
+            if (StringUtils.isBlank(reqOrder.getReportAddress())) {
+                throw new ErrorException("鎶ュ憡浜や粯鏂瑰紡涓哄揩閫掓椂锛屾姤鍛婂瘎閫佸湴鍧�涓嶈兘涓虹┖");
+            }
+            if (StringUtils.isBlank(reqOrder.getReportReceiver())) {
+                throw new ErrorException("鎶ュ憡浜や粯鏂瑰紡涓哄揩閫掓椂锛屾敹浠朵汉鍙婄數璇濅笉鑳戒负绌�");
+            }
+        }
         StandardTree standard = standardTreeService.getById(dto.getStandardTreeId());
         if (standard == null || StringUtils.isBlank(standard.getSample())
                 || standard.getSampleType() != null || standard.getModel() != null) {
@@ -537,7 +590,9 @@
 
         InsOrder order = dto.getInsOrder();
         order.setId(null);
-        order.setState(0);
+        // 鏂拌仛涓嬪崟鍏嶅鏍革細鐩存帴鍙楃悊锛屼笅鍗曞嵆娴佽浆鍒版牱鍝佹帴鏀�
+        order.setState(1);
+        order.setExamineTime(LocalDateTime.now());
         order.setIsExemption(0);
         order.setFactory(null);
         order.setLaboratory(standard.getLaboratory());
@@ -549,6 +604,14 @@
         // 鏂拌仛璁㈠崟鐨勭幆澧冩潯浠剁敱妫�楠屼换鍔″~鍐欙紝閬垮厤涓嬪崟妯℃澘鎴栨祻瑙堝櫒缂撳瓨甯﹀叆鏃у�笺��
         order.setTemperature(null);
         order.setHumidity(null);
+        // 鏈懡涓仈鍔ㄦ潯浠舵椂娓呯┖瀵瑰簲鏂囨湰瀛楁锛岄伩鍏嶆ā鏉垮揩鐓ф垨娴忚鍣ㄧ紦瀛樺甫鍏ユ棫鍊笺��
+        if (!Integer.valueOf(1).equals(order.getSubcontractType())) {
+            order.setSubcontractCompany(null);
+        }
+        if (!Integer.valueOf(2).equals(order.getReportDelivery())) {
+            order.setReportAddress(null);
+            order.setReportReceiver(null);
+        }
         insOrderMapper.insert(order);
 
         InsSample sample = new InsSample();
@@ -590,7 +653,175 @@
         insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                 .eq(InsOrder::getId, order.getId())
                 .set(InsOrder::getEntrustCode, entrustCode));
+        // 鍏嶅鏍稿悗鐢变笅鍗曠敓鎴愬緟鎺ユ敹鐨勬牱鍝佹帴鏀惰褰曪紝涓绘楠屼汉浠嶅湪鏍峰搧鎺ユ敹椤甸潰閫夋嫨鍚庢墠鍒涘缓妫�楠屼换鍔�
+        insSampleReceiptMapper.insertIgnore(order.getId(), sample.getId());
+        // 鍚屼簨鍔″唴鍙戝竷涓嬪崟浜嬩欢锛岀敱 cnas-process 鑷姩鐢熸垚妫�楠屽鎵樺崟锛涚洃鍚櫒寮傚父浼氳繛甯︿笅鍗曞洖婊�
+        applicationEventPublisher.publishEvent(new com.ruoyi.inspect.event.NewJuOrderPlacedEvent(order.getId()));
         return order.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateNewJuInsOrder(InsPlaceOrderDto dto) {
+        if (dto == null || dto.getOrderId() == null || dto.getInsOrder() == null || dto.getStandardTreeId() == null) {
+            throw new ErrorException("涓嬪崟淇℃伅鎴栨爣鍑嗕笉鑳戒负绌�");
+        }
+        InsOrder currentOrder = insOrderMapper.selectById(dto.getOrderId());
+        if (currentOrder == null) {
+            throw new ErrorException("妫�楠屽崟涓嶅瓨鍦�");
+        }
+        if (!Integer.valueOf(1).equals(currentOrder.getState()) || !Integer.valueOf(-1).equals(currentOrder.getTypeSource())) {
+            throw new ErrorException("褰撳墠濮旀墭涓嶅厑璁哥紪杈�");
+        }
+        assertNewJuOrderEditable(dto.getOrderId());
+
+        String sampleCode = StringUtils.trim(dto.getSampleCode());
+        if (StringUtils.isBlank(sampleCode) || sampleCode.length() < 2) {
+            throw new ErrorException("鏍峰搧缂栧彿涓嶈兘涓虹┖涓斾笉鑳藉皯浜�2浣�");
+        }
+        InsOrder order = dto.getInsOrder();
+        if (order.getSampleDate() == null) {
+            throw new ErrorException("閫佹牱鏃ユ湡涓嶈兘涓虹┖");
+        }
+        if (order.getSubcontractType() == null || order.getSampleDisposal() == null
+                || order.getResultEvaluation() == null || order.getReportDelivery() == null) {
+            throw new ErrorException("璇烽�夋嫨鍒嗗寘鍐呭銆佹牱鍝佸缃�佸缁撴灉璇勪环鍜屾姤鍛婁氦浠樻柟寮�");
+        }
+        if (Integer.valueOf(1).equals(order.getSubcontractType()) && StringUtils.isBlank(order.getSubcontractCompany())) {
+            throw new ErrorException("鍒嗗寘鍐呭涓烘湁鏃讹紝鍒嗗寘鍗曚綅淇℃伅涓嶈兘涓虹┖");
+        }
+        if (Integer.valueOf(2).equals(order.getReportDelivery())
+                && (StringUtils.isBlank(order.getReportAddress()) || StringUtils.isBlank(order.getReportReceiver()))) {
+            throw new ErrorException("鎶ュ憡浜や粯鏂瑰紡涓哄揩閫掓椂锛岃濉啓鎶ュ憡瀵勯�佸湴鍧�鍜屾敹浠朵汉鍙婄數璇�");
+        }
+
+        StandardTree standard = standardTreeService.getById(dto.getStandardTreeId());
+        if (standard == null || StringUtils.isBlank(standard.getSample())
+                || standard.getSampleType() != null || standard.getModel() != null) {
+            throw new ErrorException("璇烽�夋嫨鏍囧噯搴撲簩绾ф爣鍑�");
+        }
+        List<StandardTreeTemplateBindingVo> bindings = standardTreeService.selectTemplateBindings(dto.getStandardTreeId());
+        if (bindings.isEmpty()) {
+            throw new ErrorException("璇ユ爣鍑嗗皻鏈粦瀹氬彲鐢ㄧ殑鍘熷璁板綍妯℃澘");
+        }
+        Map<Integer, StandardTreeTemplateBindingVo> bindingMap = bindings.stream()
+                .collect(Collectors.toMap(StandardTreeTemplateBindingVo::getTemplateId, binding -> binding, (first, ignored) -> first));
+        List<OrderTemplateSelectionDto> selections = dto.getTemplateList();
+        if (selections == null) {
+            selections = bindings.stream().map(binding -> {
+                OrderTemplateSelectionDto selection = new OrderTemplateSelectionDto();
+                selection.setTemplateId(binding.getTemplateId());
+                selection.setSort(binding.getSort());
+                return selection;
+            }).collect(Collectors.toList());
+        }
+        if (selections.isEmpty()) {
+            throw new ErrorException("璇疯嚦灏戜繚鐣欎竴涓師濮嬭褰曟ā鏉�");
+        }
+        Set<Integer> selectedTemplateIds = new HashSet<>();
+        for (int index = 0; index < selections.size(); index++) {
+            OrderTemplateSelectionDto selection = selections.get(index);
+            if (selection == null || selection.getTemplateId() == null || !bindingMap.containsKey(selection.getTemplateId())) {
+                throw new ErrorException("鎵�閫夊師濮嬭褰曟ā鏉夸笉灞炰簬褰撳墠鏍囧噯");
+            }
+            if (!selectedTemplateIds.add(selection.getTemplateId())) {
+                throw new ErrorException("鍘熷璁板綍妯℃澘涓嶈兘閲嶅閫夋嫨");
+            }
+            if (selection.getSort() == null) {
+                selection.setSort(index);
+            }
+        }
+        selections.sort(Comparator.comparing(OrderTemplateSelectionDto::getSort)
+                .thenComparing(OrderTemplateSelectionDto::getTemplateId));
+        Map<Integer, Integer> templateSortMap = selections.stream().collect(Collectors.toMap(
+                OrderTemplateSelectionDto::getTemplateId, OrderTemplateSelectionDto::getSort));
+        List<TemplateInspectionItemDto> templateItems = standardTreeService.selectTemplateInspectionItems(dto.getStandardTreeId()).stream()
+                .filter(item -> selectedTemplateIds.contains(item.getTemplateId()))
+                .sorted(Comparator.comparing((TemplateInspectionItemDto item) -> templateSortMap.get(item.getTemplateId()))
+                        .thenComparing(item -> item.getTemplateRowIndex() == null ? Integer.MAX_VALUE : item.getTemplateRowIndex()))
+                .collect(Collectors.toList());
+        StandardMethod standardMethod = standardMethodService.getById(standard.getStandardMethodId());
+        if (standardMethod == null || StringUtils.isBlank(standardMethod.getCode())) {
+            throw new ErrorException("鏍囧噯缂栧彿涓嶅瓨鍦�");
+        }
+        String standardCode = standardMethod.getCode().trim();
+
+        order.setId(currentOrder.getId());
+        order.setState(currentOrder.getState());
+        order.setInsState(currentOrder.getInsState());
+        order.setExamineTime(currentOrder.getExamineTime());
+        order.setSendTime(currentOrder.getSendTime());
+        order.setIsExemption(currentOrder.getIsExemption());
+        order.setFactory(null);
+        order.setLaboratory(standard.getLaboratory());
+        order.setSampleType(null);
+        order.setSample(standardCode);
+        order.setPrepareUserEn(null);
+        order.setPrepareCode(null);
+        order.setRemarkEn(null);
+        order.setTemperature(null);
+        order.setHumidity(null);
+        if (!Integer.valueOf(1).equals(order.getSubcontractType())) {
+            order.setSubcontractCompany(null);
+        }
+        if (!Integer.valueOf(2).equals(order.getReportDelivery())) {
+            order.setReportAddress(null);
+            order.setReportReceiver(null);
+        }
+        insOrderMapper.updateById(order);
+
+        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+                .eq(InsSample::getInsOrderId, currentOrder.getId()).orderByAsc(InsSample::getId));
+        if (samples.size() != 1) {
+            throw new ErrorException("妫�楠屾牱鍝佹暟鎹紓甯�");
+        }
+        InsSample sample = samples.get(0);
+        sample.setSampleCode(sampleCode);
+        sample.setLaboratory(standard.getLaboratory());
+        sample.setSampleType(null);
+        sample.setSample(standardCode);
+        sample.setModel(null);
+        insSampleMapper.updateById(sample);
+        insProductMapper.delete(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, sample.getId()));
+        insOrderStandardTemplateMapper.delete(Wrappers.<InsOrderStandardTemplate>lambdaQuery()
+                .eq(InsOrderStandardTemplate::getInsOrderId, currentOrder.getId()));
+        insOrderTemplateDeviceMapper.delete(Wrappers.<InsOrderTemplateDevice>lambdaQuery()
+                .eq(InsOrderTemplateDevice::getInsOrderId, currentOrder.getId()));
+        int productSort = 0;
+        for (TemplateInspectionItemDto item : templateItems) {
+            InsProduct product = new InsProduct();
+            product.setInsSampleId(sample.getId());
+            product.setInspectionItem(item.getInspectionItem());
+            product.setInspectionItemClass("");
+            product.setInspectionItemSubclass("");
+            product.setLaboratory(standard.getLaboratory());
+            product.setSample(standardCode);
+            product.setTemplateId(item.getTemplateId());
+            product.setTemplateRowIndex(item.getTemplateRowIndex());
+            product.setSonLaboratory(DIRECT_TEMPLATE_LABORATORY);
+            product.setState(1);
+            product.setSort(productSort++);
+            insProductMapper.insert(product);
+        }
+        saveTemplateSnapshots(currentOrder.getId(), selections, bindingMap);
+        String entrustCode = buildEntrustCode(order, Collections.singletonList(sample));
+        assertEntrustCodeUnique(entrustCode, currentOrder.getId());
+        insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate().eq(InsOrder::getId, currentOrder.getId())
+                .set(InsOrder::getEntrustCode, entrustCode));
+        applicationEventPublisher.publishEvent(new com.ruoyi.inspect.event.NewJuOrderPlacedEvent(currentOrder.getId()));
+        return currentOrder.getId();
+    }
+
+    private void assertNewJuOrderEditable(Integer orderId) {
+        Long receiptCount = insSampleReceiptMapper.selectCount(Wrappers.<InsSampleReceipt>lambdaQuery()
+                .eq(InsSampleReceipt::getInsOrderId, orderId).eq(InsSampleReceipt::getStatus, 1));
+        Long taskCount = insOrderStateService.count(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, orderId));
+        Long userCount = insSampleUserMapper.selectCount(Wrappers.<InsSampleUser>lambdaQuery()
+                .eq(InsSampleUser::getInsSampleId, orderId));
+        if (receiptCount > 0 || taskCount > 0 || userCount > 0) {
+            throw new ErrorException("璇ュ鎵樺凡杩涘叆妫�楠岋紝涓嶈兘缂栬緫");
+        }
     }
 
     private void saveTemplateSnapshots(Integer orderId, List<OrderTemplateSelectionDto> selections,
@@ -692,6 +923,36 @@
         map.put("sampleCode", orderSamples.isEmpty() ? null : orderSamples.get(0).getSampleCode());
         map.put("insOrderTemplate", map1);
         map.put("templateList", templateList);
+        Set<Integer> orderTemplateIds = templateList.stream()
+                .map(OrderTemplateSummaryVo::getTemplateId).collect(Collectors.toSet());
+        List<Integer> methodIds = standardMethodService.list(Wrappers.<StandardMethod>lambdaQuery()
+                        .eq(StandardMethod::getCode, insOrder.getSample())
+                        .select(StandardMethod::getId)).stream()
+                .map(StandardMethod::getId).collect(Collectors.toList());
+        if (!methodIds.isEmpty() && !orderTemplateIds.isEmpty()) {
+            List<StandardTree> candidates = standardTreeService.list(Wrappers.<StandardTree>lambdaQuery()
+                    .in(StandardTree::getStandardMethodId, methodIds)
+                    .isNull(StandardTree::getSampleType)
+                    .isNull(StandardTree::getModel));
+            Map<StandardTree, Set<Integer>> matches = candidates.stream()
+                    .filter(tree -> StringUtils.isNotBlank(tree.getSample())
+                            && Objects.equals(tree.getLaboratory(), insOrder.getLaboratory()))
+                    .collect(Collectors.toMap(tree -> tree,
+                            tree -> standardTreeService.selectTemplateBindings(tree.getId()).stream()
+                                    .map(StandardTreeTemplateBindingVo::getTemplateId)
+                                    .collect(Collectors.toSet())));
+            matches.entrySet().removeIf(entry -> !entry.getValue().containsAll(orderTemplateIds));
+            if (matches.size() == 1) {
+                map.put("standardTreeId", matches.keySet().iterator().next().getId());
+            } else if (matches.size() > 1) {
+                List<StandardTree> exactMatches = matches.entrySet().stream()
+                        .filter(entry -> entry.getValue().equals(orderTemplateIds))
+                        .map(Map.Entry::getKey).collect(Collectors.toList());
+                if (exactMatches.size() == 1) {
+                    map.put("standardTreeId", exactMatches.get(0).getId());
+                }
+            }
+        }
         return map;
     }
 
@@ -701,6 +962,7 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int upInsOrderOfState(InsOrder insOrder) {
         insOrder.setExamineTime(LocalDateTime.now());
         if (insOrder.getState() == 1) {
@@ -746,7 +1008,17 @@
 
             insOrder.setEntrustCode(no);
         }
-        return insOrderMapper.updateById(insOrder);
+        int updated = insOrderMapper.updateById(insOrder);
+        if (updated > 0 && Integer.valueOf(1).equals(insOrder.getState())) {
+            List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+                    .eq(InsSample::getInsOrderId, insOrder.getId())
+                    .orderByAsc(InsSample::getId));
+            if (samples.size() != 1) {
+                throw new ErrorException("濮旀墭鍗曞繀椤讳笖鍙兘鍖呭惈涓�涓牱鍝侊紝涓嶈兘杩涘叆鏍峰搧鎺ユ敹娴佺▼");
+            }
+            insSampleReceiptMapper.insertIgnore(insOrder.getId(), samples.get(0).getId());
+        }
+        return updated;
     }
 
     /**
@@ -799,7 +1071,6 @@
                                 .eq(InsOrderStandardTemplate::getInsOrderId, id)
                                 .select(InsOrderStandardTemplate::getTemplateId,
                                         InsOrderStandardTemplate::getTemperature,
-                                        InsOrderStandardTemplate::getHumidity,
                                         InsOrderStandardTemplate::getDetectionTime,
                                         InsOrderStandardTemplate::getDetectionPlace,
                                         InsOrderStandardTemplate::getInsResult)
@@ -809,7 +1080,6 @@
                     TemplateConditionVo condition = new TemplateConditionVo();
                     condition.setTemplateId(snapshot.getTemplateId());
                     condition.setTemperature(snapshot.getTemperature());
-                    condition.setHumidity(snapshot.getHumidity());
                     condition.setDetectionTime(snapshot.getDetectionTime());
                     condition.setDetectionPlace(snapshot.getDetectionPlace());
                     condition.setInsResult(snapshot.getInsResult());
@@ -1104,7 +1374,7 @@
         insOrder.setState(1);
 
         upInsOrderOfState(insOrder);
-        upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
+        // 瀹℃牳閫氳繃鍚庝粎杩涘叆鏍峰搧鎺ユ敹锛涚敱鏍峰搧鎺ユ敹椤甸潰閫夋嫨涓绘楠屼汉鍚庡啀鍒涘缓妫�楠屼换鍔°��
 
         return insOrder.getId();
     }

--
Gitblit v1.9.3