/// <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; }
/// <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); }