xiaochan 4 лет назад
Родитель
Сommit
ce8def8a4e

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>9.8.7</version>
+    <version>9.8.9</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 7 - 0
src/main/java/thyyxxk/webserver/controller/querydata/QueryDrugsAndProjectsController.java

@@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.*;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.querydata.QueryDrugsAndProjects;
+import thyyxxk.webserver.entity.reports.illegalchargesanalysis.IllegalChargeData;
+import thyyxxk.webserver.entity.reports.illegalchargesanalysis.IllegalChargeTemplate;
 import thyyxxk.webserver.service.querydata.QueryDrugsAndProjectsService;
 
 import javax.servlet.http.HttpServletResponse;
@@ -68,4 +70,9 @@ public class QueryDrugsAndProjectsController {
         return service.yaoPinHuoXiangMuCode(pyCode, flag);
     }
 
+    @PostMapping("/chaXunJianYanJianCha")
+    public ResultVo<List<IllegalChargeData>> chaXunJianYanJianCha(@RequestBody IllegalChargeTemplate param) {
+        return service.chaXunJianYanJianCha(param);
+    }
+
 }

+ 10 - 0
src/main/java/thyyxxk/webserver/controller/yibao/xiangMuLuRuController.java

@@ -67,4 +67,14 @@ public class xiangMuLuRuController {
     public ResultVo<String> shangChuanMuBan(@RequestBody ZyDetailCharge zyDetailCharge) {
         return service.shangChuanMuBan(zyDetailCharge);
     }
+
+    @PostMapping("/getXiangTongFeiYong")
+    public ResultVo<List<ZyDetailCharge>> getXiangTongFeiYong(@RequestBody ZyDetailCharge param) {
+        return service.getXiangTongFeiYong(param);
+    }
+
+    @PostMapping("/kaiShiPiPei")
+    public ResultVo<String> kaiShiPiPei(@RequestBody ZyDetailCharge param) {
+        return service.kaiShiPiPei(param);
+    }
 }

+ 49 - 7
src/main/java/thyyxxk/webserver/dao/his/querydata/QueryDrugsAndProjectsDao.java

@@ -5,7 +5,9 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
+import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
 import thyyxxk.webserver.entity.querydata.QueryDrugsAndProjects;
+import thyyxxk.webserver.entity.reports.illegalchargesanalysis.IllegalChargeData;
 
 import java.util.List;
 
