using BLL; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; namespace FineUIPro.Web.Controls { public partial class FlowOperateControl : System.Web.UI.UserControl { #region 定义项 /// /// 单据ID /// public string DataId { get; set; } /// /// 菜单ID /// public string MenuId { get; set; } /// /// 项目ID /// public string ProjectId { get; set; } /// /// 单位iID /// public string UnitId { get; set; } /// /// 下一步骤 /// public string NextStep { get { if (!string.IsNullOrEmpty(this.rblFlowOperate.SelectedValue)) { return this.rblFlowOperate.SelectedValue; } else { return null; } } } /// /// 下一步办理人 /// public string NextPerson { get { return this.drpPerson.SelectedValue; } } #endregion #region 定义页面项 /// /// 单据ID /// public string getDataId { get { return (string)ViewState["getDataId"]; } set { ViewState["getDataId"] = value; } } /// /// 菜单ID /// public string getMenuId { get { return (string)ViewState["getMenuId"]; } set { ViewState["getMenuId"] = value; } } #endregion #region 加载页面 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.getDataId = this.DataId; this.getMenuId = this.MenuId; BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpPerson, this.ProjectId,this.UnitId, true); this.GroupPanel1.TitleToolTip += BLL.MenuFlowOperateService.GetFlowOperateName(this.getMenuId); this.txtAuditFlowName.Text = "审核/审批"; var flowOperate = Funs.DB.Sys_FlowOperate.FirstOrDefault(x => x.DataId == this.getDataId && x.State == BLL.Const.State_2 && x.IsClosed == true); if (flowOperate != null) { this.GroupPanel1.Hidden = true; this.GroupPanel2.Collapsed = false; } else { var sysSet4 = BLL.ConstValue.drpConstItemList(BLL.ConstValue.Group_MenuFlowOperate).FirstOrDefault(); if (sysSet4 != null && sysSet4.ConstValue == "1") { ///取当前单据审核步骤 int nextSortIndex = 1; var maxFlowOperate = Funs.DB.Sys_FlowOperate.Where(x => x.DataId == this.getDataId && x.IsClosed == false).Max(x => x.SortIndex); if (maxFlowOperate != null) { nextSortIndex = maxFlowOperate.Value; } else { this.txtAuditFlowName.Text = "编制单据"; } var nextMenuFlowOperate = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x => x.MenuId == this.MenuId && x.FlowStep == nextSortIndex); if (nextMenuFlowOperate != null) { this.rblFlowOperate.Enabled = false; this.txtAuditFlowName.Text = nextMenuFlowOperate.AuditFlowName; this.drpPerson.Items.Clear(); UserService.InitUserProjectIdRoleIdDropDownList(this.drpPerson, this.ProjectId, nextMenuFlowOperate.RoleId, true); if (nextMenuFlowOperate.IsFlowEnd == true) { this.rblFlowOperate.SelectedValue = Const.State_2; this.SetFlowOperateEnd(); } } } } //if (string.IsNullOrEmpty(this.ProjectId)) //{ // this.IsFileCabinetA.Hidden = true; //} this.BindGrid(); } } #endregion #region 流程列表绑定数据 /// /// 流程列表绑定数据 /// private void BindGrid() { DataTable getDataTable = new DataTable(); if (!string.IsNullOrEmpty(this.getDataId)) { string strSql = @"SELECT FlowOperateId,MenuId,DataId,SortIndex,AuditFlowName,OperaterId,Users.UserName AS OperaterName,OperaterTime,Opinion,IsClosed " + @" FROM dbo.Sys_FlowOperate LEFT JOIN Sys_User AS Users ON OperaterId = Users.UserId" + @" WHERE IsClosed = 1 AND DataId=@DataId ORDER BY SortIndex DESC"; List listStr = new List(); listStr.Add(new SqlParameter("@DataId", this.getDataId)); SqlParameter[] parameter = listStr.ToArray(); getDataTable = SQLHelper.GetDataTableRunText(strSql, parameter); } Grid1.DataSource = getDataTable; Grid1.DataBind(); } #endregion #region 下拉联动事件 /// /// 处理方式下拉事件 /// /// /// protected void rblFlowOperate_SelectedIndexChanged(object sender, EventArgs e) { this.SetFlowOperateEnd(); } /// /// 设置审核完成状态事件 /// private void SetFlowOperateEnd() { if (this.rblFlowOperate.SelectedValue == BLL.Const.State_2) { this.txtAuditFlowName.Text = "审核完成"; this.drpPerson.SelectedValue = Const._Null; this.drpPerson.Hidden = true; // this.IsFileCabinetA.Hidden = false; //var codeTemplateRule = Funs.DB.Sys_CodeTemplateRule.FirstOrDefault(x => x.MenuId == this.getMenuId && x.IsFileCabinetA == true); //if (codeTemplateRule != null) //{ // this.IsFileCabinetA.Checked = true; //} } else { ///取当前单据审核步骤 int nextSortIndex = 1; var maxFlowOperate = Funs.DB.Sys_FlowOperate.Where(x => x.DataId == this.getDataId).Max(x => x.SortIndex); if (maxFlowOperate != null) { nextSortIndex = maxFlowOperate.Value + 1; } else { this.txtAuditFlowName.Text = "编制单据"; } var nextMenuFlowOperate = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x => x.MenuId == this.MenuId && x.FlowStep == nextSortIndex); if (nextMenuFlowOperate != null && nextMenuFlowOperate.IsFlowEnd != true) { this.txtAuditFlowName.Text = nextMenuFlowOperate.AuditFlowName; this.drpPerson.Items.Clear(); BLL.UserService.InitUserProjectIdRoleIdDropDownList(this.drpPerson, this.ProjectId, nextMenuFlowOperate.RoleId, true); } this.drpPerson.Hidden = false; //this.IsFileCabinetA.Hidden = true; //this.IsFileCabinetA.Checked = false; } } /// /// 得到角色名称字符串 /// /// /// protected string ConvertRole(string roleIds) { return BLL.RoleService.getRoleNamesRoleIds(roleIds); } #endregion #region 组面板 折叠展开事件 /// /// 组面板 折叠展开事件 /// /// /// protected void GroupPanel_Collapse(object sender, EventArgs e) { if (this.GroupPanel1.Collapsed) { this.GroupPanel2.Collapsed = false; } } /// /// 组面板 折叠展开事件 /// /// /// protected void GroupPanel2_Collapse(object sender, EventArgs e) { if (this.GroupPanel2.Collapsed) { this.GroupPanel1.Collapsed = false; } } /// /// 组面板 折叠展开事件 /// /// /// protected void GroupPanel_Expand(object sender, EventArgs e) { if (this.GroupPanel1.Expanded) { this.GroupPanel2.Expanded = false; } } /// /// 组面板 折叠展开事件 /// /// /// protected void GroupPanel2_Expand(object sender, EventArgs e) { if (this.GroupPanel2.Expanded) { this.GroupPanel1.Expanded = false; } } #endregion #region 保存数据 /// /// 保存数据 /// /// 菜单id /// 主键id /// 是否关闭这步流程 /// 单据内容 /// 路径 public void btnSaveData(string projectId, string menuId, string dataId, bool isClosed, string content, string url) { Model.Sys_FlowOperate newFlowOperate = new Model.Sys_FlowOperate { MenuId = this.getMenuId, DataId = dataId, OperaterId = ((Model.Sys_User)Session["CurrUser"]).UserId, State = this.rblFlowOperate.SelectedValue, IsClosed = isClosed, Opinion = this.txtOpinions.Text.Trim(), ProjectId = string.IsNullOrEmpty(projectId) ? null : projectId, Url = url }; var user = BLL.UserService.GetUserByUserId(newFlowOperate.OperaterId); if (user != null) { var roles = BLL.RoleService.GetRoleByRoleId(user.RoleId); if (roles != null && !string.IsNullOrEmpty(roles.RoleName)) { newFlowOperate.AuditFlowName = "[" + roles.RoleName + "]"; } else { newFlowOperate.AuditFlowName = "[" + user.UserName + "]" ; } newFlowOperate.AuditFlowName += this.txtAuditFlowName.Text; } var updateFlowOperate = from x in Funs.DB.Sys_FlowOperate where x.DataId == newFlowOperate.DataId && (x.IsClosed == false || !x.IsClosed.HasValue) select x; if (updateFlowOperate.Count() > 0) { foreach (var item in updateFlowOperate) { item.OperaterId = newFlowOperate.OperaterId; item.OperaterTime = System.DateTime.Now; item.State = newFlowOperate.State; item.Opinion = newFlowOperate.Opinion; item.AuditFlowName = this.txtAuditFlowName.Text; item.IsClosed = newFlowOperate.IsClosed; Funs.DB.SubmitChanges(); } } else { int maxSortIndex = 1; var flowSet = Funs.DB.Sys_FlowOperate.Where(x => x.DataId == newFlowOperate.DataId); var sortIndex = flowSet.Select(x => x.SortIndex).Max(); if (sortIndex.HasValue) { maxSortIndex = sortIndex.Value + 1; } newFlowOperate.FlowOperateId = SQLHelper.GetNewID(typeof(Model.Sys_FlowOperate)); newFlowOperate.SortIndex = maxSortIndex; newFlowOperate.OperaterTime = System.DateTime.Now; newFlowOperate.AuditFlowName = this.txtAuditFlowName.Text; Funs.DB.Sys_FlowOperate.InsertOnSubmit(newFlowOperate); Funs.DB.SubmitChanges(); } if (newFlowOperate.IsClosed == true) { var updateNoClosedFlowOperate = from x in Funs.DB.Sys_FlowOperate where x.DataId == newFlowOperate.DataId && (x.IsClosed == false || !x.IsClosed.HasValue) select x; if (updateNoClosedFlowOperate.Count() > 0) { foreach (var itemClosed in updateNoClosedFlowOperate) { itemClosed.IsClosed = true; Funs.DB.SubmitChanges(); } } if (newFlowOperate.State != BLL.Const.State_2) ///未审核完成的时 增加下一步办理 { int maxSortIndex = 1; var flowSet = Funs.DB.Sys_FlowOperate.Where(x => x.DataId == newFlowOperate.DataId); var sortIndex = flowSet.Select(x => x.SortIndex).Max(); if (sortIndex.HasValue) { maxSortIndex = sortIndex.Value + 1; } Model.Sys_FlowOperate newNextFlowOperate = new Model.Sys_FlowOperate { FlowOperateId = SQLHelper.GetNewID(typeof(Model.Sys_FlowOperate)), MenuId = newFlowOperate.MenuId, DataId = newFlowOperate.DataId, ProjectId = newFlowOperate.ProjectId, Url = newFlowOperate.Url, SortIndex = maxSortIndex, OperaterTime = System.DateTime.Now }; if (this.drpPerson.SelectedValue != BLL.Const._Null) { newNextFlowOperate.OperaterId = this.drpPerson.SelectedValue; } else { newNextFlowOperate.OperaterId = newFlowOperate.OperaterId; } var operaterUsers = BLL.UserService.GetUserByUserId(newNextFlowOperate.OperaterId); if (operaterUsers != null) { var operaterRoles = BLL.RoleService.GetRoleByRoleId(operaterUsers.RoleId); if (operaterRoles != null && !string.IsNullOrEmpty(operaterRoles.RoleName)) { newNextFlowOperate.AuditFlowName = "[" + operaterRoles.RoleName + "]" ; } else { newNextFlowOperate.AuditFlowName = "[" + operaterUsers.UserName + "]" ; } newNextFlowOperate.AuditFlowName += this.txtAuditFlowName.Text; } newNextFlowOperate.IsClosed = false; newNextFlowOperate.State = BLL.Const.State_1; Funs.DB.Sys_FlowOperate.InsertOnSubmit(newNextFlowOperate); Funs.DB.SubmitChanges(); } } } #endregion } }