Browse Source

20210902分项

master
zy_Java 4 years ago
parent
commit
2ce6e6996e
  1. 21
      src/main/java/com/ccsens/carbasics/api/StatisticalController.java
  2. 42
      src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java
  3. 9
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java
  4. 8
      src/main/java/com/ccsens/carbasics/service/IStatisticalService.java
  5. 34
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  6. 28
      src/main/resources/mapper_dao/FirstAidRecordDao.xml

21
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);
@ -53,4 +53,23 @@ public class StatisticalController {
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();
}
}

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

@ -29,5 +29,47 @@ public class StatisticalDto {
private Long endTime;
}
@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;
@NotNull
@ApiModelProperty("开始时间")
private Long startTime;
@NotNull
@ApiModelProperty("开始时间")
private Long endTime;
}
@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;
}
}

9
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;
@ -41,4 +42,12 @@ public interface FirstAidRecordDao extends FirstAidRecordMapper {
* @return DNT
*/
StatisticalVo.Dnt countDnt(@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);
}

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

@ -24,4 +24,12 @@ public interface IStatisticalService {
* @return 统计
*/
StatisticalVo.Common dnt(StatisticalDto.Time 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;
@ -107,4 +108,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

@ -33,4 +33,32 @@
and r1.answer + 0 &lt;= #{startTime} and r1.answer + 0 &gt;= #{endTime}
and a.hospital_id in (0,1) and a.rec_status = 0 and r1.rec_status = 0 and r2.rec_status = 0
</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