Browse Source

提交数据对比接口

songxinlu 3 years ago
parent
commit
354c9af54f
46 changed files with 2653 additions and 27 deletions
  1. 39 0
      common/src/main/java/com/lantone/common/dto/GetOperationLogDTO.java
  2. 35 0
      common/src/main/java/com/lantone/common/vo/DataCompareVO.java
  3. 23 0
      daqe-center/src/main/java/com/lantone/daqe/client/OperationLogService.java
  4. 34 0
      daqe-center/src/main/java/com/lantone/daqe/dto/HisMedicalRecordDTO.java
  5. 30 0
      daqe-center/src/main/java/com/lantone/daqe/dto/HisRecDTO.java
  6. 220 0
      daqe-center/src/main/java/com/lantone/daqe/entity/BehospitalInfo.java
  7. 1 1
      daqe-center/src/main/java/com/lantone/daqe/entity/BlocklossResult.java
  8. 940 0
      daqe-center/src/main/java/com/lantone/daqe/entity/HomePage.java
  9. 103 0
      daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecord.java
  10. 89 0
      daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecordContent.java
  11. 42 0
      daqe-center/src/main/java/com/lantone/daqe/enums/LossIsAuditedEnum.java
  12. 41 0
      daqe-center/src/main/java/com/lantone/daqe/enums/LossStatusEnum.java
  13. 42 0
      daqe-center/src/main/java/com/lantone/daqe/enums/LossTypeEnum.java
  14. 41 0
      daqe-center/src/main/java/com/lantone/daqe/enums/LossWayEnum.java
  15. 398 0
      daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java
  16. 14 0
      daqe-center/src/main/java/com/lantone/daqe/facade/base/BehospitalInfoFacade.java
  17. 14 0
      daqe-center/src/main/java/com/lantone/daqe/facade/base/HomePageFacade.java
  18. 14 0
      daqe-center/src/main/java/com/lantone/daqe/facade/base/MedicalRecordContentFacade.java
  19. 14 0
      daqe-center/src/main/java/com/lantone/daqe/facade/base/MedicalRecordFacade.java
  20. 13 0
      daqe-center/src/main/java/com/lantone/daqe/mapper/BehospitalInfoMapper.java
  21. 13 0
      daqe-center/src/main/java/com/lantone/daqe/mapper/HomePageMapper.java
  22. 13 0
      daqe-center/src/main/java/com/lantone/daqe/mapper/MedicalRecordContentMapper.java
  23. 13 0
      daqe-center/src/main/java/com/lantone/daqe/mapper/MedicalRecordMapper.java
  24. 13 0
      daqe-center/src/main/java/com/lantone/daqe/service/BehospitalInfoService.java
  25. 13 0
      daqe-center/src/main/java/com/lantone/daqe/service/HomePageService.java
  26. 13 0
      daqe-center/src/main/java/com/lantone/daqe/service/MedicalRecordContentService.java
  27. 13 0
      daqe-center/src/main/java/com/lantone/daqe/service/MedicalRecordService.java
  28. 17 0
      daqe-center/src/main/java/com/lantone/daqe/service/impl/BehospitalInfoServiceImpl.java
  29. 17 0
      daqe-center/src/main/java/com/lantone/daqe/service/impl/HomePageServiceImpl.java
  30. 17 0
      daqe-center/src/main/java/com/lantone/daqe/service/impl/MedicalRecordContentServiceImpl.java
  31. 17 0
      daqe-center/src/main/java/com/lantone/daqe/service/impl/MedicalRecordServiceImpl.java
  32. 2 2
      daqe-center/src/main/java/com/lantone/daqe/vo/AddDrugVO.java
  33. 2 2
      daqe-center/src/main/java/com/lantone/daqe/vo/UpDrugByIdVO.java
  34. 9 0
      daqe-center/src/main/java/com/lantone/daqe/web/BlockLossManagementController.java
  35. 5 0
      daqe-center/src/main/resources/mapper/BehospitalInfoMapper.xml
  36. 4 10
      daqe-center/src/main/resources/mapper/BlocklossResultMapper.xml
  37. 5 0
      daqe-center/src/main/resources/mapper/HomePageMapper.xml
  38. 5 0
      daqe-center/src/main/resources/mapper/MedicalRecordContentMapper.xml
  39. 5 0
      daqe-center/src/main/resources/mapper/MedicalRecordMapper.xml
  40. 42 0
      daqe-center/src/main/resources/mapper/base/BaseBehospitalInfoMapper.xml
  41. 162 0
      daqe-center/src/main/resources/mapper/base/BaseHomePageMapper.xml
  42. 20 0
      daqe-center/src/main/resources/mapper/base/BaseMedicalRecordContentMapper.xml
  43. 23 0
      daqe-center/src/main/resources/mapper/base/BaseMedicalRecordMapper.xml
  44. 6 2
      dblayer-mbg/src/test/java/com/lantone/dblayermbg/CodeAutoGenerator.java
  45. 49 10
      security-center/src/main/java/com/lantone/security/facade/LogManagementFacade.java
  46. 8 0
      security-center/src/main/java/com/lantone/security/web/LogManagementController.java

+ 39 - 0
common/src/main/java/com/lantone/common/dto/GetOperationLogDTO.java

@@ -0,0 +1,39 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 获取操作记录数据-接口出参
+ * @author: songxl
+ * @time: 2022/3/4 10:39
+ */
+@ApiModel(value = "获取操作记录数据-接口出参")
+@Getter
+@Setter
+public class GetOperationLogDTO implements Serializable {
+
+
+    private static final long serialVersionUID = -6049534509383909152L;
+
+
+    @ApiModelProperty(value = "住院序号")
+    private String behospitalCode;
+
+    @ApiModelProperty(value = "病案首页编号")
+    private String homePageId;
+
+    @ApiModelProperty(value = "文书编号")
+    private String recId;
+
+    @ApiModelProperty(value = "文书标题")
+    private String recTitle;
+
+
+
+
+}

+ 35 - 0
common/src/main/java/com/lantone/common/vo/DataCompareVO.java

@@ -0,0 +1,35 @@
+package com.lantone.common.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 数据对比-接口入参
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@ApiModel(value = "数据对比-接口入参")
+@Getter
+@Setter
+public class DataCompareVO implements Serializable {
+
+    private static final long serialVersionUID = 4949654901048650724L;
+
+    @ApiModelProperty(value = "开始日期")
+    private Date startDate;
+
+    @ApiModelProperty(value = "截止日期")
+    private Date endDate;
+
+    @ApiModelProperty(value = "住院序号")
+    private String behospitalCode;
+
+    @ApiModelProperty(value = "操作url", hidden = true)
+    private String operationUrl;
+
+}

+ 23 - 0
daqe-center/src/main/java/com/lantone/daqe/client/OperationLogService.java

@@ -0,0 +1,23 @@
+package com.lantone.daqe.client;
+
+import com.lantone.common.api.CommonResult;
+import com.lantone.common.dto.GetOperationLogDTO;
+import com.lantone.common.vo.DataCompareVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @Description: 操作日志服务远程调用
+ * @author: songxl
+ * @time: 2022/2/28 11:15
+ */
+@FeignClient("security-center")
+public interface OperationLogService {
+
+    @PostMapping("/logManage/getOperationLog")
+    CommonResult<List<GetOperationLogDTO>> getOperationLog(@RequestBody DataCompareVO dataCompareVO);
+
+}

+ 34 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/HisMedicalRecordDTO.java

@@ -0,0 +1,34 @@
+package com.lantone.daqe.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 获取his病历数据-接口出参
+ * @author: songxl
+ * @time: 2022/3/4 10:39
+ */
+@ApiModel(value = "获取his病历数据-接口出参")
+@Getter
+@Setter
+public class HisMedicalRecordDTO implements Serializable {
+
+
+    private static final long serialVersionUID = 7338285026095461388L;
+    @ApiModelProperty(value = "住院序号")
+    private String behospitalCode;
+
+    @ApiModelProperty(value = "病案首页编号")
+    private String homePageId;
+
+    @ApiModelProperty(value = "文书列表")
+    private List<HisRecDTO> hisRecs;
+
+
+
+}

+ 30 - 0
daqe-center/src/main/java/com/lantone/daqe/dto/HisRecDTO.java

@@ -0,0 +1,30 @@
+package com.lantone.daqe.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 获取his病历数据_文书-接口出参
+ * @author: songxl
+ * @time: 2022/3/4 10:39
+ */
+@ApiModel(value = "获取his病历数据_文书-接口出参")
+@Getter
+@Setter
+public class HisRecDTO implements Serializable {
+
+
+    private static final long serialVersionUID = -6049534509383909152L;
+    @ApiModelProperty(value = "文书编号")
+    private String recId;
+
+    @ApiModelProperty(value = "文书标题")
+    private String recTitle;
+
+
+
+}

+ 220 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/BehospitalInfo.java

@@ -0,0 +1,220 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+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;
+
+    /**
+     * 疾病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;
+
+}

+ 1 - 1
daqe-center/src/main/java/com/lantone/daqe/entity/BlocklossResult.java

@@ -39,7 +39,7 @@ public class BlocklossResult implements Serializable {
     private String behospitalCode;
 
     /**
-     * 文书编号
+     * 文书编号/病案首页编号
      */
     @TableField("rec_id")
     private String recId;

+ 940 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/HomePage.java

