From 73f06685146d3bac86b47454ef8803965af96772 Mon Sep 17 00:00:00 2001 From: tangw Date: Wed, 21 Jan 2026 17:53:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A8=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/entity/lis/QcVal.java | 6 ++ .../controller/qc/QcStatController.java | 10 +++- .../czlis/liswork/mapper/QcStatMapper.java | 10 ++++ .../czlis/liswork/pojo/DTO/QcMonthstDTO.java | 58 +++++++++++++++++++ .../czlis/liswork/service/QcStatService.java | 7 +++ .../service/impl/qc/QcStatServiceImpl.java | 37 ++++++++++++ .../main/resources/mapper/QcStatMapper.xml | 40 ++++++++++++- 7 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 liswork/src/main/java/com/czlis/liswork/pojo/DTO/QcMonthstDTO.java diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/QcVal.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/QcVal.java index 29bdd37..ab4d36e 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/QcVal.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/QcVal.java @@ -1,6 +1,7 @@ package com.czlis.common.core.domain.entity.lis; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,11 +14,16 @@ import java.util.Date; @NoArgsConstructor public class QcVal { private Long qc_valid; + @ApiModelProperty(value = "仪器") private String yq; + @ApiModelProperty(value = "质控日期") @JsonFormat(pattern = "yyyy-MM-dd") private Date zkrq; + @ApiModelProperty(value = "项目代码") private String xmdh; + @ApiModelProperty(value = "质控号") private String zkph; + @ApiModelProperty(value = "批号") private String zkpph; private Integer cs; private String instrybh; diff --git a/liswork/src/main/java/com/czlis/liswork/controller/qc/QcStatController.java b/liswork/src/main/java/com/czlis/liswork/controller/qc/QcStatController.java index 7d7c717..bd51a8d 100644 --- a/liswork/src/main/java/com/czlis/liswork/controller/qc/QcStatController.java +++ b/liswork/src/main/java/com/czlis/liswork/controller/qc/QcStatController.java @@ -3,23 +3,29 @@ package com.czlis.liswork.controller.qc; import com.czlis.common.core.controller.BaseController; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.QcVal; +import com.czlis.liswork.service.QcStatService; +import com.czlis.liswork.service.QcValService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; + @RestController @RequestMapping("/qcstat") @Slf4j @Api(tags = "质控数据统计") public class QcStatController extends BaseController { + @Autowired + private QcStatService qcStatService; @ApiOperation("查询质控数据") @GetMapping("/getmonthst") public Result getmonthst(QcVal qcVal) { - return new Result("0","获取数据成功!"); + return qcStatService.queryMonthst(qcVal); } + } diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/QcStatMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/QcStatMapper.java index f3905c9..a1fb3dd 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/QcStatMapper.java +++ b/liswork/src/main/java/com/czlis/liswork/mapper/QcStatMapper.java @@ -1,4 +1,14 @@ package com.czlis.liswork.mapper; +import com.czlis.liswork.pojo.DTO.QcMonthstDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + public interface QcStatMapper { + List queryMonthst(@Param("yq") String yq , @Param("zkrq") Date zkrq, @Param("zkph") String zkph); + List queryMonthst2(@Param("yq") String yq , @Param("zkrq") Date zkrq, @Param("zkph") String zkph); + List queryMonthst3(@Param("yq") String yq , @Param("zkrq") Date zkrq, @Param("zkph") String zkph); } diff --git a/liswork/src/main/java/com/czlis/liswork/pojo/DTO/QcMonthstDTO.java b/liswork/src/main/java/com/czlis/liswork/pojo/DTO/QcMonthstDTO.java new file mode 100644 index 0000000..822672f --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/pojo/DTO/QcMonthstDTO.java @@ -0,0 +1,58 @@ +package com.czlis.liswork.pojo.DTO; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class QcMonthstDTO { + @ApiModelProperty(value = "仪器") + private String yq; + @ApiModelProperty(value = "项目代码") + private String xmdh; + @ApiModelProperty(value = "项目名称") + private String xmmc; + @ApiModelProperty(value = "质控号") + private String zkph; + @ApiModelProperty(value = "批号") + private String zkpph; + @ApiModelProperty(value = "测定数") + private Integer cnt; + @ApiModelProperty(value = "失控数") + private Integer badcnt; + @ApiModelProperty(value = "处理数") + private Integer process; + @ApiModelProperty(value = "绘图基准CV%") + private BigDecimal cv0; + @ApiModelProperty(value = "绘图基准SD") + private BigDecimal sd0; + @ApiModelProperty(value = "绘图基准靶值") + private BigDecimal avg0; + @ApiModelProperty(value = "本月原始CV%") + private BigDecimal cv1; + @ApiModelProperty(value = "本月原始SD") + private BigDecimal sd1; + @ApiModelProperty(value = "本月原始平均值") + private BigDecimal avg1; + @ApiModelProperty(value = "本月非失控CV%") + private BigDecimal cv2; + @ApiModelProperty(value = "本月非失控SD") + private BigDecimal sd2; + @ApiModelProperty(value = "本月非失控平均值") + private BigDecimal avg2; + @ApiModelProperty(value = "累计CV%") + private BigDecimal cv3; + @ApiModelProperty(value = "累计SD") + private BigDecimal sd3; + @ApiModelProperty(value = "累计平均值") + private BigDecimal avg3; + @ApiModelProperty(value = "累计次数") + private Integer cnt3; + @ApiModelProperty(value = "标准CV%") + private BigDecimal qccv; +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/QcStatService.java b/liswork/src/main/java/com/czlis/liswork/service/QcStatService.java index b4e95a2..033a475 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/QcStatService.java +++ b/liswork/src/main/java/com/czlis/liswork/service/QcStatService.java @@ -1,4 +1,11 @@ package com.czlis.liswork.service; + +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.QcVal; + +import java.util.Date; + public interface QcStatService { + Result queryMonthst(QcVal qcVal); } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/qc/QcStatServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/qc/QcStatServiceImpl.java index e692097..8f167a1 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/qc/QcStatServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/qc/QcStatServiceImpl.java @@ -1,8 +1,45 @@ package com.czlis.liswork.service.impl.qc; +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.QcVal; +import com.czlis.liswork.mapper.QcStatMapper; +import com.czlis.liswork.pojo.DTO.QcMonthstDTO; import com.czlis.liswork.service.QcStatService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.List; +import java.util.Optional; + @Service public class QcStatServiceImpl implements QcStatService { + @Autowired + private QcStatMapper qcStatMapper; + @Override + public Result queryMonthst(QcVal qcVal){ + String yq=qcVal.getYq(); + String zkph=qcVal.getZkph(); + Date zkrq=qcVal.getZkrq(); + List monthst=qcStatMapper.queryMonthst(yq,zkrq,zkph); + List monthst2=qcStatMapper.queryMonthst2(yq,zkrq,zkph); + List monthst3=qcStatMapper.queryMonthst3(yq,zkrq,zkph); + for(QcMonthstDTO qcMonthstDTO:monthst){ + String xmdh=qcMonthstDTO.getXmdh(); + Optional monthst0=monthst2.stream().filter(ss->xmdh.equals(ss.getXmdh())).findAny(); + if(monthst0.isPresent()) { + qcMonthstDTO.setAvg2(monthst0.get().getAvg2()); + qcMonthstDTO.setCv2(monthst0.get().getCv2()); + qcMonthstDTO.setSd2(monthst0.get().getSd2()); + } + Optional monthsttemp=monthst3.stream().filter(ss->xmdh.equals(ss.getXmdh())).findAny(); + if(monthsttemp.isPresent()) { + qcMonthstDTO.setAvg3(monthsttemp.get().getAvg3()); + qcMonthstDTO.setCv3(monthsttemp.get().getCv3()); + qcMonthstDTO.setSd3(monthsttemp.get().getSd3()); + qcMonthstDTO.setCnt3(monthsttemp.get().getCnt3()); + } + } + return new Result("0","成功",monthst); + } } diff --git a/liswork/src/main/resources/mapper/QcStatMapper.xml b/liswork/src/main/resources/mapper/QcStatMapper.xml index 09e7618..5c38d7d 100644 --- a/liswork/src/main/resources/mapper/QcStatMapper.xml +++ b/liswork/src/main/resources/mapper/QcStatMapper.xml @@ -2,7 +2,43 @@ - + SELECT qc_val.yq,qc_val.xmdh,xm_info.xmmc,xm_info.dyxh,qc_val.zkph,count(1) cnt, + sum((case when qc_val.zkjg>(zkbz + 3*sd) then 1 when (zkbz - 3*sd)>qc_val.zkjg then 1 when isnull(outreason,'')!='' then 1 else 0 end) ) as badcnt, + sum(case when isnull(bz,'')!='' then 1 else 0 end) as process, + cast(qc_sample.zkbz as decimal(12, 3)) as avg0, + cast(qc_sample.sd as decimal(12, 3)) as sd0, + cast(qc_sample.cv as decimal(12, 3)) as cv0, + cast(avg(zkjg) as decimal(12, 3)) avg1, + cast(STDEV(zkjg) as decimal(12, 3)) sd1, + cast(100*STDEV(zkjg)/avg(zkjg) as decimal(12, 3)) as cv1, + max(qc_sample.zkpph) as zkpph, + max(isnull(qc_sample.qccv,xm_info.qccv)) as qccv + FROM qc_val join xm_info on xm_info.yq=qc_val.yq and xm_info.xmdh=qc_val.xmdh + join qc_sample on qc_sample.yq=qc_val.yq and qc_sample.xmdh=qc_val.xmdh and qc_sample.zkph=qc_val.zkph + and qc_sample.ksrq=(select max(ksrq) from qc_sample x where x.yq=qc_val.yq and x.xmdh=qc_val.xmdh and x.zkph=qc_val.zkph and qc_val.zkrq>=x.ksrq) + where convert(char(8),zkrq,120) = convert(char(8),#{zkrq} ,120) + and qc_val.yq=#{yq} and qc_val.zkph=#{zkph} + group by qc_val.yq,qc_val.zkph,qc_val.xmdh,xm_info.xmmc,xm_info.dyxh,qc_sample.zkbz,qc_sample.sd,qc_sample.cv + order by xm_info.dyxh + + +