瀏覽代碼

项目录入完善优化。

xiaochan 4 年之前
父節點
當前提交
378dec97a9

+ 2 - 1
src/main/java/thyyxxk/webserver/dao/his/yibao/PatientDao.java

@@ -74,7 +74,8 @@ public interface PatientDao {
             "yb_remark=rtrim(a.yb_remark), " +
             "pass_id=rtrim(a.pass_id), " +
             "pass_name=rtrim((select name FROM a_employee_mi WHERE code = a.pass_id)), " +
-            "pass_date=a.pass_date, " +
+            "pass_date=a.pass_date," +
+            "ward=(b.ward), " +
             "ledger_sn=rtrim(b.times_billed), " +
             "admiss_status=rtrim(b.admiss_status), " +
             "xnh_familysysno=rtrim(b.xnh_familysysno), " +

+ 8 - 8
src/main/java/thyyxxk/webserver/dao/his/yibao/XiangMuLuRuDao.java

@@ -23,7 +23,6 @@ public interface XiangMuLuRuDao {
      *
      * @param inpatientNo 住院号
      * @param admissTimes 住院次数
-     * @param ledgerSn    结算次数
      * @param chargeCode  项目编码
      * @return 返回患者的费用信息
      */
@@ -59,12 +58,11 @@ public interface XiangMuLuRuDao {
             "FROM zy_detail_charge a  ,zd_charge_item b,yp_zd_dict c,a_employee_mi d " +
             "where    a.inpatient_no=#{inpatientNo} and " +
             "        a.admiss_times=#{admissTimes} and " +
-            "        a.ledger_sn   = #{ledgerSn}    and " +
             "<if test=\"chargeCode !=null and chargeCode != '' \">" +
             " a.charge_code_mx = #{chargeCode} and" +
             "</if>" +
             "        a.charge_code=b.code and " +
-            "        a.order_no &gt;=0  and a.order_no &lt;= 1  and " +
+            // "        a.order_no  =0    and " +
             "        a.serial=c.serial and " +
             "        c.code= a.charge_code_mx and a.charge_code like 'BILL%' and " +
             "        a.infant_flag = '0' and d.code = a.op_id_code " +
@@ -99,18 +97,16 @@ public interface XiangMuLuRuDao {
             "FROM zy_detail_charge a  ,zd_charge_item b , a_employee_mi c " +
             "where    a.inpatient_no= #{inpatientNo} and " +
             "        a.admiss_times= #{admissTimes} and " +
-            "        a.ledger_sn   = #{ledgerSn}    and " +
             "<if test=\"chargeCode !=null and chargeCode != '' \">" +
             " a.charge_code_mx = #{chargeCode} and" +
             "</if>" +
             "        a.charge_code=b.code and " +
-//            "        a.order_no &gt;=0  and a.order_no &lt;= 1  and " +
+            //"      a.order_no = 0     and " +
             "        a.charge_code not like 'BILL%' and " +
             "        a.infant_flag = '0' and c.code = a.op_id_code ) temp" +
             "</script>")
     List<ZyDetailCharge> getHuanZheFeiYong(@Param("inpatientNo") String inpatientNo,
                                            @Param("admissTimes") Integer admissTimes,
-                                           @Param("ledgerSn") Integer ledgerSn,
                                            @Param("chargeCode") String chargeCode);
 
     /**
@@ -256,7 +252,7 @@ public interface XiangMuLuRuDao {
             "#{item.selfFlag},#{item.separateFlag},#{item.suppressFlag},#{item.wardCode},#{item.deptCode},#{item.orderNo}," +
             "#{item.opeFlag},#{item.execUnit},#{item.oldGenTime}," +
             "#{item.payPercent},#{item.zjFlag},#{item.zfl},#{item.chargeCodeMx},#{item.serial},#{item.zySerialNo},#{item.doctorCode}," +
-            "#{item.ybSelfFlag},cast(#{item.origChargeFee,jdbcType=DECIMAL} as decimal(14,5)),#{item.confirmId},#{item.transFlagYb},#{item.ssCode},#{item.gsFlag}," +
+            "#{item.ybSelfFlag},cast(#{item.origChargeFee,jdbcType=DECIMAL} as decimal(14,5)),#{item.confirmId},0,#{item.ssCode},#{item.gsFlag}," +
             "#{item.referPhysician},#{item.consultPhysician},#{item.oriDetailSn})" +
             "</foreach>" +
             "</script>")
@@ -377,7 +373,8 @@ public interface XiangMuLuRuDao {
      * @return 返回模板信息
      */
     @Select("SELECT a.code charge_code, " +
-            "       a.exec_unit dept_code, " +
+            "       a.exec_unit dept_code," +
+            "       rtrim(a.yb_comment) yb_comment, " +
             "       RTRIM(a.name) charge_name, " +
             "       a.charge_amount," +
             "       amount = 1, " +
@@ -628,5 +625,8 @@ public interface XiangMuLuRuDao {
                           @Param("admissTimes") Integer admissTimes,
                           @Param("list") List<ZyDetailCharge> yiZhuPiPei);
 
+    @Select("SELECT small_dept FROM zd_dept_all where dept = #{dept}")
+    List<String> chaXunZhiZXinKeShi(@Param("dept") String dept);
+
 
 }

+ 1 - 1
src/main/java/thyyxxk/webserver/entity/datamodify/ZyDetailCharge.java

@@ -193,7 +193,7 @@ public class ZyDetailCharge implements Serializable {
     private String billItemOut;
 
     /**
-     * 医保 评论
+     * 医保 厂家
      */
     private String ybComment;
 

+ 1 - 0
src/main/java/thyyxxk/webserver/entity/yibao/patient/Patient.java

@@ -75,6 +75,7 @@ public class Patient {
     private String indiId;
     private String ybJlh;
     private String centerId;
+    private String ward;
     private String corpId;
     private String corpName;
     private String persType;

+ 19 - 11
src/main/java/thyyxxk/webserver/service/yibao/XiangMuLuRuService.java

@@ -50,9 +50,9 @@ public class XiangMuLuRuService {
      * @return 返回患者费用
      */
     public ResultVo<List<ZyDetailCharge>> getHuanZheFeiYong(ZyDetailCharge param) {
-        log.info("查询患者费用==》住院号{},住院次数:{},结算次数:{},项目名称:{}", param.getInpatientNo(), param.getAdmissTimes(),
-                param.getLedgerSn(), param.getChargeCode());
-        List<ZyDetailCharge> list = dao.getHuanZheFeiYong(param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn(), param.getChargeCode());
+        log.info("查询患者费用==》住院号{},住院次数:{},项目名称:{}", param.getInpatientNo(), param.getAdmissTimes(),
+                param.getChargeCode());
+        List<ZyDetailCharge> list = dao.getHuanZheFeiYong(param.getInpatientNo(), param.getAdmissTimes(), param.getChargeCode());
         Map<Integer, Integer> map = new HashMap<>();
         for (int i = 0; i < list.size(); i++) {
             // 判断一下这一条数据 是否为 退费数据 再把原数据和 本身添加一个退费的 flag
@@ -94,6 +94,11 @@ public class XiangMuLuRuService {
         for (ZyDetailCharge charge : chaKanSFtuiFei) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为:【%s】已退费,请勿重复退费", charge.getOriDetailSn()));
         }
+
+        /**
+         * 获取到科室费用
+         */
+        List<String> zhiXinKeShi = dao.chaXunZhiZXinKeShi(param.getDeptCode());
         // 获取最大值
         Integer maxDetailSn = transferInOfExpensesDao.getMaxDetailSn(param.getInpatientNo(), param.getAdmissTimes());
         // 获取原来的数据
@@ -104,11 +109,11 @@ public class XiangMuLuRuService {
         for (ZyDetailCharge pojo : yuanTuiFeiList) {
             // 判断患者的费用是否存在负数
             if (pojo.getChargeFee().signum() == -1 || pojo.getChargeAmount().signum() == -1) {
-                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者费用存在负数,该数据为退费数据");
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者费用存在负数,流水号:{" + pojo.getDetailSn() + "},该数据为退费数据");
+            }
+            if (!zhiXinKeShi.contains(pojo.getExecUnit())) {
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为【%s】,请对应的执行科室进行退费。", pojo.getDetailSn()));
             }
-//            if (!param.getDeptCode().equals(pojo.getDeptCode())) {
-//                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为【%s】,请录入的科室进行退费", pojo.getDetailSn()));
-//            }
             sum = sum.add(pojo.getChargeFee().multiply(pojo.getChargeAmount()));
             pojo.setChargeFee(pojo.getChargeFee().negate());
             pojo.setChargeAmount(pojo.getChargeAmount().negate());
@@ -120,8 +125,9 @@ public class XiangMuLuRuService {
         }
         FeiYongLeiXin fy = JiSuanFeiYong.jiSuan(yuanTuiFeiList, false);
         fy.setTotalCharge(sum.negate());
-        // 执行退费的操作
-        dao.xiangMuTuiFei(tuiFeiList);
+        // 执行退费的操作 20 条的退费
+        List<List<ZyDetailCharge>> fenGe = ListUtils.partition(tuiFeiList, 20);
+        fenGe.forEach(dao::xiangMuTuiFei);
         dao.huanZheZongFeiYong(fy, param.getInpatientNo(), param.getAdmissTimes(), "zy_actpatient");
         log.info("操作项目退费 ==》 操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONString(tuiFeiList));
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "项目退费操作成功。");
@@ -160,8 +166,8 @@ public class XiangMuLuRuService {
 
     @Transactional(rollbackFor = Exception.class)
     public ResultVo<String> xiangMuFeiYongShangChuan(ZyDetailCharge param) {
-        if (param.getList().size() > 100) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "一次性项目录入大于100条");
+        if (param.getList().size() > 50) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "一次性项目录入大于50条");
         }
         if (StringUtil.isBlank(param.getInpatientNo()) || param.getAdmissTimes() == null || param.getLedgerSn() == null || param.getList().size() == 0
                 || StringUtil.isBlank(param.getWard()) || StringUtil.isBlank(param.getDept()) || StringUtil.isBlank(param.getZySerialNo())) {
@@ -181,6 +187,8 @@ public class XiangMuLuRuService {
                 return ResultVoUtil.fail(ExceptionEnum.EXIST_NEGATIVE_FEES);
             }
             sum = sum.add(zyDetailCharge.getChargeAmount().multiply(zyDetailCharge.getAmount()));
+            // 这里不会保存
+            zyDetailCharge.setChargeAmount(zyDetailCharge.getChargeAmount().multiply(zyDetailCharge.getAmount()));
             if (StringUtil.isBlank(zyDetailCharge.getChargeCode())) {
                 return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "项目编码空值。");
             }

+ 1 - 1
src/main/resources/application.yml

@@ -8,7 +8,7 @@ spring:
     cache: false
   datasource:
     dynamic:
-      primary: dev
+      primary: his
       strict: false
       datasource:
         his: