瀏覽代碼

修改申诉新增已有bug

songxinlu 3 年之前
父節點
當前提交
810ce2e518

+ 1 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/AppealInfoMapper.java

@@ -21,4 +21,5 @@ public interface AppealInfoMapper extends BaseMapper<AppealInfo> {
     List<AppealExamineRecordDTO> getAppealExamineRecords(@Param("getAppealInfoVO") GetAppealInfoVO getAppealInfoVO);
 
     String getCasesName(@Param("id") Long id);
+    Long getCasesIdByName(@Param("name") String name);
 }

+ 10 - 0
dblayer-mbg/src/main/resources/mapperdb2/AppealInfoMapper.xml

@@ -72,6 +72,7 @@
             med_appeal_info mai
         LEFT JOIN med_appeal_examine_info mae ON mai.id = mae.appeal_info_id
         LEFT JOIN med_qcresult_detail mqd ON mai.qcresult_detail_id = mqd.id
+        LEFT JOIN qc_cases_entry qce ON mqd.cases_entry_id = qce.id AND qce.is_deleted = "N"
         LEFT JOIN sys_user u ON mai.claimant_id = u.id
         LEFT JOIN sys_user u2 ON mai.check_id = u2.id
         WHERE
@@ -95,4 +96,13 @@
         ORDER BY
         mai.gmt_create
     </select>
+    <select id="getCasesIdByName" resultType="java.lang.Long">
+        SELECT
+            `id`
+        FROM
+            qc_cases
+        WHERE
+            name = #{name}
+        AND is_deleted = 'N'
+    </select>
 </mapper>

+ 54 - 12
report-service/src/main/java/com/lantone/report/facade/MedAppealInfoManagementFacade.java

