Browse Source

fix:修复费用上传Bug,工伤返回的节点和医保不一样,且内容可能为空

zhanfei 8 months ago
parent
commit
e38c996ff0

BIN
GuiYang_YinHai/.vs/GuiYangMI/v16/.suo


+ 8 - 1
GuiYang_YinHai/GuiYangMI/Common/ProgressHelper.cs

@@ -300,6 +300,7 @@ namespace PTMedicalInsurance.Common
             if (_backgroundWorker.IsBusy) return;
 
             this._onCompleted = onCompleted;
+
             _backgroundWorker.RunWorkerAsync();
         }
 
@@ -309,12 +310,15 @@ namespace PTMedicalInsurance.Common
         {
             // 调用传入的方法
             string errMsg = "";
+            //注意,如果_queryExportDataAction 事件里需要更新UI 必须使用 Control.Invoke 或 Control.BeginInvoke。否则会导致程序卡死
+            ///类似这样:this.Invoke((MethodInvoker)delegate {labelProgress.Text = $"Progress: {progress}%"; });
             int result = _queryExportDataAction(out errMsg);
             e.Result = Tuple.Create(result, errMsg);
         }
 
         private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
         {
+
             progressDialog.Close();
             if (e.Error != null)
             {
@@ -328,6 +332,7 @@ namespace PTMedicalInsurance.Common
             }
             else
             {
+
                 var resultTuple = (Tuple<int, string>)e.Result;
                 int result = resultTuple.Item1;
                 string errMsg = resultTuple.Item2;
@@ -335,12 +340,14 @@ namespace PTMedicalInsurance.Common
                 // 调用回调函数,传递结果和错误信息
                 _onCompleted?.Invoke(result, errMsg);
             }
-           
+
+            Dispose();
         }
 
         public void Dispose()
         {
             _backgroundWorker.Dispose();
+            progressDialog.Dispose();
         }
     }
 

+ 13 - 6
GuiYang_YinHai/GuiYangMI/FormSetter/GridViewSetter.cs

@@ -248,6 +248,7 @@ namespace PTMedicalInsurance.FormSetter
             AddDGVColumn(dgv, "单据类型", "BillType", 80);
             AddDGVColumn(dgv, "HIS有无标识", "Exist", 100);
             AddDGVColumn(dgv, "HIS单据状态", "status", 80);
+            AddDGVColumn(dgv, "主结算ID(共济)", "MainSettlementIDOfMutualAid", 200);
         }
 
         public void SetHeaderTextOfDgvCenterSetlRec(DataGridView dgv)
@@ -316,7 +317,7 @@ namespace PTMedicalInsurance.FormSetter
             dgv.Columns.Clear();
             dgv.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.True;
             dgv.ColumnHeadersHeight = 50;
-            AddDGVColumn(dgv, "序号", "sn", 50);
+            //AddDGVColumn(dgv, "序号", "sn", 50);
             AddDGVColumn(dgv, "就诊序号", "akc190", 100);
             AddDGVColumn(dgv, "结算编号", "yka103", 250);
             AddDGVColumn(dgv, "个人编号", "aac001", 300);
@@ -1530,15 +1531,21 @@ namespace PTMedicalInsurance.FormSetter
         {
             dgv.AutoGenerateColumns = false;
             dgv.Columns.Clear();
+            AddDGVColumn(dgv, "就诊ID", "Adm_Dr", 80);
             AddDGVColumn(dgv, "人员姓名", "PatientName", 80);
+            AddDGVColumn(dgv, "就诊顺序号", "MdtrtID", 200);
+            AddDGVColumn(dgv, "结算流水号", "SettlementID", 200);
+            AddDGVColumn(dgv, "HIS结算ID", "RecordID", 200);
             AddDGVColumn(dgv, "人员编号", "PersonnelNO", 80);
             AddDGVColumn(dgv, "医疗费总额", "Sumamt", 80);
             AddDGVColumn(dgv, "基金支付总额", "FundPaySumamt", 80);
-             AddDGVColumn(dgv, "就诊结算时间", "SettlementTime", 300);
-            AddDGVColumn(dgv, "交易类型", "BillType", 100);
-            AddDGVColumn(dgv, "就诊顺序号", "MdtrtID", 200);
-            AddDGVColumn(dgv, "结算流水号", "SettlementID", 200);
-            AddDGVColumn(dgv, "参保地", "InsuranceAreaCode", 100); 
+            AddDGVColumn(dgv, "就诊结算时间", "SettlementTime", 300);
+            AddDGVColumn(dgv, "单据类型", "BillType", 80);
+            AddDGVColumn(dgv, "有效标志", "ValidFlag", 80);
+            AddDGVColumn(dgv, "参保地", "InsuranceAreaCode", 100);
+            AddDGVColumn(dgv, "HIS有无标识", "Exist", 100);
+            AddDGVColumn(dgv, "HIS单据状态", "status", 80);
+            AddDGVColumn(dgv, "主结算ID(共济)", "MainSettlementIDOfMutualAid", 200);
         }
 
 

+ 4 - 1
GuiYang_YinHai/GuiYangMI/Forms/BasicDatas/BasicData.cs

@@ -1201,7 +1201,10 @@ namespace PTMedicalInsurance.Forms
             }
 
             //test.Stop();
