| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 | 
							- using Newtonsoft.Json.Linq;
 
- using PTMedicalInsurance.Business;
 
- using PTMedicalInsurance.Helper;
 
- using PTMedicalInsurance.Variables;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Data;
 
- using System.Drawing;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- using System.Windows.Forms;
 
- namespace PTMedicalInsurance.Forms
 
- {
 
-     public partial class FeeUpload : Form
 
-     {
 
-         private InvokeHelper invoker = new InvokeHelper();
 
-         private MIIrisServices mIS = new MIIrisServices();
 
-         private ManualResetEvent manualReset = new ManualResetEvent(true);
 
-         private HisIrisServices hIS = new HisIrisServices();
 
-         private string funNO;
 
-         private int singleCount;
 
-         private JArray jaFeeDetail;
 
-         public string outParam;
 
-         public struct userState
 
-         {
 
-             public int childProgress;
 
-             public string description;
 
-             public string error;
 
-             public string detailHisCode;
 
-             public string detailHisName;
 
-             public string detailInsuCode;
 
-         }
 
-         private userState getUserState(int progress,string desc,string err, JToken jt)
 
-         {
 
-             userState us = new userState();
 
-             us.childProgress = progress;
 
-             us.description = desc;
 
-             us.error = err;
 
-             JObject jo = (JObject)jt;
 
-             if (jt != null)
 
-             {
 
-                 us.detailHisCode = jo["medins_list_codg"].ToString();
 
-                 us.detailHisName = jo["medins_list_desc"].ToString();
 
-                 us.detailInsuCode = jo["med_list_codg"].ToString();
 
-             }
 
-             
 
-             return us;
 
-         }
 
-         public FeeUpload(string funNO, int singleCount, JArray jaFeeDetail)
 
-         {
 
-             InitializeComponent();
 
-             this.funNO = funNO;
 
-             this.singleCount = singleCount;
 
-             this.jaFeeDetail = jaFeeDetail;
 
-             this.pbFee.Maximum = 3;
 
-             this.pbDetail.Maximum = jaFeeDetail.Count;
 
-         }
 
-         public FeeUpload(string funNO, int singleCount)
 
-         {
 
-             InitializeComponent();
 
-             this.funNO = funNO;
 
-             this.singleCount = singleCount;
 
-         }
 
-         private void btExit_Click(object sender, EventArgs e)
 
-         {
 
-             this.DialogResult = DialogResult.Cancel;
 
-             Close();
 
-         }
 
-         public void setPos(int pos)
 
-         {
 
-             pbFee.Value = pos;
 
-         }
 
-         public void writeError(string error)
 
-         {
 
-             rtbRecord.AppendText(error + System.Environment.NewLine);
 
-         }
 
-         private void ProgressBar_Load(object sender, EventArgs e)
 
-         {
 
-             bgWorker1.WorkerReportsProgress = true;
 
-             bgWorker1.WorkerSupportsCancellation = true;
 
-             bgWorker1.RunWorkerAsync();
 
-         }
 
-         private void bgWorker1_DoWork(object sender, DoWorkEventArgs e)
 
-         {
 
-             BackgroundWorker bgWorker = sender as BackgroundWorker;
 
-             string errMsg;
 
-             int errorCount = 0;
 
-             outParam = "";
 
-             userState us = new userState();
 
-             try
 
-             {
 
-                 us = getUserState(0, "获取HIS费用", "......", null);
 
-                 bgWorker.ReportProgress(0, us);
 
-                 //获取IS费用
 
-                 if (hIS.getHisFee(Global.pat, out errMsg) != 0)
 
-                 {
 
-                     us = getUserState(0, "获取HIS费用", "失败", null);
 
-                     bgWorker.ReportProgress(0, us);
 
-                     outParam = errMsg;
 
-                     return;
 
-                 }
 
-                 else
 
-                 {
 
-                     us = getUserState(1, "获取HIS费用", "成功", null);
 
-                     bgWorker.ReportProgress(0, us);
 
-                 }
 
-                 //调用医保平台转换HIS费用(转换医保编码等)
 
-                 JObject joHisFee = JObject.Parse(errMsg);
 
-                 us = getUserState(0, "转换HIS费用", "......", null);
 
-                 bgWorker.ReportProgress(0, us);
 
-                 if (mIS.convertHisFeeWithInsuCode(joHisFee, out errMsg) != 0)
 
-                 {
 
-                     us = getUserState(0, "转换HIS费用", "失败"+ errMsg, null);
 
-                     bgWorker.ReportProgress(0, us);
 
-                     outParam = errMsg;
 
-                     return;
 
-                 }
 
-                 else
 
-                 {
 
-                     us = getUserState(0, "转换HIS费用", "成功", null);
 
-                     bgWorker.ReportProgress(0, us);
 
-                 }
 
-                 JArray jaFeeDetail = JArray.Parse(JsonHelper.getDestValue(JObject.Parse(errMsg), "data"));
 
-                 int feeCount = jaFeeDetail.Count();
 
-                 this.pbFee.Maximum = jaFeeDetail.Count;
 
-                 JArray jaTmp = new JArray();
 
-                 for (int i = 0; i < feeCount; i++)
 
-                 {
 
-                     manualReset.WaitOne();
 
-                     if (bgWorker.CancellationPending)
 
-                     {
 
-                         e.Cancel = true;
 
-                         break;
 
-                     }
 
-                     decimal cnt = decimal.Parse(jaFeeDetail[i]["cnt"].ToString());
 
-                     decimal pric = decimal.Parse(jaFeeDetail[i]["pric"].ToString());
 
-                     //decimal sumamt = decimal.Parse(jaFeeDetail[i]["det_item_fee_sumamt"].ToString());
 
-                     jaFeeDetail[i]["dise_codg"] = new JObject();
 
-                     jaFeeDetail[i]["dise_codg"] = Global.pat.disCode;
 
-                     jaFeeDetail[i]["cnt"] = cnt.ToString("#0.0000");
 
-                     jaFeeDetail[i]["pric"] = pric.ToString("#0.000000");
 
-                     jaFeeDetail[i]["chrg_bchno"] = Global.pat.adm_Dr.ToString();
 
-                     jaFeeDetail[i]["med_type"] = Global.pat.medType;
 
-                     if (jaFeeDetail[i]["validFlag"].ToString() == "N")
 
-                     {
 
-                         bgWorker.ReportProgress(i, null);
 
-                         continue;
 
-                     }
 
-                     jaTmp.Add(jaFeeDetail[i]);
 
-                     if (((i + 1) % singleCount == 0) || ((i + 1) == jaFeeDetail.Count))
 
-                     {
 
-                         JObject joFeeDetail = new JObject();
 
-                         joFeeDetail.Add("feedetail", jaTmp);
 
-                         JObject joRtn = invoker.invokeCenterService(funNO, JsonHelper.setCenterInpar(funNO,joFeeDetail));
 
-                         if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
 
-                         {
 
-                             outParam = outParam + errMsg + System.Environment.NewLine;
 
-                             us = getUserState(1, "解析中心返回值", "失败。原因:" + errMsg, jaFeeDetail[i]);
 
-                             bgWorker.ReportProgress(i, us);
 
-                             errorCount++;
 
-                         }
 
-                         else
 
-                         {
 
-                             us = getUserState(1, "解析中心返回值", "成功", jaFeeDetail[i]);
 
-                             bgWorker.ReportProgress(i, us);
 
-                             //广州需要检查每条MEMO是否为空
 
-                             JArray jaRtnDetail = new JArray();
 
-                             jaRtnDetail = JArray.Parse(JsonHelper.getDestValue(joRtn, "output.result"));
 
-                             //foreach (JToken jt in jaRtnDetail)
 
-                             //{
 
-                             //    if (jt["memo"].ToString() != "")
 
-                             //    {
 
-                             //        outParam = outParam + errMsg + System.Environment.NewLine;
 
-                             //        us = getUserState(2, "中心返回明细报错", jt["memo"].ToString(), jt);
 
-                             //        errorCount++;
 
-                             //    }
 
-                             //}
 
-                             //for (int j = 0; j < jaRtnDetail.Count; j++)
 
-                             //{
 
-                             //    if (jaRtnDetail[j]["memo"] != null)
 
-                             //    {
 
-                             //        var memo = jaRtnDetail[j]["memo"];
 
-                             //        if (memo.ToString() != "")
 
-                             //        {
 
-                             //            outParam = outParam + memo + System.Environment.NewLine;
 
-                             //            us = getUserState(2, "中心返回明细报错", memo.ToString(), null);
 
-                             //            bgWorker.ReportProgress(i, us);
 
-                             //            errorCount++;
 
-                             //        }
 
-                             //    }
 
-                                 
 
-                             //}
 
-                             //成功后插入医保平台
 
-                             if (mIS.insertFee(jaTmp, out errMsg) != 0)
 
-                             {
 
-                                 outParam = outParam + errMsg + System.Environment.NewLine;
 
-                                 us = getUserState(2, "插入医保平台", "失败。原因:" + errMsg, jaFeeDetail[i]);
 
-                                 errorCount++;
 
-                             }
 
-                             else
 
-                                 us = getUserState(2, "插入医保平台", "成功", jaFeeDetail[i]);
 
-                             bgWorker.ReportProgress(i, us);
 
-                             //更新2301返回的数据
 
-                             if (mIS.updateFee(JArray.Parse(JsonHelper.getDestValue(joRtn, "output.result")), out errMsg) != 0)
 
-                             {
 
-                                 outParam = outParam + errMsg + System.Environment.NewLine;
 
-                                 us = getUserState(3, "根据中心返回数据更新费用明细", "失败。原因:" + errMsg, jaFeeDetail[i]);
 
-                                 errorCount++;
 
-                             }
 
-                             else
 
-                                 us = getUserState(3, "根据中心返回数据更新费用明细", "成功", jaFeeDetail[i]);
 
-                             bgWorker.ReportProgress(i, us);
 
-                         }
 
-                         jaTmp = new JArray();
 
-                     }
 
-                     bgWorker.ReportProgress(i + 1, null);
 
-                 }
 
-                 if ((errorCount == 0) && (e.Cancel == false))
 
-                 {
 
-                     Thread.Sleep(1000);
 
-                     this.DialogResult = DialogResult.OK;
 
-                 }
 
-                 else
 
-                 {
 
-                     Global.writeLog("outParam:" +outParam);
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 outParam = "费用上传异常:" + ex.Message;
 
-             }
 
-         }
 
-         private void bgWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
 
-         {
 
-             if (e.ProgressPercentage < 0)
 
-             {
 
-                 setPos(0);
 
-             }
 
-             else
 
-             {
 
-                 setPos(e.ProgressPercentage);
 
-             }
 
-             if (e.UserState != null)
 
-             {
 
-                 userState us = (userState)e.UserState;
 
-                 string upDetailRecord = "";
 
-                 upDetailRecord = "【His名称:" + us.detailHisName + ";";
 
-                 upDetailRecord = upDetailRecord + "His编码:" + us.detailInsuCode + "; ";
 
-                 upDetailRecord = upDetailRecord + "医保编码:" + us.detailInsuCode + ";";
 
-                 upDetailRecord = upDetailRecord + "当前节点:" + us.description + "】";
 
-                 upDetailRecord = upDetailRecord + us.error + System.Environment.NewLine;
 
-                 this.rtbRecord.AppendText(upDetailRecord);
 
-                 pbDetail.Value = us.childProgress;
 
-             }
 
-         }
 
-         private void rtbRecord_TextChanged(object sender, EventArgs e)
 
-         {
 
-             rtbRecord.SelectionStart = rtbRecord.Text.Length;
 
-             rtbRecord.ScrollToCaret();
 
-         }
 
-         private void btUpload_Click(object sender, EventArgs e)
 
-         {
 
-             if (!bgWorker1.IsBusy)
 
-             {
 
-                 rtbRecord.Clear();
 
-                 bgWorker1.RunWorkerAsync();
 
-             }
 
-             else
 
-             {
 
-                 MessageBox.Show("请点击停止按钮!");
 
-             }
 
-         }
 
-         private void btPause_Click(object sender, EventArgs e)
 
-         {
 
-             if (btPause.Text == "暂停")
 
-             {
 
-                 manualReset.Reset();//暂停当前线程的工作,发信号给waitOne方法,阻塞
 
-                 btPause.Text = "继续";
 
-             }
 
-             else
 
-             {
 
-                 manualReset.Set();//继续某个线程的工作
 
-                 btPause.Text = "暂停";
 
-             }
 
-         }
 
-         private void btStop_Click(object sender, EventArgs e)
 
-         {
 
-             if (bgWorker1.IsBusy)  bgWorker1.CancelAsync();
 
-         }
 
-         private void bgWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 
-         {
 
-             if (e.Cancelled)
 
-             { }
 
-             if (e.Error != null)
 
-             {
 
-                 outParam = e.Error.ToString();
 
-             }
 
-             //e.Result  
 
-         }
 
-     }
 
- }
 
 
  |