@@ -60,7 +60,7 @@ public class MedAppealInfoManagementFacade {
 
     public Boolean addAppealInfo(AddAppealInfoVO addAppealInfoVO) {
 
-        if(addAppealInfoVO.getCasesId()!=null){
+        if (addAppealInfoVO.getCasesId() != null) {
             //获取模块名称
             String casesName = appealInfoFacade.getBaseMapper().getCasesName(addAppealInfoVO.getCasesId());
             addAppealInfoVO.setCasesName(casesName);
@@ -73,8 +73,7 @@ public class MedAppealInfoManagementFacade {
                 //获取该病历缺陷申诉记录(医院id+病历id+质控缺陷id+未删除)
                 AppealInfo appealInfo = getAppealInfo(addAppealInfoVO.getHospitalId()
                         , addAppealInfoVO.getBehospitalCode()
-                        , addAppealInfoVO.getQcresultDetailId()
-                        , addAppealInfoVO.getClaimantId());
+                        , addAppealInfoVO.getQcresultDetailId());
                 //缺陷状态-删除
                 if (IsDeleteEnum.Y.getKey().equals(qcresultDetail.getIsDeleted())) {
                     Asserts.fail2("该缺陷已被删除,请走恢复流程");
@@ -85,7 +84,7 @@ public class MedAppealInfoManagementFacade {
                     return addAppealInfoAndExamineInfo(addAppealInfoVO);
                 }
                 //获取申诉记录当前节点状态(1:申诉|2:撤销|3:科室审核)
-                if (WorkFlowNodeEnum.APPEAL.getKey().equals(appealInfo.getWorkFlowNodeId()+ "")) {
+                if (WorkFlowNodeEnum.APPEAL.getKey().equals(appealInfo.getWorkFlowNodeId() + "")) {
                     Asserts.fail2("该缺陷已被申诉");
                 } else {
                     //删除申诉记录
@@ -101,16 +100,37 @@ public class MedAppealInfoManagementFacade {
                         .eq("hospital_id", addAppealInfoVO.getHospitalId())
                         .eq("behospital_code", addAppealInfoVO.getBehospitalCode())
                         .eq("cases_entry_id", addAppealInfoVO.getCasesEntryId()));
-                if(StringUtil.isNotBlank(addAppealInfoVO.getCasesEntryMsg())){
+                if (StringUtil.isNotBlank(addAppealInfoVO.getCasesEntryMsg())) {
                     addAppealInfoVO.setQcresultDetailMsg(addAppealInfoVO.getCasesEntryMsg());
                 }
                 if (ListUtil.isNotEmpty(qcresultDetails)) {
                     Asserts.fail2("该缺陷已存在无需申诉新增");
                 }
+                //获取申诉新增已有待审核的申诉记录
+                AppealInfo oldAppealInfo = getAppealInfo(addAppealInfoVO);
+                if (oldAppealInfo != null) {
+                    //如果最新的一条是已审核
+                    if(WorkFlowNodeEnum.DEPT_CHECK.getKey().equals(oldAppealInfo.getWorkFlowNodeId() + "")){
+                        //删除改新增已有(已审核)申诉记录
+                        appealInfoFacade.update(new UpdateWrapper<AppealInfo>().set("is_deleted", IsDeleteEnum.Y.getKey())
+                                .eq("id", oldAppealInfo.getId()));
+                    }else if (WorkFlowNodeEnum.APPEAL.getKey().equals(oldAppealInfo.getWorkFlowNodeId() + "")) {
+                        Asserts.fail2("该缺陷已被申诉无需再次恢复");
+                    }
+
+                }
                 //新增申诉记录+审核记录
                 return addAppealInfoAndExamineInfo(addAppealInfoVO);
             //新增缺失
             case "2":
+                //补全缺失模块信息
+                if (StringUtil.isNotBlank(addAppealInfoVO.getCasesName())) {
+                    //获取模块名称
+                    Long casesId = appealInfoFacade.getBaseMapper().getCasesIdByName(addAppealInfoVO.getCasesName());
+                    if (casesId != null) {
+                        addAppealInfoVO.setCasesId(casesId);
+                    }
+                }
                 //新增申诉记录+审核记录
                 return addAppealInfoAndExamineInfo(addAppealInfoVO);
             //恢复
@@ -120,8 +140,7 @@ public class MedAppealInfoManagementFacade {
                 //获取该病历缺陷申诉记录(医院id+病历id+质控缺陷id+未删除)
                 AppealInfo appealInfo1 = getAppealInfo(addAppealInfoVO.getHospitalId()
                         , addAppealInfoVO.getBehospitalCode()
-                        , addAppealInfoVO.getQcresultDetailId()
-                        , addAppealInfoVO.getClaimantId());
+                        , addAppealInfoVO.getQcresultDetailId());
                 //缺陷状态-删除
                 if (qcresultDetail1.getIsDeleted().equals(IsDeleteEnum.N.getKey())) {
                     Asserts.fail2("缺陷已被恢复无需再次恢复");
@@ -147,6 +166,30 @@ public class MedAppealInfoManagementFacade {
         return false;
     }
 
+    private AppealInfo getAppealInfo(AddAppealInfoVO addAppealInfoVO) {
+        if (addAppealInfoVO.getCasesEntryId() == null) {
+            Asserts.fail2("新增已有条目casesEntryId不能为空");
+        }
+        if (addAppealInfoVO.getIsReject() == null) {
+            Asserts.fail2("新增已有条目isReject不能为空");
+        }
+        if (addAppealInfoVO.getCasesScore() == null) {
+            Asserts.fail2("新增已有条目casesScore不能为空");
+        }
+        List<AppealInfo> appealInfos = appealInfoFacade.list(new QueryWrapper<AppealInfo>()
+                .eq("hospital_id", addAppealInfoVO.getHospitalId())
+                .eq("behospital_code", addAppealInfoVO.getBehospitalCode())
+                .eq("cases_entry_id", addAppealInfoVO.getCasesEntryId())
+                .eq("cases_score", addAppealInfoVO.getCasesScore())
+                .eq("is_reject", addAppealInfoVO.getIsReject())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .orderByDesc("gmt_create"));
+        if (ListUtil.isNotEmpty(appealInfos)) {
+            return appealInfos.get(0);
+        }
+        return null;
+    }
+
     private Boolean addAppealInfoAndExamineInfo(AddAppealInfoVO addAppealInfoVO) {
         AppealInfo appealInfo = new AppealInfo();
         BeanUtils.copyProperties(addAppealInfoVO, appealInfo);
@@ -169,7 +212,7 @@ public class MedAppealInfoManagementFacade {
      * @Description获取该病历缺陷申诉记录
      * @Return com.lantone.dblayermbg.entity.appeal.AppealInfo
      */
-    private AppealInfo getAppealInfo(Long hospitalId, String behospitalCode, Long qcresultDetailId ,String claimantId) {
+    private AppealInfo getAppealInfo(Long hospitalId, String behospitalCode, Long qcresultDetailId) {
 
         if (qcresultDetailId == null) {
             Asserts.fail2("质控缺陷id为空");
@@ -178,7 +221,6 @@ public class MedAppealInfoManagementFacade {
                 .eq("hospital_id", hospitalId)
                 .eq("behospital_code", behospitalCode)
                 .eq("qcresult_detail_id", qcresultDetailId)
-                .eq("claimant_id", claimantId)
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .orderByDesc("gmt_create"));
         if (ListUtil.isNotEmpty(appealInfos)) {
@@ -325,12 +367,12 @@ public class MedAppealInfoManagementFacade {
 
     public GetAppealInfoDTO getAppealInfo(GetAppealInfoVO getAppealInfoVO) {
         //1.获取病历基本信息和病历内容
-        GetAppealInfoDTO getAppealInfoDTO =  appealInfoFacade.getBaseMapper().getAppealInfo(getAppealInfoVO);
+        GetAppealInfoDTO getAppealInfoDTO = appealInfoFacade.getBaseMapper().getAppealInfo(getAppealInfoVO);
         //2.获取该条申诉记录详情
         AppealInfo appealInfo = appealInfoFacade.getById(getAppealInfoVO.getId());
-        if(appealInfo!=null){
+        if (appealInfo != null) {
             //如果是新增缺失,获取申诉说明(通过申诉说明区别该病历新增的新增缺失)
-            if(AppealOperationTypeEnum.ADD_NO_EXIST.getKey().equals(appealInfo.getAppealOperationType())){
+            if (AppealOperationTypeEnum.ADD_NO_EXIST.getKey().equals(appealInfo.getAppealOperationType())) {
                 getAppealInfoVO.setAppealExplain(appealInfo.getAppealExplain());
             }
         }