-            this.pgHISDirect.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.pgHISDirect_PageChanged);
+            this.Invoke((MethodInvoker)delegate {
+                this.pgHISDirect.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.pgHISDirect_PageChanged);
+            });
+            
             if (dtExport.Rows.Count > 0)
             {
                 string directoryType = string.Empty;

+ 391 - 120
GuiYang_YinHai/GuiYangMI/Forms/Clearing.cs

@@ -62,11 +62,12 @@ namespace PTMedicalInsurance.Forms
             grdSetter.SetHeaderTextOfHisAndInsuCheckData(dgvHisAndInsuCheck);
             grdSetter.SetHeaderTextOfHisSetlData(dgvHisSetlData);
             grdSetter.SetHeaderTextOfInsuSetlData(dgvInsuSettlData);
+            grdSetter.SetHeaderTextOfDgvUnCheckData_O(dgvUnCheckData_O);
             cbgGroupSet.SelectAll();
             cbgGroupSet.SetItemCheckState(1, false);
             cbgGroupSet.SetItemCheckState(4, false);
 
-            cbxValid.SelectedIndex = 0;
+            cbxValid.SelectedIndex = 1;
             cbValid_2.SelectedIndex = 1;
             cbValid_3.SelectedIndex = 0;
             rbgTimeWay.SelectedIndex = 0;
@@ -75,6 +76,7 @@ namespace PTMedicalInsurance.Forms
             cbDivision.SelectedIndex = 4;
             cbValidFlag.SelectedIndex = 2;
             cbBillType.SelectedIndex = 2;
+            
 
             DateTime firstDayOfLastMonth = DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(-1);
             DateTime lastDayOfLastMonth = DateTime.Now.AddDays(0 - DateTime.Now.Day);
@@ -103,8 +105,10 @@ namespace PTMedicalInsurance.Forms
             dpED_Local.Text = DateTime.Now.ToString("2023-08-01 23:59:59");
             dpED_3.Value = DateTime.Now;
             WindowState = FormWindowState.Maximized;
+
             cbxValid_O.SelectedIndex = 0;
             rbgValidFlag.SelectedIndex = 0;
+            rbgSettlOrgan.SelectedIndex = 1;
         }
 
         //本地对账查询汇总数据
@@ -253,17 +257,22 @@ namespace PTMedicalInsurance.Forms
 
             if (dt.Rows[i]["clr_type"].ToString() == "99982")
             {
-                if (cbgGroupSet.GetItemCheckState(1))
-                {
-                    joCheck.insutype = dt.Rows[i]["insutype"].ToString();
-                }
-                else
-                {
-                    error = "该条为生育项目,请勾选左侧面板险种类型,点击查询后再进行对账";
-                    return -1;
-                }
+                joCheck.insutype = 1;
             }
 
+                //if (dt.Rows[i]["clr_type"].ToString() == "99982")
+                //{
+                //    if (cbgGroupSet.GetItemCheckState(1))
+                //    {
+                //        joCheck.insutype = dt.Rows[i]["insutype"].ToString();
+                //    }
+                //    else
+                //    {
+                //        error = "该条为生育项目,请勾选左侧面板险种类型,点击查询后再进行对账";
+                //        return -1;
+                //    }
+                //}
+
 
             if (dt.Rows[i]["clr_type"].ToString() == "03")
             {
@@ -277,14 +286,9 @@ namespace PTMedicalInsurance.Forms
                     return -1;
                 }
             }
-            else
-            {
-                joCheck.prm_yabtch = Global.pat.patExtend.prm_yabtch;
-            }
 
-                
+            joCheck.prm_yabtch = Global.pat.patExtend.prm_yabtch;
             joCheck.clr_type = dt.Rows[i]["clr_type"].ToString();
-            
             joCheck.medfee_sumamt = dt.Rows[i]["medfee_sumamt"].ToString();
             joCheck.fund_pay_sumamt = dt.Rows[i]["fund_pay_sumamt"].ToString();
             joCheck.acct_pay = dt.Rows[i]["acct_pay"].ToString();
@@ -715,15 +719,20 @@ namespace PTMedicalInsurance.Forms
 
                 string sqlStr = "select Adm_Dr,PatientName ,Convert(VARCHAR(12),RecordID) as RecordID,MdtrtID,SettlementID,PersonnelNO,SettlementDateTime,Convert(decimal(18,2),Sumamt) as Sumamt,Convert(decimal(18,2),AccountPaySumamt) as AccountPaySumamt,ValidFlag,BillType,"
                               + "Convert(decimal(18,2),(HealthInsurancePay + EnterpriseSupplementPay +CivilserviceAllowancePay +OtherPay +MedicalAssistPay)) AS JJZFZE," 
-                              + "InsuranceAreaCode,MedicalType,msgid,ClearingOrgan"
+                              + "InsuranceAreaCode,MedicalType,msgid,ClearingOrgan,MainSettlementIDOfMutualAid"
                               + "   FROM  BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
                 sqlStr = sqlStr + " and SettlementDateTime>'" + dpST_L.Text + "'";
                 sqlStr = sqlStr + " and SettlementDateTime<'" + dpED_L.Text + "'";
+                //if (rbgSettlOrgan.SelectedIndex == 0)
+                //    Global.pat.insuplc_admdvs = "529900";
+                //else
+                //    Global.pat.insuplc_admdvs = "520199";
+                string ClearingOrganStr = "";
                 if (rbgSettlOrgan.SelectedIndex == 0)
-                    Global.pat.insuplc_admdvs = "529900";
+                     ClearingOrganStr = " and ClearingOrgan='529900'";
                 else
-                    Global.pat.insuplc_admdvs = "520199";
-                sqlStr = sqlStr + " and ClearingOrgan='" + Global.pat.insuplc_admdvs + "'";
+                    ClearingOrganStr = $" and ClearingOrgan in ('520199','{Global.inf.areaCode}')";
+                sqlStr = sqlStr + ClearingOrganStr;
                 sqlStr = sqlStr + " and ClearingType <> '9902'";
                 sqlStr = sqlStr + " and BillType<>9 and((ConfirmFlag = 1 and AdmType IN('3', '4')) OR(AdmType IN('1', '2')))";
                 if (rbgValidFlag.SelectedIndex == 0) sqlStr = sqlStr + " and ValidFlag =1";
