/// <summary> /// 修改摆药单类别 /// </summary> private void ModifyDrugBill( ) { if (this.lvPutDrugBill1.SelectedItems.Count > 0) { if (this.drugBillClassInfo.ID == "" || this.drugBillClassInfo.ID == null) { this.lvPutDrugBill1.ClearSelection(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择要修改的摆药单")); return; } //显示摆药单编辑信息 this.neuTabControl1.TabPages.Add(this.tabPage2); this.neuTabControl1.SelectedIndex = 1; } else { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择要修改的摆药单")); //重新设置摆药单属性 this.neuTabControl1.SelectedIndex = 1; this.ResetDrugBillAttribute( ); this.drugBillClassInfo = new DrugBillClass( ); } }
/// <summary> /// 修改单条摆药单信息 /// </summary> /// <param name="billClass">摆药单分类实体</param> /// <returns></returns> protected virtual int ModifyItem(DrugBillClass billClass, int index) { if (billClass != null && index >= 0) { //区别有效和无效的项目图标 if (billClass.IsValid) { this.Items[index].ImageIndex = 0; } else { this.Items[index].ImageIndex = 1; } //如果是新增加的项目,显示特殊的图标 if (billClass.ID == "") { this.Items[index].ImageIndex = 2; } //Tag属性保存摆药单分类实体 this.Items[index].Tag = billClass; //添加listView的子节点 this.Items[index].SubItems[0].Text = billClass.Name; this.Items[index].SubItems[1].Text = billClass.PrintType.Name; this.Items[index].SubItems[2].Text = billClass.IsValid ? "有效" : "无效"; this.Items[index].SubItems[3].Text = billClass.Memo; return(0); } else { return(-1); } }
/// <summary> /// 查找指定时间点打印的摆药单的节点 /// </summary> /// <param name="strOperTime">指定的摆药时间点</param> private void FindNode(string strOperTime) { TreeView tvBill; if (this.neuTabControl1.SelectedTab == this.tpDrugBill) { tvBill = this.tvDrugBill; } else { tvBill = this.tvApproveBill; } foreach (TreeNode billClassNode in tvBill.Nodes) { foreach (TreeNode deptBillNode in billClassNode.Nodes) { DrugBillClass drugBillClass = deptBillNode.Tag as DrugBillClass; if (drugBillClass.Oper.OperTime.ToString("Hmmss") == strOperTime) { tvBill.SelectedNode = deptBillNode; return; } } } }
/// <summary> /// 选择摆药单信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lvPutDrugBill1_SelectedIndexChanged(object sender, EventArgs e) { if (this.lvPutDrugBill1.SelectedItems.Count > 0) { //置所有的非当前摆药单为未选中状态 foreach (ListViewItem lvi in this.lvPutDrugBill1.CheckedItems) { lvi.Checked = false; } this.lvPutDrugBill1.SelectedItems[0].Checked = true; //设置当前摆药单信息 this.SetDrugBillItem(this.lvPutDrugBill1.SelectedItems[0].Tag as DrugBillClass); if (this.drugBillClassInfo.ID != null) { Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm(Neusoft.FrameWork.Management.Language.Msg("正在生成预览信息...")); Application.DoEvents( ); //根据摆药单编码初始化属性树 this.ShowListByDrugBill(this.drugBillClassInfo.ID); Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm( ); } } else { //重新设置摆药单属性 this.ResetDrugBillAttribute( ); this.drugBillClassInfo = new DrugBillClass( ); } }
/// <summary> /// 取摆药单列表中,被选中的摆药单组合。并返回是否可以对摆药单进行核准 /// </summary> /// <param name="tvBill">需判断是否选中的节点树</param> /// <param name="billCodes">选中的摆药单编码组合 由逗号间隔</param> /// <returns>返回是否允许进行核准操作 True 允许 Flase 不允许</returns> protected bool GetCheckBill(Neusoft.FrameWork.WinForms.Controls.NeuTreeView tvBill, ref string billCodes) { billCodes = "''"; bool enabledApprove = false; //是否允许对本组摆药单进行核准操作 if (tvBill.Nodes.Count <= 0) { return(false); } foreach (TreeNode billClassNode in tvBill.Nodes) { foreach (TreeNode deptBillNode in billClassNode.Nodes) { if (!deptBillNode.Checked) { continue; } DrugBillClass drugBillClass = deptBillNode.Tag as DrugBillClass; billCodes = billCodes + string.Format(",'{0}'", drugBillClass.DrugBillNO); if (drugBillClass.ApplyState == "1") { enabledApprove = true; } } } if (billCodes == "" || billCodes == "''") { MessageBox.Show(Language.Msg("请选择待核准摆药单")); billCodes = null; } //为何增加此处代码? if (billCodes == "''" && tvBill.SelectedNode.Level == 1) { Neusoft.HISFC.Models.Pharmacy.DrugBillClass selectBillClass = tvBill.SelectedNode.Tag as Neusoft.HISFC.Models.Pharmacy.DrugBillClass; if (selectBillClass.DrugBillNO.IndexOf("'") == -1) { billCodes = string.Format("'{0}'", selectBillClass.DrugBillNO); } else { billCodes = selectBillClass.DrugBillNO; } if (selectBillClass.ApplyState == "1") { enabledApprove = true; } } return(enabledApprove); }
/// <summary> /// 保存摆药单类别 /// </summary> private void SaveDrugBill() { //获取当前摆药单最新的编辑信息 this.GetDrugBillItem(); //有效性判断 if (!this.IsDrugBillDataValid(this.drugBillClassInfo)) { return; } 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); bool isNewDrugBill = false; //保存操作 if (this.drugBillClassInfo.ID == "") { isNewDrugBill = true; } int parm = drugStoreManager.SetDrugBillClass(this.drugBillClassInfo); if (parm == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(this.drugStoreManager.Err); return; } Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存成功")); if (isNewDrugBill) { this.lvPutDrugBill1.AddItem(this.drugBillClassInfo, true); this.drugBillClassInfo = new DrugBillClass(); } else { //用更新后的节点信息修改ListView中对应的节点 this.lvPutDrugBill1.ModifyItem(this.drugBillClassInfo, this.lvPutDrugBill1.SelectedIndices[0]); } this.neuTabControl1.SelectedIndex = 0; }
/// <summary> /// 从tabpage2中中取数据,保存在myDrugBillClass中。 /// </summary> private DrugBillClass GetDrugBillItem( ) { if (this.drugBillClassInfo == null) { drugBillClassInfo = new DrugBillClass( ); } this.drugBillClassInfo.Name = this.txtName.Text; //摆药分类名称 this.drugBillClassInfo.PrintType.ID = this.cbxPrinttype.Tag; //打印类型 this.drugBillClassInfo.DrugAttribute.ID = this.cbxPutType.Tag.ToString(); //摆药类型 this.drugBillClassInfo.IsValid = this.cbxIsValid.Checked; //是否有效 this.drugBillClassInfo.Memo = this.txtMark.Text; //备注 return(this.drugBillClassInfo); }
/// <summary> /// 增加单条摆药单信息 /// </summary> /// <param name="billClass">摆药单分类实体</param> /// <param name="isAutoSelect">是否自动选中</param> /// <returns></returns> public virtual int AddItem(DrugBillClass billClass, bool isAutoSelect) { if (billClass != null) { //设置插入的节点信息 ListViewItem lvi = new ListViewItem( ); //区别有效和无效的项目图标 if (billClass.IsValid) { lvi.ImageIndex = 0; } else { lvi.ImageIndex = 1; } //如果是新增加的项目,显示特殊的图标 if (billClass.ID == "") { lvi.ImageIndex = 2; } //Tag属性保存摆药单分类实体 lvi.Tag = billClass; lvi.Text = billClass.Name; //添加listView的子节点 lvi.SubItems.Add(billClass.PrintType.Name); lvi.SubItems.Add(billClass.IsValid ? "有效" : "无效"); lvi.SubItems.Add(billClass.Memo); this.Items.Add(lvi); if (isAutoSelect) { lvi.Selected = true; } return(0); } else { return(-1); } }
/// <summary> /// 判断传入摆药单信息是否有效 /// </summary> /// <param name="drugBillClass">摆药单信息</param> /// <returns>成功返回True 失败返回False</returns> private bool IsDrugBillDataValid(DrugBillClass drugBillClass) { if (!Neusoft.FrameWork.Public.String.ValidMaxLengh(drugBillClass.Memo, 150)) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("备注字段超长")); return(false); } if (!Neusoft.FrameWork.Public.String.ValidMaxLengh(drugBillClass.Name, 30)) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("摆药单名称超长")); return(false); } foreach (ListViewItem lv in this.lvPutDrugBill1.Items) { DrugBillClass tempDrugBill = lv.Tag as DrugBillClass; if (tempDrugBill == null) { continue; } if (!Neusoft.FrameWork.Public.String.ValidMaxLengh(tempDrugBill.Memo, 150)) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("备注字段超长")); return(false); } if (!Neusoft.FrameWork.Public.String.ValidMaxLengh(tempDrugBill.Name, 30)) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("摆药单名称超长")); return(false); } if (tempDrugBill.ID == drugBillClass.ID) { continue; } if (lv.Text == drugBillClass.Name) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg(drugBillClass.Name + "摆药单名称重复 请重新维护")); return(false); } } return(true); }
/// <summary> /// 删除单条摆药单信息 /// </summary> /// <param name="billClass">摆药单分类实体</param> /// <returns></returns> protected virtual int DeleteItem(DrugBillClass billClass) { if (billClass != null) { foreach (ListViewItem item in this.Items) { if (item.Tag == billClass) { this.Items.Remove(item); } } return(0); } else { return(-1); } }
/// <summary> /// 从myDrugBillClass中取数据,显示在tabpage2中。 /// </summary> private void SetDrugBillItem(DrugBillClass drugbill) { this.drugBillClassInfo = drugbill; this.txtName.Text = this.drugBillClassInfo.Name; //摆药分类名称 this.cbxPrinttype.Tag = this.drugBillClassInfo.PrintType.ID; //打印类型 this.cbxPutType.Tag = this.drugBillClassInfo.DrugAttribute.ID; //摆药类型 this.cbxIsValid.Checked = this.drugBillClassInfo.IsValid; //是否有效 this.txtMark.Text = this.drugBillClassInfo.Memo; //备注 //手术室摆药单不能修改 if (this.drugBillClassInfo.ID == "P" || this.drugBillClassInfo.ID == "R") { this.lvPutDrugBill1.AllowEdit = false; } else { this.lvPutDrugBill1.AllowEdit = true; } }
/// <summary> /// 默认摆药单保存 /// </summary> protected virtual void SaveDefaultBill(bool isP, bool isR) { if (isR) //设置退药摆药单 { Neusoft.HISFC.Models.Pharmacy.DrugBillClass pDrugBill = new DrugBillClass(); pDrugBill.ID = "R"; pDrugBill.Name = "退药单"; //摆药分类名称 pDrugBill.PrintType.ID = BillPrintType.enuBillPrintType.D; //打印类型 pDrugBill.DrugAttribute.ID = DrugAttribute.enuDrugAttribute.T; //摆药类型 pDrugBill.IsValid = true; //是否有效 pDrugBill.Memo = "退药单不需维护明细"; //备注 Neusoft.HISFC.BizLogic.Pharmacy.DrugStore drugStoreManager = new Neusoft.HISFC.BizLogic.Pharmacy.DrugStore(); if (drugStoreManager.InsertDrugBillClass(pDrugBill) == -1) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存特殊摆药单失败")); return; } } if (isP) //设置非医嘱摆药单 { Neusoft.HISFC.Models.Pharmacy.DrugBillClass pDrugBill = new DrugBillClass(); pDrugBill.ID = "P"; pDrugBill.Name = "非医嘱摆药单"; //摆药分类名称 pDrugBill.PrintType.ID = BillPrintType.enuBillPrintType.D; //打印类型 pDrugBill.DrugAttribute.ID = DrugAttribute.enuDrugAttribute.T; //摆药类型 pDrugBill.IsValid = true; //是否有效 pDrugBill.Memo = "非医嘱摆药单不需维护明细"; //备注 Neusoft.HISFC.BizLogic.Pharmacy.DrugStore drugStoreManager = new Neusoft.HISFC.BizLogic.Pharmacy.DrugStore(); if (drugStoreManager.InsertDrugBillClass(pDrugBill) == -1) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存特殊摆药单失败")); return; } } }
/// <summary> /// 增加摆药单 /// </summary> private void AddDrugBill() { if (this.neuTabControl1.TabPages.ContainsKey(tabPage2.Name)) { this.neuTabControl1.TabPages.Remove(this.tabPage2); } //设置要插入的节点 DrugBillClass info = new DrugBillClass( ); info.Name = "新建摆药单"; info.IsValid = true; //在详细信息中显示新增加的摆药单 this.SetDrugBillItem(info); //重置摆药单属性树未选中状态 this.ResetDrugBillAttribute( ); this.neuTabControl1.TabPages.Add(this.tabPage2); this.neuTabControl1.SelectedIndex = 1; }
/// <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); }
/// <summary> /// 删除一条摆药单分类数据 /// </summary> private void DeleteDrugBill( ) { //判断是否选中一个摆药单 if (this.lvPutDrugBill1.SelectedItems.Count > 0) { //获取当前摆药单信息 this.GetDrugBillItem( ); } else { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择您要删除的摆药单!")); return; } if (this.drugBillClassInfo.ID == "P" || this.drugBillClassInfo.ID == "R") { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("退药单及非医嘱摆药单不允许删除"), "", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (this.drugBillClassInfo.ID != "") { //弹出提示窗口 System.Windows.Forms.DialogResult result; result = MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("摆药单删除后将不可恢复,您确定要删除【" + drugBillClassInfo.Name + "】摆药单吗?"), Neusoft.FrameWork.Management.Language.Msg("删除提示"), System.Windows.Forms.MessageBoxButtons.OKCancel); if (result == DialogResult.Cancel) { return; } Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm(Neusoft.FrameWork.Management.Language.Msg("正在删除摆药单及其明细信息,请稍等...")); Application.DoEvents( ); //删除事务 int parmClass; int parmList; Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction( Neusoft.FrameWork.Management.Connection.Instance ); drugStoreManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //先删除摆药单属性信息 parmList = drugStoreManager.DeleteDrugBillList(this.drugBillClassInfo.ID); //再删除摆药单信息 parmClass = drugStoreManager.DeleteDrugBillClass(this.drugBillClassInfo.ID); if (parmList == -1 || parmClass == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(this.drugStoreManager.Err, Neusoft.FrameWork.Management.Language.Msg("Neusoft.FrameWork.Management.Language.Msg( 提示")); Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm( ); return; } else { Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("删除成功!")); } } //重置摆药单属性树未未选中状态 this.ResetDrugBillAttribute( ); //删除节点 this.lvPutDrugBill1.DeleteItem(this.lvPutDrugBill1.SelectedIndices[0]); this.lvPutDrugBill1.Focus( ); this.neuTabControl1.SelectedIndex = 0; this.drugBillClassInfo = new DrugBillClass( ); Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm( ); }
/// <summary> /// 保存摆药单信息 /// </summary> private void SaveDrugControl( ) { //判断是否选择摆药单 if (this.lvPutDrugBill1.CheckedItems.Count == 0) { MessageBox.Show("请为摆药台添加摆药单。"); return; } //判断是否选中一个摆药台 if (this.lvDrugControlList.SelectedItems.Count > 0) { //获取当前摆药台最新的编辑信息myDrugControlInfo this.GetNewDrugControlInfo( ); } else { MessageBox.Show("请选择一个摆药台。"); return; } //如果是新增加的摆药台,则取此摆药台的流水号 if (currentDrugControlInfo.ID == "") { currentDrugControlInfo.ID = this.drugStore.GetDrugControlNO( ); if (currentDrugControlInfo.ID == "-1") { MessageBox.Show("取摆药台流水号时失败:" + this.drugStore.Err); return; } } int parm; Neusoft.NFC.Management.Transaction t = new Neusoft.NFC.Management.Transaction(Neusoft.NFC.Management.Connection.Instance); t.BeginTransaction( ); drugStore.SetTrans(t.Trans); try { //先删除旧摆药台摆药明细中的所有数据,然后插入新的数据。 parm = drugStore.DeleteDrugControl(currentDrugControlInfo.ID); if (parm == -1) { t.RollBack( ); MessageBox.Show(this.drugStore.Err); return; } else { //插入摆药台数据 foreach (ListViewItem lvi in this.lvPutDrugBill1.CheckedItems) { DrugBillClass info = lvi.Tag as DrugBillClass; //为摆药台明细赋值 currentDrugControlInfo.DrugBillClass.ID = info.ID; currentDrugControlInfo.DrugBillClass.Name = info.Name; //插入摆药台明细数据 parm = this.drugStore.InsertDrugControl(currentDrugControlInfo); if (parm != 1) { t.RollBack( ); MessageBox.Show(this.drugStore.Err); return; } } } //提交数据库 t.Commit( ); this.neuTabControl1.TabPages.Remove(this.tabPage2); this.neuTabControl1.SelectedIndex = 0; MessageBox.Show("摆药台设置成功!"); } catch (Exception ex) { t.RollBack( ); MessageBox.Show("保存摆药台数据时出错:" + ex.Message); return; } //更新listView上节点 this.lvDrugControlList.SelectedItems[0].Tag = currentDrugControlInfo; this.lvDrugControlList.SelectedItems[0].Text = currentDrugControlInfo.Name; //区别新增加和已保存的图标 if (currentDrugControlInfo.ID != "") { this.lvDrugControlList.SelectedItems[0].ImageIndex = 0; } else { this.lvDrugControlList.SelectedItems[0].ImageIndex = 1; } //设置listView的子节点 this.lvDrugControlList.SelectedItems[0].SubItems[1].Text = currentDrugControlInfo.DrugAttribute.Name; this.lvDrugControlList.SelectedItems[0].SubItems[2].Text = currentDrugControlInfo.SendType == 0 ? "全部" : (currentDrugControlInfo.SendType == 1 ? "集中" : "临时"); this.lvDrugControlList.SelectedItems[0].SubItems[3].Text = this.GetShowTypeName(currentDrugControlInfo.SendType); this.lvDrugControlList.SelectedItems[0].SubItems[4].Text = this.currentDept.Name; this.lvDrugControlList.SelectedItems[0].SubItems[5].Text = currentDrugControlInfo.Memo; }
/// <summary> /// 保存摆药台信息 /// </summary> private void SaveDrugControl( ) { if (currentDept.ID == "") { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择具体的科室")); return; } //判断是否选择摆药单 if (this.lvPutDrugBill1.CheckedItems.Count == 0) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请为摆药台添加摆药单!")); return; } //判断是否选中一个摆药台 if (this.lvDrugControlList.SelectedItems.Count > 0) { //获取当前摆药台最新的编辑信息myDrugControlInfo this.GetNewDrugControlInfo( ); } else { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("请选择一个摆药台。")); return; } if (!this.IsSaveDrugControlValid(this.currentDrugControlInfo)) { return; } if (this.currentDrugControlInfo.Name.Length > 16) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("摆药台名称超长,请适当简略")); return; } if (this.currentDrugControlInfo.Memo.Length > 30) { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("备注超长,请适当简略")); return; } //如果是新增加的摆药台,则取此摆药台的流水号 if (currentDrugControlInfo.ID == "") { currentDrugControlInfo.ID = this.drugStore.GetDrugControlNO( ); if (currentDrugControlInfo.ID == "-1") { MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("取摆药台流水号时失败:") + this.drugStore.Err); return; } } int parm; Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction( Neusoft.FrameWork.Management.Connection.Instance ); //t.BeginTransaction( ); drugStore.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); try { //先删除旧摆药台摆药明细中的所有数据,然后插入新的数据。 parm = drugStore.DeleteDrugControl(currentDrugControlInfo.ID); if (parm == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(this.drugStore.Err); return; } else { //插入摆药台数据 foreach (ListViewItem lvi in this.lvPutDrugBill1.CheckedItems) { DrugBillClass info = lvi.Tag as DrugBillClass; //为摆药台明细赋值 currentDrugControlInfo.DrugBillClass.ID = info.ID; currentDrugControlInfo.DrugBillClass.Name = info.Name; //插入摆药台明细数据 parm = this.drugStore.InsertDrugControl(currentDrugControlInfo); if (parm != 1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(this.drugStore.Err); return; } } } //提交数据库 Neusoft.FrameWork.Management.PublicTrans.Commit(); this.neuTabControl1.SelectedIndex = 0; MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("摆药台设置成功!")); } catch (Exception ex) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存摆药台数据时出错:" + ex.Message)); return; } //更新listView上节点 this.lvDrugControlList.SelectedItems[0].Tag = currentDrugControlInfo; this.lvDrugControlList.SelectedItems[0].Text = currentDrugControlInfo.Name; //区别新增加和已保存的图标 if (currentDrugControlInfo.ID != "") { this.lvDrugControlList.SelectedItems[0].ImageIndex = 0; } else { this.lvDrugControlList.SelectedItems[0].ImageIndex = 1; } //设置listView的子节点 this.lvDrugControlList.SelectedItems[0].SubItems[1].Text = currentDrugControlInfo.DrugAttribute.Name; this.lvDrugControlList.SelectedItems[0].SubItems[2].Text = currentDrugControlInfo.SendType == 0 ? "全部" : (currentDrugControlInfo.SendType == 1 ? "集中" : "临时"); //{9738B143-F85C-4255-8C5B-FD3EA729FE32} //currentDrugControlInfo.SendType 改为 currentDrugControlInfo.ShowLevel this.lvDrugControlList.SelectedItems[0].SubItems[3].Text = this.GetShowTypeName(currentDrugControlInfo.ShowLevel); //this.lvDrugControlList.SelectedItems[ 0 ].SubItems[ 4 ].Text = this.currentDept.Name; //this.lvDrugControlList.SelectedItems[ 0 ].SubItems[ 5 ].Text = currentDrugControlInfo.Memo; this.lvDrugControlList.SelectedItems[0].SubItems[4].Text = currentDrugControlInfo.IsAutoPrint ? "是" : "否"; this.lvDrugControlList.SelectedItems[0].SubItems[5].Text = currentDrugControlInfo.IsBillPreview ? "是" : "否"; this.lvDrugControlList.SelectedItems[0].SubItems[6].Text = currentDrugControlInfo.IsPrintLabel ? "是" : "否"; this.lvDrugControlList.SelectedItems[0].SubItems[8].Text = currentDrugControlInfo.Memo; }