Ver código fonte

Merge branch 'master' of https://gitlab.taihe.com/lighter/web-server

xiaochan 4 anos atrás
pai
commit
06096d8713

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

@@ -147,11 +147,11 @@ public interface DismissDao {
 
     @Select("select count(1) from yz_act_order where inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes} " +
             "and status_flag > '2' and isnull(group_no,'00' )='00' and order_code in ('06026','06053','05973')")
-    int countDisActOrders(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes);
+    Integer countDisActOrders(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes);
 
     @Select("select count(1) from yz_inact_order where inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes} " +
             "and status_flag > '2' and isnull(group_no,'00' )='00' and order_code in ('06026','06053','05973')")
-    int countDisActOrders2(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes);
+    Integer countDisActOrders2(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes);
 
     @Select("select (select total_fee=sum ( charge_fee ) from zy_detail_charge where " +
             "inpatient_no=#{inpatientNo} AND admiss_times=#{admissTimes} AND ledger_sn=#{ledgerSn} and isnull " +

+ 0 - 1
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetService.java

@@ -330,7 +330,6 @@ public class CaseFrontSheetService {
                 //插入数据 SignDate 签收日期  在点击签收后 向数据库中插入
                 sheet.setSignDate(new Date());
                 sheet.setFileStatus(1);
-
                 //判断是否已经插入过了
                 Integer fileStatus = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
                 if (null == fileStatus) {

+ 60 - 0
src/main/java/thyyxxk/webserver/service/medicalinsurance/MedicalInsuranceService.java

@@ -0,0 +1,60 @@
+package thyyxxk.webserver.service.medicalinsurance;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import thyyxxk.webserver.constants.MedicalInsuranceFunction;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.utils.DateUtil;
+import thyyxxk.webserver.utils.SiMsgIdUtil;
+
+/**
+ * @description: 医保交易实现
+ * @author: DingJie
+ * @create: 2021-05-14 16:28:16
+ **/
+@Slf4j
+@Service
+public class MedicalInsuranceService {
+
+    public ResultVo<JSONObject> obtainBasicPersonInfo(String socialNo, String name) {
+        JSONObject header = makeParamHeader(MedicalInsuranceFunction.OBTAIN_BASIC_PERSON_INFO);
+        JSONObject param = new JSONObject();
+        param.put("mdtrt_cert_type", "02");
+        param.put("mdtrt_cert_no", socialNo);
+        param.put("card_sn", "");
+        param.put("begintime", "");
+        param.put("psn_cert_type", "1");
+        param.put("certno", socialNo);
+        param.put("psn_name", name);
+        header.getJSONObject("input").put("data", param);
+        RestTemplate template = new RestTemplate();
+        return null;
+    }
+
+    private JSONObject makeParamHeader(MedicalInsuranceFunction function) {
+        JSONObject header = new JSONObject();
+        JSONObject input = new JSONObject();
+        header.put("infno", function.getCode());
+        header.put("msgid", SiMsgIdUtil.makeMsgId());
+        header.put("mdtrtarea_admvs", "就医地医保区划");
+        header.put("insuplc_admdvs", "参保地医保区划");
+        header.put("recer_sys_code", "接收方系统代码");
+        header.put("dev_no", "");
+        header.put("dev_safe_info", "");
+        header.put("cainfo", "");
+        header.put("signtype", "");
+        header.put("infver", "V1.0");
+        header.put("opter_type", "1");
+        header.put("opter", "经办人");
+        header.put("opter_name", "经办人姓名");
+        header.put("inf_time", DateUtil.now());
+        header.put("fixmedins_code", SiMsgIdUtil.INSTITUTION_ID);
+        header.put("fixmedins_name", "湖南泰和医院");
+        header.put("sign_no", "交易签到流水号");
+        header.put("input", input);
+        return header;
+    }
+
+}

+ 13 - 11
src/main/java/thyyxxk/webserver/service/yibao/DismissService.java

@@ -105,11 +105,12 @@ public class DismissService {
         final String inpatientNo = param.getInpatientNo();
         final Integer admissTimes = param.getAdmissTimes();
         if (param.getDismissFlag() == 1) {
-            int disActOrderCount;
-            if ("zy_actpatient".equals(param.getTable())) {
-                disActOrderCount = dao.countDisActOrders(inpatientNo, admissTimes);
-            } else {
+            Integer disActOrderCount = dao.countDisActOrders(inpatientNo, admissTimes);
+            if (null == disActOrderCount || disActOrderCount == 0) {
                 disActOrderCount = dao.countDisActOrders2(inpatientNo, admissTimes);
+                if (null == disActOrderCount) {
+                    disActOrderCount = 0;
+                }
             }
             if (disActOrderCount < 1) {
                 ExceptionEnum exception = ExceptionEnum.LOGICAL_ERROR;
@@ -127,7 +128,7 @@ public class DismissService {
             exception.setMessage("没有找到入院时间,请重新获取病人信息。");
             throw new BizException(exception);
         }
-        Date actOrderDisDate = getDismissDate(param.getTable(), param.getDismissFlag(), inpatientNo, admissTimes, param.getZjdzDatetime());
+        Date actOrderDisDate = getDismissDate(param.getDismissFlag(), inpatientNo, admissTimes, param.getZjdzDatetime());
         final int ledgerSn = dao.getLedgerSn(inpatientNo, admissTimes);
         if (dao.hasUnsettledStepOne(inpatientNo, admissTimes, ledgerSn) < 0) {
             ExceptionEnum exception = ExceptionEnum.LOGICAL_ERROR;
@@ -352,8 +353,9 @@ public class DismissService {
         }
         final int infantFlag = dao.selectInfantFlag(indata.getInpatientNo(), indata.getAdmissTimes(),
                 indata.getLedgerSn()); // =0 无婴儿,>0 有婴儿
-        final Date dismissDate = getDismissDate(indata.getTable(), indata.getFlag(), indata.getInpatientNo(), indata.getAdmissTimes(),
+        final Date dismissDate = getDismissDate(indata.getFlag(), indata.getInpatientNo(), indata.getAdmissTimes(),
                 indata.getZjdzDatetime());
+
         final Integer transFlag = indata.getFlag() == 1 ? 0 : 2;
         final Date admissDate = dao.selectAdmissDate(indata.getInpatientNo(), indata.getAdmissTimes(), indata.getTable());
         final List<ReceiptFee> fees = dao.calculateCost(indata.getInpatientNo(), indata.getAdmissTimes(),
@@ -403,15 +405,15 @@ public class DismissService {
         return totalCharge;
     }
 
-    private Date getDismissDate(String table, Integer flag, String inpatientNo, Integer admissTimes, Date zjdzDate) {
+    private Date getDismissDate(Integer flag, String inpatientNo, Integer admissTimes, Date zjdzDate) {
         if (flag == 2) {
             return zjdzDate;
         }
-        if ("zy_actpatient".equals(table)) {
-            return dao.selectActOrderDisDate(inpatientNo, admissTimes);
-        } else {
-            return dao.selectActOrderDisDate2(inpatientNo, admissTimes);
+        Date disdate = dao.selectActOrderDisDate(inpatientNo, admissTimes);
+        if (null == disdate) {
+            disdate = dao.selectActOrderDisDate2(inpatientNo, admissTimes);;
         }
+        return disdate;
     }
 
     private int updateCostStatusToSettled(YbSettleFee param) {

+ 29 - 0
src/main/java/thyyxxk/webserver/utils/SiMsgIdUtil.java

@@ -0,0 +1,29 @@
+package thyyxxk.webserver.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @description: 医保交易报文ID工具类
+ * @author: DingJie
+ * @create: 2021-05-14 16:41:21
+ **/
+public class SiMsgIdUtil {
+    private static int serial = 1000;
+    private static final int MIN_VAL = 1000;
+    private static final int MAX_VAL = 9999;
+    public static final String INSTITUTION_ID = "430195333";
+
+    private static String timestamp() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+        return sdf.format(new Date());
+    }
+
+    public static synchronized String makeMsgId() {
+        serial += 1;
+        if (serial > MAX_VAL) {
+            serial = MIN_VAL;
+        }
+        return INSTITUTION_ID + timestamp() + serial;
+    }
+}