@@ -742,27 +751,36 @@ namespace PTMedicalInsurance.Forms
                 DataTable dt = (DataTable)JsonConvert.DeserializeObject(JsonHelper.getDestValue(joHisRtn, "result"), (typeof(DataTable)));
                 dgvHisSettlRec.DataSource = dt;
 
-                for (int j = 0; j < dgvHisSettlRec.RowCount; j++)
-                {
-                    string settlementID = dgvHisSettlRec.Rows[j].Cells["SettlementID"].Value.ToString();
-                    string validFlag = dgvHisSettlRec.Rows[j].Cells["ValidFlag"].Value.ToString();
-                    string billType = dgvHisSettlRec.Rows[j].Cells["BillType"].Value.ToString();
-                    string exist = dgvHisSettlRec.Rows[j].Cells["Exist"].Value.ToString();
-                    //N	正常;A	作废;S	红冲;TP	预结算;BS	已红冲
-                    string status = dgvHisSettlRec.Rows[j].Cells["status"].Value.ToString();
-
-
-                    if ((validFlag == "1") && (status != "N"))
-                    {
-                        dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Red;
-                    }
-
-                    if (exist != "存在") 
-                    {
-                        dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Red;
-                    }
+                //for (int j = 0; j < dgvHisSettlRec.RowCount; j++)
+                //{
+                //    string settlementID = dgvHisSettlRec.Rows[j].Cells["SettlementID"].Value.ToString();
+                //    string validFlag = dgvHisSettlRec.Rows[j].Cells["ValidFlag"].Value.ToString();
+                //    string billType = dgvHisSettlRec.Rows[j].Cells["BillType"].Value.ToString();
+                //    string recordID = dgvHisSettlRec.Rows[j].Cells["RecordID"].Value.ToString();
+                //    string exist = dgvHisSettlRec.Rows[j].Cells["Exist"].Value.ToString();
+                //    //N	正常;A	作废;S	红冲;TP	预结算;BS	已红冲
+                //    string status = dgvHisSettlRec.Rows[j].Cells["status"].Value.ToString();
+
+
+                //    if ((validFlag == "1") && (status != "N"))
+                //    {
+                //        dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Yellow;
+                //    }
+
+                //    if (exist != "存在") 
+                //    {
+                //        if (recordID == "")
+                //        {
+                //            dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Orange;
+                //        }
+                //        else
+                //        {
+                //            dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Yellow;
+                //        }
+
+                //    }
 
-                }
+                //}
 
                 return 0;
             }
