コード例 #1
0
        void DelegateCallbackClearCache(int isLocal)
        {
            ICiSysCacheService service = XapServiceMgr.find <ICiSysCacheService>();

            switch (isLocal)
            {
            case 0:
                var cst0 = new AssCostTimeTool("清理本地缓存(ClearCacheSettingApp): ", true);
                SysParamUtils.Clear();
                cst0.SaveTimeLog();
                break;

            case 1:
                var cst1 = new AssCostTimeTool("清理一级缓存(ClearCacheSettingApp): ", true);
                service.clearL1Cache(null);
                cst1.SaveTimeLog();
                break;

            case 2:
                var cst2 = new AssCostTimeTool("清理二级缓存(ClearCacheSettingApp): ", true);
                service.clearL2Cache(null);
                cst2.SaveTimeLog();
                break;

            case 3:
                var cst3 = new AssCostTimeTool("清理三级缓存(ClearCacheSettingApp): ", true);
                service.clearL3Cache(null);
                cst3.SaveTimeLog();
                break;
            }
        }
コード例 #2
0
        protected override void OnFillData()
        {
            var t1 = new AssCostTimeTool("切换患者时候,填充UI控件费用清单数据,耗时:", false);

            base.OnFillData();
            t1.SaveTimeLog();
        }
コード例 #3
0
        /// <summary>
        /// 异步加载数据
        /// </summary>
        protected override void OnLoadData()
        {
            var t1 = new AssCostTimeTool("切换患者时候,远程调用获取费用清单数据,耗时:", false);

            base.OnLoadData();
            if (null != model)
            {
                this.model.Reload();
                this.SetFormDataSource(model.GetTableDataSource()); // 不得已,由于控件不支持,同一模型对象的数据刷新
            }
            t1.SaveTimeLog();
        }
コード例 #4
0
        private void PrintPreviewView_Load(object sender, EventArgs e)
        {
            //Loading _loading = new Loading();
            //_loading.TopMost = true;
            //Form owerForm = this.FindForm().ParentForm;
            //_loading.Owner = owerForm;
            //_loading.Show();

            var t1 = new AssCostTimeTool("门急诊临床单据打印,匹配打印模板耗时:", false);

            this.viewModel = new PrintManageViewModel(this.Context.PsnInfo.Id_psndoc, this.Context.Dept.Id_dep, this.Context.Org.Id_org, this.Context.Group.Id_grp,
                                                      this.Context.GetOrgParam <string>(ICiOrdNSysParamConst.SYS_PARAM_CiPharmGrpableUsageScope), this.SelectedIndex, this.LstIdor, this.LstIdpres, this.Id_hp, this.Sd_hptp, this.bShowTools);
            t1.SaveTimeLog();

            var t2 = new AssCostTimeTool("门急诊临床单据打印,读取小票打印机耗时:", false);
            //加载辅助打印机(非小票单据操作系统默认打印机打印,小票单据在此指定辅助打印机)
            QiPrintArgs qiPrintArgs = new QiPrintArgs();

            qiPrintArgs.AddAltertivePrinter(QiPrintArgs.StripPpSzNO, this.viewModel.GetPrinterName());
            qiPrintArgs.ShowtipOnDocSzChanged = true;
            t2.SaveTimeLog();

            //装载模板视图
            this.rpt_viewer = new MultiReportsViewer();
            this.rpt_viewer.InitHasView(navBarDock: DockStyle.Top, useAlone: !bShowTools);
            this.rpt_viewer.CopyPrintArgs(qiPrintArgs);
            this.rpt_viewer.SetDefaultZoomRatio("100%");    //指定显示比例

            Control panel = this.rpt_viewer.GetViewPanel();

            panel.Dock = DockStyle.Fill;
            this.xapFormControl.Controls.Add(panel);

            this.OnInit();

            AppWaiting waiting = new AppWaiting();

            waiting.AsynchronousStart(this, delegate
            {
                this.toLoadData();
            });

            this.toFillData();


            //loading.Close();
        }
コード例 #5
0
        private void toFillData()
        {
            var t1 = new AssCostTimeTool("门急诊临床单据打印,报表刷新界面耗时:", false);

            if (lsttps != null && lsttps.Count > 0)
            {
                Dictionary <string, List <string> > dic = new Dictionary <string, List <string> >();
                dic.Add("sd_printtps", lsttps);
                this.FireSelected(dic);
            }

            this.rpt_viewer.FillReport();

            this.xapFormControl.SetEditable(true);

            t1.SaveTimeLog();
        }
