Browse Source

统计

master
zhizhi wu 4 years ago
parent
commit
1921ce2a5f
  1. 23
      src/main/java/com/ccsens/carbasics/api/StatisticalController.java
  2. 38
      src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java
  3. 2
      src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java
  4. 8
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java
  5. 7
      src/main/java/com/ccsens/carbasics/service/IStatisticalService.java
  6. 34
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  7. 28
      src/main/resources/mapper_dao/FirstAidRecordDao.xml

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

@ -44,7 +44,7 @@ public class StatisticalController {
@MustLogin
@ApiOperation(value = "跑道图", notes = "跑道图")
@ApiOperation(value = "DNT", notes = "DNT")
@RequestMapping(value = "/dnt", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> dnt(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.Time> params) {
log.info("dnt:{}", params);
@ -52,6 +52,7 @@ public class StatisticalController {
log.info("dnt结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@MustLogin
@ApiOperation(value = "dpt", notes = "dpt")
@RequestMapping(value = "/dpt", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
@ -79,4 +80,24 @@ public class StatisticalController {
log.info("统计列表结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@MustLogin
@ApiOperation(value = "手术方式/来院统计", notes = "zy")
@RequestMapping(value = "/toCourtStatistics", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> toCourtStatistics(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.CourtStatistics> params) {
log.info("手术方式/来院统计:{}", params);
StatisticalVo.Common common = statisticalService.toCourtStatistics(params.getParam(), params.getUserId());
log.info("手术方式/来院统计结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@MustLogin
@ApiOperation(value = "分项-溶栓患者/机械再通/脑出血", notes = "zy")
@RequestMapping(value = "/countSpecifyAnswer", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> countSpecifyAnswer(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.CourtStatistics> params) {
log.info("分项-溶栓患者/机械再通/脑出血:{}", params);
// StatisticalVo.Common common = statisticalService.toCourtStatistics(params.getParam(), params.getUserId());
// log.info("分项-溶栓患者/机械再通/脑出血:{}", );
return JsonResponse.newInstance().ok();
}
}

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

@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
@ -39,9 +40,44 @@ public class StatisticalDto {
@NotNull
@ApiModelProperty("开始时间")
private Long endTime;
@NotNull
@ApiModelProperty("统计类型 0:每小时 1:每天 2:每月")
private byte countType;
}
@Data
@ApiModel("来院方式统计")
public static class CourtStatistics {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目ID")
private Long projectId;
@NotBlank
@ApiModelProperty("题目code")
private String questionCode;
@NotBlank
@ApiModelProperty("统计code 手术开始时间code/到院时间code")
private String accordCode;
}
@Data
@ApiModel("分项查找-溶栓患者/机械再通/脑出血")
public static class CountSpecifyAnswer {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目ID")
private Long projectId;
@NotNull
@ApiModelProperty("开始时间")
private Long startTime;
@NotNull
@ApiModelProperty("开始时间")
private Long endTime;
@NotBlank
@ApiModelProperty("统计类型 0:每小时 1:每天 2:每月")
private byte countType;
@ApiModelProperty("题目code")
private String questionCode;
@ApiModelProperty("指定答案")
private String answer;
@ApiModelProperty("统计code 手术开始时间code/到院时间code")
private String accordCode;
}
}

2
src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java

@ -16,6 +16,8 @@ public class OrganizationVo {
public static class Basic{
@ApiModelProperty("医院ID")
private Long organizationId;
@ApiModelProperty("角色")
private byte role;
}
@Data

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

@ -1,5 +1,6 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import com.ccsens.carbasics.persist.mapper.FirstAidRecordMapper;
import org.apache.ibatis.annotations.Param;
@ -80,4 +81,11 @@ public interface FirstAidRecordDao extends FirstAidRecordMapper {
* @return 分项-溶栓率
*/
List<StatisticalVo.Item> countThrombosisRateDate(@Param("countType") byte countType, @Param("hospitalIds") List<Long> hospitalIds, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
/**
* 统计来院方式/手术方式
* @param hospitalIds 医院id
* @param param 统计参数
* @return 返回每个方式的数量
*/
List<StatisticalVo.Item> toCourtStatistics(@Param("hospitalIds")List<Long> hospitalIds, @Param("param")StatisticalDto.CourtStatistics param);
}

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

@ -48,4 +48,11 @@ public interface IStatisticalService {
* @return 溶栓率列表
*/
StatisticalVo.Common thrombosisRate(StatisticalDto.ThrombosisRate param, Long userId);
/**
* 手术方式/来院统计
* @param param 统计的时间和code
* @param userId userId
* @return 返回统计的信息
*/
StatisticalVo.Common toCourtStatistics(StatisticalDto.CourtStatistics param, Long userId);
}

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

@ -2,6 +2,7 @@ package com.ccsens.carbasics.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.po.Organization;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
@ -181,4 +182,37 @@ public class StatisticalService implements IStatisticalService {
}
return hospitalIds;
}
@Override
public StatisticalVo.Common toCourtStatistics(StatisticalDto.CourtStatistics param, Long userId) {
//根据项目id查找机构信息
List<Long> hospitalIds = getHospitalIds(param.getProjectId());
if (CollectionUtil.isEmpty(hospitalIds)) {
throw new BaseException(DefaultCodeError.NOT_ORGANIZATION);
}
//查找统计数据
List<StatisticalVo.Item> items = firstAidRecordDao.toCourtStatistics(hospitalIds,param);
//统计总数
long total = 0L;
if(CollectionUtil.isNotEmpty(items)){
for (StatisticalVo.Item item : items){
total += Long.parseLong(item.getValue());
}
}
//封装返回
StatisticalVo.Common common = new StatisticalVo.Common();
common.setTotal(total);
common.setList(items);
return common;
}
private long getTotal(List<StatisticalVo.Item> items, int countType) {
long total = 0L;
if(CollectionUtil.isNotEmpty(items)){
for (StatisticalVo.Item item : items){
total += Long.parseLong(item.getValue());
}
}
return total;
}
}

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

@ -106,4 +106,32 @@
group by FROM_UNIXTIME(r2.answer/1000,'%Y-%m-%d'))t2
where t1.date = t2.date
</select>
<select id="toCourtStatistics" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
SELECT
r1.answer AS NAME,
count( r1.id ) AS VALUE
FROM
t_qcp_first_aid a,
t_qcp_first_aid_record r1,
t_qcp_first_aid_record r2
WHERE
a.id = r1.first_aid_id
and a.id = r2.first_aid_id
AND r2.question_code = #{param.accordCode}
AND r1.question_code = #{param.questionCode}
AND a.hospital_id IN
<foreach collection="hospitalIds" open="(" close=")" separator="," item="hospitalId">
#{hospitalId}
</foreach>
AND a.rec_status = 0
AND r1.rec_status = 0
<if test="param.startTime!=null and param.startTime!=0">
AND r2.answer + 0 &gt;= #{param.startTime}
</if>
<if test="param.endTime!=null and param.endTime!=0">
AND r2.answer + 0 &lt; #{param.endTime}
</if>
GROUP BY
r1.answer
</select>
</mapper>

Loading…
Cancel
Save