コード例 #1
0
        /// <summary>
        /// 保存摆药单明细信息
        /// </summary>
        /// <param name="isIncrement">是否增量保存</param>
        private void SaveDrugBillList(bool isIncrement)
        {
            if (this.drugBillClassInfo == null)
            {
                return;
            }
            //判断传入参数是否有效
            if (this.drugBillClassInfo.ID == "")
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请在摆药单分类列表中选择要维护的记录并保存"));
                return;
            }
            //非医嘱摆药单和退药单不允许设置明细信息
            if (this.drugBillClassInfo.ID == "P")
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("非医嘱摆药单(手术室摆药单)不需要保存明细信息。"));
                return;
            }
            if (this.drugBillClassInfo.ID == "R")
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("退药单不需要保存明细信息。"));
                return;
            }
            //提示确认是否保存
            if (!isIncrement)
            {
                DialogResult rs = MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("确认进行全部保存操作吗? 保存操作耗时时间较长"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (rs == DialogResult.No)
                {
                    return;
                }
            }

            #region 取树型列表中被选中的项,并检测是否漏选
            //医嘱类型
            ArrayList alOrderType = new ArrayList( );
            foreach (TreeNode tn in this.tvAdviceKinde.Nodes[0].Nodes)
            {
                if (tn.Checked)
                {
                    alOrderType.Add((Neusoft.HISFC.Models.Order.OrderType)tn.Tag);
                }
            }
            if (alOrderType.Count == 0)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择医嘱类型"));
                return;
            }
            //药品用法
            List <Neusoft.HISFC.Models.Base.Const> alUsage = this.tvUse.SelectedNodes;
            if (alUsage.Count == 0)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择药品用法"));
                return;
            }
            //药品剂型
            List <Neusoft.HISFC.Models.Base.Const> alDosageForm = this.tvMode.SelectedNodes;
            if (alDosageForm.Count == 0)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择药品剂型"));
                return;
            }
            //药品性质
            List <Neusoft.HISFC.Models.Base.Const> alDrugQuality = this.tvQuality.SelectedNodes;
            if (alDrugQuality.Count == 0)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择药品性质"));
                return;
            }
            //药品类型
            List <Neusoft.HISFC.Models.Base.Const> alDrugType = this.tvType.SelectedNodes;
            if (alDrugType.Count == 0)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择药品类型"));
                return;
            }
            #endregion

            int parm;

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction( Neusoft.FrameWork.Management.Connection.Instance );
            //t.BeginTransaction( );

            drugStoreManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm(Neusoft.FrameWork.Management.Language.Msg("正在保存摆药单及其明细信息,请稍等..."));
            Application.DoEvents( );

            //根据参数判断是否需要先删除后增加。
            if (!isIncrement)
            {
                //先删除旧摆药单分类明细中的所有数据,然后插入新的数据。
                parm = drugStoreManager.DeleteDrugBillList(this.drugBillClassInfo.ID);
                if (parm == -1)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    MessageBox.Show(this.drugStoreManager.Err);
                    Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm( );
                    return;
                }
            }

            //插入新数据,用医嘱类型,用法,剂型,药品性质,药铺类型的全排列分别插入明细表。
            DrugBillList myList = new DrugBillList( );
            myList.DrugBillClass.ID = this.drugBillClassInfo.ID;
            int pro = 0; //进度条上显示的数据
            int max = alOrderType.Count * alUsage.Count * alDosageForm.Count * alDrugQuality.Count * alDrugType.Count;
            foreach (Neusoft.HISFC.Models.Order.OrderType OrderType in alOrderType)
            {
                foreach (NeuObject Usage in alUsage)
                {
                    foreach (NeuObject DosageForm in alDosageForm)
                    {
                        foreach (NeuObject DrugQuality in alDrugQuality)
                        {
                            foreach (NeuObject DrugType in alDrugType)
                            {
                                //为摆药单明细实例赋值
                                myList.OrderType   = OrderType;
                                myList.Usage       = Usage;
                                myList.DosageForm  = DosageForm;
                                myList.DrugQuality = DrugQuality;
                                myList.DrugType    = DrugType;

                                //插入摆药单分类明细表
                                parm = this.drugStoreManager.InsertDrugBillList(myList);
                                if (parm != 1)
                                {
                                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                                    if (this.drugStoreManager.DBErrCode == 1)
                                    {
                                        MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("数据已经存在,不能重复维护! 请检查上是否在其他摆药单内已存在以下组合信息\n") +
                                                        " 医嘱类型;" + OrderType.ID + OrderType.Name +
                                                        " 用法:" + Usage.ID + Usage.Name +
                                                        " 剂型:" + DosageForm.ID + DosageForm.Name +
                                                        " 药品性质:" + DrugQuality.ID + DrugQuality.Name +
                                                        " 药品类型:" + DrugType.ID + DrugType.Name);
                                    }
                                    else
                                    {
                                        MessageBox.Show(this.drugStoreManager.Err);
                                    }
                                    Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm( );
                                    return;
                                }
                                Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm(pro++, max);
                                Application.DoEvents( );
                            }
                        }
                    }
                }
            }
            //提交数据库
            Neusoft.FrameWork.Management.PublicTrans.Commit();
            MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存成功!"));
            Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm( );
            return;
        }
