| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- using FastReport.Export.Hpgl.Commands;
- using Newtonsoft.Json.Linq;
- using PTMedicalInsurance.Business;
- using PTMedicalInsurance.Helper;
- using PTMedicalInsurance.Variables;
- using Sunny.UI;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.ConstrainedExecution;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace PTMedicalInsurance.Forms.BasicDatas.services
- {
- public class DirectoryDownloadLocalExtService
- {
- CenterBusiness cBus = new CenterBusiness();
- HisMainBusiness hBus = new HisMainBusiness();
- HisIrisServices hIS = new HisIrisServices();
- MIIrisServices mIS = new MIIrisServices();
- InvokeHelper invoker = new InvokeHelper();
- private ProgressWrapper _dataLoader;
- public delegate JObject GetImportInput(JObject joInput);
- public delegate JObject ApplyToIris(string code, JArray jaParam);
- private Dictionary<DownloadType, string> downlaodTypeMap = new Dictionary<DownloadType, string>
- {
- { DownloadType.None,""},
- { DownloadType.Directory,"7043"},
- { DownloadType.LimitPrice,"7044"},
- { DownloadType.SelfRatio,"7045"}
- };
- #region 目录下载
- /// <summary>
- /// 单次下载具体实现
- /// </summary>
- /// <param name="context"></param>
- /// <param name="err"></param>
- /// <returns></returns>
- public int SignleDownload(DataLoaderContext context, out string err)
- {
- err = "下载完成";
- object[] args = context.args;
- DataDownloadContext dataDownloadContext = (DataDownloadContext)args[0];
- //设置最大值
- if (context.setProgressMaximum != null)
- {
- context.setProgressMaximum(dataDownloadContext.pageSize);
- }
- JObject joData = new JObject();
- joData.Add("id", dataDownloadContext.ver);
- joData.Add("fixmedinsCode",Global.inf.hospitalNO);
- string trade = downlaodTypeMap.GetValue(dataDownloadContext.downloadType);
-
- JObject joRtn = invoker.invokeCenterService((TradeEnum)Enum.Parse(typeof(TradeEnum),trade), new JObject { ["data"] = joData });
- if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
- {
- return -1;
- }
- dataDownloadContext.totalCount = int.Parse(joRtn["output"]["data"]["recordCounts"].ToString());
- dataDownloadContext.pageNum = int.Parse(joRtn["output"]["data"]["pageNum"].ToString());
- dataDownloadContext.totalPages = int.Parse(joRtn["output"]["data"]["pages"].ToString());
- string header = $"本次下载总条数【{dataDownloadContext.totalCount}】,总页数【{dataDownloadContext.totalPages}】,当前下载页数【{dataDownloadContext.pageNum}】";
- if (context.setProgressHeaderText != null)
- {
- context.setProgressHeaderText(dataDownloadContext.progressBarStyle, header, dataDownloadContext.speed);
- }
- //数组传递,导入IRIS
- JArray ja = JArray.FromObject(joRtn["output"]["data"]["data"]);
- return ImportToIris(context, ja, out err);
- }
- /// <summary>
- /// 单次下载封装
- /// </summary>
- /// <param name="ver"></param>
- /// <param name="frm"></param>
- public void SignleDownload(string ver, DownloadType downloadType,Form frm)
- {
- _dataLoader = new ProgressWrapper(SignleDownload, frm);
- _dataLoader.SetProgressBar(ProgressBarStyle.Continuous, "正在更新...", 50);
- DataDownloadContext dataDownloadContext = new DataDownloadContext();
- dataDownloadContext.ver = ver;
- dataDownloadContext.downloadType = downloadType;
- _dataLoader.Start(new object[] { dataDownloadContext }, (result, errMsg) =>
- {
- // 在这里处理结果和错误信息
- if (result == 0)
- {
- MessageBox.Show(errMsg);
- }
- else
- {
- MessageBox.Show(errMsg);
- }
- });
- }
- /// <summary>
- /// 循环下载
- /// </summary>
- /// <param name="startVer"></param>
- /// <param name="err"></param>
- /// <returns></returns>
- public int LoopDownload(DataLoaderContext context, out string err)
- {
- err = "";
- bool bStop = true;
- object[] args = context.args;
- DataDownloadContext dataDownloadContext = (DataDownloadContext)args[0];
- while (bStop)
- {
- if (SignleDownload(context, out err) != 0)
- {
- Global.writeLog("err:" + err);
- bStop = false;
- return -1;
- }
- }
- return 0;
- }
- public void LoopDownload(string ver,DownloadType downloadType, Form frm)
- {
- _dataLoader = new ProgressWrapper(LoopDownload, frm);
- _dataLoader.SetProgressBar(ProgressBarStyle.Continuous, "正在下载...", 50);
- DataDownloadContext dataDownloadContext = new DataDownloadContext();
- dataDownloadContext.ver = ver;
- dataDownloadContext.downloadType = downloadType;
- dataDownloadContext.progressBarStyle = ProgressBarStyle.Continuous;
- dataDownloadContext.header = "正在下载";
- dataDownloadContext.speed = 50;
- _dataLoader.Start(new object[] { dataDownloadContext }, (result, errMsg) =>
- {
- // 在这里处理结果和错误信息
- if (result == 0)
- {
- MessageBox.Show(errMsg);
- }
- else
- {
- MessageBox.Show(errMsg);
- }
- });
- }
- #endregion
- #region 导入iris数据库
- /// <summary>
- /// 导入IRIS
- /// </summary>
- /// <param name="context"></param>
- /// <param name="ja"></param>
- /// <param name="err"></param>
- /// <returns></returns>
- private int ImportToIris(DataLoaderContext context, JArray ja, out string err)
- {
- JArray jaIrisInput = new JArray();
- int num = 0;
- int errorCount = 0;
- DataDownloadContext dataDownloadContext = (DataDownloadContext)context.args[0];
- GetImportInput getImportInput = null;
- ApplyToIris applyToIris = null;
- string code = "";
- if (dataDownloadContext.downloadType == DownloadType.Directory)
- {
- getImportInput = GetImportInputFrom7043;
- applyToIris = applyDataToIris;
- code = "09010035";
- }
- if (dataDownloadContext.downloadType == DownloadType.LimitPrice)
- {
- getImportInput = GetImportInputFrom7044;
- applyToIris = applyDataToIris;
- code = "09010035";
- }
- if (dataDownloadContext.downloadType == DownloadType.SelfRatio)
- {
- getImportInput = GetImportInputFrom7045;
- applyToIris = applyDataToSelfProper;
- code = "090100xx";
- }
- err = "";
- foreach (JObject jo in ja)
- {
- jaIrisInput.Add(getImportInput(jo));
- dataDownloadContext.ver = JsonHelper.getDestValue(jo, "id");
- num++;
- if ((num % 50) == 0 || (num == ja.Count))
- {
-
- JObject joRtn = applyToIris(code, jaIrisInput);
- if (joRtn["errorCode"].ToString() != "0")
- {
- errorCount = errorCount + 1;
- err = "\r\n" + err + joRtn["errorMessage"].ToString();
- }
- jaIrisInput = new JArray();
- }
- // 检查是否应取消操作
- if (context.Worker.CancellationPending)
- {
- err = "操作取消!";
- return -1; // 或者其他表示取消的返回值
- }
- if (context.reportProgress != null)
- {
- context.reportProgress(num);
- }
- //下载完成就停止
- if (dataDownloadContext.totalCount == 0)
- {
- err = "下载完成!";
- return -1; // 或者其他表示取消的返回值
- }
- }
- return 0;
- }
- private JObject applyDataToIris(string code, JArray jaParam)
- {
- JObject joIn = new JObject();
- JObject joRtn = new JObject();
- string outParam = "";
- try
- {
- joIn.Add(new JProperty("params", jaParam));
- joIn.Add("code", code);
- joIn.Add("updateUserID", Global.user.ID);
- InvokeHelper invoker = new InvokeHelper();
- string sInput = joIn.ToString();
- joRtn = invoker.invokeInsuService(sInput, "applyDataToIris");
- outParam = joRtn.ToString();
- return joRtn;
- }
- catch (Exception ex)
- {
- joRtn = JsonHelper.setExceptionJson(-1, "applyDataToIris", ex.Message);
- outParam = joRtn.ToString();
- return joRtn;
- }
- }
- //插入自付自付比例奥
- private JObject applyDataToSelfProper(string code, JArray jaParam)
- {
- JObject joIn = new JObject();
- JObject joRtn = new JObject();
- string outParam = "";
- try
- {
- //joIn.Add(new JProperty("params", jaParam));
- //joIn.Add("code", code);
- //joIn.Add("updateUserID", Global.user.ID);
- //InvokeHelper invoker = new InvokeHelper();
- //string sInput = joIn.ToString();
- //joRtn = invoker.invokeInsuService(sInput, "applyDataToIris");
- //outParam = joRtn.ToString();
- joRtn.Add("errorCode","-1");
- joRtn.Add("errorMessage", "未找到插入自付比例表方法");
- return joRtn;
- }
- catch (Exception ex)
- {
- joRtn = JsonHelper.setExceptionJson(-1, "applyDataToSelfProper", ex.Message);
- outParam = joRtn.ToString();
- return joRtn;
- }
- }
- #endregion
- #region 获取入参
- /// <summary>
- /// 从国家目录类别转换为医保平台自己规定的类型
- /// </summary>
- /// <param name="listType"></param>
- /// <param name="hisType"></param>
- /// <param name="hisName"></param>
- private void GetHisTypeFromListType(string listType, out string hisType, out string hisName)
- {
- hisType = hisName = "";
- string firstLetter = listType.Substring(0, 1);
- switch (firstLetter)
- {
- case "1":
- hisType = "1";
- hisName = "药品";
- break;
- case "2":
- hisType = "2";
- hisName = "诊疗";
- break;
- case "3":
- hisType = "3";
- hisName = "材料";
- break;
- default:
- hisType = "2";
- hisName = "诊疗";
- break;
- }
- }
-
- /// <summary>
- /// 获取入参
- /// </summary>
- /// <param name="joInput"></param>
- /// <returns></returns>
- ///
- private JObject GetImportInputFrom7043(JObject joInput)
- {
- dynamic jsonTemp = new JObject();
- jsonTemp.ID = "";
- jsonTemp.updateUserID = Global.user.ID;
- jsonTemp.HospitalDr = Global.inf.hospitalDr;
- jsonTemp.InterfaceDr = Global.inf.interfaceDr;
- jsonTemp.Code = JsonHelper.getDestValue(joInput, "hilistCode");
- jsonTemp.Name = JsonHelper.getDestValue(joInput, "hilistName");
- string hisType, hisName;
- GetHisTypeFromListType(JsonHelper.getDestValue(joInput, "listType"), out hisType, out hisName);
- jsonTemp.HisType = hisType;
- jsonTemp.HisTypeName = hisName;
- jsonTemp.LocateCode = "";
- jsonTemp.LocateName = "";
- jsonTemp.DosageFormCode = JsonHelper.getDestValue(joInput, "drugDosform");
- jsonTemp.DosageFormName = JsonHelper.getDestValue(joInput, "dosformName");
- jsonTemp.CategoryCode = JsonHelper.getDestValue(joInput, "medChrgitmType");
- jsonTemp.CategoryName = "";
- jsonTemp.Specification = JsonHelper.getDestValue(joInput, "regSpec");
- jsonTemp.SpecificationCode = "";
- jsonTemp.UnitOfPackag = "";
- jsonTemp.UnitOfValuation = "";
- jsonTemp.StartDate = JsonHelper.getDestValue(joInput, "begnDate");
- jsonTemp.EndDate = JsonHelper.getDestValue(joInput, "endDate");
- jsonTemp.PinyinSearchCode = JsonHelper.getDestValue(joInput, "pinyin");
- jsonTemp.Instructions = JsonHelper.getDestValue(joInput, "lmtUsescp");
- jsonTemp.ExceptContent = JsonHelper.getDestValue(joInput, "trtExctCont");
- jsonTemp.Connotation = JsonHelper.getDestValue(joInput, "trtItemCont");
- jsonTemp.ValidFlag = 1;
- jsonTemp.Note = JsonHelper.getDestValue(joInput, "memo");
- jsonTemp.VersionNO = JsonHelper.getDestValue(joInput, "id");
- jsonTemp.VersionName = "";
- jsonTemp.UseFlag = 1;
- jsonTemp.DrugSafetyStandardCode = "";
- jsonTemp.ApprovalNO = JsonHelper.getDestValue(joInput, "aprvno");
- jsonTemp.SpecialFlag = "";
- jsonTemp.LimitFlag = "";
- jsonTemp.LimitRange = "";
- jsonTemp.UniqueRecordNO = "";
- jsonTemp.Manufacturers = JsonHelper.getDestValue(joInput, "prodentpName");
- jsonTemp.Company = "";
- jsonTemp.MinPackagingQuantity = JsonHelper.getDestValue(joInput, "minPacCnt");
- jsonTemp.MinPackagingUnit = JsonHelper.getDestValue(joInput, "minPacunt");
- jsonTemp.ChargeItemLevel = JsonHelper.getDestValue(joInput, "chrgitmLv");
- jsonTemp.ChargeItemType = JsonHelper.getDestValue(joInput, "medChrgitmType");
- jsonTemp.ListType = JsonHelper.getDestValue(joInput, "listType");
- return jsonTemp;
- }
- private JObject GetImportInputFrom7044(JObject joInput)
- {
- dynamic jsonTemp = new JObject();
- jsonTemp.ID = "";
- jsonTemp.updateUserID = Global.user.ID;
- jsonTemp.HospitalDr = Global.inf.hospitalDr;
- jsonTemp.InterfaceDr = Global.inf.interfaceDr;
- jsonTemp.Code = JsonHelper.getDestValue(joInput, "hilistCode");
- jsonTemp.CeilingPrice = JsonHelper.getDestValue(joInput, "hilistPricUplmtAmt");
-
- return jsonTemp;
- }
- private JObject GetImportInputFrom7045(JObject joInput)
- {
- dynamic jsonTemp = new JObject();
- jsonTemp.ID = "";
- jsonTemp.updateUserID = Global.user.ID;
- jsonTemp.HospitalDr = Global.inf.hospitalDr;
- jsonTemp.InterfaceDr = Global.inf.interfaceDr;
- jsonTemp.Code = JsonHelper.getDestValue(joInput, "hilistCode");
- jsonTemp.SelfPercent = JsonHelper.getDestValue(joInput, "selfpayProp");
- return jsonTemp;
- }
- #endregion
- }
- public class DataDownloadContext
- {
- public int totalCount = 0;
- public int pageNum = 1;
- public int pageSize = 1000;
- public int totalPages = 0;
- public string ver = "";
- public ProgressBarStyle progressBarStyle = ProgressBarStyle.Continuous;
- public string header = "";
- public int speed =50;
- public DownloadType downloadType = DownloadType.None;
- }
- public enum DownloadType
- {
- None = 0,
- Directory =1,
- LimitPrice =2,
- SelfRatio =3
- }
- }
|