From 924d018e6e6f15effbd272cead5dff67cd3b93a5 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期三, 23 八月 2023 16:22:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineChartVO.java                                 |   17 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/StatisticsDataVo.java                            |   18 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java                                 |    2 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/HomeServiceImpl.java                        |  249 ++++++++++++
 inspection-server/src/main/resources/mapper/PlanMapper.xml                                                          |    4 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/IprInfo.java                                        |   19 +
 inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml                                   |  151 +++++++
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductModelController.java                     |    6 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java                      |    8 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java                |   10 
 inspection-server/src/main/resources/mapper/InspectionMapper.xml                                                    |  137 +++++++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java            |    9 
 inspection-server/src/main/resources/mapper/InspectionProductMapper.xml                                             |   25 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java    |    8 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java                      |   14 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/HomeService.java                                 |   36 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java                      |    7 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java          |    2 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductModelService.java                           |    6 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java                                  |   10 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java                 |    4 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java                     |    8 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java |  153 +++++++-
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java                             |   44 ++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java                                         |   35 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterial.java                             |    8 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineSeriesVO.java                                |   16 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java                        |   35 +
 laboratory-server/src/main/resources/mapper/InstrumentMapper.xml                                                    |   18 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java                           |   42 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectProjectByCodeAndNameDto.java              |   25 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ProjectNumVo.java                                |    4 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java                  |    5 
 33 files changed, 1,019 insertions(+), 116 deletions(-)

diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java
index 04a96f4..72c98df 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/HomeController.java
@@ -1,19 +1,21 @@
 package com.yuanchu.limslaboratory.controller;
 
 
-import com.yuanchu.limslaboratory.pojo.ProjectNum;
+import com.yuanchu.limslaboratory.pojo.vo.ProjectNumVo;
+import com.yuanchu.limslaboratory.pojo.vo.StatisticsDataVo;
 import com.yuanchu.limslaboratory.service.HomeService;
 import com.yuanchu.limslaboratory.vo.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 棣栭〉
@@ -28,10 +30,40 @@
     @Resource
     HomeService homeService;
 
-    @ApiOperation("璁$畻妫�楠屼笌鏈楠岀殑鍗曞瓙涓庨」鐩殑鏁伴噺鎺ュ彛")
+    @ApiOperation("璁$畻妫�楠屼笌鏈楠岀殑鍗曞瓙涓庨」鐩殑鏁伴噺")
     @GetMapping("/checkProjectNum")
     public Result checkProjectNum() {
-        ProjectNum projectNum=homeService.checkProjectNum();
-        return Result.success(projectNum);
+        ProjectNumVo projectNumVo =homeService.checkProjectNum();
+        return Result.success(projectNumVo);
+    }
+
+    @ApiOperation("宸叉楠宼op3")
+    @GetMapping("/checktop3")
+    public Result checktop3() {
+        List<Map<String, Object>> checktop3s =homeService.checktop3();
+        return Result.success(checktop3s);
+    }
+
+    @ApiOperation("鏈楠宼op4")
+    @GetMapping("/unchecktop4")
+    public Result unchecktop4() {
+        List<Map<String, Object>> unchecktop4s =homeService.unchecktop4();
+        return Result.success(unchecktop4s);
+    }
+
+    @ApiOperation("璁$畻鍘熸潗鏂欎笌鎴愬搧鐨勫悎鏍肩巼")
+    @GetMapping("/qualified")
+    public Result qualified() {
+        StatisticsDataVo statisticsData =homeService.qualified();
+        return Result.success(statisticsData);
+    }
+
+    @ApiOperation("缁熻")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "type", value = "1:鏈懆;2:鏈湀;3:鏈勾", dataTypeClass = Integer.class, required = true)
+    })
+    @GetMapping("/turno")
+    public Result turno(Integer type) {
+        return Result.success(homeService.turno(type));
     }
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
index 321f720..29ed397 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
@@ -110,10 +110,10 @@
     }
 
     @ApiOperation(value = "淇濆瓨妫�楠岄」鐩矗浠讳汉")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "id", value = "妫�楠屽崟椤圭洰id", dataTypeClass = Integer.class, required = true),
-            @ApiImplicitParam(name = "userProId", value = "璐d换浜篿d", dataTypeClass = Integer.class, required = true)
-    })
+        @ApiImplicitParams(value = {
+                @ApiImplicitParam(name = "id", value = "妫�楠屽崟椤圭洰id", dataTypeClass = Integer.class, required = true),
+                @ApiImplicitParam(name = "userProId", value = "璐d换浜篿d", dataTypeClass = Integer.class, required = true)
+        })
     @GetMapping("/chooseUseProId")
     public Result chooseUseProId(Integer id,Integer userProId) {
         return Result.success(inspectionService.chooseUseProId(id,userProId));
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java
index 4f3c981..53e8c38 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java
@@ -32,19 +32,27 @@
     @ApiOperation("鏌ヨ妫�楠屾牱鍝佸悎鏍肩巼缁熻")
     @GetMapping("/getTestSampleStatistics")
     public Result<?> getTestSampleStatistics(SelectQualificationRateDto dto){
+        System.out.println("getTestSampleStatistics______________>"+dto);
         return Result.success(service.getTestSampleStatistics(dto));
     }
 
     @ApiOperation("鏌ヨ渚涘簲鍟嗕笉鍚堟牸缁熻娆℃暟")
     @GetMapping("/getSupplierNoPassStatistics")
     public Result<?> getSupplierNoPassStatistics(SelectQualificationRateDto dto){
+        System.out.println("getSupplierNoPassStatistics++++++++++++++++>"+dto);
         return Result.success(service.getSupplierNoPassStatistics(dto));
     }
 
     @ApiOperation("鏌ヨ涓嶅悎鏍奸」鐩粺璁�")
     @GetMapping("/getNoPassProjectStatistics")
     public Result<?> getNoPassProjectStatistics(SelectQualificationRateDto dto){
+        System.out.println("getNoPassProjectStatistics===============>"+dto);
         return Result.success(service.getNoPassProjectStatistics(dto));
     }
 
+    @ApiOperation("鑾峰彇鏍峰搧鍚嶇О")
+    @GetMapping("/getSampleOptions")
+    public Result<?> getSampleOptions(){
+        return Result.success(service.getSampleOptions());
+    }
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
index 5ae9960..adcb5dd 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.pojo.Inspection;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -28,5 +30,47 @@
 
     //璁$畻鏈楠岀殑鏁伴噺
     Integer seleCountUnIns();
+
+    //鑾峰彇妫�楠屽崟鎬绘暟
+    Integer getcount();
+
+    //鑾峰彇妫�楠岀粨璁�,妫�楠屾暟閲�
+    List<Map<String, Object>> getResultNum();
+
+    //璁$畻鍘熸潗鏂欑殑鍚堟牸鐜�
+    Long qualified(Integer b);
+
+    //璁$畻鍘熸潗鏂欐楠屽崟鎬绘暟
+    Integer getallmater();
+
+    //璁$畻鎴愬搧妫�楠屽崟鎬绘暟
+    Integer getallfin();
+
+    //璁$畻鍘熸潗鏂欏悎鏍肩巼
+    Long qualifiedfin(Integer i);
+
+    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欐楠屾暟閲�
+    Integer getMaterByDay(String time);
+
+    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧妫�楠屾暟閲�
+    Integer getFinByDay(String time);
+
+    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欏悎鏍兼暟閲�
+    Long getOkMaterByDay(String time);
+
+    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧鍚堟牸鏁伴噺
+    Long getOkFinByDay(String time);
+
+    //鏌ヨ璇ユ湀鐨勫師鏉愭枡妫�楠屾暟閲�
+    Integer getMaterByMonth(String monthofYear);
+
+    //鏌ヨ璇ユ湀鐨勬垚鍝佹楠屾暟閲�
+    Integer getFinByMonth(String monthofYear);
+
+    //鏌ヨ璇ユ湀鐨勫師鏉愭枡鍚堟牸鐜�
+    Long getOkMaterByMonth(String monthofYear);
+
+    //鏌ヨ璇ユ湀鐨勬垚鍝佸悎鏍肩巼
+    Long getOkFinByMonth(String monthofYear);
 }
 
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java
index 85a64d6..70b37f2 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionProductMapper.java
@@ -4,6 +4,7 @@
 import com.yuanchu.limslaboratory.pojo.InspectionProduct;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鐢宠鍗曚笅鐗╂枡涓殑椤圭洰(InspectionProduct)琛ㄦ暟鎹簱璁块棶灞�
