Browse Source

DPT统计接口 PRT统计接口

master
ma 4 years ago
parent
commit
55519397ce
  1. 60
      src/main/java/com/ccsens/carbasics/api/DataStatisticsController.java
  2. 97
      src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java
  3. 51
      src/main/java/com/ccsens/carbasics/persist/dao/DataStatisticsDao.java
  4. 48
      src/main/java/com/ccsens/carbasics/service/DataStatisticsService.java
  5. 44
      src/main/java/com/ccsens/carbasics/service/IDataStatisticsService.java
  6. 369
      src/main/resources/mapper_dao/DataStatisticsDao.xml

60
src/main/java/com/ccsens/carbasics/api/DataStatisticsController.java

@ -153,4 +153,64 @@ public class DataStatisticsController {
log.info("血管内治疗率的具体统计结束:{}",result); log.info("血管内治疗率的具体统计结束:{}",result);
return JsonResponse.newInstance().ok(result); return JsonResponse.newInstance().ok(result);
} }
@MustLogin
@ApiOperation(value = "DPT总统计", notes = "")
@RequestMapping(value = "/dptTotal", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticsVo.DptTotal> dptTotal(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{
log.info("DPT总统计开始{}",params);
StatisticsVo.DptTotal result = dataStatisticsService.dptTotal(params.getUserId());
log.info("DPT总统计结束:{}",result);
return JsonResponse.newInstance().ok(result);
}
@MustLogin
@ApiOperation(value = "DPT概要统计", notes = "")
@RequestMapping(value = "/dptSynopsis", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticsVo.DptSynopsis> dptSynopsis(@ApiParam @Validated @RequestBody QueryDto<StatisticsDto.QueryStandards> params) throws Exception{
log.info("DPT概要统计开始{}",params);
StatisticsVo.DptSynopsis result = dataStatisticsService.dptSynopsis(params.getParam(),params.getUserId());
log.info("DPT概要统计结束:{}",result);
return JsonResponse.newInstance().ok(result);
}
@MustLogin
@ApiOperation(value = "DPT具体统计", notes = "")
@RequestMapping(value = "/dptData", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<StatisticsVo.DptData>> dptData(@ApiParam @Validated @RequestBody QueryDto<StatisticsDto.QueryStandards> params) throws Exception{
log.info("DPT具体统计开始{}",params);
List<StatisticsVo.DptData> result = dataStatisticsService.dptData(params.getParam(),params.getUserId());
log.info("DPT具体统计结束:{}",result);
return JsonResponse.newInstance().ok(result);
}
@MustLogin
@ApiOperation(value = "PRT总统计", notes = "")
@RequestMapping(value = "/prtTotal", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticsVo.PrtTotal> prtTotal(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{
log.info("PRT总统计开始{}",params);
StatisticsVo.PrtTotal result = dataStatisticsService.prtTotal(params.getUserId());
log.info("PRT总统计结束:{}",result);
return JsonResponse.newInstance().ok(result);
}
@MustLogin
@ApiOperation(value = "PRT概要统计", notes = "")
@RequestMapping(value = "/prtSynopsis", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticsVo.PrtSynopsis> prtSynopsis(@ApiParam @Validated @RequestBody QueryDto<StatisticsDto.QueryStandards> params) throws Exception{
log.info("PRT概要统计开始{}",params);
StatisticsVo.PrtSynopsis result = dataStatisticsService.prtSynopsis(params.getParam(),params.getUserId());
log.info("PRT概要统计结束:{}",result);
return JsonResponse.newInstance().ok(result);
}
@MustLogin
@ApiOperation(value = "PRT具体统计", notes = "")
@RequestMapping(value = "/prtData", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<StatisticsVo.PrtData>> prtData(@ApiParam @Validated @RequestBody QueryDto<StatisticsDto.QueryStandards> params) throws Exception{
log.info("PRT概要统计开始{}",params);
List<StatisticsVo.PrtData> result = dataStatisticsService.prtData(params.getParam(),params.getUserId());
log.info("PRT概要统计结束:{}",result);
return JsonResponse.newInstance().ok(result);
}
} }

97
src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java

@ -216,4 +216,101 @@ public class StatisticsVo {
private BigDecimal zxgnzll; private BigDecimal zxgnzll;
} }
@Data
@ApiModel("DPT总统记-返参")
public static class DptTotal {
@ApiModelProperty("非桥接血管内治疗DPT≤90min总数")
private String dpt89;
@ApiModelProperty("非桥接血管内治疗DPT≤60min总数")
private String dpt59;
@ApiModelProperty("非桥接血管内治疗DPT≤90min比例")
private String dpt89Ratio;
@ApiModelProperty("非桥接血管内治疗DPT≤60min比例")
private String dpt59Ratio;
}
@Data
@ApiModel("DPT概要统计-返参")
public static class DptSynopsis {
@ApiModelProperty("市名")
private String cityName;
@ApiModelProperty("等级")
private String level;
@ApiModelProperty("DPT≤90min比例")
private String dpt89Ratio;
@ApiModelProperty("DPT≤60min比例")
private String dpt59Ratio;
}
@Data
@ApiModel("DPT具体统计-返参")
public static class DptData {
@ApiModelProperty("市Id")
private Long areaId;
@ApiModelProperty("市/医院名称")
private String name;
@ApiModelProperty("二/三级医院DPT≤90min比例")
private String dpt89Ratio;
@ApiModelProperty("二/三级医院DPT≤60min比例")
private String dpt59Ratio;
@ApiModelProperty("DPT≤90min比例(市)")
private String dpt89RatioCity;
@ApiModelProperty("DPT≤60min比例(市)")
private String dpt59RatioCity;
@ApiModelProperty("医院DPT≦60min例数")
private String dpt59Number;
@ApiModelProperty("医院60min<DPT≦90min例数")
private String dpt89Number;
@ApiModelProperty("医院DPT>90min例数")
private String dpt91Number;
}
@Data
@ApiModel("PRT总统记-返参")
public static class PrtTotal {
@ApiModelProperty("非桥接血管内治疗PRT≤30min总数")
private Integer prt29;
@ApiModelProperty("非桥接血管内治疗PRT≤60min总数")
private Integer prt59;
@ApiModelProperty("非桥接血管内治疗PRT≤60min比例")
private BigDecimal prt59Ratio;
@ApiModelProperty("非桥接血管内治疗PRT≤30min比例")
private BigDecimal prt29Ratio;
}
@Data
@ApiModel("PRT概要统计-返参")
public static class PrtSynopsis {
@ApiModelProperty("市名")
private String cityName;
@ApiModelProperty("等级")
private String level;
@ApiModelProperty("PRT≤60min比例")
private BigDecimal prt59Ratio;
@ApiModelProperty("PRT≤30min比例")
private BigDecimal prt29Ratio;
}
@Data
@ApiModel("PRT具体统计-返参")
public static class PrtData {
@ApiModelProperty("市Id")
private Long areaId;
@ApiModelProperty("市/医院名称")
private String name;
@ApiModelProperty("二/三级医院PRT≤60min比例")
private String prt59Ratio;
@ApiModelProperty("二/三级医院PRT≤30min比例")
private String prt29Ratio;
@ApiModelProperty("PRT≤60min比例(市)")
private String prt59RatioCity;
@ApiModelProperty("PRT≤30min比例(市)")
private String prt29RatioCity;
@ApiModelProperty("PRT≦30min例数")
private String prt29Number;
@ApiModelProperty("30min<PRT≦60min例数")
private String prt59Number;
@ApiModelProperty("PRT>60min例数")
private String prt61Number;
}
} }

51
src/main/java/com/ccsens/carbasics/persist/dao/DataStatisticsDao.java

@ -113,5 +113,56 @@ public interface DataStatisticsDao {
*/ */
List<StatisticsVo.XgzlData> xgzlDataForHospital(@Param("param") StatisticsDto.QueryStandards param); List<StatisticsVo.XgzlData> xgzlDataForHospital(@Param("param") StatisticsDto.QueryStandards param);
/**
* 查询DPT总统记
* @return DPT总统记
*/
StatisticsVo.DptTotal dptTotal();
/**
* DPT概要统计
* @param param 参数
* @return DPT概要统计
*/
StatisticsVo.DptSynopsis dptSynopsis(@Param("param") StatisticsDto.QueryStandards param);
/**
* DPT具体统计
* @param param 参数
* @return DPT具体统计()
*/
List<StatisticsVo.DptData> queryDptForCity(@Param("param") StatisticsDto.QueryStandards param);
/**
* DPT具体统计
* @param param 参数
* @return DPT具体统计(具体医院)
*/
List<StatisticsVo.DptData> queryDptForHospital(@Param("param") StatisticsDto.QueryStandards param);
/**
* 查询PRT总统记
* @return PRT总统记
*/
StatisticsVo.PrtTotal prtTotal();
/**
* PRT概要统计
* @param param 参数
* @return PRT概要统计
*/
StatisticsVo.PrtSynopsis prtSynopsis(@Param("param") StatisticsDto.QueryStandards param);
/**
* prt具体统计
* @param param 参数
* @return PRT具体统计()
*/
List<StatisticsVo.PrtData> queryPrtForCity(@Param("param") StatisticsDto.QueryStandards param);
/**
* prt具体统计
* @param param 参数
* @return PRT具体统计(具体医院)
*/
List<StatisticsVo.PrtData> queryPrtForHospital(@Param("param") StatisticsDto.QueryStandards param);
} }

48
src/main/java/com/ccsens/carbasics/service/DataStatisticsService.java

@ -256,4 +256,52 @@ public class DataStatisticsService implements IDataStatisticsService {
} }
return xgzlDataList; return xgzlDataList;
} }
@Override
public StatisticsVo.DptTotal dptTotal(Long userId) {
return dataStatisticsDao.dptTotal();
}
@Override
public StatisticsVo.DptSynopsis dptSynopsis(StatisticsDto.QueryStandards param, Long userId) {
return dataStatisticsDao.dptSynopsis(param);
}
@Override
public List<StatisticsVo.DptData> dptData(StatisticsDto.QueryStandards param, Long userId) {
if (0 == param.getQueryType()) {
//查询各市DPT比例
return dataStatisticsDao.queryDptForCity(param);
}
if (1 == param.getQueryType()) {
return dataStatisticsDao.queryDptForHospital(param);
}
return null;
}
@Override
public StatisticsVo.PrtTotal prtTotal(Long userId) {
return dataStatisticsDao.prtTotal();
}
@Override
public StatisticsVo.PrtSynopsis prtSynopsis(StatisticsDto.QueryStandards param, Long userId) {
return dataStatisticsDao.prtSynopsis(param);
}
@Override
public List<StatisticsVo.PrtData> prtData(StatisticsDto.QueryStandards param, Long userId) {
if (0 == param.getQueryType()) {
//查询各市DPT比例
return dataStatisticsDao.queryPrtForCity(param);
}
if (1 == param.getQueryType()) {
return dataStatisticsDao.queryPrtForHospital(param);
}
return null;
}
} }

