Bläddra i källkod

修复sql语句、修复多收少收取值、增加返回amount,首页接口

lenovodn 2 år sedan
förälder
incheckning
96ee947826
19 ändrade filer med 383 tillägg och 263 borttagningar
  1. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/common/bo/mid/AuditMidDetailListResponse.java
  2. 1 2
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/common/bo/mid/response/MidAuditDetailResponse.java
  3. 4 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AdvanceWarningAuditMapper.java
  4. 9 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterwardsAuditMapper.java
  5. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/MidIncidentAuditMapper.java
  6. 16 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AdvanceWarningAuditMapper.xml
  7. 2 3
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterwardsAuditDetailMapper.xml
  8. 41 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterwardsAuditMapper.xml
  9. 3 4
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/MidIncidentAuditDetailMapper.xml
  10. 34 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/MidIncidentAuditMapper.xml
  11. 4 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAdvanceWarningAuditService.java
  12. 7 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAfterwardsAuditService.java
  13. 9 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IMidIncidentAuditService.java
  14. 6 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AdvanceWarningAuditServiceImpl.java
  15. 21 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AfterwardsAuditServiceImpl.java
  16. 173 241
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/HomePageServiceImpl.java
  17. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/MidIncidentAuditServiceImpl.java
  18. 13 10
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/ViolationAnalysisServiceImpl.java
  19. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vo/StaticResponse.java

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/common/bo/mid/AuditMidDetailListResponse.java

@@ -120,7 +120,7 @@ public class AuditMidDetailListResponse implements Serializable {
 
 //    @Excel(name = "金额", width = 15)
     @ApiModelProperty(value = "金额")
-    private BigDecimal amount;
+    private Double amount;
 
     @Excel(name = "异常-多收", width = 15)
     @ApiModelProperty(value = "异常-多收")

+ 1 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/common/bo/mid/response/MidAuditDetailResponse.java

@@ -50,9 +50,8 @@ public class MidAuditDetailResponse implements Serializable {
     @ApiModelProperty(value = "诊断信息")
     private List<DiagnosticInfoResponse> diagnosticInfoList;
 
-    @Excel(name = "项目所属类别", width = 15)
     @ApiModelProperty(value = "类型")
-
+    @Dict(dicCode = "PROJECT_USE_TYPE")
     private String projectType;
     @ApiModelProperty(value = "类型")
     private String projectCode;

+ 4 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AdvanceWarningAuditMapper.java

@@ -7,7 +7,9 @@ import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.medical.common.bo.before.*;
 import org.jeecg.modules.medical.entity.AdvanceWarningAudit;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: advance_warning_audit
@@ -50,4 +52,6 @@ public interface AdvanceWarningAuditMapper extends BaseMapper<AdvanceWarningAudi
     PrescriptionDetail loadTreatmentMasterInfoByPatientId(@Param("patientId") String patientId, String masterTableName);
 
     List<PrescriptionDetail> listPrescriptionsByCasePatientId(@Param("patientId") String patientId, @Param("tableName") String tableName);
+
+    List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate);
 }

+ 9 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterwardsAuditMapper.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.medical.mapper;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -14,6 +15,7 @@ import org.jeecg.modules.medical.entity.AfterwardsAudit;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.medical.entity.AfterwardsAuditDetail;
 import org.jeecg.modules.medical.entity.PrescriptionOrder;