@@ -782,7 +800,16 @@ namespace PTMedicalInsurance.Forms
             foreach (JObject jo in jaMiRecord)
             {
                 JObject joTmp = new JObject();
-                joTmp.Add("SettlementID", jo["SettlementID"].ToString());
+                string mainSettlementIDOfMutualAid = jo["MainSettlementIDOfMutualAid"].ToString();
+                if (string.IsNullOrEmpty(mainSettlementIDOfMutualAid))
+                {
+                    joTmp.Add("SettlementID", jo["SettlementID"].ToString());
+                }
+                else
+                {
+                    joTmp.Add("SettlementID", mainSettlementIDOfMutualAid);
+                }
+                
                 joTmp.Add("RecordID", jo["RecordID"].ToString());
                 joTmp.Add("ValidFlag", jo["ValidFlag"].ToString());
                 joTmp.Add("BillType", jo["BillType"].ToString());
@@ -798,21 +825,38 @@ namespace PTMedicalInsurance.Forms
             JArray jaHisRtn = JArray.Parse(JsonHelper.getDestValue(JObject.Parse(errMsg), "result"));
             foreach (JObject joMi in jaMiRecord)
             {
+                string mainSettlementIDOfMutualAid = joMi["MainSettlementIDOfMutualAid"].ToString();
                 foreach (JObject joHis in jaHisRtn)
                 {
-                    if ((joMi["RecordID"].ToString() == joHis["RecordID"].ToString()) && (joMi["BillType"].ToString() == joHis["BillType"].ToString()))
+                    if (string.IsNullOrEmpty(mainSettlementIDOfMutualAid))
                     {
-                        Global.writeLog(joMi.ToString());
-                        if (!joMi.ContainsKey("Exist"))
+                        if ((joMi["RecordID"].ToString() == joHis["RecordID"].ToString()) && (joMi["SettlementID"].ToString() == joHis["SettlementID"].ToString()) && (joMi["BillType"].ToString() == joHis["BillType"].ToString()))
                         {
-                            joMi.Add("Exist", joHis["Exist"].ToString());
+                            if (!joMi.ContainsKey("Exist"))
+                            {
+                                joMi.Add("Exist", joHis["Exist"].ToString());
+                            }
+                            if (!joMi.ContainsKey("status"))
+                            {
+                                joMi.Add("status", joHis["status"].ToString());
+                            }
                         }
-                        if (!joMi.ContainsKey("status"))
+                    }
+                    else
+                    {
+                        if ((joMi["RecordID"].ToString() == joHis["RecordID"].ToString()) && (joMi["MainSettlementIDOfMutualAid"].ToString() == joHis["SettlementID"].ToString()) && (joMi["BillType"].ToString() == joHis["BillType"].ToString()))
                         {
-                            joMi.Add("status", joHis["status"].ToString());
+                            if (!joMi.ContainsKey("Exist"))
+                            {
+                                joMi.Add("Exist", joHis["Exist"].ToString());
+                            }
+                            if (!joMi.ContainsKey("status"))
+                            {
+                                joMi.Add("status", joHis["status"].ToString());
+                            }
                         }
-
                     }
+                    
                 }
             }
 
@@ -834,7 +878,12 @@ namespace PTMedicalInsurance.Forms
                 sqlStr = sqlStr + "  FROM  BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
                 sqlStr = sqlStr + " and SettlementDateTime>'" + dpST_L.Text + "'";
                 sqlStr = sqlStr + " and SettlementDateTime<'" + dpED_L.Text + "'";
-                sqlStr = sqlStr + " and ClearingOrgan='" + Global.pat.insuplc_admdvs + "'";
+                string ClearingOrganStr;
+                if (rbgSettlOrgan.SelectedIndex == 0)
+                    ClearingOrganStr = " and ClearingOrgan='529900'";
+                else
+                    ClearingOrganStr = $" and ClearingOrgan in ('520199','{Global.inf.areaCode}')";
+                sqlStr = sqlStr + ClearingOrganStr;
                 sqlStr = sqlStr + " and ClearingType <> '9902'";
                 if (rbgValidFlag.SelectedIndex ==0) sqlStr = sqlStr + " and ValidFlag =1";
                 if (rbgValidFlag.SelectedIndex == 1) sqlStr = sqlStr + " and ValidFlag =0";
@@ -1151,6 +1200,11 @@ namespace PTMedicalInsurance.Forms
             
             outParam = "";
 
+            if (dgvHisSettlRec.Rows.Count == 0)
+            {
+                outParam = "下载中心数据需要先查询本地数据!";
+                return  -1;
+            }
             DataTable dt1 = (DataTable)dgvCenterSettlRec.DataSource;
             if (dt1 != null ) dt1.Clear();
             if (dpST_L.Value.Date != dpED_L.Value.Date)
@@ -1161,10 +1215,6 @@ namespace PTMedicalInsurance.Forms
 
             try
             {
-                if (rbgSettlOrgan.SelectedIndex == 0)
-                    Global.pat.insuplc_admdvs = "529900";
-                else
-                    Global.pat.insuplc_admdvs = "520199";
 
                 string  filePath,error = "";
                 if (queryDetailSumInfo(out error) != 0)
@@ -1510,7 +1560,9 @@ namespace PTMedicalInsurance.Forms
         private void uiButton3_Click(object sender, EventArgs e)
         {
             string sqlStr = "SELECT Convert(decimal(18,2),(BillType*(HealthInsurancePay + EnterpriseSupplementPay +CivilserviceAllowancePay +OtherPay +MedicalAssistPay+AccountPaySumamt))) AS FundPaySumamt, ";
-            sqlStr = sqlStr + "PatientName,PersonnelNO,Convert(decimal(18,2),Sumamt) as Sumamt,SettlementID,SettlementDateTime as SettlementTime,BillType,MdtrtID,InsuranceAreaCode ";
+            sqlStr = sqlStr + "Convert(decimal(18,2),Sumamt) as Sumamt ";
+            sqlStr = sqlStr + ",Adm_Dr,PatientName,Convert(VARCHAR(12),RecordID) as RecordID,MdtrtID,SettlementID,PersonnelNO,SettlementDateTime as SettlementTime,ValidFlag,BillType";
+            sqlStr = sqlStr + ",InsuranceAreaCode,MedicalType,msgid,ClearingOrgan,MainSettlementIDOfMutualAid";
             sqlStr = sqlStr + " FROM  BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
             sqlStr = sqlStr + " and SettlementDateTime>'" + dpST_O.Text + "'";
             sqlStr = sqlStr + " and SettlementDateTime<'" + dpED_O.Text + "'";
@@ -1519,7 +1571,6 @@ namespace PTMedicalInsurance.Forms
             sqlStr = sqlStr + " and BillType<>9 and((ConfirmFlag = 1 and AdmType IN('3', '4')) OR(AdmType IN('1', '2')))";
             //sqlStr = sqlStr + " and (LEFT(InsuranceAreaCode,4) <>'5299'  and ClearingOrgan='529900')";
 
-
             if (cbxValid_O.SelectedIndex != 0)
             {
                 if (cbxValid_O.SelectedIndex == 1)
@@ -1533,42 +1584,19 @@ namespace PTMedicalInsurance.Forms
             joSqlstr.Add("sqlStr", sqlStr);
             JObject joRtn = mIS.DynamicQuerySettlInfo(joSqlstr);
 
-            //DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
-            DataTable dt = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
-            //DataTable dtResult = new DataTable();
-            ////克隆表结构
-            //dtResult = dt.Clone();
-            //foreach (DataColumn col in dtResult.Columns)
-            //{
-            //    if (col.ColumnName == "BillID")
-            //    {
-            //        //修改列类型
-            //        col.DataType = typeof(string);
-            //    }
-            //    if (col.ColumnName == "RecordID")
-            //    {
-            //        //修改列类型
-            //        col.DataType = typeof(string);
-            //    }
-            //}
+            JObject joHisRtn = BatchHisRecord(joRtn);
 
-            //foreach (DataRow row in dt.Rows)
-            //{
-            //    DataRow newDtRow = dtResult.NewRow();
-            //    foreach (DataColumn column in dt.Columns)
-            //    {
-            //        if (column.ColumnName == "BillID")
-            //        {
-            //            MessageBox.Show("cs1:" + column.ColumnName + row[column.ColumnName].ToString());
-            //            newDtRow[column.ColumnName] = Convert.ToString(row[column.ColumnName]);
-            //        }
-            //        else
-            //        {
-            //            newDtRow[column.ColumnName] = row[column.ColumnName];
-            //        }
-            //    }
-            //    dtResult.Rows.Add(newDtRow);
-            //}
+            if (JsonHelper.parseIrisRtnValue(joHisRtn, out string error) != 0)
+            {
+                error = "查询HIS结算记录出错,请联系管理员!" + error;
+                MessageBox.Show(error);
+                return;
+            }
+            DataTable dt = (DataTable)JsonConvert.DeserializeObject(JsonHelper.getDestValue(joHisRtn, "result"), (typeof(DataTable)));
+
+            //DataTable dt = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
+
+            
             dgvOthCheck.DataSource = dt;
             tcOtherPlaceCheck.SelectedIndex = 0;
         }
@@ -1706,26 +1734,144 @@ namespace PTMedicalInsurance.Forms
         private void btDownloadUnCheckData_Click(object sender, EventArgs e)
         {
 
-            dynamic joTmp = new JObject();
-            joTmp.prm_date = dpST_O.Value.ToString("yyyy-MM-dd");
-            joTmp.prm_yabtch = tbCBD_O.Text;
+            //dynamic joTmp = new JObject();
+            //joTmp.prm_date = dpST_O.Value.ToString("yyyy-MM-dd");
+            //Global.pat.patExtend.prm_yabtch = joTmp.prm_yabtch = tbCBD_O.Text;
 
-            string errMsg;
+            //string errMsg;
+            //if (invoker.invokeYHCom("H7105", joTmp, out errMsg) != 0)
+            //{
+            //    MessageBox.Show(errMsg);
+            //    return;
+            //}
+            //else
+            //{
+            //    string centerRtn = errMsg;
+            //    //导入数据
+            //    if (importToDgvUnCheckData_O(centerRtn, out errMsg) != 0)
+            //    {
+            //        MessageBox.Show(errMsg);
+            //        return;
+            //    }
+            //    tcOtherPlaceCheck.SelectedIndex = 1;
+            //}
+
+
+            // 创建 DataLoader 并传递 queryExportData 方法
+            DataLoader _dataLoader;
+            _dataLoader = new DataLoader((out string errMsg) => QueryOthplcUnCheckData(out errMsg), this);
+
+            _dataLoader.StartQueryExportData((result, errMsg) =>
+            {
+                // 在这里处理结果和错误信息
+                if (result == 0)
+                {
+                    MessageBox.Show(errMsg);
+                }
+                else
+                {
+                    MessageBox.Show(errMsg);
+                }
+            });
+
+
+            //QueryOthplcUnCheckData(out string errMsg);
+
+
+        }
+
+        private int QueryOthplcUnCheckData(out string errMsg)
+        {
+            try
+            {
+                errMsg = "";
+                // 创建一个新的DataTable来存储合并后的数据
+                DataTable mergedDataTable = new DataTable();
+
+                // 获取一周的数据并合并
+                DateTime dtBegin = dpST_O.Value;
+                DateTime dtEnd = dpED_O.Value;
+                string err;
+                for (DateTime date = dtBegin; date <= dtEnd; date = date.AddDays(1))
+                {
+                    DataTable dailyData;
+                    if (GetUnCheckData(date, out DataTable dt, out err) != 0)
+                    {
+                        Global.writeLog(err);
+                        continue;
+                    }
+                    else
+                    {
+                        dailyData = dt;
+                    }
+
+
+                    // 如果是第一天,初始化mergedDataTable的结构
+                    if (date == dtBegin)
+                    {
+                        mergedDataTable = dailyData.Clone();
+                    }
+
+                    // 使用Merge方法合并dailyData到mergedDataTable
+                    mergedDataTable.Merge(dailyData);
+
+                    ////将dailyData中的数据合并到mergedDataTable中
+                    //foreach (DataRow row in dailyData.Rows)
+                    //{
+                    //    mergedDataTable.ImportRow(row);
+                    //}
+                }
+
+                //dgvUnCheckData_O.DataSource = mergedDataTable;
+                //tcOtherPlaceCheck.SelectedIndex = 1;
+
+                this.Invoke((MethodInvoker)delegate {
+                    dgvUnCheckData_O.DataSource = mergedDataTable;
+                    tcOtherPlaceCheck.SelectedIndex = 1;
+                });
+
+                if ((mergedDataTable == null) || (mergedDataTable.Rows.Count ==0))
+                {
+                    errMsg = "未查询到数据!";
+                    return -1;
+                }
+                else
+                {
+                    errMsg = "查询完成";
+                    return 0;
+                }
+            }
+            catch (Exception ex)
+            {
+                errMsg = "异常:" + ex.Message;
+                return -1;
+            }
+        }
+
+        private int GetUnCheckData(DateTime date,out DataTable dt, out string errMsg)
+        {
+            errMsg = "";
+            dt = null;
+            dynamic joTmp = new JObject();
+            joTmp.prm_date = date.ToString("yyyy-MM-dd");
+            joTmp.prm_yabtch = Global.pat.patExtend.prm_yabtch;
             if (invoker.invokeYHCom("H7105", joTmp, out errMsg) != 0)
             {
-                MessageBox.Show(errMsg);
-                return;
+                return -1;
             }
             else
             {
-                string centerRtn = errMsg;
-                //导入数据
-                if (importToDgvUnCheckData_O(centerRtn,out errMsg) != 0)
+                JObject joRtn = JObject.Parse(xmler.ToJSON(errMsg));
+                dt = (DataTable)JsonConvert.DeserializeObject(JsonHelper.getDestValue(joRtn, "output.sqldata.row"), (typeof(DataTable)));
+                if (dt == null)
                 {
-                    MessageBox.Show(errMsg);
-                    return;
+                    errMsg = "返回数据集为空";
+                    return -1;
+                }
+                else
+                {
+                    return 0;
                 }
-                tcOtherPlaceCheck.SelectedIndex = 1;
             }
         }
 
@@ -1917,35 +2063,60 @@ namespace PTMedicalInsurance.Forms
                 return ;
            }
 
-            for (int i = 0; i < dgvHisSettlRec.RowCount; i++)
+            bool bFind = false;
+            if ((dgvHisSettlRec.RowCount > 0)  && (tcLocalCheckDetail.SelectedIndex ==0))
             {
-                string settlID = tbSettlmentID.Text;
-                string colValue = dgvHisSettlRec.Rows[i].Cells["SettlementID"].Value.ToString();
-                if (settlID ==  colValue)
+                for (int i = 0; i < dgvHisSettlRec.RowCount; i++)
                 {
-                    dgvHisSettlRec.ClearSelection();
-                    dgvHisSettlRec.Rows[i].Selected = true;
+                    string settlID = tbSettlmentID.Text;
+                    string colValue = dgvHisSettlRec.Rows[i].Cells["SettlementID"].Value.ToString();
+                    if (settlID == colValue)
+                    {
+                        dgvHisSettlRec.ClearSelection();
+                        dgvHisSettlRec.Rows[i].Selected = true;
+
+                        //让指定行处于选中状态(状态)
+                        dgvHisSettlRec.CurrentCell = dgvHisSettlRec.Rows[i].Cells[1];
+                        dgvHisSettlRec.CurrentRow.Selected = true;
 
-                    //让指定行处于选中状态(状态)
-                    dgvHisSettlRec.CurrentCell = dgvHisSettlRec.Rows[i].Cells[1];
-                    dgvHisSettlRec.CurrentRow.Selected = true;
+                        bFind = true;
+                    }
+                }
+
+                if (!bFind)
+                {
+                    MessageBox.Show("在His数据集中未定位到相关数据,请扩大查询范围或更改结算ID");
                 }
             }
 
-            for (int i = 0; i < dgvHisSettlRec.RowCount; i++)
+            bFind = false;
+            if ((dgvCenterSettlRec.RowCount > 0) && (tcLocalCheckDetail.SelectedIndex == 1))
             {
-                string settlID = tbSettlmentID.Text;
-                string colValue = dgvCenterSettlRec.Rows[i].Cells["setl_id"].Value.ToString();
-                if (settlID == colValue)
+                for (int i = 0; i < dgvCenterSettlRec.RowCount; i++)
                 {
-                    dgvCenterSettlRec.ClearSelection();
-                    dgvCenterSettlRec.Rows[i].Selected = true;
+                    string settlID = tbSettlmentID.Text;
+                    string colValue = dgvCenterSettlRec.Rows[i].Cells["setl_id"].Value.ToString();
+                    if (settlID == colValue)
+                    {
+                        dgvCenterSettlRec.ClearSelection();
+                        dgvCenterSettlRec.Rows[i].Selected = true;
+
+                        //让指定行处于选中状态(状态)
+                        dgvCenterSettlRec.CurrentCell = dgvCenterSettlRec.Rows[i].Cells[1];
+                        dgvCenterSettlRec.CurrentRow.Selected = true;
+
+                        bFind = true;
+                    }
 
-                    //让指定行处于选中状态(状态)
-                    dgvCenterSettlRec.CurrentCell = dgvCenterSettlRec.Rows[i].Cells[1];
-                    dgvCenterSettlRec.CurrentRow.Selected = true;
+                }
+
+                if (!bFind)
+                {
+                    MessageBox.Show("在中心下载的数据集中未定位到相关数据,请扩大查询范围或更改结算ID");
                 }
             }
+            
+            
         }
 
         private void cmsCheck_Opening(object sender, CancelEventArgs e)
@@ -2370,5 +2541,105 @@ namespace PTMedicalInsurance.Forms
         {
             Close();
         }
+
+        private void dgvHisSettlRec_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
+        {
+            int j = e.RowIndex;
+            string settlementID = dgvHisSettlRec.Rows[j].Cells["SettlementID"].Value.ToString();
+            string validFlag = dgvHisSettlRec.Rows[j].Cells["ValidFlag"].Value.ToString();
+            string billType = dgvHisSettlRec.Rows[j].Cells["BillType"].Value.ToString();
+            string recordID = dgvHisSettlRec.Rows[j].Cells["RecordID"].Value.ToString();
+            string exist = dgvHisSettlRec.Rows[j].Cells["Exist"].Value.ToString();
+            //N	正常;A	作废;S	红冲;TP	预结算;BS	已红冲
+            string status = dgvHisSettlRec.Rows[j].Cells["status"].Value.ToString();
+
+
+            if ((validFlag == "1") && (status != "N"))
+            {
+                dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Yellow;
+            }
+
+            if (exist != "存在")
+            {
+                if (recordID == "")
+                {
+                    dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Orange;
+                }
+                else
+                {
+                    dgvHisSettlRec.Rows[j].DefaultCellStyle.BackColor = Color.Yellow;
+                }
+
+            }
+        }
+
+        private void dgvCenterSettlRec_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
+        {
+            int i = e.RowIndex;
+            string stmt_rslt = dgvCenterSettlRec.Rows[i].Cells["stmt_rslt"].Value.ToString();
+            if (stmt_rslt == "101")
+            {
+                dgvCenterSettlRec.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
+            }
+            if (stmt_rslt == "102")
+            {
+                dgvCenterSettlRec.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
+            }
+            if (stmt_rslt == "103")
+            {
+                dgvCenterSettlRec.Rows[i].DefaultCellStyle.BackColor = Color.Orange;
+            }
+        }
+
+        private void tsmAICheck_Click_1(object sender, EventArgs e)
+        {
+
+        }
+
+        private void uiButton1_Click_1(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        private void btnClose_2_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        private void uiButton4_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        private void dgvOthCheck_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
+        {
+            int j = e.RowIndex;
+            string settlementID = dgvOthCheck.Rows[j].Cells["SettlementID"].Value.ToString();
+            string validFlag = dgvOthCheck.Rows[j].Cells["ValidFlag"].Value.ToString();
+            string billType = dgvOthCheck.Rows[j].Cells["BillType"].Value.ToString();
+            string recordID = dgvOthCheck.Rows[j].Cells["RecordID"].Value.ToString();
+            string exist = dgvOthCheck.Rows[j].Cells["Exist"].Value.ToString();
+            //N	正常;A	作废;S	红冲;TP	预结算;BS	已红冲
+            string status = dgvOthCheck.Rows[j].Cells["status"].Value.ToString();
+
+
+            if ((validFlag == "1") && (status != "N"))
+            {
+                dgvOthCheck.Rows[j].DefaultCellStyle.BackColor = Color.Yellow;
+            }
+
+            if (exist != "存在")
+            {
+                if (recordID == "")
+                {
+                    dgvOthCheck.Rows[j].DefaultCellStyle.BackColor = Color.Orange;
+                }
+                else
+                {
+                    dgvOthCheck.Rows[j].DefaultCellStyle.BackColor = Color.Yellow;
+                }
+
+            }
+        }
     }
 }

