12 changed files with 664 additions and 10 deletions
@ -0,0 +1,36 @@ |
|||
package com.ccsens.carbasics.persist.dao; |
|||
|
|||
import com.ccsens.carbasics.bean.vo.StatisticalVo; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Repository |
|||
public interface ManageStatisticalDao { |
|||
|
|||
/** |
|||
* |
|||
* @param oneId |
|||
* @param twoId |
|||
* @return |
|||
*/ |
|||
Map<String, Long> comparisonAllByLevel(@Param("oneId")Long oneId, @Param("twoId")Long twoId); |
|||
|
|||
List<StatisticalVo.ComparisonAis.Ais> comparisonAllByArea(@Param("oneId")Long oneId, @Param("twoId")Long twoId, @Param("desc")byte desc); |
|||
|
|||
/** |
|||
* |
|||
* @param oneId |
|||
* @param twoId |
|||
* @param desc |
|||
* @return |
|||
*/ |
|||
List<StatisticalVo.ComparisonAis.Ais> comparisonAisByArea(@Param("oneId")Long oneId, @Param("twoId")Long twoId, @Param("desc")byte desc); |
|||
|
|||
List<StatisticalVo.ComparisonAisPercent.Ais> comparisonAisPercentByArea(@Param("oneId")Long oneId, @Param("twoId")Long twoId, @Param("desc")byte desc); |
|||
} |
@ -0,0 +1,48 @@ |
|||
package com.ccsens.carbasics.service; |
|||
|
|||
import com.ccsens.carbasics.bean.dto.QuestionnaireDto; |
|||
import com.ccsens.carbasics.bean.dto.StatisticalDto; |
|||
import com.ccsens.carbasics.bean.vo.QuestionnaireVo; |
|||
import com.ccsens.carbasics.bean.vo.StatisticalVo; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
public interface IManageStatisticalService { |
|||
|
|||
/** |
|||
* 通过type查找问卷 |
|||
* @param param |
|||
* @param userId |
|||
* @return |
|||
*/ |
|||
List<QuestionnaireVo.QuestionnaireByType> questionnaireByType(QuestionnaireDto.QueryQuestionnaireByType param, Long userId); |
|||
|
|||
/** |
|||
* 根据等级统计Ais数据 |
|||
* @param param |
|||
* @param userId |
|||
* @return |
|||
*/ |
|||
StatisticalVo.ComparisonAis comparisonAllByLevel(StatisticalDto.Comparison param, Long userId); |
|||
|
|||
/** |
|||
* 根据地区统计AIS数据 |
|||
* @param param |
|||
* @param userId |
|||
* @return |
|||
*/ |
|||
StatisticalVo.ComparisonAis comparisonAllByArea(StatisticalDto.Comparison param, Long userId); |
|||
|
|||
/** |
|||
* |
|||
* @param param |
|||
* @param userId |
|||
* @return |
|||
*/ |
|||
StatisticalVo.ComparisonAis comparisonAisByArea(StatisticalDto.Comparison param, Long userId); |
|||
|
|||
StatisticalVo.ComparisonAisPercent comparisonAisPercentByArea(StatisticalDto.Comparison param, Long userId); |
|||
} |
@ -0,0 +1,102 @@ |
|||
package com.ccsens.carbasics.service; |
|||
|
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import cn.hutool.core.util.ArrayUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.ccsens.carbasics.bean.dto.QuestionnaireDto; |
|||
import com.ccsens.carbasics.bean.dto.StatisticalDto; |
|||
import com.ccsens.carbasics.bean.vo.QuestionnaireVo; |
|||
import com.ccsens.carbasics.bean.vo.StatisticalVo; |
|||
import com.ccsens.carbasics.persist.dao.ManageStatisticalDao; |
|||
import com.ccsens.carbasics.persist.dao.QuestionnaireDao; |
|||
import javafx.print.Collation; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.*; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|||
public class ManageStatisticalService implements IManageStatisticalService { |
|||
|
|||
@Resource |
|||
private QuestionnaireDao questionnaireDao; |
|||
@Resource |
|||
private ManageStatisticalDao manageStatisticalDao; |
|||
|
|||
@Override |
|||
public List<QuestionnaireVo.QuestionnaireByType> questionnaireByType(QuestionnaireDto.QueryQuestionnaireByType param, Long userId) { |
|||
return questionnaireDao.questionnaireByType(param.getType()); |
|||
} |
|||
|
|||
@Override |
|||
public StatisticalVo.ComparisonAis comparisonAllByLevel(StatisticalDto.Comparison param, Long userId) { |
|||
//查找“收治急性缺血性脑卒中(AIS)总例数”
|
|||
Map<String, Long> map = manageStatisticalDao.comparisonAllByLevel(param.getOneId(),param.getTwoId()); |
|||
|
|||
StatisticalVo.ComparisonAis comparisonAis = new StatisticalVo.ComparisonAis(); |
|||
List<StatisticalVo.ComparisonAis.Ais> aisList = new ArrayList<>(); |
|||
if(ObjectUtil.isNull(map)){ |
|||
aisList.add(new StatisticalVo.ComparisonAis.Ais("二级",0,0)); |
|||
aisList.add(new StatisticalVo.ComparisonAis.Ais("三级",0,0)); |
|||
aisList.add(new StatisticalVo.ComparisonAis.Ais("溶栓地图外",0,0)); |
|||
}else { |
|||
aisList.add(new StatisticalVo.ComparisonAis.Ais("二级", |
|||
map.get("secondLevel1") == null ? 0 : map.get("secondLevel1").intValue(), |
|||
map.get("secondLevel2") == null ? 0 : map.get("secondLevel2").intValue())); |
|||
aisList.add(new StatisticalVo.ComparisonAis.Ais("三级", |
|||
map.get("threeLevel1") == null ? 0 : map.get("threeLevel1").intValue(), |
|||
map.get("threeLevel2") == null ? 0 : map.get("threeLevel2").intValue())); |
|||
aisList.add(new StatisticalVo.ComparisonAis.Ais("溶栓地图外", |
|||
map.get("notMap1") == null ? 0 : map.get("notMap1").intValue(), |
|||
map.get("notMap2") == null ? 0 : map.get("notMap2").intValue())); |
|||
} |
|||
|
|||
comparisonAis.setAisList(aisList); |
|||
return comparisonAis; |
|||
} |
|||
|
|||
@Override |
|||
public StatisticalVo.ComparisonAis comparisonAllByArea(StatisticalDto.Comparison param, Long userId) { |
|||
//查找“收治急性缺血性脑卒中(AIS)总例数”
|
|||
List<StatisticalVo.ComparisonAis.Ais> aisList = manageStatisticalDao.comparisonAllByArea(param.getOneId(),param.getTwoId(),param.getDesc()); |
|||
|
|||
StatisticalVo.ComparisonAis comparisonAis = new StatisticalVo.ComparisonAis(); |
|||
|
|||
comparisonAis.setAisList(aisList); |
|||
return comparisonAis; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public StatisticalVo.ComparisonAis comparisonAisByArea(StatisticalDto.Comparison param, Long userId) { |
|||
//查找“收治急性缺血性脑卒中(AIS)总例数”
|
|||
List<StatisticalVo.ComparisonAis.Ais> aisList = manageStatisticalDao.comparisonAisByArea(param.getOneId(),param.getTwoId(),param.getDesc()); |
|||
StatisticalVo.ComparisonAis comparisonAis = new StatisticalVo.ComparisonAis(); |
|||
|
|||
comparisonAis.setAisList(aisList); |
|||
return comparisonAis; |
|||
} |
|||
|
|||
@Override |
|||
public StatisticalVo.ComparisonAisPercent comparisonAisPercentByArea(StatisticalDto.Comparison param, Long userId) { |
|||
StatisticalVo.ComparisonAisPercent comparisonAis = new StatisticalVo.ComparisonAisPercent(); |
|||
|
|||
List<StatisticalVo.ComparisonAisPercent.Ais> aisList = manageStatisticalDao.comparisonAisPercentByArea(param.getOneId(),param.getTwoId(),param.getDesc()); |
|||
if(param.getDesc() == 4){ |
|||
CollectionUtil.sort(aisList, (o1, o2) -> o2.getOneHourPercent().compareTo(o1.getOneHourPercent())); |
|||
}else { |
|||
CollectionUtil.sort(aisList, (o1, o2) -> o2.getTowHourPercent().compareTo(o1.getTowHourPercent())); |
|||
} |
|||
comparisonAis.setAisList(aisList); |
|||
|
|||
return comparisonAis; |
|||
} |
|||
} |
@ -0,0 +1,254 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.carbasics.persist.dao.ManageStatisticalDao"> |
|||
|
|||
|
|||
<select id="comparisonAllByLevel" resultType="java.util.Map"> |
|||
SELECT |
|||
cast(SUM(if(t1.map = '否', t1.num, null)) as SIGNED) as notMap1, |
|||
cast(SUM(if(t2.map = '否', t2.num, null)) as SIGNED) as notMap2, |
|||
cast(SUM(if(t1.map = '是' and t1.hospitalLevel = '二级', t1.num, null)) as SIGNED) as secondLevel1, |
|||
cast(SUM(if(t2.map = '是' and t2.hospitalLevel = '二级', t2.num, null)) as SIGNED) as secondLevel2, |
|||
cast(SUM(if(t1.map = '是' and t1.hospitalLevel = '三级', t1.num, null)) as SIGNED) as threeLevel1, |
|||
cast(SUM(if(t2.map = '是' and t2.hospitalLevel = '三级', t2.num, null)) as SIGNED) as threeLevel2 |
|||
FROM |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
m.answer as map, |
|||
n.answer as hospitalName, |
|||
l.answer as hospitalLevel |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'All-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-MAP') m on a.questionnaire_detail_id = m.questionnaire_detail_id |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-LEVEL') l on a.questionnaire_detail_id = l.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and m.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and l.rec_status = 0 |
|||
and d.questionnaire_id = #{oneId} |
|||
and d.submit_status = 1 |
|||
)t1, |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
m.answer as map, |
|||
n.answer as hospitalName, |
|||
l.answer as hospitalLevel |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'All-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-MAP') m on a.questionnaire_detail_id = m.questionnaire_detail_id |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-LEVEL') l on a.questionnaire_detail_id = l.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and m.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and l.rec_status = 0 |
|||
and d.questionnaire_id = #{twoId} |
|||
and d.submit_status = 1 |
|||
)t2 |
|||
WHERE |
|||
t1.hospitalName = t2.hospitalName |
|||
</select> |
|||
<select id="comparisonAllByArea" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$ComparisonAis$Ais"> |
|||
SELECT |
|||
* |
|||
FROM |
|||
( |
|||
SELECT |
|||
t1.area_name as name, |
|||
SUM(t1.num) as oneNum, |
|||
SUM(t2.num) as towNum |
|||
FROM |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
n.answer as hospitalName, |
|||
c.area_name |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'All-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT r.questionnaire_detail_id, a.`area_name` FROM t_qcp_questionnaire_record r, t_area a |
|||
WHERE r.`question_code` = 'CITY-COUNTY' and a.id = SUBSTRING_INDEX(r.answer,",",1)) c on a.questionnaire_detail_id = c.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and d.questionnaire_id = #{oneId} |
|||
and d.submit_status = 1 |
|||
)t1, |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
n.answer as hospitalName, |
|||
c.area_name |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'All-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT r.questionnaire_detail_id, a.`area_name` FROM t_qcp_questionnaire_record r, t_area a |
|||
WHERE r.`question_code` = 'CITY-COUNTY' and a.id = SUBSTRING_INDEX(r.answer,",",1)) c on a.questionnaire_detail_id = c.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and d.questionnaire_id = #{twoId} |
|||
and d.submit_status = 1 |
|||
)t2 |
|||
WHERE |
|||
t1.hospitalName = t2.hospitalName |
|||
GROUP BY t1.area_name, t2.area_name |
|||
) a |
|||
<if test="desc == 0"> |
|||
ORDER BY a.oneNum DESC |
|||
</if> |
|||
<if test="desc == 1"> |
|||
ORDER BY a.towNum DESC |
|||
</if> |
|||
|
|||
</select> |
|||
|
|||
<select id="comparisonAisByArea" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$ComparisonAis$Ais"> |
|||
SELECT |
|||
* |
|||
FROM |
|||
( |
|||
SELECT |
|||
t1.area_name as name, |
|||
SUM(t1.num) as oneNum, |
|||
SUM(t2.num) as towNum |
|||
FROM |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
n.answer as hospitalName, |
|||
c.area_name |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'AIS-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT r.questionnaire_detail_id, a.`area_name` FROM t_qcp_questionnaire_record r, t_area a |
|||
WHERE r.`question_code` = 'CITY-COUNTY' and a.id = SUBSTRING_INDEX(r.answer,",",1)) c on a.questionnaire_detail_id = c.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and d.questionnaire_id = #{oneId} |
|||
and d.submit_status = 1 |
|||
)t1, |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
n.answer as hospitalName, |
|||
c.area_name |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'AIS-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT r.questionnaire_detail_id, a.`area_name` FROM t_qcp_questionnaire_record r, t_area a |
|||
WHERE r.`question_code` = 'CITY-COUNTY' and a.id = SUBSTRING_INDEX(r.answer,",",1)) c on a.questionnaire_detail_id = c.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and d.questionnaire_id = #{twoId} |
|||
and d.submit_status = 1 |
|||
)t2 |
|||
WHERE |
|||
t1.hospitalName = t2.hospitalName |
|||
GROUP BY t1.area_name, t2.area_name |
|||
) a |
|||
<if test="desc == 0"> |
|||
ORDER BY a.oneNum DESC |
|||
</if> |
|||
<if test="desc == 1"> |
|||
ORDER BY a.towNum DESC |
|||
</if> |
|||
</select> |
|||
<select id="comparisonAisPercentByArea" |
|||
resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$ComparisonAisPercent$Ais"> |
|||
SELECT |
|||
* |
|||
FROM |
|||
( |
|||
SELECT |
|||
t1.area_name as name, |
|||
SUM(t1.num) as oneNum, |
|||
SUM(t2.num) as towNum, |
|||
SUM(t1.aisNum) as oneHourNum, |
|||
SUM(t2.aisNum) as towHourNum |
|||
FROM |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
ais.answer as aisNum, |
|||
n.answer as hospitalName, |
|||
c.area_name |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'All-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'AIS-Nnt') ais on a.questionnaire_detail_id = ais.questionnaire_detail_id |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT r.questionnaire_detail_id, a.`area_name` FROM t_qcp_questionnaire_record r, t_area a |
|||
WHERE r.`question_code` = 'CITY-COUNTY' and a.id = SUBSTRING_INDEX(r.answer,",",1)) c on a.questionnaire_detail_id = c.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and d.questionnaire_id = #{oneId} |
|||
and d.submit_status = 1 |
|||
)t1, |
|||
( |
|||
SELECT |
|||
d.id, |
|||
a.answer as num, |
|||
ais.answer as aisNum, |
|||
n.answer as hospitalName, |
|||
c.area_name |
|||
FROM |
|||
(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'All-Nnt') a |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'AIS-Nnt') ais on a.questionnaire_detail_id = ais.questionnaire_detail_id |
|||
LEFT JOIN(SELECT * FROM t_qcp_questionnaire_record WHERE `question_code` = 'HOS-NAME') n on a.questionnaire_detail_id = n.questionnaire_detail_id |
|||
LEFT JOIN(SELECT r.questionnaire_detail_id, a.`area_name` FROM t_qcp_questionnaire_record r, t_area a |
|||
WHERE r.`question_code` = 'CITY-COUNTY' and a.id = SUBSTRING_INDEX(r.answer,",",1)) c on a.questionnaire_detail_id = c.questionnaire_detail_id |
|||
LEFT JOIN t_qcp_questionnaire_detail d on d.id = a.questionnaire_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
and a.rec_status = 0 |
|||
and n.rec_status = 0 |
|||
and d.questionnaire_id = #{twoId} |
|||
and d.submit_status = 1 |
|||
)t2 |
|||
WHERE |
|||
t1.hospitalName = t2.hospitalName |
|||
GROUP BY t1.area_name, t2.area_name |
|||
) a |
|||
<if test="desc == 0"> |
|||
ORDER BY a.oneNum DESC |
|||
</if> |
|||
<if test="desc == 1"> |
|||
ORDER BY a.towNum DESC |
|||
</if> |
|||
<if test="desc == 2"> |
|||
ORDER BY a.oneHourNum DESC |
|||
</if> |
|||
<if test="desc == 3"> |
|||
ORDER BY a.towHourNum DESC |
|||
</if> |
|||
</select> |
|||
</mapper> |
Loading…
Reference in new issue