using System; using System.Collections; using System.Data; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using QMFrameWork.WebUI.Attribute; using QMFrameWork.Data; using QMFrameWork.Common.Serialization; using QMAPP.Common.Web.Util; using QMAPP.Common.Web.Controllers; using QMFrameWork.WebUI.DataSource; using QMAPP.Entity.Sys; using QMAPP.Entity.Sys.Entity; using QMAPP.Web.Models.Sys; namespace QMAPP.Web.Controllers { /// /// 机构管理控制器 /// [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)] public class OrgaizationController : QController { #region 加载机构列表 /// /// 加载机构列表 /// /// 结果 [HandleException] public ActionResult OrgaizationList() { OrgaizationModel seachModel = new OrgaizationModel(); TryGetSelectBuffer(out seachModel); seachModel.rownumbers = false; seachModel.url = "/Orgaization/GetList"; return View("OrgaizationList", seachModel); } /// /// 获取组织机构列表 /// /// 是否回调 /// 组织机构列表 [HandleException] public ActionResult GetList(bool? callBack) { List users = new List(); OrgaizationModel seachModel = null; DataPage page = new DataPage(); Orgaization condition = null; try { //获取查询对象 seachModel = GetModel(); #region 获取缓存值 if (callBack != null) { TryGetSelectBuffer(out seachModel); } else { //保存搜索条件 SetSelectBuffer(seachModel); } #endregion //获取前台分页控件的分页大小 page = this.GetDataPage(seachModel); condition = CopyToModel(seachModel); QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); page = agent.InvokeServiceFunction("OrgaizationManageBLL_GetList", condition, page); DataGridResult result = new DataGridResult( JsonConvertHelper.GetDeserialize>(page.Result.ToString()), page.RecordCount); return Content(result.GetJsonSource()); } catch (Exception ex) { throw ex; } } #endregion #region 编辑 /// /// 编辑载入 /// /// 处理结果 [HandleException] public ActionResult OrgaizationEdit() { OrgaizationModel model = new OrgaizationModel(); string OrgaID = Request.Params["OrgaID"]; Orgaization orga = new Orgaization(); try { if (string.IsNullOrEmpty(OrgaID) == false) { //修改获取原数据 orga.OrgaID = OrgaID; QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); orga=agent.InvokeServiceFunction("OrgaizationManageBLL_Get", orga); if (orga != null) { model = CopyToModel(orga); model.CkACTIVATEFLG = orga.ACTIVATEFLG=="1"?true:false; model.isEdit = "true"; } } else { model.CkACTIVATEFLG = true; } return View(model); } catch (Exception ex) { throw ex; } } #region 组织机构树 /// /// 组织机构树 /// /// 处理结果 [HandleException] public ActionResult OrgaizationTree() { OrgaizationModel model = new OrgaizationModel(); model.OrgaID = Request.Form["OrgaID"].Split(new Char[] { ',' })[0].ToString(); model.OrgaDESC = Request.Form["OrgaDESC"]; model.isEdit = Request.Form["isEdit"]; model.UpdateTime = Convert.ToDateTime(Request.Form["UpdateTime"]); model.CreateTime = Convert.ToDateTime(Request.Form["CreateTime"]); model.CreateUser = Request.Form["CreateUser"]; return View(model); } public ActionResult GetTreeData() { //OrgaizationManageBLL orgaBll = BLLFactory.CreateBLL(); List list = new List(); OrgaizationModel orgaModel = new OrgaizationModel(); Orgaization orga = new Orgaization(); orga.OrgaParent = "0"; QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); orgaModel.OrgaList = agent.InvokeServiceFunction>("OrgaizationManageBLL_GetSubTreeList", orga); //添加第一级机构 foreach (Orgaization child in orgaModel.OrgaList) { TreeNodeResult treenode = new TreeNodeResult(); treenode.Tid = child.OrgaID.ToString(); treenode.Ttext = child.OrgaDESC.ToString(); //添加子机构 this.BuildChildItems(child, treenode, list); list.Add(treenode); } return Content(TreeNodeResult.GetResultJosnS(list.ToArray())); } /// /// 创建子组织机构 /// /// 父节点 /// 子权限 private void BuildChildItems(Orgaization orga, TreeNodeResult tnr, List list) { Orgaization corga = new Orgaization(); OrgaizationModel corgaModel = new OrgaizationModel(); corga.OrgaParent = orga.OrgaID; QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); corgaModel.OrgaList = agent.InvokeServiceFunction>("OrgaizationManageBLL_GetSubTreeLis", corga); if (corgaModel.OrgaList.Count > 0) { foreach (Orgaization child in corgaModel.OrgaList) { TreeNodeResult cTreeNode = new TreeNodeResult(); cTreeNode.Tid = child.OrgaID.ToString(); cTreeNode.Ttext = child.OrgaDESC.ToString(); tnr.AddchildNode(cTreeNode); //添加子菜单 this.BuildChildItems(child, cTreeNode, list); } } } [HttpPost] public ActionResult SaveTree() { OrgaizationModel model = new OrgaizationModel(); model.OrgaID = Request.Form["OrgaID"]; model.OrgaDESC = Request.Form["OrgaDESC"]; model.OrgaParent = Request.Form["selectKey"].Split(new Char[] { ':' })[0].ToString(); model.OrgaParentDESC = Request.Form["selectKey"].Split(new Char[] { ':' })[1].ToString(); model.isEdit = Request.Form["isEdit"]; model.UpdateTime = Convert.ToDateTime(Request.Form["UpdateTime"]); model.CreateTime = Convert.ToDateTime(Request.Form["CreateTime"]); model.CreateUser = Request.Form["CreateUser"]; return View("OrgaizationEdit",model); } #endregion /// /// 保存 /// /// /// 处理结果 [HttpPost] [HandleException] public ActionResult OrgaizationSave(OrgaizationModel saveModel) { Orgaization orga = null; try { orga = CopyToModel(saveModel); orga.ACTIVATEFLG = saveModel.CkACTIVATEFLG == true ? "1" : "0"; //处理所选权限 string[] Authoritys = null; if (saveModel.SelectedPowers != null) { Authoritys = saveModel.SelectedPowers.Split(":".ToArray()); orga.OrgaAuthorityList = new List(); foreach (string authority in Authoritys) { orga.OrgaAuthorityList.Add(new OrgaizationAuthority { AuthorityID = authority, }); } } //处理所选角色 string[] roles = null; if (saveModel.SelectedRoles != null) { roles = saveModel.SelectedRoles.Split(":".ToArray()); orga.RoleList = new List(); foreach (string roleID in roles) { orga.RoleList.Add(new T_QM_ORGANROLE { ROLEID = roleID, }); } } QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); if (string.IsNullOrEmpty(saveModel.isEdit) == true) { //新增 orga.IsUpdate = false; } else { //修改 orga.IsUpdate = true; } bool isExist = agent.InvokeServiceFunction("OrgaizationManageBLL_ExistsOrga", orga); if (isExist) { SetMessage("当前保存的组织机构信息已经存在,请修改!"); return View("OrgaizationEdit", saveModel); } if (string.IsNullOrEmpty(saveModel.isEdit) == true) { //新增 agent.InvokeServiceFunction("OrgaizationManageBLL_Insert", orga); } else { //修改 agent.InvokeServiceFunction("OrgaizationManageBLL_Update", orga); } return this.GetJsViewResult(string.Format("parent.List(1);parent.showTitle('{0}');parent.closeAppWindow1();" , AppResource.SaveMessge)); } catch (Exception ex) { throw ex; } } #endregion #region 角色信息树 /// /// 角色信息树 /// /// 处理结果 public ActionResult GetTreeRoles() { List list = new List(); Role role = new Role(); PowerUtil pu = new PowerUtil(); pu.OwnRoles = new List(); string organID = Request.QueryString["organID"]; Orgaization organ = new Orgaization(); try { QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); if (string.IsNullOrEmpty(organID) == false) { //获取角色信息 organ.OrgaID = organID; organ = agent.InvokeServiceFunction("OrgaizationManageBLL_GetOrganRoleList", organ); } else { organ = new Orgaization(); organ.RoleList = new List(); role.Roles = new List(); } //获取角色信息列表 role = agent.InvokeServiceFunction("RoleManageBLL_GetAll"); foreach (Role singlerole in role.Roles) { TreeNodeResult node = new TreeNodeResult(); node.Tid = singlerole.RoleID; node.Ttext = singlerole.RoleDESC; bool exists = organ.RoleList.Exists(p => p.ROLEID == singlerole.RoleID); node.TChecked = exists; list.Add(node); } return Content(TreeNodeResult.GetResultJosnS(list.ToArray())); } catch (Exception ex) { throw ex; } } #endregion #region 权限信息树 ///// ///// 权限信息树 ///// ///// 处理结果 //public ActionResult GetTreePowers() //{ // List list = new List(); // List powers = null; // PowerUtil pu = new PowerUtil(); // pu.OwnPowers = new List(); // string orgaID = Request.Params["orgaID"]; // try // { // if (string.IsNullOrEmpty(orgaID) == false) // { // //获取组织机构信息 // Orgaization o = new Orgaization(); // o.OrgaID = orgaID; // OrgaizationManageBLL orgaBll = BLLFactory.CreateBLL(); // o = orgaBll.GetOrgaAuthorityList(o); // foreach (OrgaizationAuthority power in o.OrgaAuthorityList) // { // pu.OwnPowers.Add(new PowerInfo { PowerID = power.AuthorityID }); // } // } // //获取当前登录系统的用户,全部权限信息 // powers = pu.GetAllPowerInfos(MvcApplication.PhysicsRootPath + @"App_Data\Power.xml"); // foreach (PowerInfo info in powers) // { // TreeNodeResult node = new TreeNodeResult(); // node.Tid = info.PowerID; // node.Ttext = info.PowerDes; // //循环已经存在的权限, // foreach (PowerInfo selected in pu.OwnPowers) // { // //如果当前权限在选中范围内,结束循环,否者继续 // if (selected.PowerID == info.PowerID) // { // info.Selected = true; // break; // } // else // { // info.Selected = false; // } // } // node.TChecked = info.Selected; // //添加子权限 // this.BuildChildItems(node, info.ChildPowers, pu); // list.Add(node); // } // return Content(TreeNodeResult.GetResultJosnS(list.ToArray())); // } // catch (Exception ex) // { // throw ex; // } //} ///// ///// 创建子权限 ///// ///// 父节点 ///// 子权限 ///// 已经选中的权限列表 //private void BuildChildItems(TreeNodeResult parentNode, List childPowers, PowerUtil pu) //{ // foreach (PowerInfo info in childPowers) // { // TreeNodeResult node = new TreeNodeResult(); // node.Tid = info.PowerID; // node.Ttext = info.PowerDes; // //循环已经存在的权限, // foreach (PowerInfo selected in pu.OwnPowers) // { // //如果当前权限在选中范围内,结束循环,否者继续 // if (selected.PowerID == info.PowerID) // { // info.Selected = true; // break; // } // else // { // info.Selected = false; // } // } // node.TChecked = info.Selected; // if (info.ChildPowers != null) // { // //添加子权限 // this.BuildChildItems(node, info.ChildPowers, pu); // } // parentNode.AddchildNode(node); // } //} #endregion #region 删除 /// /// 删除组织机构 /// /// 结果 [HttpPost] [HandleException] public ActionResult OrgaizationDelete() { string selectKey = Request.Form["selectKey"]; string[] arraydata = selectKey.Split(":".ToCharArray()); ArrayList alist = new ArrayList(); try { for (int i = 0; i < arraydata.Length; i++) { alist.Add(arraydata[i]); } QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); int count = agent.InvokeServiceFunction("OrgaizationManageBLL_BatchDelete", alist); if (alist.Count != count) { if (count == 0) { SetMessage("选中的机构已激活,无法删除。"); } else { SetMessage(string.Format("删除完成(其中存在{0}个已激活的机构,无法删除)。", alist.Count - count)); } } else { SetMessage(AppResource.DeleteMessage); } return OrgaizationList(); } catch (Exception ex) { throw ex; } } #endregion #region 导出excel /// /// 导出excel /// /// 结果 [HttpPost] [HandleException] public ActionResult ExportExcel() { OrgaizationModel seachModel = null; Orgaization condition = null; DataTable exportDt = new DataTable(); QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); PowerUtil pu = new PowerUtil(); string selectKey = Request.Form["selectKey"]; try { //获取查询对象 seachModel = GetModel(); condition = CopyToModel(seachModel); //获取数据 exportDt = agent.InvokeServiceFunction("OrgaizationManageBLL_GetExportData", condition); if (selectKey != "") { DataView dv = new DataView(exportDt); string strWhere = ""; string[] list = selectKey.Split(":".ToCharArray()); foreach (string OrgaID in list) { strWhere += " OrgaID='" + OrgaID + "' or"; } if (strWhere != "") { strWhere = strWhere.Remove((strWhere.Length - 2), 2); } dv.RowFilter = strWhere; exportDt = dv.ToTable(); } exportDt.Columns.Add("CREATEDATESHOW"); exportDt.Columns.Add("UPDATEDATESHOW"); foreach (DataRow dr in exportDt.Rows) { if (dr["CREATEDATE"] != null) { dr["CREATEDATESHOW"] = Convert.ToDateTime(dr["CREATEDATE"]).ToString("yyyy-MM-dd HH:mm:ss"); } if (dr["UPDATEDATE"] != null) { dr["UPDATEDATESHOW"] = Convert.ToDateTime(dr["UPDATEDATE"]).ToString("yyyy-MM-dd HH:mm:ss"); } } //导出 QMFrameWork.WebUI.Util.IEFileTool efTool = new QMFrameWork.WebUI.Util.IEFileTool(); return efTool.GetExcelFileResult("OrganList", "机构信息.xls", exportDt); } catch (Exception ex) { throw ex; } } #endregion } }