Browse Source

修改7-11月问卷调查

master
ma 4 years ago
parent
commit
ed86ac2a38
  1. 3
      src/main/java/com/ccsens/carbasics/bean/dto/PatientDto.java
  2. 2
      src/main/java/com/ccsens/carbasics/bean/vo/PatientVo.java
  3. 4
      src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java
  4. 4
      src/main/java/com/ccsens/carbasics/service/AccountManageService.java
  5. 107
      src/main/java/com/ccsens/carbasics/service/FirstAidService.java
  6. 10
      src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java
  7. 4
      src/main/resources/application.yml
  8. 29
      src/main/resources/mapper_dao/DataStatisticsDao.xml
  9. 3
      src/main/resources/mapper_dao/FirstAidDao.xml
  10. 17
      src/main/resources/mapper_dao/QuestionnaireDetailDao.xml

3
src/main/java/com/ccsens/carbasics/bean/dto/PatientDto.java

@ -29,6 +29,9 @@ public class PatientDto {
@NotNull
@ApiModelProperty("项目ID")
private Long projectId;
@NotNull
@ApiModelProperty("病例类型(0:神内 1:神外)")
private Byte caseType;
@ApiModelProperty("第几页")
@Min(value = 1)

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

@ -41,6 +41,8 @@ public class PatientVo {
private Long carId;
@ApiModelProperty("是否是演示数据 0否 1是")
private Byte demonstrate;
@ApiModelProperty("0:神内 1:神外")
private Byte caseType;
@ApiModelProperty("病例状态 0:创建 1:急救审核通过 2:急救审核拒绝 3出院审核通过 4出院审核拒绝 5:申请修改 6:申请拒绝")
private Byte dataStatus;
@ApiModelProperty("急救:发病时间 转归:出院时间")

4
src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java

@ -65,7 +65,7 @@ public interface QuestionnaireDetailDao extends QuestionnaireDetailMapper {
* @param name 医院名称
* @return 大于0为已提交
*/
Long queryIsSubmit(@Param("name") String name);
Long queryIsSubmit(@Param("name") String name,@Param("time") Long time);
/**
* 查询提交人的信息
@ -86,5 +86,5 @@ public interface QuestionnaireDetailDao extends QuestionnaireDetailMapper {
* @param userId 用户id
* @return 问卷详情id
*/
Long queryByUserId(@Param("userId") Long userId);
Long queryByUserId(@Param("userId") Long userId,@Param("time") Long time);
}

4
src/main/java/com/ccsens/carbasics/service/AccountManageService.java

@ -83,7 +83,7 @@ public class AccountManageService implements IAccountManageService {
//创建项目
AccountManage accountManageInfo = accountManageDao.selectByPrimaryKey(param.getAccountManageId());
//查看是否有问卷调查
Long detailId = questionnaireDetailDao.queryByUserId(accountManageInfo.getSubmitterUserId());
Long detailId = questionnaireDetailDao.queryByUserId(accountManageInfo.getSubmitterUserId(),System.currentTimeMillis());
boolean flag = true;
//1.校验字段是否都填写
Integer num = questionnaireDetailDao.countCodeNumber(detailId);
@ -98,7 +98,7 @@ public class AccountManageService implements IAccountManageService {
}
}
//2.校验是否已经有提交
Long submitId = questionnaireDetailDao.queryIsSubmit(accountManage.getHospitalName());
Long submitId = questionnaireDetailDao.queryIsSubmit(accountManage.getHospitalName(),System.currentTimeMillis());
if (ObjectUtil.isNotNull(submitId)) {
flag = false;
}

107
src/main/java/com/ccsens/carbasics/service/FirstAidService.java

@ -493,65 +493,73 @@ public class FirstAidService implements IFirstAidService{
if (firstAidInfo == null || firstAidMember == null) {
throw new BaseException(DefaultCodeError.PARAM_ERROR);
}
if (0 != firstAidMember.getRecordUserId() && ObjectUtil.isNotNull(firstAidMember.getRecordUserId()) && firstAidInfo.getProjectId() != null && firstAidInfo.getProjectId() != 0) {
// if (0 != firstAidMember.getRecordUserId() && ObjectUtil.isNotNull(firstAidMember.getRecordUserId()) && firstAidInfo.getProjectId() != null && firstAidInfo.getProjectId() != 0) {
// throw new BaseException(DefaultCodeError.DOCTOR_HAS_JOINED);
// }
if (0 != firstAidMember.getRecordUserId() && ObjectUtil.isNotNull(firstAidMember.getRecordUserId())) {
throw new BaseException(DefaultCodeError.DOCTOR_HAS_JOINED);
}
//根据模板类型创建项目
CProjectVo.CopyProjectInfo copyProjectInfo = new CProjectVo.CopyProjectInfo();
//如果已有项目则不创建,使用旧项目
if (firstAidInfo.getType().equals(param.getType()) && 0 != firstAidInfo.getProjectId()) {
copyProjectInfo.setId(firstAidInfo.getProjectId());
}else {
CProjectDto.CopyProject copyProject = new CProjectDto.CopyProject();
String newProjectName = "";
long incr = redisUtil.incr("hospital_" + firstAidInfo.getHospitalId().toString(), 1L);
if (0 == param.getType()){
//TODO 设置项目id为神内模板 和 项目名字
newProjectName = incr+"-"+"急救(神内)-"+firstAidInfo.getName();
copyProject.setProjectName(newProjectName);
copyProject.setProjectId((Long) redisUtil.get(Constant.TEMPLATE_PROJECT_KEY_SHENNEI));
}else{
//TODO 设置项目id为神外模板 和 项目名字
newProjectName = incr+"-"+"急救(神外)-"+firstAidInfo.getName();
copyProject.setProjectName(newProjectName);
copyProject.setProjectId((Long) redisUtil.get(Constant.TEMPLATE_PROJECT_KEY_SHENWAI));
}
log.info("加入急救-开始创建项目{}",copyProject);
copyProjectInfo = projectService.copyProject(copyProject, userId);
log.info("加入急救-创建项目结束{}",copyProjectInfo);
}
//修改病例类型(神内/神外)
FirstAid firstAid = new FirstAid();
firstAid.setId(param.getFirstAidId());
firstAid.setType(param.getType());
firstAidDao.updateByPrimaryKeySelective(firstAid);
// //根据模板类型创建项目
// CProjectVo.CopyProjectInfo copyProjectInfo = new CProjectVo.CopyProjectInfo();
// //如果已有项目则不创建,使用旧项目
// if (firstAidInfo.getType().equals(param.getType()) && 0 != firstAidInfo.getProjectId()) {
// copyProjectInfo.setId(firstAidInfo.getProjectId());
// }else {
// CProjectDto.CopyProject copyProject = new CProjectDto.CopyProject();
// String newProjectName = "";
// long incr = redisUtil.incr("hospital_" + firstAidInfo.getHospitalId().toString(), 1L);
// if (0 == param.getType()){
// //TODO 设置项目id为神内模板 和 项目名字
// newProjectName = incr+"-"+"急救(神内)-"+firstAidInfo.getName();
// copyProject.setProjectName(newProjectName);
// copyProject.setProjectId((Long) redisUtil.get(Constant.TEMPLATE_PROJECT_KEY_SHENNEI));
// }else{
// //TODO 设置项目id为神外模板 和 项目名字
// newProjectName = incr+"-"+"急救(神外)-"+firstAidInfo.getName();
// copyProject.setProjectName(newProjectName);
// copyProject.setProjectId((Long) redisUtil.get(Constant.TEMPLATE_PROJECT_KEY_SHENWAI));
// }
// log.info("加入急救-开始创建项目{}",copyProject);
// copyProjectInfo = projectService.copyProject(copyProject, userId);
// log.info("加入急救-创建项目结束{}",copyProjectInfo);
// }
//将医生添加为项目成员
CProjectDto.MemberForProject memberForProject = new CProjectDto.MemberForProject();
List<CProjectDto.MemberInfo> memberInfoList = new ArrayList<>();
CProjectDto.MemberInfo memberInfo = new CProjectDto.MemberInfo();
memberInfo.setUserId(userId);
memberInfo.setMemberName(memberPosition.getName());
memberInfo.setPhone(memberPosition.getContact());
if (0 == param.getType()){
memberInfo.setRoleName(Constant.RoleName.SHEN_NEI);
}else{
memberInfo.setRoleName(Constant.RoleName.SHEN_WAI);
}
memberInfoList.add(memberInfo);
memberForProject.setProjectId(copyProjectInfo.getId());
memberForProject.setMemberInfoList(memberInfoList);
log.info("加入急救-开始添加成员{}",memberForProject);
projectService.addMemberForCopy(memberForProject,userId);
log.info("加入急救-添加成员结束");
// CProjectDto.MemberForProject memberForProject = new CProjectDto.MemberForProject();
// List<CProjectDto.MemberInfo> memberInfoList = new ArrayList<>();
// CProjectDto.MemberInfo memberInfo = new CProjectDto.MemberInfo();
// memberInfo.setUserId(userId);
// memberInfo.setMemberName(memberPosition.getName());
// memberInfo.setPhone(memberPosition.getContact());
// if (0 == param.getType()){
// memberInfo.setRoleName(Constant.RoleName.SHEN_NEI);
// }else{
// memberInfo.setRoleName(Constant.RoleName.SHEN_WAI);
// }
// memberInfoList.add(memberInfo);
// memberForProject.setProjectId(copyProjectInfo.getId());
// memberForProject.setMemberInfoList(memberInfoList);
// log.info("加入急救-开始添加成员{}",memberForProject);
// projectService.addMemberForCopy(memberForProject,userId);
// log.info("加入急救-添加成员结束");
//添加医生为病例的录入者 t_qcp_first_aid_member
firstAidMember.setRecordUserId(userId);
firstAidMemberDao.updateByPrimaryKeySelective(firstAidMember);
//急救信息和项目关联
FirstAid firstAid = new FirstAid();
firstAid.setId(param.getFirstAidId());
firstAid.setProjectId(copyProjectInfo.getId());
firstAid.setType(param.getType());
firstAidDao.updateByPrimaryKeySelective(firstAid);
// FirstAid firstAid = new FirstAid();
// firstAid.setId(param.getFirstAidId());
// firstAid.setProjectId(copyProjectInfo.getId());
// firstAid.setType(param.getType());
// firstAidDao.updateByPrimaryKeySelective(firstAid);
//添加急救日志(类型:加入)
FirstAidLog firstAidLog = new FirstAidLog();
@ -567,9 +575,8 @@ public class FirstAidService implements IFirstAidService{
}
firstAidLogDao.insertSelective(firstAidLog);
//返回项目id
FirstAidVo.ProjectInfo projectInfo = new FirstAidVo.ProjectInfo();
projectInfo.setProjectId(copyProjectInfo.getId());
return projectInfo;
// projectInfo.setProjectId(copyProjectInfo.getId());
return new FirstAidVo.ProjectInfo();
}

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

@ -115,11 +115,13 @@ public class QuestionnaireService implements IQuestionnaireService{
public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception {
//redis判断是否已有
Object o = redisUtil.get(param.getDetailId() + "" + userId);
log.info("redis保存问卷用户{},{}",param.getDetailId() + "" + userId,o);
if (ObjectUtil.isNull(o)) {
redisUtil.set(param.getDetailId() + "" + userId,userId);
//查询是否已经提交,已提交不能保存修改
QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId());
if (Constant.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) {
redisUtil.del(param.getDetailId() + "" + userId);
throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT);
}
Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode());
@ -192,13 +194,15 @@ public class QuestionnaireService implements IQuestionnaireService{
}
}
//2.校验是否已经有提交
Long submitId = questionnaireDetailDao.queryIsSubmit(param.getName());
Long currentTime = System.currentTimeMillis();
Long submitId = questionnaireDetailDao.queryIsSubmit(param.getName(),currentTime);
if (ObjectUtil.isNotNull(submitId)) {
return new QuestionnaireVo.SubmitInfo();
}
//查询用户是否此医院此角色此部门
Integer isExist = organizationDao.queryUserIsExist(param.getDepartmentName(),param.getPositionName(),param.getName(),userId);
if (0 < isExist) {
log.info("提交问卷已经是此医院此部门此职位:{}",userId);
//如果已是医院当前职位当前部门则直接修改为提交
if (ObjectUtil.isNull(submitId)) {
QuestionnaireDetail detail = new QuestionnaireDetail();
@ -562,7 +566,9 @@ public class QuestionnaireService implements IQuestionnaireService{
CMemberDto.SaveMember saveMember = new CMemberDto.SaveMember();
saveMember.setProjectId(project.getProjectId());
//查询角色code
saveMember.setRoleName(queryRole(positionId));
OrganizationPosition position = positionDao.selectByPrimaryKey(positionId);
String roleName = codeNameDao.queryRoleName(position.getCode(),departmentCode);
saveMember.setRoleName(roleName);
// saveMember.setRoleName(Constant.RoleName.SHEN_NEI);
saveMember.setName(memberName);
saveMember.setPhone(phone);

4
src/main/resources/application.yml

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

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

@ -111,7 +111,8 @@
(SELECT
qr.answer AS area,
qr2.answer AS `value`,
qr3.answer As hname
qr3.answer As hname,
qd.id
FROM
t_qcp_questionnaire_record AS qr
LEFT JOIN t_qcp_questionnaire_detail AS qd ON qr.questionnaire_detail_id = qd.id
@ -148,7 +149,8 @@
(SELECT
qr.answer AS area,
qr2.answer AS `value`,
qr3.answer As hname
qr3.answer As hname,
qd.id
FROM
t_qcp_questionnaire_record AS qr
LEFT JOIN t_qcp_questionnaire_detail AS qd ON qr.questionnaire_detail_id = qd.id
@ -180,7 +182,7 @@
AND qr4.answer = '二级'
</if>
) AS gediAis
WHERE gediRszs.hname = gediAis.hname
WHERE gediRszs.id = gediAis.id
</select>
<select id="queryJmrslForCity" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$AreaResult">
@ -658,7 +660,8 @@
hospital.answer AS hospital,
SUBSTRING_INDEX(area.answer,',',1) AS area,
LEFT(`level`.answer,1) AS level,
actual.answer AS `value40`
actual.answer AS `value40`,
qd.id
FROM
t_qcp_questionnaire_record AS actual
LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id
@ -700,7 +703,8 @@
hospital.answer AS hospital,
SUBSTRING_INDEX(area.answer,',',1) AS area,
LEFT(`level`.answer,1) AS level,
actual.answer AS `value60`
actual.answer AS `value60`,
qd.id
FROM
t_qcp_questionnaire_record AS actual
LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id
@ -735,14 +739,15 @@
-- 医院名
AND hospital.rec_status = 0
AND hospital.question_code = 'HOS-NAME'
) AS answer60 ON answer45.hospital = answer60.hospital
) AS answer60 ON answer45.id = answer60.id
LEFT JOIN
(
SELECT
hospital.answer AS hospital,
SUBSTRING_INDEX(area.answer,',',1) AS area,
LEFT(`level`.answer,1) AS level,
actual.answer AS `value61`
actual.answer AS `value61`,
qd.id
FROM
t_qcp_questionnaire_record AS actual
LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id
@ -777,7 +782,7 @@
-- 医院名
AND hospital.rec_status = 0
AND hospital.question_code = 'HOS-NAME'
) AS answer61 ON answer61.hospital = answer45.hospital
) AS answer61 ON answer61.id = answer45.id
ORDER BY (answer45.VALUE40+answer60.value60+answer61.value61) DESC
</select>
@ -825,7 +830,7 @@
a.area_name AS cityName,
</if>
answer1.level,
round(answer1.sich*100/answer2.actual,1) AS sichFsl
round(answer1.sich*100/answer2.actual+0.001,1) AS sichFsl
FROM
(
SELECT
@ -1062,7 +1067,7 @@
<select id="sichDataForHospital" resultType="com.ccsens.carbasics.bean.vo.StatisticsVo$SichData">
SELECT
answer1.`name` AS name,
IFNULL(round(answer1.sich*100/answer2.actual,1),0.0) AS sichFsl,
IFNULL(round(answer1.sich*100/answer2.actual+0.001,1),0.0) AS sichFsl,
answer1.sich AS sICHNnt
FROM
(
@ -1718,8 +1723,8 @@
SELECT
hospital.answer AS `name`,
LEFT(level.answer,1) AS level,
IFNULL(round((dpt59.answer+dpt89.answer)*100/(dpt59.answer+dpt89.answer+dpt91.answer),1),0.0) AS dpt89Ratio,
IFNULL(round(dpt59.answer*100/(dpt59.answer+dpt89.answer+dpt91.answer),1),0.0) AS dpt59Ratio,
IFNULL(round((dpt59.answer+dpt89.answer)*100/(dpt59.answer+dpt89.answer+dpt91.answer)+0.001,1),0.0) AS dpt89Ratio,
IFNULL(round(dpt59.answer*100/(dpt59.answer+dpt89.answer+dpt91.answer),1)+0.001,0.0) AS dpt59Ratio,
dpt59.answer AS dpt59Number,
dpt89.answer AS dpt89Number,
dpt91.answer AS dpt91Number

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

@ -7,7 +7,7 @@
<select id="querySelf" resultType="com.ccsens.carbasics.bean.vo.PatientVo$QueryPatientList">
select a.id as firstAidId, a.name, a.gender, a.age, a.data_status as dataStatus,
a.value_type as demonstrate, a.type as type, r1.answer as record1, r2.answer as record2,
a.value_type as demonstrate, a.type as caseType, r1.answer as record1, r2.answer as record2,
a.project_id as projectId, m.record_user_id as recordUserId, r3.answer as probableCase,
IF(r4.answer = '是',1,0) AS isJmrs,
IF(r5.answer = '是',1,0) AS isXgzl
@ -52,6 +52,7 @@
<if test="param.name != null and param.name != ''">
and a.name like concat('%', #{param.name}, '%')
</if>
AND a.type = #{param.caseType}
order by r2.answer IS NOT NULL,r2.answer DESC,a.created_at DESC
</select>

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

@ -27,6 +27,7 @@
q.write_start_time &lt; #{time}
AND q.write_end_time &gt; #{time}
AND q.type = #{type}
AND q.rec_status = 0
</select>
<select id="queryDetail" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$QuestionnaireInfo">
@ -95,11 +96,15 @@
FROM
t_qcp_questionnaire_detail AS qd
LEFT JOIN t_qcp_questionnaire_record AS qr ON qd.id = qr.questionnaire_detail_id
LEFT JOIN t_qcp_questionnaire AS q ON q.id = qd.questionnaire_id
WHERE
qr.answer = #{name}
AND qd.submit_status = 1
AND qd.rec_status = 0
AND qr.rec_status = 0
AND q.rec_status = 0
AND q.write_start_time &lt; #{time}
AND q.write_end_time &gt; #{time}
</select>
<select id="querySubmitter" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$QuestionnaireInfo">
@ -131,12 +136,16 @@
<select id="queryByUserId" resultType="java.lang.Long">
SELECT
id
qd.id
FROM
t_qcp_questionnaire_detail
t_qcp_questionnaire_detail AS qd
LEFT JOIN t_qcp_questionnaire AS q ON qd.questionnaire_id = q.id
WHERE
rec_status = 0
AND user_id = #{userId}
qd.rec_status = 0
AND q.rec_status = 0
AND qd.user_id = #{userId}
AND q.write_start_time &lt; #{time}
AND q.write_end_time &gt; #{time}
</select>
</mapper>

Loading…
Cancel
Save