@@ -13,8 +14,7 @@
  */
 public interface InspectionProductMapper extends BaseMapper<InspectionProduct> {
 
-    //鏍规嵁椤圭洰id灏嗗凡鏈夌殑妫�楠岀粨璁烘敼涓簄ull
-    void upda(Integer id);
+
 
     //鏍规嵁妫�楠屽崟id鏌ヨ妫�楠岄」鐩殑妫�楠岀粨鏋�
     List<Integer> getresult(Integer id);
@@ -27,5 +27,8 @@
 
     //璁$畻鏈楠岄」鐩暟閲�
     Integer seleCountUnInspro();
+
+    //妫�楠岄」鐩�,璁惧,妫�楠屽紑濮嬫椂闂�,鎵ц浜�,妫�楠岀粨鏉熸椂闂�
+    List<Map<String, Object>> getResultNum();
 }
 
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java
index 590dc28..8e2eecb 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java
@@ -1,6 +1,8 @@
 package com.yuanchu.limslaboratory.mapper;
 
+import com.yuanchu.limslaboratory.pojo.Dto.SelectProjectByCodeAndNameDto;
 import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto;
+import com.yuanchu.limslaboratory.pojo.ImInfo;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -18,5 +20,12 @@
     @MapKey("id")
     List<Map<String, Object>>selectSupplierByCondition(@Param("dto") SelectQualificationRateDto dto);
 
+    List<ImInfo>selectProjectionsByCondition(@Param("dto")SelectQualificationRateDto dto);
 