+import org.jeecg.modules.medical.vo.StaticResponse;
 import org.jeecg.modules.system.entity.SysDepart;
 
 /**
@@ -99,4 +101,11 @@ public interface AfterwardsAuditMapper extends BaseMapper<AfterwardsAudit> {
     BigDecimal statisticsAfterAuditTotal(@Param("ew") AfterDeptDetailRequest afterwardsAuditDetail);
 
 
+    List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate);
+
+    List<StaticResponse> statisticsAfterRule(String startTime, String endTime);
+
+    List<StaticResponse> statisticsDoctorViolate(String startTime, String endTime);
+
+    List<StaticResponse> statisticsProject(String startTime, String endTime);
 }

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/MidIncidentAuditMapper.java

@@ -1,7 +1,10 @@
 package org.jeecg.modules.medical.mapper;
 
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,6 +14,7 @@ import org.jeecg.modules.medical.common.bo.mid.AuditMidDetailListResponse;
 import org.jeecg.modules.medical.common.bo.mid.request.AuditMidDetailListRequest;
 import org.jeecg.modules.medical.entity.MidIncidentAudit;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.medical.vo.StaticResponse;
 
 /**
  * @Description: mid_incident_audit
@@ -32,4 +36,10 @@ public interface MidIncidentAuditMapper extends BaseMapper<MidIncidentAudit> {
 
 
     List<DiagnosticInfoResponse> loadDiagnosticInfo(@Param("id") Integer id);
+
+    List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate);
+
+    List<StaticResponse> statisticsMidRule(String startTimeDate, String endTimeDate);
+
+    List<StaticResponse> statisticsDoctorViolate(String startTime, String endTime);
 }

+ 16 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AdvanceWarningAuditMapper.xml

@@ -12,7 +12,7 @@
             "" AS age, -- 年龄
             "" AS medicalInsurance, -- 是否医保(从主表查询)
             ad.visit_time AS visitDate, -- 就诊日期
-            "" AS visitSerialNumber, -- 就诊流水号(从主表查询)
+            ad. AS visitSerialNumber, -- 就诊流水号(从主表查询)
             ad.medical_dept_name AS medicalDeptName, -- 科室名称
             ad.medical_dept_code AS medicalDeptCode -- 科室编码
         FROM advance_warning_audit as ad
@@ -190,4 +190,19 @@
         </where>
 
     </select>
+    <select id="statisticsLine" resultType="java.lang.Integer">
+        SELECT
+            COUNT(a.id) AS num
+        FROM
+            medical_date m
+                LEFT JOIN
+            advance_warning_audit a ON CONCAT(YEAR(CURRENT_DATE), '-', m.mmdd) = DATE_FORMAT(a.create_time, '%Y-%m-%d')
+        WHERE
+            CONCAT(YEAR(CURRENT_DATE), '-', m.mmdd) BETWEEN DATE_FORMAT(#{startTimeDate}, '%Y-%m-%d')  AND DATE_FORMAT(#{endTimeDate}, '%Y-%m-%d')
+        GROUP BY
+            m.mmdd
+        ORDER BY
+            m.mmdd ASC;
+    </select>
+
 </mapper>

+ 2 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterwardsAuditDetailMapper.xml

@@ -14,11 +14,10 @@
             ad.visit_time AS visitDate, -- 就诊日期
             ad.outpatient_number AS visitSerialNumber, -- 就诊流水号(从主表查询)
             ad.medical_dept_name AS medicalDeptName, -- 科室名称
-            ad.medical_dept_code AS medicalDeptCode -- 科室编码
-                ,ad.treatment_type as treatmentType -- 就诊类型
+            ad.medical_dept_code AS medicalDeptCode, -- 科室编码
+            ad.treatment_type as treatmentType, -- 就诊类型
         ad.feedback_result
         FROM afterwards_audit as ad
---                  LEFT JOIN his_patient as p on ad.patient_id = p.patient_no
         WHERE ad.id = #{id,jdbcType=INTEGER}
     </select>
     <select id="beforeLoadPatientInfoById"

+ 41 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterwardsAuditMapper.xml

@@ -380,5 +380,46 @@
             </if>
         </where>
     </select>
+    <select id="statisticsLine" resultType="java.lang.Integer">
+        SELECT
+            COUNT(a.id) AS num
+        FROM
+            medical_date m
+                LEFT JOIN
+            afterwards_audit a ON CONCAT(YEAR(CURRENT_DATE), '-', m.mmdd) = DATE_FORMAT(a.create_time, '%Y-%m-%d')
+        WHERE
+            CONCAT(YEAR(CURRENT_DATE), '-', m.mmdd) BETWEEN DATE_FORMAT(#{startTimeDate}, '%Y-%m-%d')  AND DATE_FORMAT(#{endTimeDate}, '%Y-%m-%d')
+        GROUP BY
+            m.mmdd
+        ORDER BY
+            m.mmdd ASC;
+    </select>
+    <select id="statisticsAfterRule" resultType="org.jeecg.modules.medical.vo.StaticResponse">
+        SELECT      medical_project_name as name,    IFNULL(count(a.medical_project_code), 0) as num
+
+        FROM afterwards_audit_detail as a
+        where a.create_time BETWEEN DATE_FORMAT(#{startTime}, '%Y-%m-%d 00:00:00')  AND DATE_FORMAT(#{endTime}, '%Y-%m-%d 23:59:59')
+
+        GROUP BY a.medical_project_code
+        ORDER BY num DESC limit 5
+
+    </select>
+    <select id="statisticsDoctorViolate" resultType="org.jeecg.modules.medical.vo.StaticResponse">
+        SELECT  doctor_name as name,IFNULL(count(a.doctor_id), 0) as num
+        from afterwards_audit_detail a
+        where a.create_time BETWEEN DATE_FORMAT(#{startTime}, '%Y-%m-%d 00:00:00')  AND DATE_FORMAT(#{endTime}, '%Y-%m-%d 23:59:59')
+
+        GROUP BY a.doctor_id
+        ORDER BY num DESC limit 5
+
+    </select>
+    <select id="statisticsProject" resultType="org.jeecg.modules.medical.vo.StaticResponse">
+
+        SELECT  proejct_name as name,IFNULL(count(a.proejct_code), 0) as num
+        from afterwards_audit_detail a
+        where a.create_time BETWEEN DATE_FORMAT(#{startTime}, '%Y-%m-%d 00:00:00')  AND DATE_FORMAT(#{endTime}, '%Y-%m-%d 23:59:59')
+        GROUP BY a.proejct_code
+        ORDER BY num DESC limit 5
+    </select>
 
 </mapper>

+ 3 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/MidIncidentAuditDetailMapper.xml

@@ -12,7 +12,7 @@
             patient_age AS age, -- 年龄
             "" AS medicalInsurance, -- 是否医保(从主表查询)
             ad.visit_time AS visitDate, -- 就诊日期
-            "" AS visitSerialNumber, -- 就诊流水号(从主表查询)
+            ad.outpatient_number AS visitSerialNumber, -- 就诊流水号(从主表查询)
             ad.medical_dept_name AS medicalDeptName, -- 科室名称
             ad.medical_dept_code AS medicalDeptCode -- 科室编码
                 ,ad.treatment_type as treatmentType -- 就诊类型
@@ -28,8 +28,8 @@
             p.gender AS gender, -- 性别
             p.birthday AS birthday, -- 生日
             "" AS age, -- 年龄
-            "" AS medicalInsurance, -- 是否医保(从主表查询)
-            "" AS visitSerialNumber, -- 就诊流水号(从主表查询)
+            ad.medical_insurance_mark AS medicalInsurance, -- 是否医保(从主表查询)
+            ad.outpatient_number AS visitSerialNumber, -- 就诊流水号(从主表查询)
             ad.medical_dept_name AS medicalDeptName, -- 科室名称
             ad.medical_dept_code AS medicalDeptCode -- 科室编码
                 ,ad.treatment_type as treatmentType -- 就诊类型
@@ -236,7 +236,6 @@
             <if test="endTime != null and endTime != ''">
                 and <![CDATA[ create_time <= #{endTime} ]]>
             </if>
-
         </where>
         GROUP BY medical_ins_rule_info_code
         ORDER BY violationTotal DESC

+ 34 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/MidIncidentAuditMapper.xml

@@ -249,7 +249,8 @@
         mid.proejct_code as project_code,
         mid.proejct_name as project_name,
         mid.proejct_code ,
-        mid.proejct_name
+        mid.proejct_name,
+        mid.amount
 
         FROM
         mid_incident_audit_detail AS mid
@@ -275,5 +276,37 @@
                 RIGHT JOIN mid_incident_audit_diagnose as h ON ad.id = h.mid_incident_audit_id
         WHERE ad.id = #{id, jdbcType=INTEGER}
     </select>
+    <select id="statisticsLine" resultType="java.lang.Integer">
+        SELECT
+            COUNT(a.id) AS num
+        FROM
+            medical_date m
+                LEFT JOIN
+            mid_incident_audit a ON CONCAT(YEAR(CURRENT_DATE), '-', m.mmdd) = DATE_FORMAT(a.create_time, '%Y-%m-%d')
+        WHERE
+            CONCAT(YEAR(CURRENT_DATE), '-', m.mmdd) BETWEEN DATE_FORMAT(#{startTimeDate}, '%Y-%m-%d')  AND DATE_FORMAT(#{endTimeDate}, '%Y-%m-%d')
+        GROUP BY
+            m.mmdd
+        ORDER BY
+            m.mmdd ASC;
+    </select>
+    <select id="statisticsMidRule" resultType="org.jeecg.modules.medical.vo.StaticResponse">
+        SELECT  medical_project_name as name,IFNULL(count(m.medical_project_code), 0) as num,
+                 from mid_incident_audit_detail m
+        where m.create_time BETWEEN DATE_FORMAT(#{startTimeDate}, '%Y-%m-%d 00:00:00')  AND DATE_FORMAT(#{endTimeDate}, '%Y-%m-%d 23:59:59')
+        GROUP BY medical_project_code
+        ORDER BY num DESC limit 5
+    </select>
+    <select id="statisticsDoctorViolate" resultType="org.jeecg.modules.medical.vo.StaticResponse">
+
+
+
+        SELECT  doctor_name as name,IFNULL(count(m.doctor_id), 0) as num
+        from mid_incident_audit_detail m
+        where m.create_time BETWEEN DATE_FORMAT(#{startTimeDate}, '%Y-%m-%d 00:00:00')  AND DATE_FORMAT(#{endTimeDate}, '%Y-%m-%d 23:59:59')
+
+        GROUP BY m.doctor_id
+        ORDER BY num DESC limit 5
+    </select>
 
 </mapper>

+ 4 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAdvanceWarningAuditService.java

@@ -9,7 +9,9 @@ import org.jeecg.modules.medical.common.bo.before.PrescriptionDetail;
 import org.jeecg.modules.medical.entity.AdvanceWarningAudit;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: advance_warning_audit
@@ -54,4 +56,6 @@ public interface IAdvanceWarningAuditService extends IService<AdvanceWarningAudi
      * @return
      */
     List<PrescriptionDetail> listPrescriptionsByCaseAndPatientId(String patientId, String treatmentType);
