⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fypzdwh.cs

📁 基于C/S的医疗卫生管理系统
💻 CS
📖 第 1 页 / 共 5 页
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Oracle.DataAccess.Client;

using Sybase.DataWindow;

using Qeb.Control;
using Qeb.DBProxy;
using Qeb.Support;
using Qeb.Support.Common;

namespace Qeb.YK
{
    public partial class FYpZdWh : Qeb.Control.FBase
    {
        #region 变量定义
        //药品分类
        private QDataStore m_DsYpFl = null;

        //药品分类编码规则
        //private string m_YpFlBmGz = "22222";

        //药品分类最大级次
        private int m_YpFlJc = 5;

        #endregion

        #region 构造函数
        public FYpZdWh()
        {
            InitializeComponent();
        }
        #endregion

        #region Init
        private void Init()
        {
            try
            {
                this.Enabled = false;
                //药品分类
                m_DsYpFl = new QDataStore();
                m_DsYpFl.LibraryList = PBL.YkPbl;
                m_DsYpFl.DataWindowObject = YkDataObjects.D_Yk_YpFl;

                //药品名称
                dwYpMc.LibraryList = PBL.YkPbl;
                dwYpMc.DataWindowObject = YkDataObjects.D_Yk_YpMc_Bm;

                //药品规格
                dwYpGg.LibraryList = PBL.YkPbl;
                dwYpGg.DataWindowObject = YkDataObjects.D_Yk_YpGg;

                //药品价格
                dwYpJg.LibraryList = PBL.YkPbl;
                dwYpJg.DataWindowObject = YkDataObjects.D_Yk_YpJg;

                //初始化药品分类
                this.InitYpFl();
            }
            finally
            {
                this.Enabled = true;
            }


        }

        #endregion

        #region 初始化药品分类
        private void InitYpFl()
        {
            try
            {
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddRetrieveParam("p_kflx", App.kfLx);
                proxy.AddRetrieveParam("p_ypflid", "*");
                proxy.Retrieve(m_DsYpFl);
            }
            catch (Exception ex)
            {
                AppError error = new AppError("取药品分类发生异常", this.GetType(), ex);
                AppLog.Add(error);
                MessageBox.Show("取药品分类发生异常:" + ex.Message, MsgTitle.Error);
                btnAddYpFl.Enabled = false;
            }

            m_DsYpFl.SetSort("PXXH");
            m_DsYpFl.Sort();
            try
            {
                tvYpFl.Nodes.Clear();
                tvYpFl.BeginUpdate();

                TreeNode rootNode = tvYpFl.Nodes.Add("YPFL", "药品分类");
                rootNode.ImageKey = QTreeView.ImageKeyEnum.Level1_Close.ToString();
                rootNode.SelectedImageKey = QTreeView.ImageKeyEnum.Level1_Open.ToString();
                CreateTvYpFl(rootNode, "0");
                rootNode.Expand();
            }
            catch (Exception ex)
            {
                tvYpFl.Enabled = false;
                MessageBox.Show("创建药品分类子节点发生异常:" + ex.Message, MsgTitle.Error);
            }
            finally
            {
                tvYpFl.EndUpdate();
            }
        }


        private void CreateTvYpFl(TreeNode ParentNode, string sjFlId)
        {
            string flId = "";
            string flMc = "";

            TreeNode node;
            int rowCount = m_DsYpFl.RowCount;

            int findRow = m_DsYpFl.FindRow("sjflid ='" + sjFlId + "'", 1, rowCount);
            while (findRow > 0)
            {
                //分类ID
                flId = m_DsYpFl.GetItemString(findRow, "ypflid");
                //分类名称
                if (!m_DsYpFl.IsItemNull(findRow, "ypflmc"))
                    flMc = m_DsYpFl.GetItemString(findRow, "ypflmc");

                //增加节点
                node = ParentNode.Nodes.Add(flId, flMc);
                if (node.Level == 1)
                {
                    node.ImageKey = QTreeView.ImageKeyEnum.Level2_Close.ToString();
                    node.SelectedImageKey = QTreeView.ImageKeyEnum.Level2_Open.ToString();
                }
                else
                {
                    node.ImageKey = QTreeView.ImageKeyEnum.Level3_Close.ToString();
                    node.SelectedImageKey = QTreeView.ImageKeyEnum.Level3_Open.ToString();
                }

                node.Tag = flId;

                //处理子节点
                CreateTvYpFl(node, flId);

                if (findRow >= rowCount)
                    break;

                //继续查找
                findRow = m_DsYpFl.FindRow("sjflid ='" + sjFlId + "'", findRow + 1, rowCount);
            }

        }

        #endregion

        #region Form_Closed
        private void FYpZdWh_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (m_DsYpFl != null)
                m_DsYpFl.Dispose();

            if (m_DsTemp_YpFl != null)
                m_DsTemp_YpFl.Dispose();

        }
        #endregion