44
src/main/java/com/ccsens/carbasics/service/IDataStatisticsService.java

@ -102,5 +102,49 @@ public interface IDataStatisticsService {
*/ */
List<StatisticsVo.XgzlData> xgzlData(StatisticsDto.QueryStandards param, Long userId); List<StatisticsVo.XgzlData> xgzlData(StatisticsDto.QueryStandards param, Long userId);
/**
* DPT 总统记
* @param userId 用户id
* @return DPT 总统记
*/
StatisticsVo.DptTotal dptTotal(Long userId);
/**
* dpt 概要统计
* @param param 参数
* @param userId 用户id
* @return dpt 概要统计
*/
StatisticsVo.DptSynopsis dptSynopsis(StatisticsDto.QueryStandards param, Long userId);
/**
* dpt 具体统计
* @param param 参数
* @param userId 用户id
* @return dpt 具体统计
*/
List<StatisticsVo.DptData> dptData(StatisticsDto.QueryStandards param, Long userId);
/**
* prt 总统记
* @param userId 用户id
* @return prt 总统记
*/
StatisticsVo.PrtTotal prtTotal(Long userId);
/**
* prt概要统计
* @param param 参数
* @param userId 用户id
* @return prt概要统计
*/
StatisticsVo.PrtSynopsis prtSynopsis(StatisticsDto.QueryStandards param, Long userId);
/**
* prt 具体统计
* @param param 参数
* @param userId 用户id
* @return prt 具体统计
*/
List<StatisticsVo.PrtData> prtData(StatisticsDto.QueryStandards param, Long userId);
} }

