From 7bae2c55ff2d9c94d30df77ad2dfbc66bb703209 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 06 九月 2024 17:40:33 +0800
Subject: [PATCH] 电路试验

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  425 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 306 insertions(+), 119 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 1a6804c..58ded93 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -23,8 +23,8 @@
 import com.deepoove.poi.util.TableTools;
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
-import com.yuanchu.mom.dto.ExcelDto;
 import com.yuanchu.mom.dto.InsOrderPlanDTO;
+import com.yuanchu.mom.dto.InsProductResultDto;
 import com.yuanchu.mom.dto.SampleProductDto;
 import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.mapper.*;
@@ -33,7 +33,6 @@
 import com.yuanchu.mom.utils.*;
 import com.yuanchu.mom.vo.*;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.xwpf.usermodel.*;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -43,7 +42,6 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
-import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.text.SimpleDateFormat;
@@ -55,6 +53,8 @@
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -98,6 +98,9 @@
 
     @Resource
     private InsProductResultMapper insProductResultMapper;
+
+    @Resource
+    private InsProductResult2Mapper insProductResult2Mapper;
 
     @Resource
     private InsProductUserMapper insProductUserMapper;
@@ -167,18 +170,7 @@
         Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
         Integer userId = map1.get("userId");
         User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉
-
         String laboratory = null;
-        //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
-       /* String departLimsId = user.getDepartLimsId();
-        if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) {
-            String[] split = departLimsId.split(",");
-            //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
-            String departLims = baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
-            if (departLims.contains("瀹為獙瀹�")) {
-                laboratory = departLims;
-            }
-        }*/
         if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
             insOrderPlanDTO.setUserId(userId.longValue());
         }
@@ -201,8 +193,8 @@
         for (Integer samId : sampleIds) {
             //杩囨护娌℃湁妫�楠岄」鐩殑鏍峰搧id
             if (ObjectUtils.isEmpty(insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                    .eq(InsProduct::getInsSampleId,samId)
-                    .eq(InsProduct::getState,1)))){
+                    .eq(InsProduct::getInsSampleId, samId)
+                    .eq(InsProduct::getState, 1)))) {
                 continue;
             }
             //鍏ュ簱娆℃暟
@@ -255,23 +247,13 @@
                 break;
             case 1:
                 //鍏夌氦甯�
-                insProducts = insSampleMapper.getInsProduct2(id);
                 break;
             case 2:
                 //鍏夌氦
-                insProducts = insSampleMapper.getInsProduct3(id);
                 break;
             case 3:
                 //濂楃
-                insProducts = insSampleMapper.getInsProduct4(id);
                 break;
-        }
-
-        //濡傛灉鏄ぇ鏍峰搧涓嬬殑椤圭洰涓虹┖,閭d箞鏌ヨ绗竴涓厜绾ょ殑椤圭洰
-        if (ObjectUtils.isEmpty(insProducts) && type == 0) {
-            //鏌ヨ绗竴涓厜绾ょ殑id
-            List<InsFiber> insFibers = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, id)).get(0).getId()));
-            insProducts = insSampleMapper.getInsProduct3(insFibers.get(0).getId());
         }
         Set<Integer> set = new HashSet<>();
         Map<Integer, String> map2 = new HashMap<>();
@@ -529,6 +511,21 @@
         return sonLaboratory;
     }
 
+    @Override
+    public int deleteInsContext(InsProductResultVo insProductResultVo) {
+        return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
+                .eq(InsProductResult2::getFrequency, insProductResultVo.getFrequency())
+                .in(InsProductResult2::getInsProductId, insProductResultVo.getProductIds()));
+    }
+
+    @Override
+    public int deleteInsContext2(String frequency, Integer productId, String often) {
+        return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
+                .eq(InsProductResult2::getFrequency, frequency)
+                .eq(InsProductResult2::getInsProductId, productId)
+                .eq(InsProductResult2::getOften, often));
+    }
+
 
     @Override
     public void saveInsContext(Map<String, Object> insContext) {
@@ -540,7 +537,6 @@
                 insProduct.setId(Integer.parseInt(k));
                 List<InsProductResult> results = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
                         .eq(InsProductResult::getInsProductId, insProduct.getId()));
