Browse Source

解决冲突

master
zhizhi wu 4 years ago
parent
commit
ba8ee1f6bb
  1. 44
      src/main/java/com/ccsens/carbasics/api/StatisticalController.java
  2. 43
      src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java
  3. 18
      src/main/java/com/ccsens/carbasics/bean/vo/StatisticalVo.java
  4. 58
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java
  5. 6
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java
  6. 41
      src/main/java/com/ccsens/carbasics/service/IStatisticalService.java
  7. 88
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  8. 23
      src/main/java/com/ccsens/carbasics/util/Constant.java
  9. 319
      src/main/resources/mapper_dao/FirstAidRecordDao.xml
  10. 17
      src/main/resources/mapper_dao/OrganizationDao.xml

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

@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @description: 统计查询
@ -85,11 +86,11 @@ public class StatisticalController {
@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) {
public JsonResponse<StatisticalVo.Common> countSpecifyAnswer(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.CountSpecifyAnswer> params) {
log.info("分项-溶栓患者/机械再通/脑出血:{}", params);
// StatisticalVo.Common common = statisticalService.toCourtStatistics(params.getParam(), params.getUserId());
// log.info("分项-溶栓患者/机械再通/脑出血:{}", );
return JsonResponse.newInstance().ok();
StatisticalVo.Common common = statisticalService.subentrySpecifyAnswer(params.getParam(), params.getUserId());
log.info("分项-溶栓患者/机械再通/脑出血:{}",common);
return JsonResponse.newInstance().ok(common);
}
@MustLogin
@ApiOperation(value = "分项-时间窗患者", notes = "分项-时间窗患者")
@ -120,6 +121,23 @@ public class StatisticalController {
log.info("分项-中位数结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@ApiOperation(value = "各地-时间窗", notes = "zy")
@RequestMapping(value = "/placeTimeWindows", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> placeTimeWindows(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.GdThrombosisRate> params) {
log.info("各地-时间窗:{}", params);
StatisticalVo.Common common = statisticalService.placeTimeWindows(params.getParam(), params.getUserId());
log.info("各地-时间窗结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@ApiOperation(value = "各地-溶栓率", notes = "各地-溶栓率")
@RequestMapping(value = "/gdThrombosisRate", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> gdThrombosisRate(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.GdThrombosisRate> params) {
log.info("各地-溶栓率:{}", params);
StatisticalVo.Common common = statisticalService.gdThrombosisRate(params.getParam(), params.getUserId());
log.info("各地-溶栓率结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@MustLogin
@ApiOperation(value = "各地-中位数", notes = "各地-中位数")
@ -130,4 +148,22 @@ public class StatisticalController {
log.info("各地-中位数结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@ApiOperation(value = "各地-溶栓患者/机械再通/脑出血", notes = "各地-溶栓患者/机械再通/脑出血")
@RequestMapping(value = "/gdCountSpecifyAnswer", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> gdCountSpecifyAnswer(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.GdCountSpecifyAnswer> params) {
log.info("各地-溶栓患者/机械再通/脑出血:{}", params);
StatisticalVo.Common common = statisticalService.gdCountSpecifyAnswer(params.getParam(), params.getUserId());
log.info("各地-溶栓患者/机械再通/脑出血结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
@MustLogin
@ApiOperation(value = "山西省地市查询", notes = "")
@RequestMapping(value = "/provinceCity", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<StatisticalVo.ProvinceCity>> provinceCityStatistical(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.ProvinceCode> params) {
log.info("各地-溶栓患者/机械再通/脑出血:{}", params);
List<StatisticalVo.ProvinceCity> provinceCity = statisticalService.provinceCityStatistical(params.getParam(), params.getUserId());
log.info("各地-溶栓患者/机械再通/脑出血结果:{}", provinceCity);
return JsonResponse.newInstance().ok(provinceCity);
}
}

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

@ -126,6 +126,42 @@ public class StatisticalDto {
@NotNull(message = "请选择对应的省份信息")
@ApiModelProperty("省质控code")
private String code;
@ApiModelProperty("开始时间")
private Long startTime;
@NotNull
@ApiModelProperty("开始时间")
private Long endTime;
@NotBlank
@ApiModelProperty("减数code,例:ONT中位数 开始静脉溶栓时间-发病时间√")
private String subtractionCode;
@NotBlank
@ApiModelProperty("被减数code,例:ONT中位数 开始静脉溶栓时间(√ 统计时间依据)-发病时间")
private String minuendCode;
}
@Data
@ApiModel("各地-溶栓患者/机械再通/脑出血")
public static class GdCountSpecifyAnswer {
@ApiModelProperty("项目编码(默认山西省质控的机构编码)")
private String code = "SZK";
@NotNull
@ApiModelProperty("开始时间")
private Long startTime;
@NotNull
@ApiModelProperty("开始时间")
private Long endTime;
@ApiModelProperty("题目code")
private String questionCode;
@ApiModelProperty("指定答案")
private String answer;
@ApiModelProperty("统计code 手术开始时间code/到院时间code")
private String accordCode;
}
@Data
@ApiModel("各地-溶栓率统计")
public static class GdThrombosisRate {
@ApiModelProperty("项目编码(默认山西省质控的机构编码)")
private String code = "SZK";
@NotNull
@ApiModelProperty("开始时间")
private Long startTime;
@ -139,4 +175,11 @@ public class StatisticalDto {
@ApiModelProperty("被减数code,例:ONT中位数 开始静脉溶栓时间(√ 统计时间依据)-发病时间")
private String minuendCode;
}
@Data
@ApiModel("省质控code")
public static class ProvinceCode {
@ApiModelProperty("省质控code")
private String code;
}
}

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

@ -1,6 +1,7 @@
package com.ccsens.carbasics.bean.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -100,4 +101,21 @@ public class StatisticalVo {
return one + two + three + four + five + six;
}
}
@ApiModel("山西省地市查询")
@Data
public static class ProvinceCity{
@ApiModelProperty("质控id")
private Long id;
@ApiModelProperty("质控code")
private String code;
@ApiModelProperty("质控名字")
private String shortName;
@ApiModelProperty("项目id")
private Long projectId;
@JsonIgnore
private Long parentId;
@ApiModelProperty("下级机构")
private List<ProvinceCity> children;
}
}

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

@ -102,13 +102,13 @@ public interface FirstAidRecordDao extends FirstAidRecordMapper {
/**
* 分项溶栓率
* @param minuendCode
* @param subtractionCode
* @param hospitalIds
* @param startTime
* @param endTime
* @param countType
* @return
* @param minuendCode 减数code ONT中位数 开始静脉溶栓时间-发病时间
* @param subtractionCode 被减数code ONT中位数 开始静脉溶栓时间 统计时间依据-发病时间
* @param hospitalIds 医院ID
* @param startTime 开始时间
* @param endTime 结束时间
* @param countType 统计类型
* @return 分项溶栓率
*/
List<StatisticalVo.Item> countTimeMedian(@Param("minuendCode") String minuendCode, @Param("subtractionCode") String subtractionCode, @Param("hospitalIds")List<Long> hospitalIds, @Param("startTime")Long startTime, @Param("endTime") Long endTime, @Param("type")Byte countType);
@ -118,4 +118,48 @@ public interface FirstAidRecordDao extends FirstAidRecordMapper {
* @return 地区中位数
*/
List<StatisticalVo.Item> countAreaMedian(@Param("param") StatisticalDto.AreaMedian param);
/**
* 各地-溶栓率
* @param hospitalIds 医院id
* @param startTime 开始时间
* @param endTime 结束时间
* @param questionCode 类型
* @param answer 指定答案
* @param timeGist 时间类型依据
* @return 各地溶栓率统计
*/
List<StatisticalVo.Item> gdThrombosisRate(@Param("hospitalIds") List<Long> hospitalIds,@Param("startTime") Long startTime,@Param("endTime") Long endTime,@Param("questionCode") String questionCode,@Param("answer") String answer,@Param("timeGist") String timeGist);
/**
* 分项-溶栓患者/机械再通/脑出血
* @param param 筛选条件
* @param hospitalIds 医院id
* @param type 统计时间类型
* @return 返回统计结果
*/
List<StatisticalVo.Item> subentrySpecifyAnswer(@Param("param")StatisticalDto.CountSpecifyAnswer param, @Param("hospitalIds")List<Long> hospitalIds,@Param("type") String type);
/**
* 各地-溶栓患者/机械再通/脑出血
* @param param 筛选条件
* @param hospitalIds 医院id
* @return 返回统计结果
*/
List<StatisticalVo.Item> gdCountSpecifyAnswer(@Param("hospitalIds") List<Long> hospitalIds,@Param("param") StatisticalDto.GdCountSpecifyAnswer param);
/**
* 各地时间窗的统计
* @param hospitalIds 医院id列表
* @param startTime 开始时间
* @param endTime 结束时间
* @return 返回统计数据
*/
List<StatisticalVo.Item> placeTimeWindows(@Param("hospitalIds")List<Long> hospitalIds, @Param("startTime")Long startTime, @Param("endTime")Long endTime);
/**
* 山西省地市查询
* @param code 省质控code 没有则查全部
* @return 返回质控信息
*/
List<StatisticalVo.ProvinceCity> provinceCityStatistical(@Param("code")String code);
}

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

@ -36,4 +36,10 @@ public interface OrganizationDao extends OrganizationMapper {
*/
List<Organization> getHospitalByParentId(@Param("parentId")Long parentId);
/**
* 通过项目编码查找医院信息
* @param code 项目编码
* @return 机构信息
*/
Organization getByCode(@Param("code") String code);
}

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

@ -4,6 +4,8 @@ package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import java.util.List;
/**
* @description:统计查询
* @author whj
@ -79,4 +81,43 @@ public interface IStatisticalService {
* @return 统计结果
*/
StatisticalVo.CommonList areaMedian(StatisticalDto.AreaMedian param, Long userId);
/**
* 各地-溶栓率统计
* @param param 请求参数
* @param userId 用户id
* @return 各地溶栓率统计
*/
StatisticalVo.Common gdThrombosisRate(StatisticalDto.GdThrombosisRate param, Long userId);
/**
*各地-溶栓患者/机械再通/脑出血
* @param param 请求参数
* @param userId 用户id
* @return 统计结果
*/
StatisticalVo.Common gdCountSpecifyAnswer(StatisticalDto.GdCountSpecifyAnswer param, Long userId);
/**
* 分项-溶栓患者/机械再通/脑出血
* @param param 筛选条件
* @param userId userId
* @return 返回统计结果
*/
StatisticalVo.Common subentrySpecifyAnswer(StatisticalDto.CountSpecifyAnswer param, Long userId);
/**
* 各地时间窗的统计
* @param param 项目编号开始结束时间
* @param userId userId
* @return 返回统计结果
*/
StatisticalVo.Common placeTimeWindows(StatisticalDto.GdThrombosisRate param, Long userId);
/**
* 山西省地市查询
* @param param 省质控code
* @param userId userId
* @return 返回省质控和下级市质控的数据
*/
List<StatisticalVo.ProvinceCity> provinceCityStatistical(StatisticalDto.ProvinceCode param, Long userId);
}

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

@ -228,6 +228,19 @@ public class StatisticalService implements IStatisticalService {
return common;
}
@Override
public StatisticalVo.Common gdThrombosisRate(StatisticalDto.GdThrombosisRate param, Long userId) {
List<Long> hospitalIds = getHospitalIds(param.getCode());
String questionCode = Constant.Statistical.Thrombosis.QUESTION_CODE;
String answer = Constant.Statistical.Thrombosis.ANSWER;
String timeGist = Constant.Statistical.Thrombosis.TIME_CODE;
List<StatisticalVo.Item> items = firstAidRecordDao.gdThrombosisRate(hospitalIds,param.getStartTime(),param.getEndTime(),questionCode,answer,timeGist);
StatisticalVo.Common common = new StatisticalVo.Common();
common.setTotal(getTotal(items));
common.setList(items);
return common;
}
@Override
public StatisticalVo.CommonList areaMedian(StatisticalDto.AreaMedian param, Long userId) {
List<StatisticalVo.Item> items = firstAidRecordDao.countAreaMedian(param);
@ -235,6 +248,41 @@ public class StatisticalService implements IStatisticalService {
common.setList(items);
return common;
}
@Override
public StatisticalVo.Common gdCountSpecifyAnswer(StatisticalDto.GdCountSpecifyAnswer param, Long userId) {
List<Long> hospitalIds = getHospitalIds(param.getCode());
List<StatisticalVo.Item> items = firstAidRecordDao.gdCountSpecifyAnswer(hospitalIds,param);
StatisticalVo.Common common = new StatisticalVo.Common();
common.setTotal(getTotal(items));
common.setList(items);
return common;
}
/**
* 查找项目对应的医院ID或对应下级医院ID
* @param code 机构编码
* @return 医院ID
*/
private List<Long> getHospitalIds(String code) {
// 判断机构是否存在
Organization organization = organizationDao.getByCode(code);
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 hospitalIds;
}
/**
* 查找项目对应的医院ID或对应下级医院ID
@ -294,4 +342,44 @@ public class StatisticalService implements IStatisticalService {
}
return total + "";
}
@Override
public StatisticalVo.Common subentrySpecifyAnswer(StatisticalDto.CountSpecifyAnswer param, Long userId) {
//根据项目id查找机构信息
List<Long> hospitalIds = getHospitalIds(param.getProjectId());
if (CollectionUtil.isEmpty(hospitalIds)) {
throw new BaseException(DefaultCodeError.NOT_ORGANIZATION);
}
//获取日期类型字符串
String type = Constant.CountType.valueOf(param.getCountType()).message;
//查询统计数据
List<StatisticalVo.Item> items = firstAidRecordDao.subentrySpecifyAnswer(param,hospitalIds,type);
//封装返回
StatisticalVo.Common common = new StatisticalVo.Common();
common.setTotal(getTotal(items));
List<StatisticalVo.Item> newItems = fillItems(items, param.getStartTime(), param.getEndTime(), param.getCountType());
common.setList(newItems);
return common;
}
@Override
public StatisticalVo.Common placeTimeWindows(StatisticalDto.GdThrombosisRate param, Long userId) {
//查找机构下的医院id
List<Long> hospitalIds = getHospitalIds(param.getCode());
if(CollectionUtil.isNotEmpty(hospitalIds)){
throw new BaseException(DefaultCodeError.NOT_ORGANIZATION);
}
//统计数据
List<StatisticalVo.Item> items = firstAidRecordDao.placeTimeWindows(hospitalIds,param.getStartTime(),param.getEndTime());
//封装返回
StatisticalVo.Common common = new StatisticalVo.Common();
common.setTotal(getTotal(items));
common.setList(items);
return common;
}
@Override
public List<StatisticalVo.ProvinceCity> provinceCityStatistical(StatisticalDto.ProvinceCode param, Long userId) {
return firstAidRecordDao.provinceCityStatistical(param.getCode());
}
}

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

@ -271,5 +271,28 @@ public class Constant {
}
}
public enum CountType {
/**
* 统计类型 0:每小时 1每天 2每月
*/
hour((byte) 0,"%Y-%m-%d %H"),
day((byte) 1,"%Y-%m-%d"),
month((byte) 2,"%Y-%m")
;
public byte status;
public String message;
CountType(byte status, String message) {
this.status = status;
this.message = message;
}
public static CountType valueOf(byte value) {
switch (value) {
case 0: return hour;
case 2: return month;
default: return day;
}
}
}
}

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

@ -157,7 +157,7 @@
AND r2.answer + 0 &gt;= #{param.startTime}
</if>
<if test="param.endTime!=null and param.endTime!=0">
AND r2.answer + 0 &lt; #{param.endTime}
AND r2.answer + 0 &lt;= #{param.endTime}
</if>
GROUP BY
r1.answer
@ -173,9 +173,9 @@
t_qcp_first_aid_record r2
WHERE
a.id = r1.first_aid_id
AND r1.question_code = '发病时间'
AND r1.question_code = 'JBXX-FBSJ'
AND a.id = r2.first_aid_id
AND r1.question_code = '到院时间'
AND r2.question_code = 'JBXX-DYSJ'
AND r2.answer + 0 &gt;= #{startTime}
AND r2.answer + 0 &lt;= #{endTime}
AND a.hospital_id IN
@ -292,4 +292,317 @@
where b.rk IN (c.cnt + 0.5, c.cnt, c.cnt + 1)
group by id
</select>
<select id="subentrySpecifyAnswer" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
SELECT
FROM_UNIXTIME( r2.answer / 1000, #{type} ),
count( a.id )
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 r1.question_code = #{param.questionCode}
AND r1.answer = #{param.answer}
AND r2.question_code = #{param.accordCode}
<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>
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
GROUP BY
FROM_UNIXTIME( r2.answer / 1000, #{type})
</select>
<select id="gdThrombosisRate" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
SELECT
t.id,
t.shortName AS name,
round(t.part / t.total, 2) AS value
FROM
(
SELECT
city.id,
city.short_name AS shortName,
sum(t2.part * 100) AS part,
sum(t1.total) AS total
FROM
(
SELECT
city.id,
city.short_name
FROM
t_organization o,
t_organization_parent p,
t_organization city
WHERE
o.id = p.parent_id
AND p.organization_id = city.id
AND o. CODE = 'SXSZK'
AND o.rec_status = 0
AND p.rec_status = 0
AND city.rec_status = 0
) city
LEFT JOIN (
SELECT
o.id,
p.parent_id
FROM
t_organization o,
t_organization_parent p
WHERE
o.id = p.organization_id
AND o.organization_type = 3
AND o.rec_status = 0
AND p.rec_status = 0
) hospital ON city.id = hospital.parent_id
LEFT JOIN (
SELECT
a.hospital_id,
count(*) AS total
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 r1.question_code = 'JBXX-FBSJ'
AND a.id = r2.first_aid_id
AND r2.question_code = 'JBXX-DYSJ'
AND r2.answer + 0 &gt;= #{startTime}
AND r2.answer + 0 &lt;= #{endTime}
AND a.hospital_id IN
<foreach collection="hospitalIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
AND r2.answer - r1.answer &lt; 6 * 60 * 60 * 1000
AND a.rec_status = 0
AND r1.rec_status = 0
AND r2.rec_status = 0
GROUP BY
a.hospital_id
) t1 ON hospital.id = t1.hospital_id
LEFT JOIN (
SELECT
a.hospital_id,
count(a.id) AS part
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 r1.question_code = #{questionCode}
AND r1.answer = #{answer}
AND r2.question_code = #{timeGist}
AND r2.answer + 0 &gt;= #{startTime}
AND r2.answer + 0 &lt;= #{endTime}
AND a.hospital_id IN
<foreach collection="hospitalIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
AND a.rec_status = 0
AND r1.rec_status = 0
GROUP BY
a.hospital_id
) t2 ON hospital.id = t2.hospital_id
GROUP BY
city.id
) t
</select>
<select id="gdCountSpecifyAnswer" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
SELECT
city.id,
city.short_name AS shortName AS name,
sum(t.total) AS value
FROM
(
SELECT
city.id,
city.short_name
FROM
t_organization o,
t_organization_parent p,
t_organization city
WHERE
o.id = p.parent_id
AND p.organization_id = city.id
AND o. CODE = 'SXSZK'
AND o.rec_status = 0
AND p.rec_status = 0
AND city.rec_status = 0
) city
LEFT JOIN (
SELECT
o.id,
p.parent_id
FROM
t_organization o,
t_organization_parent p
WHERE
o.id = p.organization_id
AND o.organization_type = 3
AND o.rec_status = 0
AND p.rec_status = 0
) hospital ON city.id = hospital.parent_id
LEFT JOIN (
SELECT
a.hospital_id,
count(*) AS total
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 r1.question_code = #{param.questionCode}
AND r1.answer = #param.answer
AND r2.question_code = #{param.accordCode}
AND r2.answer + 0 &gt;= #{param.startTime}
AND r2.answer + 0 &lt;= #{param.endTime}
AND a.hospital_id IN
<foreach collection="hospitalIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
AND a.rec_status = 0
AND r1.rec_status = 0
GROUP BY
a.hospital_id
) t ON hospital.id = t.hospital_id
GROUP BY
city.id
</select>
<select id="placeTimeWindows" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
SELECT
city.id,
city.short_name AS name,
sum( t.total ) as value
FROM
(
SELECT
city.id,
city.short_name
FROM
t_organization o,
t_organization_parent p,
t_organization city
WHERE
o.id = p.parent_id
AND p.organization_id = city.id
AND o.CODE = 'SXSZK'
AND o.rec_status = 0
AND p.rec_status = 0
AND city.rec_status = 0
) city
LEFT JOIN (
SELECT
o.id,
p.parent_id
FROM
t_organization o,
t_organization_parent p
WHERE
o.id = p.organization_id
AND o.organization_type = 3
AND o.rec_status = 0
AND p.rec_status = 0
) hospital ON city.id = hospital.parent_id
LEFT JOIN (
SELECT
a.hospital_id,
count(*) AS total
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 r1.question_code = 'JBXX-FBSJ'
AND a.id = r2.first_aid_id
AND r1.question_code = 'JBXX-DYSJ'
AND r2.answer + 0 &gt;= #{startTime}
AND r2.answer + 0 &lt;= #{endTime}
AND a.hospital_id IN
<foreach collection="hospitalIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
AND r2.answer - r1.answer &lt; 6 * 60 * 60 * 1000
AND a.rec_status = 0
AND r1.rec_status = 0
AND r2.rec_status = 0
GROUP BY
a.hospital_id
) t ON hospital.id = t.hospital_id
GROUP BY
city.id
</select>
<resultMap id="provinceCityStatistical" type="com.ccsens.carbasics.bean.vo.StatisticalVo$ProvinceCity">
<id column="id" property="id"/>
<result column="code" property="code"/>
<result column="shortName" property="shortName"/>
<result column="projectId" property="projectId"/>
<result column="parentId" property="parentId"/>
<collection property="children" ofType="com.ccsens.carbasics.bean.vo.StatisticalVo$ProvinceCity">
<id column="parentId" property="parentId"/>
<result column="id" property="id"/>
<result column="code" property="code"/>
<result column="shortName" property="shortName"/>
<result column="projectId" property="projectId"/>
</collection>
</resultMap>
<select id="provinceCityStatistical" resultMap="provinceCityStatistical">
SELECT
o.id,
o.CODE,
o.short_name AS shortName,
NULL AS parentId,
p.project_id as projectId
FROM
t_organization o,
t_organization_project p
WHERE
o.id = p.organization_id
and o.rec_status = 0
and o.organization_type = 1
<if test="code!=null and code!=''">
AND o.CODE LIKE concat('%',#{code},'%')
</if>
UNION
SELECT
o.id,
o.CODE,
o.short_name,
p.parent_id AS parentId,
pr.project_id as projectId
FROM
t_organization op,
t_organization_parent p,
t_organization o,
t_organization_project pr
WHERE
op.id = p.parent_id
and o.id = pr.organization_id
AND p.organization_id = o.id
<if test="code!=null and code!=''">
AND op.CODE LIKE concat('%',#{code},'%')
</if>
AND o.organization_type = 2
AND op.rec_status = 0
AND p.rec_status = 0
AND o.rec_status = 0
</select>
</mapper>

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

@ -65,4 +65,21 @@
ischild != 0
AND organizationType = 3
</select>
<select id="getByCode" resultType="com.ccsens.carbasics.bean.po.Organization">
SELECT
o.id,
o.organization_type AS organizationType,
o.`code`,
o.`name`,
o.short_name AS shortName,
o.introduce,
o.`level`
FROM
t_organization o
WHERE
o.`code` = #{code}
AND o.rec_status = 0
LIMIT 1
</select>
</mapper>

Loading…
Cancel
Save