Browse Source

违规退费现在可以不用选就进去了。

xiaochan 3 years ago
parent
commit
dd73927caf

+ 6 - 0
src/main/java/thyyxxk/webserver/config/exception/BizException.java

@@ -17,6 +17,12 @@ public class BizException extends RuntimeException {
         this.errorEnum = errorEnum;
     }
 
+    public BizException(ExceptionEnum errorEnum, String message) {
+        super(message);
+        errorEnum.setMessage(message);
+        this.errorEnum = errorEnum;
+    }
+
     public BizException(ExceptionEnum errorEnum, Throwable cause) {
         super(errorEnum.getMessage(), cause);
         this.errorEnum = errorEnum;

+ 4 - 5
src/main/java/thyyxxk/webserver/controller/yibao/XiangMuLuRuController.java

@@ -7,7 +7,7 @@ import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
-import thyyxxk.webserver.entity.yibao.WeiGuiFeiYongFenXi;
+import thyyxxk.webserver.entity.yibao.ZyActpatient;
 import thyyxxk.webserver.service.yibao.XiangMuLuRuService;
 
 import java.util.List;
@@ -116,10 +116,9 @@ public class XiangMuLuRuController {
 
     @PassToken
     @GetMapping("/weiGuiFeiYongFenXi")
-    public ResultVo<WeiGuiFeiYongFenXi> weiGuiFeiYongFenXi(@RequestParam("inpatientNo") String inpatientNo,
-                                                           @RequestParam("admissTimes") Integer admissTimes,
-                                                           @RequestParam("execUnit") String execUnit) {
-        return service.weiGuiFeiYongFenXi(inpatientNo, admissTimes, execUnit);
+    public ResultVo<ZyActpatient> weiGuiFeiYongFenXi(@RequestParam("inpatientNo") String inpatientNo,
+                                                     @RequestParam("execUnit") String execUnit) {
+        return service.weiGuiFeiYongFenXi(inpatientNo, execUnit);
     }
 
 

+ 4 - 1
src/main/java/thyyxxk/webserver/dao/his/PublicDao.java

@@ -95,7 +95,7 @@ public interface PublicDao {
                         @Param("admissTimes") Integer admissTimes);
 
 
-    @Select("select rtrim(inpatient_no) inpatient_no,admiss_times,admiss_date,dis_date, " +
+    @Select("select rtrim(inpatient_no) inpatient_no,admiss_times,admiss_date,dis_date,name, " +
             "responce_name = (select rtrim(name) name from zy_zd_responce_type where code = responce_type), " +
             "ward,ward_name = (select rtrim(name) name from zd_unit_code where code = ward), " +
             "ledger_sn = (select ledger_sn from zy_ledger_file where a.inpatient_no = zy_ledger_file.inpatient_no and a.admiss_times = zy_ledger_file.admiss_times), " +
@@ -109,6 +109,9 @@ public interface PublicDao {
     ZyActpatient getHuanZheJiBenXinXi(@Param("inpatientNo") String inpatientNo,
                                       @Param("admissTimes") Integer admissTimes);
 
+    @Select("select max(admiss_times) from zy_patient where inpatient_no = #{inpatientNo} ")
+    Integer getAdmissTimes(@Param("inpatientNo") String inpatientNo);
+
 
     @Select("select ori_detail_sn from zy_detail_charge " +
             "where  inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} and ledger_sn =  #{ledgerSn} " +

+ 10 - 0
src/main/java/thyyxxk/webserver/entity/yibao/ZyActpatient.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 import thyyxxk.webserver.entity.datamodify.MzChargeDetail;
+import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -812,4 +813,13 @@ public class ZyActpatient implements Serializable {
     private Integer lendFlag;
 
 
+    /**
+     * 违规费用
+     */
+    private List<ZyDetailCharge> weiXieDaiYuanLiuShui;
+
+    /**
+     * 未匹配
+     */
+    private List<WeiGuiFeiYongFenXi> weiPiPei;
 }

+ 32 - 2
src/main/java/thyyxxk/webserver/service/PublicServer.java

@@ -2,11 +2,14 @@ package thyyxxk.webserver.service;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import thyyxxk.webserver.config.exception.BizException;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.PublicDao;
 import thyyxxk.webserver.dao.his.yibao.TransferInOfExpensesDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.login.UserInfo;
+import thyyxxk.webserver.entity.yibao.ZyActpatient;
 import thyyxxk.webserver.utils.ListUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.StringUtil;
@@ -174,7 +177,6 @@ public class PublicServer {
      */
     public void genXingYuanLiuShuiBiaoZhi(String inpatientNo, Integer admissTimes, Integer ledger) {
         // 如果这两个不一样的话 就需要重新匹配
-        log.info("更新正数的流水号 ==> 流水号:{},住院次数:{},账页号:{}", inpatientNo, admissTimes, ledger);
         List<Integer> chongFuTuiFei = dao.chongFuTuiFei(inpatientNo, admissTimes, ledger);
         if (ListUtil.notBlank(chongFuTuiFei)) {
             dao.chongFuTuiFeiChongZhi(inpatientNo, admissTimes, ledger, chongFuTuiFei);
@@ -183,6 +185,12 @@ public class PublicServer {
         dao.genXinYuanTuiFeiLiuShui(inpatientNo, admissTimes, ledger);
     }
 
+    /**
+     * 获取员工信息
+     *
+     * @param code 编码
+     * @return 返回
+     */
     public UserInfo huoQuYuanGongXinXi(String code) {
         if (StringUtil.isBlank(code)) {
             return new UserInfo();
@@ -192,7 +200,7 @@ public class PublicServer {
 
 
     public List<String> huoQuBingFangDeKeShi(String deptCode) {
-        if (getRoleCode().getData().contains(1) || StringUtil.isBlank(deptCode)) {
+        if (getRoleCode().getData().contains(1) || getRoleCode().getData().contains(8) || StringUtil.isBlank(deptCode)) {
             return new ArrayList<>();
         }
         List<String> keShiDaiMa = dao.huoQuBingFanhKeShi(deptCode);
@@ -202,5 +210,27 @@ public class PublicServer {
         return keShiDaiMa;
     }
 
+    /**
+     * 这里的住院号是没有 处理过得
+     *
+     * @param inpatientNo 住院号
+     * @return 返回病人基本信息
+     */
+    public ZyActpatient huoQuHuanZheXinXi(String inpatientNo) {
+        if (StringUtil.isBlank(inpatientNo)) {
+            log.error("住院号为空。");
+            throw new BizException(ExceptionEnum.NULL_POINTER, "住院号为空。");
+        }
+        Integer admissTimes = dao.getAdmissTimes(inpatientNo);
+
+        ZyActpatient zyActpatient = dao.getHuanZheJiBenXinXi(inpatientNo, admissTimes);
+
+        if (zyActpatient == null) {
+            throw new BizException(ExceptionEnum.NULL_POINTER, "没有查询到患者的基本信息。");
+        }
+
+        return zyActpatient;
+    }
+
 }
 

+ 21 - 25
src/main/java/thyyxxk/webserver/service/yibao/XiangMuLuRuService.java

@@ -14,7 +14,7 @@ import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.FeiYongLeiXin;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
-import thyyxxk.webserver.entity.yibao.WeiGuiFeiYongFenXi;
+import thyyxxk.webserver.entity.yibao.ZyActpatient;
 import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.utils.*;
 
@@ -539,7 +539,6 @@ public class XiangMuLuRuService {
                     String.format("匹配成功共:{%d}条,匹配成功:{%s}条", getYiZhuFeiYongFuShu.size(), piPei.size()));
         }
         publicServer.genXingYuanLiuShuiBiaoZhi(inpatientNo, admissTimes, ledgerSn);
-
         return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, String.format("该患者有【%d】条,未能匹配 |д・)っ", getYiZhuFeiYongFuShu.size()));
     }
 
@@ -602,39 +601,36 @@ public class XiangMuLuRuService {
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public ResultVo<WeiGuiFeiYongFenXi> weiGuiFeiYongFenXi(String inpatientNo, Integer admissTimes, String execUnit) {
+    public ResultVo<ZyActpatient> weiGuiFeiYongFenXi(String inpatientNo, String execUnit) {
+        ZyActpatient patient = publicServer.huoQuHuanZheXinXi(inpatientNo);
         inpatientNo = publicServer.getInpatientNo(inpatientNo);
         int infantFlag = publicServer.getInfantFlag(inpatientNo);
-        Integer ledger = publicServer.getLedgerSn(inpatientNo, admissTimes);
-
-        log.info("查询违规费用 =>>住院号{}次数{}执行科室{}", inpatientNo, admissTimes, execUnit);
-
+        Integer ledger = publicServer.getLedgerSn(inpatientNo, patient.getAdmissTimes());
         List<String> keShi = publicServer.huoQuBingFangDeKeShi(execUnit);
-
-        publicServer.genXingYuanLiuShuiBiaoZhi(inpatientNo, admissTimes, ledger);
-
-        WeiGuiFeiYongFenXi weiGuiFeiYongFenXi = new WeiGuiFeiYongFenXi();
-        weiGuiFeiYongFenXi.setWeiPiPei(new ArrayList<>());
-        weiGuiFeiYongFenXi.setWeiXieDaiYuanLiuShui(new ArrayList<>());
-
+        publicServer.genXingYuanLiuShuiBiaoZhi(inpatientNo, patient.getAdmissTimes(), ledger);
         // 药品 分大包装和小包装 可能大包装 匹配了 小包装没有 匹配 所以这里编码同步 一下
-        List<Integer> yaoPingBianMaTongBu = dao.weiGuiYaoPinInt(inpatientNo, admissTimes, ledger, infantFlag);
-        if (BigUtils.bigDaYu(dao.zhenFuXingDiFeiYong(inpatientNo, admissTimes, ledger), 0)) {
-            dao.chongXingZhengFuXiangDi(inpatientNo, admissTimes, ledger);
+        List<Integer> yaoPingBianMaTongBu = dao.weiGuiYaoPinInt(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag);
+        if (BigUtils.bigDaYu(dao.zhenFuXingDiFeiYong(inpatientNo, patient.getAdmissTimes(), ledger), 0)) {
+            dao.chongXingZhengFuXiangDi(inpatientNo, patient.getAdmissTimes(), ledger);
         }
         // 这里退药 医嘱 有可能会没有携带 执行科室
-        List<ZyDetailCharge> huoQuYaoPingZhongKeShiWeiKongDe = dao.huoQuYaoPingZhongKeShiWeiKongDe(inpatientNo, admissTimes, ledger);
+        List<ZyDetailCharge> huoQuYaoPingZhongKeShiWeiKongDe = dao.huoQuYaoPingZhongKeShiWeiKongDe(inpatientNo, patient.getAdmissTimes(), ledger);
         if (!huoQuYaoPingZhongKeShiWeiKongDe.isEmpty()) {
-            dao.yiZhuTuiFeiGenXingZhiXingKeShi(inpatientNo, admissTimes, ledger, huoQuYaoPingZhongKeShiWeiKongDe);
+            dao.yiZhuTuiFeiGenXingZhiXingKeShi(inpatientNo, patient.getAdmissTimes(), ledger, huoQuYaoPingZhongKeShiWeiKongDe);
         }
         if (yaoPingBianMaTongBu.size() > 0) {
             dao.genXinYaoPingPiPeiXinXi(yaoPingBianMaTongBu);
         }
-        weiGuiFeiYongFenXi.getWeiPiPei().addAll(dao.weiGuiYaoPin(inpatientNo, admissTimes, ledger, infantFlag));
-        weiGuiFeiYongFenXi.getWeiPiPei().addAll(dao.weiGuiXiangMu(inpatientNo, admissTimes, ledger, infantFlag));
-        weiGuiFeiYongFenXi.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiXiangMu(inpatientNo, admissTimes, ledger, infantFlag, keShi));
-        weiGuiFeiYongFenXi.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiYaoPing(inpatientNo, admissTimes, ledger, infantFlag, keShi));
-        return ResultVoUtil.success(weiGuiFeiYongFenXi);
+
+        patient.setWeiPiPei(new ArrayList<>());
+        patient.setWeiXieDaiYuanLiuShui(new ArrayList<>());
+
+        patient.getWeiPiPei().addAll(dao.weiGuiYaoPin(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag));
+        patient.getWeiPiPei().addAll(dao.weiGuiXiangMu(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag));
+        patient.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiXiangMu(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag, keShi));
+        patient.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiYaoPing(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag, keShi));
+        log.info("查询违规费用 =>>住院号{}次数{}执行科室{}", inpatientNo, patient.getAdmissTimes(), JSON.toJSONString(keShi));
+        return ResultVoUtil.success(patient);
     }
 
 
@@ -666,12 +662,12 @@ public class XiangMuLuRuService {
         List<Integer> yongHuJueSe = dao.huoQuJueSe(TokenUtil.getTokenUserId());
         List<String> zhiXinKeShi = dao.chaXunZhiZXinKeShi(zyDetailCharge.getDeptCode());
         for (ZyDetailCharge detailCharge : shuJuXinXi) {
+            zyDetailCharge.setYaoPing(false);
             ResultVo<String> LOGICAL_ERROR = getStringResultVo(yongHuJueSe, zhiXinKeShi, zyDetailCharge, detailCharge);
             if (LOGICAL_ERROR != null) return LOGICAL_ERROR;
             if (detailCharge.getOriDetailSn() != null || detailCharge.getTransFlagYb().equals("2")) {
                 return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为:{%d},已被退费请重新选择。", detailCharge.getDetailSn()));
             }
-            zyDetailCharge.setYaoPing(false);
             chargeFeeSum = chargeFeeSum.add(detailCharge.getChargeFee());
             chargeAmountSum = chargeAmountSum.add(detailCharge.getChargeAmount());
         }