using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using Pur.Entity; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using Pur.Entity.configureEntity; using Core.Mes.Client.Comm.Control; using Infragistics.Win.UltraWinTree; using Core.Mes.Client.Comm.Tool; using com.hnshituo.pur.vo; using Pur.configure; using Pur.Pop_upWindow; using System.Collections; namespace Pur.configure { public partial class frmDpt_MatClass : FrmPmsBase { DataTable dt_Purmatclass = null;//科室表 public frmDpt_MatClass() { InitializeComponent(); } private DataTable QdtDptItemClass = null; private bool Qbl_IsLoop = false;//是否正在执行全选功能 List listUntChecks = new List(); //菜单按钮事件 public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": ultraTree1.Nodes.Clear(); getultree();// 获取物料分类树形结构 getDpt();//获取物料分类 break; case "Update": update(); break; } } /// /// 获取部门 /// private void getDpt() { DataTable dt = this.execute("com.hnshituo.core.service.AppDepartmentService", "findAll", new object[] { }); getultree(dt); } /// /// 获取物料分类树形结构 /// public void getultree(DataTable dt) { ulTreeDepartment.Nodes.Clear(); if (dt == null || dt.Rows.Count < 1) { return; } dt_Purmatclass = dt;//保存物料分类全局变量 DataTable dt_A = new DataTable();//物料分类 //筛选出根节点 DataRow[] rows = dt.Select("PID='' or PID is null and DEPARTNAME <> '湖南视拓'"); dt_A = dt.Clone(); //克隆A的结构 foreach (DataRow row in rows) { dt_A.ImportRow(row);//复制行数据 } //添加物料大类 for (int j = 0; j < dt_A.Rows.Count; j++) { UltraTreeNode Ultnode = ulTreeDepartment.Nodes.Add(dt_A.Rows[j]["DEPARTID"].ToString(), dt_A.Rows[j]["DEPARTNAME"].ToString()); getChildNodes(Ultnode); } foreach (UltraTreeNode Ultnode in ulTreeDepartment.Nodes) { Ultnode.Expanded = true; } } /// /// 递归查询父节点下的所有子节点 /// /// public void getChildNodes(UltraTreeNode Tnode) { DataTable dt_A = dt_Purmatclass.Clone();//物料分类 DataRow[] rows = dt_Purmatclass.Select("PID='" + Tnode.Key + "'"); foreach (DataRow row in rows) { dt_A.ImportRow(row);//复制行数据 } //添加物料分类 for (int j = 0; j < dt_A.Rows.Count; j++) { UltraTreeNode Ultnode = Tnode.Nodes.Add(dt_A.Rows[j]["DEPARTID"].ToString(), dt_A.Rows[j]["DEPARTNAME"].ToString()); getChildNodes(Ultnode);//利用递归将当前节点的子节点添加进去 } } /// /// 获取物料分类树形结构 /// public void getultree() { PurmatclassEntity mat = new PurmatclassEntity(); mat.Validflag = "1"; DataTable dt = this.execute("com.hnshituo.pur.configure.service.MatClassService", "find", new object[] { mat, 0, 0 }); if (dt == null || dt.Rows.Count < 1) { return; } DataTable dt_A = new DataTable();//物料分类 //筛选出根节点 DataRow[] rows = dt.Select("PARENTCODE='' or PARENTCODE is null"); dt_A = dt.Clone(); //克隆A的结构 foreach (DataRow row in rows) { dt_A.ImportRow(row);//复制行数据 } //添加物料大类 for (int j = 0; j < dt_A.Rows.Count; j++) { if (!ultraTree1.Nodes.Exists(dt_A.Rows[j]["BASECODE"].ToString())) { UltraTreeNode Ultnode = ultraTree1.Nodes.Add(dt_A.Rows[j]["BASECODE"].ToString(), dt_A.Rows[j]["BASENAME"].ToString()); Ultnode.Override.NodeStyle = NodeStyle.CheckBox; getChildNodes(Ultnode, dt); } } } /// /// 递归查询父节点下的所有子节点 /// /// public void getChildNodes(UltraTreeNode Tnode, DataTable dt) { DataTable dt_A = dt.Clone();//物料分类 DataRow[] rows = dt.Select("PARENTCODE='" + Tnode.Key + "'"); foreach (DataRow row in rows) { dt_A.ImportRow(row);//复制行数据 } //添加物料分类 for (int j = 0; j < dt_A.Rows.Count; j++) { UltraTreeNode Ultnode = Tnode.Nodes.Add(dt_A.Rows[j]["BASECODE"].ToString(), dt_A.Rows[j]["BASENAME"].ToString()); //给物料中类添加复选框 if (Ultnode.Key.Trim().Length <= 3) { Ultnode.Override.NodeStyle = NodeStyle.CheckBox; } getChildNodes(Ultnode, dt);//利用递归将当前节点的子节点添加进去 } } /// /// 加载窗体 /// /// /// private void frmDpt_MatClass_Load(object sender, EventArgs e) { getDpt();//获取部门信息 getultree();//获取物料分类 } /// /// 物料分类绑定科室 /// private void update() { if (ulTreeDepartment.ActiveNode == null) { MessageUtil.ShowTips("请选择科室"); return; } listUntChecks.Clear(); ultraTree1.Update(); foreach (UltraTreeNode utn in ultraTree1.Nodes) { getUtnCheck(utn); } if (listUntChecks.Count > 0) { ArrayList al = new ArrayList(); for (int i = 0; i < listUntChecks.Count; i++) { PurDptItemclassREntity DptItemclassREntity = new PurDptItemclassREntity(); DptItemclassREntity.Departid = ulTreeDepartment.ActiveNode.Key; DptItemclassREntity.MatClassCode = listUntChecks[i]; al.Add(DptItemclassREntity); } //for (int i = 0; i < listUntChecks.Count; i++) //{ // DptItemclassREntity.MatClassCode += listUntChecks[i]+","; //} //if(DptItemclassREntity.MatClassCode!="") //{ // DptItemclassREntity.MatClassCode = DptItemclassREntity.MatClassCode.Remove(DptItemclassREntity.MatClassCode.Length - 1); //} CoreResult crt = this.execute("com.hnshituo.pur.configure.service.DptItemclassRService", "UpDptItemClass", new object[] { al }); if (crt.Resultcode == 0) { MessageUtil.ShowTips("保存成功"); } else { MessageUtil.ShowTips("保存失败" + crt.Resultmsg); } } //else //{ // MessageUtil.ShowTips("请选择物料中类"); // return; //} } /// /// 获取已选中的节点 /// private void getUtnCheck(UltraTreeNode Utn) { foreach (UltraTreeNode utnChild in Utn.Nodes) { if (utnChild.CheckedState == CheckState.Checked) { if (utnChild.Key.Trim().Length == 3) { listUntChecks.Add(utnChild.Key); } } } } /// /// 激活树形节点 /// /// /// private void ulTreeDepartment_AfterActivate(object sender, NodeEventArgs e) { PurDptItemclassREntity DptItemclassREntity = new PurDptItemclassREntity(); DptItemclassREntity.Departid = ulTreeDepartment.ActiveNode.Key; DataTable dt = this.execute("com.hnshituo.pur.configure.service.DptItemclassRService", "find", new object[] { DptItemclassREntity, 0, 0 }); QdtDptItemClass = dt.Copy(); if (QdtDptItemClass.Rows.Count > 0) { QdtDptItemClass.PrimaryKey = new DataColumn[] { QdtDptItemClass.Columns["MATCLASSCODE"] }; } foreach (UltraTreeNode utn in ultraTree1.Nodes) { //Qbl_IsLoop = true; getSelNode(utn); //Qbl_IsLoop = false; } } /// /// 自动勾选已设置的物料分类 /// private void getSelNode(UltraTreeNode utn) { foreach (UltraTreeNode utn1 in utn.Nodes) { if (utn.Override.NodeStyle.Equals(NodeStyle.CheckBox)) { utn1.CheckedState = CheckState.Unchecked; } if (QdtDptItemClass.Rows.Count > 0) { if (QdtDptItemClass.Rows.Contains(utn1.Key)) { utn1.CheckedState = CheckState.Checked; } getSelNode(utn1); } } } /// /// 设置全选功能 /// /// /// private void ultraTree1_AfterCheck(object sender, NodeEventArgs e) { if (Qbl_IsLoop) { return; } Qbl_IsLoop = true; setSelAll(sender, e); Qbl_IsLoop = false; } /// /// 设置全选功能 /// private void setSelAll(object sender, NodeEventArgs e) { //设置全选 foreach (UltraTreeNode utn in e.TreeNode.Nodes) { if (utn.Override.NodeStyle.Equals(NodeStyle.CheckBox)) { utn.CheckedState = e.TreeNode.CheckedState; } } //设置不完全选中的子节点的父节点复选框状态 if (e.TreeNode.Parent != null) { int num = 0;//当前节点父节点下所有子节点勾选的个数 foreach (UltraTreeNode utn in e.TreeNode.Parent.Nodes) { if (utn.CheckedState == CheckState.Checked) { num++; } } //全不选 if (num == 0) { e.TreeNode.Parent.CheckedState = CheckState.Unchecked; } //半选状态 else if (num < e.TreeNode.Parent.Nodes.Count) { e.TreeNode.Parent.CheckedState = CheckState.Indeterminate; } else if (num == e.TreeNode.Parent.Nodes.Count) { e.TreeNode.Parent.CheckedState = CheckState.Checked; } } } /// /// 设置父节点选中状态 /// private void setSelParentNodStatus(UltraTreeNode e) { foreach (UltraTreeNode utn in e.Nodes) { //设置不完全选中的子节点的父节点复选框状态 int num = 0;//当前节点父节点下所有子节点勾选的个数 foreach (UltraTreeNode utnChild in utn.Nodes) { if (utnChild.CheckedState == CheckState.Checked) { num++; } } //全不选 if (num == 0) { e.Parent.CheckedState = CheckState.Unchecked; } //半选状态 else if (num < e.Parent.Nodes.Count) { e.Parent.CheckedState = CheckState.Indeterminate; } else if (num == e.Parent.Nodes.Count) { e.Parent.CheckedState = CheckState.Checked; } } } } }