@@ -0,0 +1,940 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *  实体类
+ * </p>
+ */
+@Data
+@TableName("med_home_page")
+public class HomePage implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病案首页编号
+     */
+    @TableId("home_page_id")
+    private String homePageId;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 病人住院序号
+     */
+    @TableField("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 组织机构id
+     */
+    @TableField("hospital_code")
+    private String hospitalCode;
+
+    /**
+     * 医疗机构名称
+     */
+    @TableField("hospital_name")
+    private String hospitalName;
+
+    /**
+     * 医疗机构代码
+     */
+    @TableField("org_code")
+    private String orgCode;
+
+    /**
+     * 医疗付费方式
+     */
+    @TableField("pay_type")
+    private String payType;
+
+    /**
+     * 健康卡号
+     */
+    @TableField("health_card")
+    private String healthCard;
+
+    /**
+     * 住院次数
+     */
+    @TableField("behospital_num")
+    private String behospitalNum;
+
+    /**
+     * 病案号
+     */
+    @TableField("file_code")
+    private String fileCode;
+
+    /**
+     * 姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 性别
+     */
+    @TableField("sex")
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    @TableField("birthday")
+    private Date birthday;
+
+    /**
+     * 年龄
+     */
+    @TableField("age")
+    private String age;
+
+    /**
+     * 年龄单位
+     */
+    @TableField("age_unit")
+    private String ageUnit;
+
+    /**
+     * 国籍
+     */
+    @TableField("nationality")
+    private String nationality;
+
+    /**
+     * 新生儿出生月数
+     */
+    @TableField("newborn_month")
+    private String newbornMonth;
+
+    /**
+     * 新生儿出生天数
+     */
+    @TableField("newborn_day")
+    private String newbornDay;
+
+    /**
+     * 新生儿出生体重
+     */
+    @TableField("newborn_weight")
+    private String newbornWeight;
+
+    /**
+     * 新生儿入院体重
+     */
+    @TableField("newborn_behospital_weight")
+    private String newbornBehospitalWeight;
+
+    /**
+     * 出生地
+     */
+    @TableField("born_address")
+    private String bornAddress;
+
+    /**
+     * 籍贯
+     */
+    @TableField("born_place")
+    private String bornPlace;
+
+    /**
+     * 民族
+     */
+    @TableField("nation")
+    private String nation;
+
+    /**
+     * 身份证号
+     */
+    @TableField("identity_card_no")
+    private String identityCardNo;
+
+    /**
+     * 职业
+     */
+    @TableField("job_type")
+    private String jobType;
+
+    /**
+     * 婚姻
+     */
+    @TableField("marriage")
+    private String marriage;
+
+    /**
+     * 现住址
+     */
+    @TableField("cur_address")
+    private String curAddress;
+
+    /**
+     * 现住址电话
+     */
+    @TableField("cur_phone")
+    private String curPhone;
+
+    /**
+     * 现住址邮编
+     */
+    @TableField("cur_post_code")
+    private String curPostCode;
+
+    /**
+     * 户口地址
+     */
+    @TableField("residence_address")
+    private String residenceAddress;
+
+    /**
+     * 户口地址邮编
+     */
+    @TableField("residence_post_code")
+    private String residencePostCode;
+
+    /**
+     * 工作单位
+     */
+    @TableField("work_address")
+    private String workAddress;
+
+    /**
+     * 工作单位电话
+     */
+    @TableField("work_phone")
+    private String workPhone;
+
+    /**
+     * 工作单位邮编
+     */
+    @TableField("work_post_code")
+    private String workPostCode;
+
+    /**
+     * 联系人姓名
+     */
+    @TableField("contact_name")
+    private String contactName;
+
+    /**
+     * 联系人关系
+     */
+    @TableField("contact_relation")
+    private String contactRelation;
+
+    /**
+     * 联系人地址
+     */
+    @TableField("contact_address")
+    private String contactAddress;
+
+    /**
+     * 联系人电话
+     */
+    @TableField("contact_phone")
+    private String contactPhone;
+
+    /**
+     * 入院途径
+     */
+    @TableField("behospital_way")
+    private String behospitalWay;
+
+    /**
+     * 入院时间
+     */
+    @TableField("behospital_date")
+    private Date behospitalDate;
+
+    /**
+     * 入院科别
+     */
+    @TableField("behospital_dept")
+    private String behospitalDept;
+
+    /**
+     * 入院病房
+     */
+    @TableField("behospital_ward")
+    private String behospitalWard;
+
+    /**
+     * 入院床位序号
+     */
+    @TableField("behospital_bed_id")
+    private String behospitalBedId;
+
+    /**
+     * 入院床位号码
+     */
+    @TableField("behospital_bed_code")
+    private String behospitalBedCode;
+
+    /**
+     * 转科科别
+     */
+    @TableField("change_dept")
+    private String changeDept;
+
+    /**
+     * 出院时间
+     */
+    @TableField("leave_hospital_date")
+    private Date leaveHospitalDate;
+
+    /**
+     * 出院科别
+     */
+    @TableField("leave_hospital_dept")
+    private String leaveHospitalDept;
+
+    /**
+     * 出院病房
+     */
+    @TableField("leave_hospital_ward")
+    private String leaveHospitalWard;
+
+    /**
+     * 出院床位序号
+     */
+    @TableField("leave_hospital_bed_id")
+    private String leaveHospitalBedId;
+
+    /**
+     * 出院床位号码
+     */
+    @TableField("leave_hospital_bed_code")
+    private String leaveHospitalBedCode;
+
+    /**
+     * 实际住院天数
+     */
+    @TableField("behospital_day_num")
+    private String behospitalDayNum;
+
+    /**
+     * 治疗类别(1.中医<1.1 中医;1.2 民族医>、2.中西医、3.西医 )
+     */
+    @TableField("treatment_type")
+    private String treatmentType;
+
+    /**
+     * 门急诊诊断
+     */
+    @TableField("outpatient_emr_diagnose")
+    private String outpatientEmrDiagnose;
+
+    /**
+     * 门急诊诊断(中医)
+     */
+    @TableField("outpatient_emr_ch_diagnose")
+    private String outpatientEmrChDiagnose;
+
+    /**
+     * 门急诊诊断编码
+     */
+    @TableField("outpatient_emr_diagnose_code")
+    private String outpatientEmrDiagnoseCode;
+
+    /**
+     * 门急诊诊断编码(中医)
+     */
+    @TableField("outpatient_emr_ch_diagnose_code")
+    private String outpatientEmrChDiagnoseCode;
+
+    /**
+     * 实施临床路径(1中医、2西医、3否)
+     */
+    @TableField("implementation_clinical_pathway")
+    private String implementationClinicalPathway;
+
+    /**
+     * 使用医疗机构中药制剂(1是、2否)
+     */
+    @TableField("is_chinese_medicine_preparation")
+    private String isChineseMedicinePreparation;
+
+    /**
+     * 使用中医诊疗设备(1是、2否)	
+     */
+    @TableField("is_chinese_diagnose_equipment")
+    private String isChineseDiagnoseEquipment;
+
+    /**
+     * 使用中医诊疗技术(1是 、2否)	
+     */
+    @TableField("is_chinese_diagnose_technology")
+    private String isChineseDiagnoseTechnology;
+
+    /**
+     * 辩证施护(1是、2否)
+     */
+    @TableField("dialectical_nursing")
+    private String dialecticalNursing;
+
+    /**
+     * 损伤中毒因素
+     */
+    @TableField("poison_factor")
+    private String poisonFactor;
+
+    /**
+     * 损伤中毒因素编码
+     */
+    @TableField("poison_factor_code")
+    private String poisonFactorCode;
+
+    /**
+     * 病理诊断
+     */
+    @TableField("pathology_diagnose")
+    private String pathologyDiagnose;
+
+    /**
+     * 病理诊断编码
+     */
+    @TableField("pathology_diagnose_code")
+    private String pathologyDiagnoseCode;
+
+    /**
+     * 病理诊断编号
+     */
+    @TableField("pathology_diagnose_id")
+    private String pathologyDiagnoseId;
+
+    /**
+     * 药物过敏
+     */
+    @TableField("is_med_allergy")
+    private String isMedAllergy;
+
+    /**
+     * 过敏药物
+     */
+    @TableField("med_allergy_name")
+    private String medAllergyName;
+
+    /**
+     * 死亡患者尸检
+     */
+    @TableField("autopsy")
+    private String autopsy;
+
+    /**
+     * 血型
+     */
+    @TableField("blood_type")
+    private String bloodType;
+
+    /**
+     * Rh
+     */
+    @TableField("rh")
+    private String rh;
+
+    /**
+     * 科主任
+     */
+    @TableField("dept_director")
+    private String deptDirector;
+
+    /**
+     * 主任医师
+     */
+    @TableField("director_doctor")
+    private String directorDoctor;
+
+    /**
+     * 主治医师
+     */
+    @TableField("attending_doctor")
+    private String attendingDoctor;
+
+    /**
+     * 住院医师
+     */
+    @TableField("behospital_doctor")
+    private String behospitalDoctor;
+
+    /**
+     * 责任护士
+     */
+    @TableField("response_nurse")
+    private String responseNurse;
+
+    /**
+     * 进修医师
+     */
+    @TableField("study_doctor")
+    private String studyDoctor;
+
+    /**
+     * 实习医师
+     */
+    @TableField("practice_doctor")
+    private String practiceDoctor;
+
+    /**
+     * 编码员
+     */
+    @TableField("encode_man")
+    private String encodeMan;
+
+    /**
+     * 病案质量
+     */
+    @TableField("home_page_quality")
+    private String homePageQuality;
+
+    /**
+     * 质控医师
+     */
+    @TableField("qc_doctor")
+    private String qcDoctor;
+
+    /**
+     * 质控护士
+     */
+    @TableField("qc_nurse")
+    private String qcNurse;
+
+    /**
+     * 质控日期
+     */
+    @TableField("qc_date")
+    private Date qcDate;
+
+    /**
+     * 离院方式
+     */
+    @TableField("leave_hospital_type")
+    private String leaveHospitalType;
+
+    /**
+     * 接收机构名称
+     */
+    @TableField("accept_org_code")
+    private String acceptOrgCode;
+
+    /**
+     * 31天内再住院计划
+     */
+    @TableField("again_behospital_plan")
+    private String againBehospitalPlan;
+
+    /**
+     * 再住院目的
+     */
+    @TableField("again_behospital_goal")
+    private String againBehospitalGoal;
+
+    /**
+     * 颅脑损伤患者昏迷前天数
+     */
+    @TableField("tbi_before_day")
+    private String tbiBeforeDay;
+
+    /**
+     * 颅脑损伤患者昏迷前小时
+     */
+    @TableField("tbi_before_hour")
+    private String tbiBeforeHour;
+
+    /**
+     * 颅脑损伤患者昏迷前分钟
+     */
+    @TableField("tbi_before_minute")
+    private String tbiBeforeMinute;
+
+    /**
+     * 颅脑损伤患者昏迷后天数
+     */
+    @TableField("tbi_after_day")
+    private String tbiAfterDay;
+
+    /**
+     * 颅脑损伤患者昏迷后小时
+     */
+    @TableField("tbi_after_hour")
+    private String tbiAfterHour;
+
+    /**
+     * 颅脑损伤患者昏迷后分钟
+     */
+    @TableField("tbi_after_minute")
+    private String tbiAfterMinute;
+
+    /**
+     * 总费用
+     */
+    @TableField("total_fee")
+    private String totalFee;
+
+    /**
+     * 自付金额
+     */
+    @TableField("own_fee")
+    private String ownFee;
+
+    /**
+     * 一般医疗服务费
+     */
+    @TableField("general_fee")
+    private String generalFee;
+
+    /**
+     * 一般治疗服务费
+     */
+    @TableField("service_fee")
+    private String serviceFee;
+
+    /**
+     * 护理费
+     */
+    @TableField("nurse_fee")
+    private String nurseFee;
+
+    /**
+     * 其他费用
+     */
+    @TableField("other_fee")
+    private String otherFee;
+
+    /**
+     * 病理诊断费
+     */
+    @TableField("pathology_fee")
+    private String pathologyFee;
+
+    /**
+     * 实验室诊断费
+     */
+    @TableField("lab_fee")
+    private String labFee;
+
+    /**
+     * 影像学诊断费
+     */
+    @TableField("pacs_fee")
+    private String pacsFee;
+
+    /**
+     * 临床诊断项目费
+     */
+    @TableField("clinic_diagnose_fee")
+    private String clinicDiagnoseFee;
+
+    /**
+     * 非手术治疗项目费
+     */
+    @TableField("not_operation_fee")
+    private String notOperationFee;
+
+    /**
+     * 临床物理治疗费
+     */
+    @TableField("clinic_physic_fee")
+    private String clinicPhysicFee;
+
+    /**
+     * 手术治疗费
+     */
+    @TableField("operation_treat_fee")
+    private String operationTreatFee;
+
+    /**
+     * 麻醉费
+     */
+    @TableField("anaesthesia_fee")
+    private String anaesthesiaFee;
+
+    /**
+     * 手术费
+     */
+    @TableField("operation_fee")
+    private String operationFee;
+
+    /**
+     * 康复类
+     */
+    @TableField("health_type_fee")
+    private String healthTypeFee;
+
+    /**
+     * 中医治疗费
+     */
+    @TableField("chn_treat_fee")
+    private String chnTreatFee;
+
+    /**
+     * 西药费
+     */
+    @TableField("western_med_fee")
+    private String westernMedFee;
+
+    /**
+     * 抗菌药物费用
+     */
+    @TableField("antibiosis_fee")
+    private String antibiosisFee;
+
+    /**
+     * 中成药费
+     */
+    @TableField("chn_med_fee")
+    private String chnMedFee;
+
+    /**
+     * 中草药费
+     */
+    @TableField("chn_herb_fee")
+    private String chnHerbFee;
+
+    /**
+     * 血费
+     */
+    @TableField("blood_fee")
+    private String bloodFee;
+
+    /**
+     * 白蛋白类制品费
+     */
+    @TableField("albumen_fee")
+    private String albumenFee;
+
+    /**
+     * 球蛋白类制品费
+     */
+    @TableField("globulin_fee")
+    private String globulinFee;
+
+    /**
+     * 凝血因子类制品费
+     */
+    @TableField("blood_factor_fee")
+    private String bloodFactorFee;
+
+    /**
+     * 细胞因子类制品费
+     */
+    @TableField("cell_factor_fee")
+    private String cellFactorFee;
+
+    /**
+     * 检查用一次性医用材料费
+     */
+    @TableField("check_material_fee")
+    private String checkMaterialFee;
+
+    /**
+     * 治疗用一次性医用材料费
+     */
+    @TableField("treat_material_fee")
+    private String treatMaterialFee;
+
+    /**
+     * 手术用一次性医用材料费
+     */
+    @TableField("operation_material_fee")
+    private String operationMaterialFee;
+
+    /**
+     * 其他类其他费
+     */
+    @TableField("other_type_fee")
+    private String otherTypeFee;
+
+    /**
+     * 单病种管理
+     */
+    @TableField("single_diag_manage")
+    private String singleDiagManage;
+
+    /**
+     * 临床路径管理
+     */
+    @TableField("clinic_pathway_manage")
+    private String clinicPathwayManage;
+
+    /**
+     * 门诊与住院
+     */
+    @TableField("is_outpatient_behospital")
+    private String isOutpatientBehospital;
+
+    /**
+     * 入院与出院
+     */
+    @TableField("is_leave_behospital")
+    private String isLeaveBehospital;
+
+    /**
+     * 术前与术后
+     */
+    @TableField("is_operation_before_after")
+    private String isOperationBeforeAfter;
+
+    /**
+     * 临床与病理
+     */
+    @TableField("is_clinic_pathology")
+    private String isClinicPathology;
+
+    /**
+     * 放射与病理
+     */
+    @TableField("is_radiate_pathology")
+    private String isRadiatePathology;
+
+    /**
+     * 病人抢救次数
+     */
+    @TableField("rescue_num")
+    private String rescueNum;
+
+    /**
+     * 病人抢救成功次数
+     */
+    @TableField("rescue_success_num")
+    private String rescueSuccessNum;
+
+    /**
+     * 是否为自动出院
+     */
+    @TableField("is_auto_leavehospital")
+    private String isAutoLeavehospital;
+
+    /**
+     * 转归情况
+     */
+    @TableField("return_to_type")
+    private String returnToType;
+
+    /**
+     * 是否删除,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("is_physical_restraint")
+    private String isPhysicalRestraint;
+
+    /**
+     * 入院前颅脑损伤患者昏迷时间
+     */
+    @TableField("tbi_behospital_before_time")
+    private String tbiBehospitalBeforeTime;
+
+    /**
+     * 入院后颅脑损伤患者昏迷时间
+     */
+    @TableField("tbi_behospital_after_time")
+    private String tbiBehospitalAfterTime;
+
+    /**
+     * 住院期间是否发生跌倒或坠床
+     */
+    @TableField("is_fall_bed")
+    private String isFallBed;
+
+    /**
+     * 医院感染
+     */
+    @TableField("is_nosocomial_infection")
+    private String isNosocomialInfection;
+
+    /**
+     * 入住ICU情况
+     */
+    @TableField("is_into_icu")
+    private String isIntoIcu;
+
+    /**
+     * 并发症情况
+     */
+    @TableField("is_complications")
+    private String isComplications;
+
+    /**
+     * 是否发生压疮
+     */
+    @TableField("is_pressure_sore")
+    private String isPressureSore;
+
+    /**
+     * 是否住院期间发生压疮
+     */
+    @TableField("is_behospital_pressure_sore")
+    private String isBehospitalPressureSore;
+
+    /**
+     * 非计划再次手术
+     */
+    @TableField("is_unplanned_reoperation")
+    private String isUnplannedReoperation;
+
+    /**
+     * 治疗结果
+     */
+    @TableField("treatment_results")
+    private String treatmentResults;
+
+    /**
+     * 并发症
+     */
+    @TableField("complications_results")
+    private String complicationsResults;
+
+    /**
+     * 感染部位
+     */
+    @TableField("infection_site")
+    private String infectionSite;
+
+    /**
+     * 住院期间有无告病危
+     */
+    @TableField("is_be_in_danger")
+    private String isBeInDanger;
+
+}

