From e544d65b0842992fda98fa0db84391859b299359 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Wed, 3 Nov 2021 16:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E5=8D=B7=E8=B0=83=E6=9F=A5=E6=BA=B6?= =?UTF-8?q?=E6=A0=93=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A311.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/DataStatisticsController.java | 65 ++ .../carbasics/bean/dto/StatisticsDto.java | 17 +- .../bean/po/QuestionnaireDataDatumLine.java | 107 +++ .../po/QuestionnaireDataDatumLineExample.java | 702 ++++++++++++++++++ .../carbasics/bean/vo/StatisticsVo.java | 35 + .../persist/dao/DataStatisticsDao.java | 32 + .../dao/QuestionnaireDataDatumLineDao.java | 25 + .../QuestionnaireDataDatumLineMapper.java | 30 + .../service/DataStatisticsService.java | 104 +++ .../service/IDataStatisticsService.java | 35 + .../carbasics/service/RoleCarService.java | 3 + src/main/resources/application.yml | 4 +- .../mapper_dao/DataStatisticsDao.xml | 224 ++++++ .../QuestionnaireDataDatumLineDao.xml | 31 + .../QuestionnaireDataDatumLineMapper.xml | 258 +++++++ src/main/resources/mbg.xml | 3 +- 16 files changed, 1671 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/ccsens/carbasics/api/DataStatisticsController.java create mode 100644 src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLine.java create mode 100644 src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLineExample.java create mode 100644 src/main/java/com/ccsens/carbasics/persist/dao/DataStatisticsDao.java create mode 100644 src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDataDatumLineDao.java create mode 100644 src/main/java/com/ccsens/carbasics/persist/mapper/QuestionnaireDataDatumLineMapper.java create mode 100644 src/main/java/com/ccsens/carbasics/service/DataStatisticsService.java create mode 100644 src/main/java/com/ccsens/carbasics/service/IDataStatisticsService.java create mode 100644 src/main/resources/mapper_dao/DataStatisticsDao.xml create mode 100644 src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml create mode 100644 src/main/resources/mapper_raw/QuestionnaireDataDatumLineMapper.xml diff --git a/src/main/java/com/ccsens/carbasics/api/DataStatisticsController.java b/src/main/java/com/ccsens/carbasics/api/DataStatisticsController.java new file mode 100644 index 0000000..5ce41d4 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/api/DataStatisticsController.java @@ -0,0 +1,65 @@ +package com.ccsens.carbasics.api; + + + +import com.ccsens.carbasics.bean.dto.StatisticsDto; +import com.ccsens.carbasics.bean.vo.QuestionnaireVo; +import com.ccsens.carbasics.bean.vo.StatisticsVo; +import com.ccsens.carbasics.service.IDataStatisticsService; +import com.ccsens.cloudutil.annotation.MustLogin; +import com.ccsens.util.JsonResponse; +import com.ccsens.util.bean.dto.QueryDto; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.List; + +/** + * @author AUSU + */ +@Api(tags = "问卷数据统计相关") +@Slf4j +@RestController +@RequestMapping("/statistics") +public class DataStatisticsController { + + @Resource + private IDataStatisticsService dataStatisticsService; + + @MustLogin + @ApiOperation(value = "静脉溶栓率统计", notes = "") + @RequestMapping(value = "/jmrs", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse statisticsJmrs(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + log.info("静脉溶栓率统计开始{}",params); + StatisticsVo.JmrsUpResult result = dataStatisticsService.statisticsJmrs(params.getUserId()); + log.info("静脉溶栓率统计结束:{}",result); + return JsonResponse.newInstance().ok(result); + } + + @MustLogin + @ApiOperation(value = "静脉溶栓达标率统计", notes = "") + @RequestMapping(value = "/standards", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse queryStandards(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + log.info("静脉溶栓达标率统计开始{}",params); + StatisticsVo.StandardsResult result = dataStatisticsService.queryStandards(params.getParam(),params.getUserId()); + log.info("静脉溶栓达标率统计结束:{}",result); + return JsonResponse.newInstance().ok(result); + } + + @MustLogin + @ApiOperation(value = "市或地区静脉溶率统计", notes = "") + @RequestMapping(value = "/data", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse queryData(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + log.info("市或地区静脉溶率统计开始{}",params); + List result = dataStatisticsService.queryData(params.getParam(),params.getUserId()); + log.info("市或地区静脉溶率统计结束:{}",result); + return JsonResponse.newInstance().ok(result); + } +} diff --git a/src/main/java/com/ccsens/carbasics/bean/dto/StatisticsDto.java b/src/main/java/com/ccsens/carbasics/bean/dto/StatisticsDto.java index 1c51660..c3e5983 100644 --- a/src/main/java/com/ccsens/carbasics/bean/dto/StatisticsDto.java +++ b/src/main/java/com/ccsens/carbasics/bean/dto/StatisticsDto.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -30,5 +32,18 @@ public class StatisticsDto { private Long id; } - + @Data + @ApiModel("查询静脉溶栓达标率") + public static class QueryStandards { + @NotNull + @ApiModelProperty("查询类型(0-市,1-医院)") + private Byte queryType; + @NotNull + @Max(value = 1) + @Min(value = 0) + @ApiModelProperty("查询医院等级(0-三级医院,1-二级医院)") + private Byte queryLevel; + @ApiModelProperty("市id") + private Long areaId; + } } diff --git a/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLine.java b/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLine.java new file mode 100644 index 0000000..91751c9 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLine.java @@ -0,0 +1,107 @@ +package com.ccsens.carbasics.bean.po; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +public class QuestionnaireDataDatumLine implements Serializable { + private Long id; + + private String name; + + private BigDecimal datumLine; + + private Byte type; + + private String remark; + + private Date createdAt; + + private Date updatedAt; + + private Byte recStatus; + + private static final long serialVersionUID = 1L; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public BigDecimal getDatumLine() { + return datumLine; + } + + public void setDatumLine(BigDecimal datumLine) { + this.datumLine = datumLine; + } + + public Byte getType() { + return type; + } + + public void setType(Byte type) { + this.type = type; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Byte getRecStatus() { + return recStatus; + } + + public void setRecStatus(Byte recStatus) { + this.recStatus = recStatus; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", name=").append(name); + sb.append(", datumLine=").append(datumLine); + sb.append(", type=").append(type); + sb.append(", remark=").append(remark); + sb.append(", createdAt=").append(createdAt); + sb.append(", updatedAt=").append(updatedAt); + sb.append(", recStatus=").append(recStatus); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLineExample.java b/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLineExample.java new file mode 100644 index 0000000..ae4d0be --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/bean/po/QuestionnaireDataDatumLineExample.java @@ -0,0 +1,702 @@ +package com.ccsens.carbasics.bean.po; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class QuestionnaireDataDatumLineExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public QuestionnaireDataDatumLineExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andDatumLineIsNull() { + addCriterion("datum_line is null"); + return (Criteria) this; + } + + public Criteria andDatumLineIsNotNull() { + addCriterion("datum_line is not null"); + return (Criteria) this; + } + + public Criteria andDatumLineEqualTo(BigDecimal value) { + addCriterion("datum_line =", value, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineNotEqualTo(BigDecimal value) { + addCriterion("datum_line <>", value, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineGreaterThan(BigDecimal value) { + addCriterion("datum_line >", value, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("datum_line >=", value, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineLessThan(BigDecimal value) { + addCriterion("datum_line <", value, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineLessThanOrEqualTo(BigDecimal value) { + addCriterion("datum_line <=", value, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineIn(List values) { + addCriterion("datum_line in", values, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineNotIn(List values) { + addCriterion("datum_line not in", values, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("datum_line between", value1, value2, "datumLine"); + return (Criteria) this; + } + + public Criteria andDatumLineNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("datum_line not between", value1, value2, "datumLine"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(Byte value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(Byte value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(Byte value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(Byte value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(Byte value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(Byte value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(Byte value1, Byte value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(Byte value1, Byte value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andCreatedAtIsNull() { + addCriterion("created_at is null"); + return (Criteria) this; + } + + public Criteria andCreatedAtIsNotNull() { + addCriterion("created_at is not null"); + return (Criteria) this; + } + + public Criteria andCreatedAtEqualTo(Date value) { + addCriterion("created_at =", value, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtNotEqualTo(Date value) { + addCriterion("created_at <>", value, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtGreaterThan(Date value) { + addCriterion("created_at >", value, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtGreaterThanOrEqualTo(Date value) { + addCriterion("created_at >=", value, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtLessThan(Date value) { + addCriterion("created_at <", value, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtLessThanOrEqualTo(Date value) { + addCriterion("created_at <=", value, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtIn(List values) { + addCriterion("created_at in", values, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtNotIn(List values) { + addCriterion("created_at not in", values, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtBetween(Date value1, Date value2) { + addCriterion("created_at between", value1, value2, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtNotBetween(Date value1, Date value2) { + addCriterion("created_at not between", value1, value2, "createdAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtIsNull() { + addCriterion("updated_at is null"); + return (Criteria) this; + } + + public Criteria andUpdatedAtIsNotNull() { + addCriterion("updated_at is not null"); + return (Criteria) this; + } + + public Criteria andUpdatedAtEqualTo(Date value) { + addCriterion("updated_at =", value, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtNotEqualTo(Date value) { + addCriterion("updated_at <>", value, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtGreaterThan(Date value) { + addCriterion("updated_at >", value, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtGreaterThanOrEqualTo(Date value) { + addCriterion("updated_at >=", value, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtLessThan(Date value) { + addCriterion("updated_at <", value, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtLessThanOrEqualTo(Date value) { + addCriterion("updated_at <=", value, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtIn(List values) { + addCriterion("updated_at in", values, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtNotIn(List values) { + addCriterion("updated_at not in", values, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtBetween(Date value1, Date value2) { + addCriterion("updated_at between", value1, value2, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtNotBetween(Date value1, Date value2) { + addCriterion("updated_at not between", value1, value2, "updatedAt"); + return (Criteria) this; + } + + public Criteria andRecStatusIsNull() { + addCriterion("rec_status is null"); + return (Criteria) this; + } + + public Criteria andRecStatusIsNotNull() { + addCriterion("rec_status is not null"); + return (Criteria) this; + } + + public Criteria andRecStatusEqualTo(Byte value) { + addCriterion("rec_status =", value, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusNotEqualTo(Byte value) { + addCriterion("rec_status <>", value, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusGreaterThan(Byte value) { + addCriterion("rec_status >", value, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusGreaterThanOrEqualTo(Byte value) { + addCriterion("rec_status >=", value, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusLessThan(Byte value) { + addCriterion("rec_status <", value, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusLessThanOrEqualTo(Byte value) { + addCriterion("rec_status <=", value, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusIn(List values) { + addCriterion("rec_status in", values, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusNotIn(List values) { + addCriterion("rec_status not in", values, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusBetween(Byte value1, Byte value2) { + addCriterion("rec_status between", value1, value2, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusNotBetween(Byte value1, Byte value2) { + addCriterion("rec_status not between", value1, value2, "recStatus"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java index c92e642..36dd4f6 100644 --- a/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java +++ b/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; import java.util.List; /** @@ -53,4 +54,38 @@ public class StatisticsVo { private List pointTimeInternation; } + @Data + @ApiModel("静脉溶栓上部统计结果") + public static class JmrsUpResult { + @ApiModelProperty("静脉溶栓率") + private String jmrsl; + @ApiModelProperty("二级医院静脉溶栓率") + private String twoJmrsl; + @ApiModelProperty("三级医院静脉溶栓率") + private String threeJmrsl; + } + + @Data + @ApiModel("静脉溶栓达标率统计-中部") + public static class StandardsResult { + @ApiModelProperty("大于70%的数量") + private Integer greaterThan70; + @ApiModelProperty("小于50%的数量") + private Integer lessThan50; + } + + @Data + @ApiModel("地区或者医院溶栓率-下部") + public static class AreaResult { + @ApiModelProperty("市id") + private Long areaId; + @ApiModelProperty("地区或者医院名称") + private String name; + @ApiModelProperty("各市/医院静脉溶栓率") + private BigDecimal value; + @ApiModelProperty("实际溶栓总数") + private Integer rsTotal; + @ApiModelProperty("各市总溶栓率") + private BigDecimal cityAllJmrsl; + } } diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/DataStatisticsDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/DataStatisticsDao.java new file mode 100644 index 0000000..fbadac1 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/persist/dao/DataStatisticsDao.java @@ -0,0 +1,32 @@ +package com.ccsens.carbasics.persist.dao; + +import com.ccsens.carbasics.bean.vo.StatisticsVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface DataStatisticsDao { + + /** + * 静脉溶栓统计(全部/二级/三级) + * @return 静脉溶栓统计 + */ + StatisticsVo.JmrsUpResult statisticsJmrs(); + + /** + * 查询各医院溶栓率 + * @param type 查询类型(0-三级,1-二级) + * @param areaId 市id + * @return 二级医院溶栓率 + */ + List queryJmrsForHospital(@Param("type")Byte type,@Param("areaId") Long areaId); + + /** + * 查询各市溶栓率 + * @param type 查询类型(0-三级,1-二级) + * @return 三级医院溶栓率 + */ + List queryJmrslForCity(@Param("type") Byte type); +} diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDataDatumLineDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDataDatumLineDao.java new file mode 100644 index 0000000..ed1c35c --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDataDatumLineDao.java @@ -0,0 +1,25 @@ +package com.ccsens.carbasics.persist.dao; + +import com.ccsens.carbasics.bean.po.QuestionnaireDataDatumLine; +import com.ccsens.carbasics.bean.vo.StatisticsVo; +import com.ccsens.carbasics.persist.mapper.QuestionnaireDataDatumLineMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface QuestionnaireDataDatumLineDao extends QuestionnaireDataDatumLineMapper { + + /** + * 查询全部基准线 + * @param type 基准线类型 + * @return 基准线列表 + */ + List queryAll(@Param("type")Byte type); + + /** + * 查询基准线 + * @param type 基准线类型 + * @return 基准线列表 + */ + List queryAllForJmrsl(@Param("type")Byte type); +} diff --git a/src/main/java/com/ccsens/carbasics/persist/mapper/QuestionnaireDataDatumLineMapper.java b/src/main/java/com/ccsens/carbasics/persist/mapper/QuestionnaireDataDatumLineMapper.java new file mode 100644 index 0000000..7f65186 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/persist/mapper/QuestionnaireDataDatumLineMapper.java @@ -0,0 +1,30 @@ +package com.ccsens.carbasics.persist.mapper; + +import com.ccsens.carbasics.bean.po.QuestionnaireDataDatumLine; +import com.ccsens.carbasics.bean.po.QuestionnaireDataDatumLineExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface QuestionnaireDataDatumLineMapper { + long countByExample(QuestionnaireDataDatumLineExample example); + + int deleteByExample(QuestionnaireDataDatumLineExample example); + + int deleteByPrimaryKey(Long id); + + int insert(QuestionnaireDataDatumLine record); + + int insertSelective(QuestionnaireDataDatumLine record); + + List selectByExample(QuestionnaireDataDatumLineExample example); + + QuestionnaireDataDatumLine selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") QuestionnaireDataDatumLine record, @Param("example") QuestionnaireDataDatumLineExample example); + + int updateByExample(@Param("record") QuestionnaireDataDatumLine record, @Param("example") QuestionnaireDataDatumLineExample example); + + int updateByPrimaryKeySelective(QuestionnaireDataDatumLine record); + + int updateByPrimaryKey(QuestionnaireDataDatumLine record); +} \ No newline at end of file diff --git a/src/main/java/com/ccsens/carbasics/service/DataStatisticsService.java b/src/main/java/com/ccsens/carbasics/service/DataStatisticsService.java new file mode 100644 index 0000000..2cf3381 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/service/DataStatisticsService.java @@ -0,0 +1,104 @@ +package com.ccsens.carbasics.service; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.ccsens.carbasics.bean.dto.StatisticsDto; +import com.ccsens.carbasics.bean.po.QuestionnaireDataDatumLine; +import com.ccsens.carbasics.bean.vo.StatisticsVo; +import com.ccsens.carbasics.persist.dao.DataStatisticsDao; +import com.ccsens.carbasics.persist.dao.QuestionnaireDataDatumLineDao; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +public class DataStatisticsService implements IDataStatisticsService { + + @Resource + private DataStatisticsDao dataStatisticsDao; + @Resource + private QuestionnaireDataDatumLineDao dataDatumLineDao; + + + @Override + public StatisticsVo.JmrsUpResult statisticsJmrs(Long userId) { + return dataStatisticsDao.statisticsJmrs(); + } + + + @Override + public StatisticsVo.StandardsResult queryStandards(StatisticsDto.QueryStandards param, Long userId) { + StatisticsVo.StandardsResult result = new StatisticsVo.StandardsResult(); + //查询基准线 + QuestionnaireDataDatumLine basics = new QuestionnaireDataDatumLine(); + QuestionnaireDataDatumLine advance = new QuestionnaireDataDatumLine(); + List dataDatumLineList = dataDatumLineDao.queryAll((byte) 0); + if (CollectionUtil.isNotEmpty(dataDatumLineList)) { + for (QuestionnaireDataDatumLine dataDatumLine : dataDatumLineList) { + if ("基础".equals(dataDatumLine.getName())) { + BeanUtil.copyProperties(dataDatumLine,basics); + } + if ("进阶".equals(dataDatumLine.getName())) { + BeanUtil.copyProperties(dataDatumLine,advance); + } + } + } + List areaResults = new ArrayList<>(); + if (0 == param.getQueryType()) { + areaResults = dataStatisticsDao.queryJmrslForCity(param.getQueryLevel()); + } + if (1 == param.getQueryType()) { + areaResults = dataStatisticsDao.queryJmrsForHospital(param.getQueryLevel(),param.getAreaId()); + } + int arrive = 0; + int unArrive = 0; + if (CollectionUtil.isNotEmpty(areaResults)) { + for (StatisticsVo.AreaResult areaResult : areaResults) { + if (areaResult.getValue().compareTo(advance.getDatumLine()) > -1) { + arrive++; + } + if (areaResult.getValue().compareTo(basics.getDatumLine()) < 1) { + unArrive++; + } + } + result.setGreaterThan70(arrive); + result.setLessThan50(unArrive); + } + return result; + } + + @Override + public List queryData(StatisticsDto.QueryStandards param, Long userId) { + //查询基准线 + List dataDatumLineList = dataDatumLineDao.queryAllForJmrsl((byte) 0); + + List areaResults = new ArrayList<>(); + if (0 == param.getQueryType()) { + areaResults = dataStatisticsDao.queryJmrslForCity(param.getQueryLevel()); + List cityJmsrl = dataStatisticsDao.queryJmrslForCity(null); + for (StatisticsVo.AreaResult areaResult : areaResults) { + for (StatisticsVo.AreaResult result : cityJmsrl) { + if (areaResult.getName().equals(result.getName())) { + areaResult.setCityAllJmrsl(result.getValue()); + } + } + } + } + if (1 == param.getQueryType()) { + areaResults = dataStatisticsDao.queryJmrsForHospital(param.getQueryLevel(),param.getAreaId()); + } + areaResults.addAll(dataDatumLineList); + List results = areaResults.stream().sorted(Comparator.comparing(StatisticsVo.AreaResult::getValue).reversed()).collect(Collectors.toList()); + return results; + } +} diff --git a/src/main/java/com/ccsens/carbasics/service/IDataStatisticsService.java b/src/main/java/com/ccsens/carbasics/service/IDataStatisticsService.java new file mode 100644 index 0000000..d02f7f2 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/service/IDataStatisticsService.java @@ -0,0 +1,35 @@ +package com.ccsens.carbasics.service; + +import com.ccsens.carbasics.bean.dto.StatisticsDto; +import com.ccsens.carbasics.bean.vo.StatisticsVo; + +import java.util.List; + +/** + * @author AUSU + */ +public interface IDataStatisticsService { + + /** + * 统计静脉溶栓率(上部分) + * @param userId 用户id + * @return 静脉溶栓率,二/三级医院静脉溶栓率 + */ + StatisticsVo.JmrsUpResult statisticsJmrs(Long userId); + + /** + * 查询静脉溶栓达标率 + * @param param 查询类型(0-三级,1-二级) + * @param userId 用户id + * @return 达标情况 + */ + StatisticsVo.StandardsResult queryStandards(StatisticsDto.QueryStandards param, Long userId); + + /** + * 查询市或地区的溶栓率 + * @param param 查询类型/查询医院类型/市id + * @param userId 用户id + * @return 各市/医院的溶栓率 + */ + List queryData(StatisticsDto.QueryStandards param, Long userId); +} diff --git a/src/main/java/com/ccsens/carbasics/service/RoleCarService.java b/src/main/java/com/ccsens/carbasics/service/RoleCarService.java index 4baf0f5..e6252e4 100644 --- a/src/main/java/com/ccsens/carbasics/service/RoleCarService.java +++ b/src/main/java/com/ccsens/carbasics/service/RoleCarService.java @@ -46,6 +46,9 @@ public class RoleCarService implements IRoleCarService { if (CollectionUtil.isNotEmpty(userRoleList)) { if (1 < userRoleList.size()) { userRoleList.forEach(userRole -> { + if ("创建者".equals(userRole.getName())) { + return; + } if (CollectionUtil.isEmpty(visibleList)) { CRoleVo.RoleInfo userRoleInfo = new CRoleVo.RoleInfo(); BeanUtil.copyProperties(userRole,userRoleInfo); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5abf242..c3b11fb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: prod - include: common, util-prod + active: test + include: common, util-test diff --git a/src/main/resources/mapper_dao/DataStatisticsDao.xml b/src/main/resources/mapper_dao/DataStatisticsDao.xml new file mode 100644 index 0000000..948612a --- /dev/null +++ b/src/main/resources/mapper_dao/DataStatisticsDao.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml b/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml new file mode 100644 index 0000000..208de5e --- /dev/null +++ b/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml @@ -0,0 +1,31 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_raw/QuestionnaireDataDatumLineMapper.xml b/src/main/resources/mapper_raw/QuestionnaireDataDatumLineMapper.xml new file mode 100644 index 0000000..daae40e --- /dev/null +++ b/src/main/resources/mapper_raw/QuestionnaireDataDatumLineMapper.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, name, datum_line, type, remark, created_at, updated_at, rec_status + + + + + delete from t_qcp_questionnaire_data_datum_line + where id = #{id,jdbcType=BIGINT} + + + delete from t_qcp_questionnaire_data_datum_line + + + + + + insert into t_qcp_questionnaire_data_datum_line (id, name, datum_line, + type, remark, created_at, + updated_at, rec_status) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{datumLine,jdbcType=DECIMAL}, + #{type,jdbcType=TINYINT}, #{remark,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, + #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}) + + + insert into t_qcp_questionnaire_data_datum_line + + + id, + + + name, + + + datum_line, + + + type, + + + remark, + + + created_at, + + + updated_at, + + + rec_status, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{datumLine,jdbcType=DECIMAL}, + + + #{type,jdbcType=TINYINT}, + + + #{remark,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{recStatus,jdbcType=TINYINT}, + + + + + + update t_qcp_questionnaire_data_datum_line + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + datum_line = #{record.datumLine,jdbcType=DECIMAL}, + + + type = #{record.type,jdbcType=TINYINT}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{record.recStatus,jdbcType=TINYINT}, + + + + + + + + update t_qcp_questionnaire_data_datum_line + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + datum_line = #{record.datumLine,jdbcType=DECIMAL}, + type = #{record.type,jdbcType=TINYINT}, + remark = #{record.remark,jdbcType=VARCHAR}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{record.recStatus,jdbcType=TINYINT} + + + + + + update t_qcp_questionnaire_data_datum_line + + + name = #{name,jdbcType=VARCHAR}, + + + datum_line = #{datumLine,jdbcType=DECIMAL}, + + + type = #{type,jdbcType=TINYINT}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{recStatus,jdbcType=TINYINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_qcp_questionnaire_data_datum_line + set name = #{name,jdbcType=VARCHAR}, + datum_line = #{datumLine,jdbcType=DECIMAL}, + type = #{type,jdbcType=TINYINT}, + remark = #{remark,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{recStatus,jdbcType=TINYINT} + 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 1f0aca5..eb08300 100644 --- a/src/main/resources/mbg.xml +++ b/src/main/resources/mbg.xml @@ -77,7 +77,8 @@ -
+ +