质控
This commit is contained in:
parent
9a27fa2f81
commit
73f0668514
@ -1,6 +1,7 @@
|
|||||||
package com.czlis.common.core.domain.entity.lis;
|
package com.czlis.common.core.domain.entity.lis;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@ -13,11 +14,16 @@ import java.util.Date;
|
|||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class QcVal {
|
public class QcVal {
|
||||||
private Long qc_valid;
|
private Long qc_valid;
|
||||||
|
@ApiModelProperty(value = "仪器")
|
||||||
private String yq;
|
private String yq;
|
||||||
|
@ApiModelProperty(value = "质控日期")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date zkrq;
|
private Date zkrq;
|
||||||
|
@ApiModelProperty(value = "项目代码")
|
||||||
private String xmdh;
|
private String xmdh;
|
||||||
|
@ApiModelProperty(value = "质控号")
|
||||||
private String zkph;
|
private String zkph;
|
||||||
|
@ApiModelProperty(value = "批号")
|
||||||
private String zkpph;
|
private String zkpph;
|
||||||
private Integer cs;
|
private Integer cs;
|
||||||
private String instrybh;
|
private String instrybh;
|
||||||
|
|||||||
@ -3,23 +3,29 @@ package com.czlis.liswork.controller.qc;
|
|||||||
import com.czlis.common.core.controller.BaseController;
|
import com.czlis.common.core.controller.BaseController;
|
||||||
import com.czlis.common.core.domain.Result;
|
import com.czlis.common.core.domain.Result;
|
||||||
import com.czlis.common.core.domain.entity.lis.QcVal;
|
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.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/qcstat")
|
@RequestMapping("/qcstat")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Api(tags = "质控数据统计")
|
@Api(tags = "质控数据统计")
|
||||||
public class QcStatController extends BaseController {
|
public class QcStatController extends BaseController {
|
||||||
|
@Autowired
|
||||||
|
private QcStatService qcStatService;
|
||||||
@ApiOperation("查询质控数据")
|
@ApiOperation("查询质控数据")
|
||||||
@GetMapping("/getmonthst")
|
@GetMapping("/getmonthst")
|
||||||
public Result getmonthst(QcVal qcVal) {
|
public Result getmonthst(QcVal qcVal) {
|
||||||
return new Result("0","获取数据成功!");
|
return qcStatService.queryMonthst(qcVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,14 @@
|
|||||||
package com.czlis.liswork.mapper;
|
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 {
|
public interface QcStatMapper {
|
||||||
|
List<QcMonthstDTO> queryMonthst(@Param("yq") String yq , @Param("zkrq") Date zkrq, @Param("zkph") String zkph);
|
||||||
|
List<QcMonthstDTO> queryMonthst2(@Param("yq") String yq , @Param("zkrq") Date zkrq, @Param("zkph") String zkph);
|
||||||
|
List<QcMonthstDTO> queryMonthst3(@Param("yq") String yq , @Param("zkrq") Date zkrq, @Param("zkph") String zkph);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -1,4 +1,11 @@
|
|||||||
package com.czlis.liswork.service;
|
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 {
|
public interface QcStatService {
|
||||||
|
Result queryMonthst(QcVal qcVal);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,45 @@
|
|||||||
package com.czlis.liswork.service.impl.qc;
|
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 com.czlis.liswork.service.QcStatService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class QcStatServiceImpl implements QcStatService {
|
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<QcMonthstDTO> monthst=qcStatMapper.queryMonthst(yq,zkrq,zkph);
|
||||||
|
List<QcMonthstDTO> monthst2=qcStatMapper.queryMonthst2(yq,zkrq,zkph);
|
||||||
|
List<QcMonthstDTO> monthst3=qcStatMapper.queryMonthst3(yq,zkrq,zkph);
|
||||||
|
for(QcMonthstDTO qcMonthstDTO:monthst){
|
||||||
|
String xmdh=qcMonthstDTO.getXmdh();
|
||||||
|
Optional<QcMonthstDTO> 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<QcMonthstDTO> 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,43 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||||
<mapper namespace="com.czlis.liswork.mapper.QcStatMapper">
|
<mapper namespace="com.czlis.liswork.mapper.QcStatMapper">
|
||||||
<select id="queryOne" resultType="com.czlis.common.core.domain.entity.lis.QcSample">
|
<select id="queryMonthst" resultType="com.czlis.liswork.pojo.DTO.QcMonthstDTO">
|
||||||
select * from qc_sample where yq = #{yq} and xmdh = #{xmdh} and zkph = #{zkph} and ksrq = #{ksrq}
|
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
|
||||||
|
</select>
|
||||||
|
<select id="queryMonthst2" resultType="com.czlis.liswork.pojo.DTO.QcMonthstDTO">
|
||||||
|
SELECT qc_val.yq,qc_val.xmdh,qc_val.zkph,count(1) cnt,cast(avg(zkjg) as decimal(12, 3)) avg2,
|
||||||
|
cast(STDEV(zkjg) as decimal(12, 3)) sd2,cast(100*STDEV(zkjg)/avg(zkjg) as decimal(12, 3)) as cv2
|
||||||
|
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 (zkbz + 3*sd)>qc_val.zkjg and qc_val.zkjg>(zkbz - 3*sd) and isnull(outreason,'')=''
|
||||||
|
and qc_val.yq=#{yq} and qc_val.zkph=#{zkph}
|
||||||
|
group by qc_val.yq,qc_val.zkph,qc_val.xmdh
|
||||||
|
</select>
|
||||||
|
<select id="queryMonthst3" resultType="com.czlis.liswork.pojo.DTO.QcMonthstDTO">
|
||||||
|
SELECT qc_val.yq,qc_val.xmdh,qc_val.zkph,count(1) cnt3,cast(avg(zkjg) as decimal(12, 3)) avg3,
|
||||||
|
cast(STDEV(zkjg) as decimal(12, 3)) sd3,cast(100*STDEV(zkjg)/avg(zkjg) as decimal(12, 3)) as cv3
|
||||||
|
FROM qc_val where zkrq>=(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 convert(datetime,convert(char(8),#{zkrq},120)+'01') >=x.ksrq)
|
||||||
|
and isnull((select min(ksrq) from qc_sample x where x.yq=qc_val.yq and x.xmdh=qc_val.xmdh and x.zkph=qc_val.zkph and x.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 x.ksrq<=convert(datetime,convert(char(8),#{zkrq},120)+'01')) and convert(datetime,convert(char(8),DATEADD(month,1,#{zkrq}),120)+'01')>=x.ksrq ),convert(datetime,convert(char(8),DATEADD(month,1,#{zkrq}),120)+'01') )>zkrq
|
||||||
|
and qc_val.yq=#{yq} and qc_val.zkph=#{zkph}
|
||||||
|
group by qc_val.yq,qc_val.zkph,qc_val.xmdh
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user