diff --git a/src/main/java/com/ccsens/carbasics/bean/dto/PatientDto.java b/src/main/java/com/ccsens/carbasics/bean/dto/PatientDto.java index 1c06304..d133667 100644 --- a/src/main/java/com/ccsens/carbasics/bean/dto/PatientDto.java +++ b/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) diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/PatientVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/PatientVo.java index 9984af4..e7532ac 100644 --- a/src/main/java/com/ccsens/carbasics/bean/vo/PatientVo.java +++ b/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("急救:发病时间 转归:出院时间") diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java index 23b78b0..71bab98 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDetailDao.java +++ b/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); } diff --git a/src/main/java/com/ccsens/carbasics/service/AccountManageService.java b/src/main/java/com/ccsens/carbasics/service/AccountManageService.java index d09b2ff..e3c41c6 100644 --- a/src/main/java/com/ccsens/carbasics/service/AccountManageService.java +++ b/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; } diff --git a/src/main/java/com/ccsens/carbasics/service/FirstAidService.java b/src/main/java/com/ccsens/carbasics/service/FirstAidService.java index 703f422..63f129e 100644 --- a/src/main/java/com/ccsens/carbasics/service/FirstAidService.java +++ b/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 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 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(); } diff --git a/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java b/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java index be9cdd9..50f17c8 100644 --- a/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java +++ b/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); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c3b11fb..5abf242 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: test - include: common, util-test + active: prod + include: common, util-prod diff --git a/src/main/resources/mapper_dao/DataStatisticsDao.xml b/src/main/resources/mapper_dao/DataStatisticsDao.xml index 0014996..bd82603 100644 --- a/src/main/resources/mapper_dao/DataStatisticsDao.xml +++ b/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 = '二级' ) AS gediAis - WHERE gediRszs.hname = gediAis.hname + WHERE gediRszs.id = gediAis.id @@ -825,7 +830,7 @@ a.area_name AS cityName, 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 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 @@ and a.name like concat('%', #{param.name}, '%') + AND a.type = #{param.caseType} order by r2.answer IS NOT NULL,r2.answer DESC,a.created_at DESC diff --git a/src/main/resources/mapper_dao/QuestionnaireDetailDao.xml b/src/main/resources/mapper_dao/QuestionnaireDetailDao.xml index 43f8623..3f83fa7 100644 --- a/src/main/resources/mapper_dao/QuestionnaireDetailDao.xml +++ b/src/main/resources/mapper_dao/QuestionnaireDetailDao.xml @@ -27,6 +27,7 @@ q.write_start_time < #{time} AND q.write_end_time > #{time} AND q.type = #{type} + AND q.rec_status = 0 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 < #{time} + AND q.write_end_time > #{time}