-                InsProduct product = insProductMapper.selectById(insProduct.getId());
                 InsProductResult result;
                 if (CollectionUtils.isEmpty(results)) {
                     result = new InsProductResult();
@@ -548,14 +544,6 @@
                     result = results.get(0);
                 }
                 result.setInsProductId(Integer.parseInt(k));
-                /*鏍¢獙涓�涓媟esult琛�*/
-                List<InsProductResult> insProductResultss = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
-                        .eq(InsProductResult::getInsProductId, insProduct.getId()));
-                if (insProductResultss.size() > 1) {
-                    for (int i = 1; i < insProductResultss.size(); i++) {
-                        insProductResultMapper.deleteById(insProductResultss.get(i));
-                    }
-                }
                 //妫�楠屽��
                 if (jo.get("insValue") != null) {
                     JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue")));
@@ -671,88 +659,42 @@
                             // 璺ㄥぉ鐨勬儏鍐�
                             isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
                         }
-                        //鍔犵彮
-                        List<AuxiliaryOutputWorkingHours> count1s = auxiliaryOutputWorkingHoursMapper.selectList(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
-                                .eq(AuxiliaryOutputWorkingHours::getCheck, userId)
-                                .eq(AuxiliaryOutputWorkingHours::getInspectionItem, insProduct.getInspectionItem())
-                                .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, insProduct.getInspectionItemSubclass())
-                                .eq(AuxiliaryOutputWorkingHours::getOvertimeOrderNo, insOrder.getEntrustCode())
-                                .eq(AuxiliaryOutputWorkingHours::getSample, insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode()));
-                        if (count1s.size() > 1) {
-                            for (int i = 1; i < count1s.size(); i++) {
-                                auxiliaryOutputWorkingHoursMapper.deleteById(count1s.get(i));
-                            }
-                        }
-                        //闈炲姞鐝�
-                        List<AuxiliaryOutputWorkingHours> count2s = auxiliaryOutputWorkingHoursMapper.selectList(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
-                                .eq(AuxiliaryOutputWorkingHours::getCheck, userId)
-                                .eq(AuxiliaryOutputWorkingHours::getInspectionItem, insProduct.getInspectionItem())
-                                .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, insProduct.getInspectionItemSubclass())
-                                .eq(AuxiliaryOutputWorkingHours::getOrderNo, insOrder.getEntrustCode())
-                                .eq(AuxiliaryOutputWorkingHours::getSample, insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode()));
-                        if (count2s.size() > 1) {
-                            for (int i = 1; i < count2s.size(); i++) {
-                                auxiliaryOutputWorkingHoursMapper.deleteById(count2s.get(i));
-                            }
-                        }
-                        if (ObjectUtils.isNotEmpty(insProduct.getManHour()) && CollectionUtils.isEmpty(count2s) && CollectionUtils.isEmpty(count1s)) {
+                        if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
+                            //鍏堝垹鍚庡姞(宸ユ椂璁板綍鏈�鍚庝竴娆′繚瀛樼殑鏃堕棿)
+                            auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+                                    .eq(AuxiliaryOutputWorkingHours::getInsProductId, insProduct.getId()));
                             AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
                             if (isWithinRange) {
                                 //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮
-                                auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
-                                auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
-                                auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
                                 auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
                                 auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃�
                                 auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
                                 auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
-                                auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
-                                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                                DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-                                auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
-                                LocalDateTime localDateTime = LocalDateTime.now();
-                                DateTime parse = DateUtil.parse(localDateTime.format(formatter));
-                                auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
-                                auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
-                                auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
-                            }
-                            else {
+
+                            } else {
                                 //鍔犵彮
-                                auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
-                                auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
-                                auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
                                 auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿
                                 auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//鍔犵彮宸ユ椂
                                 auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺
                                 auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
-                                auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
-                                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                                DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-                                auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
-                                LocalDateTime localDateTime = LocalDateTime.now();
-                                DateTime parse = DateUtil.parse(localDateTime.format(formatter));
-                                auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
-                                auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
-                                auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
                             }
