From 0f868e3da09daab09b8ed9ae277e8e8e07869bfc Mon Sep 17 00:00:00 2001 From: zhangye <654600784@qq.com> Date: Wed, 16 Nov 2022 18:54:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=9D=99=E8=84=89=E6=BA=B6?= =?UTF-8?q?=E6=A0=93=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/ManageStatisticalController.java | 10 ++ .../carbasics/bean/dto/StatisticalDto.java | 11 +- .../carbasics/bean/po/Questionnaire.java | 11 ++ .../bean/po/QuestionnaireExample.java | 70 +++++++++++ .../carbasics/bean/vo/StatisticalVo.java | 111 ++++++++++++++++++ .../persist/dao/ManageStatisticalDao.java | 2 + .../service/IManageStatisticalService.java | 2 + .../service/ManageStatisticalService.java | 49 ++++++++ .../mapper_dao/ManageStatisticalDao.xml | 60 ++++++++++ .../resources/mapper_dao/QuestionnaireDao.xml | 2 +- .../mapper_raw/QuestionnaireMapper.xml | 25 +++- src/main/resources/mbg.xml | 6 +- 12 files changed, 349 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/ccsens/carbasics/api/manage/ManageStatisticalController.java b/src/main/java/com/ccsens/carbasics/api/manage/ManageStatisticalController.java index 86b5539..3abc8ac 100644 --- a/src/main/java/com/ccsens/carbasics/api/manage/ManageStatisticalController.java +++ b/src/main/java/com/ccsens/carbasics/api/manage/ManageStatisticalController.java @@ -87,4 +87,14 @@ public class ManageStatisticalController { return JsonResponse.newInstance().ok(comparisonAis); } + @MustLogin + @ApiOperation(value = "按地区-静脉溶栓率", notes = "") + @RequestMapping(value = "/thrombolysisByArea", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse thrombolysisByArea(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("按地区-静脉溶栓率:{}", params); + StatisticalVo.ComparisonThrombolysis comparisonThrombolysis = manageStatisticalService.thrombolysisByArea(params.getParam(), params.getUserId()); + log.info("按地区-静脉溶栓率结果:{}", comparisonThrombolysis); + return JsonResponse.newInstance().ok(comparisonThrombolysis); + } + } diff --git a/src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java b/src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java index 9752aee..b73bf0d 100644 --- a/src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java +++ b/src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java @@ -208,7 +208,16 @@ public class StatisticalDto { private Long twoId; @ApiModelProperty("排序字段 0第一个AIS数量 1第二个AIS数量 2第一个4.5小时AIS数量 3第二个4.5小时AIS数量 4第一个4.5小时AIS百分比 5第二个4.5小时AIS百分比") private byte desc = 0; + } - + @Data + @ApiModel("后台对比两个问卷的溶栓率-请求") + public static class ComparisonThrombolysis { + @ApiModelProperty("第一个问卷Id") + private Long oneId; + @ApiModelProperty("第二个问卷Id") + private Long twoId; + @ApiModelProperty("排序字段 0第一个问卷溶栓率 1第二个问卷溶栓率 2第一个问卷二级医院 3第二个问卷二级医院 4第一个问卷三级医院 5第二个问卷三级医院") + private byte desc = 0; } } diff --git a/src/main/java/com/ccsens/carbasics/bean/po/Questionnaire.java b/src/main/java/com/ccsens/carbasics/bean/po/Questionnaire.java index 668d824..7c8bc72 100644 --- a/src/main/java/com/ccsens/carbasics/bean/po/Questionnaire.java +++ b/src/main/java/com/ccsens/carbasics/bean/po/Questionnaire.java @@ -24,6 +24,8 @@ public class Questionnaire implements Serializable { private Long writeEndTime; + private String dataScope; + private static final long serialVersionUID = 1L; public Long getId() { @@ -106,6 +108,14 @@ public class Questionnaire implements Serializable { this.writeEndTime = writeEndTime; } + public String getDataScope() { + return dataScope; + } + + public void setDataScope(String dataScope) { + this.dataScope = dataScope == null ? null : dataScope.trim(); + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -122,6 +132,7 @@ public class Questionnaire implements Serializable { sb.append(", recStatus=").append(recStatus); sb.append(", writeStartTime=").append(writeStartTime); sb.append(", writeEndTime=").append(writeEndTime); + sb.append(", dataScope=").append(dataScope); sb.append("]"); return sb.toString(); } diff --git a/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireExample.java b/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireExample.java index b01e6df..d64eeaa 100644 --- a/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireExample.java +++ b/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireExample.java @@ -714,6 +714,76 @@ public class QuestionnaireExample { addCriterion("write_end_time not between", value1, value2, "writeEndTime"); return (Criteria) this; } + + public Criteria andDataScopeIsNull() { + addCriterion("data_scope is null"); + return (Criteria) this; + } + + public Criteria andDataScopeIsNotNull() { + addCriterion("data_scope is not null"); + return (Criteria) this; + } + + public Criteria andDataScopeEqualTo(String value) { + addCriterion("data_scope =", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeNotEqualTo(String value) { + addCriterion("data_scope <>", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeGreaterThan(String value) { + addCriterion("data_scope >", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeGreaterThanOrEqualTo(String value) { + addCriterion("data_scope >=", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeLessThan(String value) { + addCriterion("data_scope <", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeLessThanOrEqualTo(String value) { + addCriterion("data_scope <=", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeLike(String value) { + addCriterion("data_scope like", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeNotLike(String value) { + addCriterion("data_scope not like", value, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeIn(List values) { + addCriterion("data_scope in", values, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeNotIn(List values) { + addCriterion("data_scope not in", values, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeBetween(String value1, String value2) { + addCriterion("data_scope between", value1, value2, "dataScope"); + return (Criteria) this; + } + + public Criteria andDataScopeNotBetween(String value1, String value2) { + addCriterion("data_scope not between", value1, value2, "dataScope"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java index 4da01d7..7977cc6 100644 --- a/src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java +++ b/src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java @@ -241,4 +241,115 @@ public class StatisticalVo { } } + @ApiModel("对比两个问卷的静脉溶栓率-返回") + @Data + public static class ComparisonThrombolysis { + @ApiModelProperty("静脉溶栓率") + private BigDecimal totalPercent = new BigDecimal(0); + @ApiModelProperty("二级医院溶栓率") + private BigDecimal secondLevelPercent = new BigDecimal(0); + @ApiModelProperty("三级医院溶栓率") + private BigDecimal threeLevelPercent = new BigDecimal(0); + @ApiModelProperty("进阶目标") + private BigDecimal advancedGoal = new BigDecimal(0); + @ApiModelProperty("基础目标") + private BigDecimal basicGoal = new BigDecimal(0); + @ApiModelProperty("表格数据") + private List thrombolysisList; + + public BigDecimal getTotalPercent() { + int totalNum = 0; + int num = 0; + if(CollectionUtil.isNotEmpty(thrombolysisList)){ + for (Thrombolysis thrombolysis : thrombolysisList) { + totalNum += thrombolysis.getTotalNum(); + num += thrombolysis.getOneNum() + thrombolysis.getTowNum(); + } + } + return totalNum == 0 ? totalPercent : (new BigDecimal(num * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getSecondLevelPercent() { + int totalNum = 0; + int num = 0; + if(CollectionUtil.isNotEmpty(thrombolysisList)){ + for (Thrombolysis thrombolysis : thrombolysisList) { + totalNum += thrombolysis.getTotalNum(); + num += thrombolysis.getOneSecondLevelNum() + thrombolysis.getTowSecondLevelNum(); + } + } + return totalNum == 0 ? secondLevelPercent : (new BigDecimal(num * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getThreeLevelPercent() { + int totalNum = 0; + int num = 0; + if(CollectionUtil.isNotEmpty(thrombolysisList)){ + for (Thrombolysis thrombolysis : thrombolysisList) { + totalNum += thrombolysis.getTotalNum(); + num += thrombolysis.getOneThreeLevelNum() + thrombolysis.getTowThreeLevelNum(); + } + } + return totalNum == 0 ? threeLevelPercent : (new BigDecimal(num * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + @ApiModel("对比两个问卷的静脉溶栓率-返回") + @Data + public static class Thrombolysis { + @ApiModelProperty("列名") + private String name; + @ApiModelProperty("第一个静脉溶栓率") + private BigDecimal onePercent = new BigDecimal(0); + @ApiModelProperty("第二个静脉溶栓率") + private BigDecimal towPercent = new BigDecimal(0); + @ApiModelProperty("第一个二级静脉溶栓率") + private BigDecimal oneSecondLevelPercent = new BigDecimal(0); + @ApiModelProperty("第二个二级静脉溶栓率") + private BigDecimal towSecondLevelPercent = new BigDecimal(0); + @ApiModelProperty("第一个三级静脉溶栓率") + private BigDecimal oneThreeLevelPercent = new BigDecimal(0); + @ApiModelProperty("第一个三级静脉溶栓率") + private BigDecimal towThreeLevelPercent = new BigDecimal(0); + + @JsonIgnore + private Integer totalNum = 0; + @JsonIgnore + private Integer oneNum = 0; + @JsonIgnore + private Integer towNum = 0; + @JsonIgnore + private Integer oneSecondLevelNum = 0; + @JsonIgnore + private Integer towSecondLevelNum = 0; + @JsonIgnore + private Integer oneThreeLevelNum = 0; + @JsonIgnore + private Integer towThreeLevelNum = 0; + + public BigDecimal getOnePercent() { + return totalNum == 0 ? onePercent : (new BigDecimal(oneNum * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getTowPercent() { + return totalNum == 0 ? towPercent : (new BigDecimal(towNum * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getOneSecondLevelPercent() { + return totalNum == 0 ? oneSecondLevelPercent : (new BigDecimal(oneSecondLevelNum * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getTowSecondLevelPercent() { + return totalNum == 0 ? towSecondLevelPercent : (new BigDecimal(towSecondLevelNum * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getOneThreeLevelPercent() { + return totalNum == 0 ? oneThreeLevelPercent : (new BigDecimal(oneThreeLevelNum * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + + public BigDecimal getTowThreeLevelPercent() { + return totalNum == 0 ? towThreeLevelPercent : (new BigDecimal(towThreeLevelNum * 100.00).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP)); + } + } + } + } diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/ManageStatisticalDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/ManageStatisticalDao.java index 73d70c9..2132621 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/ManageStatisticalDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/ManageStatisticalDao.java @@ -33,4 +33,6 @@ public interface ManageStatisticalDao { List comparisonAisByArea(@Param("oneId")Long oneId, @Param("twoId")Long twoId, @Param("desc")byte desc); List comparisonAisPercentByArea(@Param("oneId")Long oneId, @Param("twoId")Long twoId, @Param("desc")byte desc); + + List thrombolysisByArea(@Param("oneId")Long oneId, @Param("twoId")Long twoId, @Param("desc")byte desc); } diff --git a/src/main/java/com/ccsens/carbasics/service/IManageStatisticalService.java b/src/main/java/com/ccsens/carbasics/service/IManageStatisticalService.java index 6501539..8e66af7 100644 --- a/src/main/java/com/ccsens/carbasics/service/IManageStatisticalService.java +++ b/src/main/java/com/ccsens/carbasics/service/IManageStatisticalService.java @@ -45,4 +45,6 @@ public interface IManageStatisticalService { StatisticalVo.ComparisonAis comparisonAisByArea(StatisticalDto.Comparison param, Long userId); StatisticalVo.ComparisonAisPercent comparisonAisPercentByArea(StatisticalDto.Comparison param, Long userId); + + StatisticalVo.ComparisonThrombolysis thrombolysisByArea(StatisticalDto.ComparisonThrombolysis param, Long userId); } diff --git a/src/main/java/com/ccsens/carbasics/service/ManageStatisticalService.java b/src/main/java/com/ccsens/carbasics/service/ManageStatisticalService.java index 78192b3..4eca7e9 100644 --- a/src/main/java/com/ccsens/carbasics/service/ManageStatisticalService.java +++ b/src/main/java/com/ccsens/carbasics/service/ManageStatisticalService.java @@ -1,14 +1,17 @@ package com.ccsens.carbasics.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.carbasics.bean.dto.QuestionnaireDto; import com.ccsens.carbasics.bean.dto.StatisticalDto; +import com.ccsens.carbasics.bean.po.QuestionnaireDataDatumLine; import com.ccsens.carbasics.bean.vo.QuestionnaireVo; import com.ccsens.carbasics.bean.vo.StatisticalVo; import com.ccsens.carbasics.persist.dao.ManageStatisticalDao; import com.ccsens.carbasics.persist.dao.QuestionnaireDao; +import com.ccsens.carbasics.persist.dao.QuestionnaireDataDatumLineDao; import javafx.print.Collation; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -30,6 +33,8 @@ public class ManageStatisticalService implements IManageStatisticalService { private QuestionnaireDao questionnaireDao; @Resource private ManageStatisticalDao manageStatisticalDao; + @Resource + private QuestionnaireDataDatumLineDao dataDatumLineDao; @Override public List questionnaireByType(QuestionnaireDto.QueryQuestionnaireByType param, Long userId) { @@ -99,4 +104,48 @@ public class ManageStatisticalService implements IManageStatisticalService { return comparisonAis; } + + @Override + public StatisticalVo.ComparisonThrombolysis thrombolysisByArea(StatisticalDto.ComparisonThrombolysis param, Long userId) { + StatisticalVo.ComparisonThrombolysis comparisonThrombolysis = new StatisticalVo.ComparisonThrombolysis(); + + List thrombolyses = manageStatisticalDao.thrombolysisByArea(param.getOneId(),param.getTwoId(),param.getDesc()); + //排序 + switch (param.getDesc()){ + case 0: + CollectionUtil.sort(thrombolyses, (o1, o2) -> o2.getOneNum().compareTo(o1.getOneNum())); + break; + case 1: + CollectionUtil.sort(thrombolyses, (o1, o2) -> o2.getTowNum().compareTo(o1.getTowNum())); + break; + case 2: + CollectionUtil.sort(thrombolyses, (o1, o2) -> o2.getOneSecondLevelNum().compareTo(o1.getOneSecondLevelNum())); + break; + case 3: + CollectionUtil.sort(thrombolyses, (o1, o2) -> o2.getTowSecondLevelNum().compareTo(o1.getTowSecondLevelNum())); + break; + case 4: + CollectionUtil.sort(thrombolyses, (o1, o2) -> o2.getOneThreeLevelNum().compareTo(o1.getOneThreeLevelNum())); + break; + case 5: + CollectionUtil.sort(thrombolyses, (o1, o2) -> o2.getTowThreeLevelNum().compareTo(o1.getTowThreeLevelNum())); + break; + default: + break; + } + comparisonThrombolysis.setThrombolysisList(thrombolyses); + //查找标准 + List dataDatumLineList = dataDatumLineDao.queryAll((byte) 0); + if (CollectionUtil.isNotEmpty(dataDatumLineList)) { + for (QuestionnaireDataDatumLine dataDatumLine : dataDatumLineList) { + if ("基础目标".equals(dataDatumLine.getName())) { + comparisonThrombolysis.setBasicGoal(dataDatumLine.getDatumLine()); + } + if ("进阶目标".equals(dataDatumLine.getName())) { + comparisonThrombolysis.setAdvancedGoal(dataDatumLine.getDatumLine()); + } + } + } + return comparisonThrombolysis; + } } diff --git a/src/main/resources/mapper_dao/ManageStatisticalDao.xml b/src/main/resources/mapper_dao/ManageStatisticalDao.xml index a139afd..7b37463 100644 --- a/src/main/resources/mapper_dao/ManageStatisticalDao.xml +++ b/src/main/resources/mapper_dao/ManageStatisticalDao.xml @@ -251,4 +251,64 @@ ORDER BY a.towHourNum DESC + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/QuestionnaireDao.xml b/src/main/resources/mapper_dao/QuestionnaireDao.xml index bae095c..4038ce9 100644 --- a/src/main/resources/mapper_dao/QuestionnaireDao.xml +++ b/src/main/resources/mapper_dao/QuestionnaireDao.xml @@ -505,7 +505,7 @@ resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$QuestionnaireByType"> select id, - questionnaire_name as questionnaireName + data_scope as questionnaireName from t_qcp_questionnaire where diff --git a/src/main/resources/mapper_raw/QuestionnaireMapper.xml b/src/main/resources/mapper_raw/QuestionnaireMapper.xml index a24578f..75bf263 100644 --- a/src/main/resources/mapper_raw/QuestionnaireMapper.xml +++ b/src/main/resources/mapper_raw/QuestionnaireMapper.xml @@ -12,6 +12,7 @@ + @@ -73,7 +74,7 @@ id, questionnaire_name, start_time, end_time, type, created_at, updated_at, rec_status, - write_start_time, write_end_time + write_start_time, write_end_time, data_scope @@ -221,6 +228,9 @@ write_end_time = #{record.writeEndTime,jdbcType=BIGINT}, + + data_scope = #{record.dataScope,jdbcType=VARCHAR}, + @@ -237,7 +247,8 @@ updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, rec_status = #{record.recStatus,jdbcType=TINYINT}, write_start_time = #{record.writeStartTime,jdbcType=BIGINT}, - write_end_time = #{record.writeEndTime,jdbcType=BIGINT} + write_end_time = #{record.writeEndTime,jdbcType=BIGINT}, + data_scope = #{record.dataScope,jdbcType=VARCHAR} @@ -272,6 +283,9 @@ write_end_time = #{writeEndTime,jdbcType=BIGINT}, + + data_scope = #{dataScope,jdbcType=VARCHAR}, + where id = #{id,jdbcType=BIGINT} @@ -285,7 +299,8 @@ updated_at = #{updatedAt,jdbcType=TIMESTAMP}, rec_status = #{recStatus,jdbcType=TINYINT}, write_start_time = #{writeStartTime,jdbcType=BIGINT}, - write_end_time = #{writeEndTime,jdbcType=BIGINT} + write_end_time = #{writeEndTime,jdbcType=BIGINT}, + data_scope = #{dataScope,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/src/main/resources/mbg.xml b/src/main/resources/mbg.xml index 6421d19..c00b953 100644 --- a/src/main/resources/mbg.xml +++ b/src/main/resources/mbg.xml @@ -59,10 +59,10 @@ - +
-
+ @@ -92,7 +92,7 @@ -
+