浏览代码

feat: 移动支付下单流程

zhengjie 1 年之前
父节点
当前提交
53c21f9488

+ 5 - 1
Business/CenterBusiness.cs

@@ -164,7 +164,11 @@ namespace PTMedicalInsurance.Business
                 joRtn = JObject.Parse(outParam);
                 if (joRtn["infcode"].ToString() == "0")
                 {
-                    Global.curEvt.signno = joRtn["output"]["result"]["sign_no"].ToString();
+                    if (joRtn.ContainsKey("result")) { 
+                        Global.curEvt.signno = joRtn["output"]["result"]["sign_no"].ToString();
+                    } else {
+                        Global.curEvt.signno = joRtn["output"]["signinoutb"]["sign_no"].ToString();
+                    }
                     return 0;
                 }
                 else

+ 2 - 3
Business/HisMainBusiness.cs

@@ -1245,8 +1245,8 @@ namespace PTMedicalInsurance.Business
                 //展示登记面板
                 if (frmReg.ShowDialog() == DialogResult.OK)
                 {
-                    string diseCodg = "", diseName = "";
-                    //哈尔滨要求必须传病种。普通疾病传主诊断
+                    string diseCodg = frmReg.diseCodg, diseName = frmReg.diseName;
+                    //普通疾病传主诊断
                     if (string.IsNullOrEmpty(frmReg.diseCodg))
                     {
                         diseCodg = JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_code");
@@ -1281,7 +1281,6 @@ namespace PTMedicalInsurance.Business
                     JObject joMdtrtinfo = new JObject();
                     for (int i = 0; i < jaDiagnoses.Count; i++)
                     {
-                        jaDiagnoses[i]["vali_flag"] = new JObject();
                         jaDiagnoses[i]["vali_flag"] = "1";
                     }
                     joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);

+ 116 - 0
Business/Local/LocalGetPatientInfoProcess.cs

@@ -0,0 +1,116 @@
+using Newtonsoft.Json.Linq;
+using PTMedicalInsurance.Common;
+using PTMedicalInsurance.Helper;
+using PTMedicalInsurance.Variables;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PTMedicalInsurance.Business
+{
+    class LocalGetPatientInfoProcess : AbstractProcess
+    {
+        public override CallResult Process(JObject input)
+        {
+
+            // 组织病人基本信息
+            Global.pat.adm_Dr = int.Parse(JsonHelper.getDestValue(input, "params[0].admID"));
+            Global.pat.recordID = JsonHelper.getDestValue(input, "params[0].recordID");
+            Global.pat.billID = JsonHelper.getDestValue(input, "params[0].billID");
+
+            Global.pat.payAuthNo = JsonHelper.getDestValue(input, "insuAdmObj.payAuthNo");
+            Global.pat.medType = JsonHelper.getDestValue(input, "insuAdmObj.medType");
+            Global.pat.mdtrtcertType = JsonHelper.getDestValue(input, "insuAdmObj.mdtrtCertType");
+
+            // 缺少姓名和证件号
+            string psn_setlway =  JsonHelper.getDestValue(input, "insuAdmObj.psnSetlway");
+
+            Global.pat.name = JsonHelper.getDestValue(input, "insuAdmObj.name");
+            Global.pat.certType = "02"; //身份证
+            Global.pat.certNO = JsonHelper.getDestValue(input, "insuAdmObj.certNo");
+
+            //调用服务获取门诊诊断信息
+            string diagnoses;
+            if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
+            {
+                return Exception(-1, "getPatDiagnoses", diagnoses);
+            }
+            JObject joHisRtnInfo = JObject.Parse(diagnoses);
+            JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
+
+
+            //组织入参
+            JObject joReg = new JObject();
+          
+
+            #region 组织挂号入参
+            JObject joRegInpar = new JObject();
+            string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            joRegInpar.Add("psn_no", Global.pat.psn_no);
+            joRegInpar.Add("insutype", Global.pat.insuType);
+            joRegInpar.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));//挂号时间 occurTime
+            joRegInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
+            joRegInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
+
+            string admDr = Utils.convertAdmDr(Global.pat.adm_Dr.ToString());
+            joRegInpar.Add("ipt_otp_no", admDr);
+
+            joRegInpar.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
+            joRegInpar.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
+            joRegInpar.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
+            joRegInpar.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
+            joRegInpar.Add("exp_content", "");
+            joRegInpar.Add("caty", "72");
+            joReg.Add("data", joRegInpar);
+            #endregion
+
+            #region 组织就诊信息入参
+            string diseCodg = "", diseName = "";
+            JObject joMdtrtinfo = new JObject();
+            for (int i = 0; i < jaDiagnoses.Count; i++)
+            {
+                diseCodg = jaDiagnoses[i]["Code"].Text();
+                diseName = jaDiagnoses[i]["Name"].Text();
+                jaDiagnoses[i]["vali_flag"] = "1";
+            }
+
+            joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);
+            joMdtrtinfo.Add("psn_no", Global.pat.psn_no);          //人员编号
+            joMdtrtinfo.Add("med_type", Global.pat.medType);          //医疗类别
+            joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));          //开始时间
+            joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr"));          //主要病情描述
+            joMdtrtinfo.Add("dise_codg", diseCodg);          //病种编码
+            joMdtrtinfo.Add("dise_name", diseName);          //病种名称
+            joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type"));          //计划生育手术类别
+            joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type"));          //生育类别
+            joMdtrtinfo.Add("exp_content", "");          //字段扩展
+
+            #endregion
+
+            #region 组织结算入参
+            JObject joSetlInpar = new JObject();
+            joSetlInpar.Add("psn_no", Global.pat.psn_no);
+            joSetlInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
+            joSetlInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
+            joSetlInpar.Add("med_type", Global.pat.medType);
+            joSetlInpar.Add("medfee_sumamt", "");
+            joSetlInpar.Add("psn_setlway", psn_setlway); //结算方式
+            joSetlInpar.Add("mdtrt_id", Global.pat.mdtrtID);
+            joSetlInpar.Add("chrg_bchno", Global.pat.adm_Dr.ToString());
+            joSetlInpar.Add("acct_used_flag", "1");//个人账户使用标志
+            joSetlInpar.Add("insutype", "310");//险种类型
+            joSetlInpar.Add("pub_hosp_rfom_flag", "");
+            joSetlInpar.Add("exp_content", "");
+            #endregion
+
+            joReg.Add("mdtrtinfo", joMdtrtinfo);
+            joReg.Add("diseinfo", jaDiagnoses);
+            joReg.Add("settlement", joSetlInpar);
+
+            outParam = joReg.ToString();
+            return Success();
+        }
+    }
+}