-                            try {
-                                //杩欎釜妫�楠岄」鐩繕娌℃湁濉啓杩囨楠屽�间笖杩欐杩欎釜妫�楠岄」鐩~鍐欑殑妫�楠屽�间笉涓虹┖
-                                if (CollectionUtils.isEmpty(insProductResultss)  && jo.get("insValue") != null
-                                        //杩欎釜妫�楠岄」鐩繕娌℃湁濉啓杩囨楠屽�间笖杩欐杩欎釜妫�楠岄」鐩~鍐欑殑璁$畻鍊间笉涓虹┖浣嗘槸妫�楠屽�间负绌�
-                                        || CollectionUtils.isEmpty(insProductResultss) &&  jo.get("insValue") == null  && jo.get("comValue") != null
-                                        //杩欎釜妫�楠岄」鐩湁濉啓杩囨楠屽�间笖杩欐濉啓鐨勬楠屽�煎拰鍘熸潵鐨勬楠屽�间笉鐩哥瓑,涓旇繖娆$殑妫�楠屽�间笉绛変簬绌�
-                                        || (CollectionUtils.isNotEmpty(insProductResultss) && !insProductResultss.get(0).getInsValue().equals(result.getInsValue()) && jo.get("insValue") != null)
-                                        //杩欎釜妫�楠岄」鐩湁濉啓杩囨楠屽�间笖杩欐濉啓鐨勮绠楀�煎拰鍘熸潵鐨勮绠楀�间笉鐩哥瓑,涓旇繖娆$殑璁$畻鍊间笉绛変簬绌�,涓旇繖娆$殑妫�楠屽�肩瓑浜庣┖
-                                        || (CollectionUtils.isNotEmpty(insProductResultss) && !insProductResultss.get(0).getComValue().equals(result.getComValue())  && jo.get("insValue") == null  && jo.get("comValue") != null)) {
-                                    auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
-                                }
-                            } catch (Exception e) {
-                                System.out.println("宸ユ椂鏂板涓嶆垚鍔�!!!");
-                            }
+                            auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
+                            auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
+                            auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
+                            auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
+                            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                            DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                            auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
+                            LocalDateTime localDateTime = LocalDateTime.now();
+                            DateTime parse = DateUtil.parse(localDateTime.format(formatter));
+                            auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
+                            auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
+                            auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
+                            auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//妫�楠岄」鐩甶d
+                            auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
                         }
                     }
                 }
-
                 InsSample insSample = insSampleMapper.selectById(insProductMapper.selectById(insProduct.getId()).getInsSampleId());
                 insSample.setInsState(1);
                 Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
@@ -783,22 +725,9 @@
             if (res != null) {
                 int pId = Integer.parseInt(res.replaceAll("\\D+", ""));
                 InsProduct insProduct = insProductMapper.selectById(pId);
-                // 閫氳繃pId 鑾峰彇褰撳墠鏍锋湰id
-                int sampleId = insProductMapper.selectById(pId).getInsSampleId();
                 // 閫氳繃鏍锋湰id鑾峰彇璁㈠崟id
-                int orderId = insSampleMapper.selectById(sampleId).getInsOrderId();
-                // 閫氳繃璁㈠崟id鏌ユ壘鎵�鏈夋牱鏈琲d
-                List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList());
-                // 閫氳繃妫�鏌ユ瘡涓�涓牱鏈琲d鏌ュ埌灞炰簬妫�楠岄」缁撹 is null 鎴栬�� =2 鐨勬暟閲�
-                Long count = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
-                        .in(InsProduct::getInsSampleId, sampleIds)
-                        .and(wrapper -> wrapper
-                                .isNull(InsProduct::getInsResult)
-                                .or()
-                                .eq(InsProduct::getInsResult, 2)
-                        )
-                        .eq(InsProduct::getSonLaboratory, insProduct.getSonLaboratory())
-                        .eq(InsProduct::getState, 1));
+                int orderId = insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId();
+                int count = insProductMapper.selectInsProductCountByOrderId(orderId);
                 if (count == 0) {
                     insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
                             .eq(InsOrderState::getInsOrderId, orderId)
@@ -810,6 +739,247 @@
             e.printStackTrace();
             return null;
         });
+    }
+
+    //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�
+    @Override
+    public List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos) {
+        if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())){
+            throw new ErrorException("棰戠巼涓嶈兘涓虹┖");
+        }
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        //鏌ヨ妫�楠屽崟淇℃伅
+        InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId());
+        //鏌ヨ鏍峰搧淇℃伅
+        InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId());
+        List<Integer> list = new ArrayList<>();
+        /*鏂板妫�楠岄」鐩楠屽�艰褰曡〃(閲囧彇鍏堝垹鍚庡)*/
+        insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
+                .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList()))
+                .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency()));
+        for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) {
+            InsProduct insProduct = new InsProduct();
+            insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id
+            InsProductResult2 result2 = new InsProductResult2();
+            result2.setInsProductId(insProductResult2.getInsProductId());
+            //棰戠巼
+            result2.setFrequency(insProductResultDtos.getFrequency());
+            //棰戠偣
+            if (insProductResult2.getOften() != null) {
+                result2.setOften(insProductResult2.getOften());
+            }
+            //绔彛
+            if (insProductResult2.getPort() != null) {
+                result2.setPort(insProductResult2.getPort());
+            }
+            //瑙掑害
+            if (insProductResult2.getAngle() != null) {
+                result2.setAngle(insProductResult2.getAngle());
+            }
+            //璁惧缂栧彿
+            if (insProductResult2.getEquipValue() != null) {
+                result2.setEquipValue(insProductResult2.getEquipValue());
+            }
+            //璁惧鍚嶇О
+            if (insProductResult2.getEquipName() != null) {
+                result2.setEquipName(insProductResult2.getEquipName());
+            }
+            insProduct = insProductMapper.selectById(insProduct.getId());
+            //鍊�
+            if (insProductResult2.getValue() != null) {
+                result2.setValue(insProductResult2.getValue());
+                //缁撹
+                int ressult = 1;
+                String valueStr = insProductResult2.getValue();
+                if (!insProduct.getAsk().contains(",")) {
+                    if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) {
+                        ressult = 0; //涓嶅悎鏍�
+                    }
+                } else {
+                    // 濡傛灉瑕佹眰鍊兼槸(2掳鈮�20,7掳鈮�25,12掳鈮�25)杩欑鎯呭喌
+                    String[] askParts = insProduct.getAsk().split(",");
+                    String[] angles = insProductResult2.getAngle().split(",");
+                    for (String s : askParts) {
+                        String[] askSplit = s.split("掳");
+                        String angleKey = askSplit[0];
+                        String angleValue = askSplit[1];
+
+                        for (int i = 0; i < angles.length; i++) {
+                            if (angles[i].split("掳")[0].equals(angleKey)) {
+                                try {
+                                    String s1 = valueStr.substring(1, valueStr.length() - 1).split("\\],\\[")[i];
+                                    if (!s1.startsWith("[")) {
+                                        s1 = "[" + s1;
+                                    }
+                                    if (!s1.endsWith("]")) {
+                                        s1 = s1 + "]";
+                                    }
+                                    if (!isValueValid("[" + s1 + "]", new String[]{angleValue})) {
+                                        ressult = 0; // 涓嶅悎鏍�
+                                        break;
+                                    }
+                                }catch (Exception e) {
+                                }finally {
+                                    continue;
+                                }
+
+                            }
+                        }
+                    }
+                }
+                result2.setResult(ressult);
+                list.add(ressult);
+            }
+            result2.setCreateUser(userId);
+            result2.setUpdateUser(userId);
+            insProductResult2Mapper.insert(result2);
+            insProduct.setUpdateUser(userId);
+            insProductMapper.updateById(insProduct);
+            insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
+            /*鐢熸垚浜ч噺宸ユ椂*/
+            //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板
+            //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮
+            LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
+            PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
+                    .eq(PerformanceShift::getUserId, userId)
+                    .eq(PerformanceShift::getWorkTime, today));
+            if (ObjectUtils.isNotEmpty(performanceShift)) {
+                ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
+                if (ObjectUtils.isNotEmpty(shiftTime)) {
+                    DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
+                    LocalTime now = LocalTime.now();
+                    LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
+                    LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
+                    // 妫�鏌ュ綋鍓嶆椂闂存槸鍚﹀湪鑼冨洿鍐咃紙鍖呮嫭杈圭晫锛�
+                    boolean isWithinRange;
+                    if (endTime.isAfter(startTime)) {
+                        // 涓嶈法澶╃殑鎯呭喌
+                        isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
+                    } else {
+                        // 璺ㄥぉ鐨勬儏鍐�
+                        isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
+                    }
+                    if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
+                        //鍏堝垹鍚庡姞(宸ユ椂璁板綍鏈�鍚庝竴娆′繚瀛樼殑鏃堕棿)
+                        auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+                                .eq(AuxiliaryOutputWorkingHours::getInsProductId, insProduct.getId()));
+                        AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
+                        if (isWithinRange) {
+                            //鍦ㄦ椂闂村唴灏辨槸姝e父涓婄彮
+                            auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
+                            auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//闈炲姞鐝伐鏃�
+                            auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
+                            auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
+
+                        } else {
+                            //鍔犵彮
+                            auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//鍔犵彮濮旀墭鍗曞彿
+                            auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//鍔犵彮宸ユ椂
+                            auxiliaryOutputWorkingHours.setOvertimeAmount(1);//鍔犵彮鏁伴噺
+                            auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//浜ч噺宸ユ椂
+                        }
+                        auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
+                        auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
+                        auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//鏍峰搧缂栧彿
+                        auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//宸ユ椂鍒嗙粍
+                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                        auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//鏃ユ湡
+                        LocalDateTime localDateTime = LocalDateTime.now();
+                        DateTime parse = DateUtil.parse(localDateTime.format(formatter));
+                        auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//鏄熸湡
+                        auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//鍛ㄦ
+                        auxiliaryOutputWorkingHours.setCheck(userId);//妫�娴嬩汉
+                        auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//妫�楠岄」鐩甶d
+                        auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
+                    }
+                }
+            }
+            /*鏇存柊鏍峰搧鐨勬楠岀姸鎬�*/
+            insSample.setInsState(1);
+            Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+                    .eq(InsProduct::getInsSampleId, insSample.getId()));
+            Long l1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+                    .eq(InsProduct::getInsSampleId, insSample.getId())
+                    .and(wrapper -> wrapper
+                            .isNotNull(InsProduct::getInsResult)
+                            .or()
+                            .ne(InsProduct::getInsResult, 2)
+                    ));
+            if (l == l1) {
+                //濡傛灉鎵�鏈夐」鐩兘鏈夌粨璁�,閭d箞璇ユ牱鍝佺姸鎬佸凡妫�
+                insSample.setInsState(2);
+            }
+            insSampleMapper.updateById(insSample);
+        }
+        /*鍒ゆ柇璇ョ珯鐐圭殑妫�楠岄」鐩槸鍚﹀叏閮ㄥ凡妫�*/
+        int count = insProductMapper.selectInsProductCountByOrderId(insProductResultDtos.getOrderId());
+        if (count == 0) {
+            insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
+                    .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
+                    .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
+                    .set(InsOrderState::getInsState, 2));
+        }
+        return list;
+    }
+
+    //瑙f瀽瑕佹眰鍊肩殑鏍煎紡
+    private boolean getResult(double s, String ask) {
+        // 澶勭悊卤鑼冨洿鐨勬潯浠�
+        if (ask.contains("卤")) {
+            Pattern pattern = Pattern.compile("(\\d+)卤(\\d+)");
+            Matcher matcher = pattern.matcher(ask);
+            if (matcher.matches()) {
+                double center = Double.parseDouble(matcher.group(1));
+                double tolerance = Double.parseDouble(matcher.group(2));
+                return Math.abs(s - center) <= tolerance;
+            }
+        }
+        // 澶勭悊鍏朵粬姣旇緝鏉′欢
+        if (ask.startsWith(">")) {
+            double threshold = Double.parseDouble(ask.substring(1));
+            return s > threshold;
+        } else if (ask.startsWith("鈮�")) {
+            double threshold = Double.parseDouble(ask.substring(1));
+            return s >= threshold;
+        } else if (ask.startsWith("<")) {
+            double threshold = Double.parseDouble(ask.substring(1));
+            return s < threshold;
+        } else if (ask.startsWith("鈮�")) {
+            double threshold = Double.parseDouble(ask.substring(1));
+            return s <= threshold;
+        } else if (ask.equals("=")) {
+            double exactValue = Double.parseDouble(ask.substring(1));
+            return s == exactValue;
+        }
+        // 澶勭悊涓嶆敮鎸佺殑鏉′欢
+        throw new IllegalArgumentException("鏈煡鏍煎紡瑕佹眰鍊艰妫�鏌�" + ask);
+    }
+
+    //灏嗗墠绔紶杩囨潵鐨勫�艰浆鎹㈡垚鏁扮粍鐨勫舰寮�
+    private String[] parseValues(String valueStr) {
+        String trimmedStr = valueStr.substring(1, valueStr.length() - 1);
+        return Arrays.stream(trimmedStr.split("\\],\\["))
+                .map(s -> s.substring(1, s.length() - 1).split(","))
+                .flatMap(Arrays::stream)
+                .map(s -> s.replace("\"", ""))
+                .toArray(String[]::new);
+    }
+
+    //鍒よ鍚堟牸涓庝笉鍚堟牸
+    private boolean isValueValid(String valueStr, String[] valuesToCheck) {
+        for (String s : parseValues(valueStr)) {
+            if (ObjectUtils.isEmpty(s)) {
+                continue;
+            }
+            double numericValue = Double.parseDouble(s);
+            boolean valid = Arrays.stream(valuesToCheck)
+                    .allMatch(v -> getResult(numericValue, v));
+            if (!valid) {
+                return false;
+            }
+        }
+        return true;
     }
 
     //浜ゆ帴
@@ -941,8 +1111,7 @@
                     insOrderState.setLaboratory(minElement);
                     insOrderState.setInsState(0);
                     insOrderStateMapper.insert(insOrderState);
-                }
-                else {
+                } else {
                     //濡傛灉缁х画璇曢獙娌℃湁鍏朵粬绔欑偣鐨勬楠屼换鍔¢偅灏辩粨鏉熻瘯楠�
                     verifyPlan(orderId, laboratory, 2, tell);
                 }
@@ -1626,6 +1795,24 @@
             String str = "";
             int count = 0;
             for (InsProduct product : insProducts) {
+                //杈愬皠璇曢獙妫�娴嬬殑妫�楠岄」鐩�,涓嶉渶瑕佸幓鎵嬪姩濉啓妫�楠屽��,鍙渶瑕佷笂浼犺〃鏍兼枃浠跺氨鍙互浜�,鍚庡彴鎻愪氦鐨勬椂鍊欐牎楠岃烦杩囪繖涓楠岄」鐩�
+                if (product.getInspectionItem().equals("杈愬皠璇曢獙妫�娴�")) {
+                    product.setInsResult(3);//涓嶅垽瀹�
+                    insProductMapper.updateById(product);
+                    continue;
+                }
+                //鐢佃矾璇曢獙鐨勬楠岄」鐩�,闇�瑕佸湪鎻愪氦鐨勬椂鍊欏啀鍘昏祴鍊煎悎鏍间笌涓嶅悎鏍�
+                if (product.getInspectionItem().equals("鐢佃矾璇曢獙")) {
+                    List<Integer> collect = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
+                            .eq(InsProductResult2::getInsProductId, product.getId())).stream().map(InsProductResult2::getResult).distinct().collect(Collectors.toList());
+                    if (collect.contains(0)) {
+                        product.setInsResult(0);//涓嶅悎鏍�
+                    } else {
+                        product.setInsResult(1);//鍚堟牸
+                    }
+                    insProductMapper.updateById(product);
+                    continue;
+                }
                 count++;
                 str += "<br/>" + count + "锛�" + product.getInspectionItem() + " " + product.getInspectionItemSubclass() + "<br/>";
             }
@@ -1643,7 +1830,7 @@
         InsOrder insOrder = insOrderMapper.selectById(orderId);
         if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) {
             verifyPlan(orderId, laboratory, 2, null);
-        }else {
+        } else {
             Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
             //LIMS绯荤粺娑堟伅鎺ㄩ��
             InformationNotification info = new InformationNotification();

--
Gitblit v1.9.3