+ 103 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecord.java

@@ -0,0 +1,103 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *  实体类
+ * </p>
+ */
+@Data
+@TableName("med_medical_record")
+public class MedicalRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("rec_id")
+    private String recId;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 病人住院ID
+     */
+    @TableField("behospital_code")
+    private String behospitalCode;
+
+    /**
+     * 组织机构代码
+     */
+    @TableField("org_code")
+    private String orgCode;
+
+    /**
+     * 病历类别编号
+     */
+    @TableField("rec_type_id")
+    private String recTypeId;
+
+    /**
+     * 模块id
+     */
+    @TableField("mode_id")
+    private Long modeId;
+
+    /**
+     * 病历日期
+     */
+    @TableField("rec_date")
+    private Date recDate;
+
+    /**
+     * 病历标题
+     */
+    @TableField("rec_title")
+    private String recTitle;
+
+    /**
+     * 模板处理状态(0:未处理,1:已处理)
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 是否删除,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;
+
+}

+ 89 - 0
daqe-center/src/main/java/com/lantone/daqe/entity/MedicalRecordContent.java

@@ -0,0 +1,89 @@
+package com.lantone.daqe.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Blob;
+import java.util.Date;
+
+/**
+ * <p>
+ *  实体类
+ * </p>
+ */
+@Data
+@TableName("med_medical_record_content")
+public class MedicalRecordContent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病历ID
+     */
+    @TableId("rec_id")
+    private String recId;
+
+    /**
+     * 医院ID
+     */
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    /**
+     * 文书内容(blob)
+     */
+    @TableField("content_blob")
+    private Blob contentBlob;
+
+    /**
+     * 病历文本(文本)
+     */
+    @TableField("content_text")
+    private String contentText;
+
+    /**
+     * html文本信息
+     */
+    @TableField("html_text")
+    private String htmlText;
+
+    /**
+     * xml文本信息
+     */
+    @TableField("xml_text")
+    private String xmlText;
+
+    /**
+     * 是否删除,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;
+
+}

+ 42 - 0
daqe-center/src/main/java/com/lantone/daqe/enums/LossIsAuditedEnum.java

@@ -0,0 +1,42 @@
+package com.lantone.daqe.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 丢失人工核查注解
+ * @author: songxl
+ * @time: 2022/3/4 16:03
+ */
+public enum LossIsAuditedEnum {
+    FAIL_AUDITED("0", "未通过"),
+    SUCCESS_AUDITED("1", "已通过"),
+    NOT_AUDITED("2", "未核查");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    LossIsAuditedEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static LossIsAuditedEnum getEnum(String key) {
+        for (LossIsAuditedEnum item : LossIsAuditedEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        LossIsAuditedEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 41 - 0
daqe-center/src/main/java/com/lantone/daqe/enums/LossStatusEnum.java

@@ -0,0 +1,41 @@
+package com.lantone.daqe.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 丢失状态注解
+ * @author: songxl
+ * @time: 2022/3/4 16:03
+ */
+public enum LossStatusEnum {
+    IS_LOSS("0", "已丢失"),
+    NOT_LOSS("1", "已恢复");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    LossStatusEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static LossStatusEnum getEnum(String key) {
+        for (LossStatusEnum item : LossStatusEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        LossStatusEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 42 - 0
daqe-center/src/main/java/com/lantone/daqe/enums/LossTypeEnum.java

@@ -0,0 +1,42 @@
+package com.lantone.daqe.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 丢失类型注解
+ * @author: songxl
+ * @time: 2022/3/4 16:03
+ */
+public enum LossTypeEnum {
+    REC_LOSS("0", "文书丢失"),
+    HOMEPAGE_LOSS("1", "病案首页丢失"),
+    CODE_LOSS("2", "患者信息丢失");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    LossTypeEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static LossTypeEnum getEnum(String key) {
+        for (LossTypeEnum item : LossTypeEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        LossTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 41 - 0
daqe-center/src/main/java/com/lantone/daqe/enums/LossWayEnum.java

@@ -0,0 +1,41 @@
+package com.lantone.daqe.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 丢失途径注解
+ * @author: songxl
+ * @time: 2022/3/4 16:03
+ */
+public enum LossWayEnum {
+    OUT_LOSS("0", "外部丢失"),
+    IN_LOSS("1", "内部丢失");
+
+    @Getter
+    @Setter
+    private String key;
+
+    @Getter
+    @Setter
+    private String name;
+
+    LossWayEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static LossWayEnum getEnum(String key) {
+        for (LossWayEnum item : LossWayEnum.values()) {
+            if (item.key.equals(key)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        LossWayEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+}

+ 398 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java

@@ -1,16 +1,45 @@
 package com.lantone.daqe.facade;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.util.BeanUtil;
+import com.lantone.common.util.DateUtil;
+import com.lantone.common.util.EntityUtil;
+import com.lantone.common.util.ListUtil;
+import com.lantone.common.util.StringUtil;
+import com.lantone.common.util.SysUserUtils;
+import com.lantone.daqe.client.OperationLogService;
 import com.lantone.daqe.dto.GetBlockLossPageDTO;
+import com.lantone.common.dto.GetOperationLogDTO;
+import com.lantone.daqe.dto.HisMedicalRecordDTO;
 import com.lantone.daqe.dto.UpBlockLossByIdVO;
+import com.lantone.daqe.entity.BehospitalInfo;
 import com.lantone.daqe.entity.BlocklossResult;
+import com.lantone.daqe.entity.HomePage;
+import com.lantone.daqe.entity.MedicalRecord;
+import com.lantone.daqe.enums.LossStatusEnum;
+import com.lantone.daqe.enums.LossTypeEnum;
+import com.lantone.daqe.enums.LossWayEnum;
+import com.lantone.daqe.facade.base.BehospitalInfoFacade;
 import com.lantone.daqe.facade.base.BlocklossResultFacade;
+import com.lantone.common.vo.DataCompareVO;
+import com.lantone.daqe.facade.base.HomePageFacade;
+import com.lantone.daqe.facade.base.MedicalRecordFacade;
+import com.lantone.daqe.service.impl.BlocklossResultServiceImpl;
 import com.lantone.daqe.vo.GetBlockLossPageVO;
 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;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+
 /**
  * @Description: 病历数据丢失明细-业务处理类
  * @author: songxl
@@ -20,6 +49,16 @@ import org.springframework.stereotype.Component;
 public class BlockLossManagementFacade {
     @Autowired
     private BlocklossResultFacade blocklossResultFacade;
+    @Autowired
+    private BlocklossResultServiceImpl blocklossResultServiceImpl;
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    private HomePageFacade homePageFacade;
+    @Autowired
+    private MedicalRecordFacade medicalRecordFacade;
+    @Autowired
+    private OperationLogService operationLogService;
 
 
     /**
@@ -43,4 +82,363 @@ public class BlockLossManagementFacade {
         BeanUtils.copyProperties(upBlockLossByIdVO, blocklossResult);
         return blocklossResultFacade.updateById(blocklossResult);
     }
+
+    /**
+     * 数据对比
+     *
+     * @param dataCompareVO
+     * @Return java.lang.Boolean
+     */
+    public Boolean dataCompare(DataCompareVO dataCompareVO) {
+        Boolean flag = false;
+        //====1.获取已丢失状态记录,去数据库中对比判断是否补录
+        List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
+                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        if (ListUtil.isNotEmpty(lossResults)) {
+            Map<String, List<BlocklossResult>> lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
+            //更新以缺失数据的状态
+            flag = upBlockLossStatus(lossResultMap);
+        }
+
+        //====2.某时间的数据对比
+        //=====2.1获取数据
+
+        //获取his对应的数据
+        List<HisMedicalRecordDTO> hisMedicalRecords = getHisMedicalRecords(dataCompareVO);
+
+        //获取操作记录数据
+        //病历数据
+        dataCompareVO.setOperationUrl("save/saveBehospitalCode");
+        List<GetOperationLogDTO> behospitalCodeLogs = getOperationLog(dataCompareVO);
+        //病案首页数据
+        dataCompareVO.setOperationUrl("save/saveHomePages");
+        List<GetOperationLogDTO> homePageLogs = getOperationLog(dataCompareVO);
+        //文书数据
+        dataCompareVO.setOperationUrl("save/saveRecs");
+        List<GetOperationLogDTO> recLogs = getOperationLog(dataCompareVO);
+
+        //获取库中数据
+        //病历数据
+        List<String> dataBaseBehospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
+                .select("behospital_code")
+                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+        //病案首页数据
+        List<String> dataBaseHomePageIds = homePageFacade.list(new QueryWrapper<HomePage>()
+                .select("home_page_id")
+                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
+
+        //文书数据
+        List<String> dataBaseRecIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
+                .select("rec_id")
+                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
+
+
+        //=====2.2数据对比
+        //his与log日志做对比
+        if (ListUtil.isNotEmpty(hisMedicalRecords)) {
+            //获取His病历数据 - His病案首页数据
+            List<GetOperationLogDTO> medicalRecords = BeanUtil.listCopyTo(hisMedicalRecords, GetOperationLogDTO.class);
+            //获取His文书数据
+            List<GetOperationLogDTO> recs = new ArrayList<>();
+            hisMedicalRecords.stream().forEach(hisMedicalRecordDTO -> {
+                if (ListUtil.isNotEmpty(hisMedicalRecordDTO.getHisRecs())) {
+                    hisMedicalRecordDTO.getHisRecs().stream().forEach(hisRecDTO -> {
+                        GetOperationLogDTO medicalRecord = new GetOperationLogDTO();
+                        medicalRecord.setRecId(hisRecDTO.getRecId());
+                        medicalRecord.setRecId(hisRecDTO.getRecTitle());
+                        medicalRecord.setBehospitalCode(hisMedicalRecordDTO.getBehospitalCode());
+                        recs.add(medicalRecord);
+                    });
+
+                }
+            });
+            //外部丢失数据集合
+            List<BlocklossResult> outInserts = new ArrayList<>();
+            //文书数据对比
+            compareHisWithLog(recs, recLogs, "0", outInserts);
+            //病案首页数据对比
+            compareHisWithLog(medicalRecords, homePageLogs, "1", outInserts);
+            //病历数据对比
+            compareHisWithLog(medicalRecords, behospitalCodeLogs, "2", outInserts);
+            flag = blocklossResultServiceImpl.saveBatch(outInserts);
+        }
+
+        //日志与入库数据对比
+        //内部丢失数据集合
+        List<BlocklossResult> inInserts = new ArrayList<>();
+        if (ListUtil.isNotEmpty(dataBaseRecIds)) {
+            compareLogWithLocal(recLogs, dataBaseRecIds, "0", inInserts);
+        }
+        if (ListUtil.isNotEmpty(dataBaseHomePageIds)) {
+            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, "1", inInserts);
+        }
+        if (ListUtil.isNotEmpty(dataBaseBehospitalCodes)) {
+            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, "2", inInserts);
+        }
+        if (ListUtil.isNotEmpty(inInserts)) {
+            flag = blocklossResultServiceImpl.saveBatch(inInserts);
+        }
+        return flag;
+    }
+
+    /**
+     * 日志与入库数据对比
+     *
+     * @param logs      日志记录
+     * @param dataBases 入库数据
+     * @param type      对比类型:0:文书丢失 1:病案首页丢失 2:患者信息丢失
+     * @param inInserts 内部丢失插入集合
+     * @Return void
+     */
+    private void compareLogWithLocal(List<GetOperationLogDTO> logs, List<String> dataBases, String type, List<BlocklossResult> inInserts) {
+        switch (type) {
+            case "0":
+                //文书丢失
+                logs.stream().forEach(rec -> {
+                    //存在记录但是没有入库
+                    if (!dataBases.contains(rec.getRecId())) {
+                        BlocklossResult blocklossResult = new BlocklossResult();
+                        blocklossResult.setBehospitalCode(rec.getBehospitalCode());
+                        blocklossResult.setRecId(rec.getRecId());
+                        blocklossResult.setRecTitle(rec.getRecTitle());
+                        blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
+                        blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
+                        //拼装病历数据块丢失明细其他信息
+                        assembleOtherBlocklossResult(blocklossResult);
+                        inInserts.add(blocklossResult);
+                    }
+                });
+                break;
+            case "1":
+                //病案首页丢失
+                logs.stream().forEach(homePages -> {
+                    //存在记录但是没有入库
+                    if (!dataBases.contains(homePages.getRecId())) {
+                        BlocklossResult blocklossResult = new BlocklossResult();
+                        blocklossResult.setBehospitalCode(homePages.getBehospitalCode());
+                        blocklossResult.setRecId(homePages.getHomePageId());
+                        blocklossResult.setRecTitle("病案首页丢失");
+                        blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
+                        blocklossResult.setLossType(LossTypeEnum.HOMEPAGE_LOSS.getKey());
+                        //拼装病历数据块丢失明细其他信息
+                        assembleOtherBlocklossResult(blocklossResult);
+                        inInserts.add(blocklossResult);
+                    }
+                });
+                break;
+            case "2":
+                //患者信息丢失
+                logs.stream().forEach(beHehospitalInfo -> {
+                    //存在记录但是没有入库
+                    if (!dataBases.contains(beHehospitalInfo.getBehospitalCode())) {
+                        BlocklossResult blocklossResult = new BlocklossResult();
+                        blocklossResult.setBehospitalCode(beHehospitalInfo.getBehospitalCode());
+                        blocklossResult.setLossWay(LossWayEnum.IN_LOSS.getKey());
+                        blocklossResult.setLossType(LossTypeEnum.CODE_LOSS.getKey());
+                        //拼装病历数据块丢失明细其他信息
+                        assembleOtherBlocklossResult(blocklossResult);
+                        inInserts.add(blocklossResult);
+                    }
+                });
+                break;
+            default:
+                break;
+        }
+    }
+
+    /**
+     * 更新以缺失数据的状态
+     *
+     * @param lossResultMap
+     * @Return void
+     */
+    private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap) {
+        AtomicReference<Boolean> flag = new AtomicReference<>(false);
+        lossResultMap.keySet().stream().forEach(lossType -> {
+            //0:文书丢失 1:病案首页丢失 2:患者信息丢失
+            switch (lossType) {
+                case "0":
+                    //文书丢失
+                    List<String> redIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
+                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                            .in("rec_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId))
+                            .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode))
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                            .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
+                    //更新状态-已恢复
+                    if (ListUtil.isNotEmpty(redIds)) {
+                        flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
+                                .set("solve_time", DateUtil.now())
+                                .set("gmt_modified", DateUtil.now())
+                                .set("status", LossStatusEnum.NOT_LOSS.getKey())
+                                .set("modifier", SysUserUtils.getCurrentPrincipleId())
+                                .eq("loss_type", lossType)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                                .in("rec_id", redIds)));
+                    }
+                    break;
+                case "1":
+                    //病案首页丢失
+                    List<String> homePages = homePageFacade.list(new QueryWrapper<HomePage>()
+                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                            .in("home_page_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId))
+                            .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode))
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                            .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
+
+                    //更新状态-已恢复
+                    if (ListUtil.isNotEmpty(homePages)) {
+                        flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
+                                .set("solve_time", DateUtil.now())
+                                .set("gmt_modified", DateUtil.now())
+                                .set("status", LossStatusEnum.NOT_LOSS.getKey())
+                                .set("modifier", SysUserUtils.getCurrentPrincipleId())
+                                .eq("loss_type", lossType)
+                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                                .in("rec_id", homePages)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())));
+                    }
+                    break;
+                case "2":
+                    //患者信息丢失
+                    List<String> behospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
+                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                            .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode))
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                            .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+                    //更新状态-已恢复
+                    if (ListUtil.isNotEmpty(behospitalCodes)) {
+                        flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
+                                .set("solve_time", DateUtil.now())
+                                .set("gmt_modified", DateUtil.now())
+                                .set("status", LossStatusEnum.NOT_LOSS.getKey())
+                                .set("modifier", SysUserUtils.getCurrentPrincipleId())
+                                .eq("loss_type", lossType)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId())
+                                .in("behospital_code", behospitalCodes)));
+                    }
+                    break;
+                default:
+                    break;
+            }
+        });
+        return flag.get();
+    }
+
+    /**
+     * @param medicalRecords his数据
+     * @param logs           日志数据
+     * @param type           对比类型:0:文书丢失 1:病案首页丢失 2:患者信息丢失
+     * @param outInserts     外部丢失插入集合
+     * @Return void
+     */
+    private void compareHisWithLog(List<GetOperationLogDTO> medicalRecords, List<GetOperationLogDTO> logs, String type, List<BlocklossResult> outInserts) {
+        switch (type) {
+            case "0":
+                List<String> recLogs = logs.stream().map(GetOperationLogDTO::getRecId).collect(Collectors.toList());
+                medicalRecords.stream().forEach(medicalRecord -> {
+                    //文书不存在操作记录
+                    if (StringUtil.isNotEmpty(medicalRecord.getRecId()) && !recLogs.contains(medicalRecord.getRecId())) {
+                        BlocklossResult blocklossResult = new BlocklossResult();
+                        blocklossResult.setBehospitalCode(medicalRecord.getBehospitalCode());
+                        blocklossResult.setRecId(medicalRecord.getRecId());
+                        blocklossResult.setRecTitle(medicalRecord.getRecTitle());
+                        blocklossResult.setLossWay(LossWayEnum.OUT_LOSS.getKey());
+                        blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
+                        //拼装病历数据块丢失明细其他信息
+                        assembleOtherBlocklossResult(blocklossResult);
+                        outInserts.add(blocklossResult);
+                    }
+                });
+                break;
+            case "1":
+                List<String> homepageLogs = logs.stream().map(GetOperationLogDTO::getHomePageId).collect(Collectors.toList());
+                medicalRecords.stream().forEach(medicalRecord -> {
+                    //病案首页不存在操作记录
+                    if (StringUtil.isNotEmpty(medicalRecord.getHomePageId()) && !homepageLogs.contains(medicalRecord.getHomePageId())) {
+                        BlocklossResult blocklossResult = new BlocklossResult();
+                        blocklossResult.setBehospitalCode(medicalRecord.getBehospitalCode());
+                        blocklossResult.setRecId(medicalRecord.getHomePageId());
+                        blocklossResult.setRecTitle("病案首页丢失");
+                        blocklossResult.setLossWay(LossWayEnum.OUT_LOSS.getKey());
+                        blocklossResult.setLossType(LossTypeEnum.HOMEPAGE_LOSS.getKey());
+                        //拼装病历数据块丢失明细其他信息
+                        assembleOtherBlocklossResult(blocklossResult);
+                        outInserts.add(blocklossResult);
+                    }
+                });
+                break;
+            case "2":
+                List<String> behospitalCodeLogs = logs.stream().map(GetOperationLogDTO::getBehospitalCode).collect(Collectors.toList());
+                medicalRecords.stream().forEach(medicalRecord -> {
+                    //病历数据不存在操作记录
+                    if (!behospitalCodeLogs.contains(medicalRecord.getBehospitalCode())) {
+                        BlocklossResult blocklossResult = new BlocklossResult();
+                        blocklossResult.setBehospitalCode(medicalRecord.getBehospitalCode());
+                        blocklossResult.setLossWay(LossWayEnum.OUT_LOSS.getKey());
+                        blocklossResult.setLossType(LossTypeEnum.CODE_LOSS.getKey());
+                        //拼装病历数据块丢失明细其他信息
+                        assembleOtherBlocklossResult(blocklossResult);
+                        outInserts.add(blocklossResult);
+                    }
+                });
+                break;
+            default:
+                break;
+        }
+    }
+
+    /**
+     * 拼装病历数据块丢失明细其他信息
+     *
+     * @param blocklossResult
+     * @Return void
+     */
+    private void assembleOtherBlocklossResult(BlocklossResult blocklossResult) {
+        blocklossResult.setStatus(LossStatusEnum.IS_LOSS.getKey());
+        blocklossResult.setHospitalId(SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0);
+        blocklossResult.setGmtCreate(DateUtil.now());
+        blocklossResult.setCreator(SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0");
+        blocklossResult.setGmtModified(DateUtil.now());
+    }
+
+
+    /**
+     * 获取操作记录数据
+     *
+     * @param dataCompareVO
+     * @Return java.util.List<com.lantone.common.dto.GetOperationLogDTO>
+     */
+    private List<GetOperationLogDTO> getOperationLog(DataCompareVO dataCompareVO) {
+        return operationLogService.getOperationLog(dataCompareVO).getData();
+    }
+
+    /**
+     * 获取his对应的数据
+     *
+     * @param dataCompareVO
+     * @Return java.util.List<com.lantone.daqe.dto.HisMedicalRecordDTO>
+     */
+    private List<HisMedicalRecordDTO> getHisMedicalRecords(DataCompareVO dataCompareVO) {
+        //###模拟
+
+        return new ArrayList<>();
+    }
 }

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/base/BehospitalInfoFacade.java

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

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/base/HomePageFacade.java