+    List<ImInfo>selectProjection(@Param("list") List<SelectProjectByCodeAndNameDto> list,@Param("dto")SelectQualificationRateDto dto);
+
+    @MapKey("id")
+    List<Map<String, Object>> selectTestSamp(@Param("dto") SelectQualificationRateDto dto);
+
+    List<Map<String, Object> >getSampleOptions();
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectProjectByCodeAndNameDto.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectProjectByCodeAndNameDto.java
new file mode 100644
index 0000000..94e1cb4
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectProjectByCodeAndNameDto.java
@@ -0,0 +1,25 @@
+package com.yuanchu.limslaboratory.pojo.Dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/22
+ */
+@Data
+public class SelectProjectByCodeAndNameDto implements Serializable {
+
+    private String code;
+
+    private String name;
+
+    public SelectProjectByCodeAndNameDto() {
+    }
+
+    public SelectProjectByCodeAndNameDto(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+}
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java
index 29d0c71..5281dbe 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectQualificationRateDto.java
@@ -48,5 +48,9 @@
     @ApiModelProperty(value = "渚涘簲鍟�")
     private String supplier;
 
+    @ApiModelProperty(value = "鏍峰搧")
+    private String sample;
 
+    @ApiModelProperty(value = "缂栫爜")
+    private String code;
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java
index 1474065..ef76384 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SeriesDto.java
@@ -13,20 +13,20 @@
 public class SeriesDto implements Serializable {
 
     private String name;
-    private List<Long> data;
+    private List<Double> data;
     private String type;
-    private String stack;
+    //private String stack;
 
-    public SeriesDto(String name, List<Long> data) {
+    public SeriesDto(String name, List<Double> data) {
         this.name = name;
         this.data = data;
         this.type = "bar";
-        this.stack = "x";
+        //this.stack = "x";
     }
 
     public SeriesDto(String name) {
         this.name = name;
         this.type = "bar";
-        this.stack = "x";
+        //this.stack = "x";
     }
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java
new file mode 100644
index 0000000..18819a8
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java
@@ -0,0 +1,35 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/22
+ */
+@Data
+public class ImInfo implements Serializable {
+
+    private Long imId;
+
+    private String imName;
+
+    private String iCode;
+
+    private Integer inspectionStatus;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endTime;
+
+    private List<IprInfo>iprInfos;
+}
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterial.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterial.java
index 55311dc..134e029 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterial.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterial.java
@@ -73,17 +73,13 @@
      **/
     private Integer state;
 
-    /**
-     * ${column.comment}
-     **/
+
     @TableField(fill = FieldFill.INSERT)
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date createTime;
 
-    /**
-     * ${column.comment}
-     **/
+
     @TableField(fill = FieldFill.INSERT_UPDATE)
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/IprInfo.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/IprInfo.java
new file mode 100644
index 0000000..d4d0a13
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/IprInfo.java
@@ -0,0 +1,19 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/22
+ */
+@Data
+public class IprInfo implements Serializable {
+
+    private int iprId;
+
+    private String iprName;
+
+    private Integer testState;
+}
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineChartVO.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineChartVO.java
new file mode 100644
index 0000000..46472e4
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineChartVO.java
@@ -0,0 +1,17 @@
+package com.yuanchu.limslaboratory.pojo.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class LineChartVO {
+
+    private List<String> xAxis = new ArrayList<>();
+    private List<LineSeriesVO> series = new ArrayList<>();
+
+
+}
+
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineSeriesVO.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineSeriesVO.java
new file mode 100644
index 0000000..57e0771
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LineSeriesVO.java
@@ -0,0 +1,16 @@
+package com.yuanchu.limslaboratory.pojo.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class LineSeriesVO {
+
+    private String name;
+
+    private List<Object> data =new ArrayList<>();
+
+
+}
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ProjectNum.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ProjectNumVo.java
similarity index 79%
rename from inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ProjectNum.java
rename to inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ProjectNumVo.java
index 3f9c2e1..5c17ac3 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ProjectNum.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ProjectNumVo.java
@@ -1,9 +1,9 @@
-package com.yuanchu.limslaboratory.pojo;
+package com.yuanchu.limslaboratory.pojo.vo;
 
 import lombok.Data;
 
 @Data
-public class ProjectNum {
+public class ProjectNumVo {
 
     private int insNum;         //宸叉楠岀殑妫�楠屽崟鏁伴噺
     private int insUnNum;       //鏈楠岀殑妫�楠屽崟鏁伴噺
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/StatisticsDataVo.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/StatisticsDataVo.java
new file mode 100644
index 0000000..3a04a2d
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/StatisticsDataVo.java
@@ -0,0 +1,18 @@
+package com.yuanchu.limslaboratory.pojo.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class StatisticsDataVo {
+
+    private BigDecimal material;  //鍘熸潗鏂欏悎鏍肩巼
+    private BigDecimal unmaterial;  //鍘熸潗鏂欎笉鍚堟牸鐜�
+    private BigDecimal notmaterial;  //鍘熸潗鏂欐湭妫�楠岀巼
+
+
+    private BigDecimal finished;  //鎴愬搧鍚堟牸鐜�
+    private BigDecimal unfinished;  //鎴愬搧涓嶅悎鏍肩巼
+    private BigDecimal notfinished;  //鎴愬搧鏈楠岀巼
+}
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/HomeService.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/HomeService.java
index beb6b24..4d24674 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/HomeService.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/HomeService.java
@@ -1,13 +1,45 @@
 package com.yuanchu.limslaboratory.service;
 
-import com.yuanchu.limslaboratory.pojo.ProjectNum;
+import com.yuanchu.limslaboratory.pojo.vo.LineChartVO;
+import com.yuanchu.limslaboratory.pojo.vo.ProjectNumVo;
+import com.yuanchu.limslaboratory.pojo.vo.StatisticsDataVo;
+
+import java.util.List;
+import java.util.Map;
 
 public interface HomeService {
 
     /**
      * 璁$畻妫�楠屼笌鏈楠岀殑鍗曞瓙涓庨」鐩殑鏁伴噺鎺ュ彛
+     *
      * @return
      */
-    ProjectNum checkProjectNum();
+    ProjectNumVo checkProjectNum();
 
+    /**
+     * 宸叉楠宼op3
+     *
+     * @return
+     */
+    List<Map<String, Object>> checktop3();
+
+    /**
+     * 鏈楠宼op4
+     *
+     * @return
+     */
+    List<Map<String, Object>> unchecktop4();
+
+    /**
+     * 璁$畻鍘熸潗鏂欎笌鎴愬搧鐨勫悎鏍肩巼
+     * @return
+     */
+    StatisticsDataVo qualified();
+
+    /**
+     * 缁熻
+     * @param type
+     * @return
+     */
+    LineChartVO turno(Integer type);
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java
index 8c870a6..b519e38 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/PlanService.java
@@ -42,7 +42,7 @@
      * @param value
      * @return
      */
-    String check(Integer id, String value);
+    Integer check(Integer id, String value);
 
     /**
      * 涓婃姤
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java
index 35640c3..9ef152c 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java
@@ -22,4 +22,6 @@
     Map<String, Object> getSupplierNoPassStatistics(SelectQualificationRateDto dto);
 
     Map<String, Object> getNoPassProjectStatistics(SelectQualificationRateDto dto);
+
+    List<Map<String, Object>> getSampleOptions();
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/HomeServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/HomeServiceImpl.java
index e08a03e..ef21304 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/HomeServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/HomeServiceImpl.java
@@ -1,14 +1,25 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yuanchu.limslaboratory.mapper.InspectionMapper;
 import com.yuanchu.limslaboratory.mapper.InspectionProductMapper;
-import com.yuanchu.limslaboratory.pojo.Inspection;
-import com.yuanchu.limslaboratory.pojo.ProjectNum;
+import com.yuanchu.limslaboratory.pojo.vo.LineChartVO;
+import com.yuanchu.limslaboratory.pojo.vo.LineSeriesVO;
+import com.yuanchu.limslaboratory.pojo.vo.ProjectNumVo;
+import com.yuanchu.limslaboratory.pojo.vo.StatisticsDataVo;
 import com.yuanchu.limslaboratory.service.HomeService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.YearMonth;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 
 @Service
@@ -23,16 +34,234 @@
 
     //璁$畻妫�楠屼笌鏈楠岀殑鍗曞瓙涓庨」鐩殑鏁伴噺鎺ュ彛
     @Override
-    public ProjectNum checkProjectNum() {
-        ProjectNum projectNum = new ProjectNum();
+    public ProjectNumVo checkProjectNum() {
+        ProjectNumVo projectNumVo = new ProjectNumVo();
         //宸叉楠岀殑妫�楠屽崟鏁伴噺
-        projectNum.setInsNum(inspectionMapper.seleCountIns());
+        projectNumVo.setInsNum(inspectionMapper.seleCountIns());
         //鏈楠岀殑妫�楠屽崟鏁伴噺
-        projectNum.setInsUnNum(inspectionMapper.seleCountUnIns());
+        projectNumVo.setInsUnNum(inspectionMapper.seleCountUnIns());
         //宸叉楠岀殑妫�楠岄」鐩暟閲�
-        projectNum.setInsproNum(inspectionProductMapper.seleCountInspro());
+        projectNumVo.setInsproNum(inspectionProductMapper.seleCountInspro());
         //鏈楠岀殑妫�楠岄」鐩暟閲�
-        projectNum.setInsproUnNum(inspectionProductMapper.seleCountUnInspro());
-        return projectNum;
+        projectNumVo.setInsproUnNum(inspectionProductMapper.seleCountUnInspro());
+        return projectNumVo;
     }
+
+    //宸叉楠宼op3
+    @Override
+    public List<Map<String, Object>> checktop3() {
+        //鑾峰彇妫�楠屽崟鎬绘暟
+        Integer allIns = inspectionMapper.getcount();
+        //妫�楠岀粨璁�,妫�楠屾暟閲�
+        List<Map<String, Object>> mapList = inspectionMapper.getResultNum();
+        for (Map<String, Object> map : mapList) {
+            //閬嶅巻鑾峰彇鏁伴噺
+            Long num = (Long) map.get("num");
+            //璁$畻鐧惧垎姣斿苟瀛樺叆map涓�
+            map.put("chact", getRadio(allIns, num));
+        }
+        return mapList;
+    }
+
+    //鏈楠宼po4
+    @Override
+    public List<Map<String, Object>> unchecktop4() {
+        //妫�楠岄」鐩�,璁惧,妫�楠屽紑濮嬫椂闂�,鎵ц浜�,妫�楠岀粨鏉熸椂闂�
+        List<Map<String, Object>> mapList = inspectionProductMapper.getResultNum();
+        return mapList;
+    }
+
+    //璁$畻鍘熸潗鏂欎笌鎴愬搧鐨勫悎鏍肩巼
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public StatisticsDataVo qualified() {
+        StatisticsDataVo statisticsDataVo = new StatisticsDataVo();
+        //鍘熸潗鏂欐楠屽崟鎬绘暟
+        Integer allmater = inspectionMapper.getallmater();
+        //鍘熸潗鏂欏悎鏍肩巼
+        Long mater = inspectionMapper.qualified(1);
+        statisticsDataVo.setMaterial(getRadio(allmater, mater));
+        //鍘熸潗鏂欎笉鍚堟牸鐜�
+        Long unmater = inspectionMapper.qualified(0);
+        statisticsDataVo.setUnmaterial(getRadio(allmater, unmater));
+        //鍘熸潗鏂欐湭妫�楠岀巼
+        Long notmater = inspectionMapper.qualified(null);
+        statisticsDataVo.setNotmaterial(getRadio(allmater, notmater));
+
+        //鎴愬搧妫�楠屽崟鎬绘暟
+        Integer allfin = inspectionMapper.getallfin();
+        //鎴愬搧鍚堟牸鐜�
+        Long finished = inspectionMapper.qualifiedfin(1);
+        statisticsDataVo.setFinished(getRadio(allfin, finished));
+        //鎴愬搧涓嶅悎鏍肩巼
+        Long unfinished = inspectionMapper.qualifiedfin(0);
+        statisticsDataVo.setUnfinished(getRadio(allfin, unfinished));
+        //鎴愬搧鏈楠岀巼
+        Long notfinished = inspectionMapper.qualifiedfin(null);
+        statisticsDataVo.setNotfinished(getRadio(allfin, notfinished));
+
+        return statisticsDataVo;
+    }
+
+    //缁熻
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public LineChartVO turno(Integer type) {
+        LineChartVO lineChartVO = new LineChartVO();
+        List<LineSeriesVO> series = new ArrayList<>();
+        //鏋勫缓绗竴涓猯ineSeriesVO1(鍘熸潗鏂欐楠屾暟閲�)
+        LineSeriesVO lineSeriesVO1 = new LineSeriesVO();
+        lineSeriesVO1.setName("鍘熸潗鏂欐楠屾暟閲�");
+        //鏋勫缓绗簩涓猯ineSeriesVO2(鎴愬搧妫�楠屾暟閲�)
+        LineSeriesVO lineSeriesVO2 = new LineSeriesVO();
+        lineSeriesVO2.setName("鎴愬搧妫�楠屾暟閲�");
+        //鏋勫缓绗笁涓猯ineSeriesVO3(鍘熸潗鏂欏悎鏍肩巼)
+        LineSeriesVO lineSeriesVO3 = new LineSeriesVO();
+        lineSeriesVO3.setName("鍘熸潗鏂欏悎鏍肩巼");
+        //鏋勫缓绗洓涓猯ineSeriesVO4(鎴愬搧鍚堟牸鐜�)
+        LineSeriesVO lineSeriesVO4 = new LineSeriesVO();
+        lineSeriesVO4.setName("鎴愬搧鍚堟牸鐜�");
+        List<Object> list1 = new ArrayList<>();
+        List<Object> list2 = new ArrayList<>();
+        List<Object> list3 = new ArrayList<>();
+        List<Object> list4 = new ArrayList<>();
+        switch (type) {
+            /*鏈懆*/
+            case 1:
+                List<String> dayofWeeks = getDayofWeeks();
+                lineChartVO.setXAxis(dayofWeeks);
+                for (String dayofWeek : dayofWeeks) {
+                    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欐楠屾暟閲�
+                    Integer allMaterByDay = inspectionMapper.getMaterByDay(dayofWeek);
+                    list1.add(allMaterByDay);
+                    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧妫�楠屾暟閲�
+                    Integer allFinByDay = inspectionMapper.getFinByDay(dayofWeek);
+                    list2.add(allFinByDay);
+                    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欏悎鏍肩巼
+                    Long okMaterByDay = inspectionMapper.getOkMaterByDay(dayofWeek);
+                    list3.add(getRadio(allMaterByDay, okMaterByDay));
+                    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧鍚堟牸鐜�
+                    Long okFinByDay = inspectionMapper.getOkFinByDay(dayofWeek);
+                    list4.add(getRadio(allFinByDay, okFinByDay));
+                }
+                break;
+            /*鏈湀*/
+            case 2:
+                List<String> dayofMonths = getDayofMonth();
+                lineChartVO.setXAxis(dayofMonths);
+                for (String dayofMonth : dayofMonths) {
+                    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欐楠屾暟閲�
+                    Integer allMaterByDay = inspectionMapper.getMaterByDay(dayofMonth);
+                    list1.add(allMaterByDay);
+                    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧妫�楠屾暟閲�
+                    Integer allFinByDay = inspectionMapper.getFinByDay(dayofMonth);
+                    list2.add(allFinByDay);
+                    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欏悎鏍肩巼
+                    Long okMaterByDay = inspectionMapper.getOkMaterByDay(dayofMonth);
+                    list3.add(getRadio(allMaterByDay, okMaterByDay));
+                    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧鍚堟牸鐜�
+                    Long okFinByDay = inspectionMapper.getOkFinByDay(dayofMonth);
+                    list4.add(getRadio(allFinByDay, okFinByDay));
+                }
+                break;
+            /*鏈勾*/
+            case 3:
+                List<String> monthofYears = getMonthofYear();
+                lineChartVO.setXAxis(monthofYears);
+                for (String monthofYear : monthofYears) {
+                    //鏌ヨ璇ユ棩鏈熻寖鍥村唴鐨勫師鏉愭枡妫�楠屾暟閲�
+                    Integer allMaterByDay = inspectionMapper.getMaterByMonth(monthofYear);
+                    list1.add(allMaterByDay);
+                    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧妫�楠屾暟閲�
+                    Integer allFinByDay = inspectionMapper.getFinByMonth(monthofYear);
+                    list2.add(allFinByDay);
+                    //鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欏悎鏍肩巼
+                    Long okMaterByDay = inspectionMapper.getOkMaterByMonth(monthofYear);
+                    list3.add(getRadio(allMaterByDay, okMaterByDay));
+                    //鏌ヨ璇ユ棩鏈熺殑鎴愬搧鍚堟牸鐜�
+                    Long okFinByDay = inspectionMapper.getOkFinByMonth(monthofYear);
+                    list4.add(getRadio(allFinByDay, okFinByDay));
+                }
+                break;
+        }
+        lineSeriesVO1.setData(list1);
+        lineSeriesVO2.setData(list2);
+        lineSeriesVO3.setData(list3);
+        lineSeriesVO4.setData(list4);
+        series.add(lineSeriesVO1);
+        series.add(lineSeriesVO2);
+        series.add(lineSeriesVO3);
+        series.add(lineSeriesVO4);
+        lineChartVO.setSeries(series);
+        return lineChartVO;
+    }
+
+    /*璁$畻鐧惧垎姣�*/
+    private BigDecimal getRadio(Integer all, Long num) {
+        if (all.intValue() == 0) {
+            return new BigDecimal(0);
+        }
+        BigDecimal numBigDecimal = new BigDecimal(num);
+        BigDecimal allBigDecimal = new BigDecimal(all);
+        BigDecimal divide = numBigDecimal.divide(allBigDecimal, 4, BigDecimal.ROUND_HALF_UP);
+        return divide.multiply(new BigDecimal(100));
+    }
+
+    /*鑾峰彇鏈勾鏈堜唤list闆嗗悎*/
+    private List<String> getMonthofYear() {
+        // 鑾峰彇褰撳墠骞翠唤
+        int year = YearMonth.now().getYear();
+        // 鍒涘缓鏈堜唤鍒楄〃
+        List<String> months = new ArrayList<>();
+        // 娣诲姞鏈堜唤鍒板垪琛�
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+        for (int i = 1; i <= 12; i++) {
+            YearMonth month = YearMonth.of(year, i);
+            String monthString = month.format(formatter);
+            months.add(monthString);
+        }
+        return months;
+    }
+
+    /*鑾峰彇鏈湀鏃ヤ唤list闆嗗悎*/
+    private List<String> getDayofMonth() {
+        // 鑾峰彇褰撳墠鏃ユ湡
+        LocalDate now = LocalDate.now();
+        // 鑾峰彇褰撳墠鏈堜唤
+        YearMonth currentMonth = YearMonth.from(now);
+        // 鑾峰彇璇ユ湀鐨勫ぉ鏁�
+        int daysInMonth = currentMonth.lengthOfMonth();
+        // 鍒涘缓鏃ユ湡鍒楄〃
+        List<String> dates = new ArrayList<>();
+        // 娣诲姞鏃ユ湡鍒板垪琛�
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        for (int i = 1; i <= daysInMonth; i++) {
+            LocalDate date = currentMonth.atDay(i);
+            String dateString = date.format(formatter);
+            dates.add(dateString);
+        }
+        return dates;
+    }
+
+    /*鑾峰彇鏈懆鏃ヤ唤list闆嗗悎*/
+    private List<String> getDayofWeeks() {
+        // 鑾峰彇褰撳墠鏃ユ湡
+        LocalDate now = LocalDate.now();
+        // 鑾峰彇鏈懆鐨勭涓�澶╁拰鏈�鍚庝竴澶�
+        LocalDate startOfWeek = now.with(DayOfWeek.MONDAY);
+        LocalDate endOfWeek = now.with(DayOfWeek.SUNDAY);
+        // 鍒涘缓鏃ユ湡鍒楄〃
+        List<String> dates = new ArrayList<>();
+        // 娣诲姞鏃ユ湡鍒板垪琛�
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        while (!startOfWeek.isAfter(endOfWeek)) {
+            String dateString = startOfWeek.format(formatter);
+            dates.add(dateString);
+            startOfWeek = startOfWeek.plusDays(1);
+        }
+        return dates;
+    }
+
+
+
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java
index 94334c3..97a838d 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/PlanServiceImpl.java
@@ -10,8 +10,10 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -75,21 +77,24 @@
     //妫�楠�
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String check(Integer id, String value) {
-        //濡傛灉妫�楠屽�间笉涓虹┖
-        if (StringUtils.isNotBlank(value)) {
-            InspectionProduct inspectionProduct = inspectionProductMapper.selectById(id);
-            //鍒ゆ柇妫�娴嬪�兼槸鍚︽弧瓒虫爣鍑嗗�煎拰鍐呮帶鍊肩殑瑕佹眰,濡傛灉涓嶆弧瓒冲垯妫�楠岀粨璁轰负涓嶅悎鏍�0
-            String required = inspectionProduct.getRequired();//鏍囧噯鍊�
-            String internal = inspectionProduct.getInternal();//鍐呮帶鍊�
-            inspectionProduct.setTestValue(value);
-            inspectionProduct.setTestState(checkValues(required, internal, value));
-            inspectionProductMapper.updateById(inspectionProduct);
-        } else {
-            //濡傛灉妫�楠屽�间负绌�,灏嗗師鏈夌殑妫�楠岀粨璁鸿鐩栦负null
-            inspectionProductMapper.upda(id);
+    public Integer check(Integer id, String value) {
+        InspectionProduct inspectionProduct = inspectionProductMapper.selectById(id);
+        //鍒ゆ柇妫�娴嬪�兼槸鍚︽弧瓒虫爣鍑嗗�煎拰鍐呮帶鍊肩殑瑕佹眰,濡傛灉涓嶆弧瓒冲垯妫�楠岀粨璁轰负涓嶅悎鏍�0
+        String required = inspectionProduct.getRequired();//鏍囧噯鍊�
+        String internal = inspectionProduct.getInternal();//鍐呮帶鍊�
+        inspectionProduct.setTestValue(value);
+        List<Integer> list = Arrays.stream(value.split(",")).map(s -> {
+            int values = checkValues(required, internal, s);
+            return values;
+        }).collect(Collectors.toList());
+        if (list.contains(0)) {
+            //濡傛灉鍏朵腑涓�涓楠屽�间笉鍚堟牸鍒欒椤圭洰妫�楠屼笉鍚堟牸
+            inspectionProduct.setTestState(0);
+        }else {
+            inspectionProduct.setTestState(1);
         }
-        return "鎻愪氦鎴愬姛!";
+        inspectionProductMapper.updateById(inspectionProduct);
+        return inspectionProduct.getTestState();
     }
 
     //涓婃姤
@@ -101,7 +106,7 @@
         List<Integer> results = inspectionProductMapper.getresult(id);
         int count = 0;
         for (Integer result : results) {
-            if (result != null && result==1) {
+            if (result != null && result == 1) {
                 count++;
             }
         }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java
index dea8314..4daef1c 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java
@@ -5,8 +5,10 @@
 import com.yuanchu.limslaboratory.mapper.InspectionMaterialMapper;
 import com.yuanchu.limslaboratory.mapper.QualificationRateStatisticsMapper;
 import com.yuanchu.limslaboratory.pojo.Dto.MapHandlerDto;
+import com.yuanchu.limslaboratory.pojo.Dto.SelectProjectByCodeAndNameDto;
 import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto;
 import com.yuanchu.limslaboratory.pojo.Dto.SeriesDto;
+import com.yuanchu.limslaboratory.pojo.ImInfo;
 import com.yuanchu.limslaboratory.pojo.InspectionMaterial;
 import com.yuanchu.limslaboratory.service.QualificationRateStatisticsService;
 import com.yuanchu.limslaboratory.utils.ArrayListUtil;
@@ -15,6 +17,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.NumberFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
@@ -30,6 +33,8 @@
     @Resource
     private InspectionMaterialMapper inspectionMaterialMapper;
 
+    private static final List<String> TYPE_LIST =Arrays.asList("鍘熸潗鏂�","鎴愬搧","濮旀墭鍝�");
+    private static final List<Integer> TYPE_INT_LIST =Arrays.asList(0,1,2);
     @Resource
     private QualificationRateStatisticsMapper qualificationRateStatisticsMapper;
 
@@ -43,16 +48,60 @@
 
     @Override
     public Map<String, Object> getTestSampleStatistics(SelectQualificationRateDto dto) {
-        System.out.println(dto);
-        return null;
+        Map<String, Object> mapResult = new HashMap<>(16);
+        List<Map<String, Object>> mapList = qualificationRateStatisticsMapper.selectTestSamp(dto);
+        if(mapList.size()<=0){
+            mapResult.put("noData",false);
+            return mapResult;
+        }
+        mapResult.put("xAxis",TYPE_LIST);
+        List<Map<String, Object>>list=new ArrayList<>();
+        Map<String, Object>mapPass=new HashMap<>(3);
+        mapPass.put("name","鍚堟牸");
+        mapPass.put("type","bar");
+        Map<String, Object>mapNoPass=new HashMap<>(3);
+        mapNoPass.put("name","涓嶅悎鏍�");
+        mapNoPass.put("type","bar");
+        List<Integer>passInteger=new ArrayList<>();
+        List<Integer>noPasInteger=new ArrayList<>();
+        AtomicInteger integerPass = new AtomicInteger(0);
+        AtomicInteger integerNoPass = new AtomicInteger(0);
+        for (int i = 0; i < TYPE_INT_LIST.size(); i++) {
+            int finalI = i;
+            mapList.stream().filter(m->Objects.equals(String.valueOf(m.get("type")),String.valueOf(TYPE_INT_LIST.get(finalI))))
+                    .forEach(m->{
+                        System.out.println(m.get("type"));
+                        if(Objects.equals(m.get("inspectionStatus"),0)){
+                            integerNoPass.incrementAndGet();
+                        }
+                        if(Objects.equals(m.get("inspectionStatus"),1)){
+                            integerPass.incrementAndGet();
+                        }
+                    });
+            passInteger.add(integerPass.get());
+            noPasInteger.add(integerNoPass.get());
+            integerPass.set(0);
+            integerNoPass.set(0);
+        }
+        mapPass.put("data",passInteger);
+        mapNoPass.put("data",noPasInteger);
+        list.add(mapPass);
+        list.add(mapNoPass);
+        mapResult.put("series",list);
+        mapResult.put("noData",true);
+        System.out.println("鎵ц缁撴潫getTestSampleStatistics________________>"+mapResult);
+        //System.out.println(mapResult);
+        return mapResult;
     }
 
     @Override
     public Map<String, Object> getSupplierNoPassStatistics(SelectQualificationRateDto dto) {
         Map<String, Object> allMap = new HashMap<>(16);
         List<Map<String, Object>> mapList = qualificationRateStatisticsMapper.selectSupplierByCondition(dto);
-        mapList.forEach(System.out::println);
-        System.out.println("=================================");
+        if(mapList.size()<=0){
+            allMap.put("noData",false);
+            return allMap;
+        }
         //鍘婚噸鍙栧嚭渚涘簲鍟�
         List<Map<String, Object>> supplierDistinct = ArrayListUtil.oneObjectsDistinctByProperty(MapHandlerDto::comparingBySupplier, mapList);
         List<String> supplierList = new ArrayList<String>();
@@ -60,21 +109,21 @@
             supplierList.add(String.valueOf(l.get("supplier")));
         });
         allMap.put("xAxis", supplierList);
-        List<SeriesDto>seriesDtoList=new ArrayList<SeriesDto>(2);
-        SeriesDto seriesDto2=new SeriesDto("涓嶅悎鏍兼暟閲�");
-        SeriesDto seriesDto=new SeriesDto("鍚堟牸鏁伴噺");
+        List<SeriesDto> seriesDtoList = new ArrayList<SeriesDto>(2);
+        SeriesDto seriesDto = new SeriesDto("鍚堟牸鏁伴噺");
+        SeriesDto seriesDto2 = new SeriesDto("涓嶅悎鏍兼暟閲�");
         // 鍙栧嚭瀵瑰簲鍚堟牸鏁伴噺涓嶅悎鏍兼暟閲�
-        List<Long>pass=new ArrayList<>();
-        List<Long>noPass=new ArrayList<>();
-        AtomicLong integerPass=new AtomicLong(0L);
-        AtomicLong integerNoPass=new AtomicLong(0L);
+        List<Long> pass = new ArrayList<>();
+        List<Long> noPass = new ArrayList<>();
+        AtomicLong integerPass = new AtomicLong(0L);
+        AtomicLong integerNoPass = new AtomicLong(0L);
         supplierList.forEach(s -> {
             mapList.stream()
                     .filter(l -> Objects.equals(l.get("supplier"), s))
                     .forEach(l -> {
-                        if(Objects.equals(l.get("inspectionStatus"),1)){
+                        if (Objects.equals(l.get("inspectionStatus"), 1)) {
                             integerPass.incrementAndGet();
-                        }else {
+                        } else {
                             integerNoPass.incrementAndGet();
                         }
                     });
@@ -83,19 +132,83 @@
             integerNoPass.set(0L);
             integerPass.set(0L);
         });
-        seriesDto.setData(pass);
-        seriesDto2.setData(noPass);
+        List<Double> percentPass = new ArrayList<>();
+        List<Double> percentNoPass = new ArrayList<>();
+        for (int i = 0; i < pass.size(); i++) {
+            long total = (pass.get(i) + noPass.get(i));
+            double passNO = 0.00;
+            if (pass.get(i) != 0L) {
+                passNO = Double.parseDouble(getPercent(pass.get(i), total).replace("%", ""));
+            }
+            double noPassNO = 0.00;
+            if (noPass.get(i) != 0L) {
+                noPassNO = Double.parseDouble(getPercent(noPass.get(i), total).replace("%", ""));
+            }
+            percentPass.add(passNO);
+            percentNoPass.add(noPassNO);
+        }
+        seriesDto.setData(percentPass);
+        seriesDto2.setData(percentNoPass);
         seriesDtoList.add(seriesDto);
         seriesDtoList.add(seriesDto2);
-        System.out.println("鏁伴噺=======>");
-        System.out.println(seriesDtoList);
-        return null;
+        allMap.put("series", seriesDtoList);
+        allMap.put("noData",true);
+        System.out.println("getSupplierNoPassStatistics缁撴灉++++++++++++++++>"+allMap);
+        return allMap;
     }
 
     @Override
     public Map<String, Object> getNoPassProjectStatistics(SelectQualificationRateDto dto) {
-        return null;
+        Map<String, Object> allMap = new HashMap<>(16);
+        List<ImInfo> imInfos = qualificationRateStatisticsMapper.selectProjectionsByCondition(dto);
+        List<String>NameList = new ArrayList<>();
+        List<SelectProjectByCodeAndNameDto>projectByCodeAndNameDtos=new ArrayList<>();
+        if(imInfos.size()<=0){
+            allMap.put("noData",false);
+            return allMap;
+        }
+        imInfos.forEach(l->{
+            NameList.add(l.getICode()+"-"+l.getImName());
+            projectByCodeAndNameDtos.add(new SelectProjectByCodeAndNameDto(l.getICode(),l.getImName()));
+        });
+        List<ImInfo> imInfosAll = qualificationRateStatisticsMapper.selectProjection(projectByCodeAndNameDtos,dto);
+        int total = imInfosAll.size();
+        List<Integer>noPas=new ArrayList<>();
+        AtomicInteger i=new AtomicInteger(0);
+        NameList.forEach(n->{
+            imInfos.stream()
+                    .filter(im-> Objects.equals(n,im.getICode()+"-"+im.getImName()))
+                    .forEach(im->{
+                        i.set(im.getIprInfos().size());
+                    });
+            noPas.add(i.get());
+            i.set(0);
+        });
+        List<Map<String, Object>>doubleList=new ArrayList<>();
+        for (int j = 0; j < noPas.size(); j++) {
+            Map<String, Object>map=new HashMap<>();
+            map.put("name",NameList.get(j));
+            map.put("value",Double.parseDouble(getPercent(noPas.get(j),total).replace("%","")));
+            doubleList.add(map);
+        }
+        allMap.put("legend",NameList);
+        allMap.put("series",doubleList);
+        allMap.put("noData",true);
+        System.out.println("getNoPassProjectStatistics缁撴灉==========================>"+allMap);
+        return allMap;
     }
 
+    @Override
+    public List<Map<String, Object>> getSampleOptions() {
+        return qualificationRateStatisticsMapper.getSampleOptions();
+    }
 
-}
+    public static String getPercent(long x, long y) {
+        double d1 = x * 1.0;
+        double d2 = y * 1.0;
+        NumberFormat percentInstance = NumberFormat.getPercentInstance();
+        // 璁剧疆淇濈暀鍑犱綅灏忔暟锛岃繖閲岃缃殑鏄繚鐣欎袱浣嶅皬鏁�
+        percentInstance.setMinimumFractionDigits(2);
+        return percentInstance.format(d1 / d2);
+    }
+}
\ No newline at end of file
diff --git a/inspection-server/src/main/resources/mapper/InspectionMapper.xml b/inspection-server/src/main/resources/mapper/InspectionMapper.xml
index 5314b40..711a5fe 100644
--- a/inspection-server/src/main/resources/mapper/InspectionMapper.xml
+++ b/inspection-server/src/main/resources/mapper/InspectionMapper.xml
@@ -42,4 +42,141 @@
         where state = 1
           and inspection_status is null
     </select>
+
+    <!--鑾峰彇妫�楠屽崟鎬绘暟-->
+    <select id="getcount" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+    </select>
+
+    <!--妫�楠岀粨璁�,妫�楠屾暟閲�-->
+    <select id="qualified" resultType="java.lang.Long">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+        and type = 0
+        <if test="b!=null ">
+            and inspection_status = #{b}
+        </if>
+        <if test="b==null">
+            and inspection_status is null
+        </if>
+    </select>
+
+    <!--璁$畻鍘熸潗鏂欎笌鎴愬搧鐨勫悎鏍肩巼-->
+    <select id="getResultNum" resultType="java.util.Map">
+        select inspection_status result,
+               count(id)         num
+        from lims_laboratory.inspection
+        where state = 1
+        group by result
+        order by num desc
+    </select>
+
+    <!--璁$畻鍘熸潗鏂欐楠屽崟鎬绘暟-->
+    <select id="getallmater" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type = 0
+    </select>
+
+    <!--璁$畻鎴愬搧妫�楠屽崟鎬绘暟-->
+    <select id="getallfin" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type in (1, 2)
+    </select>
+
+    <!--璁$畻鍘熸潗鏂欏悎鏍肩巼-->
+    <select id="qualifiedfin" resultType="java.lang.Long">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+        and type in (1, 2)
+        <if test="i!=null ">
+            and inspection_status = #{i}
+        </if>
+        <if test="i==null">
+            and inspection_status is null
+        </if>
+    </select>
+
+    <!--鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欐楠屾暟閲�-->
+    <select id="getMaterByDay" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type = 0
+          and create_time = #{time}
+    </select>
+
+    <!--鏌ヨ璇ユ棩鏈熺殑鎴愬搧妫�楠屾暟閲�-->
+    <select id="getFinByDay" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type in (1, 2)
+          and create_time = #{time}
+    </select>
+
+    <!--鏌ヨ璇ユ棩鏈熺殑鍘熸潗鏂欏悎鏍兼暟閲�-->
+    <select id="getOkMaterByDay" resultType="java.lang.Long">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type = 0
+          and inspection_status = 1
+          and end_time = #{time}
+    </select>
+
+    <!--鏌ヨ璇ユ棩鏈熺殑鎴愬搧鍚堟牸鏁伴噺-->
+    <select id="getOkFinByDay" resultType="java.lang.Long">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type in (1, 2)
+          and inspection_status = 1
+          and end_time = #{time}
+    </select>
+
+    <!--鏌ヨ璇ユ湀鐨勫師鏉愭枡妫�楠屾暟閲�-->
+    <select id="getMaterByMonth" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type = 0
+          and DATE_FORMAT(create_time, '%Y-%m') = #{monthofYear}
+    </select>
+
+    <!--鏌ヨ璇ユ湀鐨勬垚鍝佹楠屾暟閲�-->
+    <select id="getFinByMonth" resultType="java.lang.Integer">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type in (1, 2)
+          and DATE_FORMAT(create_time, '%Y-%m') = #{monthofYear}
+    </select>
+
+    <!--鏌ヨ璇ユ湀鐨勫師鏉愭枡鍚堟牸鐜�-->
+    <select id="getOkMaterByMonth" resultType="java.lang.Long">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type = 0
+          and inspection_status = 1
+          and DATE_FORMAT(end_time, '%Y-%m') = #{monthofYear}
+    </select>
+
+    <!--鏌ヨ璇ユ湀鐨勬垚鍝佸悎鏍肩巼-->
+    <select id="getOkFinByMonth" resultType="java.lang.Long">
+        select count(id)
+        from lims_laboratory.inspection
+        where state = 1
+          and type in (1, 2)
+          and inspection_status = 1
+          and DATE_FORMAT(end_time, '%Y-%m') = #{monthofYear}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/inspection-server/src/main/resources/mapper/InspectionProductMapper.xml b/inspection-server/src/main/resources/mapper/InspectionProductMapper.xml
index a04eeab..f1b39da 100644
--- a/inspection-server/src/main/resources/mapper/InspectionProductMapper.xml
+++ b/inspection-server/src/main/resources/mapper/InspectionProductMapper.xml
@@ -1,12 +1,7 @@
 <?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.limslaboratory.mapper.InspectionProductMapper">
-    <update id="upda">
-        update lims_laboratory.inspection_product
-        set test_state=null
-        where id = #{id}
-          and state = 1
-    </update>
+
 
     <!--鏍规嵁妫�楠屽崟id鏌ヨ妫�楠岄」鐩殑妫�楠岀粨鏋�-->
     <select id="getresult" resultType="java.lang.Integer">
@@ -37,4 +32,22 @@
         where state = 1
           and test_state is null
     </select>
+
+    <!--鑾峰彇妫�楠岄」鐩�,璁惧,妫�楠屽紑濮嬫椂闂�,鎵ц浜�,妫�楠岀粨鏉熸椂闂�-->
+    <select id="getResultNum" resultType="java.util.Map">
+        select ip.name,
+               equipment_name                      instrumentname,
+               DATE_FORMAT(start_time, '%Y-%m-%d') startTime,
+               user.name                           checkname,
+               DATE_FORMAT(end_time, '%Y-%m-%d')   endTime
+        from lims_laboratory.inspection_product ip
+                 left join lims_laboratory.inspection_material on ip.inspection_material_id = inspection_material.id
+                 left join lims_laboratory.inspection i on inspection_material.inspection_id = i.id
+                 left join lims_laboratory.instrument on ip.instrument_id = instrument.id
+                 left join lims_laboratory.user on ip.user_id = user.id
+        where ip.state = 1
+          and test_state is null
+        order by start_time
+        limit 4
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/inspection-server/src/main/resources/mapper/PlanMapper.xml b/inspection-server/src/main/resources/mapper/PlanMapper.xml
index bf79c9d..d466f4e 100644
--- a/inspection-server/src/main/resources/mapper/PlanMapper.xml
+++ b/inspection-server/src/main/resources/mapper/PlanMapper.xml
@@ -8,7 +8,7 @@
         <result property="inspectionStatus" column="inspectionStatus"/>
         <result property="startTime" column="startTime"/>
         <result property="endTime" column="endTime"/>
-        <collection property="chldren" resultMap="selectAllPlanMapTowsMap" javaType="List"/>
+        <collection property="children" resultMap="selectAllPlanMapTowsMap" javaType="List"/>
     </resultMap>
     <resultMap id="selectAllPlanMapTowsMap" type="map">
         <id property="pid" column="pid"/>
@@ -16,6 +16,7 @@
         <result property="unit" column="unit"/>
         <result property="required" column="required"/>
         <result property="internal" column="internal"/>
+        <result property="testValue" column="testValue"/>
         <result property="testState" column="testState"/>
         <result property="checker" column="checker"/>
         <result property="instrumentname" column="instrumentname"/>
@@ -33,6 +34,7 @@
         ip.unit,
         required,
         internal,
+        test_value testValue,
         test_state testState,
         u.name checker,
         equipment_name instrumentname
diff --git a/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml b/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml
index 754f647..bb63097 100644
--- a/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml
+++ b/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml
@@ -11,7 +11,7 @@
         i.end_time endTime
         FROM inspection i
         INNER JOIN inspection_material im ON i.id = im.inspection_id
-        where (i.state = 1 AND TRUE = IFNULL(i.inspection_status, FALSE))
+        where (i.state = 1 AND i.inspection_status is NOT NULL and im.state=1)
         <if test="dto.beginDate!=null and dto.endDate!=null">
             DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
             AND #{dto.endDate}
@@ -23,5 +23,154 @@
         <if test="dto.supplier!=null and dto.supplier!=''">
             and im.supplier=#{dto.supplier}
         </if>
+        <if test="dto.sample!=null and dto.sample!=''">
+            and im.name=#{dto.sample}
+        </if>
+        <if test="dto.code!=null and dto.code!=''">
+            and i.code=#{dto.code}
+        </if>
     </select>
+    <select id="selectProjectionsByCondition" resultMap="ImInfoMap">
+        SELECT
+        im.id imId,
+        im.`name` imName,
+        i.inspection_status inspectionStatus,
+        i.start_time startTime,
+        i.end_time endTime,
+        ipr.id iprId,
+        ipr.`name` iprName,
+        ipr.test_state testState,
+        i.code iCode,
+        i.type type
+        FROM
+        inspection i,
+        inspection_material im,
+        inspection_product ipr
+        WHERE
+        i.id = im.inspection_id
+        AND im.id = ipr.inspection_material_id
+        AND  i.state = 1
+        AND im.state = 1
+        AND ipr.state = 1
+        AND i.inspection_status is NOT NULL
+        AND ipr.test_state is not null
+        AND ipr.test_state = 0
+        <if test="dto.beginDate!=null and dto.endDate!=null">
+            DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
+            AND #{dto.endDate}
+            AND DATE_FORMAT( i.start_time, '%Y-%m-%d' )>= #{dto.beginDate}
+        </if>
+        <if test="dto.type!=null">
+            and i.type=#{dto.type}
+        </if>
+        <if test="dto.supplier!=null and dto.supplier!=''">
+            and im.supplier=#{dto.supplier}
+        </if>
+        <if test="dto.sample!=null and dto.sample!=''">
+            and im.name=#{dto.sample}
+        </if>
+        <if test="dto.code!=null and dto.code!=''">
+            and i.code=#{dto.code}
+        </if>
+    </select>
+    <select id="selectProjection" resultMap="ImInfoMap">
+        SELECT
+        im.id imId
+        FROM
+        inspection i,
+        inspection_material im,
+        inspection_product ipr
+        WHERE
+        i.id = im.inspection_id
+        AND im.id = ipr.inspection_material_id
+        AND  i.state = 1
+        AND im.state = 1
+        AND ipr.state = 1
+        AND i.inspection_status is NOT NULL
+        AND ipr.test_state is not null
+        <if test="dto.beginDate!=null and dto.endDate!=null">
+            DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
+            AND #{dto.endDate}
+            AND DATE_FORMAT( i.start_time, '%Y-%m-%d' )>= #{dto.beginDate}
+        </if>
+        <if test="dto.type!=null">
+            and i.type=#{dto.type}
+        </if>
+        <if test="dto.supplier!=null and dto.supplier!=''">
+            and im.supplier=#{dto.supplier}
+        </if>
+        <if test="dto.sample!=null and dto.sample!=''">
+            and im.name=#{dto.sample}
+        </if>
+        <if test="dto.code!=null and dto.code!=''">
+            and i.code=#{dto.code}
+        </if>
+        and i.code in
+        <foreach collection="list" item="l" open="(" close=")" separator="," >
+            #{l.code}
+        </foreach>
+        and im.name in
+        <foreach collection="list" item="l" open="(" close=")" separator=",">
+            #{l.name}
+        </foreach>
+    </select>
+    <select id="selectTestSamp" resultType="java.util.Map">
+        SELECT i.id,
+        i.type,
+        im.`name`,
+        im.supplier,
+        i.inspection_status inspectionStatus,
+        i.start_time startTime,
+        i.end_time endTime
+        FROM inspection i
+        INNER JOIN inspection_material im ON i.id = im.inspection_id
+        where (i.state = 1 AND i.inspection_status is NOT NULL and im.state=1)
+        <if test="dto.beginDate!=null and dto.endDate!=null">
+            DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
+            AND #{dto.endDate}
+            AND DATE_FORMAT( i.start_time, '%Y-%m-%d' )>= #{dto.beginDate}
+        </if>
+        <if test="dto.type!=null">
+            and i.type=#{dto.type}
+        </if>
+        <if test="dto.supplier!=null and dto.supplier!=''">
+            and im.supplier=#{dto.supplier}
+        </if>
+        <if test="dto.sample!=null and dto.sample!=''">
+            and im.name=#{dto.sample}
+        </if>
+        <if test="dto.code!=null and dto.code!=''">
+            and i.code=#{dto.code}
+        </if>
+    </select>
+    <select id="getSampleOptions" resultType="java.util.Map">
+        SELECT
+            i.id,
+            i.type,
+            im.`name` name,
+            im.supplier,
+            i.inspection_status inspectionStatus,
+            i.start_time startTime,
+            i.end_time endTime,
+            i.`code`
+        FROM
+            inspection i
+                INNER JOIN inspection_material im ON i.id = im.inspection_id
+        WHERE
+            ( i.state = 1 AND i.inspection_status IS NOT NULL AND im.state = 1 )
+    </select>
+
+    <resultMap id="ImInfoMap" type="com.yuanchu.limslaboratory.pojo.ImInfo">
+        <result property="imId" column="imId"/>
+        <result property="iCode" column="iCode"/>
+        <result property="imName" column="imName"/>
+        <result property="startTime" column="startTime"/>
+        <result property="endTime" column="endTime"/>
+        <result property="inspectionStatus" column="inspectionStatus"/>
+        <collection property="iprInfos" ofType="iprInfo">
+            <result property="iprId" column="iprId"/>
+            <result property="iprName" column="iprName"/>
+            <result property="testState" column="testState"/>
+        </collection>
+    </resultMap>
 </mapper>
\ No newline at end of file
diff --git a/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml b/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
index 98a6181..ab1509d 100644
--- a/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
@@ -23,23 +23,27 @@
 
     <!--閫夋嫨璁惧-->
     <resultMap id="chooseinstumMap" type="map">
-        <id property="father_name" column="father_name"/>
-        <collection property="father" resultMap="chooseinstumTowMap" javaType="List"/>
+        <id property="id" column="cid"/>
+        <result property="name" column="father_name"/>
+        <collection property="children" resultMap="chooseinstumTowMap" javaType="List"/>
     </resultMap>
     <resultMap id="chooseinstumTowMap" type="map">
-        <id property="son_name" column="son_name"/>
-        <collection property="chldren" resultMap="chooseinstumTowsMap" javaType="List"/>
+        <id property="id" column="cid"/>
+        <result property="name" column="son_name"/>
+        <collection property="children" resultMap="chooseinstumTowsMap" javaType="List"/>
     </resultMap>
     <resultMap id="chooseinstumTowsMap" type="map">
         <id property="id" column="id"/>
         <result property="name" column="name"/>
     </resultMap>
     <select id="chooseinstum" resultMap="chooseinstumMap">
-        select instrument.id,
-               father_name,
-               son_name,
+        select c.id cid,
+            instrument.id,
+               father_name ,
+               son_name ,
                equipment_name name
         from lims_laboratory.instrument
                  left join lims_laboratory.classify c on c.id = instrument.classify_id
+        where conditions in(1,5)
     </select>
 </mapper>
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductModelController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductModelController.java
index 54c77ae..6eee650 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductModelController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductModelController.java
@@ -34,11 +34,7 @@
     @Autowired
     private ProductModelService productModelService;
 
-    @ApiOperation(value = "閫夋嫨鏍峰搧鍚嶇О")
-    @GetMapping("/selectmater")
-    public Result selectmater() {
-        return Result.success(productModelService.selectmater());
-    }
+
 
     @ApiOperation(value = "娣诲姞鏍囧噯-->閫夋嫨椤圭洰鍒嗙粍")
     @GetMapping("/selectfather")
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductModelService.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductModelService.java
index 144d1bf..f34e701 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductModelService.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductModelService.java
@@ -17,11 +17,7 @@
  */
 public interface ProductModelService extends IService<ProductModel> {
 
-    /**
-     * 閫夋嫨鏍峰搧鍚嶇О
-     * @return
-     */
-    List<String>  selectmater();
+
 
     /**
      * 娣诲姞鏍囧噯-->閫夋嫨椤圭洰鍒嗙粍
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
index 7b4d711..6650cf6 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
@@ -1,10 +1,9 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yuanchu.limslaboratory.mapper.ProductModelMapper;
 import com.yuanchu.limslaboratory.pojo.Material;
 import com.yuanchu.limslaboratory.mapper.MaterialMapper;
@@ -17,14 +16,11 @@
 import com.yuanchu.limslaboratory.service.ProductService;
 import com.yuanchu.limslaboratory.service.SpecificationsService;
 import com.yuanchu.limslaboratory.service.StandardService;
-import com.yuanchu.limslaboratory.utils.MyUtil;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -106,8 +102,12 @@
                     List<Product> productList = productModel.stream().map(stringObjectMap -> {
                         Product product = new Product();
                         product.setName(stringObjectMap.get("name").toString());
-                        product.setFather(stringObjectMap.get("father").toString());
-                        product.setUnit(stringObjectMap.get("unit").toString());
+                        if (ObjectUtils.isNotEmpty(stringObjectMap.get("father"))) {
+                            product.setFather(stringObjectMap.get("father").toString());
+                        }
+                        if (ObjectUtils.isNotEmpty(stringObjectMap.get("unit"))) {
+                            product.setUnit(stringObjectMap.get("unit").toString());
+                        }
                         product.setSpecifications_id(specifications.getId());
                         return product;
                     }).collect(Collectors.toList());
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java
index a42754d..3aca4c6 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductModelServiceImpl.java
@@ -28,11 +28,6 @@
     @Resource
     ProductModelMapper productModelMapper;
 
-    //閫夋嫨鏍峰搧
-    @Override
-    public List<String> selectmater() {
-        return productModelMapper.selectmater();
-    }
 
     //娣诲姞鏍囧噯-->閫夋嫨椤圭洰鍒嗙粍
     @Override
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
index b2f887e..d6a5bd6 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.yuanchu.limslaboratory.mapper.ProductModelMapper;
 import com.yuanchu.limslaboratory.pojo.Product;
 import com.yuanchu.limslaboratory.pojo.Specifications;
@@ -14,7 +15,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -87,12 +87,12 @@
         List<Product> productList = productModel.stream().map(stringObjectMap -> {
             Product product = new Product();
             product.setName(stringObjectMap.get("name").toString());
-            try{
+            if (ObjectUtils.isNotEmpty(stringObjectMap.get("father"))) {
                 product.setFather(stringObjectMap.get("father").toString());
-            }catch (Exception e){
-                product.setFather(null);
             }
-            product.setUnit(stringObjectMap.get("unit").toString());
+            if (ObjectUtils.isNotEmpty(stringObjectMap.get("unit"))) {
+                product.setUnit(stringObjectMap.get("unit").toString());
+            }
             product.setSpecifications_id(specifications.getId());
             return product;
         }).collect(Collectors.toList());
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java
index 9c7ab92..479ea03 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java
@@ -107,8 +107,12 @@
                 List<Product> productList = productModel.stream().map(stringObjectMap -> {
                     Product product = new Product();
                     product.setName(stringObjectMap.get("name").toString());
-                    product.setFather(stringObjectMap.get("father").toString());
-                    product.setUnit(stringObjectMap.get("unit").toString());
+                    if (ObjectUtils.isNotEmpty(stringObjectMap.get("father"))) {
+                        product.setFather(stringObjectMap.get("father").toString());
+                    }
+                    if (ObjectUtils.isNotEmpty(stringObjectMap.get("unit"))) {
+                        product.setUnit(stringObjectMap.get("unit").toString());
+                    }
                     product.setSpecifications_id(specifications.getId());
                     return product;
                 }).collect(Collectors.toList());

--
Gitblit v1.9.3