+
+    List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate);
 }

+ 7 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAfterwardsAuditService.java

@@ -16,11 +16,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.medical.entity.AfterwardsAuditDetail;
 import org.jeecg.modules.medical.entity.MedicalDoctorAppealRecord;
 import org.jeecg.modules.medical.entity.PrescriptionOrder;
+import org.jeecg.modules.medical.vo.StaticResponse;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -136,5 +138,10 @@ public interface IAfterwardsAuditService extends IService<AfterwardsAudit> {
     ModelAndView auditExportXls(HttpServletRequest req, AfterwardsAudit afterwardsAudit, Class<AfterwardsAuditExportResponse> clazz, String title) throws UnsupportedEncodingException;
 
 
+    List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate);
 
+    List<StaticResponse> statisticsAfterRule(String startTime, String endTime);
+    List<StaticResponse> statisticsDoctorViolate(String startTime, String endTime);
+
+    List<StaticResponse> statisticsProject(String startTime, String endTime);
 }

+ 9 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IMidIncidentAuditService.java

@@ -9,9 +9,13 @@ import org.jeecg.modules.medical.common.bo.mid.request.AuditMidDetailListRequest
 import org.jeecg.modules.medical.entity.MidIncidentAudit;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.medical.entity.MidIncidentAuditDetail;
+import org.jeecg.modules.medical.vo.StaticResponse;
 
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: mid_incident_audit
@@ -50,4 +54,9 @@ public interface IMidIncidentAuditService extends IService<MidIncidentAudit> {
      * @return
      */
     List<DiagnosticInfoResponse> loadDiagnosticInfo(Integer midIncidentAuditId);
+
+    List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate);
+    List<StaticResponse> statisticsMidRule(String startTimeDate, String endTimeDate);
+
+    List<StaticResponse> statisticsDoctorViolate(String startTime, String endTime);
 }

+ 6 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AdvanceWarningAuditServiceImpl.java

@@ -24,6 +24,7 @@ import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: advance_warning_audit
@@ -288,4 +289,9 @@ public class AdvanceWarningAuditServiceImpl extends ServiceImpl<AdvanceWarningAu
         }
         return result;
     }
+
+    @Override
+    public List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate) {
+        return baseMapper.statisticsLine(startTimeDate,endTimeDate);
+    }
 }

+ 21 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AfterwardsAuditServiceImpl.java

@@ -27,6 +27,7 @@ import org.jeecg.modules.medical.entity.PrescriptionOrder;
 import org.jeecg.modules.medical.mapper.AfterwardsAuditMapper;
 import org.jeecg.modules.medical.ruleengine.projectcache.HisMedicalProjectCache;
 import org.jeecg.modules.medical.service.*;
+import org.jeecg.modules.medical.vo.StaticResponse;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.SysUserDepart;
@@ -659,4 +660,24 @@ public class AfterwardsAuditServiceImpl extends ServiceImpl<AfterwardsAuditMappe
         // 获取数据
         return exportUtilHelperService.commonExportXml(item -> clazz, title, exportList);
     }
+
+    @Override
+    public List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate) {
+        return baseMapper.statisticsLine(startTimeDate,endTimeDate);
+    }
+
+    @Override
+    public List<StaticResponse> statisticsAfterRule(String startTime, String endTime) {
+        return baseMapper.statisticsAfterRule(startTime,endTime);
+    }
+
+    @Override
+    public List<StaticResponse> statisticsDoctorViolate(String startTime, String endTime) {
+        return baseMapper.statisticsDoctorViolate(startTime,endTime);
+    }
+
+    @Override
+    public List<StaticResponse> statisticsProject(String startTime, String endTime) {
+        return baseMapper.statisticsProject(startTime,endTime);
+    }
 }

+ 173 - 241
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/HomePageServiceImpl.java

@@ -1,20 +1,26 @@
 package org.jeecg.modules.medical.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.aspectj.lang.annotation.Before;
+import org.jeecg.modules.medical.entity.AdvanceWarningAudit;
 import org.jeecg.modules.medical.response.DashboardStatisticsBarResponse;
 import org.jeecg.modules.medical.response.DashboardStatisticsDetailedItem;
 import org.jeecg.modules.medical.response.DashboardStatisticsLineResponse;
 import org.jeecg.modules.medical.response.DashboardStatisticsViolateResponse;
+import org.jeecg.modules.medical.service.IAdvanceWarningAuditService;
+import org.jeecg.modules.medical.service.IAfterwardsAuditService;
 import org.jeecg.modules.medical.service.IHomePageService;
+import org.jeecg.modules.medical.service.IMidIncidentAuditService;
+import org.jeecg.modules.medical.vo.StaticResponse;
+import org.jeecg.modules.system.entity.SysDictItem;
 import org.jeecg.modules.utils.DateTimeUtil;
 import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author Scott