@@ -0,0 +1,14 @@
+package com.lantone.daqe.facade.base;
+
+import com.lantone.daqe.service.impl.HomePageServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:med_home_page 业务类
+ * </p>
+ */
+@Component
+public class HomePageFacade extends HomePageServiceImpl {
+
+}

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/base/MedicalRecordContentFacade.java

@@ -0,0 +1,14 @@
+package com.lantone.daqe.facade.base;
+
+import com.lantone.daqe.service.impl.MedicalRecordContentServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:med_medical_record_content 业务类
+ * </p>
+ */
+@Component
+public class MedicalRecordContentFacade extends MedicalRecordContentServiceImpl {
+
+}

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/facade/base/MedicalRecordFacade.java

@@ -0,0 +1,14 @@
+package com.lantone.daqe.facade.base;
+
+import com.lantone.daqe.service.impl.MedicalRecordServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 表名:med_medical_record 业务类
+ * </p>
+ */
+@Component
+public class MedicalRecordFacade extends MedicalRecordServiceImpl {
+
+}

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/mapper/BehospitalInfoMapper.java

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

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/mapper/HomePageMapper.java

@@ -0,0 +1,13 @@
+package com.lantone.daqe.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.daqe.entity.HomePage;
+
+/**
+ * <p>
+ * 表名:med_home_page Mapper接口
+ * </p>
+ */
+public interface HomePageMapper extends BaseMapper<HomePage> {
+
+}

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/mapper/MedicalRecordContentMapper.java

