Browse Source

统计接口的修改与问卷调查接口的修改

master
ma 4 years ago
parent
commit
895f3924d2
  1. 12
      src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java
  2. 2
      src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java
  3. 10
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java
  4. 124
      src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java
  5. 42
      src/main/java/com/ccsens/carbasics/util/Constant.java
  6. 4
      src/main/resources/druid-dev.yml
  7. 105
      src/main/resources/mapper_dao/DataStatisticsDao.xml
  8. 31
      src/main/resources/mapper_dao/OrganizationDao.xml
  9. 3
      src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml

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

@ -56,6 +56,18 @@ public class QuestionnaireDto {
@NotNull(message = "医院名称不能为空")
@ApiModelProperty("医院名称")
private String name;
@NotNull(message = "部门名称不能为空")
@ApiModelProperty("部门名称")
private String departmentName;
@NotNull(message = "职位名称不能为空")
@ApiModelProperty("职位名称")
private String positionName;
@NotNull(message = "提交人姓名不能为空")
@ApiModelProperty("提交人姓名")
private String submitter;
@NotNull(message = "提交人手机号不能为空")
@ApiModelProperty("提交人手机号")
private String phone;
}
@Data

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

@ -214,6 +214,8 @@ public class StatisticsVo {
private String fqjxgnzlzs;
@ApiModelProperty("总血管内治疗率")
private BigDecimal zxgnzll;
@ApiModelProperty("总血管内治疗率(城市)")
private BigDecimal zxgnzllCity;
}
@Data

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

@ -117,4 +117,14 @@ public interface OrganizationDao extends OrganizationMapper {
* @return QCP医院ID
*/
Long getQcpHospitalId(@Param("id") Long hospitalId);
/**
* 查询用户是否已有职位角色
* @param departmentName 部门名称
* @param positionName 职位名称
* @param name 医院名称
* @param userId 用户id
* @return 0否,1是
*/
Integer queryUserIsExist(@Param("departmentName") String departmentName,@Param("positionName") String positionName,@Param("name") String name,@Param("userId") Long userId);
}

124
src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java