+ 10 - 3
GuiYang_YinHai/GuiYangMI/Forms/Clearing.designer.cs

@@ -1072,6 +1072,7 @@
             this.dgvHisSettlRec.StripeOddColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
             this.dgvHisSettlRec.TabIndex = 1;
             this.dgvHisSettlRec.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.dgvHisSettlRec.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvHisSettlRec_RowPostPaint);
             // 
             // tabPage16
             // 
@@ -1130,6 +1131,7 @@
             this.dgvCenterSettlRec.StripeOddColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
             this.dgvCenterSettlRec.TabIndex = 1;
             this.dgvCenterSettlRec.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.dgvCenterSettlRec.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvCenterSettlRec_RowPostPaint);
             // 
             // tabPage17
             // 
@@ -1521,6 +1523,7 @@
             this.dgvOthCheck.StripeOddColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
             this.dgvOthCheck.TabIndex = 0;
             this.dgvOthCheck.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.dgvOthCheck.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvOthCheck_RowPostPaint);
             this.dgvOthCheck.RowStateChanged += new System.Windows.Forms.DataGridViewRowStateChangedEventHandler(this.dgvRowStateChanged);
             // 
             // cmdOthPlcCheck
@@ -1545,7 +1548,7 @@
             this.tabPage6.Controls.Add(this.dgvUnCheckData_O);
             this.tabPage6.Location = new System.Drawing.Point(0, 25);
             this.tabPage6.Name = "tabPage6";