        #region 增加药品分类
        private void btnAddYpFl_Click(object sender, EventArgs e)
        {
            TreeNode node = tvYpFl.SelectedNode;
            if (node == null)
                return;

            if (node.Level > 0)
            {
                int row = m_DsYpFl.FindRow("ypflid='" + node.Tag.ToString() + "'", 1, m_DsYpFl.RowCount);
                if (row > 0)
                {
                    int mjBz = 0;
                    if (!m_DsYpFl.IsItemNull(row, "mjbz"))
                        mjBz = (int)m_DsYpFl.GetItemDecimal(row, "mjbz");

                    if (mjBz != 1 && node.Level == m_YpFlJc)
                    {
                        MessageBox.Show("已超过药品分类的最大级次,不能再增加分类,如果您需要在此分类下增加药品,请先将分类设为末级!", MsgTitle.Warning);
                        return;
                    }

                    if (mjBz == 1)
                    {
                        //新增药品
                        AddYpMc(node.Tag.ToString(), node.Text);
                    }
                    else
                    {
                        //新增分类
                        AddYpFl(node);
                    }
                }
                else
                {
                    MessageBox.Show("没有找到药品分类信息!", MsgTitle.Error);
                    return;
                }
            }
            else
            {
                //新增分类
                AddYpFl(node);
            }
        }

        //取药品分类标准标码
        private string GetYpFlBzBm(TreeNode selectedNode)
        {
            //默认最多五级,每级两位
            string bzBm = "";
            try
            {
                if (selectedNode.Level == 0)
                {
                    m_DsYpFl.SetFilter("sjflid='0'");
                    m_DsYpFl.Filter();
                    m_DsYpFl.SetSort("bzbm");
                    m_DsYpFl.Sort();
                }
                else
                {
                    int row = m_DsYpFl.FindRow("ypflid='" + selectedNode.Tag.ToString() + "'", 1, m_DsYpFl.RowCount);
                    if (row > 0)
                    {
                        if (!m_DsYpFl.IsItemNull(row, "bzbm"))
                        {
                            bzBm = m_DsYpFl.GetItemString(row, "bzbm");
                        }
                        if (bzBm.Length != selectedNode.Level * 2)
                            throw new Exception("标准编码长度不正确!");
                    }
                    else
                    {
                        throw new Exception("药品分类的标准编码为空!");
                    }

                    m_DsYpFl.SetFilter("sjflid='" + selectedNode.Tag.ToString() + "'");
                    m_DsYpFl.Filter();
                    m_DsYpFl.SetSort("bzbm");
                    m_DsYpFl.Sort();
                }

                string temp = "01";
                if (m_DsYpFl.RowCount > 0)
                {

                    if (m_DsYpFl.IsItemNull(m_DsYpFl.RowCount, "bzbm"))
                        temp = "01";
                    else
                    {
                        temp = m_DsYpFl.GetItemString(m_DsYpFl.RowCount, "bzbm");
                        if (temp.Length > 2)
                        {
                            temp = temp.Substring(temp.Length - 2, 2);
                        }

                        int bm = 0;
                        if (int.TryParse(temp, out bm))
                        {
                            bm++;
                            if (bm > 99)
                                bm = 99;
                        }
                        else
                        {
                            bm = 1;
                        }
                        temp = bm.ToString().PadLeft(2, '0');
                    }
                }
                bzBm += temp;
            }
            finally
            {
                m_DsYpFl.SetFilter("");
                m_DsYpFl.Filter();
            }
            return bzBm;
        }

        private void AddYpFl(TreeNode selectedNode)
        {
            string ypFlId = "";
            string sjFlId = "";
            string bzBm = "";

            //取标准编码
            try
            {
                bzBm = GetYpFlBzBm(selectedNode);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, MsgTitle.Error);
                return;
            }


            ypFlId = "0"; //0表示新增
            if (selectedNode.Level == 0)
                sjFlId = "0";
            else
                sjFlId = selectedNode.Tag.ToString();

            FYpZdWh_YpFlWh fFlWh = new FYpZdWh_YpFlWh();
            try
            {
                fFlWh.SetId(ypFlId, sjFlId, bzBm);
                DialogResult dResult = fFlWh.ShowDialog(this);
                if (dResult == DialogResult.OK)
                {
                    AddYpFlRecord(fFlWh.YpFlId, selectedNode);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("调用药品分类维护窗口发生异常:" + ex.Message, MsgTitle.Error);
            }
            finally
            {
                fFlWh.Dispose();
                tvYpFl.Focus();
            }

        }

        private QDataStore m_DsTemp_YpFl = null;
        private void AddYpFlRecord(string ypFlId, TreeNode parentNode)
        {
            try
            {
                if (m_DsTemp_YpFl == null)
                {
                    m_DsTemp_YpFl = new QDataStore();
                    m_DsTemp_YpFl.LibraryList = m_DsYpFl.LibraryList;
                    m_DsTemp_YpFl.DataWindowObject = m_DsYpFl.DataWindowObject;
                }
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddRetrieveParam("p_kflx", App.kfLx);
                proxy.AddRetrieveParam("p_ypflid", ypFlId);
                proxy.Retrieve(m_DsTemp_YpFl);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -