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

---
 system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java                      |   13 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java                    |   78 ++++
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java                        |    5 
 inspect-server/src/main/resources/mapper/InsSampleMapper.xml                                |  318 +++++-----------
 inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java                   |   28 +
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java      |  425 ++++++++++++++++------
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java          |   71 +-
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java            |   18 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductResult2ServiceImpl.java |   20 +
 inspect-server/src/main/resources/mapper/InsProductMapper.xml                               |   10 
 inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java                     |   16 
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResultMapper.java             |    2 
 inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java                         |    1 
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java                    |    6 
 performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java      |    4 
 inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml                        |   23 +
 system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java                                 |   10 
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java         |   34 +
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java                           |    5 
 inspect-server/src/main/resources/mapper/InsProductResultMapper.xml                         |   14 
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java                   |    2 
 inspect-server/src/main/java/com/yuanchu/mom/service/InsProductResult2Service.java          |   16 
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java               |   10 
 23 files changed, 738 insertions(+), 391 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
index 52b3e9c..163e9c3 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -1,11 +1,13 @@
 package com.yuanchu.mom.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.annotation.ValueAuth;
 import com.yuanchu.mom.annotation.ValueClassify;
 import com.yuanchu.mom.dto.InsOrderPlanDTO;
 import com.yuanchu.mom.dto.InsProductDto;
+import com.yuanchu.mom.dto.InsProductResultDto;
 import com.yuanchu.mom.pojo.InsOrderFile;
 import com.yuanchu.mom.pojo.InsOrderState;
 import com.yuanchu.mom.service.InsOrderFileService;
@@ -13,6 +15,7 @@
 import com.yuanchu.mom.service.InsOrderStateService;
 import com.yuanchu.mom.service.InsProductService;
 import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.InsProductResultVo;
 import com.yuanchu.mom.vo.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -197,4 +200,35 @@
     public Result<?> jumpTeam(@RequestBody InsOrderState insOrderState) {
         return Result.success(insOrderStateService.jumpTeam(insOrderState));
     }