@@ -48,7 +50,7 @@ public interface QueryDrugsAndProjectsDao {
             "from zy_detail_charge a , zd_charge_item b ,  zd_charge_class c " +
             "where  a.charge_code_mx=b.code and b.class_code=c.code " +
             "<if test=\"startTime!=null and startTime!=''\">" +
-            "and charge_date&gt;=#{startTime} and charge_date&lt;#{endTime} " +
+            "and charge_date&gt;=#{startTime} and charge_date&lt;=#{endTime} " +
             "</if>" +
             "<if test=\"classCode!=null and classCode!=''\">" +
             "and b.class_code=#{classCode} " +
@@ -66,7 +68,7 @@ public interface QueryDrugsAndProjectsDao {
             "from mz_charge_detail_b a , zd_charge_item b , zd_charge_class c " +
             "where a.charge_item_code=b.code and b.class_code=c.code " +
             "<if test=\"startTime!=null and startTime!=''\">" +
-            "and a.charge_date&gt;=#{startTime} and a.charge_date&lt;#{endTime} " +
+            "and a.charge_date&gt;=#{startTime} and a.charge_date&lt;=#{endTime} " +
             "</if>" +
             "<if test=\"classCode!=null and classCode!=''\">" +
             "and b.class_code=#{classCode} " +
@@ -91,7 +93,8 @@ public interface QueryDrugsAndProjectsDao {
      */
     @Select("select * from (" +
             "SELECT " +
-            "    a.inpatient_no patient,a.admiss_times times,rtrim(b.name) name,b.social_no social_no,b.employer_tel phone,c.admiss_date,c.dis_date,a.charge_date charge_date, " +
+            "    rtrim(a.inpatient_no) patient,a.admiss_times times,rtrim(b.name) name,b.social_no social_no," +
+            "b.employer_tel phone,c.admiss_date,c.dis_date,a.charge_date charge_date, " +
             "    (select name from zd_unit_code where code=c.small_dept) dept, " +
             "    (select name from zy_zd_responce_type where code=c.responce_type) yb_type, " +
             "    sum(a.charge_amount) number,sum(a.charge_fee) amount_of_money,charge_code_mx charge_code,source='住院' " +
@@ -104,7 +107,7 @@ public interface QueryDrugsAndProjectsDao {
             "group by charge_code_mx,a.inpatient_no,a.admiss_times,b.name,b.social_no,b.employer_tel,c.admiss_date,c.dis_date,c.small_dept,c.responce_type,a.charge_date " +
             "union all " +
             "SELECT " +
-            "    a.inpatient_no patient,a.admiss_times times,rtrim(b.name) name ,b.social_no social_no,b.employer_tel phone,c.admiss_date,c.dis_date,a.charge_date, " +
+            "    rtrim(a.inpatient_no) patient,a.admiss_times times,rtrim(b.name) name ,b.social_no social_no,b.employer_tel phone,c.admiss_date,c.dis_date,a.charge_date, " +
             "    (select name from zd_unit_code where code=c.small_dept) dept, " +
             "    (select name from zy_zd_responce_type where code=c.responce_type) yb_type, " +
             "    sum(a.charge_amount) number,sum(a.charge_fee) amount_of_money,charge_code_mx charge_code,source = '住院' " +
@@ -116,7 +119,7 @@ public interface QueryDrugsAndProjectsDao {
             "  and charge_date >= #{startTime} and charge_date <= #{endTime} " +
             "group by charge_code_mx,a.inpatient_no,a.admiss_times,b.name,b.social_no,b.employer_tel,c.admiss_date,c.dis_date,c.small_dept,c.responce_type,a.charge_date " +
             "union all " +
-            "    select a.patient_id patient,a.times times,rtrim(b.name) name ,b.social_no social_no,b.phone_no phone,a.charge_date admiss_date,dis_date = null,a.charge_date charge_date, " +
+            "    select rtrim(a.patient_id) patient,a.times times,rtrim(b.name) name ,b.social_no social_no,b.phone_no phone,a.charge_date admiss_date,dis_date = null,a.charge_date charge_date, " +
             "    (select name from zd_unit_code where code = a.exec_dept) dept, " +
             "           yb_type = '自费',sum(a.quantity*a.drug_win) number,sum(a.quantity*drug_win*unit_price) amount_of_money,a.charge_item_code,source = '门诊' " +
             "           from mz_charge_detail_b a,mz_patient_mi b " +
@@ -144,7 +147,7 @@ public interface QueryDrugsAndProjectsDao {
             "where " +
             "1=1 " +
             "<if test=\"startTime!=null and startTime!=''\">" +
-            "and charge_date&gt;=#{startTime} and charge_date&lt;#{endTime} " +
+            "and charge_date&gt;=#{startTime} and charge_date&lt;=#{endTime} " +
             "</if>" +
             "<if test=\"kssFlag!=null and kssFlag!=''\">" +
             "and b.kss_flag=#{kssFlag} " +
@@ -166,7 +169,7 @@ public interface QueryDrugsAndProjectsDao {
             "where " +
             "1=1 " +
             "<if test=\"startTime!='' and startTime!=null\">" +
-            "and a.charge_date&gt;=#{startTime} and a.charge_date&lt;#{endTime} " +
+            "and a.charge_date&gt;=#{startTime} and a.charge_date&lt;=#{endTime} " +
             "</if>" +
             "<if test=\"kssFlag!=null and kssFlag!=''\">" +
             "and b.kss_flag=#{kssFlag}  " +
@@ -220,6 +223,45 @@ public interface QueryDrugsAndProjectsDao {
     @Select("select rtrim(code) code,rtrim(name) name from ${tableName} where py_code like #{pyCode}")
     List<GetDropdownBox> chaXunXiangMuhuoYaoPinCode(@Param("tableName") String tableName,
                                                     @Param("pyCode") String pyCode);
+
+
+    @Select("<script>" +
+            "select rtrim(b.inpatient_no) inpatient_no,rtrim(a.name) name,a.responce_type,b.admiss_times,sum(b.charge4+b.charge6+b.charge8+b.charge9+b.charge11+b.charge18) jianChaFei," +
+            "sum(b.charge13) jianYanFei,sum(b.total_charge) zongFeiYong, " +
+            "       (sum(b.charge4+b.charge6+b.charge8+b.charge9+b.charge11+b.charge18)+sum(b.charge13))/sum(b.total_charge) jcjyfzb, " +
+            "       a.admiss_date,a.dis_date, (select name from zd_unit_code where code=a.small_dept) deptName " +
+            "from zy_inactpatient a,zy_ledger_file b " +
+            "where a.inpatient_no not like '%$%' and a.inpatient_no not like 'S%' and a.inpatient_no not like 'JT%' " +
+            "  and a.inpatient_no=b.inpatient_no and a.admiss_times=b.admiss_times and b.settle_type&lt;&gt;1 " +
+            "<if test=\"start !=null and start != '' \">" +
+            " and a.admiss_date &gt;= #{start} and a.admiss_date &lt;= #{end} " +
+            "</if>" +
+            "<if test=\"responces.size > 0\" >" +
+            "and a.responce_type in " +
+            "<foreach collection='responces' item='item' index='index' open='(' close=')' separator=','>" +
+            "#{item}" +
+            "</foreach>" +
+            "</if>" +
+            "group by b.inpatient_no,b.admiss_times,a.admiss_date,a.dis_date,a.small_dept,a.name,a.responce_type " +
+            "having (sum(b.charge4+b.charge6+b.charge8+b.charge9+b.charge11+b.charge18)+sum(b.charge13))&gt;0 " +
+            "order by (sum(b.charge4+b.charge6+b.charge8+b.charge9+b.charge11+b.charge18)+sum(b.charge13))/sum(b.total_charge) desc" +
+            "</script>")
+    List<IllegalChargeData> chaXunJianYanJianCha(@Param("start") String start,
+                                                 @Param("end") String end,
+                                                 @Param("responces") List<String> responces);
+
+
+    @Select("<script>" +
+            "select rtrim(inpatient_no) patient,admiss_times times,dis_diag_comment,dis_diag_no from ba_first_page1 where " +
+            "inpatient_no in  " +
+            "<foreach collection='list' item='item' index='index' open='(' close=')' separator=','>" +
+            "#{item.patient}" +
+            "</foreach>" +
+            "</script>")
+    List<QueryDrugsAndProjects> queryZhenDuan(@Param("list") List<QueryDrugsAndProjects> list);
+
+
+    List<ZyDetailCharge> getHuanZheXinXi();
 }
 
 

+ 22 - 4
src/main/java/thyyxxk/webserver/dao/his/reports/IllegalChargesAnalysisDao.java

@@ -82,19 +82,37 @@ public interface IllegalChargesAnalysisDao {
 
 
     @Select("<script>" +
-            "select rtrim(inpatient_no) inpatient_no,admiss_times,rtrim(name) name,admiss_date,dis_date,rtrim(responce_type) responce_type from zy_inactpatient where 1=1" +
+            "select a.inpatient_no,rtrim(a.name) name,a.admiss_times,a.admiss_date,b.dis_date,DATEDIFF(day,b.dis_date,a.admiss_date) differ_date," +
+            "       (select name from zd_unit_code where code=isnull(a.small_dept,a.admiss_dept)) dept_name," +
+            "       a.responce_type " +
+            "from zy_inactpatient a ,zy_inactpatient b " +
+            "where a.inpatient_no=b.inpatient_no" +
+            "  and a.admiss_times=b.admiss_times+1" +
+            "  and a.inpatient_no not like 'JT%'" +
+            "  and DATEDIFF(day,b.dis_date,a.admiss_date)&lt;2 " +
             "<if test=\"start !=null and start != '' \">" +
-            "and admiss_date &gt;= #{start} and admiss_date &lt;= #{end} " +
+            " and a.admiss_date &gt;= #{start} and a.admiss_date &lt;= #{end} " +
             "</if>" +
             "<if test=\"responces.size > 0\" >" +
-            "and responce_type in " +
+            "and a.responce_type in " +
             "<foreach collection='responces' item='item' index='index' open='(' close=')' separator=','>" +
             "#{item}" +
             "</foreach>" +
             "</if>" +
-            "order by inpatient_no,name" +
+            "order by a.inpatient_no,a.admiss_times" +
             "</script>")
     List<IllegalChargeData> queryHuanZheLiangCiRuYuanRiQi(@Param("start") String start,
                                                           @Param("end") String end,
                                                           @Param("responces") List<String> responces);
+
+
+    @Select("<script>" +
+            "select inpatient_no,admiss_times,dis_diag_comment,dis_diag from ba_first_page1 where " +
+            "inpatient_no in  " +
+            "<foreach collection='inpatientNoList' item='item' index='index' open='(' close=')' separator=','>" +
+            "#{item.inpatientNo}" +
+            "</foreach>" +
+            "and dis_diag_no = 1" +
+            "</script>")
+    List<IllegalChargeData> queryZhenDuan(@Param("inpatientNoList") List<IllegalChargeData> inpatientNoList);
 }

+ 23 - 1
src/main/java/thyyxxk/webserver/dao/his/yibao/xiangMuLuRuDao.java

@@ -58,7 +58,7 @@ public interface xiangMuLuRuDao {
             "       drugname=c.name," +
             "       a.ori_detail_sn " +
             "FROM zy_detail_charge a  ,zd_charge_item b,yp_zd_dict c,a_employee_mi d " +
-            "where    a.inpatient_no=#{inpatientNo} and " +
+            "where   a.inpatient_no=#{inpatientNo} and " +
             "        a.admiss_times=#{admissTimes} and " +
             "        a.ledger_sn   = #{ledgerSn}    and " +
             "<if test=\"chargeCode !=null and chargeCode != '' \">" +
@@ -579,4 +579,26 @@ public interface xiangMuLuRuDao {
             "</foreach>" +
             "</script>")
     void baoCunMuBan(@Param("param") ZyDetailCharge param);
+
+
+    @Select("select charge_date,op_id_code,charge_fee,charge_amount,charge_code,charge_code_mx,detail_sn,ori_detail_sn,op_name = (select name from a_employee_mi where code = op_id_code)  " +
+            "from zy_detail_charge where  inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} and (charge_code = #{chargeCode} or charge_code_mx = #{chargeCode})")
+    List<ZyDetailCharge> getXiangTongFeiYong(@Param("inpatientNo") String inpatientNo,
+                                             @Param("admissTimes") Integer admissTimes,
+                                             @Param("chargeCode") String chargeCode);
+
+
+    @Update("update zy_detail_charge set ori_detail_sn = #{oriDetailSn} where inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} and detail_sn = #{detailSn}")
+    void kaiShiTuiFeiPiPei(@Param("inpatientNo") String inpatientNo,
+                           @Param("admissTimes") Integer admissTimes,
+                           @Param("detailSn") Integer detailSn,
+                           @Param("oriDetailSn") Integer oriDetailSn);
+
+    @Select("select charge_date,op_id_code,charge_fee,charge_amount,charge_code,charge_code_mx,detail_sn,ori_detail_sn,op_name = (select name from a_employee_mi where code = op_id_code)\n" +
+            "from zy_detail_charge where  inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} and (detail_sn = #{ziShenDetailSn} or detail_sn = #{piPeiDetailSn})")
+    List<ZyDetailCharge> panDuanShuJuSFPiPei(@Param("inpatientNo") String inpatientNo,
+                                             @Param("admissTimes") Integer admissTimes,
+                                             @Param("ziShenDetailSn") Integer ziShenDetailSn,
+                                             @Param("piPei") Integer piPeiDetailSn);
+
 }

+ 16 - 1
src/main/java/thyyxxk/webserver/entity/querydata/QueryDrugsAndProjects.java

@@ -85,7 +85,7 @@ public class QueryDrugsAndProjects {
     /**
      * 次数
      */
-    private String times;
+    private Integer times;
 
     /**
      * 录入时间
@@ -134,4 +134,19 @@ public class QueryDrugsAndProjects {
     private Date admissDate;
 
 
+    /**
+     * 主要诊断
+     */
+    private String mainDiagnosis;
+
+
+    /**
+     * 次要诊断
+     */
+    private String disDiagComment;
+
+
+    private Integer disDiagNo;
+
+
 }

+ 12 - 0
src/main/java/thyyxxk/webserver/entity/reports/illegalchargesanalysis/IllegalChargeData.java

@@ -2,6 +2,7 @@ package thyyxxk.webserver.entity.reports.illegalchargesanalysis;
 
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -32,6 +33,13 @@ public class IllegalChargeData {
     private Date conflictChargeDate;
     private String conflictChargeFee;
     private String conflictChargeAmount;
+    private String disDiag;
+    private String disDiagComment;
+
+    private BigDecimal jianChaFei;
+    private BigDecimal jianYanFei;
+    private BigDecimal jcjyfzb;
+    private BigDecimal zongFeiYong;
 
     /**
      * 保存上一次 出院日期
@@ -60,3 +68,7 @@ public class IllegalChargeData {
         }
     }
 }
+
+
+
+

+ 34 - 4
src/main/java/thyyxxk/webserver/service/querydata/QueryDrugsAndProjectsService.java

@@ -10,9 +10,12 @@ import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.Capacity;
 import thyyxxk.webserver.constants.GetDateFormat;
 import thyyxxk.webserver.dao.his.querydata.QueryDrugsAndProjectsDao;
+import thyyxxk.webserver.dao.his.reports.IllegalChargesAnalysisDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.querydata.QueryDrugsAndProjects;
+import thyyxxk.webserver.entity.reports.illegalchargesanalysis.IllegalChargeData;
+import thyyxxk.webserver.entity.reports.illegalchargesanalysis.IllegalChargeTemplate;
 import thyyxxk.webserver.utils.DateUtil;
 import thyyxxk.webserver.utils.ExcelUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
@@ -36,9 +39,12 @@ public class QueryDrugsAndProjectsService {
 
     private final QueryDrugsAndProjectsDao dao;
 
+    private final IllegalChargesAnalysisDao illegalChargesAnalysisDao;
+
     @Autowired
-    public QueryDrugsAndProjectsService(QueryDrugsAndProjectsDao dao) {
+    public QueryDrugsAndProjectsService(QueryDrugsAndProjectsDao dao, IllegalChargesAnalysisDao illegalChargesAnalysisDao) {
         this.dao = dao;
+        this.illegalChargesAnalysisDao = illegalChargesAnalysisDao;
     }
 
     /**
@@ -73,8 +79,22 @@ public class QueryDrugsAndProjectsService {
      * @return 返回分页 对象
      */
     public ResultVo<List<QueryDrugsAndProjects>> chaKanXiangQing(QueryDrugsAndProjects param) {
-        log.info("查看项目详情:{}", JSON.toJSONStringWithDateFormat(param, GetDateFormat.DATE_TIME));
-        return ResultVoUtil.success(dao.chaXunXiangMuHuoYaoPinJuTiXinXi(param.getStartTime(), param.getEndTime(), param.getChargeCode()));
+        log.info("查看项目或药品详情:{}", JSON.toJSONStringWithDateFormat(param, GetDateFormat.DATE_TIME));
+        List<QueryDrugsAndProjects> xiangMuList = dao.chaXunXiangMuHuoYaoPinJuTiXinXi(param.getStartTime(), param.getEndTime(), param.getChargeCode());
+        List<QueryDrugsAndProjects> zhenDuanList = dao.queryZhenDuan(xiangMuList);
+        for (QueryDrugsAndProjects xiangMu : xiangMuList) {
+            StringBuilder pjZhenDuan = new StringBuilder();
+            for (QueryDrugsAndProjects zhenDuan : zhenDuanList) {
+                if (zhenDuan.getPatient().equals(xiangMu.getPatient()) && zhenDuan.getTimes().equals(xiangMu.getTimes())) {
+                    if (zhenDuan.getDisDiagNo() == 1) {
+                        xiangMu.setMainDiagnosis(zhenDuan.getDisDiagComment());
+                    } else {
+                        xiangMu.setDisDiagComment(pjZhenDuan.append(zhenDuan.getDisDiagComment()).append("----").toString());
+                    }
+                }
+            }
+        }
+        return ResultVoUtil.success(xiangMuList);
     }
 
     /**
@@ -99,7 +119,7 @@ public class QueryDrugsAndProjectsService {
             QueryDrugsAndProjects pojo = list.get(i);
             content[i][0] = pojo.getName();
             content[i][1] = pojo.getCode();
-            content[i][2] = pojo.getTimes();
+            content[i][2] = pojo.getTimes().toString();
             content[i][3] = DateUtil.formatDatetime(pojo.getChargeDate());
             content[i][4] = String.valueOf(pojo.getNumber());
             content[i][5] = String.valueOf(pojo.getAmountOfMoney());
@@ -134,6 +154,7 @@ public class QueryDrugsAndProjectsService {
      */
     public ResultVo<IPage<QueryDrugsAndProjects>> chaKanYaoPing(QueryDrugsAndProjects param) {
         IPage<QueryDrugsAndProjects> page = new Page<>(1, 50);
+        log.info("查询yp ");
         return ResultVoUtil.success(dao.chaKanYaoPinShiYong(page, param.getStartTime(), param.getEndTime(), param.getChargeCode()));
     }
 
@@ -153,4 +174,13 @@ public class QueryDrugsAndProjectsService {
             return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
         }
     }
+
+
+    public ResultVo<List<IllegalChargeData>> chaXunJianYanJianCha(IllegalChargeTemplate param) {
+        List<IllegalChargeData> list = dao.chaXunJianYanJianCha(param.getStart(), param.getEnd(), param.getResponces());
+        if (list.size() > 0) {
+            return ResultVoUtil.success(list);
+        }
+        return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
+    }
 }

+ 9 - 22
src/main/java/thyyxxk/webserver/service/reports/IllegalChargesAnalysisService.java

@@ -240,30 +240,17 @@ public class IllegalChargesAnalysisService {
 
     public ResultVo<List<IllegalChargeData>> queryHuanZheLiangCiRuYuanRiQi(IllegalChargeTemplate param) {
         List<IllegalChargeData> list = dao.queryHuanZheLiangCiRuYuanRiQi(param.getStart(), param.getEnd(), param.getResponces());
-        List<IllegalChargeData> illegalChargeData = new ArrayList<>();
-        for (int i = 0; i < list.size(); i++) {
-            if (i < list.size() - 1) {
-                if (list.get(i).getInpatientNo().equals(list.get(i + 1).getInpatientNo()) && list.get(i).getName().equals(list.get((i + 1)).getName())) {
-                    long endTime = list.get(i).getDisDate().getTime();
-                    long startTime = list.get(i + 1).getAdmissDate().getTime();
-                    long num = (startTime - endTime) / 24 / 60 / 60 / 1000;
-                    if (num > 2) {
-                        IllegalChargeData pojo = new IllegalChargeData();
-                        pojo.setName(list.get(i + 1).getName());
-                        pojo.setInpatientNo(list.get(i + 1).getInpatientNo());
-                        pojo.setAdmissTimes(list.get(i + 1).getAdmissTimes());
-                        pojo.setAdmissDate(list.get(i + 1).getAdmissDate());
-                        pojo.setDisDate(list.get(i + 1).getDisDate());
-                        // 上一次出院日期
-                        pojo.setLastTimeDisDate(list.get(i).getDisDate());
-                        pojo.setResponceType(list.get(i + 1).getResponceType());
-                        pojo.setDifferDate(num);
-                        illegalChargeData.add(pojo);
-                    }
+        List<IllegalChargeData> illegalChargeData = dao.queryZhenDuan(list);
+        for (IllegalChargeData chargeData : list) {
+            for (IllegalChargeData illegalChargeDatum : illegalChargeData) {
+                if (chargeData.getInpatientNo().equals(illegalChargeDatum.getInpatientNo()) && chargeData.getAdmissTimes().equals(illegalChargeDatum.getAdmissTimes())) {
+                    chargeData.setDisDiag(illegalChargeDatum.getDisDiag());
+                    chargeData.setDisDiagComment(illegalChargeDatum.getDisDiagComment());
+                    break;
                 }
             }
-
         }
-        return ResultVoUtil.success(illegalChargeData);
+
+        return ResultVoUtil.success(list);
     }
 }

+ 43 - 4
src/main/java/thyyxxk/webserver/service/yibao/xiangMuLuRuService.java

@@ -52,7 +52,8 @@ public class xiangMuLuRuService {
         log.info("查询患者费用==》住院号{},住院次数:{},结算次数:{},项目名称:{}", param.getInpatientNo(), param.getAdmissTimes(),
                 param.getLedgerSn(), param.getChargeCode());
         List<ZyDetailCharge> list = dao.getHuanZheFeiYong(param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn(), param.getChargeCode());
-        Map<Integer, Integer> map = new HashMap<>();
+        // 用来保存 流水 来判断这一条流水号是否存在退费的情况
+        Map<Integer, Integer> map = new HashMap<>(list.size());
         for (int i = 0; i < list.size(); i++) {
             // 判断一下这一条数据 是否为 退费数据 再把原数据和 本身添加一个退费的 flag
             if (map.containsKey(list.get(i).getOriDetailSn())) {
@@ -83,15 +84,13 @@ public class xiangMuLuRuService {
     @Transactional
     public ResultVo<String> xiangMuTuiFei(ZyDetailCharge param) {
         if (StringUtil.isBlank(param.getInpatientNo()) || param.getAdmissTimes() == null || param.getLedgerSn() == null || param.getList().size() == 0) {
-            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "患者信息不全");
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "患者信息不全");
         }
         List<ZyDetailCharge> chaKanSFtuiFei = dao.chaKanSFYiJingTuiFeiLe(param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn(), param.getList());
 
         for (ZyDetailCharge charge : chaKanSFtuiFei) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为:【%s】已退费,请勿重复退费", charge.getOriDetailSn()));
         }
-
-
         // 获取最大值
         Integer maxDetailSn = transferInOfExpensesDao.getMaxDetailSn(param.getInpatientNo(), param.getAdmissTimes());
         // 获取原来的数据
@@ -176,9 +175,12 @@ public class xiangMuLuRuService {
         for (ZyDetailCharge zyDetailCharge : param.getList()) {
             zyDetailCharge.setDetailSn(maxDetailSn += 1);
             // 判断患者的费用是否存在负数
+            System.out.println(zyDetailCharge.getChargeAmount() + "1" + zyDetailCharge.getAmount().signum());
             if (zyDetailCharge.getChargeAmount().signum() == -1 || zyDetailCharge.getAmount().signum() == -1) {
                 return ResultVoUtil.fail(ExceptionEnum.EXIST_NEGATIVE_FEES);
             }
+            // 住院 表中是 没有保存单价的
+            zyDetailCharge.setChargeAmount(zyDetailCharge.getChargeAmount().multiply(zyDetailCharge.getAmount()));
             sum = sum.add(zyDetailCharge.getChargeAmount().multiply(zyDetailCharge.getAmount()));
             if (StringUtil.isBlank(zyDetailCharge.getChargeCode())) {
                 return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "项目编码空值。");
@@ -221,4 +223,41 @@ public class xiangMuLuRuService {
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "保存模板成功。");
     }
 
+    /**
+     * 匹配原来的退费流水号
+     *
+     * @param param 住院号 住院次数 项目编码 数量 金额
+     * @return 返回 数据
+     */
+    public ResultVo<List<ZyDetailCharge>> getXiangTongFeiYong(ZyDetailCharge param) {
+        log.info("退费匹配:{}", JSON.toJSONString(param));
+        return ResultVoUtil.success(dao.getXiangTongFeiYong(param.getInpatientNo(), param.getAdmissTimes(), param.getChargeCode()));
+    }
+
+    /**
+     * 匹配退费
+     *
+     * @param param 住院号 住院次数 流水号  匹配的流水号
+     * @return 返回提示成功
+     */
+    public ResultVo<String> kaiShiPiPei(ZyDetailCharge param) {
+        log.info("退费匹配===> 操作人 :{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONString(param));
+        List<ZyDetailCharge> list = dao.panDuanShuJuSFPiPei(param.getInpatientNo(), param.getAdmissTimes(), param.getDetailSn(), param.getOriDetailSn());
+        if (list.size() > 2) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该费用存在相同流水号");
+        }
+
+        for (ZyDetailCharge zyDetailCharge : list) {
+            if (zyDetailCharge.getChargeAmount().signum() == -1 && zyDetailCharge.getChargeFee().signum() == -1) {
+                zyDetailCharge.setChargeAmount(zyDetailCharge.getChargeAmount().negate());
+                zyDetailCharge.setChargeFee(zyDetailCharge.getChargeFee().negate());
+            }
+        }
+
+        if (list.get(0).getChargeFee().equals(list.get(1).getChargeFee()) && list.get(0).getChargeAmount().equals(list.get(1).getChargeAmount())) {
+            dao.kaiShiTuiFeiPiPei(param.getInpatientNo(), param.getAdmissTimes(), param.getDetailSn(), param.getOriDetailSn());
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "匹配成功");
+        }
+        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此费用数量或者费用不一致");
+    }
 }