private void LoadTLMessage()
        {
            List <ZY_PatList> patList = IN_InterFace.QueryAllZYPat((int)_currentDeptId, _searchDeptId);
            ZY_PatList        nullPat = new ZY_PatList();

            nullPat.PatListID         = 0;
            _recipeOrder              = IN_InterFace.QueryRecipeOrder(nullPat, (int)_currentDeptId);
            dgrdRecipeInfo.DataSource = _recipeOrder;
            _allDispPats.Clear();
            foreach (ZY_PatList pat in patList)
            {
                DataTable singleOrder = IN_InterFace.QueryRecipeOrder(pat, (int)_currentDeptId);
                _allDispPats.Add(pat.CureNo, singleOrder);
            }
            LstPatBind(patList);
        }
 private void lstPatInfo_DoubleClick(object sender, EventArgs e)
 {
     try
     {
         this.Cursor = GWMHIS.BussinessLogicLayer.Classes.PublicStaticFun.WaitCursor();
         if (_dispenseModel == 1)
         {
             _recipeOrder = IN_InterFace.QueryRecipeOrder(_currentZYPat, (int)_currentDeptId);
             dgrdRecipeInfo.DataSource = _recipeOrder;
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
     finally
     {
         this.Cursor = DefaultCursor;
     }
 }
 private void btnDispense_Click(object sender, EventArgs e)
 {
     try
     {
         Decimal newDispFee = 0;
         this.Cursor = GWMHIS.BussinessLogicLayer.Classes.PublicStaticFun.WaitCursor();
         if (ConfigManager.IsChecking(_currentDeptId) == true)
         {
             MessageBox.Show("药品正在盘点中......");
             return;
         }
         if (this._recipeOrder == null)
         {
             MessageBox.Show("没有药品可发");
             return;
         }
         if (this._recipeOrder.Rows.Count < 1)
         {
             MessageBox.Show("没有药品可发");
             return;
         }
         if (_dispenseModel == 1)
         {
             if (_currentZYPat == null)
             {
                 MessageBox.Show("没有病人需要发药");
                 return;
             }
             YP_DRMaster dispMaster = _billProcessor.BuildNewDispenseMaster(_currentZYPat, (int)_currentDeptId, (int)_currentUserId);
             newDispFee = IN_InterFace.QueryPatDispFee(_currentZYPat, (int)_currentDeptId);
             if (this.CompareFee(newDispFee) == false)
             {
                 MessageBox.Show("该病人因费用冲账发药信息需要刷新,请重新刷新");
                 return;
             }
             if (_recipeOrder != null)
             {
                 List <BillOrder> dispList = _billProcessor.BuildNewDispOrder(_recipeOrder, dispMaster, _dispenseModel);
                 _billProcessor.SaveBill(dispMaster, dispList, _currentDeptId);
                 MessageBox.Show("发药成功...", "发药成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                 _recipeOrder = IN_InterFace.QueryRecipeOrder(_currentZYPat, (int)_currentDeptId);
                 dgrdRecipeInfo.DataSource = _recipeOrder;
             }
         }
         //如果是住院统领
         else
         {
             ZY_PatList dispPat;
             for (int index = 0; index < lstPatInfo.CheckedItems.Count; index++)
             {
                 dispPat     = (ZY_PatList)lstPatInfo.CheckedItems[index].Tag;
                 newDispFee += IN_InterFace.QueryPatDispFee(dispPat, (int)_currentDeptId);
             }
             if (CompareFee(newDispFee) == false)
             {
                 MessageBox.Show("有病人因费用冲账发药信息需要刷新,请重新刷新");
                 return;
             }
             List <BillMaster> dispList = new List <BillMaster>();
             for (int index = 0; index < lstPatInfo.CheckedItems.Count; index++)
             {
                 dispPat = (ZY_PatList)lstPatInfo.CheckedItems[index].Tag;
                 YP_DRMaster dispMaster = _billProcessor.BuildNewDispenseMaster(dispPat, (int)_currentDeptId, (int)_currentUserId);
                 dispList.Add(dispMaster);
             }
             YP_DispDeptHis newDispDept = (YP_DispDeptHis)(_billProcessor.SaveBills(dispList, _searchDeptId, _allDispPats));
             MessageBox.Show("发药成功,开始打印统领发药单据...", "发药成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
             PrintDispTL(dispList, newDispDept);
             LoadTLMessage();
         }
         this.txtQueryNum.Focus();
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
     finally
     {
         this.Cursor = DefaultCursor;
     }
 }
示例#4
0
        private void treeDrugMsg_AfterCheck(object sender, TreeViewEventArgs e)
        {
            try
            {
                DataTable dt = (DataTable)dgrdRecipeInfo.DataSource;
                if (e.Node != null)
                {
                    this.Cursor = GWMHIS.BussinessLogicLayer.Classes.PublicStaticFun.WaitCursor();
                    if (e.Node.Level == 2 && e.Node.Checked)
                    {
                        ZY_PatList currentMsg = (ZY_PatList)(e.Node.Tag);
                        _selectDeptId = Convert.ToInt32(currentMsg.CurrDeptCode);
                        selectPat.Remove(currentMsg);
                        selectPat.Add(currentMsg);
                        TreeNode rootNode = treeDrugMsg.Nodes[0];
                        foreach (TreeNode node in rootNode.Nodes)
                        {
                            foreach (TreeNode msgNode in node.Nodes)
                            {
                                if (((ZY_PatList)msgNode.Tag).CurrDeptCode != currentMsg.CurrDeptCode &&
                                    msgNode.Checked == true)
                                {
                                    msgNode.Parent.Checked = false;
                                    break;
                                }
                            }
                        }
                        _allDispPats.Remove(currentMsg.CureNo);
                        if (dt != null)
                        {
                            DataTable recipeDt = IN_InterFace.QueryRecipeOrder(currentMsg, (int)_currentDeptId);
                            _allDispPats.Add(currentMsg.CureNo, recipeDt);
                            DataTable recipeCopy = recipeDt.Clone();
                            recipeCopy.Clear();

                            for (int index = 0; index < recipeDt.Rows.Count; index++)
                            {
                                // _recipeOrder.Rows.Add(recipeDt.Rows[index].ItemArray);
                                recipeCopy.Rows.Add(recipeDt.Rows[index].ItemArray);
                                decimal presamount = (recipeCopy.Rows[index]["presamount"] == null || recipeCopy.Rows[index]["presamount"].ToString() == "0" ? 1 : Convert.ToDecimal(recipeCopy.Rows[index]["presamount"].ToString()));
                                recipeCopy.Rows[index]["amount"] = Convert.ToDecimal(recipeCopy.Rows[index]["amount"].ToString()) / presamount;
                                dt.Rows.Add(recipeCopy.Rows[index].ItemArray);
                            }
                            dgrdRecipeInfo.DataSource = dt;
                        }
                        else
                        {
                            _recipeOrder = IN_InterFace.QueryRecipeOrder(currentMsg, (int)_currentDeptId);
                            _allDispPats.Add(currentMsg.CureNo, _recipeOrder);
                            DataTable dtCopy = _recipeOrder.Clone();
                            dtCopy.Clear();
                            for (int i = 0; i < _recipeOrder.Rows.Count; i++)
                            {
                                dtCopy.Rows.Add(_recipeOrder.Rows[i].ItemArray);
                                decimal presamount = (dtCopy.Rows[i]["presamount"] == null || dtCopy.Rows[i]["presamount"].ToString() == "0" ? 1 : Convert.ToDecimal(dtCopy.Rows[i]["presamount"].ToString()));
                                dtCopy.Rows[i]["amount"] = Convert.ToDecimal(dtCopy.Rows[i]["amount"].ToString()) / presamount;
                            }
                            dgrdRecipeInfo.DataSource = dtCopy;
                        }
                    }
                    if (e.Node.Level == 2 && !e.Node.Checked)
                    {
                        ZY_PatList currentMsg = (ZY_PatList)(e.Node.Tag);
                        selectPat.Remove(currentMsg);
                        _allDispPats.Remove(currentMsg.CureNo);
                        if (_recipeOrder != null)
                        {
                            DataRow[] removeRows = dt.Select("cureno=" + "'" + currentMsg.CureNo.ToString() + "'");
                            foreach (DataRow removeRow in removeRows)
                            {
                                dt.Rows.Remove(removeRow);
                            }
                        }
                        dgrdRecipeInfo.DataSource = dt;
                    }
                    if ((e.Node.Level == 2 && e.Node.Checked) ||
                        (e.Node.Level == 1 && e.Node.Checked))
                    {
                        e.Node.Parent.Checked = true;
                    }
                    if ((e.Node.Level == 1 && !e.Node.Checked) ||
                        (e.Node.Level == 0 && !e.Node.Checked))
                    {
                        foreach (TreeNode node in e.Node.Nodes)
                        {
                            node.Checked = false;
                        }
                    }
                }
            }
            catch (Exception error)
            {
                MessageBox.Show(error.Message);
            }
            finally
            {
                this.Cursor = DefaultCursor;
            }
        }