@ -85,6 +85,8 @@ public class QuestionnaireService implements IQuestionnaireService{
private RedisUtil redisUtil;
@Resource
private Tall3FeignClient tall3FeignClient;
@Resource
private AccountManageDao accountManageDao;
@Override
public List<QuestionnaireVo.AreaInfo> queryArea(QuestionnaireDto.QueryArea param, Long userId) {
@ -109,27 +111,34 @@ public class QuestionnaireService implements IQuestionnaireService{
@Override
public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception {
//查询是否已经提交,已提交不能保存修改
QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId());
if (Constant.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) {
throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
}
Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode());
if (ObjectUtil.isNotNull(recordId)) {
QuestionnaireRecord record = new QuestionnaireRecord();
record.setId(recordId);
record.setQuestionCode(param.getCode());
record.setAnswer(param.getAnswer());
recordDao.updateByPrimaryKeySelective(record);
}else {
QuestionnaireRecord record = new QuestionnaireRecord();
record.setId(snowflake.nextId());
record.setQuestionnaireDetailId(param.getDetailId());
record.setQuestionCode(param.getCode());
record.setAnswer(param.getAnswer());
recordDao.insertSelective(record);
//redis判断是否已有
Object o = redisUtil.get(String.valueOf(param.getDetailId() + userId));
if (ObjectUtil.isNull(o)) {
redisUtil.set(String.valueOf(param.getDetailId() + userId),userId);
//查询是否已经提交,已提交不能保存修改
QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId());
if (Constant.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) {
throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
}
Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode());
if (ObjectUtil.isNotNull(recordId)) {
QuestionnaireRecord record = new QuestionnaireRecord();
record.setId(recordId);
record.setQuestionCode(param.getCode());
record.setAnswer(param.getAnswer());
recordDao.updateByPrimaryKeySelective(record);
}else {
QuestionnaireRecord record = new QuestionnaireRecord();
record.setId(snowflake.nextId());
record.setQuestionnaireDetailId(param.getDetailId());
record.setQuestionCode(param.getCode());
record.setAnswer(param.getAnswer());
recordDao.insertSelective(record);
}
redisUtil.del(String.valueOf(param.getDetailId()+userId));
}
}
@ -182,34 +191,57 @@ public class QuestionnaireService implements IQuestionnaireService{
}
//2.校验是否已经有提交
Long submitId = questionnaireDetailDao.queryIsSubmit(param.getName());
if (ObjectUtil.isNotNull(submitId)) {
//加入项目
Long projectId = createHospitalOfNotExit(phone, userId);
List<QuestionnaireVo.QuestionnaireInfo> infoList = questionnaireDetailDao.querySubmitter(submitId);
HashMap<String, String> codeAndAnswer = new HashMap<>();
if (ObjectUtil.isNotNull(infoList)) {
for (QuestionnaireVo.QuestionnaireInfo questionnaireInfo : infoList) {
codeAndAnswer.put(questionnaireInfo.getCode(),questionnaireInfo.getAnswer());
}
}
QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo();
submitInfo.setProjectId(projectId);
submitInfo.setType((byte)1);
submitInfo.setDepartment(codeAndAnswer.get(Constant.BasicInformation.department.code));
submitInfo.setName(codeAndAnswer.get(Constant.BasicInformation.person.code));
submitInfo.setPosition(codeAndAnswer.get(Constant.BasicInformation.position.code));
return submitInfo;
if (ObjectUtil.isNull(submitId)) {
QuestionnaireDetail detail = new QuestionnaireDetail();
detail.setId(param.getDetailId());
detail.setSubmitStatus(Constant.SubmitStatus.submit.status);
questionnaireDetailDao.updateByPrimaryKeySelective(detail);
}
//查询用户是否此医院此角色此部门
Integer isExist = organizationDao.queryUserIsExist(param.getDepartmentName(),param.getPositionName(),param.getName(),userId);
if (0 < isExist) {
return new QuestionnaireVo.SubmitInfo();
}
QuestionnaireDetail detail = new QuestionnaireDetail();
detail.setId(param.getDetailId());
detail.setSubmitStatus(Constant.SubmitStatus.submit.status);
questionnaireDetailDao.updateByPrimaryKeySelective(detail);
//创建项目
Long projectId = createHospitalOfNotExit(phone,userId);
QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo();
submitInfo.setProjectId(projectId);
submitInfo.setType((byte)0);
return submitInfo;
AccountManage accountManage = new AccountManage();
accountManage.setId(snowflake.nextId());
accountManage.setDepartmentName(param.getDepartmentName());
accountManage.setDepartmentCode(Constant.DepartmentAndCode.getDepartmentCode(param.getDepartmentName()));
accountManage.setPositionName(param.getPositionName());
accountManage.setPositionCode(Constant.PositionIdAndRole.getPositionCode(param.getPositionName()));
accountManage.setSubmitter(param.getSubmitter());
accountManage.setSubmitterPhone(param.getPhone());
accountManage.setSubmitterUserId(userId);
accountManage.setAuditStatus((byte) 0);
accountManageDao.insertSelective(accountManage);
return new QuestionnaireVo.SubmitInfo();
// if (ObjectUtil.isNotNull(submitId)) {
// //加入项目
// Long projectId = createHospitalOfNotExit(phone, userId);
// List<QuestionnaireVo.QuestionnaireInfo> infoList = questionnaireDetailDao.querySubmitter(submitId);
// HashMap<String, String> codeAndAnswer = new HashMap<>();
// if (ObjectUtil.isNotNull(infoList)) {
// for (QuestionnaireVo.QuestionnaireInfo questionnaireInfo : infoList) {
// codeAndAnswer.put(questionnaireInfo.getCode(),questionnaireInfo.getAnswer());
// }
// }
// QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo();
// submitInfo.setProjectId(projectId);
// submitInfo.setType((byte)1);
// submitInfo.setDepartment(codeAndAnswer.get(Constant.BasicInformation.department.code));
// submitInfo.setName(codeAndAnswer.get(Constant.BasicInformation.person.code));
// submitInfo.setPosition(codeAndAnswer.get(Constant.BasicInformation.position.code));
// return submitInfo;
// }
// QuestionnaireDetail detail = new QuestionnaireDetail();
// detail.setId(param.getDetailId());
// detail.setSubmitStatus(Constant.SubmitStatus.submit.status);
// questionnaireDetailDao.updateByPrimaryKeySelective(detail);
// //创建项目
// Long projectId = createHospitalOfNotExit(phone,userId);
// QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo();
// submitInfo.setProjectId(projectId);
// submitInfo.setType((byte)0);
// return submitInfo;
}

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

