Browse Source

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

master
zhizhi wu 4 years ago
parent
commit
8aabbd4ee9
  1. 11
      src/main/java/com/ccsens/carbasics/api/OrganizationController.java
  2. 12
      src/main/java/com/ccsens/carbasics/bean/dto/OrganizationDto.java
  3. 24
      src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java
  4. 9
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java
  5. 8
      src/main/java/com/ccsens/carbasics/service/IOrganizationService.java
  6. 22
      src/main/java/com/ccsens/carbasics/service/OrganizationService.java
  7. 7
      src/main/java/com/ccsens/carbasics/util/Constant.java
  8. 4
      src/main/resources/application.yml
  9. 83
      src/main/resources/mapper_dao/OrganizationDao.xml

11
src/main/java/com/ccsens/carbasics/api/OrganizationController.java

@ -68,6 +68,7 @@ public class OrganizationController {
return JsonResponse.newInstance().ok(rank);
}
@MustLogin
@ApiOperation(value = "机构导入", notes = "")
@RequestMapping(value = "/import", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
@ -97,4 +98,14 @@ public class OrganizationController {
return ok;
}
@MustLogin
@ApiOperation(value = "医院排名---新", notes = "")
@RequestMapping(value = "/rankNew", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<OrganizationVo.Rank> hospitalStatistical(@ApiParam @Validated @RequestBody QueryDto<OrganizationDto.RankNew> params) {
log.info("查询医院排名:{}", params);
OrganizationVo.HospitalRank rank = organizationService.hospitalStatistical(params.getParam(), params.getUserId());
log.info("医院排名查询结果:{}", rank);
return JsonResponse.newInstance().ok(rank);
}
}

12
src/main/java/com/ccsens/carbasics/bean/dto/OrganizationDto.java

@ -28,6 +28,18 @@ public class OrganizationDto {
private Long projectId;
}
@ApiModel("医院排名-请求--新")
@Data
public static class RankNew{
@ApiModelProperty("地区ID 有市,则为市的ID,否则,省的ID;空则查全部医院")
private String areaId;
@ApiModelProperty("等级 2:二级 3:三级")
private String level;
@NotNull
@ApiModelProperty("指标类型-必填 0:溶栓率,1:DNT≦45min达标率")
private byte type;
}
@ApiModel("项目对应的医院-请求")
@Data
public static class Project{

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

@ -105,4 +105,28 @@ public class OrganizationVo {
@ApiModelProperty
private Byte level;
}
@ApiModel("医院排名-返回")
@Data
public static class HospitalRank{
@ApiModelProperty("医院自身排名")
private HospitalRankItem self;
@ApiModelProperty("医院排名")
private List<HospitalRankItem> list;
}
@ApiModel("医院排名项")
@Data
public static class HospitalRankItem{
@ApiModelProperty("填写问卷的用户ID")
private Long userId;
@ApiModelProperty("医院名")
private String name;
@ApiModelProperty("指标")
private String value;
@ApiModelProperty("排名")
private int rank;
@ApiModelProperty
private String level;
}
}

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

@ -101,4 +101,13 @@ public interface OrganizationDao extends OrganizationMapper {
* @return 机构
*/
OrganizationVo.Info getByProject(@Param("projectId") Long projectId);
/**
* 根据类型查询医院排名
* @param areaId 地区id
* @param level 医院等级
* @param type 类型
* @return 返回医院列表
*/
List<OrganizationVo.HospitalRankItem> hospitalRankStatistical(@Param("areaId")String areaId,@Param("level")String level, @Param("type")byte type);
}

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

@ -30,4 +30,12 @@ public interface IOrganizationService {
* @return 机构
*/
OrganizationVo.Info getByProject(OrganizationDto.Project param, Long userId);
/**
* 查询医院排名--新接口
* @param param 查询条件
* @param userId userId
* @return 返回医院排名
*/
OrganizationVo.HospitalRank hospitalStatistical(OrganizationDto.RankNew param, Long userId);
}

22
src/main/java/com/ccsens/carbasics/service/OrganizationService.java

@ -155,4 +155,26 @@ public class OrganizationService implements IOrganizationService {
public OrganizationVo.Info getByProject(OrganizationDto.Project param, Long userId) {
return organizationDao.getByProject(param.getProjectId());
}
@Override
public OrganizationVo.HospitalRank hospitalStatistical(OrganizationDto.RankNew param, Long userId) {
//根据地区id和医院等级查询问卷和医院信息,根据不同的类型给查询到的医院排序
List<OrganizationVo.HospitalRankItem> items = organizationDao.hospitalRankStatistical(param.getAreaId(),param.getLevel(),param.getType());
//找到自己所属的医院
OrganizationVo.HospitalRankItem self = null;
if(CollectionUtil.isNotEmpty(items)){
for (int i = 0; i<items.size(); i++) {
OrganizationVo.HospitalRankItem item = items.get(i);
item.setRank(i+1);
if(item.getUserId().equals(userId)){
self = item;
}
}
}
//封装返回值
OrganizationVo.HospitalRank rank = new OrganizationVo.HospitalRank();
rank.setSelf(self);
rank.setList(items);
return rank;
}
}

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

@ -141,6 +141,13 @@ public class Constant {
public static final byte ICH = 4;
}
public static final class HospitalRankNew{
/**溶栓率(从大到小)*/
public static final byte THROMBOSIS_RATE = 0;
/**DNT≦45min达标率*/
public static final byte DNT_CONTROL_RATES = 1;
}
public static final class Param {
//0-每小时 1-每天 2-每月
public final static byte COUNT_TYPE_HOUR = 0;

4
src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: test
include: common, util-test
active: dev
include: common, util-dev

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

@ -376,5 +376,88 @@
AND p.rec_status = 0
AND o.rec_status = 0
</select>
<select id="hospitalRankStatistical" resultType="com.ccsens.carbasics.bean.vo.OrganizationVo$HospitalRankItem">
SELECT
d.user_id as userId,
h.hospitalName as name,
h.hospitalLevel as level,
if(t.count is null,0, t.count) as `value`
FROM
(
SELECT
t1.detail_id,
t1.hospitalName,
t3.hospitalLevel
FROM
(SELECT questionnaire_detail_id as detail_id,answer as hospitalName FROM `t_qcp_questionnaire_record`
WHERE question_code = 'HOS-NAME' and rec_status = 0) t1,
(SELECT questionnaire_detail_id as detail_id FROM `t_qcp_questionnaire_record`
WHERE question_code = 'CITY-COUNTY'
<if test="areaId != null">
AND answer LIKE concat('%',#{areaId},'%')
</if>
and rec_status = 0)t2,
(SELECT questionnaire_detail_id as detail_id,answer as hospitalLevel FROM `t_qcp_questionnaire_record`
WHERE question_code = 'HOS-LEVEL'
<if test="level != null">
and answer = #{level}
</if>
and rec_status = 0)t3
WHERE
t1.detail_id = t2.detail_id
and t1.detail_id = t2.detail_id
and t2.detail_id = t3.detail_id
)h
LEFT JOIN
(
<choose>
<when test="type == 0">
SELECT
a1.detail_id as detail_id,
convert((a1.answer / a2.answer)*100,decimal(15,0)) as count
FROM
(SELECT
questionnaire_detail_id as detail_id,
answer
FROM `t_qcp_questionnaire_record`
WHERE question_code = 'actual-Nnt' and rec_status = 0)a1,
(SELECT
questionnaire_detail_id as detail_id,
answer
FROM `t_qcp_questionnaire_record`
WHERE question_code = 'AIS-Nnt' and rec_status = 0)a2
WHERE
a1.detail_id = a2.detail_id
</when>
<when test="type == 1">
SELECT
a1.detail_id as detail_id,
convert((a1.answer / (a1.answer + a2.answer + a3.answer))*100,decimal(15,0)) as count
FROM
(SELECT
questionnaire_detail_id as detail_id,
answer
FROM `t_qcp_questionnaire_record`
WHERE question_code = '45-Nnt' and rec_status = 0)a1,
(SELECT
questionnaire_detail_id as detail_id,
answer
FROM `t_qcp_questionnaire_record`
WHERE question_code = '60-Nnt' and rec_status = 0)a2,
(SELECT
questionnaire_detail_id as detail_id,
answer
FROM `t_qcp_questionnaire_record`
WHERE question_code = '61-Nnt' and rec_status = 0)a3
WHERE
a1.detail_id = a2.detail_id
and a2.detail_id = a3.detail_id
and a1.detail_id = a3.detail_id
</when>
</choose>
)t on h.detail_id = t.detail_id
LEFT JOIN t_qcp_questionnaire_detail d on h.detail_id = d.id and rec_status = 0
ORDER BY `value` DESC
</select>
</mapper>

Loading…
Cancel
Save