コード例 #6
0
        private bool saveToDb(List <OrTplNItmDO> selectList)
        {
            AssCostTimeTool costTimeTool = new AssCostTimeTool("执行医嘱模板保存" + selectList.Count + "条记录", false);
            var             moreEmsDto   = this.buttonViewModel.getMoreEmsParamDTO(this.ciEnContext, selectList.ToArray());

            costTimeTool.SaveTimeLog();
            if (moreEmsDto != null)
            {
                xapBaseControl.FireEventSent(this, AssToolEx.DictionaryEventArgsWith(EventCodeType.EVENT_EMS_TMPL_EDIT, EventCodeType.ARGKEY_EMS_TMPL_EDIT,
                                                                                     moreEmsDto));
                if (moreEmsDto.Errormap2 == null || moreEmsDto.Errormap2.Values.Count == 0)
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #7
0
        public override bool LoadMedSrv(EmsCreatedParameter emsCreatedParameter, int pos) //EmsCreateParameter
        {
            MedSrvDO med   = emsCreatedParameter.getMedSrvDO();
            String   id_mm = emsCreatedParameter.getMmID();

            if (String.IsNullOrEmpty(id_mm))
            {
                this.errorMsgString = "没有物品ID";
                return(false);
            }

            // 获取列表最后一个数据
            EmsOrDrug newDrug = null;

            AssCostTimeTool.Enabled = true;

            AssCostTimeTool t1 = new AssCostTimeTool("加载数据时候,LoadMedSrv2 解析 MedSrv 耗时:", false);

            EmsRstDTO[] rsts = CreateRemote(med.Id_srv, id_mm);
            EmsRstDTO   rst  = rsts[0];

            if (rst != null)
            {
                EmsDrugItemDO emsDrugItem = (rst.Document[0] as EmsDrugItemDO);
                //String utf8Str = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(rst.DocumentString));
                //EmsDrugItemDO emsDrugItem = new EmsDrugItemDO();
                //emsDrugItem.deSerializeJson(utf8Str);

                FMap2 emsExtMap = rst.Extension;

                MedSrvDO        medSrv = emsExtMap["MedSrvDO"] as MedSrvDO;
                OrWfDeptInfoDTO wf     = emsExtMap["OrWfDeptInfoDTO"] as OrWfDeptInfoDTO;

                emsDrugItem.EmsOrDrug = new XapDataList <EmsOrDrug>();

                // 列表中显示的物品
                XapDataList <EmsOrDrug> emsOrDrugList = new XapDataList <EmsOrDrug>();
                FArrayList drugList_ex = emsDrugItem.EmsOrDrugListEx;
                foreach (EmsOrDrug drug in drugList_ex)
                {
                    emsOrDrugList.Add(drug);
                    emsDrugItem.EmsOrDrug.Add(drug);
                }

                newDrug = this.GetSelectedObject() as EmsOrDrug;
                if (pos < 0)
                {
                    this.uiEmsDTO.MedSrvDO    = med;
                    emsDrugItem.EmsOrDrugList = emsOrDrugList;
                    this.uiEmsDTO.Emsdrugs    = emsDrugItem;
                    return(true);
                }

                //TODO: 可以放到查询药品前,重复就不用走后台了
                if (this.uiEmsDTO.Emsdrugs.EmsOrDrugList.Count(p => p.Name_srv == newDrug.Name_srv && !p.IsDELETED) > 1)
                {
                    this.errorMsgString = "已经存在服务【" + medSrv.Name + "】!";
                    this.uiEmsDTO.Emsdrugs.EmsOrDrugList.Remove(newDrug);
                    this.logicEx.Clear <EmsOrDrug>(newDrug);
                    newDrug.Status = DOStatus.NEW;
                    this.uiEmsDTO.Emsdrugs.EmsOrDrug.Clear();
                    this.uiEmsDTO.Emsdrugs.EmsOrDrug.Add(newDrug);
                    return(false);
                }

                // 获取从后台返回的用于医嘱列表显示的数据
                if (emsOrDrugList == null || string.IsNullOrEmpty(emsOrDrugList[0].Id_mm))
                {// TODO 什么情况没有数据
                    this.errorMsgString = "服务未绑定物品,请联系信息科!";
                    this.logicEx.Clear <EmsOrDrug>(newDrug);
                    return(false);
                }
                EmsOrDrug tempDrug = emsOrDrugList[0];

                if (!newDrug.IsUPDATED)
                {
                    tempDrug.Status = DOStatus.NEW;
                }
                else
                { // 增加该逻辑分支   针对 已保存的 医嘱项目 进行服务项目的修改 -- 2016-11-21 by wangqz
                    tempDrug.Status   = DOStatus.UPDATED;
                    tempDrug.Id_orsrv = newDrug.Id_orsrv;
                }


                // 新加的药品要与已有的保持同频次,同周期,同用法
                tempDrug.Id_route   = this.uiEmsDTO.Emsdrugs.Id_route;
                tempDrug.Name_route = this.uiEmsDTO.Emsdrugs.Name_route;

                // 草药外配标识在医疗单中,勾选外配,全为外配
                tempDrug.Fg_extdispense = this.uiEmsDTO.Emsdrugs.Fg_extdispense;

                // 同频次
                tempDrug.Id_freq       = this.uiEmsDTO.Emsdrugs.Id_freq;
                tempDrug.Name_freq     = this.uiEmsDTO.Emsdrugs.Name_freq;
                tempDrug.Sd_frequnitct = this.uiEmsDTO.Emsdrugs.Sd_frequnitct;
                tempDrug.Freqct        = this.uiEmsDTO.Emsdrugs.Freqct;

                // 如果只有一条记录,恢复到服务默认的频次,用法
                fillSameInfoWithMedSrvDO(tempDrug, medSrv);

                // 同周期
                tempDrug.Use_days = this.uiEmsDTO.Emsdrugs.Use_days;

                // 计算总次数 TODO 需要提供前台计算方法,数据都有了,不用走后台了
                int?times_cur = this.uiEmsDTO.Emsdrugs.Times_cur; // CalQuantumUtil.GetInstance().getTotalTimes(tempDrug.Id_freq, (int)this.uiEmsDTO.Emsdrugs.Use_days);


                int?orders = this.uiEmsDTO.Emsdrugs.Orders;
                // 计算总量
                tempDrug.Quan_cur = CalQuantumUtil.GetInstance().getMMQuantum(tempDrug.Sd_mupkgutp, tempDrug.Quan_med, tempDrug.Factor_mb, tempDrug.Factor_cb, orders);

                tempDrug.Totalprice = tempDrug.Price * tempDrug.Quan_cur; // 计算总价

                // 将返回数据加到表格数据源中
                newDrug.Replace(tempDrug);
            }

            return(true);
        }
コード例 #8
0
        private void toLoadData()
        {
            var t1 = new AssCostTimeTool("门急诊临床单据打印,报表加载数据耗时:", false);

            List <ReportLoadParams> rpt_load_params = new List <ReportLoadParams>();

            lsttps.Clear();
            if (this.dicParam != null)
            {
                string sd_sheettps = "";
                if (this.dicParam.ContainsKey("Sd_sheettp"))
                {
                    sd_sheettps = dicParam["Sd_sheettp"] as string;
                }
                if (string.IsNullOrEmpty(sd_sheettps))
                {
                    rpt_viewer.ClearRptLoaded(false, false);
                    return;
                }
                lsttps = sd_sheettps.Split(',').ToList();
                List <string> lstURLs = this.viewModel.GetPrntmplPathByPrntp(lsttps);
                if (lstURLs == null || lstURLs.Count == 0)
                {
                    return;
                }
                foreach (string url in lstURLs)
                {
                    if (string.IsNullOrEmpty(url))
                    {
                        continue;
                    }

                    ReportLoadParams param = new ReportLoadParams();
                    param.RptFile   = url;
                    param.QryParams = this.getRptParams(url);
                    rpt_load_params.Add(param);
                }

                rpt_viewer.LoadReportsByThreads(rpt_load_params, false);
            }
            else
            {
                List <string> loadurl = new List <string>();
                foreach (string url in this.viewModel.dicUrlIDs.Keys)
                {
                    if (string.IsNullOrEmpty(url))
                    {
                        continue;
                    }
                    ReportLoadParams param = new ReportLoadParams();
                    param.RptFile   = url;
                    param.QryParams = this.getRptParams(url);
                    rpt_load_params.Add(param);
                    loadurl.Add(url);
                }

                rpt_viewer.LoadReportsByThreads(rpt_load_params, false);

                if (loadurl.Count != 0)
                {
                    foreach (var rpt_load_param in rpt_load_params)
                    {
                        if (!String.IsNullOrEmpty(rpt_load_param.LoadErrMsg))
                        {
                            loadurl.Remove(rpt_load_param.RptFile);
                        }
                    }
                    lsttps = this.viewModel.FindPrntpByUrl(loadurl);
                }
            }
            t1.SaveTimeLog();
        }
コード例 #9
0
        /// <summary>
        /// 创建医疗服务单
        /// </summary>
        /// <param name="medSrvDO"></param>
        private bool HandleCreateEms(EmsCreatedParameter emsCreateParameter, object param = null)
        {
            #region 1.有效性验证
            // 针对 Banner 的 有效性判断,该结构中含有患者就诊信息结构
            if (this.ent4BannerDTO == null || emsCreateParameter == null || emsCreateParameter.getMedSrvDO() == null)
            {
                return(false);
            }

            var medSrvDO = emsCreateParameter.getMedSrvDO();

            #endregion

            #region 2.获取指定类型的医疗单UI对象
            var t0 = new AssCostTimeTool(String.Format("创建医疗单时候({0}),总耗时:", medSrvDO.Name), false);

            var t1  = new AssCostTimeTool("创建医疗单时候,实例化UI模型耗时:", false);
            var ins = EmsDriverFactory.EmsDriverShare().DriverWith(medSrvDO.Id_srv, medSrvDO.Sd_srvtp, this, this.ent4BannerDTO);
            if (ins == null)
            {
                return(false);
            }

            var emsView = ins.GetEmsView();

            GetDefaultEmsView().ClearContext();

            SwitchEmsView(emsView);

            t1.SaveTimeLog();
            #endregion

            #region 3.医疗单模型加载数据
            emsView.GetViewModel().AddNew();
            if (param == null)
            {
                param = emsCreateParameter.GetParameter();
            }

            emsView.GetViewModel().SetCustomParam(param);

            // 加载数据
            t1.Reset("创建医疗单时候,数据模型加载数据耗时:");
            if (!emsView.GetViewModel().LoadMedSrv(emsCreateParameter))
            {
                if (!String.IsNullOrEmpty(emsView.GetViewModel().GetErrorMsg()))
                {
                    this.SetStatusMsg(emsView.GetViewModel().GetErrorMsg());
                }

                return(false);
            }
            if (emsView.GetViewModel().GetTipInfoMsg().Length > 0 && !getFgselfpay(emsView.GetViewModel()))
            {
                this.ShowInfo(this, emsView.GetViewModel().GetTipInfoMsg());
                //emsView.GetViewModel().ClearTipInfo();
            }
            //服务不可开立校验
            if (medSrvDO != null && !String.IsNullOrEmpty(medSrvDO.Id_srv))
            {
                var dic = AssToolEx.OrdEnabelValivate((new String[] { medSrvDO.Id_srv }), this.ent4BannerDTO.Code_entp);
                if (dic.ContainsKey(medSrvDO.Id_srv))
                {
                    //this.SetStatusMsg(dic[medSrvDO.Id_srv]);
                    this.ShowInfo(dic[medSrvDO.Id_srv]);
                    return(false);
                }
            }



            ////异步执行的委托
            //xap.rui.appfw.async.AsyncExecuteDelegate workDelegate = workArgs =>
            //{
            //    //参数是Argument,这是自己传入的,自行转化类型
            //    var argList = workArgs.Argument as List<object>;
            //    BaseEmsViewModel model = argList[0] as BaseEmsViewModel;
            //    EmsCreatedParameter crt = argList[1] as EmsCreatedParameter;
            //    // 异步调用,远程服务等。返回结果保存在参数的Result中。
            //    workArgs.Result = model.LoadMedSrv(crt);
            //};
            ////异步执行完毕后,回到调用线程执行的完毕委托
            //xap.rui.appfw.async.AsyncDoneDelegate doneDelegate = doneArgs =>
            //{
            //    //如果已经取消了,则返回
            //    if (doneArgs.Cancelled)
            //        return;
            //    //如果异步执行时发生了异常,可以在这里处理
            //    if (doneArgs.Error != null)
            //    {
            //        Exception ex = doneArgs.Error;
            //        //记录日志
            //        LogManager.GetLogger().ErrorEx(ex.Message, ex);
            //        //发布异常到UI
            //        ex.Publish();
            //        //标记为已处理异常,如果不标记,框架会抛出异常
            //        //doneArgs.ErrorHandled = true;
            //        return;
            //    }

            //    //异步执行完毕后,处理异步数据结果
            //    var data = doneArgs.Result ;
            //};

            ////
            //List<object> argsList = new List<object>();
            //argsList.Add(emsView.GetViewModel());
            //argsList.Add(emsCreateParameter);
            ////
            //workDelegate.AsyncExecute(argsList, doneDelegate);



            // 设置状态
            this.isCreateEms = true;

            // 刷新UI
            emsView.Refresh();
            t1.SaveTimeLog();
            #endregion

            #region 4.其他医疗单状态处理
            //
            t1.Reset("创建医疗单时候,其他事件处理耗时:");
            this.allowEdit = true;
            // 允许 UI 编辑
            var ret = this.SentNotify(EventCodeType.NM_UIMSG_ALLOW_EDIT);

            t1.SaveTimeLog();
            t0.SaveTimeLog();
            #endregion

            return(ret);
        }