diff --git a/src/main/java/com/ccsens/carbasics/service/FirstAidRecordService.java b/src/main/java/com/ccsens/carbasics/service/FirstAidRecordService.java index 50de7d6..50231bb 100644 --- a/src/main/java/com/ccsens/carbasics/service/FirstAidRecordService.java +++ b/src/main/java/com/ccsens/carbasics/service/FirstAidRecordService.java @@ -9,6 +9,7 @@ import com.ccsens.carbasics.bean.po.*; import com.ccsens.carbasics.bean.vo.PatientVo; import com.ccsens.carbasics.persist.dao.CodeParentDao; import com.ccsens.carbasics.persist.dao.FirstAidDao; +import com.ccsens.carbasics.persist.dao.FirstAidLogDao; import com.ccsens.carbasics.persist.dao.PatientDao; import com.ccsens.carbasics.persist.mapper.CodeDictionariesMapper; import com.ccsens.carbasics.persist.mapper.FirstAidRecordLogMapper; @@ -49,6 +50,8 @@ public class FirstAidRecordService implements IFirstAidRecordService { private CodeParentDao codeParentDao; @Resource private FirstAidDao firstAidDao; + @Resource + private FirstAidLogDao firstAidLogDao; @Override @@ -98,37 +101,8 @@ public class FirstAidRecordService implements IFirstAidRecordService { } FirstAid firstAid = firstAids.get(0); - - if (firstAid.getDataStatus() == Constant.DataStatus.Create.status || firstAid.getDataStatus() == Constant.DataStatus.FirstAidRefuse.status) { - // 创建/急救拒绝 不校验,允许修改 - log.info("允许修改:{}", firstAid.getDataStatus()); - } else if (firstAid.getDataStatus() == Constant.DataStatus.FirstAidPass.status) { - // 急救审核通过,急救不能修改 - List children = codeParentDao.queryChildren(Constant.QuestionCode.FIRST_AID); - param.getCodeAndAnswerList().forEach(codeAndAnswer -> { - if (children.contains(codeAndAnswer.getQuestionCode())) { - log.info("{}是急救的code,不能修改", codeAndAnswer.getQuestionCode() ); - throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); - } - }); - } else if (firstAid.getDataStatus() == Constant.DataStatus.DischargeRefuse.status) { - // 出院审核拒绝,只允许修改出院信息 - List children = codeParentDao.queryChildren(Constant.QuestionCode.DISCHARGE); - param.getCodeAndAnswerList().forEach(codeAndAnswer -> { - if (!children.contains(codeAndAnswer.getQuestionCode())) { - log.info("{}不是出院的code,不能修改", codeAndAnswer.getQuestionCode() ); - throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); - } - }); - } else if (firstAid.getDataStatus() == Constant.DataStatus.ApplyFor.status ){ - // 申请修改/修改拒绝 - } else { - // 出院通过 - throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); - } - - - + // 判断权限状态 + aidStatus(param, firstAid); //遍历传入的code param.getCodeAndAnswerList().forEach(codeAndAnswer -> { if(StrUtil.isNotEmpty(codeAndAnswer.getQuestionCode())) { @@ -146,7 +120,7 @@ public class FirstAidRecordService implements IFirstAidRecordService { if(CollectionUtil.isNotEmpty(codeAndAnswer.getAnswer())){ //循环答案 codeAndAnswer.getAnswer().forEach(answer -> { - saveRecord(param.getUserType(), userId, firstAid.getId(), codeAndAnswer.getQuestionCode(), answer,param.getProjectId()); + saveRecord(param.getUserType(), userId, firstAid.getId(), codeAndAnswer.getQuestionCode(), StrUtil.isBlank(answer) ? "" : answer,param.getProjectId()); }); }else { saveRecord(param.getUserType(), userId, firstAid.getId(), codeAndAnswer.getQuestionCode(), "",param.getProjectId()); @@ -156,6 +130,52 @@ public class FirstAidRecordService implements IFirstAidRecordService { } + private void aidStatus(PatientDto.SaveAidRecordN param, FirstAid firstAid) { + if (firstAid.getDataStatus() == Constant.DataStatus.Create.status || firstAid.getDataStatus() == Constant.DataStatus.FirstAidRefuse.status) { + // 创建/急救拒绝 不校验,允许修改 + log.info("允许修改:{}", firstAid.getDataStatus()); + } else if (firstAid.getDataStatus() == Constant.DataStatus.FirstAidPass.status) { + // 急救审核通过,急救不能修改 + List children = codeParentDao.queryChildren(Constant.QuestionCode.FIRST_AID); + param.getCodeAndAnswerList().forEach(codeAndAnswer -> { + if (children.contains(codeAndAnswer.getQuestionCode())) { + log.info("{}是急救的code,不能修改", codeAndAnswer.getQuestionCode() ); + throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); + } + }); + } else if (firstAid.getDataStatus() == Constant.DataStatus.DischargeRefuse.status) { + // 出院审核拒绝,只允许修改出院信息 + pageChildCode(param); + } else if (firstAid.getDataStatus() == Constant.DataStatus.ApplyFor.status + || firstAid.getDataStatus() == Constant.DataStatus.ApplyForRefuse.status){ + // 申请修改/修改拒绝 + // 出院是否审核通过过 + FirstAidLogExample logExample = new FirstAidLogExample(); + logExample.createCriteria().andFirstAidIdEqualTo(firstAid.getId()) + .andOperationTypeEqualTo(Constant.DataStatus.DischargePass.status); + long l = firstAidLogDao.countByExample(logExample); + if (l > 0) { + // 有,则都不修改 + throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); + } else { + pageChildCode(param); + } + } else { + // 出院通过 + throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); + } + } + + private void pageChildCode(PatientDto.SaveAidRecordN param) { + List children = codeParentDao.queryChildren(Constant.QuestionCode.DISCHARGE); + param.getCodeAndAnswerList().forEach(codeAndAnswer -> { + if (!children.contains(codeAndAnswer.getQuestionCode())) { + log.info("{}不是出院的code,不能修改", codeAndAnswer.getQuestionCode() ); + throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE); + } + }); + } + private void saveRecord(byte userType, Long userId, Long firstAidId, String code, String answer,Long projectId) { //添加日志表,不管数据是否重复 FirstAidRecordLog firstAidRecordLog = new FirstAidRecordLog(); diff --git a/src/main/java/com/ccsens/carbasics/service/FirstAidService.java b/src/main/java/com/ccsens/carbasics/service/FirstAidService.java index 9a687a4..870e291 100644 --- a/src/main/java/com/ccsens/carbasics/service/FirstAidService.java +++ b/src/main/java/com/ccsens/carbasics/service/FirstAidService.java @@ -383,13 +383,12 @@ public class FirstAidService implements IFirstAidService{ //判断病例是否已有医生加入 FirstAidMember firstAidMember = firstAidMemberDao.findByAidId(param.getFirstAidId()); - if (0 != firstAidMember.getRecordUserId() && ObjectUtil.isNotNull(firstAidMember.getRecordUserId())) { + FirstAid firstAidInfo = firstAidDao.selectByPrimaryKey(param.getFirstAidId()); + if (0 != firstAidMember.getRecordUserId() && ObjectUtil.isNotNull(firstAidMember.getRecordUserId()) && firstAidInfo.getProjectId() != null && firstAidInfo.getProjectId() != 0) { throw new BaseException(DefaultCodeError.DOCTOR_HAS_JOINED); } //根据模板类型创建项目 - - FirstAid firstAidInfo = firstAidDao.selectByPrimaryKey(param.getFirstAidId()); CProjectVo.CopyProjectInfo copyProjectInfo = new CProjectVo.CopyProjectInfo(); //如果已有项目则不创建,使用旧项目 if (firstAidInfo.getType().equals(param.getType()) && 0 != firstAidInfo.getProjectId()) { diff --git a/src/main/java/com/ccsens/carbasics/util/Constant.java b/src/main/java/com/ccsens/carbasics/util/Constant.java index cf56022..94e515e 100644 --- a/src/main/java/com/ccsens/carbasics/util/Constant.java +++ b/src/main/java/com/ccsens/carbasics/util/Constant.java @@ -59,7 +59,7 @@ public class Constant { /**穿刺完成时间*/ public final static String TIME_CODE = "JRZL-CCSJ"; } - /**跑道图-机械再通例数*/ + /**跑道图-脑出血例数*/ public final static class Ich { public final static String NAME = "脑出血例数"; /**CT诊断结果*/ diff --git a/src/main/resources/mapper_dao/FirstAidDao.xml b/src/main/resources/mapper_dao/FirstAidDao.xml index 1992f4b..e88d8ef 100644 --- a/src/main/resources/mapper_dao/FirstAidDao.xml +++ b/src/main/resources/mapper_dao/FirstAidDao.xml @@ -16,31 +16,31 @@ left join t_qcp_first_aid_record r1 on a.id = r1.first_aid_id and r1.rec_status = 0 and r1.question_code='JBXX-FBSJ' - and r1.question_code='CYQK-CYSJ' + and r1.question_code='CYQK-LYFS' left join t_qcp_first_aid_record r2 on a.id = r2.first_aid_id and r2.rec_status = 0 and r2.question_code='JBXX-DYSJ' - and r2.question_code='CYQK-LYFS' + and r2.question_code='CYQK-CYSJ' left join t_qcp_first_aid_record r3 on a.id = r3.first_aid_id and r3.question_code='CJBL-YSBL' and r3.rec_status = 0 where - - r.id is null - r.id is not null - r.id is null - - - and a.name like concat('%', #{param.name}, '%') - - and m.create_user_id = #{userId} + m.create_user_id = #{userId} - and m.record_user_id in (#{userId}, 0) + m.record_user_id in (#{userId}, 0) + + and (r.id is null or r.answer = '') + and (r.id is not null and r.answer != '') + and (r.id is null or r.answer = '') + + + and a.name like concat('%', #{param.name}, '%') + order by a.updated_at desc diff --git a/src/main/resources/mapper_dao/FirstAidRecordDao.xml b/src/main/resources/mapper_dao/FirstAidRecordDao.xml index 52165bf..fbf0f35 100644 --- a/src/main/resources/mapper_dao/FirstAidRecordDao.xml +++ b/src/main/resources/mapper_dao/FirstAidRecordDao.xml @@ -6,7 +6,7 @@