-            this.tabPage6.Size = new System.Drawing.Size(1, 399);
+            this.tabPage6.Size = new System.Drawing.Size(1060, 399);
             this.tabPage6.TabIndex = 1;
             this.tabPage6.Text = "异地未完成数据下载";
             this.tabPage6.UseVisualStyleBackColor = true;
@@ -1566,7 +1569,6 @@
             dataGridViewCellStyle22.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
             this.dgvUnCheckData_O.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle22;
             this.dgvUnCheckData_O.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            this.dgvUnCheckData_O.ContextMenuStrip = this.cmdOthPlcCheck;
             dataGridViewCellStyle23.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
             dataGridViewCellStyle23.BackColor = System.Drawing.SystemColors.Window;
             dataGridViewCellStyle23.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
@@ -1597,10 +1599,11 @@
             this.dgvUnCheckData_O.RowsDefaultCellStyle = dataGridViewCellStyle25;
             this.dgvUnCheckData_O.RowTemplate.Height = 30;
             this.dgvUnCheckData_O.SelectedIndex = -1;
-            this.dgvUnCheckData_O.Size = new System.Drawing.Size(1, 399);
+            this.dgvUnCheckData_O.Size = new System.Drawing.Size(1060, 399);
             this.dgvUnCheckData_O.StripeOddColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
             this.dgvUnCheckData_O.TabIndex = 1;
             this.dgvUnCheckData_O.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.dgvUnCheckData_O.RowStateChanged += new System.Windows.Forms.DataGridViewRowStateChangedEventHandler(this.dgvRowStateChanged);
             // 
             // uiPanel6
             // 