コード例 #2
0
        /// <summary>
        /// 保存控件中的摆药单分类明细
        /// </summary>
        public int Save(DrugBillClass info, bool IsDelete)
        {
            //判断传入参数是否有效
            if (info.ID == "")
            {
                MessageBox.Show("请在摆药单分类列表中选择要维护的记录并保存");
                return(-1);
            }

            //非医嘱摆药单和退药单不允许设置明细信息
            if (info.ID == "R" || info.ID == "P")
            {
                MessageBox.Show("手术室摆药单不需要保存明细信息。");
                return(-1);
            }

            #region 取树型列表中被选中的项,并检测是否漏选
            //医嘱类型
            ArrayList alOrderType = this.GetSelectedItems(tvOrderType);
            if (alOrderType.Count == 0)
            {
                MessageBox.Show("请选择医嘱类型");
                return(-1);
            }
            //药品用法
            ArrayList alUsage = this.GetSelectedItems(tvUsage);
            if (alUsage.Count == 0)
            {
                MessageBox.Show("请选择药品用法");
                return(-1);
            }
            //药品剂型
            ArrayList alDosageForm = this.GetSelectedItems(tvDosageForm);
            if (alDosageForm.Count == 0)
            {
                MessageBox.Show("请选择药品剂型");
                return(-1);
            }
            //药品性质
            ArrayList alDrugQuality = this.GetSelectedItems(tvDrugQuality);
            if (alDrugQuality.Count == 0)
            {
                MessageBox.Show("请选择药品性质");
                return(-1);
            }
            //药品类型
            ArrayList alDrugType = this.GetSelectedItems(tvDrugType);
            if (alDrugType.Count == 0)
            {
                MessageBox.Show("请选择药品类型");
                return(-1);
            }
            #endregion

            int parm;
            neusoft.neuFC.Management.Transaction t = new neusoft.neuFC.Management.Transaction(neusoft.neuFC.Management.Connection.Instance);
            t.BeginTransaction();
            myDrugStore.SetTrans(t.Trans);

            //根据参数判断是否需要先删除后增加。
            if (IsDelete)
            {
                //先删除旧摆药单分类明细中的所有数据,然后插入新的数据。
                parm = myDrugStore.DeleteDrugBillList(info.ID);
                if (parm == -1)
                {
                    t.RollBack();
                    MessageBox.Show(this.myDrugStore.Err);
                    return(-1);
                }
            }

            //插入新数据,用医嘱类型,用法,剂型,药品性质,药铺类型的全排列分别插入明细表。
            DrugBillList myList = new DrugBillList();
            myList.DrugBillClass.ID = info.ID;
            int pro = 0;             //进度条上显示的数据
            int max = alOrderType.Count * alUsage.Count * alDosageForm.Count * alDrugQuality.Count * alDrugType.Count;
            foreach (neuObject OrderType in alOrderType)
            {
                foreach (neuObject Usage in alUsage)
                {
                    foreach (neuObject DosageForm in alDosageForm)
                    {
                        foreach (neuObject DrugQuality in alDrugQuality)
                        {
                            foreach (neuObject DrugType in alDrugType)
                            {
                                //为摆药单明细实例赋值
                                myList.TypeCode       = OrderType.ID;
                                myList.UsageCode      = Usage.ID;
                                myList.DosageFormCode = DosageForm.ID;
                                myList.DrugQuality    = DrugQuality.ID;
                                myList.DrugType       = DrugType.ID;

                                //插入摆药单分类明细表
                                parm = this.myDrugStore.InsertDrugBillList(myList);
                                if (parm != 1)
                                {
                                    t.RollBack();
                                    if (this.myDrugStore.DBErrCode == 1)
                                    {
                                        MessageBox.Show("数据已经存在,不能重复维护!\n" +
                                                        " 医嘱类型;" + OrderType.ID + OrderType.Name +
                                                        " 用法:" + Usage.ID + Usage.Name +
                                                        " 剂型:" + DosageForm.ID + DosageForm.Name +
                                                        " 药品性质:" + DrugQuality.ID + DrugQuality.Name +
                                                        " 药品类型:" + DrugType.ID + DrugType.Name);
                                    }
                                    else
                                    {
                                        MessageBox.Show(this.myDrugStore.Err);
                                    }
                                    return(-1);
                                }
                                neusoft.neuFC.Interface.Classes.Function.ShowWaitForm(pro++, max);
                                Application.DoEvents();
                            }
                        }
                    }
                }
            }
            //提交数据库
            t.Commit();

            return(1);
        }