+ 7 - 17
Business/Local/LocalMobilePayProcess.cs

@@ -1,4 +1,5 @@
 using Newtonsoft.Json.Linq;
+using PTMedicalInsurance.Common;
 using PTMedicalInsurance.Helper;
 using PTMedicalInsurance.Variables;
 using System;
@@ -13,7 +14,6 @@ namespace PTMedicalInsurance.Business
     {
         public override CallResult Process(JObject input)
         {
-            string errMsg = "";
             //从医保平台获取患者详细的医保登记信息
             if (mIS.queryRegisterInfo(1, out outParam) != 0)
             {
@@ -22,21 +22,6 @@ namespace PTMedicalInsurance.Business
             JObject joReg = JObject.Parse(outParam);
             Global.pat.medType = JsonHelper.getDestValue(joReg, "data.MedicalType");
             Global.pat.insuType = JsonHelper.getDestValue(joReg, "data.InsuType");
-            //先取消中心费用传送
-            cBus.cancleFeeUpload(TradeEnum.InpatientFeeCancel, out errMsg);
-            //再删除医保传送表的数据
-            mIS.deleteFee(out errMsg);
-
-            #region【住院费用上传前调用3101事前服务】
-            ////事前分析
-            if (Global.curEvt.ext.isOpenAnalysis)
-            {
-                if (hBus.PreAnalysis("4", "", out errMsg) != 0)
-                {
-                    return Exception("事前分析", errMsg);
-                }
-            }
-            #endregion
 
             //开始进行费用传送
             //调用HIS费用查询信息
@@ -58,7 +43,12 @@ namespace PTMedicalInsurance.Business
                 fee["med_type"] = Global.pat.medType;
             });
 
-            outParam = JsonHelper.toJsonString(jaFeeDetail);
+            JObject joInput = new JObject();
+            joInput.Add("feedetail", jaFeeDetail);
+
+            JObject joOutput = Utils.ConvertRequest<JObject>(TradeEnum.MobilePayOrder, joInput);
+
+            outParam = JsonHelper.toJsonString(joOutput);
 
             return Success();
         }

+ 30 - 0
Business/Local/LocalMobilePayService.cs

@@ -0,0 +1,30 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PTMedicalInsurance.Business
+{
+    class LocalMobilePayService : IChargeService
+    {
+        public string Charge(string operationType, JObject joInput)
+        {
+            //joInput 包括( data、mdtrtinfo、diseinfo、settlement)
+            ProcessManager pManager = new ProcessManager()
+            .Add(new LocalGetPatientInfoProcess())
+            // 挂号[2201] 
+            .Add(new OPRegFakeProcess())
+            // 下单
+            .Add(new LocalMobilePayProcess());
+            // 执行
+            return pManager.Run(joInput);
+        }
+
+        public string DisCharge(JObject joParam)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

+ 3 - 0
InsuBusiness.cs

@@ -451,6 +451,9 @@ namespace PTMedicalInsurance
                             //    rtnResult = outParam;
                             //return rtnResult;
                             #endregion
+                            LocalMobilePayService mobilePayService = new LocalMobilePayService();
+                            rtnResult = mobilePayService.Charge(businessType,JObject.Parse(InParam));
+
                             break;
                         }
                     case "M6C"://门诊移动支付结算撤销

+ 2 - 0
JiNanMI.csproj

@@ -109,9 +109,11 @@
     <Compile Include="Business\Basic\IPSettlementService.cs" />
     <Compile Include="Business\Local\LocalIPSettlementService.cs" />
     <Compile Include="Business\Local\LocalMobilePayProcess.cs" />
+    <Compile Include="Business\Local\LocalMobilePayService.cs" />
     <Compile Include="Business\Local\LocalOPSettleService.cs" />
     <Compile Include="Business\Local\LocalMedDirDownloadProcess.cs" />
     <Compile Include="Business\Local\LocalPayFundSplitService.cs" />
+    <Compile Include="Business\Local\LocalGetPatientInfoProcess.cs" />
     <Compile Include="Business\Local\LocalSettleBillPrintProcess.cs" />
     <Compile Include="Business\Local\TestProcess.cs" />
     <Compile Include="Business\Other\MedDirDownloadProcess.cs" />

+ 6 - 0
Variables/TradeEnum.cs

@@ -334,6 +334,12 @@ namespace PTMedicalInsurance
         [Trade("query_jsxx", "费用结算对明细账", ModeEnum.DLL)]
         FeeDetailCheck,
 
+        /// <summary>
+        /// 移动支付下单接口
+        /// </summary>
+        [Trade("mobile_order", "移动支付下单接口", ModeEnum.REST)]
+        MobilePayOrder,
+
         #endregion
 
         #region 文件及清算