@@ -1758,6 +1761,7 @@
             this.uiButton1.Text = "退出";
             this.uiButton1.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.uiButton1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click_1);
             // 
             // uiButton3
             // 
@@ -2387,6 +2391,7 @@
             this.btnClose_2.Text = "退出";
             this.btnClose_2.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.btnClose_2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.btnClose_2.Click += new System.EventHandler(this.btnClose_2_Click);
             // 
             // btnPatchClr
             // 
@@ -3138,6 +3143,7 @@
             this.tsmAICheck.Name = "tsmAICheck";
             this.tsmAICheck.Size = new System.Drawing.Size(282, 26);
             this.tsmAICheck.Text = "智能比对";
+            this.tsmAICheck.Click += new System.EventHandler(this.tsmAICheck_Click_1);
             // 
             // tabPage20
             // 
@@ -3638,6 +3644,7 @@
             this.uiButton4.Text = "退出";
             this.uiButton4.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.uiButton4.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
+            this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click);
             // 
             // btQueryHisAndInsuCheckData
             // 

+ 33 - 6
GuiYang_YinHai/GuiYangMI/Forms/FeeUpload.cs

@@ -197,7 +197,6 @@ namespace PTMedicalInsurance.Forms
                 for (int i = 0; i < feeCount; i++)
                 {
                     manualReset.WaitOne();
-
                     if (bgWorker.CancellationPending)
                     {
                         e.Cancel = true;
@@ -300,6 +299,8 @@ namespace PTMedicalInsurance.Forms
                                 {
                                     us = getUserState(2, "插入&更新医保平台", "成功", jaFeeDetail[i]);
                                 }
+
+                                //us = getUserState(2, "插入&更新医保平台", "成功", jaFeeDetail[i]);
                             }
                                 
                             bgWorker.ReportProgress(i, us);
@@ -336,6 +337,23 @@ namespace PTMedicalInsurance.Forms
 
         }
 