@ -275,6 +275,22 @@ public class Constant {
}
return false;
}
public static String getDepartmentCode(String name) {
if (CU_ZHONG_ZHONG_XIN.name.equals(name)) {
return CU_ZHONG_ZHONG_XIN.code;
}else if (CU_ZHONG_ZHONG_XIN_BAN_GONG_SHI.name.equals(name)) {
return CU_ZHONG_ZHONG_XIN_BAN_GONG_SHI.code;
}else if (JI_ZHEN.name.equals(name)) {
return JI_ZHEN.code;
}else if (SHEN_NEI.name.equals(name)) {
return SHEN_NEI.code;
}else if(SHEN_WAI.name.equals(name)) {
return SHEN_WAI.code;
}else if (NEI_KE.name.equals(name)) {
return NEI_KE.code;
}
return null;
}
}
/**职位相关*/
@ -384,6 +400,30 @@ public class Constant {
this.positionCode = positionCode;
this.roleName = roleName;
}
public static String getPositionCode(String name) {
if (HuSHi.roleName.equals(name)) {
return HuSHi.positionCode;
}else if (YiSheng.roleName.equals(name)) {
return YiSheng.positionCode;
}else if (ZhiKong.roleName.equals(name)) {
return ZhiKong.positionCode;
}else if (MiShu.roleName.equals(name)) {
return MiShu.positionCode;
}else if (KeZhuRen.roleName.equals(name)) {
return KeZhuRen.positionCode;
}else if (FuZhuRen.roleName.equals(name)) {
return FuZhuRen.positionCode;
}else if (WeiJianWei.roleName.equals(name)) {
return WeiJianWei.positionCode;
}else if (CuZhongZhongXinZhuRen.roleName.equals(name)) {
return CuZhongZhongXinZhuRen.positionCode;
}else if (CuZhongZhongXinBanGongShiZhuRen.roleName.equals(name)) {
return CuZhongZhongXinBanGongShiZhuRen.positionCode;
}else if (HuShiZhang.roleName.equals(name)) {
return HuShiZhang.positionCode;
}
return null;
}
}
public enum DataStatus {
/**
@ -528,7 +568,7 @@ public class Constant {
Create((byte) 0,"创建"),
FirstAidPass((byte) 1,"急救审核通过"),
FirstAidRefuse((byte) 2,"急救审核拒绝"),
DischargePass((byte) 3,"3出院审核通过"),
DischargePass((byte) 3,"出院审核通过"),
DischargeRefuse((byte) 4,"出院审核拒绝"),
ApplyFor((byte) 5,"申请修改"),
ApplyForPass((byte) 6,"申请通过"),

4
src/main/resources/druid-dev.yml

@ -28,8 +28,8 @@ spring:
testOnReturn: false
testWhileIdle: true
timeBetweenEvictionRunsMillis: 60000
# url: jdbc:mysql://49.233.89.188:3306/carbasics?useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://www.tall.wiki:3306/carbasics?useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://49.233.89.188:3306/carbasics?useUnicode=true&characterEncoding=UTF-8
# url: jdbc:mysql://www.tall.wiki:3306/carbasics?useUnicode=true&characterEncoding=UTF-8
username: root
validationQuery: SELECT 1 FROM DUAL
# env: CCSENS_GAME

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

@ -552,6 +552,7 @@
AND answer45.area = answer45all.area
AND answer45all.area = answer60all.area
AND answer60all.area = answer61all.area
ORDER BY dntLess60 DESC
</select>
<select id="dntDataForHospital" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$DntData">
@ -1079,36 +1080,45 @@
<select id="xgzlDataForCity" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$XgzlData">
SELECT
a.id AS areaId,
a.area_name AS name,
answer1.qjxgnzlzs,
answer2.fqjxgnzlzs,
IFNULL(round((answer1.qjxgnzlzs+answer2.fqjxgnzlzs)*100/(answer3.rshfhxgnzlzzzrs+answer4.fhxgnzlzzzrs),2),0.00) AS zxgnzll
a1.areaId,
a1.name,
a1.fqjxgnzlzs,
a1.qjxgnzlzs,
a1.zxgnzll,
a2.zxgnzllCity
FROM
(SELECT
a.id AS areaId,
a.area_name AS name,
answer1.qjxgnzlzs,
answer2.fqjxgnzlzs,
IFNULL(round((answer1.qjxgnzlzs+answer2.fqjxgnzlzs)*100/(answer3.rshfhxgnzlzzzrs+answer4.fhxgnzlzzzrs),2),0.00)
AS zxgnzll
FROM
(
SELECT
SUBSTRING_INDEX(area.answer,',',1) AS area,
SUM(actual.answer) AS qjxgnzlzs
SUBSTRING_INDEX(area.answer,',',1) AS area,
SUM(actual.answer) AS qjxgnzlzs
FROM
t_qcp_questionnaire_record AS actual
LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id
LEFT JOIN t_qcp_questionnaire_record AS yes ON qd.id = yes.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS level ON qd.id = level.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS area ON qd.id = area.questionnaire_detail_id
t_qcp_questionnaire_record AS actual
LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id
LEFT JOIN t_qcp_questionnaire_record AS yes ON qd.id = yes.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS level ON qd.id = level.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS area ON qd.id = area.questionnaire_detail_id
WHERE
actual.rec_status = 0
AND qd.rec_status = 0
AND qd.submit_status = 1
AND actual.question_code = 'XGZL-sICH-Nnt'
AND yes.rec_status = 0
AND yes.question_code = 'XGZL'
AND yes.answer = '是'
<if test="param.queryLevel == 0">
-- 等级
AND `level`.rec_status = 0
AND `level`.question_code = 'HOS-LEVEL'
AND `level`.answer = '三级'
</if>
actual.rec_status = 0
AND qd.rec_status = 0
AND qd.submit_status = 1
AND actual.question_code = 'XGZL-sICH-Nnt'
AND yes.rec_status = 0
AND yes.question_code = 'XGZL'
AND yes.answer = '是'
<if test="param.queryLevel == 0">-- 等级
AND `level`.
rec_status = 0
AND `level`.question_code = 'HOS-LEVEL'
AND `level`.answer = '三级'
</if>
<if test="param.queryLevel == 1">
-- 等级
AND `level`.rec_status = 0
@ -1226,12 +1236,49 @@
AND answer1.area = answer2.area
AND answer2.area = answer3.area
AND answer3.area = answer4.area
ORDER BY (answer1.qjxgnzlzs+answer2.fqjxgnzlzs) DESC,zxgnzll DESC
) AS a1
LEFT JOIN
(
SELECT
a.id,
a.area_name,
IFNULL(round((SUM(answer1.answer)+SUM(answer2.answer))*100/(SUM(answer3.answer)+SUM(answer4.answer)),2),0.00) AS zxgnzllCity
FROM
t_qcp_questionnaire_record AS answer1
LEFT JOIN t_qcp_questionnaire_detail AS qd ON answer1.questionnaire_detail_id = qd.id
LEFT JOIN t_qcp_questionnaire_record AS yes ON qd.id = yes.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS area ON qd.id = area.questionnaire_detail_id
LEFT JOIN t_area AS a ON SUBSTRING_INDEX(area.answer,',',1) = a.id
LEFT JOIN t_qcp_questionnaire_record AS hospital ON qd.id = hospital.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS answer2 ON qd.id = answer2.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS answer3 ON qd.id = answer3.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire_record AS answer4 ON qd.id = answer4.questionnaire_detail_id
WHERE
answer1.rec_status = 0
AND qd.rec_status = 0
AND qd.submit_status = 1
AND answer1.question_code = 'XGZL-sICH-Nnt'
AND answer2.rec_status = 0
AND answer2.question_code = 'XGZL-actual-Nnt'
AND answer3.rec_status = 0
AND answer3.question_code = 'XGZL-RSH-Nnt'
AND answer4.rec_status = 0
AND answer4.question_code = 'XGZL-FIT-Nnt'
AND yes.rec_status = 0
AND yes.question_code = 'XGZL'
AND yes.answer = '是'
AND hospital.rec_status = 0
AND hospital.question_code = 'HOS-NAME'
AND area.rec_status = 0
AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a2 ON a1.areaId = a2.id
ORDER BY (a1.qjxgnzlzs+a1.fqjxgnzlzs) DESC,zxgnzll DESC
</select>
<select id="xgzlDataForHospital" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$XgzlData">
SELECT
hospital.answer AS cityName,
hospital.answer AS `name`,
answer1.answer AS qjxgnzlzs,
answer2.answer AS fqjxgnzlzs,
IFNULL(round((answer1.answer+answer2.answer)*100/(answer3.answer+answer4.answer),2),0.00) AS zxgnzll
@ -1421,7 +1468,7 @@
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a1
LEFT JOIN
RIGHT JOIN
(
SELECT
a.id,
@ -1606,7 +1653,7 @@
AND area.rec_status = 0 AND area.question_code = 'CITY-COUNTY'
GROUP BY SUBSTRING_INDEX(area.answer,',',1)
) AS a1
LEFT JOIN
RIGHT JOIN
(
SELECT
a.id,

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

@ -470,6 +470,7 @@
ORDER BY `value` DESC
</if>
</select>
<sql id="nnt">
SELECT
a1.detail_id as detail_id,
@ -815,4 +816,34 @@
and a2.detail_id = a3.detail_id
and a1.detail_id = a3.detail_id
</sql>
<select id="queryUserIsExist" resultType="java.lang.Integer">
SELECT
COUNT( id )
FROM
t_organization_member_position
WHERE
rec_status = 0
AND member_id = ( SELECT id FROM t_organization_member WHERE rec_status = 0 AND user_id = #{userId} )
AND department_id = (
SELECT
od.id
FROM
t_organization AS o
LEFT JOIN t_organization_department AS od ON od.organization_id = o.id
WHERE
o.rec_status = 0
AND o.`name` = #{name}
AND od.`name` = #{departmentName}
)
AND position_id = (
SELECT
id
FROM
t_organization_position
WHERE
rec_status = 0
AND `name` = #{positionName}
)
</select>
</mapper>

3
src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml

@ -31,7 +31,8 @@
<select id="queryForXgzl" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$XgzlData">
SELECT
`name`,
datum_line AS zxgnzll
datum_line AS zxgnzll,
datum_line AS zxgnzllCity
FROM
t_qcp_questionnaire_data_datum_line
WHERE

Loading…
Cancel
Save