Browse Source

Merge branch 'master' of dd.tall.wiki:ccsens_wiki/carbasics

master
zy_Java 4 years ago
parent
commit
8d2151e794
  1. 24
      src/main/java/com/ccsens/carbasics/api/StatisticalController.java
  2. 35
      src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java
  3. 85
      src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java
  4. 11
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java
  5. 1
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java
  6. 10
      src/main/java/com/ccsens/carbasics/service/IStatisticalService.java
  7. 40
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  8. 5
      src/main/java/com/ccsens/carbasics/util/Constant.java
  9. 6
      src/main/resources/mapper_dao/FirstAidRecordDao.xml
  10. 33
      src/main/resources/mapper_dao/OrganizationDao.xml

24
src/main/java/com/ccsens/carbasics/api/StatisticalController.java

@ -1,9 +1,22 @@
package com.ccsens.carbasics.api;
import com.ccsens.carbasics.bean.dto.PatientDto;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.vo.PatientVo;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import com.ccsens.carbasics.service.IStatisticalService;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
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;
@ -21,4 +34,15 @@ public class StatisticalController {
@Resource
private IStatisticalService statisticalService;
@MustLogin
@ApiOperation(value = "跑道图", notes = "跑道图")
@RequestMapping(value = "/runway", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> runway(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.RunWay> params) {
log.info("跑道图:{}", params);
StatisticalVo.Common common = statisticalService.runway(params.getParam(), params.getUserId());
log.info("跑道图结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
}

35
src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java

@ -16,47 +16,18 @@ import javax.validation.constraints.NotNull;
public class StatisticalDto {
@Data
@ApiModel("环节进度查询-请求")
public static class QueryStep{
@ApiModel("跑道图-请求")
public static class RunWay{
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目ID")
private Long projectId;
}
@Data
@ApiModel("质控报告查询-请求")
public static class Quality{
@NotNull
@ApiModelProperty("开始时间")
private Long startTime;
@NotNull
@ApiModelProperty("结束时间")
@ApiModelProperty("开始时间")
private Long endTime;
@ApiModelProperty("类型:0:月质控 1:周质控")
private byte type = 0;
}
@Data
@ApiModel("查询各环节时长")
public static class PointTime{
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目ID")
private Long projectId;
@Max(value=1,message = "请查询正确的查询人类型")
@ApiModelProperty("查询人的类型:0大屏 1医生 默认0")
private byte type = 0;
}
@Data
@ApiModel("急救数量统计图数据")
public static class SelResult{
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目ID")
private Long projectId;
@NotBlank(message = "请选择查询的年份")
@ApiModelProperty("year,比如直接传入 2020 即可")
private String year;
@ApiModelProperty("查询人的类型:0大屏 1医生 默认0")
private byte type = 0;
}
}

85
src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java

@ -1,10 +1,11 @@
package com.ccsens.carbasics.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @description:
@ -13,83 +14,23 @@ import java.math.BigDecimal;
*/
public class StatisticalVo {
@ApiModel("统计-返回")
@Data
@ApiModel("环节进度查询-响应")
public static class Step{
@ApiModelProperty("环节id")
private Long stepId;
@ApiModelProperty("环节code")
private String stepCode;
@ApiModelProperty("环节名称")
private String stepName;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("类型(0-平车,1-用户)")
private Byte type;
@ApiModelProperty("医生/平车名字")
private String memberName;
}
@Data
@ApiModel("月/周质控报告-响应")
public static class Quality{
@ApiModelProperty("日期")
private String date;
@ApiModelProperty("总患者数")
public static class Common{
@ApiModelProperty("总数")
private Long total;
@ApiModelProperty("最大")
private Long max;
@ApiModelProperty("最小")
private Long min;
@ApiModelProperty("中位数")
private BigDecimal median;
@ApiModelProperty("平均数")
private BigDecimal avg;
@ApiModelProperty("达标数")
private Long passNum;
@ApiModelProperty("溶栓数")
private Long thrombolyticNum;
@ApiModelProperty("达标比例")
private BigDecimal passRatio;
@ApiModelProperty("溶栓比例")
private BigDecimal thrombolyticRatio;
public BigDecimal getPassRatio() {
if (passRatio == null && passNum != null && thrombolyticNum != null && thrombolyticNum != 0) {
passRatio = new BigDecimal(passNum * 100).divide(new BigDecimal(thrombolyticNum), 2, BigDecimal.ROUND_HALF_UP);
}
return passRatio;
}
public BigDecimal getThrombolyticRatio() {
if (thrombolyticRatio == null && thrombolyticNum != null && total != null && total != 0) {
passRatio = new BigDecimal(thrombolyticNum * 100).divide(new BigDecimal(total), 2, BigDecimal.ROUND_HALF_UP);
}
return thrombolyticRatio;
}
public BigDecimal getMedian() {
if (median != null && median.compareTo(BigDecimal.ZERO) != 0){
median = median.setScale(2,BigDecimal.ROUND_DOWN);
}
return median;
}
@ApiModelProperty("统计列表")
private List<Item> list;
public BigDecimal getAvg() {
if (avg != null && avg.compareTo(BigDecimal.ZERO) != 0){
avg = avg.setScale(2,BigDecimal.ROUND_DOWN);
}
return avg;
}
}
@ApiModel("统计-每一项")
@Data
@ApiModel("查询每天质控报告-响应")
public static class DayQuality{
@ApiModelProperty("日期")
private String date;
@ApiModelProperty("中位数")
private BigDecimal median;
public static class Item{
@ApiModelProperty("类型 横坐标等")
private String name;
@ApiModelProperty("对应值")
private String value;
}
}

11
src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java

@ -0,0 +1,11 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.persist.mapper.FirstAidRecordMapper;
/**
* @description: 急救记录相关
* @author: whj
* @time: 2021/9/1 17:43
*/
public interface FirstAidRecordDao extends FirstAidRecordMapper {
}

1
src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java

@ -35,4 +35,5 @@ public interface OrganizationDao extends OrganizationMapper {
* @return 返回医院列表
*/
List<Organization> getHospitalByParentId(@Param("parentId")Long parentId);
}

10
src/main/java/com/ccsens/carbasics/service/IStatisticalService.java

@ -3,9 +3,6 @@ package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import com.ccsens.carbasics.bean.vo.StatisticsVo;
import java.util.List;
/**
* @description:统计查询
@ -13,4 +10,11 @@ import java.util.List;
*/
public interface IStatisticalService {
/**
* 跑道图统计溶栓例数机械再通例数脑出血例数时间窗患者数
* @param param 请求参数
* @param userId 用户ID
* @return 统计
*/
StatisticalVo.Common runway(StatisticalDto.RunWay param, Long userId);
}

40
src/main/java/com/ccsens/carbasics/service/StatisticalService.java

@ -1,11 +1,24 @@
package com.ccsens.carbasics.service;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.po.Organization;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import com.ccsens.carbasics.persist.dao.FirstAidRecordDao;
import com.ccsens.carbasics.persist.dao.OrganizationDao;
import com.ccsens.carbasics.util.Constant;
import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.util.exception.BaseException;
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.List;
/**
* @description: 统计查询
* @author: whj
@ -16,5 +29,32 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class StatisticalService implements IStatisticalService {
@Resource
private FirstAidRecordDao firstAidRecordDao;
@Resource
private OrganizationDao organizationDao;
@Override
public StatisticalVo.Common runway(StatisticalDto.RunWay param, Long userId) {
// 判断机构是否存在
Organization organization = organizationDao.getByProjectId(param.getProjectId());
if (organization == null) {
throw new BaseException(DefaultCodeError.NOT_ORGANIZATION);
}
List<Long> hospitalIds = new ArrayList<>();
if (organization.getOrganizationType() == Constant.Organization.HOSPITAL) {
//医院
hospitalIds.add(organization.getId());
} else {
// 查所有下级
List<Organization> hospitals = organizationDao.getHospitalByParentId(organization.getId());
if (CollectionUtil.isEmpty(hospitals)) {
throw new BaseException(DefaultCodeError.NOT_ORGANIZATION);
}
hospitals.forEach(hospital -> hospitalIds.add(hospital.getId()));
}
return null;
}
}

5
src/main/java/com/ccsens/carbasics/util/Constant.java

@ -15,6 +15,11 @@ public class Constant {
/**xls*/
public static final String XLS = "xls";
public static final class Organization{
/**医院*/
public final static byte HOSPITAL = 3;
}
/**科室相关*/
public static final class Department {
/**急诊*/

6
src/main/resources/mapper_dao/FirstAidRecordDao.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.carbasics.persist.dao.FirstAidRecordDao">
</mapper>

33
src/main/resources/mapper_dao/OrganizationDao.xml

@ -40,24 +40,29 @@
and o.id = p.organization_id
and o.rec_status = 0
and p.rec_status = 0
limit 1
</select>
<select id="getHospitalByParentId" resultType="com.ccsens.carbasics.bean.po.Organization">
SELECT
id,
organization_type as organizationType,
`code`,
`name`,
short_name as shortName,
introduce,
`level`
*
FROM
t_organization o,
t_organization_parent p
(
SELECT
t1.id,
t1.organization_type as organizationType,
t1.CODE,
t1.NAME,
t1.short_name AS shortName,
t1.introduce,
t1.LEVEL,
IF
( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild
FROM
( SELECT t.*, p.parent_id FROM t_organization t, t_organization_parent p WHERE t.id = p.organization_id ORDER BY parent_id, id ) t1,
( SELECT @pids := #{parentId} ) t2
) t3
WHERE
p.parent_id = #{parentId}
and o.id = p.organization_id
and o.organization_type = 3
and o.rec_status = 0
and p.rec_status = 0
ischild != 0
AND organizationType = 3
</select>
</mapper>

Loading…
Cancel
Save