@@ -25,6 +31,13 @@ import java.util.List;
 @Service
 public class HomePageServiceImpl implements IHomePageService {
 
+    @Autowired
+    private IAdvanceWarningAuditService advanceWarningAuditService;
+    @Autowired
+    private IMidIncidentAuditService midIncidentAuditService;
+    @Autowired
+    private IAfterwardsAuditService afterwardsAuditService;
+
     @Override
     public DashboardStatisticsBarResponse loadStatisticsBar(String startTime, String endTime) {
         DashboardStatisticsBarResponse sourceData = getSourceData();
@@ -46,28 +59,18 @@ public class HomePageServiceImpl implements IHomePageService {
             for (int i = 0; i <= diffDay; i++) {
                 Date ss = DateTimeUtil.addDay(startTimeDate, (long) i);
 
-                BigDecimal factor = new BigDecimal("1");
-                if (i > 0) {
-                    factor = getFactoryValue(i);
-                }
 
-                int t1 = new BigDecimal(sourceData.getSwipesTotal()).multiply(factor).intValue();
-                result.setSwipesTotal(result.getSwipesTotal() + t1);
+                result.setSwipesTotal(result.getSwipesTotal());
 
-                int t2 = new BigDecimal(sourceData.getBeforeReminderTotal()).multiply(factor).intValue();
-                result.setBeforeReminderTotal(result.getBeforeReminderTotal() + t2);
+                result.setBeforeReminderTotal(result.getBeforeReminderTotal());
 
-                int t3 = new BigDecimal(sourceData.getFormulaTotal()).multiply(factor).intValue();
-                result.setFormulaTotal(result.getFormulaTotal() + t3);
+                result.setFormulaTotal(result.getFormulaTotal());
 
-                int t4 = new BigDecimal(sourceData.getMiddleReviewTotal()).multiply(factor).intValue();
-                result.setMiddleReviewTotal(result.getMiddleReviewTotal() + t4);
+                result.setMiddleReviewTotal(result.getMiddleReviewTotal());
 
-                BigDecimal t5 = new BigDecimal(String.valueOf(sourceData.getViolationAmountTotal())).multiply(factor).setScale(2, BigDecimal.ROUND_HALF_UP);
-                result.setViolationAmountTotal(result.getViolationAmountTotal().add(t5));
+                result.setViolationAmountTotal(result.getViolationAmountTotal());
 
-                int t6 = new BigDecimal(sourceData.getAfterSupervisoryTotal()).multiply(factor).intValue();
-                result.setAfterSupervisoryTotal(result.getAfterSupervisoryTotal() + t6);
+                result.setAfterSupervisoryTotal(result.getAfterSupervisoryTotal());
             }
         }
 
@@ -85,28 +88,28 @@ public class HomePageServiceImpl implements IHomePageService {
         return sourceData;
     }
 
-
-    /**
-     * 根据天数获取因子数
-     * @param diffDay
-     * @return
-     */
-    @NotNull
-    public static BigDecimal getFactoryValue(long diffDay) {
-        BigDecimal factory1 = new BigDecimal(diffDay).multiply(new BigDecimal("0.12"));
-        if ((diffDay % 2) == 0) {
-            factory1 = factory1.subtract(new BigDecimal(diffDay).multiply(new BigDecimal("0.10")));
-        }
-        return factory1;
-    }
-
-    public static void main(String[] args) {
-        for (int i = 0; i < 20; i++) {
-            BigDecimal factoryValue = HomePageServiceImpl.getFactoryValue(i);
-            System.out.println(i);
-            System.out.println(factoryValue);
-        }
-    }
+//
+//    /**
+//     * 根据天数获取因子数
+//     * @param diffDay
+//     * @return
+//     */
+//    @NotNull
+//    public static BigDecimal getFactoryValue(long diffDay) {
+//        BigDecimal factory1 = new BigDecimal(diffDay).multiply(new BigDecimal("0.12"));
+//        if ((diffDay % 2) == 0) {
+//            factory1 = factory1.subtract(new BigDecimal(diffDay).multiply(new BigDecimal("0.10")));
+//        }
+//        return factory1;
+//    }
+//
+//    public static void main(String[] args) {
+//        for (int i = 0; i < 20; i++) {
+//            BigDecimal factoryValue = HomePageServiceImpl.getFactoryValue(i);
+//            System.out.println(i);
+//            System.out.println(factoryValue);
+//        }
+//    }
 
     @Override
     public DashboardStatisticsLineResponse loadStatisticsLine(String startTime, String endTime) {
@@ -130,29 +133,16 @@ public class HomePageServiceImpl implements IHomePageService {
 
         List<String> xDateList = new ArrayList<>();
 
-        for (int i = 0; i <= diffDay; i ++) {
+        for (int i = 0; i <= diffDay; i++) {
             Date ss = DateTimeUtil.addDay(startTimeDate, (long) i);
-
-            BigDecimal factor = new BigDecimal("1");
-            if (i > 0) {
-                factor = getFactoryValue(i);
-            }
-
-
-            // 事前提醒
-            int beforeReminderItem = new BigDecimal(sourceData.getBeforeReminderTotal()).multiply(factor).intValue();
-            beforeReminderList.add(beforeReminderItem);
-            // 事中审查
-            int middleReviewItem = new BigDecimal(sourceData.getMiddleReviewTotal()).multiply(factor).intValue();
-            middleReviewList.add(middleReviewItem);
-            // 事后监管
-            int after = new BigDecimal(sourceData.getAfterSupervisoryTotal()).multiply(factor).intValue();
-            afterList.add(after);
-
             String xDate = DateTimeUtil.formatterStr(ss, "MM-dd");
             xDateList.add(xDate);
-
         }
+
+        beforeReminderList = advanceWarningAuditService.statisticsLine(startTimeDate, endTimeDate);
+        middleReviewList = midIncidentAuditService.statisticsLine(startTimeDate, endTimeDate);
+        afterList = afterwardsAuditService.statisticsLine(startTimeDate, endTimeDate);
+
         JSONObject before = new JSONObject();
         before.put("title", "事前提醒");
         before.put("yData", beforeReminderList);
@@ -177,6 +167,7 @@ public class HomePageServiceImpl implements IHomePageService {
 
     /**
      * 违规分类明细
+     *
      * @param startTime
      * @param endTime
      * @return
@@ -184,6 +175,8 @@ public class HomePageServiceImpl implements IHomePageService {
     @Override
     public DashboardStatisticsViolateResponse loadStatisticsViolateRulesTop(String startTime, String endTime) {
         DashboardStatisticsBarResponse sourceData = this.loadStatisticsBar(startTime, endTime);
+
+
         DashboardStatisticsViolateResponse result = new DashboardStatisticsViolateResponse();
 //        Date startTimeDate = DateTimeUtil.parse(startTime, DateTimeUtil.FULL_STYLE);
 //        Date endTimeDate = DateTimeUtil.parse(endTime, DateTimeUtil.FULL_STYLE);
@@ -192,13 +185,13 @@ public class HomePageServiceImpl implements IHomePageService {
         // 生成事前规则类型排名
         DashboardStatisticsDetailedItem beforeRulesTop = generateBeforeRuleTop(sourceData);
         // 生成事中规则类型排名
-        DashboardStatisticsDetailedItem middleRulesTop = generateMiddleRuleTop(sourceData);
+        DashboardStatisticsDetailedItem middleRulesTop = generateMiddleRuleTop(startTime,endTime);
         // 生成事后规则类型排名
-        DashboardStatisticsDetailedItem afterRulesTop = generateAfterRuleTop(sourceData);
+        DashboardStatisticsDetailedItem afterRulesTop = generateAfterRuleTop(startTime,endTime);
         // 生成事中医生违规数排名前五
-        DashboardStatisticsDetailedItem middleDoctorsViolateTop = generateMiddleDoctorsViolateTop(sourceData);
+        DashboardStatisticsDetailedItem middleDoctorsViolateTop = generateMiddleDoctorsViolateTop(startTime,endTime);
         // 生成事后医生违规数排名前五
-        DashboardStatisticsDetailedItem afterDoctorsViolateTop = generateAfterDoctorsViolateTop(sourceData);
+        DashboardStatisticsDetailedItem afterDoctorsViolateTop = generateAfterDoctorsViolateTop(startTime,endTime);
 
         result.setBeforeRulesTop(beforeRulesTop);
         result.setMiddleRulesTop(middleRulesTop);
@@ -213,227 +206,166 @@ public class HomePageServiceImpl implements IHomePageService {
     public List<JSONObject> loadStatisticsPieChart(String startTime, String endTime) {
         List<JSONObject> result = new ArrayList<>();
 
-        DashboardStatisticsBarResponse sourceData = this.loadStatisticsBar(startTime, endTime);
-
-        Integer afterSupervisoryTotal = sourceData.getAfterSupervisoryTotal();
-
-        BigDecimal top1 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.25")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top2 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.13")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top3 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.15")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top4 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.11")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top5 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.05")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-
-        JSONObject item1 = new JSONObject();
-        item1.put("name", "心电图检查");
-        item1.put("value", top1);
-        result.add(item1);
-
-        JSONObject item2 = new JSONObject();
-        item2.put("name", "血塞通注射液");
-        item2.put("value", top2);
-        result.add(item2);
-
-        JSONObject item3 = new JSONObject();
-        item3.put("name", "血压检查");
-        item3.put("value", top3);
-        result.add(item3);
-
-        JSONObject item4 = new JSONObject();
-        item4.put("name", "血常规检查");
-        item4.put("value", top4);
-        result.add(item4);
-
-        JSONObject item5 = new JSONObject();
-        item5.put("name", "脉络宁注射液");
-        item5.put("value", top5);
-        result.add(item5);
+        List<StaticResponse>  hashMaps = afterwardsAuditService.statisticsProject(startTime, endTime);
+        hashMaps.forEach(it->{
+            JSONObject item = new JSONObject();
+            item.put("title",it.getName());
+            item.put("total", it.getNum());
+            result.add(item);
+        });
 
         return result;
     }
 
     /**
      * 事后医生违规数排名前五
-     * @param sourceData
+     *
+     * @param
      * @return
      */
-    private DashboardStatisticsDetailedItem generateAfterDoctorsViolateTop(DashboardStatisticsBarResponse sourceData) {
-        Integer afterSupervisoryTotal = sourceData.getAfterSupervisoryTotal();
+    private DashboardStatisticsDetailedItem generateAfterDoctorsViolateTop(String startTime,String endTime) {
+        Integer afterSupervisoryTotal = 121;
         DashboardStatisticsDetailedItem afterDoctorsViolateTop = new DashboardStatisticsDetailedItem();
-        afterDoctorsViolateTop.setTitle("事医生违规数排名前五");
+        afterDoctorsViolateTop.setTitle("事后医生违规数排名前五");
         afterDoctorsViolateTop.setTotal(afterSupervisoryTotal);
-        ArrayList<JSONObject> rule1 = new ArrayList<>();
+        ArrayList<JSONObject> rule = new ArrayList<>();
 
 
-        BigDecimal top1 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.25")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top2 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.13")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top3 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.15")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top4 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.11")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top5 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.03")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-
-        JSONObject item1 = new JSONObject();
-        item1.put("title", "陈晓利");
-        item1.put("total", top1);
-        rule1.add(item1);
-
-        JSONObject item2 = new JSONObject();
-        item2.put("title", "赵科林");
-        item2.put("total", top2);
-        rule1.add(item2);
-
-        JSONObject item3 = new JSONObject();
-        item3.put("title", "张鸿飞");
-        item3.put("total", top3);
-        rule1.add(item3);
-
-        JSONObject item4 = new JSONObject();
-        item4.put("title", "刘晓芳");
-        item4.put("total", top4);
-        rule1.add(item4);
-
-        JSONObject item5 = new JSONObject();
-        item5.put("title", "张利");
-        item5.put("total", top5);
-        rule1.add(item5);
-
-        afterDoctorsViolateTop.setList(rule1);
+        List<StaticResponse>  hashMaps = afterwardsAuditService.statisticsDoctorViolate(startTime, endTime);
+        hashMaps.forEach(it->{
+            JSONObject item = new JSONObject();
+            item.put("title",it.getName());
+            item.put("total", it.getNum());
+            rule.add(item);
+        });
+        afterDoctorsViolateTop.setList(rule);
         return afterDoctorsViolateTop;
     }
 
     /**
      * 生成事中医生违规数排名
-     * @param sourceData
+     *
+     * @param
      * @return
      */
-    private DashboardStatisticsDetailedItem generateMiddleDoctorsViolateTop(DashboardStatisticsBarResponse sourceData) {
+    private DashboardStatisticsDetailedItem generateMiddleDoctorsViolateTop(String startTime,String endTime) {
         // 事中提醒总和
-        Integer middleReviewTotal = sourceData.getMiddleReviewTotal();
+        Integer middleReviewTotal = 3456;
         DashboardStatisticsDetailedItem middleDoctorsViolateTop = new DashboardStatisticsDetailedItem();
         middleDoctorsViolateTop.setTitle("事中医生违规数排名前五");
         middleDoctorsViolateTop.setTotal(middleReviewTotal);
-        ArrayList<JSONObject> rule1 = new ArrayList<>();
-
-        BigDecimal top1 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.25")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top2 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.13")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top3 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.15")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top4 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.11")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top5 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.05")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-
-        JSONObject item1 = new JSONObject();
-        item1.put("title", "陈晓利");
-        item1.put("total", top1);
-        rule1.add(item1);
-
-        JSONObject item2 = new JSONObject();
-        item2.put("title", "张鸿飞");
-        item2.put("total", top2);
-        rule1.add(item2);
-
-        JSONObject item3 = new JSONObject();
-        item3.put("title", "赵科林");
-        item3.put("total", top3);
-        rule1.add(item3);
-
-        JSONObject item4 = new JSONObject();
-        item4.put("title", "刘晓芳");
-        item4.put("total", top4);
-        rule1.add(item4);
-
-        JSONObject item5 = new JSONObject();
-        item5.put("title", "张利");
-        item5.put("total", top5);
-        rule1.add(item5);
-        middleDoctorsViolateTop.setList(rule1);
+        ArrayList<JSONObject> rule = new ArrayList<>();
+
+        List<StaticResponse>  hashMaps = midIncidentAuditService.statisticsDoctorViolate(startTime, endTime);
+        hashMaps.forEach(it->{
+            JSONObject item = new JSONObject();
+            item.put("title",it.getName());
+            item.put("total", it.getNum());
+            rule.add(item);
+        });
+        middleDoctorsViolateTop.setList(rule);
         return middleDoctorsViolateTop;
     }
 
     /**
      * 生成事后规则类型排名
-     * @param sourceData
+     *
+     * @param
      * @return
      */
-    private DashboardStatisticsDetailedItem generateAfterRuleTop(DashboardStatisticsBarResponse sourceData) {
+    private DashboardStatisticsDetailedItem generateAfterRuleTop(String startTime,String endTime) {
         DashboardStatisticsDetailedItem afterRulesTop = new DashboardStatisticsDetailedItem();
         afterRulesTop.setTitle("事后规则类型排名");
-        ArrayList<JSONObject> rule1 = new ArrayList<>();
-        Integer afterSupervisoryTotal = sourceData.getAfterSupervisoryTotal();
+        ArrayList<JSONObject> rule = new ArrayList<>();
+        Integer afterSupervisoryTotal = 123;
         afterRulesTop.setTotal(afterSupervisoryTotal);
-        BigDecimal top1 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.25")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top2 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.13")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top3 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.15")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top4 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.11")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top5 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.05")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-
-        JSONObject item1 = new JSONObject();
-        item1.put("title", "不合理住院");
-        item1.put("total", top1);
-        rule1.add(item1);
 
-        JSONObject item2 = new JSONObject();
-        item2.put("title", "仅有I级护理病例统计");
-        item2.put("total", top2);
-        rule1.add(item2);
-
-        JSONObject item3 = new JSONObject();
-        item3.put("title", "限生育保险");
-        item3.put("total", top3);
-        rule1.add(item3);
 
-        JSONObject item4 = new JSONObject();
-        item4.put("title", "非医保支付中药引片");
-        item4.put("total", top4);
-        rule1.add(item4);
-
-        JSONObject item5 = new JSONObject();
-        item5.put("title", "不合理用药"); //TODO 等待数据
-        item5.put("total", top5);
-        rule1.add(item5);
-        afterRulesTop.setList(rule1);
+        List<StaticResponse>  hashMaps = afterwardsAuditService.statisticsAfterRule(startTime, endTime);
+        hashMaps.forEach(it->{
+            JSONObject item = new JSONObject();
+            item.put("title",it.getName());
+            item.put("total", it.getNum());
+            rule.add(item);
+        });
+//        BigDecimal top1 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.25")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
+//        BigDecimal top2 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.13")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
+//        BigDecimal top3 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.15")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
+//        BigDecimal top4 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.11")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
+//        BigDecimal top5 = new BigDecimal(afterSupervisoryTotal).multiply(new BigDecimal("0.05")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
+//
+//        JSONObject item1 = new JSONObject();
+//        item1.put("title", "不合理住院");
+//        item1.put("total", top1);
+//        rule1.add(item1);
+//
+//        JSONObject item2 = new JSONObject();
+//        item2.put("title", "仅有I级护理病例统计");
+//        item2.put("total", top2);
+//        rule1.add(item2);
+//
+//        JSONObject item3 = new JSONObject();
+//        item3.put("title", "限生育保险");
+//        item3.put("total", top3);
+//        rule1.add(item3);
+//
+//        JSONObject item4 = new JSONObject();
+//        item4.put("title", "非医保支付中药引片");
+//        item4.put("total", top4);
+//        rule1.add(item4);
+//
+//        JSONObject item5 = new JSONObject();
+//        item5.put("title", "不合理用药"); //TODO 等待数据
+//        item5.put("total", top5);
+//        rule1.add(item5);
+        afterRulesTop.setList(rule);
         return afterRulesTop;
     }
 
     /**
      * 生成事中规则类型排名
-     * @param sourceData
+     *
+     * @param
      * @return
      */
-    private DashboardStatisticsDetailedItem generateMiddleRuleTop(DashboardStatisticsBarResponse sourceData) {
+    private DashboardStatisticsDetailedItem generateMiddleRuleTop(String startTime, String endTime) {
         DashboardStatisticsDetailedItem middleRulesTop = new DashboardStatisticsDetailedItem();
         middleRulesTop.setTitle("事中规则类型排名");
-        ArrayList<JSONObject> rule1 = new ArrayList<>();
-
-        Integer middleReviewTotal = sourceData.getMiddleReviewTotal();
-        middleRulesTop.setTotal(middleReviewTotal);
-        BigDecimal top1 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.23")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top2 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.16")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top3 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.14")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top4 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.11")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-        BigDecimal top5 = new BigDecimal(middleReviewTotal).multiply(new BigDecimal("0.05")).setScale(0, BigDecimal.ROUND_HALF_DOWN);
-
-        JSONObject item1 = new JSONObject();
-        item1.put("title", "限适应症和支付疗程(药品)");
-        item1.put("total", top1);
-        rule1.add(item1);
-
-        JSONObject item2 = new JSONObject();
-        item2.put("title", "限适应症(药品)");
-        item2.put("total", top2);
-        rule1.add(item2);
-
-        JSONObject item3 = new JSONObject();
-        item3.put("title", "限医院等级适应症疗程(药品)");
-        item3.put("total", top3);
-        rule1.add(item3);
-
-        JSONObject item4 = new JSONObject();
-        item4.put("title", "限病种(药品)");
-        item4.put("total", top4);
-        rule1.add(item4);
-
-        JSONObject item5 = new JSONObject();
-        item5.put("title", "限适应症"); //TODO 等待数据
-        item5.put("total", top5);
-        rule1.add(item5);
-        middleRulesTop.setList(rule1);
+        ArrayList<JSONObject> rule = new ArrayList<>();
+        Integer total = 345;
+        middleRulesTop.setTotal(total);
+        List<StaticResponse>  hashMaps = midIncidentAuditService.statisticsMidRule(startTime, endTime);
+        hashMaps.forEach(it->{
+            JSONObject item = new JSONObject();
+            item.put("title",it.getName());
+            item.put("total", it.getNum());
+            rule.add(item);
+        });
+//        JSONObject item1 = new JSONObject();
+//        item1.put("title", "限适应症和支付疗程(药品)");
+//        item1.put("total", top1);
+//        rule1.add(item1);
+//
+//        JSONObject item2 = new JSONObject();
+//        item2.put("title", "限适应症(药品)");
+//        item2.put("total", top2);
+//        rule1.add(item2);
+//
+//        JSONObject item3 = new JSONObject();
+//        item3.put("title", "限医院等级适应症疗程(药品)");
+//        item3.put("total", top3);
+//        rule1.add(item3);
+//
+//        JSONObject item4 = new JSONObject();
+//        item4.put("title", "限病种(药品)");
+//        item4.put("total", top4);
+//        rule1.add(item4);
+//
+//        JSONObject item5 = new JSONObject();
+//        item5.put("title", "限适应症"); //TODO 等待数据
+//        item5.put("total", top5);
+//        rule1.add(item5);
+        middleRulesTop.setList(rule);
         return middleRulesTop;
     }
 

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/MidIncidentAuditServiceImpl.java

@@ -8,12 +8,16 @@ import org.jeecg.modules.medical.common.bo.mid.request.AuditMidDetailListRequest
 import org.jeecg.modules.medical.entity.MidIncidentAudit;
 import org.jeecg.modules.medical.mapper.MidIncidentAuditMapper;
 import org.jeecg.modules.medical.service.IMidIncidentAuditService;
+import org.jeecg.modules.medical.vo.StaticResponse;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: mid_incident_audit
@@ -57,4 +61,19 @@ public class MidIncidentAuditServiceImpl extends ServiceImpl<MidIncidentAuditMap
     public List<DiagnosticInfoResponse> loadDiagnosticInfo(Integer midIncidentAuditId) {
         return baseMapper.loadDiagnosticInfo(midIncidentAuditId);
     }
+
+    @Override
+    public List<Integer> statisticsLine(Date startTimeDate, Date endTimeDate) {
+        return baseMapper.statisticsLine(startTimeDate,endTimeDate);
+    }
+
+    @Override
+    public List<StaticResponse> statisticsMidRule(String startTimeDate, String endTimeDate) {
+        return baseMapper.statisticsMidRule(startTimeDate,endTimeDate);
+    }
+
+    @Override
+    public List<StaticResponse> statisticsDoctorViolate(String startTime, String endTime) {
+        return baseMapper.statisticsDoctorViolate( startTime,  endTime);
+    }
 }

+ 13 - 10
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/ViolationAnalysisServiceImpl.java

@@ -233,6 +233,7 @@ public class ViolationAnalysisServiceImpl implements IViolationAnalysisService {
         result.setCreateTime(detailInfo.getCreateTime());
         result.setProjectCode(detailInfo.getProjectCode());
         result.setProjectName(detailInfo.getProjectName());
+        result.setAmount(detailInfo.getAmount());
         // 构建违规项目/药品明细
         ViolationsProjectMedicinesDetail v = new ViolationsProjectMedicinesDetail();
         v.setMedicalProjectCode(detailInfo.getMedicalProjectCode());
@@ -242,17 +243,19 @@ public class ViolationAnalysisServiceImpl implements IViolationAnalysisService {
         v.setMedicalInsuranceMark(detailInfo.getMedicalInsuranceMark());
         v.setPrice(detailInfo.getPrice());
         v.setMedicalNumber(detailInfo.getMedicalNumber());
+        v.setErrorRelativelyManyAmt(detailInfo.getErrorRelativelyManyAmt());
+        v.setErrorRelativelyFewAmt(detailInfo.getErrorRelativelyFewAmt());
         // 处理异常多收,少收
-        BigDecimal detailTotalAmt = midIncidentAuditService.statissticsErrAmtByMidAuditRecordId(detailId);
-        v.setErrorRelativelyFewAmt(new BigDecimal("0.00"));
-        v.setErrorRelativelyManyAmt(new BigDecimal("0.00"));
-        if (null != detailTotalAmt) {
-            if (detailTotalAmt.compareTo(BigDecimal.ZERO) > 0) { // 异常金额大于0,就是多收
-                v.setErrorRelativelyManyAmt(detailTotalAmt);
-            } else if (detailTotalAmt.compareTo(BigDecimal.ZERO) < 0) {
-                v.setErrorRelativelyFewAmt(detailTotalAmt);
-            }
-        }
+//        BigDecimal detailTotalAmt = midIncidentAuditService.statissticsErrAmtByMidAuditRecordId(detailId);
+//        v.setErrorRelativelyFewAmt(new BigDecimal("0.00"));
+//        v.setErrorRelativelyManyAmt(new BigDecimal("0.00"));
+//        if (null != detailTotalAmt) {
+//            if (detailTotalAmt.compareTo(BigDecimal.ZERO) > 0) { // 异常金额大于0,就是多收
+//                v.setErrorRelativelyManyAmt(detailTotalAmt);
+//            } else if (detailTotalAmt.compareTo(BigDecimal.ZERO) < 0) {
+//                v.setErrorRelativelyFewAmt(detailTotalAmt);
+//            }
+//        }
         List<ViolationsProjectMedicinesDetail> violationsProjectMedicinesDetails = new ArrayList<>();
         violationsProjectMedicinesDetails.add(v);
         result.setLists(violationsProjectMedicinesDetails);

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vo/StaticResponse.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.medical.vo;
+
+import lombok.Data;
+
+@Data
+public class StaticResponse {
+    private String name;
+
+    private Integer num;
+}