Jelajahi Sumber

优化工伤出院

lighter 3 tahun lalu
induk
melakukan
19a8395138

+ 1 - 1
pom.xml

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

+ 3 - 0
src/main/java/thyyxxk/webserver/controller/medicalinsurance/SiInjuryController.java

@@ -135,6 +135,9 @@ public class SiInjuryController {
         if (null == resultVo) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "获取医保结算费用失败。");
         }
+        if (resultVo.getCode() != ExceptionEnum.SUCCESS.getCode()) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, resultVo.getMessage());
+        }
         YbSettleFee settleFee = resultVo.getData();
         if (p.getMidSetl()) {
             settleFee.setZjdzDatetime(p.getMidSetlDate());

+ 5 - 0
src/main/java/thyyxxk/webserver/dao/his/yibao/DismissDao.java

@@ -317,6 +317,11 @@ public interface DismissDao {
                          @Param("times") Integer times,
                          @Param("ledgerSn") int ledgerSn);
 
+    @Select("select serial_no from t_injury_si_pat_info where pat_no=#{patNo} and times=#{times} and ledger_sn=#{ledgerSn}")
+    String selectInjurySerialNo(@Param("patNo") String patNo,
+                                @Param("times") Integer times,
+                                @Param("ledgerSn") int ledgerSn);
+
     @Update("update zy_actpatient set total_charge=#{map.total},charge1=#{map.001},charge2=#{map.002}, " +
             "charge3=#{map.003},charge4=#{map.004},charge5=#{map.005},charge6=#{map.006},charge7=#{map.007}, " +
             "charge8=#{map.008},charge9=#{map.009},charge10=#{map.010},charge11=#{map.011},charge12=#{map.012}, " +

+ 23 - 2
src/main/java/thyyxxk/webserver/service/yibao/DismissService.java

@@ -12,6 +12,7 @@ import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.yibao.dismiss.*;
 import thyyxxk.webserver.entity.yibao.patient.Overview;
 import thyyxxk.webserver.entity.yibao.patient.Patient;
+import thyyxxk.webserver.service.externalhttp.SiInjurySystem;
 import thyyxxk.webserver.service.externalhttp.SiZySrvc;
 import thyyxxk.webserver.utils.*;
 
@@ -25,11 +26,13 @@ import java.util.*;
 public class DismissService {
     private final DismissDao dao;
     private final SiZySrvc zySrvc;
+    private final SiInjurySystem injury;
 
     @Autowired
-    public DismissService(DismissDao dao, SiZySrvc zySrvc) {
+    public DismissService(DismissDao dao, SiZySrvc zySrvc, SiInjurySystem injury) {
         this.dao = dao;
         this.zySrvc = zySrvc;
+        this.injury = injury;
     }
 
     public ResultVo<Object> dismiss(Patient param) {
@@ -208,6 +211,16 @@ public class DismissService {
                 exception.setMessage(feeCheck.getMessage());
                 throw new BizException(exception);
             }
+        } else {
+            String injurySerialNo = dao.selectInjurySerialNo(patNo, times, ledgerSn);
+            if (StringUtil.notBlank(injurySerialNo)) {
+                ResultVo<String> feeCheck = injury.preCalculateCost(param);
+                if (feeCheck.getCode() != ExceptionEnum.SUCCESS.getCode()) {
+                    ExceptionEnum exception = ExceptionEnum.LOGICAL_ERROR;
+                    exception.setMessage(feeCheck.getMessage());
+                    throw new BizException(exception);
+                }
+            }
         }
         return ResultVoUtil.success();
     }
@@ -217,8 +230,9 @@ public class DismissService {
         updateHicNo(settleFee.getInpatientNo());
         settleFee.setLedgerSn(dao.getLedgerSn(settleFee.getInpatientNo(), settleFee.getAdmissTimes()));
         String mdtrtId = dao.selectMdtrtId(settleFee.getInpatientNo(), settleFee.getAdmissTimes(), settleFee.getLedgerSn());
+        String injurySerialNo = dao.selectInjurySerialNo(settleFee.getInpatientNo(), settleFee.getAdmissTimes(), settleFee.getLedgerSn());
         // 医保病人进行医保结算
-        if (StringUtil.notBlank(mdtrtId)) {
+        if (StringUtil.notBlank(mdtrtId) || StringUtil.notBlank(injurySerialNo)) {
             int write;
             dao.deleteZyLedgerFileYb(settleFee.getInpatientNo(), settleFee.getAdmissTimes(), settleFee.getLedgerSn());
             String cashPay = settleFee.getXjzf();
@@ -311,6 +325,13 @@ public class DismissService {
         if (StringUtil.isBlank(restype)) {
             restype = "01";
         }
+        if (restype.equals("01")) {
+            String injurySerialNo = dao.selectInjurySerialNo(patNo, times, ledgerSn);
+            if (StringUtil.notBlank(injurySerialNo)) {
+                restype = "al";
+            }
+        }
+
         String deposit = dao.selectDepositSumamt(patNo, times, ledgerSn);
         if (StringUtil.isBlank(deposit)) {
             deposit = "0";