@@ -0,0 +1,13 @@
+package com.lantone.daqe.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.daqe.entity.MedicalRecordContent;
+
+/**
+ * <p>
+ * 表名:med_medical_record_content Mapper接口
+ * </p>
+ */
+public interface MedicalRecordContentMapper extends BaseMapper<MedicalRecordContent> {
+
+}

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/mapper/MedicalRecordMapper.java

@@ -0,0 +1,13 @@
+package com.lantone.daqe.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.daqe.entity.MedicalRecord;
+
+/**
+ * <p>
+ * 表名:med_medical_record Mapper接口
+ * </p>
+ */
+public interface MedicalRecordMapper extends BaseMapper<MedicalRecord> {
+
+}

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/service/BehospitalInfoService.java

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

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/service/HomePageService.java

@@ -0,0 +1,13 @@
+package com.lantone.daqe.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.daqe.entity.HomePage;
+
+/**
+ * <p>
+ *  Service类
+ * </p>
+ */
+public interface HomePageService extends IService<HomePage> {
+
+}

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/service/MedicalRecordContentService.java

@@ -0,0 +1,13 @@
+package com.lantone.daqe.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.daqe.entity.MedicalRecordContent;
+
+/**
+ * <p>
+ *  Service类
+ * </p>
+ */
+public interface MedicalRecordContentService extends IService<MedicalRecordContent> {
+
+}

