Quellcode durchsuchen

申诉驳回v2.2.0申诉相关功能提交

songxinlu vor 3 Jahren
Ursprung
Commit
c6c525dbd5
43 geänderte Dateien mit 1419 neuen und 8 gelöschten Zeilen
  1. 22 0
      common/src/main/java/com/lantone/common/dto/appeal/GetReviewerDTO.java
  2. 35 0
      common/src/main/java/com/lantone/common/exception/ApiException2.java
  3. 3 0
      common/src/main/java/com/lantone/common/exception/Asserts.java
  4. 7 0
      common/src/main/java/com/lantone/common/exception/GlobalExceptionHandler.java
  5. 82 0
      common/src/main/java/com/lantone/common/vo/appeal/AddAppealInfoVO.java
  6. 19 0
      common/src/main/java/com/lantone/common/vo/appeal/GetReviewerVO.java
  7. 9 3
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/AppealExamineInfo.java
  8. 32 2
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/AppealInfo.java
  9. 234 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/BehospitalInfo.java
  10. 144 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/QcresultDetail.java
  11. 95 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/SysUser.java
  12. 77 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/SysUserRole.java
  13. 14 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/BehospitalInfoFacade2.java
  14. 14 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/QcresultDetailFacade2.java
  15. 14 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/SysUserFacade2.java
  16. 14 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/SysUserRoleFacade2.java
  17. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/BehospitalInfoMapper2.java
  18. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/QcresultDetailMapper2.java
  19. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/SysUserMapper2.java
  20. 19 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/SysUserRoleMapper2.java
  21. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/BehospitalInfoService.java
  22. 14 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/QcresultDetailService.java
  23. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/SysUserRoleService.java
  24. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/SysUserService.java
  25. 17 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/BehospitalInfoServiceImpl2.java
  26. 18 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/QcresultDetailServiceImpl2.java
  27. 17 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/SysUserRoleServiceImpl2.java
  28. 17 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/SysUserServiceImpl2.java
  29. 1 1
      dblayer-mbg/src/main/resources/application-debug.yml
  30. 5 0
      dblayer-mbg/src/main/resources/mapperdb2/BehospitalInfoMapper.xml
  31. 5 0
      dblayer-mbg/src/main/resources/mapperdb2/QcresultDetailMapper.xml
  32. 5 0
      dblayer-mbg/src/main/resources/mapperdb2/SysUserMapper.xml
  33. 21 0
      dblayer-mbg/src/main/resources/mapperdb2/SysUserRoleMapper.xml
  34. 2 1
      dblayer-mbg/src/main/resources/mapperdb2/base/BaseAppealExamineInfoMapper.xml
  35. 5 0
      dblayer-mbg/src/main/resources/mapperdb2/base/BaseAppealInfoMapper.xml
  36. 44 0
      dblayer-mbg/src/main/resources/mapperdb2/base/BaseBehospitalInfoMapper.xml
  37. 29 0
      dblayer-mbg/src/main/resources/mapperdb2/base/BaseQcresultDetailMapper.xml
  38. 21 0
      dblayer-mbg/src/main/resources/mapperdb2/base/BaseSysUserMapper.xml
  39. 18 0
      dblayer-mbg/src/main/resources/mapperdb2/base/BaseSysUserRoleMapper.xml
  40. 3 1
      gateway-service/src/main/resources/bootstrap.yml
  41. 43 0
      report-service/src/main/java/com/lantone/report/enums/WorkFlowNodeEnum.java
  42. 199 0
      report-service/src/main/java/com/lantone/report/facade/MedAppealInfoManagementFacade.java
  43. 23 0
      report-service/src/main/java/com/lantone/report/web/MedAppealInfoManagementController.java

+ 22 - 0
common/src/main/java/com/lantone/common/dto/appeal/GetReviewerDTO.java

@@ -0,0 +1,22 @@
+package com.lantone.common.dto.appeal;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 审核人对象
+ * @Author songxl
+ */
+@Data
+public class GetReviewerDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "审核人ID")
+    private Long id;
+
+    @ApiModelProperty(value = "审核人姓名")
+    private String userName;
+
+}

+ 35 - 0
common/src/main/java/com/lantone/common/exception/ApiException2.java

@@ -0,0 +1,35 @@
+package com.lantone.common.exception;
+
+import com.lantone.common.api.IErrorCode;
+
+/**
+ * @Description: 自定义API异常(返回2.0结果用的)
+ * @author: rengb
+ * @time: 2021/1/5 18:27
+ */
+public class ApiException2 extends RuntimeException {
+
+    private IErrorCode errorCode;
+
+    public ApiException2(IErrorCode errorCode) {
+        super(errorCode.getMessage());
+        this.errorCode = errorCode;
+    }
+
+    public ApiException2(String message) {
+        super(message);
+    }
+
+    public ApiException2(Throwable cause) {
+        super(cause);
+    }
+
+    public ApiException2(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public IErrorCode getErrorCode() {
+        return errorCode;
+    }
+
+}

+ 3 - 0
common/src/main/java/com/lantone/common/exception/Asserts.java

@@ -12,6 +12,9 @@ public class Asserts {
     public static void fail(String message) {
         throw new ApiException(message);
     }
+    public static void fail2(String message) {
+        throw new ApiException2(message);
+    }
 
     public static void fail(IErrorCode errorCode) {
         throw new ApiException(errorCode);

+ 7 - 0
common/src/main/java/com/lantone/common/exception/GlobalExceptionHandler.java

@@ -1,6 +1,7 @@
 package com.lantone.common.exception;
 
 import com.lantone.common.api.CommonResult;
+import com.lantone.common.dto.RespDTO;
 import org.springframework.validation.BindException;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
@@ -26,6 +27,12 @@ public class GlobalExceptionHandler {
         return CommonResult.failed(e.getMessage());
     }
 
+    @ResponseBody
+    @ExceptionHandler(value = ApiException2.class)
+    public RespDTO handle2(ApiException2 e) {
+        return RespDTO.onError(e.getMessage());
+    }
+
     @ResponseBody
     @ExceptionHandler(value = MethodArgumentNotValidException.class)
     public CommonResult handleValidException(MethodArgumentNotValidException e) {

+ 82 - 0
common/src/main/java/com/lantone/common/vo/appeal/AddAppealInfoVO.java

@@ -0,0 +1,82 @@
+package com.lantone.common.vo.appeal;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @Author songxl
+ * @Date 2022/1/6
+ */
+@Data
+public class AddAppealInfoVO {
+
+    @ApiModelProperty(value = "医院ID", hidden = true)
+    private Long hospitalId;
+
+    @ApiModelProperty(value = "病人住院ID", required = true)
+    @NotBlank(message = "病人住院ID不能为空")
+    private String behospitalCode;
+
+    @ApiModelProperty(value = "质控缺陷id")
+    private Long qcresultDetailId;
+
+    @ApiModelProperty(value = "缺陷详情")
+    private String qcresultDetailMsg;
+
+    @ApiModelProperty(value = "缺陷扣分分值")
+    private Long qcresultDetaiValue;
+
+    @ApiModelProperty(value = "条目ID")
+    private Long casesEntryId;
+
+    @ApiModelProperty(value = "质控条目(新增已有操作才有值)")
+    private String casesEntryName;
+
+    @ApiModelProperty(value = "提示信息(新增已有操作才有值)")
+    private String casesEntryMsg;
+
+    @ApiModelProperty(value = "分值(新增已有操作才有值)")
+    private Long value;
+
+    @ApiModelProperty(value = "申诉模块id", required = true)
+    @NotNull(message = "申诉模块id不能为空")
+    private Long modeId;
+
+    @ApiModelProperty(value = "模块名称", required = true)
+    @NotBlank(message = "模块名称不能为空")
+    private String modeName;
+
+
+    @ApiModelProperty(value = "病历内容")
+    private String defectContent;
+
+    @ApiModelProperty(value = "申诉人id", hidden = true)
+    private Long claimantId;
+
+    @ApiModelProperty(value = "申诉类型(0:医生申诉|1:质控申诉)", required = true)
+    @NotBlank(message = "申诉类型不能为空")
+    private String appealType;
+
+    @ApiModelProperty(value = "申诉操作类型(0:删改|1:新增已有|2:新增缺失|3:恢复)", required = true)
+    @NotBlank(message = "申诉操作类型不能为空")
+    private String appealOperationType;
+
+    @ApiModelProperty(value = "申诉说明", required = true)
+    @NotBlank(message = "申诉说明不能为空")
+    private String appealExplain;
+
+    @ApiModelProperty(value = "审核人id", required = true)
+    @NotNull(message = "审核人id不能为空")
+    private Long checkId;
+
+    @ApiModelProperty(value = "当前工作流节点id", required = true)
+    @NotNull(message = "当前工作流节点id不能为空")
+    private Long workFlowNodeId;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+}

+ 19 - 0
common/src/main/java/com/lantone/common/vo/appeal/GetReviewerVO.java

@@ -0,0 +1,19 @@
+package com.lantone.common.vo.appeal;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author songxl
+ * @Date 2022/1/6
+ */
+@Data
+public class GetReviewerVO {
+    @ApiModelProperty(value = "申诉人id", hidden = true)
+    private Long claimantId;
+    @ApiModelProperty(value = "是否包含自身开关", hidden = true)
+    private Boolean selfFlag = false;
+    @ApiModelProperty(value = "审核角色id", hidden = true)
+    private String roleID = "10";
+}

+ 9 - 3
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/AppealExamineInfo.java

@@ -53,10 +53,16 @@ public class AppealExamineInfo implements Serializable {
     private String exampleOperation;
 
     /**
-     * 审核建议
+     * 处理结果
      */
-    @TableField("example_advise")
-    private String exampleAdvise;
+    @TableField("process_result")
+    private String processResult;
+
+    /**
+     * 驳回理由
+     */
+    @TableField("reject_reason")
+    private String rejectReason;
 
     /**
      * 是否删除,N:未删除,Y:删除

+ 32 - 2
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/AppealInfo.java

@@ -47,11 +47,41 @@ public class AppealInfo implements Serializable {
     private Long qcresultDetailId;
 
     /**
-     * 质控缺陷内容
+     * 缺陷详情
      */
     @TableField("qcresult_detail_msg")
     private String qcresultDetailMsg;
 
+    /**
+     * 缺陷扣分分值
+     */
+    @TableField("qcresult_detai_value")
+    private Long qcresultDetaiValue;
+
+    /**
+     * 条目ID
+     */
+    @TableField("cases_entry_id")
+    private Long casesEntryId;
+
+    /**
+     * 质控条目(新增已有操作才有值)
+     */
+    @TableField("cases_entry_name")
+    private String casesEntryName;
+
+    /**
+     * 提示信息(新增已有操作才有值)
+     */
+    @TableField("cases_entry_msg")
+    private String casesEntryMsg;
+
+    /**
+     * 分值(新增已有操作才有值)
+     */
+    @TableField("value")
+    private Long value;
+
     /**
      * 申诉模块id
      */
@@ -65,7 +95,7 @@ public class AppealInfo implements Serializable {
     private String modeName;
 
     /**
-     * 缺陷内容
+     * 病历内容
      */
     @TableField("defect_content")
     private String defectContent;

+ 234 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/BehospitalInfo.java

@@ -0,0 +1,234 @@
+package com.lantone.dblayermbg.entity.appeal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 住院病历信息 实体类
+ * </p>
+ */
+@Data
+@TableName("med_behospital_info")
+public class BehospitalInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病人住院ID
+     */
+    @TableId("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 性别(男,女)
+     */
+    @TableField("sex")
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    @TableField("birthday")
+    private Date birthday;
+
+    /**
+     * 档案号
+     */
+    @TableField("file_code")
+    private String fileCode;
+
+    /**
+     * 质控类型
+     */
+    @TableField("qc_type_id")
+    private Long qcTypeId;
+
+    /**
+     * 病区编码
+     */
+    @TableField("ward_code")
+    private String wardCode;
+
+    /**
+     * 病区名称
+     */
+    @TableField("ward_name")
+    private String wardName;
+
+    /**
+     * 住院科室ID
+     */
+    @TableField("beh_dept_id")
+    private String behDeptId;
+
+    /**
+     * 住院科室名称
+     */
+    @TableField("beh_dept_name")
+    private String behDeptName;
+
+    /**
+     * 床位号
+     */
+    @TableField("bed_code")
+    private String bedCode;
+
+    /**
+     * 床位名称
+     */
+    @TableField("bed_name")
+    private String bedName;
+
+    /**
+     * 医保类别
+     */
+    @TableField("insurance_name")
+    private String insuranceName;
+
+    /**
+     * 职业
+     */
+    @TableField("job_type")
+    private String jobType;
+
+    /**
+     * 入院时间
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
+    /**
+     * 出院时间
+     */
+    @TableField("leave_hospital_date")
+    private Date leaveHospitalDate;
+
+    /**
+     * 转入时间
+     */
+    @TableField("trans_in_time")
+    private Date transInTime;
+
+    /**
+     * 转出时间
+     */
+    @TableField("trans_out_time")
+    private Date transOutTime;
+
+    /**
+     * 疾病ICD编码
+     */
+    @TableField("diagnose_icd")
+    private String diagnoseIcd;
+
+    /**
+     * 疾病名称
+     */
+    @TableField("diagnose")
+    private String diagnose;
+
+    /**
+     * 主治医生ID
+     */
+    @TableField("doctor_id")
+    private String doctorId;
+
+    /**
+     * 主治医生姓名
+     */
+    @TableField("doctor_name")
+    private String doctorName;
+
+    /**
+     * 住院医生ID
+     */
+    @TableField("beh_doctor_id")
+    private String behDoctorId;
+
+    /**
+     * 住院医生姓名
+     */
+    @TableField("beh_doctor_name")
+    private String behDoctorName;
+
+    /**
+     * 主任医生ID
+     */
+    @TableField("director_doctor_id")
+    private String directorDoctorId;
+
+    /**
+     * 主任医生姓名
+     */
+    @TableField("director_doctor_name")
+    private String directorDoctorName;
+
+    /**
+     * 是否归档(0:未归档,1:已归档)
+     */
+    @TableField("is_placefile")
+    private String isPlacefile;
+
+    /**
+     * 归档时间
+     */
+    @TableField("placefile_date")
+    private Date placefileDate;
+
+    /**
+     * R-住院登记I-病房接诊B-出院登记O-出院结算P-预约出院N-无费退院
+     */
+    @TableField("in_state")
+    private String inState;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+}

+ 144 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/QcresultDetail.java

@@ -0,0 +1,144 @@
+package com.lantone.dblayermbg.entity.appeal;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 实体类
+ * </p>
+ */
+@Data
+@TableName("med_qcresult_detail")
+public class QcresultDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 评分结果id
+     */
+    @TableField("qcresult_info_id")
+    private Long qcresultInfoId;
+
+    /**
+     * 病人住院ID
+     */
+    @TableField("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 模块id
+     */
+    @TableField("cases_id")
+    private Long casesId;
+
+    /**
+     * 模块总分
+     */
+    @TableField("cases_score")
+    private BigDecimal casesScore;
+
+    /**
+     * 条目ID
+     */
+    @TableField("cases_entry_id")
+    private Long casesEntryId;
+
+    /**
+     * 人工修改分值
+     */
+    @TableField("score")
+    private BigDecimal score;
+
+    /**
+     * 提示信息
+     */
+    @TableField("msg")
+    private String msg;
+
+    /**
+     * 质控返回提示信息
+     */
+    @TableField("info")
+    private String info;
+
+    /**
+     * 单项否决(1-单项否决 0-非)
+     */
+    @TableField("is_reject")
+    private Integer isReject;
+
+    /**
+     * 初始类型(1:机器,2:人工)
+     */
+    @TableField("grade_type")
+    private Integer gradeType;
+
+    /**
+     * 操作类型(1:新增,2:删除,3:修改)
+     */
+    @TableField("opt_type")
+    private Integer optType;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 解释说明
+     */
+    @TableField("explain_info")
+    private String explainInfo;
+
+}

+ 95 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/SysUser.java

@@ -0,0 +1,95 @@
+package com.lantone.dblayermbg.entity.appeal;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 系统用户表 实体类
+ * </p>
+ */
+@Data
+public class SysUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 用户名
+     */
+    @TableField("username")
+    private String username;
+
+    /**
+     * 用户密码
+     */
+    @TableField("password")
+    private String password;
+
+    /**
+     * 联系人
+     */
+    @TableField("linkman")
+    private String linkman;
+
+    /**
+     * 是否启用(0:停用,1:启用)
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 1内部用户,0外部用户(默认0)
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+}

+ 77 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/appeal/SysUserRole.java

@@ -0,0 +1,77 @@
+package com.lantone.dblayermbg.entity.appeal;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 系统用户角色关联表 实体类
+ * </p>
+ */
+@Data
+public class SysUserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户和角色关联ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 系统用户表.用户ID
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 系统角色表.角色ID
+     */
+    @TableField("role_id")
+    private Long roleId;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+}

+ 14 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/BehospitalInfoFacade2.java

@@ -0,0 +1,14 @@
+package com.lantone.dblayermbg.facade.appeal;
+
+import com.lantone.dblayermbg.service.impl.appeal.BehospitalInfoServiceImpl2;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:med_behospital_info 业务类
+ * </p>
+ */
+@Component
+public class BehospitalInfoFacade2 extends BehospitalInfoServiceImpl2 {
+
+}

+ 14 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/QcresultDetailFacade2.java

@@ -0,0 +1,14 @@
+package com.lantone.dblayermbg.facade.appeal;
+
+import com.lantone.dblayermbg.service.impl.appeal.QcresultDetailServiceImpl2;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:med_qcresult_detail 业务类
+ * </p>
+ */
+@Component
+public class QcresultDetailFacade2 extends QcresultDetailServiceImpl2 {
+
+}

+ 14 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/SysUserFacade2.java

@@ -0,0 +1,14 @@
+package com.lantone.dblayermbg.facade.appeal;
+
+import com.lantone.dblayermbg.service.impl.appeal.SysUserServiceImpl2;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:sys_user 业务类
+ * </p>
+ */
+@Component
+public class SysUserFacade2 extends SysUserServiceImpl2 {
+
+}

+ 14 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/appeal/SysUserRoleFacade2.java

@@ -0,0 +1,14 @@
+package com.lantone.dblayermbg.facade.appeal;
+
+import com.lantone.dblayermbg.service.impl.appeal.SysUserRoleServiceImpl2;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:sys_user_role 业务类
+ * </p>
+ */
+@Component
+public class SysUserRoleFacade2 extends SysUserRoleServiceImpl2 {
+
+}

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/BehospitalInfoMapper2.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.mapperdb2;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.dblayermbg.entity.appeal.BehospitalInfo;
+
+/**
+ * <p>
+ * 表名:med_behospital_info Mapper接口
+ * </p>
+ */
+public interface BehospitalInfoMapper2 extends BaseMapper<BehospitalInfo> {
+
+}

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/QcresultDetailMapper2.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.mapperdb2;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.dblayermbg.entity.appeal.QcresultDetail;
+
+/**
+ * <p>
+ * 表名:med_qcresult_detail Mapper接口
+ * </p>
+ */
+public interface QcresultDetailMapper2 extends BaseMapper<QcresultDetail> {
+
+}

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/SysUserMapper2.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.mapperdb2;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.dblayermbg.entity.appeal.SysUser;
+
+/**
+ * <p>
+ * 表名:sys_user Mapper接口
+ * </p>
+ */
+public interface SysUserMapper2 extends BaseMapper<SysUser> {
+
+}

+ 19 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapperdb2/SysUserRoleMapper2.java

@@ -0,0 +1,19 @@
+package com.lantone.dblayermbg.mapperdb2;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.appeal.GetReviewerDTO;
+import com.lantone.common.vo.appeal.GetReviewerVO;
+import com.lantone.dblayermbg.entity.appeal.SysUserRole;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 表名:sys_user_role Mapper接口
+ * </p>
+ */
+public interface SysUserRoleMapper2 extends BaseMapper<SysUserRole> {
+
+    List<GetReviewerDTO> getUserByRole(@Param("getReviewerVO") GetReviewerVO getReviewerVO);
+}

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/BehospitalInfoService.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.service.appeal;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.dblayermbg.entity.appeal.BehospitalInfo;
+
+/**
+ * <p>
+ * 住院病历信息 Service类
+ * </p>
+ */
+public interface BehospitalInfoService extends IService<BehospitalInfo> {
+
+}

+ 14 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/QcresultDetailService.java

@@ -0,0 +1,14 @@
+package com.lantone.dblayermbg.service.appeal;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.dblayermbg.entity.appeal.QcresultDetail;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y Service类
+ * </p>
+ */
+public interface QcresultDetailService extends IService<QcresultDetail> {
+
+}

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/SysUserRoleService.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.service.appeal;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.dblayermbg.entity.appeal.SysUserRole;
+
+/**
+ * <p>
+ * 系统用户角色关联表 Service类
+ * </p>
+ */
+public interface SysUserRoleService extends IService<SysUserRole> {
+
+}

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/appeal/SysUserService.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.service.appeal;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.dblayermbg.entity.appeal.SysUser;
+
+/**
+ * <p>
+ * 系统用户表 Service类
+ * </p>
+ */
+public interface SysUserService extends IService<SysUser> {
+
+}

+ 17 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/BehospitalInfoServiceImpl2.java

@@ -0,0 +1,17 @@
+package com.lantone.dblayermbg.service.impl.appeal;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.dblayermbg.entity.appeal.BehospitalInfo;
+import com.lantone.dblayermbg.mapperdb2.BehospitalInfoMapper2;
+import com.lantone.dblayermbg.service.appeal.BehospitalInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 住院病历信息 Service实现类
+ * </p>
+ */
+@Service
+public class BehospitalInfoServiceImpl2 extends ServiceImpl<BehospitalInfoMapper2, BehospitalInfo> implements BehospitalInfoService {
+
+}

+ 18 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/QcresultDetailServiceImpl2.java

@@ -0,0 +1,18 @@
+package com.lantone.dblayermbg.service.impl.appeal;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.dblayermbg.entity.appeal.QcresultDetail;
+import com.lantone.dblayermbg.mapperdb2.QcresultDetailMapper2;
+import com.lantone.dblayermbg.service.appeal.QcresultDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y Service实现类
+ * </p>
+ */
+@Service
+public class QcresultDetailServiceImpl2 extends ServiceImpl<QcresultDetailMapper2, QcresultDetail> implements QcresultDetailService {
+
+}

+ 17 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/SysUserRoleServiceImpl2.java

@@ -0,0 +1,17 @@
+package com.lantone.dblayermbg.service.impl.appeal;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.dblayermbg.entity.appeal.SysUserRole;
+import com.lantone.dblayermbg.mapperdb2.SysUserRoleMapper2;
+import com.lantone.dblayermbg.service.appeal.SysUserRoleService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 系统用户角色关联表 Service实现类
+ * </p>
+ */
+@Service
+public class SysUserRoleServiceImpl2 extends ServiceImpl<SysUserRoleMapper2, SysUserRole> implements SysUserRoleService {
+
+}

+ 17 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/appeal/SysUserServiceImpl2.java

@@ -0,0 +1,17 @@
+package com.lantone.dblayermbg.service.impl.appeal;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.dblayermbg.entity.appeal.SysUser;
+import com.lantone.dblayermbg.mapperdb2.SysUserMapper2;
+import com.lantone.dblayermbg.service.appeal.SysUserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 系统用户表 Service实现类
+ * </p>
+ */
+@Service
+public class SysUserServiceImpl2 extends ServiceImpl<SysUserMapper2, SysUser> implements SysUserService {
+
+}

+ 1 - 1
dblayer-mbg/src/main/resources/application-debug.yml

@@ -50,7 +50,7 @@ spring:
       db2:
         driver-class-name: com.mysql.cj.jdbc.Driver
         platform: mysql
-        url: jdbc:mysql://192.168.2.237:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+        url: jdbc:mysql://192.168.2.237:3307/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
         username: root
         password: lantone
         # 连接池的配置信息

+ 5 - 0
dblayer-mbg/src/main/resources/mapperdb2/BehospitalInfoMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.BehospitalInfoMapper2">
+
+</mapper>

+ 5 - 0
dblayer-mbg/src/main/resources/mapperdb2/QcresultDetailMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.QcresultDetailMapper2">
+
+</mapper>

+ 5 - 0
dblayer-mbg/src/main/resources/mapperdb2/SysUserMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.SysUserMapper2">
+
+</mapper>

+ 21 - 0
dblayer-mbg/src/main/resources/mapperdb2/SysUserRoleMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.SysUserRoleMapper2">
+
+    <select id="getUserByRole" resultType="com.lantone.common.dto.appeal.GetReviewerDTO">
+        SELECT
+        u.linkman userName,
+        u.id id
+        FROM
+        sys_user u,
+        sys_user_role role
+        WHERE
+        u.is_deleted = "N"
+        AND role.is_deleted = "N"
+        AND u.id = role.user_id
+        AND role.role_id = #{getReviewerVO.roleID}
+        <if test="getReviewerVO.selfFlag == false">
+            AND u.id != #{getReviewerVO.claimantId}
+        </if>
+    </select>
+</mapper>

+ 2 - 1
dblayer-mbg/src/main/resources/mapperdb2/base/BaseAppealExamineInfoMapper.xml

@@ -9,7 +9,8 @@
         <result column="check_id" property="checkId"/>
         <result column="example_status" property="exampleStatus"/>
         <result column="example_operation" property="exampleOperation"/>
-        <result column="example_advise" property="exampleAdvise"/>
+        <result column="process_result" property="processResult"/>
+        <result column="reject_reason" property="rejectReason"/>
         <result column="is_deleted" property="isDeleted"/>
         <result column="gmt_create" property="gmtCreate"/>
         <result column="gmt_modified" property="gmtModified"/>

+ 5 - 0
dblayer-mbg/src/main/resources/mapperdb2/base/BaseAppealInfoMapper.xml

@@ -9,6 +9,11 @@
         <result column="behospital_code" property="behospitalCode"/>
         <result column="qcresult_detail_id" property="qcresultDetailId"/>
         <result column="qcresult_detail_msg" property="qcresultDetailMsg"/>
+        <result column="qcresult_detai_value" property="qcresultDetaiValue"/>
+        <result column="cases_entry_id" property="casesEntryId"/>
+        <result column="cases_entry_name" property="casesEntryName"/>
+        <result column="cases_entry_msg" property="casesEntryMsg"/>
+        <result column="value" property="value"/>
         <result column="mode_id" property="modeId"/>
         <result column="mode_name" property="modeName"/>
         <result column="defect_content" property="defectContent"/>

+ 44 - 0
dblayer-mbg/src/main/resources/mapperdb2/base/BaseBehospitalInfoMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.BehospitalInfoMapper2">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.dblayermbg.entity.appeal.BehospitalInfo">
+        <id column="behospital_code" property="behospitalCode"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="name" property="name"/>
+        <result column="sex" property="sex"/>
+        <result column="birthday" property="birthday"/>
+        <result column="file_code" property="fileCode"/>
+        <result column="qc_type_id" property="qcTypeId"/>
+        <result column="ward_code" property="wardCode"/>
+        <result column="ward_name" property="wardName"/>
+        <result column="beh_dept_id" property="behDeptId"/>
+        <result column="beh_dept_name" property="behDeptName"/>
+        <result column="bed_code" property="bedCode"/>
+        <result column="bed_name" property="bedName"/>
+        <result column="insurance_name" property="insuranceName"/>
+        <result column="job_type" property="jobType"/>
+        <result column="behospital_date" property="behospitalDate"/>
+        <result column="leave_hospital_date" property="leaveHospitalDate"/>
+        <result column="trans_in_time" property="transInTime"/>
+        <result column="trans_out_time" property="transOutTime"/>
+        <result column="diagnose_icd" property="diagnoseIcd"/>
+        <result column="diagnose" property="diagnose"/>
+        <result column="doctor_id" property="doctorId"/>
+        <result column="doctor_name" property="doctorName"/>
+        <result column="beh_doctor_id" property="behDoctorId"/>
+        <result column="beh_doctor_name" property="behDoctorName"/>
+        <result column="director_doctor_id" property="directorDoctorId"/>
+        <result column="director_doctor_name" property="directorDoctorName"/>
+        <result column="is_placefile" property="isPlacefile"/>
+        <result column="placefile_date" property="placefileDate"/>
+        <result column="in_state" property="inState"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+    </resultMap>
+
+</mapper>

+ 29 - 0
dblayer-mbg/src/main/resources/mapperdb2/base/BaseQcresultDetailMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.QcresultDetailMapper2">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.dblayermbg.entity.appeal.QcresultDetail">
+        <id column="id" property="id"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="qcresult_info_id" property="qcresultInfoId"/>
+        <result column="behospital_code" property="behospitalCode"/>
+        <result column="cases_id" property="casesId"/>
+        <result column="cases_score" property="casesScore"/>
+        <result column="cases_entry_id" property="casesEntryId"/>
+        <result column="score" property="score"/>
+        <result column="msg" property="msg"/>
+        <result column="info" property="info"/>
+        <result column="is_reject" property="isReject"/>
+        <result column="grade_type" property="gradeType"/>
+        <result column="opt_type" property="optType"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="remark" property="remark"/>
+        <result column="explain_info" property="explainInfo"/>
+    </resultMap>
+
+</mapper>

+ 21 - 0
dblayer-mbg/src/main/resources/mapperdb2/base/BaseSysUserMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.SysUserMapper2">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.dblayermbg.entity.appeal.SysUser">
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="username" property="username"/>
+        <result column="password" property="password"/>
+        <result column="linkman" property="linkman"/>
+        <result column="status" property="status"/>
+        <result column="type" property="type"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+</mapper>

+ 18 - 0
dblayer-mbg/src/main/resources/mapperdb2/base/BaseSysUserRoleMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.dblayermbg.mapperdb2.SysUserRoleMapper2">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.dblayermbg.entity.appeal.SysUserRole">
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="user_id" property="userId"/>
+        <result column="role_id" property="roleId"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+</mapper>

+ 3 - 1
gateway-service/src/main/resources/bootstrap.yml

@@ -93,4 +93,6 @@ secure:
       - "/message-service/pageSample/sample"
       - "/message-service/backSample/sendToDefaultTopic"
       - "/message-service/backSample/sendToTopic"
-      - "/report-service/medAppealInfoManage/getWorkById"
+      - "/report-service/medAppealInfoManage/getWorkById"
+      - "/report-service/medAppealInfoManage/addAppealInfo"
+      - "/report-service/medAppealInfoManage/getReviewer"

+ 43 - 0
report-service/src/main/java/com/lantone/report/enums/WorkFlowNodeEnum.java

@@ -0,0 +1,43 @@
+package com.lantone.report.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 工作流节点
+ * @author: gaodm
+ * @time: 2018/9/3 16:01
+ */
+public enum WorkFlowNodeEnum {
+
+    APPEAL("1", "申诉"),
+    APPEAL_BACK("2", "撤销申诉"),
+    DEPT_CHECK("3", "科室审核");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    WorkFlowNodeEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static WorkFlowNodeEnum getEnum(String key) {
+        for (WorkFlowNodeEnum item : WorkFlowNodeEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        WorkFlowNodeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 199 - 0
report-service/src/main/java/com/lantone/report/facade/MedAppealInfoManagementFacade.java

@@ -1,12 +1,33 @@
 package com.lantone.report.facade;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.lantone.common.dto.appeal.GetReviewerDTO;
+import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.exception.Asserts;
+import com.lantone.common.util.DateUtil;
+import com.lantone.common.util.ListUtil;
+import com.lantone.common.vo.appeal.AddAppealInfoVO;
+import com.lantone.common.vo.appeal.GetReviewerVO;
 import com.lantone.common.vo.appeal.MedAppealInfoVO;
+import com.lantone.dblayermbg.entity.appeal.AppealExamineInfo;
+import com.lantone.dblayermbg.entity.appeal.AppealInfo;
+import com.lantone.dblayermbg.entity.appeal.QcresultDetail;
 import com.lantone.dblayermbg.entity.appeal.WorkFlowNode;
+import com.lantone.dblayermbg.facade.appeal.AppealExamineInfoFacade;
+import com.lantone.dblayermbg.facade.appeal.AppealInfoFacade;
+import com.lantone.dblayermbg.facade.appeal.QcresultDetailFacade2;
+import com.lantone.dblayermbg.facade.appeal.SysUserRoleFacade2;
 import com.lantone.dblayermbg.facade.appeal.WorkFlowNodeFacade;
+import com.lantone.report.enums.WorkFlowNodeEnum;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @Description:申诉审核管理
  * @Author: songxl
@@ -17,7 +38,185 @@ public class MedAppealInfoManagementFacade {
     @Autowired
     private WorkFlowNodeFacade workFlowNodeFacade;
 
+    @Autowired
+    private AppealInfoFacade appealInfoFacade;
+    @Autowired
+    private SysUserRoleFacade2 sysUserRoleFacade;
+    @Autowired
+    private QcresultDetailFacade2 qcresultDetailFacade;
+    @Autowired
+    private AppealExamineInfoFacade appealExamineInfoFacade;
+
     public WorkFlowNode getWorkById(MedAppealInfoVO medAppealInfoVO) {
         return workFlowNodeFacade.getById(medAppealInfoVO.getId());
     }
+
+    public Boolean addAppealInfo(AddAppealInfoVO addAppealInfoVO) {
+
+        switch (addAppealInfoVO.getAppealOperationType()) {
+            //删改
+            case "0":
+                //通过缺陷id获取该缺陷记录
+                QcresultDetail qcresultDetail = getQcresultDetailById(addAppealInfoVO.getQcresultDetailId());
+                //获取该病历缺陷申诉记录(医院id+病历id+质控缺陷id+未删除)
+                AppealInfo appealInfo = getAppealInfo(addAppealInfoVO.getHospitalId()
+                        , addAppealInfoVO.getBehospitalCode()
+                        , addAppealInfoVO.getQcresultDetailId());
+                //缺陷状态-删除
+                if (qcresultDetail.getIsDeleted().equals(IsDeleteEnum.Y.getKey())) {
+                    Asserts.fail2("该缺陷已被删除,请走恢复流程");
+                }
+                //申诉记录不存在
+                if (appealInfo == null) {
+                    //新增申诉记录+审核记录
+                    return addAppealInfoAndExamineInfo(addAppealInfoVO);
+                }
+                //获取申诉记录当前节点状态(1:申诉|2:撤销|3:科室审核)
+                if (WorkFlowNodeEnum.APPEAL.getKey().equals(addAppealInfoVO.getWorkFlowNodeId()+"")) {
+                    Asserts.fail2("该缺陷已被申诉");
+                } else {
+                    //删除申诉记录
+                    appealInfoFacade.update(new UpdateWrapper<AppealInfo>().set("is_deleted", IsDeleteEnum.Y.getKey())
+                            .eq("id", appealInfo.getId()));
+                }
+                //新增申诉记录+审核记录
+                return addAppealInfoAndExamineInfo(addAppealInfoVO);
+            //新增已有
+            case "1":
+                //通过病历id+条目ID获取缺陷
+                List<QcresultDetail> qcresultDetails = qcresultDetailFacade.list(new QueryWrapper<QcresultDetail>()
+                        .eq("hospital_id", addAppealInfoVO.getHospitalId())
+                        .eq("behospital_code", addAppealInfoVO.getBehospitalCode())
+                        .eq("cases_entry_id", addAppealInfoVO.getCasesEntryId()));
+                if (ListUtil.isNotEmpty(qcresultDetails)) {
+                    Asserts.fail2("该缺陷已存在无需申诉新增");
+                }
+                //新增申诉记录+审核记录
+                return addAppealInfoAndExamineInfo(addAppealInfoVO);
+            //新增缺失
+            case "2":
+                //新增申诉记录+审核记录
+                return addAppealInfoAndExamineInfo(addAppealInfoVO);
+            //恢复
+            case "3":
+                //通过缺陷id获取该缺陷记录
+                QcresultDetail qcresultDetail1 = getQcresultDetailById(addAppealInfoVO.getQcresultDetailId());
+                //获取该病历缺陷申诉记录(医院id+病历id+质控缺陷id+未删除)
+                AppealInfo appealInfo1 = getAppealInfo(addAppealInfoVO.getHospitalId()
+                        , addAppealInfoVO.getBehospitalCode()
+                        , addAppealInfoVO.getQcresultDetailId());
+                //缺陷状态-删除
+                if (qcresultDetail1.getIsDeleted().equals(IsDeleteEnum.N.getKey())) {
+                    Asserts.fail2("缺陷已被恢复无需再次恢复");
+                }
+                //申诉记录不存在
+                if (appealInfo1 == null) {
+                    //新增申诉记录+审核记录
+                    return addAppealInfoAndExamineInfo(addAppealInfoVO);
+                }
+                //获取申诉记录当前节点状态(1:申诉|2:撤销|3:科室审核)
+                if (WorkFlowNodeEnum.APPEAL.getKey().equals(addAppealInfoVO.getWorkFlowNodeId()+"")) {
+                    Asserts.fail2("该缺陷已被申诉");
+                } else {
+                    //删除申诉记录
+                    appealInfoFacade.update(new UpdateWrapper<AppealInfo>().set("is_deleted", IsDeleteEnum.Y.getKey())
+                            .eq("id", appealInfo1.getId()));
+                }
+                //新增申诉记录+审核记录
+                return addAppealInfoAndExamineInfo(addAppealInfoVO);
+            default:
+                Asserts.fail2("申诉操作类型不存在!");
+        }
+        return false;
+    }
+
+    private Boolean addAppealInfoAndExamineInfo(AddAppealInfoVO addAppealInfoVO) {
+        AppealInfo appealInfo = new AppealInfo();
+        BeanUtils.copyProperties(addAppealInfoVO, appealInfo);
+        appealInfo.setGmtCreate(DateUtil.now());
+        //申诉记录插入成功
+        if (appealInfoFacade.save(appealInfo)) {
+            AppealExamineInfo appealExamineInfo = new AppealExamineInfo();
+            appealExamineInfo.setAppealInfoId(appealInfo.getId());
+            appealExamineInfo.setCheckId(addAppealInfoVO.getCheckId());
+            return appealExamineInfoFacade.save(appealExamineInfo);
+        }
+        Asserts.fail2("申诉记录插入失败!");
+        return false;
+    }
+
+    /**
+     * @param hospitalId
+     * @param behospitalCode
+     * @param qcresultDetailId
+     * @Description获取该病历缺陷申诉记录
+     * @Return com.lantone.dblayermbg.entity.appeal.AppealInfo
+     */
+    private AppealInfo getAppealInfo(Long hospitalId, String behospitalCode, Long qcresultDetailId) {
+
+        if (qcresultDetailId == null) {
+            Asserts.fail2("质控缺陷id为空");
+        }
+        List<AppealInfo> appealInfos = appealInfoFacade.list(new QueryWrapper<AppealInfo>()
+                .eq("hospital_id", hospitalId)
+                .eq("behospital_code", behospitalCode)
+                .eq("qcresult_detail_id", qcresultDetailId)
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        if (ListUtil.isNotEmpty(appealInfos)) {
+            return appealInfos.get(0);
+        }
+        return null;
+    }
+
+    /**
+     * @param qcresultDetailId
+     * @Description通过id获取质控缺陷条目
+     * @Return com.lantone.dblayermbg.entity.appeal.QcresultDetail
+     */
+    private QcresultDetail getQcresultDetailById(Long qcresultDetailId) {
+        if (qcresultDetailId == null) {
+            Asserts.fail2("质控缺陷id为空");
+        }
+        QcresultDetail qcresultDetail = qcresultDetailFacade.getById(qcresultDetailId);
+        if (qcresultDetail == null) {
+            Asserts.fail2("质控缺陷不存在");
+        }
+        return qcresultDetail;
+    }
+
+    /**
+     * @param getReviewerVO
+     * @Description获取审核人列表
+     * @Return java.util.List<com.lantone.common.dto.appeal.GetReviewerDTO>
+     */
+    public List<GetReviewerDTO> getReviewer(GetReviewerVO getReviewerVO) {
+        //获取审核人列表
+        List<GetReviewerDTO> reviewers = sysUserRoleFacade.getBaseMapper().getUserByRole(getReviewerVO);
+        //获取申诉人申诉记录审核人(时间倒序)
+        List<AppealInfo> appealInfos = appealInfoFacade.list(new QueryWrapper<AppealInfo>()
+                .select("check_id")
+                .eq("claimant_id", getReviewerVO.getClaimantId())
+                .orderByDesc("gmt_create"));
+        return sortReviewer(reviewers, appealInfos);
+    }
+
+    private List<GetReviewerDTO> sortReviewer(List<GetReviewerDTO> reviewers, List<AppealInfo> appealInfos) {
+        if (ListUtil.isEmpty(appealInfos)) {
+            return reviewers;
+        }
+        if (ListUtil.isNotEmpty(reviewers)) {
+            List<GetReviewerDTO> out = new ArrayList<>();
+            for (AppealInfo appealInfo : appealInfos) {
+                for (GetReviewerDTO getReviewerDTO : reviewers) {
+                    if (getReviewerDTO.getId().equals(appealInfo.getClaimantId())) {
+                        out.add(getReviewerDTO);
+                        reviewers.remove(getReviewerDTO);
+                    }
+                }
+            }
+            out.addAll(reviewers);
+            return out;
+        }
+        return reviewers;
+    }
 }

+ 23 - 0
report-service/src/main/java/com/lantone/report/web/MedAppealInfoManagementController.java

@@ -2,17 +2,24 @@ package com.lantone.report.web;
 
 
 import com.lantone.common.dto.RespDTO;
+import com.lantone.common.dto.appeal.GetReviewerDTO;
+import com.lantone.common.vo.appeal.AddAppealInfoVO;
+import com.lantone.common.vo.appeal.GetReviewerVO;
 import com.lantone.common.vo.appeal.MedAppealInfoVO;
 import com.lantone.dblayermbg.entity.appeal.WorkFlowNode;
 import com.lantone.report.facade.MedAppealInfoManagementFacade;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+import java.util.List;
+
 /**
  * <p>
  * 申诉审核 前端控制器
@@ -36,4 +43,20 @@ public class MedAppealInfoManagementController {
         return RespDTO.onSuc(workFlowInfo);
     }
 
+
+    @ApiOperation(value = "申诉[by:songxl]",
+            notes = "申诉")
+    @PostMapping("/addAppealInfo")
+    @Transactional
+    public RespDTO<Boolean> addAppealInfo(@RequestBody @Valid AddAppealInfoVO addAppealInfoVO) {
+        return RespDTO.onSuc(medAppealInfoManagementFacade.addAppealInfo(addAppealInfoVO));
+    }
+    @ApiOperation(value = "获取审核人[by:songxl]",
+            notes = "获取审核人")
+    @PostMapping("/getReviewer")
+    public RespDTO<List<GetReviewerDTO>> getReviewer(@RequestBody GetReviewerVO getReviewerVO) {
+        List<GetReviewerDTO> reviewers = medAppealInfoManagementFacade.getReviewer(getReviewerVO);
+        return RespDTO.onSuc(reviewers);
+    }
+
 }