369
src/main/resources/mapper_dao/DataStatisticsDao.xml

@ -1324,4 +1324,373 @@
</if> </if>
</select> </select>
<select id="dptTotal" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$DptTotal">
SELECT
SUM(dpt59.answer)+SUM(dpt89.answer) AS dpt89,
SUM(dpt59.answer) AS dpt59,
round((SUM(dpt59.answer)+SUM(dpt89.answer))*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2) AS dpt89Ratio,
round(SUM(dpt59.answer)*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2) AS dpt59Ratio
FROM
t_qcp_questionnaire_record AS dpt59
LEFT JOIN t_qcp_questionnaire_detail AS d ON dpt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt89 ON dpt89.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt91 ON dpt91.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
WHERE
dpt59.rec_status = 0
AND dpt59.question_code = 'XGZL-DPT-60'
AND d.rec_status = 0
AND d.submit_status = 1
AND dpt89.rec_status = 0
AND dpt89.question_code = 'XGZL-DPT-89'
AND dpt91.rec_status = 0
AND dpt91.question_code = 'XGZL-DPT-91'
AND xgzl.rec_status = 0 AND xgzl.question_code = 'XGZL' AND xgzl.answer = '是'
</select>
<select id="dptSynopsis" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$DptSynopsis">
SELECT
<if test="param.queryType == 1">
a.area_name AS cityName,
</if>
LEFT(level.answer,1) AS level,
round((SUM(dpt59.answer)+SUM(dpt89.answer))*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2) AS dpt89Ratio,
round(SUM(dpt59.answer)*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2) AS dpt59Ratio
FROM
t_qcp_questionnaire_record AS dpt59
LEFT JOIN t_qcp_questionnaire_detail AS d ON dpt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt89 ON dpt89.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt91 ON dpt91.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS `level` ON `level`.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE dpt59.rec_status = 0 AND dpt59.question_code = 'XGZL-DPT-60'
AND d.rec_status = 0 AND d.submit_status = 1
AND dpt89.rec_status = 0
AND dpt89.question_code = 'XGZL-DPT-89'
AND dpt91.rec_status = 0
AND dpt91.question_code = 'XGZL-DPT-91'
AND `level`.rec_status = 0 AND `level`.question_code = 'HOS-LEVEL'
<if test="param.queryLevel == 0">
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
AND `level`.answer = '二级'
</if>
AND xgzl.rec_status = 0 AND xgzl.question_code = 'XGZL' AND xgzl.answer = '是'
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
<if test="param.queryType == 1">
AND SUBSTRING_INDEX(area.answer,',',1) = #{param.areaId}
</if>
</select>
<select id="queryDptForCity" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$DptData">
SELECT
a1.id AS areaId,
a1.area_name AS `name`,
a1.dpt59RatioCity,
a1.dpt89RatioCity,
IFNULL(a2.dpt89Ratio,0.00) AS dpt89Ratio,
IFNULL(a2.dpt59Ratio,0.00) AS dpt59Ratio
FROM
(SELECT
a.id,
a.area_name,
IFNULL(round((SUM(dpt59.answer)+SUM(dpt89.answer))*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2),0.00) AS dpt89RatioCity,
IFNULL(round(SUM(dpt59.answer)*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2),0.00) AS dpt59RatioCity
FROM
t_qcp_questionnaire_record AS dpt59
LEFT JOIN t_qcp_questionnaire_detail AS d ON dpt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt89 ON dpt89.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt91 ON dpt91.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE
dpt59.rec_status = 0
AND dpt59.question_code = 'XGZL-DPT-60'
AND d.rec_status = 0
AND d.submit_status = 1
AND dpt89.rec_status = 0
AND dpt89.question_code = 'XGZL-DPT-89'
AND dpt91.rec_status = 0
AND dpt91.question_code = 'XGZL-DPT-91'
AND xgzl.rec_status = 0
AND xgzl.question_code = 'XGZL'
AND xgzl.answer = '是'
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a1
LEFT JOIN
(
SELECT
a.id,
a.area_name,
LEFT(level.answer,1) AS level,
IFNULL(round((SUM(dpt59.answer)+SUM(dpt89.answer))*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2),0.00) AS dpt89Ratio,
IFNULL(round(SUM(dpt59.answer)*100/(SUM(dpt59.answer)+SUM(dpt89.answer)+SUM(dpt91.answer)),2),0.00) AS dpt59Ratio
FROM
t_qcp_questionnaire_record AS dpt59
LEFT JOIN t_qcp_questionnaire_detail AS d ON dpt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt89 ON dpt89.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt91 ON dpt91.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS `level` ON `level`.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE
dpt59.rec_status = 0
AND dpt59.question_code = 'XGZL-DPT-60'
AND d.rec_status = 0
AND d.submit_status = 1
AND dpt89.rec_status = 0
AND dpt89.question_code = 'XGZL-DPT-89'
AND dpt91.rec_status = 0
AND dpt91.question_code = 'XGZL-DPT-91'
AND xgzl.rec_status = 0
AND xgzl.question_code = 'XGZL'
AND xgzl.answer = '是'
AND `level`.rec_status = 0 AND `level`.question_code = 'HOS-LEVEL'
<if test="param.queryLevel == 0">
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
AND `level`.answer = '二级'
</if>
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a2 ON a1.id = a2.id
ORDER BY a2.dpt89Ratio DESC
</select>
<select id="queryDptForHospital" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$DptData">
SELECT
hospital.answer AS `name`,
LEFT(level.answer,1) AS level,
IFNULL(round((dpt59.answer+dpt89.answer)*100/(dpt59.answer+dpt89.answer+dpt91.answer),2),0.00) AS dpt89Ratio,
IFNULL(round(dpt59.answer*100/(dpt59.answer+dpt89.answer+dpt91.answer),2),0.00) AS dpt59Ratio,
dpt59.answer AS dpt59Number,
dpt89.answer AS dpt89Number,
dpt91.answer AS dpt91Number
FROM
t_qcp_questionnaire_record AS dpt59
LEFT JOIN t_qcp_questionnaire_detail AS d ON dpt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt89 ON dpt89.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS dpt91 ON dpt91.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS `level` ON `level`.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS hospital ON hospital.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE
dpt59.rec_status = 0
AND dpt59.question_code = 'XGZL-DPT-60'
AND d.rec_status = 0
AND d.submit_status = 1
AND dpt89.rec_status = 0
AND dpt89.question_code = 'XGZL-DPT-89'
AND dpt91.rec_status = 0
AND dpt91.question_code = 'XGZL-DPT-91'
AND xgzl.rec_status = 0
AND xgzl.question_code = 'XGZL'
AND xgzl.answer = '是'
AND hospital.rec_status = 0
AND hospital.question_code = 'HOS-NAME'
AND `level`.rec_status = 0 AND `level`.question_code = 'HOS-LEVEL'
<if test="param.queryLevel == 0">
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
AND `level`.answer = '二级'
</if>
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
AND SUBSTRING_INDEX(area.answer,',',1) = #{param.areaId}
ORDER BY (dpt59.answer+dpt89.answer+dpt91.answer) DESC
</select>
<select id="prtTotal" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$PrtTotal">
SELECT
SUM(prt29.answer)+SUM(prt59.answer) AS prt59,
SUM(prt29.answer) AS prt29,
CONVERT((SUM(prt29.answer)+SUM(prt59.answer))*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),DECIMAL(15,2)) AS prt59Ratio,
CONVERT(SUM(prt29.answer)*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),DECIMAL(15,2)) AS prt29Ratio
FROM
t_qcp_questionnaire_record AS prt29
LEFT JOIN t_qcp_questionnaire_detail AS d ON prt29.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt59 ON prt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt61 ON prt61.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
WHERE
prt29.rec_status = 0
AND prt29.question_code = 'XGZL-PRT-29'
AND d.rec_status = 0
AND d.submit_status = 1
AND prt59.rec_status = 0
AND prt59.question_code = 'XGZL-PRT-59'
AND prt61.rec_status = 0
AND prt61.question_code = 'XGZL-PRT-62'
AND xgzl.rec_status = 0 AND xgzl.question_code = 'XGZL' AND xgzl.answer = '是'
</select>
<select id="prtSynopsis" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$PrtSynopsis">
SELECT
<if test="param.queryType == 1">
a.area_name AS cityName,
</if>
LEFT(level.answer,1) AS level,
IFNULL(TRUNCATE((SUM(prt29.answer)+SUM(prt59.answer))*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),2),0.00) AS prt59Ratio,
IFNULL(TRUNCATE(SUM(prt29.answer)*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),2),0.00) AS prt29Ratio
FROM
t_qcp_questionnaire_record AS prt29
LEFT JOIN t_qcp_questionnaire_detail AS d ON prt29.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt59 ON prt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt61 ON prt61.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS `level` ON `level`.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE prt29.rec_status = 0 AND prt29.question_code = 'XGZL-PRT-29'
AND d.rec_status = 0 AND d.submit_status = 1
AND prt59.rec_status = 0
AND prt59.question_code = 'XGZL-PRT-59'
AND prt61.rec_status = 0
AND prt61.question_code = 'XGZL-PRT-62'
AND `level`.rec_status = 0 AND `level`.question_code = 'HOS-LEVEL'
<if test="param.queryLevel == 0">
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
AND `level`.answer = '二级'
</if>
AND xgzl.rec_status = 0 AND xgzl.question_code = 'XGZL' AND xgzl.answer = '是'
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
<if test="param.queryType == 1">
AND SUBSTRING_INDEX(area.answer,',',1) = #{param.areaId}
</if>
</select>
<select id="queryPrtForCity" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$PrtData">
SELECT
a1.id AS areaId,
a1.area_name AS `name`,
a1.prt29RatioCity,
a1.prt59RatioCity,
IFNULL(a2.prt59Ratio,0.00) AS prt59Ratio,
IFNULL(a2.prt29Ratio,0.00) AS prt29Ratio
FROM
(SELECT
a.id,
a.area_name,
IFNULL(round((SUM(prt29.answer)+SUM(prt59.answer))*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),2),0.00) AS prt59RatioCity,
IFNULL(round(SUM(prt29.answer)*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),2),0.00) AS prt29RatioCity
FROM
t_qcp_questionnaire_record AS prt29
LEFT JOIN t_qcp_questionnaire_detail AS d ON prt29.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt59 ON prt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt61 ON prt61.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE
prt29.rec_status = 0
AND prt29.question_code = 'XGZL-PRT-29'
AND d.rec_status = 0
AND d.submit_status = 1
AND prt59.rec_status = 0
AND prt59.question_code = 'XGZL-PRT-59'
AND prt61.rec_status = 0
AND prt61.question_code = 'XGZL-PRT-62'
AND xgzl.rec_status = 0
AND xgzl.question_code = 'XGZL'
AND xgzl.answer = '是'
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a1
LEFT JOIN
(
SELECT
a.id,
a.area_name,
LEFT(level.answer,1) AS level,
IFNULL(round((SUM(prt29.answer)+SUM(prt59.answer))*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),2),0.00) AS prt59Ratio,
IFNULL(round(SUM(prt29.answer)*100/(SUM(prt29.answer)+SUM(prt59.answer)+SUM(prt61.answer)),2),0.00) AS prt29Ratio
FROM
t_qcp_questionnaire_record AS prt29
LEFT JOIN t_qcp_questionnaire_detail AS d ON prt29.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt59 ON prt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt61 ON prt61.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS `level` ON `level`.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE
prt29.rec_status = 0
AND prt29.question_code = 'XGZL-PRT-29'
AND d.rec_status = 0
AND d.submit_status = 1
AND prt59.rec_status = 0
AND prt59.question_code = 'XGZL-PRT-59'
AND prt61.rec_status = 0
AND prt61.question_code = 'XGZL-PRT-62'
AND xgzl.rec_status = 0
AND xgzl.question_code = 'XGZL'
AND xgzl.answer = '是'
AND `level`.rec_status = 0 AND `level`.question_code = 'HOS-LEVEL'
<if test="param.queryLevel == 0">
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
AND `level`.answer = '二级'
</if>
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a2 ON a1.id = a2.id
ORDER BY a2.prt59Ratio DESC
</select>
<select id="queryPrtForHospital" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$PrtData">
SELECT
hospital.answer AS `name`,
LEFT(level.answer,1) AS level,
IFNULL(round((prt29.answer+prt59.answer)*100/(prt29.answer+prt59.answer+prt61.answer),2),0.00) AS prt59Ratio,
IFNULL(round(prt29.answer*100/(prt29.answer+prt59.answer+prt61.answer),2),0.00) AS prt29Ratio,
prt29.answer AS prt29Number,
prt59.answer AS prt59Number,
prt61.answer AS prt61Number
FROM
t_qcp_questionnaire_record AS prt29
LEFT JOIN t_qcp_questionnaire_detail AS d ON prt29.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt59 ON prt59.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS prt61 ON prt61.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS xgzl ON xgzl.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS `level` ON `level`.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS hospital ON hospital.questionnaire_detail_id = d.id
LEFT JOIN t_qcp_questionnaire_record AS area ON area.questionnaire_detail_id = d.id
LEFT JOIN t_area AS a ON a.id = SUBSTRING_INDEX(area.answer,',',1)
WHERE
prt29.rec_status = 0
AND prt29.question_code = 'XGZL-PRT-29'
AND d.rec_status = 0
AND d.submit_status = 1
AND prt59.rec_status = 0
AND prt59.question_code = 'XGZL-PRT-59'
AND prt61.rec_status = 0
AND prt61.question_code = 'XGZL-PRT-62'
AND xgzl.rec_status = 0
AND xgzl.question_code = 'XGZL'
AND xgzl.answer = '是'
AND hospital.rec_status = 0
AND hospital.question_code = 'HOS-NAME'
AND `level`.rec_status = 0 AND `level`.question_code = 'HOS-LEVEL'
<if test="param.queryLevel == 0">
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
AND `level`.answer = '二级'
</if>
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
AND SUBSTRING_INDEX(area.answer,',',1) = #{param.areaId}
ORDER BY (prt29.answer+prt59.answer+prt61.answer) DESC
</select>
</mapper> </mapper>
Loading…
Cancel
Save