+ 13 - 0
daqe-center/src/main/java/com/lantone/daqe/service/MedicalRecordService.java

@@ -0,0 +1,13 @@
+package com.lantone.daqe.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.daqe.entity.MedicalRecord;
+
+/**
+ * <p>
+ *  Service类
+ * </p>
+ */
+public interface MedicalRecordService extends IService<MedicalRecord> {
+
+}

+ 17 - 0
daqe-center/src/main/java/com/lantone/daqe/service/impl/BehospitalInfoServiceImpl.java

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

+ 17 - 0
daqe-center/src/main/java/com/lantone/daqe/service/impl/HomePageServiceImpl.java

@@ -0,0 +1,17 @@
+package com.lantone.daqe.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.daqe.entity.HomePage;
+import com.lantone.daqe.mapper.HomePageMapper;
+import com.lantone.daqe.service.HomePageService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  Service实现类
+ * </p>
+ */
+@Service
+public class HomePageServiceImpl extends ServiceImpl<HomePageMapper, HomePage> implements HomePageService {
+
+}

+ 17 - 0
daqe-center/src/main/java/com/lantone/daqe/service/impl/MedicalRecordContentServiceImpl.java

@@ -0,0 +1,17 @@
+package com.lantone.daqe.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.daqe.entity.MedicalRecordContent;
+import com.lantone.daqe.mapper.MedicalRecordContentMapper;
+import com.lantone.daqe.service.MedicalRecordContentService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  Service实现类
+ * </p>
+ */
+@Service
+public class MedicalRecordContentServiceImpl extends ServiceImpl<MedicalRecordContentMapper, MedicalRecordContent> implements MedicalRecordContentService {
+
+}

+ 17 - 0
daqe-center/src/main/java/com/lantone/daqe/service/impl/MedicalRecordServiceImpl.java

@@ -0,0 +1,17 @@
+package com.lantone.daqe.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.daqe.entity.MedicalRecord;
+import com.lantone.daqe.mapper.MedicalRecordMapper;
+import com.lantone.daqe.service.MedicalRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  Service实现类
+ * </p>
+ */
+@Service
+public class MedicalRecordServiceImpl extends ServiceImpl<MedicalRecordMapper, MedicalRecord> implements MedicalRecordService {
+
+}

+ 2 - 2
daqe-center/src/main/java/com/lantone/daqe/vo/AddDrugVO.java

@@ -26,7 +26,7 @@ public class AddDrugVO implements Serializable {
     private Long hospitalId;
 
     @ApiModelProperty(value = "医院药品代码", required = true)
-    @NotBlank(message = "医院药品代码不能为空")
+//    @NotBlank(message = "医院药品代码不能为空")
     private String code;
 
     @ApiModelProperty(value = "医院药品名称", required = true)
@@ -34,7 +34,7 @@ public class AddDrugVO implements Serializable {
     private String name;
 
     @ApiModelProperty(value = "国药准字", required = true)
-    @NotBlank(message = "国药准字不能为空")
+//    @NotBlank(message = "国药准字不能为空")
     private String approvalNum;
 
 }

+ 2 - 2
daqe-center/src/main/java/com/lantone/daqe/vo/UpDrugByIdVO.java

@@ -30,7 +30,7 @@ public class UpDrugByIdVO implements Serializable {
     private Long hospitalId;
 
     @ApiModelProperty(value = "医院药品代码", required = true)
-    @NotBlank(message = "医院药品代码不能为空")
+//    @NotBlank(message = "医院药品代码不能为空")
     private String code;
 
     @ApiModelProperty(value = "医院药品名称", required = true)
@@ -38,7 +38,7 @@ public class UpDrugByIdVO implements Serializable {
     private String name;
 
     @ApiModelProperty(value = "国药准字", required = true)
-    @NotBlank(message = "国药准字不能为空")
+//    @NotBlank(message = "国药准字不能为空")
     private String approvalNum;
 
 }

+ 9 - 0
daqe-center/src/main/java/com/lantone/daqe/web/BlockLossManagementController.java

@@ -5,10 +5,12 @@ import com.lantone.common.api.CommonResult;
 import com.lantone.daqe.dto.GetBlockLossPageDTO;
 import com.lantone.daqe.dto.UpBlockLossByIdVO;
 import com.lantone.daqe.facade.BlockLossManagementFacade;
+import com.lantone.common.vo.DataCompareVO;
 import com.lantone.daqe.vo.GetBlockLossPageVO;
 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;
@@ -41,4 +43,11 @@ public class BlockLossManagementController {
         return CommonResult.success(blockLossManagementFacade.upBlockLossById(upBlockLossByIdVO));
     }
 
+    @ApiOperation(value = "数据对比 [by:songxl]", notes = "数据对比")
+    @PostMapping("/dataCompare")
+    @Transactional
+    public CommonResult<Boolean> dataCompare(@RequestBody @Valid DataCompareVO dataCompareVO) {
+        return CommonResult.success(blockLossManagementFacade.dataCompare(dataCompareVO));
+    }
+
 }

+ 5 - 0
daqe-center/src/main/resources/mapper/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.daqe.mapper.BehospitalInfoMapper">
+
+</mapper>

+ 4 - 10
daqe-center/src/main/resources/mapper/BlocklossResultMapper.xml

@@ -9,17 +9,11 @@
         rec_id,
         rec_title,
         loss_cause,
-        CASE WHEN loss_type = '0' THEN '文书丢失'
-        WHEN loss_type = '1' THEN '病案首页丢失'
-        ELSE '患者信息丢失' END AS loss_type,
-        CASE WHEN loss_way = '0' THEN '外部丢失'
-        ELSE '内部丢失' END AS loss_way,
+        loss_type,
+        loss_way,
         gmt_modified,
-        CASE WHEN `status` = '0' THEN '已丢失'
-        ELSE '已恢复' END AS `status`,
-        CASE WHEN loss_type = '0' THEN '未通过'
-        WHEN loss_type = '1' THEN '已通过'
-        ELSE '未核查' END AS is_audited
+        `status`,
+        is_audited
         FROM
         `dc_blockloss_result`
         WHERE

+ 5 - 0
daqe-center/src/main/resources/mapper/HomePageMapper.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.daqe.mapper.HomePageMapper">
+
+</mapper>

+ 5 - 0
daqe-center/src/main/resources/mapper/MedicalRecordContentMapper.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.daqe.mapper.MedicalRecordContentMapper">
+
+</mapper>

+ 5 - 0
daqe-center/src/main/resources/mapper/MedicalRecordMapper.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.daqe.mapper.MedicalRecordMapper">
+
+</mapper>

+ 42 - 0
daqe-center/src/main/resources/mapper/base/BaseBehospitalInfoMapper.xml

@@ -0,0 +1,42 @@
+<?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.daqe.mapper.BehospitalInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.daqe.entity.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="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>

+ 162 - 0
daqe-center/src/main/resources/mapper/base/BaseHomePageMapper.xml

@@ -0,0 +1,162 @@
+<?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.daqe.mapper.HomePageMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.daqe.entity.HomePage">
+        <id column="home_page_id" property="homePageId"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="behospital_code" property="behospitalCode"/>
+        <result column="hospital_code" property="hospitalCode"/>
+        <result column="hospital_name" property="hospitalName"/>
+        <result column="org_code" property="orgCode"/>
+        <result column="pay_type" property="payType"/>
+        <result column="health_card" property="healthCard"/>
+        <result column="behospital_num" property="behospitalNum"/>
+        <result column="file_code" property="fileCode"/>
+        <result column="name" property="name"/>
+        <result column="sex" property="sex"/>
+        <result column="birthday" property="birthday"/>
+        <result column="age" property="age"/>
+        <result column="age_unit" property="ageUnit"/>
+        <result column="nationality" property="nationality"/>
+        <result column="newborn_month" property="newbornMonth"/>
+        <result column="newborn_day" property="newbornDay"/>
+        <result column="newborn_weight" property="newbornWeight"/>
+        <result column="newborn_behospital_weight" property="newbornBehospitalWeight"/>
+        <result column="born_address" property="bornAddress"/>
+        <result column="born_place" property="bornPlace"/>
+        <result column="nation" property="nation"/>
+        <result column="identity_card_no" property="identityCardNo"/>
+        <result column="job_type" property="jobType"/>
+        <result column="marriage" property="marriage"/>
+        <result column="cur_address" property="curAddress"/>
+        <result column="cur_phone" property="curPhone"/>
+        <result column="cur_post_code" property="curPostCode"/>
+        <result column="residence_address" property="residenceAddress"/>
+        <result column="residence_post_code" property="residencePostCode"/>
+        <result column="work_address" property="workAddress"/>
+        <result column="work_phone" property="workPhone"/>
+        <result column="work_post_code" property="workPostCode"/>
+        <result column="contact_name" property="contactName"/>
+        <result column="contact_relation" property="contactRelation"/>
+        <result column="contact_address" property="contactAddress"/>
+        <result column="contact_phone" property="contactPhone"/>
+        <result column="behospital_way" property="behospitalWay"/>
+        <result column="behospital_date" property="behospitalDate"/>
+        <result column="behospital_dept" property="behospitalDept"/>
+        <result column="behospital_ward" property="behospitalWard"/>
+        <result column="behospital_bed_id" property="behospitalBedId"/>
+        <result column="behospital_bed_code" property="behospitalBedCode"/>
+        <result column="change_dept" property="changeDept"/>
+        <result column="leave_hospital_date" property="leaveHospitalDate"/>
+        <result column="leave_hospital_dept" property="leaveHospitalDept"/>
+        <result column="leave_hospital_ward" property="leaveHospitalWard"/>
+        <result column="leave_hospital_bed_id" property="leaveHospitalBedId"/>
+        <result column="leave_hospital_bed_code" property="leaveHospitalBedCode"/>
+        <result column="behospital_day_num" property="behospitalDayNum"/>
+        <result column="treatment_type" property="treatmentType"/>
+        <result column="outpatient_emr_diagnose" property="outpatientEmrDiagnose"/>
+        <result column="outpatient_emr_ch_diagnose" property="outpatientEmrChDiagnose"/>
+        <result column="outpatient_emr_diagnose_code" property="outpatientEmrDiagnoseCode"/>
+        <result column="outpatient_emr_ch_diagnose_code" property="outpatientEmrChDiagnoseCode"/>
+        <result column="implementation_clinical_pathway" property="implementationClinicalPathway"/>
+        <result column="is_chinese_medicine_preparation" property="isChineseMedicinePreparation"/>
+        <result column="is_chinese_diagnose_equipment" property="isChineseDiagnoseEquipment"/>
+        <result column="is_chinese_diagnose_technology" property="isChineseDiagnoseTechnology"/>
+        <result column="dialectical_nursing" property="dialecticalNursing"/>
+        <result column="poison_factor" property="poisonFactor"/>
+        <result column="poison_factor_code" property="poisonFactorCode"/>
+        <result column="pathology_diagnose" property="pathologyDiagnose"/>
+        <result column="pathology_diagnose_code" property="pathologyDiagnoseCode"/>
+        <result column="pathology_diagnose_id" property="pathologyDiagnoseId"/>
+        <result column="is_med_allergy" property="isMedAllergy"/>
+        <result column="med_allergy_name" property="medAllergyName"/>
+        <result column="autopsy" property="autopsy"/>
+        <result column="blood_type" property="bloodType"/>
+        <result column="rh" property="rh"/>
+        <result column="dept_director" property="deptDirector"/>
+        <result column="director_doctor" property="directorDoctor"/>
+        <result column="attending_doctor" property="attendingDoctor"/>
+        <result column="behospital_doctor" property="behospitalDoctor"/>
+        <result column="response_nurse" property="responseNurse"/>
+        <result column="study_doctor" property="studyDoctor"/>
+        <result column="practice_doctor" property="practiceDoctor"/>
+        <result column="encode_man" property="encodeMan"/>
+        <result column="home_page_quality" property="homePageQuality"/>
+        <result column="qc_doctor" property="qcDoctor"/>
+        <result column="qc_nurse" property="qcNurse"/>
+        <result column="qc_date" property="qcDate"/>
+        <result column="leave_hospital_type" property="leaveHospitalType"/>
+        <result column="accept_org_code" property="acceptOrgCode"/>
+        <result column="again_behospital_plan" property="againBehospitalPlan"/>
+        <result column="again_behospital_goal" property="againBehospitalGoal"/>
+        <result column="tbi_before_day" property="tbiBeforeDay"/>
+        <result column="tbi_before_hour" property="tbiBeforeHour"/>
+        <result column="tbi_before_minute" property="tbiBeforeMinute"/>
+        <result column="tbi_after_day" property="tbiAfterDay"/>
+        <result column="tbi_after_hour" property="tbiAfterHour"/>
+        <result column="tbi_after_minute" property="tbiAfterMinute"/>
+        <result column="total_fee" property="totalFee"/>
+        <result column="own_fee" property="ownFee"/>
+        <result column="general_fee" property="generalFee"/>
+        <result column="service_fee" property="serviceFee"/>
+        <result column="nurse_fee" property="nurseFee"/>
+        <result column="other_fee" property="otherFee"/>
+        <result column="pathology_fee" property="pathologyFee"/>
+        <result column="lab_fee" property="labFee"/>
+        <result column="pacs_fee" property="pacsFee"/>
+        <result column="clinic_diagnose_fee" property="clinicDiagnoseFee"/>
+        <result column="not_operation_fee" property="notOperationFee"/>
+        <result column="clinic_physic_fee" property="clinicPhysicFee"/>
+        <result column="operation_treat_fee" property="operationTreatFee"/>
+        <result column="anaesthesia_fee" property="anaesthesiaFee"/>
+        <result column="operation_fee" property="operationFee"/>
+        <result column="health_type_fee" property="healthTypeFee"/>
+        <result column="chn_treat_fee" property="chnTreatFee"/>
+        <result column="western_med_fee" property="westernMedFee"/>
+        <result column="antibiosis_fee" property="antibiosisFee"/>
+        <result column="chn_med_fee" property="chnMedFee"/>
+        <result column="chn_herb_fee" property="chnHerbFee"/>
+        <result column="blood_fee" property="bloodFee"/>
+        <result column="albumen_fee" property="albumenFee"/>
+        <result column="globulin_fee" property="globulinFee"/>
+        <result column="blood_factor_fee" property="bloodFactorFee"/>
+        <result column="cell_factor_fee" property="cellFactorFee"/>
+        <result column="check_material_fee" property="checkMaterialFee"/>
+        <result column="treat_material_fee" property="treatMaterialFee"/>
+        <result column="operation_material_fee" property="operationMaterialFee"/>
+        <result column="other_type_fee" property="otherTypeFee"/>
+        <result column="single_diag_manage" property="singleDiagManage"/>
+        <result column="clinic_pathway_manage" property="clinicPathwayManage"/>
+        <result column="is_outpatient_behospital" property="isOutpatientBehospital"/>
+        <result column="is_leave_behospital" property="isLeaveBehospital"/>
+        <result column="is_operation_before_after" property="isOperationBeforeAfter"/>
+        <result column="is_clinic_pathology" property="isClinicPathology"/>
+        <result column="is_radiate_pathology" property="isRadiatePathology"/>
+        <result column="rescue_num" property="rescueNum"/>
+        <result column="rescue_success_num" property="rescueSuccessNum"/>
+        <result column="is_auto_leavehospital" property="isAutoLeavehospital"/>
+        <result column="return_to_type" property="returnToType"/>
+        <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="is_physical_restraint" property="isPhysicalRestraint"/>
+        <result column="tbi_behospital_before_time" property="tbiBehospitalBeforeTime"/>
+        <result column="tbi_behospital_after_time" property="tbiBehospitalAfterTime"/>
+        <result column="is_fall_bed" property="isFallBed"/>
+        <result column="is_nosocomial_infection" property="isNosocomialInfection"/>
+        <result column="is_into_icu" property="isIntoIcu"/>
+        <result column="is_complications" property="isComplications"/>
+        <result column="is_pressure_sore" property="isPressureSore"/>
+        <result column="is_behospital_pressure_sore" property="isBehospitalPressureSore"/>
+        <result column="is_unplanned_reoperation" property="isUnplannedReoperation"/>
+        <result column="treatment_results" property="treatmentResults"/>
+        <result column="complications_results" property="complicationsResults"/>
+        <result column="infection_site" property="infectionSite"/>
+        <result column="is_be_in_danger" property="isBeInDanger"/>
+    </resultMap>
+
+</mapper>

+ 20 - 0
daqe-center/src/main/resources/mapper/base/BaseMedicalRecordContentMapper.xml

@@ -0,0 +1,20 @@
+<?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.daqe.mapper.MedicalRecordContentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.daqe.entity.MedicalRecordContent">
+        <id column="rec_id" property="recId"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="content_blob" property="contentBlob"/>
+        <result column="content_text" property="contentText"/>
+        <result column="html_text" property="htmlText"/>
+        <result column="xml_text" property="xmlText"/>
+        <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>

+ 23 - 0
daqe-center/src/main/resources/mapper/base/BaseMedicalRecordMapper.xml

@@ -0,0 +1,23 @@
+<?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.daqe.mapper.MedicalRecordMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.daqe.entity.MedicalRecord">
+        <id column="rec_id" property="recId"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="behospital_code" property="behospitalCode"/>
+        <result column="org_code" property="orgCode"/>
+        <result column="rec_type_id" property="recTypeId"/>
+        <result column="mode_id" property="modeId"/>
+        <result column="rec_date" property="recDate"/>
+        <result column="rec_title" property="recTitle"/>
+        <result column="status" property="status"/>
+        <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>

+ 6 - 2
dblayer-mbg/src/test/java/com/lantone/dblayermbg/CodeAutoGenerator.java

@@ -113,10 +113,14 @@ public class CodeAutoGenerator {
                 "dc_regular_result",
                 "dc_standardvalue_info",
                 "dc_standardvalue_mapping",
-                "dc_standardvalue_result"
+                "dc_standardvalue_result",
+                "med_behospital_info",
+                "med_home_page",
+                "med_medical_record",
+                "med_medical_record_content"
         };
         //生成的实体类忽略表前缀: 不需要则置空
-        String[] ENTITY_IGNORE_PREFIX = { "hos_", "dc_" };
+        String[] ENTITY_IGNORE_PREFIX = { "hos_", "dc_", "med_" };
 
         GeneratorUtil.create(moduleName_, parentPackagePath_, packageName_, username, password, url, TABLES, ENTITY_IGNORE_PREFIX);
     }

+ 49 - 10
security-center/src/main/java/com/lantone/security/facade/LogManagementFacade.java

@@ -1,9 +1,15 @@
 package com.lantone.security.facade;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.dto.AbnormalLogDTO;
+import com.lantone.common.dto.GetOperationLogDTO;
 import com.lantone.common.dto.LoginLogDTO;
 import com.lantone.common.dto.OperationLogDTO;
+import com.lantone.common.util.ListUtil;
+import com.lantone.common.util.StringUtil;
+import com.lantone.common.vo.DataCompareVO;
 import com.lantone.security.vo.GetAbnormalLogVO;
 import com.lantone.security.vo.GetAbnormalWayAndIpVO;
 import com.lantone.security.vo.GetLoginLogVO;
@@ -16,6 +22,8 @@ import com.lantone.security.facade.base.OperationLogFacade;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -44,7 +52,9 @@ public class LogManagementFacade {
         return loginLogFacade.getBaseMapper().getLoginLog(getLoginLogVO);
     }
 
-    /**查看登录日志登录用户|登录ip地址
+    /**
+     * 查看登录日志登录用户|登录ip地址
+     *
      * @Description:
      * @Param: [getLoginNameAndIpVO]
      * @return: java.util.List<java.lang.String>
@@ -55,13 +65,13 @@ public class LogManagementFacade {
         return loginLogFacade.getBaseMapper().getLoginLogNameAndIp(getLoginNameAndIpVO);
     }
 
-    public boolean addLoginLog(LoginLogDTO loginLog){
+    public boolean addLoginLog(LoginLogDTO loginLog) {
         loginLogFacade.getBaseMapper().addLoginLog(loginLog);
         return true;
     }
 
     /**
-     * @Description:  查看操作日志
+     * @Description: 查看操作日志
      * @Param: [getOperationLogVO]
      * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.lantone.common.dto.OperationLogDTO>
      * @Author: cy
@@ -72,7 +82,7 @@ public class LogManagementFacade {
     }
 
     /**
-     * @Description:  查看操作日志操作用户
+     * @Description: 查看操作日志操作用户
      * @Param: [operationName]
      * @return: java.util.List<java.lang.String>
      * @Author: cy
@@ -85,36 +95,65 @@ public class LogManagementFacade {
                 .list().stream().map(OperationLog::getOperationName).collect(Collectors.toList());
     }
 
-    public boolean addOperLog(OperationLogDTO operationLog){
+    public boolean addOperLog(OperationLogDTO operationLog) {
         operationLogFacade.getBaseMapper().addOperLog(operationLog);
         return true;
     }
 
     /**
-     * @Description:  查看异常日志
+     * @Description: 查看异常日志
      * @Param: [getAbnormalLogVO]
      * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.lantone.common.dto.AbnormalLogDTO>
      * @Author: cy
      * @Date: 2021/9/8
      */
     public IPage<AbnormalLogDTO> getAbnormalLog(GetAbnormalLogVO getAbnormalLogVO) {
-        return  abnormalLogFacade.getBaseMapper().getAbnormalLog(getAbnormalLogVO);
+        return abnormalLogFacade.getBaseMapper().getAbnormalLog(getAbnormalLogVO);
     }
 
     /**
-     * @Description:  查看异常日志请求方式|ip地址
+     * @Description: 查看异常日志请求方式|ip地址
      * @Param: [getAbnormalWayAndIpVO]
      * @return: java.util.List<java.lang.String>
      * @Author: cy
      * @Date: 2021/9/8
      */
     public List<String> getAbnormalLogWayAndIp(GetAbnormalWayAndIpVO getAbnormalWayAndIpVO) {
-        return  abnormalLogFacade.getBaseMapper().getAbnormalLogWayAndIp(getAbnormalWayAndIpVO);
+        return abnormalLogFacade.getBaseMapper().getAbnormalLogWayAndIp(getAbnormalWayAndIpVO);
     }
 
-    public boolean addOperErrorLog(AbnormalLogDTO abnormalLogDTO){
+    public boolean addOperErrorLog(AbnormalLogDTO abnormalLogDTO) {
         abnormalLogFacade.getBaseMapper().addOperErrorLog(abnormalLogDTO);
         return true;
     }
 
+    /**
+     * 获取操作记录数据
+     *
+     * @param dataCompareVO
+     * @Return java.util.List<com.lantone.common.dto.GetOperationLogDTO>
+     */
+    public List<GetOperationLogDTO> getOperationLogs(DataCompareVO dataCompareVO) {
+        List<GetOperationLogDTO> out = new ArrayList<>();
+        List<String> operationParams = operationLogFacade.list(new QueryWrapper<OperationLog>()
+                .select("operation_param")
+                .ge(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getStartDate() != null, "gmt_create", dataCompareVO.getStartDate())
+                .eq("operation_url", dataCompareVO.getOperationUrl()))
+                .stream().map(OperationLog::getOperationParam).collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(operationParams)) {
+            operationParams.stream().forEach(StrOperationParam -> {
+                GetOperationLogDTO getOperationLogDTO = new GetOperationLogDTO();
+                if (StringUtil.isNotEmpty(StrOperationParam) && "{".equals(StrOperationParam.substring(0, 1))) {
+                    JSONObject temp = JSONObject.parseObject(StrOperationParam);
+                    getOperationLogDTO.setBehospitalCode(temp.getString("behospitalCode"));
+                    getOperationLogDTO.setHomePageId(temp.getString("homePageId"));
+                    getOperationLogDTO.setRecId(temp.getString("recId"));
+                    getOperationLogDTO.setRecTitle(temp.getString("recTitle"));
+                }
+            });
+        }
+        return out;
+    }
+
 }

+ 8 - 0
security-center/src/main/java/com/lantone/security/web/LogManagementController.java

@@ -3,8 +3,10 @@ package com.lantone.security.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.api.CommonResult;
 import com.lantone.common.dto.AbnormalLogDTO;
+import com.lantone.common.dto.GetOperationLogDTO;
 import com.lantone.common.dto.LoginLogDTO;
 import com.lantone.common.dto.OperationLogDTO;
+import com.lantone.common.vo.DataCompareVO;
 import com.lantone.security.vo.GetAbnormalLogVO;
 import com.lantone.security.vo.GetAbnormalWayAndIpVO;
 import com.lantone.security.vo.GetLoginLogVO;
@@ -94,4 +96,10 @@ public class LogManagementController {
         return CommonResult.success(logManagementFacade.addOperErrorLog(abnormalLogDTO));
     }
 
+    @ApiOperation(value = "获取操作记录数据[by:songxl]")
+    @PostMapping("/getOperationLog")
+    public CommonResult<List<GetOperationLogDTO>> getOperationLog(@RequestBody DataCompareVO dataCompareVO) {
+        return CommonResult.success(logManagementFacade.getOperationLogs(dataCompareVO));
+    }
+
 }