📄 fypzdwh.cs
字号:
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 + -