From 35bf80accf4117e3de030fdd7e3962f16a5fcfd9 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 23 八月 2023 09:05:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/QualificationRateStatisticsMapper.java            |    9 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/QualificationRateStatisticsService.java          |    2 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/QualificationRateStatisticsController.java    |    8 +
 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/service/impl/QualificationRateStatisticsServiceImpl.java |  153 +++++++++++++++++++--
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java                                         |   35 +++++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/IprInfo.java                                        |   19 ++
 inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml                                   |  151 +++++++++++++++++++++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/SelectProjectByCodeAndNameDto.java              |   25 +++
 10 files changed, 390 insertions(+), 26 deletions(-)

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/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/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/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/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/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

--
Gitblit v1.9.3