+
+    @ApiOperation(value = "鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�")
+    @PostMapping("/saveInsContext2")
+    @ValueAuth
+    public Result<?> saveInsContext2(@RequestBody InsProductResultDto insProductResultDtos) {
+        return Result.success(insOrderPlanService.saveInsContext2(insProductResultDtos));
+    }
+
+    @ApiOperation(value = "鐢佃矾璇曢獙鐨勫垹闄ら娈�")
+    @PostMapping("/deleteInsContext")
+    @ValueAuth
+    public Result<?> deleteInsContext(@RequestBody InsProductResultVo insProductResultVo) {
+        return Result.success(insOrderPlanService.deleteInsContext(insProductResultVo));
+    }
+
+    @ApiOperation(value = "鐢佃矾璇曢獙鐨勫垹闄や簰璋�")
+    @PostMapping("/deleteInsContext2")
+    @ValueAuth
+    public Result<?> deleteInsContext2(String frequency,Integer productId,String often) {
+        return Result.success(insOrderPlanService.deleteInsContext2(frequency,productId,often));
+    }
+
+    @ApiOperation(value = "鐢佃矾璇曢獙鐐瑰嚮妫�楠岄�夋嫨鐗堟湰")
+    @PostMapping("/chooseVersion")
+    @ValueAuth
+    public Result<?> chooseVersion(Integer orderStateId,Integer version) {
+        InsOrderState orderState = new InsOrderState();
+        orderState.setId(orderStateId);
+        orderState.setVersion(version);
+        return Result.success(insOrderStateService.updateById(orderState));
+    }
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java
new file mode 100644
index 0000000..a531e4a
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.InsProductResult2;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+//鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�
+@Data
+public class InsProductResultDto {
+
+    //璁㈠崟id
+    private Integer orderId;
+
+    //鏍峰搧id
+    private Integer sampleId;
+
+    //璇曢獙瀹�
+    private String sonLaboratory;
+
+    //棰戠巼闆嗗悎
+    private String frequency;
+
+    //妫�楠岀粨鏋�
+    private List<InsProductResult2> insProductResult2s;
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
index 6524a52..f014909 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
@@ -30,6 +30,8 @@
     List<InsProduct> selectFiberInsProduct(List<Integer> ids, String laboratory);
 
     IPage<InsProduct> selectNoProducts(Page page, Integer orderId);
+
+    int selectInsProductCountByOrderId(int orderId);
 }
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java
new file mode 100644
index 0000000..5dda5c7
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java
@@ -0,0 +1,18 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.InsProductResult;
+import com.yuanchu.mom.pojo.InsProductResult2;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恑ns_product_result2(妫�楠岄」鐩殑缁撴灉)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-03-28 10:29:37
+* @Entity com.yuanchu.mom.pojo.InsProductResult2
+*/
+public interface InsProductResult2Mapper extends BaseMapper<InsProductResult2> {
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResultMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResultMapper.java
index fac0f94..a8e8d98 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResultMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResultMapper.java
@@ -13,8 +13,6 @@
 * @Entity com.yuanchu.mom.pojo.InsProductResult
 */
 public interface InsProductResultMapper extends BaseMapper<InsProductResult> {
-
-    List<InsProductResult> selDetail(@Param("ips") List<Integer> ips);
 }
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
index ee1cdc3..55f7297 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
@@ -41,12 +41,6 @@
 
     List<InsProduct> getInsProduct1(Integer id, String laboratory);
 
-    List<InsProduct> getInsProduct2(Integer id);
-
-    List<InsProduct> getInsProduct3(Integer id);
-
-    List<InsProduct> getInsProduct4(Integer id);
-
     List<Map<String, Object>> getReportModel(@Param("orderId") Integer orderId, @Param("id") Integer id, @Param("laboratory") String laboratory);
 
     SampleVo getDetailById(Integer sampleId);
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
index af2713f..0b435c1 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
@@ -82,4 +82,9 @@
     //椤垫暟
     @TableField(exist = false,select = false)
     private Integer size;
+
+    /**
+     * 閽堝鐢佃矾璇曢獙閫夋嫨鐨勭増鏈�
+     */
+    private Integer version;
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java
index 8df3108..0394900 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProduct.java
@@ -176,7 +176,7 @@
     private String lastValue;
 
     /**
-     * 1锛氬悎鏍� 0锛氫笉鍚堟牸
+     * 1锛氬悎鏍� 0锛氫笉鍚堟牸 3:涓嶅垽瀹�
      */
     private Integer insResult;
 
@@ -221,6 +221,9 @@
     private InsProductResult insProductResult;
 
     @TableField(exist = false)
+    private List<InsProductResult2> insProductResult2;
+
+    @TableField(exist = false)
     private String templateName;
 
     private String dic;
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java
new file mode 100644
index 0000000..faac854
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java
@@ -0,0 +1,78 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 妫�楠岄」鐩殑缁撴灉(鍙拡瀵圭數璺瘯楠�,涓庨」鐩殑鍏崇郴鏄竴瀵瑰)
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-04 03:58:50
+ */
+@Data
+@TableName("ins_product_result_2")
+@ApiModel(value = "InsProductResult2瀵硅薄", description = "妫�楠岄」鐩殑缁撴灉(鍙拡瀵圭數璺瘯楠�,涓庨」鐩殑鍏崇郴鏄竴瀵瑰)")
+public class InsProductResult2 implements Serializable {
+
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("澶栭敭锛氭楠岄」鐩甶d")
+    private Integer insProductId;
+
+    @ApiModelProperty("璁惧缂栫爜")
+    private String equipValue;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String equipName;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("棰戠巼")
+    private String frequency;
+    @ApiModelProperty("棰戠巼")
+    private String often;
+
+    @ApiModelProperty("绔彛")
+    private String port;
+
+    @ApiModelProperty("瑙掑害")
+    private String angle;
+
+    @ApiModelProperty("鍊�")
+    private String value;
+
+    @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸")
+    private Integer result;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
index 88c2c4a..600e748 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -2,8 +2,10 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.dto.InsOrderPlanDTO;
+import com.yuanchu.mom.dto.InsProductResultDto;
 import com.yuanchu.mom.pojo.InsOrderFile;
 import com.yuanchu.mom.pojo.InsProduct;
+import com.yuanchu.mom.vo.InsProductResultVo;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -20,7 +22,11 @@
 
     boolean claimInsOrderPlan(InsOrderPlanDTO entity);
 
+    //鏅�氱殑淇濆瓨妫�楠屽唴瀹�
     void saveInsContext(Map<String, Object> insContext);
+
+    //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�
+    List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos);
 
     Map<String, Object> doInsOrder(Integer id, String laboratory);
 
@@ -43,4 +49,8 @@
     Map<String,Object> temCycle(Integer sampleId, String inspectionItem, String inspectionItemSubclass);
 
     List<String> upPlanUser2(Integer orderId);
+
+    int deleteInsContext(InsProductResultVo insProductResultVo);
+
+    int deleteInsContext2(String frequency, Integer productId, String often);
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductResult2Service.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductResult2Service.java
new file mode 100644
index 0000000..3b0eb8d
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductResult2Service.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.InsProductResult2;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 妫�楠岄」鐩殑缁撴灉(鍙拡瀵圭數璺瘯楠�,涓庨」鐩殑鍏崇郴鏄竴瀵瑰) 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-04 03:58:50
+ */
+public interface InsProductResult2Service extends IService<InsProductResult2> {
+
+}
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();
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
index 004cbf1..bafa574 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -195,13 +195,16 @@
             count.getAndIncrement();
             a.setId(null);
             a.setInsOrderId(insOrder.getId());
+            //鏍峰搧缂栧彿
             if (StrUtil.isEmpty(a.getSampleCode())) {
                 a.setSampleCode("TX(WYQJ)-" + giveCode.split("-")[2] + "-" + count.get());
             }
             insSampleMapper.insert(a);
+            //鏍峰搧鐨勬楠岄」鐩�
             if (ObjectUtil.isNotEmpty(a.getInsProduct())) {
-                addInsProductMethod(a.getId(), a.getInsProduct(), null, 0, false);
+                addInsProductMethod(a.getId(), a.getInsProduct(), null, 0);
             }
+            //鏍峰搧鐨勬楠屾爣鍑�
             if (ObjectUtil.isNotEmpty(a.getInsulating())) {
                 List<InsProduct> ip2 = new ArrayList<>();
                 for (Integer i = 0; i < a.getInsulating().getNum(); i++) {
@@ -210,14 +213,16 @@
                 for (InsProduct product : ip2) {
                     product.setStandardMethodListId(a.getInsulating().getStandardMethodListId());
                 }
-                addInsProductMethod(a.getId(), ip2, null, 0, false);
+                addInsProductMethod(a.getId(), ip2, null, 0);
             }
+            //鏍峰搧鐨勬楠屾爣鍑�
             if (ObjectUtil.isNotEmpty(a.getSheath())) {
                 for (InsProduct product : a.getSheath().getInsProduct()) {
                     product.setStandardMethodListId(a.getSheath().getStandardMethodListId());
                 }
-                addInsProductMethod(a.getId(), a.getSheath().getInsProduct(), null, 0, false);
+                addInsProductMethod(a.getId(), a.getSheath().getInsProduct(), null, 0);
             }
+            //瀛愭牱鍝侀厤缃�
             if (ObjectUtil.isNotEmpty(a.getChildSampleList())) {
                 for (SampleProductDto b : a.getChildSampleList()) {
                     for (int i = 0; i < b.getNum(); i++) {
@@ -229,12 +234,13 @@
                         }
                         insSampleMapper.insert(b);
                         if (ObjectUtil.isNotEmpty(b.getInsProduct())) {
-                            addInsProductMethod(b.getId(), b.getInsProduct(), null, 0, false);
+                            addInsProductMethod(b.getId(), b.getInsProduct(), null, 0);
                         }
                     }
                 }
             }
-            if (ObjectUtil.isEmpty(a.getInsProduct()) && ObjectUtil.isNotEmpty(a.getBushing())) {
+            //鍏夌氦閰嶇疆
+            /*if (ObjectUtil.isEmpty(a.getInsProduct()) && ObjectUtil.isNotEmpty(a.getBushing())) {
                 for (BushingDto bushingDto : a.getBushing()) {
                     bushingDto.setInsSampleId(a.getId());
                     insBushingMapper.insert(bushingDto);
@@ -242,7 +248,7 @@
                         for (FiberDto fiberDto : bushingDto.getFiber()) {
                             fiberDto.setInsBushingId(bushingDto.getId());
                             insFiberMapper.insert(fiberDto);
-                            addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2, false);
+                            addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2);
                         }
                     } else {
                         for (FibersDto fibersDto : bushingDto.getFibers()) {
@@ -252,15 +258,16 @@
                             for (FiberDto fiberDto : fibersDto.getFiber()) {
                                 fiberDto.setInsFibersId(fibersDto.getId());
                                 insFiberMapper.insert(fiberDto);
-                                addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2, false);
+                                addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2);
                             }
-                            addInsProductMethod(a.getId(), fibersDto.getProductList(), fibersDto.getId(), 1, false);
+                            addInsProductMethod(a.getId(), fibersDto.getProductList(), fibersDto.getId(), 1);
                         }
                     }
                 }
-            }
+            }*/
         });
-        for (List<Integer> i : pairing) {
+        //澶氫釜鏍峰搧灏辨嫾鎺�
+        /*for (List<Integer> i : pairing) {
             SampleProductDto sample = JSON.parseObject(JSON.toJSONString(list.get(i.get(0) - 1)), SampleProductDto.class);
             sample.setSampleCode(list.get(i.get(0) - 1).getSampleCode() + "/" + list.get(i.get(1) - 1).getSampleCode());
             sample.setId(null);
@@ -274,7 +281,7 @@
                 }
             } catch (Exception e) {
             }
-        }
+        }*/
         //閫氫俊:濡傛灉鏄疌绫昏鍗曟棤闇�瀹℃牳鐩存帴閫氳繃
         if (insOrder.getOrderType().equals("C")) {
             insOrder.setState(1);
@@ -283,31 +290,27 @@
         return insOrder.getId();
     }
 
-    private void addInsProductMethod(Integer sampleId, List<InsProduct> productList, Integer id, Integer type, Boolean is) {
-        InsOrder insOrder = insOrderMapper.selectById(insSampleMapper.selectById(sampleId).getInsOrderId());
-        String name = insSampleMapper.selMethodById(sampleId);
+    private void addInsProductMethod(Integer sampleId, List<InsProduct> productList, Integer id, Integer type) {
         for (InsProduct product : productList) {
-            if (product.getState() == 1 && !product.getInspectionItem().equals("鍏夌氦鎺ュご鎹熻��")) {
-                if (!is) {
-                    switch (type) {
-                        case 1:
-                            product.setInsFibersId(id);
-                            break;
-                        case 2:
-                            product.setInsFiberId(id);
-                            break;
-                    }
-                    product.setId(null);
-                    product.setCreateTime(null);
-                    product.setCreateUser(null);
-                    product.setUpdateTime(null);
-                    product.setUpdateUser(null);
-                    product.setInsSampleId(sampleId);
-                    if (product.getInspectionItemSubclass() == null) {
-                        product.setInspectionItemSubclass("");
-                    }
-                    insProductMapper.insert(product);
+            if (product.getState() == 1 ) {
+                switch (type) {
+                    case 1:
+                        product.setInsFibersId(id);
+                        break;
+                    case 2:
+                        product.setInsFiberId(id);
+                        break;
                 }
+                product.setId(null);
+                product.setCreateTime(null);
+                product.setCreateUser(null);
+                product.setUpdateTime(null);
+                product.setUpdateUser(null);
+                product.setInsSampleId(sampleId);
+                if (product.getInspectionItemSubclass() == null) {
+                    product.setInspectionItemSubclass("");
+                }
+                insProductMapper.insert(product);
             }
         }
     }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductResult2ServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductResult2ServiceImpl.java
new file mode 100644
index 0000000..6785f2b
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductResult2ServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.mapper.InsProductResult2Mapper;
+import com.yuanchu.mom.pojo.InsProductResult2;
+import com.yuanchu.mom.service.InsProductResult2Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 妫�楠岄」鐩殑缁撴灉(鍙拡瀵圭數璺瘯楠�,涓庨」鐩殑鍏崇郴鏄竴瀵瑰) 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-04 03:58:50
+ */
+@Service
+public class InsProductResult2ServiceImpl extends ServiceImpl<InsProductResult2Mapper, InsProductResult2> implements InsProductResult2Service {
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
index 2ed3016..a7bbee6 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
@@ -51,5 +51,6 @@
     private Integer orderStateId;
 
     private Integer sort;
+    private Integer version;
 
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java
new file mode 100644
index 0000000..68711b1
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+//鍒犻櫎棰戞
+public class InsProductResultVo {
+
+    //棰戞
+    private String frequency;
+
+    //椤圭洰id
+    private List<Integer> productIds;
+}
diff --git a/inspect-server/src/main/resources/mapper/InsProductMapper.xml b/inspect-server/src/main/resources/mapper/InsProductMapper.xml
index dc00e69..4394f11 100644
--- a/inspect-server/src/main/resources/mapper/InsProductMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsProductMapper.xml
@@ -108,4 +108,14 @@
                 and state = 1
                 and is2.ins_order_id = #{orderId}) A
     </select>
+
+    <select id="selectInsProductCountByOrderId" resultType="int">
+        select COUNT(1)
+        from ins_product ip
+                 left join ins_sample isa on ip.ins_sample_id = isa.id
+                 left join ins_order io on isa.ins_order_id = io.id
+        where io.id = #{orderId}
+          and (ip.ins_result is null or ip.ins_result = 2)
+          and ip.state = 1
+    </select>
 </mapper>
diff --git a/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml b/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml
new file mode 100644
index 0000000..de575c0
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml
@@ -0,0 +1,23 @@
+锘�<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.InsProductResult2Mapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.InsProductResult2">
+        <id column="id" property="id" />
+        <result column="ins_product_id" property="insProductId" />
+        <result column="equip_value" property="equipValue" />
+        <result column="equip_name" property="equipName" />
+        <result column="create_user" property="createUser" />
+        <result column="update_user" property="updateUser" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="frequency" property="frequency" />
+        <result column="often" property="often" />
+        <result column="port" property="port" />
+        <result column="angle" property="angle" />
+        <result column="value" property="value" />
+        <result column="result" property="result" />
+    </resultMap>
+
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml b/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml
index 74c6e90..fafc88a 100644
--- a/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml
@@ -15,17 +15,5 @@
         <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
-    <select id="selDetail" resultMap="BaseResultMap">
-        select *
-        from ins_product_result
-        where 1=1
-            <!--and ins_product_id in (#{ips})-->
-        <if test="ips != null and ips.size() > 0">
-            <!-- 浣跨敤foreach鍏冪礌鏋勫缓IN瀛愬彞 -->
-            and ins_product_id in
-            <foreach item="item" collection="ips" open="(" separator="," close=")">
-                #{item}
-            </foreach>
-        </if>
-    </select>
+
 </mapper>
diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
index f139200..6c68844 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -27,7 +27,7 @@
     <select id="findInsSampleAndOrder" resultType="com.yuanchu.mom.vo.InsOrderPlanVO">
         select * from(select * from(
         SELECT
-        a.*,ios.ins_state,ios.verify_tell,verify_user,ios.id orderStateId,ios.create_time,ios.sort,sort_time
+        a.*,ios.ins_state,ios.verify_tell,verify_user,ios.id orderStateId,ios.create_time,ios.sort,sort_time,version
         FROM
         (
         SELECT
@@ -126,7 +126,7 @@
         LEFT JOIN user ON isu.user_id = user.id
         WHERE
         io.state = 1
---         # AND io.ins_state != 5
+        -- # AND io.ins_state != 5
         and send_time is not null
         <if test="userId !=null and userId!=''">
             and (isu.user_id = #{userId} OR isu.user_id is NULL )
@@ -161,58 +161,68 @@
 
     <select id="selectSampleProductListByOrderId" resultMap="sampleDto">
         select isa.*,
-               ip.id          ip_id,
-               inspection_item,
-               inspection_item_en,
-               inspection_item_class,
-               inspection_item_class_en,
-               inspection_item_subclass,
-               inspection_item_subclass_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
-               son_laboratory,
-               ip.unit        ip_unit,
-               price,
-               man_hour,
-               man_hour_group,
-               inspection_item_type,
-               inspection_value_type,
-               device_group,
-               checkout_number,
-               section,
-               value_type,
-               method,
-               man_day,
-               bsm,
-               ask,
-               tell,
-               `last_value`,
-               ip.ins_result  ip_ins_result,
-               state,
-               ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
-               template_id,
-               ipr.ins_value,
-               ipr.com_value,
-               ipr.equip_value,
-               ip.method_s
+        ip.id ip_id,
+        inspection_item,
+        inspection_item_en,
+        inspection_item_class,
+        inspection_item_class_en,
+        inspection_item_subclass,
+        inspection_item_subclass_en,
+        ip.factory ip_factory,
+        ip.laboratory ip_laboratory,
+        ip.sample_type ip_sample_type,
+        ip.sample ip_sample,
+        ip.model ip_model,
+        son_laboratory,
+        ip.unit ip_unit,
+        price,
+        man_hour,
+        man_hour_group,
+        inspection_item_type,
+        inspection_value_type,
+        device_group,
+        checkout_number,
+        section,
+        value_type,
+        method,
+        man_day,
+        bsm,
+        ask,
+        tell,
+        `last_value`,
+        ip.ins_result ip_ins_result,
+        state,
+        ins_sample_id,
+        ip.create_user ip_create_user,
+        ip.update_user ip_update_user,
+        ip.create_time ip_create_time,
+        ip.update_time ip_update_time,
+        template_id,
+        ipr.ins_value,
+        ipr.com_value,
+        ipr.equip_value,
+        ipr2.frequency,
+        ipr2.often,
+        ipr2.port,
+        ipr2.angle,
+        ipr2.value,
+        ipr2.result,
+        ipr2.equip_value equipValue2,
+        ipr2.equip_name equipName2,
+        ip.method_s
         from ins_sample isa
-                 left join ins_product ip on isa.id = ip.ins_sample_id
-                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+        left join ins_product ip on isa.id = ip.ins_sample_id
+        left join ins_product_result ipr on ip.id = ipr.ins_product_id
+        left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
         where ins_order_id = #{id}
-          and state = 1
---           and ins_fiber_id is null
---           and ins_fibers_id is null
-          and <!--isa.sample_code NOT REGEXP '/'-->
-            isa.id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
+        and state = 1
+        -- and ins_fiber_id is null
+        -- and ins_fibers_id is null
+        and <!--isa.sample_code NOT REGEXP '/'-->
+        isa.id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id =
+        ip.ins_sample_id where ip.id is not null)s )
         order by case when man_hour_group is NULL then 1
-        when man_hour_group ='' then 1  else 0 end,
+        when man_hour_group ='' then 1 else 0 end,
         CASE
         WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
         WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
@@ -260,6 +270,14 @@
                ipr.com_value,
                ipr.equip_value,
                ipr.equip_name,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name equipName2,
                ip.method_s,
                ip.tell,
                ip.dic,
@@ -268,6 +286,7 @@
         from ins_sample isa
                  left join ins_product ip on isa.id = ip.ins_sample_id
                  left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
         where ins_order_id = #{id}
           and state = 1
           and ip.son_laboratory = #{laboratory}
@@ -320,19 +339,31 @@
                ipr.ins_value,
                ipr.com_value,
                ipr.equip_value,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name equipName2,
                ip.method_s
         from ins_sample isa
                  left join ins_product ip on isa.id = ip.ins_sample_id
                  left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
         where ins_order_id = #{id}
           and ip.standard_method_list_id is not null
           and state = 1
-        order by case when man_hour_group is NULL then 1
-                      when man_hour_group ='' then 1  else 0 end,
+        order by case
+                     when man_hour_group is NULL then 1
+                     when man_hour_group = '' then 1
+                     else 0 end,
                  CASE
                      WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
-                     WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
-                ,id asc
+                     WHEN man_hour_group REGEXP '[0-9]+'
+                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+                , id asc
     </select>
 
     <select id="selectSampleProductListByOrderId3" resultMap="sampleDto3">
@@ -353,7 +384,6 @@
         ins_sample_id
         from ins_sample isa
         left join ins_product ip on isa.id = ip.ins_sample_id
-        left join ins_product_result ipr on ip.id = ipr.ins_product_id
         left join ins_order io on io.id = ins_order_id
         where ip.state = 1
         and ins_order_id in
@@ -361,7 +391,7 @@
             #{id}
         </foreach>
         order by case when man_hour_group is NULL then 1
-        when man_hour_group ='' then 1  else 0 end,
+        when man_hour_group ='' then 1 else 0 end,
         CASE
         WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
         WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
@@ -409,11 +439,20 @@
                ipr.com_value,
                ipr.equip_value,
                ipr.equip_name,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name equipName2,
                ip.method_s,
                ip.tell,
                ip.dic
         from ins_product ip
                  left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
         where ins_sample_id = #{id}
           and state = 1
           and ip.son_laboratory = #{laboratory}
@@ -421,161 +460,7 @@
           and ins_fibers_id is null
           and standard_method_list_id is not null
     </select>
-    <select id="getInsProduct2" resultMap="product">
-        select ip.id          ip_id,
-               inspection_item,
-               inspection_item_en,
-               inspection_item_class,
-               inspection_item_class_en,
-               inspection_item_subclass,
-               inspection_item_subclass_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
-               son_laboratory,
-               ip.unit        ip_unit,
-               price,
-               man_hour,
-               man_hour_group,
-               inspection_item_type,
-               inspection_value_type,
-               device_group,
-               checkout_number,
-               section,
-               value_type,
-               method,
-               man_day,
-               bsm,
-               ask,
-               `last_value`,
-               ip.ins_result  ip_ins_result,
-               state,
-               ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
-               template_id,
-               ipr.ins_value,
-               ipr.com_value,
-               ipr.equip_value,
-               ipr.equip_name,
-               ip.method_s,
-               ip.tell,
-               ip.dic
-        from ins_product ip
-                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
-        where ins_fibers_id = #{id}
-          and state = 1
-          and ins_fiber_id is null
-          and standard_method_list_id is not null
-    </select>
-    <select id="getInsProduct3" resultMap="product">
-        select ip.id          ip_id,
-               inspection_item,
-               inspection_item_en,
-               inspection_item_class,
-               inspection_item_class_en,
-               inspection_item_subclass,
-               inspection_item_subclass_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
-               son_laboratory,
-               ip.unit        ip_unit,
-               price,
-               man_hour,
-               man_hour_group,
-               inspection_item_type,
-               inspection_value_type,
-               device_group,
-               checkout_number,
-               section,
-               value_type,
-               method,
-               man_day,
-               bsm,
-               ask,
-               `last_value`,
-               ip.ins_result  ip_ins_result,
-               state,
-               ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
-               template_id,
-               ipr.ins_value,
-               ipr.com_value,
-               ipr.equip_value,
-               ipr.equip_name,
-               ip.method_s,
-               ip.tell,
-               ip.dic
-        from ins_product ip
-                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
-        where ins_fiber_id = #{id}
-          and state = 1
-          and ins_fibers_id is null
-          and standard_method_list_id is not null
-    </select>
 
-    <select id="getInsProduct4" resultMap="product">
-        select ip.id          ip_id,
-               inspection_item,
-               inspection_item_en,
-               inspection_item_class,
-               inspection_item_class_en,
-               inspection_item_subclass,
-               inspection_item_subclass_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
-               ip.ins_bush_id,
-               son_laboratory,
-               ip.unit        ip_unit,
-               price,
-               man_hour,
-               man_hour_group,
-               inspection_item_type,
-               inspection_value_type,
-               device_group,
-               checkout_number,
-               section,
-               value_type,
-               method,
-               man_day,
-               bsm,
-               ask,
-               `last_value`,
-               ip.ins_result  ip_ins_result,
-               state,
-               ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
-               template_id,
-               ipr.ins_value,
-               ipr.com_value,
-               ipr.equip_value,
-               ipr.equip_name,
-               ip.method_s,
-               ip.tell,
-               ip.dic
-        from ins_product ip
-                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
-        where ins_bush_id = #{id}
-          and state = 1
-          and ins_fibers_id is null
-          and standard_method_list_id is not null
-    </select>
     <select id="getReportModel" resultType="java.util.Map">
     </select>
 
@@ -649,6 +534,7 @@
         <result property="temperature" column="temperature"/>
         <result property="humidity" column="humidity"/>
         <collection property="insProductResult" resultMap="insProductResult"/>
+        <collection property="insProductResult2" resultMap="insProductResult2"/>
     </resultMap>
 
     <resultMap id="sampleDto3" type="com.yuanchu.mom.dto.SampleProductDto3">
@@ -684,6 +570,16 @@
         <result property="equipValue" column="equip_value" jdbcType="VARCHAR"/>
         <result property="equipName" column="equip_name" jdbcType="VARBINARY"/>
     </resultMap>
+    <resultMap id="insProductResult2" type="com.yuanchu.mom.pojo.InsProductResult2">
+        <result column="frequency" property="frequency" jdbcType="VARCHAR"/>
+        <result column="often" property="often" jdbcType="VARCHAR"/>
+        <result column="port" property="port" jdbcType="VARCHAR"/>
+        <result column="angle" property="angle" jdbcType="VARCHAR"/>
+        <result column="value" property="value" jdbcType="VARCHAR"/>
+        <result column="result" property="result" jdbcType="INTEGER"/>
+        <result property="equipValue" column="equipValue2" jdbcType="VARCHAR"/>
+        <result property="equipName" column="equipName2" jdbcType="VARBINARY"/>
+    </resultMap>
 
     <resultMap id="sampleVo" type="com.yuanchu.mom.vo.SampleVo">
         <id property="id" column="id" jdbcType="INTEGER"/>
diff --git a/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java b/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java
index 745d38b..7e8cf42 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java
@@ -127,4 +127,8 @@
     @ApiModelProperty("宸ユ椂鍒嗙粍")
     @ExcelIgnore
     private String manHourGroup;
+
+    @ApiModelProperty("妫�楠岄」鐩甶d")
+    @ExcelIgnore
+    private Integer insProductId;
 }
diff --git a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
index 4db8694..16dffd5 100644
--- a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
+++ b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -16,13 +16,13 @@
 // 婕旂ず渚嬪瓙锛屾墽琛� main 鏂规硶鎺у埗鍙拌緭鍏ユā鍧楄〃鍚嶅洖杞﹁嚜鍔ㄧ敓鎴愬搴旈」鐩洰褰曚腑
 public class CodeGenerator {
 
-    public static String database_url = "jdbc:mysql://localhost:3306/aaa?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
-    public static String database_username = "root";
-    public static String database_password= "123456";
+    public static String database_url = "jdbc:mysql://10.1.13.77:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
+    public static String database_username = "remote_user";
+    public static String database_password= "zttZTT123!";
     public static String author = "姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃";
-    public static String model_name = "/cnas-server"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
+    public static String model_name = "/inspect-server"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
     public static String setParent = "com.yuanchu.mom"; // 鍖呰矾寰�
-    public static String tablePrefix = "device_"; // 璁剧疆杩囨护琛ㄥ墠缂�
+    public static String tablePrefix = ""; // 璁剧疆杩囨护琛ㄥ墠缂�
     public static void main(String[] args) {
         String projectPath = System.getProperty("user.dir");
         FastAutoGenerator.create(database_url, database_username, database_password)
diff --git a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
index 16d332d..855000f 100644
--- a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
+++ b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -1,7 +1,9 @@
 package com.yuanchu.mom;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.yuanchu.mom.exception.ErrorException;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.el.lang.ExpressionBuilder;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -16,6 +18,7 @@
 import java.time.temporal.TemporalAdjusters;
 import java.time.temporal.WeekFields;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 import java.util.regex.Matcher;
@@ -28,6 +31,16 @@
 
     @Test
     void contextLoads() {
+        String str =  "[[\"5\",\"5\",\"5\",\"5\"]]";
+         str = str.substring(1, str.length() - 1);
+        for (String s1 :str.split("\\],\\[")) {
+            String[] strings = Arrays.stream(s1.substring(1, str.length() - 1).split(","))
+                    .map(s -> s.replace("\"", ""))
+                    .toArray(String[]::new);
+            for (String string : strings) {
+                System.out.println(string);
+            }
+        }
     }
 
 

--
Gitblit v1.9.3