+        private string getJsonValue(JObject jo,string nodeName)
+        {
+            if (!jo.ContainsKey(nodeName))
+            {
+                return "0.00";
+            }
+            else if (string.IsNullOrEmpty(JsonHelper.getDestValue(jo, nodeName)))
+            {
+                return "0.00";
+            }
+            else
+            {
+                return JsonHelper.getDestValue(jo, nodeName);
+            }
+        }
+
+
         private JArray UpdateHisFeeDetailByCenterRtn(JArray jaHisFeeDetail,JArray jaCenterRtnDetail)
         {
             JArray jaRtn = new JArray();
@@ -348,11 +366,20 @@ namespace PTMedicalInsurance.Forms
 
 
                         JObject joTmp = new JObject();
-                        joTmp.Add("feedetl_sn", joCenterDetail["yka105"].ToString());
-                        joTmp.Add("fulamt_ownpay_amt", joCenterDetail["yka317"].ToString());
-                        joTmp.Add("preselfpay_amt", joCenterDetail["yka318"].ToString());
-                        joTmp.Add("inscp_scp_amt", joCenterDetail["yka319"].ToString());
-                        joTmp.Add("selfpay_prop", joCenterDetail["SELFPAY_PROP"].ToString());
+                        //joTmp.Add("feedetl_sn", joCenterDetail["yka105"].ToString());
+                        //joTmp.Add("fulamt_ownpay_amt", joCenterDetail["yka317"].ToString());
+                        //joTmp.Add("preselfpay_amt", joCenterDetail["yka318"].ToString());
+                        //joTmp.Add("inscp_scp_amt", joCenterDetail["yka319"].ToString());
+                        //joTmp.Add("selfpay_prop", joCenterDetail["SELFPAY_PROP"].ToString());
+
+
+
+                        joTmp.Add("feedetl_sn", getJsonValue(joCenterDetail, "yka105"));
+                        joTmp.Add("fulamt_ownpay_amt", getJsonValue(joCenterDetail, "yka317"));
+                        joTmp.Add("preselfpay_amt", getJsonValue(joCenterDetail, "yka318"));
+                        joTmp.Add("inscp_scp_amt", getJsonValue(joCenterDetail, "yka319"));
+                        joTmp.Add("selfpay_prop", getJsonValue(joCenterDetail, "SELFPAY_PROP"));
+
                         joTmp.Add("overlmt_amt", 0);
                         joTmp.Add("chrgitm_lv", 0);
                         joTmp.Add("med_chrgitm_type", 0);

+ 6 - 1
GuiYang_YinHai/GuiYangMI/InsuBusiness.cs

@@ -602,7 +602,6 @@ namespace PTMedicalInsurance
 
                             hBus.setPrmBatch();
 
-
                             if (Global.pat.medType != "G31")
                             {
                                 Global.pat.patExtend.prm_yabtch = Global.pat.insuplc_admdvs;
@@ -1240,6 +1239,12 @@ namespace PTMedicalInsurance
                             }
                             else
                             {
+                                //确认中心结算
+                                if (invoker.confirmYHCom(out errMsg) != 0)
+                                {
+                                    rtnResult = JsonHelper.setExceptionJson(-1, "中心确认失败", outParam).ToString();
+                                    return rtnResult;
+                                }
                                 string rtn = xmler.ToJSON(outParam);
                                 //退结算会返一个新的ID
                                 string newSettleID = JsonHelper.getDestValue(JObject.Parse(rtn), "output.prm_yka198");

+ 10 - 0
GuiYang_YinHai/GuiYangMI/Variables/Global.cs

@@ -42,6 +42,16 @@ namespace PTMedicalInsurance.Variables
 
         }
 
+        public static void writeLog_tmp(string content)
+        {
+            string logDir = Global.curEvt.path + "\\Log", logName = DateTime.Now.ToString("yyyy-MM-dd") + "_tmp.Log";
+            Log log = new Log(logDir, logName);
+
+            string timeLine = "**********" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "***********" + "\r\n";
+            log.Write(timeLine + content);
+
+        }
+
         public static void writeLog_encrypt(string content)
         {
             string logDir = Global.curEvt.path + "\\Log", logName = DateTime.Now.ToString("yyyy-MM-dd") + "_Encrypt.Log";

BIN
GuiYang_YinHai/GuiYangMI/bin/Debug/GuiYangMI.dll


BIN
GuiYang_YinHai/GuiYangMI/bin/Debug/GuiYangMI.pdb


BIN
GuiYang_YinHai/GuiYangMI/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
GuiYang_YinHai/GuiYangMI/obj/Debug/GuiYangMI.csproj.GenerateResource.cache


BIN
GuiYang_YinHai/GuiYangMI/obj/Debug/GuiYangMI.dll


BIN
GuiYang_YinHai/GuiYangMI/obj/Debug/GuiYangMI.pdb