using BLL; using Model; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web.UI.WebControls; namespace FineUIPro.Web.PHTGL.ContractCompile { public partial class ContractReviewDetail : PageBase { #region 定义属性 /// /// 合同ID /// public string contractId { get { return (string)ViewState["contractId"]; } set { ViewState["contractId"] = value; } } public string ContractReviewId { get { return (string)ViewState["ContractReviewId"]; } set { ViewState["ContractReviewId"] = value; } } /// /// 最末的审批节点 /// public int EndApproveType { get { return (int)ViewState["EndApproveType"]; } set { ViewState["EndApproveType"] = value; } } public List ApproveManModels { get { return (List)Session["ApproveManModels"]; } set { Session["ApproveManModels"] = value; } } public Model.PHTGL_Approve pHTGL_Approve { get { return (Model.PHTGL_Approve)Session["pHTGL_Approve"]; } set { Session["pHTGL_Approve"] = value; } } #endregion protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.btnClose.OnClientClick = ActiveWindow.GetHideRefreshReference(); ContractReviewId = Request.Params["ContractReviewId"]; Model.PHTGL_ContractReview _ContractReview = PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); contractId = _ContractReview.ContractId; //获取合同基本信息 Model.PHTGL_Contract _Contract = BLL.ContractService.GetContractById(contractId); //获取审批人字典 ApproveManModels = PHTGL_ContractReviewService.GetApproveManModels(ContractReviewId); pHTGL_Approve = BLL.PHTGL_ApproveService.GetPHTGL_ApproveByUserId(ContractReviewId, this.CurrUser.PersonId); GetEndApproveType(); Tab1.Hidden = true; Tab3.Hidden = true; if (PHTGL_ApproveService.IsApproveMan(ContractReviewId, this.CurrUser.PersonId)) { BindGrid(); //GetTabPower(); } else if (this.CurrUser.PersonId == Const.sysglyId || this.CurrUser.PersonId == Const.hfnbdId) { BindGrid(); } else if (_Contract.CreatUser == this.CurrUser.PersonId) { BindGrid(); } } } #region 数据绑定 private void BindGrid() { Model.PHTGL_Contract _Contract = BLL.ContractService.GetContractById(contractId); Tab2_CBContractType.DataTextField = "Text"; Tab2_CBContractType.DataValueField = "Value"; Tab2_CBContractType.DataSource = BLL.DropListService.GetContractType(); Tab2_CBContractType.DataBind(); if (_Contract != null) { this.Tab2_txtProjectShortName.Text = _Contract.ProjectShortName; this.Tab2_txtContractName.Text = _Contract.ContractName; this.Tab2_txtContractNum.Text = _Contract.ContractNum; this.Tab2_txtParties.Text = _Contract.Parties; this.SituationRemark.Text = _Contract.SituationRemark; //if (_Contract.IsUseStandardtxt==1) //线上 //{ // this.NoUseStandardtxtRemark.Hidden = true; //} //else //线下 //{ // this.NoUseStandardtxtRemark.Hidden = false; // this.NoUseStandardtxtRemark.Text = _Contract.NoUseStandardtxtRemark; //} this.Tab2_txtContractAmount.Text = _Contract.ContractAmount.HasValue ? _Contract.ContractAmount.ToString() : ""; if (!string.IsNullOrEmpty(_Contract.DepartId)) { this.Tab2_txtDepartId.Text = DepartService.getDepartNameById(_Contract.DepartId); } if (!string.IsNullOrEmpty(_Contract.Agent)) { this.Tab2_txtAgent.Text = Person_PersonsService.GetPersonsNameById(_Contract.Agent); } if (!string.IsNullOrEmpty(_Contract.ContractType)) { Tab2_CBContractType.SelectedValueArray = _Contract.ContractType.Split(); } } var Model_Contractview = BLL.PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); int[] ListConRev = { Const.ContractReviewing, Const.ContractReview_Complete, Const.ContractReview_Refuse }; if (Array.IndexOf(ListConRev, Model_Contractview.State) != -1) { btnAttach.Hidden = false; txtIdea.Hidden = false; txtIdea.Text = Model_Contractview.Idea; } pHTGL_Approve = BLL.PHTGL_ApproveService.GetPHTGL_ApproveByUserId(ContractReviewId, this.CurrUser.PersonId); if (pHTGL_Approve != null) { btnAgree.Enabled = true; btnDisgree.Enabled = true; } else { btnAgree.Enabled = false; btnDisgree.Enabled = false; } var tb = BLL.PHTGL_ApproveService.GetAllApproveData(ContractReviewId); Grid1.DataSource = tb; Grid1.DataBind(); } private void GetTabPower() { Model.PHTGL_ContractReview _ContractReview = PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); var ApproveManModels__Countersigner = PHTGL_ContractReviewService.GetApproveManModels__Countersigner(ContractReviewId); var allApproveMan = ApproveManModels__Countersigner.Concat(ApproveManModels).ToList(); var ApproveManList = PHTGL_ApproveService.GetListPHTGL_ApproveByUserId(ContractReviewId, this.CurrUser.PersonId); int Number = 0; if (ApproveManList.Count > 0) { for (int i = 0; i < ApproveManList.Count; i++) { var number = allApproveMan.Find(x => x.Rolename == ApproveManList[i].ApproveType).Number; if (number > Number) { Number = number; } } } if (Convert.ToInt32(Number) > 6) { Tab1.Hidden = false; BindCountersignFrom(); if (_ContractReview.State == Const.ContractReview_Complete) { Tab3.Hidden = false; BindApproveForm(); } } } #endregion #region 附件 protected void btnLooK_Click(object sender, EventArgs e) { var model = BLL.PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); var Con = BLL.ContractService.GetContractById(model.ContractId); if (Con.IsUseStandardtxt != 1) { PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/ContractAttachUrl&menuId={1}&type=-1", model.ContractId, BLL.Const.ContractFormation))); } else { //ContractReview contractReview = new ContractReview(); //contractReview.printContractAgreement(model.ContractId); BLL.PHTGL_ContractReviewService.printContractAgreement(model.ContractId); } } protected void btnAttach_Click(object sender, EventArgs e) { var model = BLL.PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/ContractAttachUrl&menuId={1}&type=-1", model.ContractId + "-Idea", BLL.Const.ContractFormation))); } /// /// 情况说明附件 /// /// /// protected void btnAttachUrl_Remark_Click(object sender, EventArgs e) { var model = BLL.PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/ContractAttachUrl/Remark&menuId={1}&type=-1", model.ContractId + "-Remark", BLL.Const.ContractFormation))); } #endregion #region 绑定会签评审单 void BindCountersignFrom() { Model.PHTGL_Contract _Contract = BLL.ContractService.GetContractById(contractId); CBContractType.DataTextField = "Text"; CBContractType.DataValueField = "Value"; CBContractType.DataSource = BLL.DropListService.GetContractType(); CBContractType.DataBind(); if (_Contract != null) { if (!string.IsNullOrEmpty(_Contract.ProjectId)) { this.txtProjectid.Text = ProjectService.GetProjectCodeByProjectId(_Contract.ProjectId); } this.txtContractName.Text = _Contract.ContractName; this.txtContractNum.Text = _Contract.ContractNum; this.txtParties.Text = _Contract.Parties; this.txtContractAmount.Text = _Contract.ContractAmount.HasValue ? _Contract.ContractAmount.ToString() : ""; if (!string.IsNullOrEmpty(_Contract.DepartId)) { this.txtDepartId.Text = DepartService.getDepartNameById(_Contract.DepartId); } if (!string.IsNullOrEmpty(_Contract.Agent)) { this.txtAgent.Text = Person_PersonsService.GetPersonsNameById(_Contract.Agent); } if (!string.IsNullOrEmpty(_Contract.ContractType)) { CBContractType.SelectedValueArray = _Contract.ContractType.Split(); } } string strSql = @" select a.ApproveId ,a.ApproveMan,a.ApproveType,a.ApproveDate ,a.ApproveIdea,a.ApproveForm from PHTGL_Approve a " + @" where not exists (select 1 from PHTGL_Approve b where a.ApproveType=b.ApproveType and a.ContractId=b.ContractId and a.ApproveDate listStr = new List(); listStr.Add(new SqlParameter("@ContractId", ContractReviewId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); var ApproveManModels__Countersigner = PHTGL_ContractReviewService.GetApproveManModels__Countersigner(ContractReviewId); var allApproveMan = ApproveManModels__Countersigner.Concat(ApproveManModels).ToList(); foreach (DataRow dr in tb.Rows) { string ApproveMan = dr["ApproveMan"].ToString(); var model = allApproveMan.Find(e => e.Rolename == dr["ApproveType"].ToString()); string ApproveType = ""; string ApproveDate = ""; if (model != null) { ApproveType = model.Number.ToString(); } string ApproveIdea = dr["ApproveIdea"].ToString(); try { ApproveDate = string.Format("{0:D}", DateTime.Parse(dr["ApproveDate"].ToString())); } catch (Exception) { ApproveDate = ""; } switch (ApproveType) { case "1": txtnode1.Text = ApproveIdea; break; case "2": txtnode2.Text = ApproveIdea; break; case "3": txtnode3.Text = ApproveIdea; break; case "4": txtnode4.Text = ApproveIdea; break; case "5": txtnode5.Text = ApproveIdea; break; case "6": txtnode6.Text = ApproveIdea; break; case "7": txtnode7.Text = ApproveIdea; break; case "8": txtnode8.Text = ApproveIdea; break; case "9": txtnode9.Text = ApproveIdea; break; case "10": txtnode10.Text = ApproveIdea; break; } } } #endregion #region 绑定施工合同签订审批表 void BindApproveForm() { Model.PHTGL_Contract _Contract = BLL.ContractService.GetContractById(contractId); Tab3_CBContractType.DataTextField = "Text"; Tab3_CBContractType.DataValueField = "Value"; Tab3_CBContractType.DataSource = BLL.DropListService.GetContractType(); Tab3_CBContractType.DataBind(); if (_Contract != null) { if (!string.IsNullOrEmpty(_Contract.ProjectId)) { this.Tab3_txtProjectid.Text = ProjectService.GetProjectCodeByProjectId(_Contract.ProjectId); } this.Tab3_txtContractName.Text = _Contract.ContractName; this.Tab3_txtContractNum.Text = _Contract.ContractNum; this.Tab3_txtParties.Text = _Contract.Parties; this.Tab3_txtContractAmount.Text = _Contract.ContractAmount.HasValue ? _Contract.ContractAmount.ToString() : ""; if (!string.IsNullOrEmpty(_Contract.DepartId)) { this.Tab3_txtDepartId.Text = DepartService.getDepartNameById(_Contract.DepartId); } if (!string.IsNullOrEmpty(_Contract.Agent)) { this.Tab3_txtAgent.Text = Person_PersonsService.GetPersonsNameById(_Contract.Agent); } if (!string.IsNullOrEmpty(_Contract.ContractType)) { Tab3_CBContractType.SelectedValueArray = _Contract.ContractType.Split(); } if (!string.IsNullOrEmpty(_Contract.Remarks)) { txtRemark.Text = _Contract.Remarks; } } string strSql = @" select a.ApproveId ,a.ApproveMan,a.ApproveType,a.ApproveDate ,a.ApproveIdea,a.ApproveForm from PHTGL_Approve a " + @" where not exists (select 1 from PHTGL_Approve b where a.ApproveType=b.ApproveType and a.ContractId=b.ContractId and a.ApproveDate listStr = new List(); listStr.Add(new SqlParameter("@ContractId", ContractReviewId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); var ApproveManModels__Countersigner = PHTGL_ContractReviewService.GetApproveManModels__Countersigner(ContractReviewId); var allApproveMan = ApproveManModels__Countersigner.Concat(ApproveManModels).ToList(); foreach (DataRow dr in tb.Rows) { string ApproveMan = dr["ApproveMan"].ToString(); var model = allApproveMan.Find(e => e.Rolename == dr["ApproveType"].ToString()); string ApproveType = ""; string ApproveDate = ""; if (model != null) { ApproveType = model.Number.ToString(); } string ApproveIdea = dr["ApproveIdea"].ToString(); try { ApproveDate = string.Format("{0:D}", DateTime.Parse(dr["ApproveDate"].ToString())); } catch (Exception) { ApproveDate = ""; } switch (ApproveType) { case "11": txtnode11.Text = ApproveIdea; break; case "12": txtnode12.Text = ApproveIdea; break; case "13": txtnode13.Text = ApproveIdea; break; case "14": txtnode14.Text = ApproveIdea; break; case "15": txtnode15.Text = ApproveIdea; break; case "16": txtnode16.Text = ApproveIdea; break; case "17": txtnode17.Text = ApproveIdea; break; } } } #endregion #region 审批同意(不同意) protected void btnAgree_Click(object sender, EventArgs e) { var ApproveManModels__Countersigner = PHTGL_ContractReviewService.GetApproveManModels__Countersigner(ContractReviewId); var allApproveMan = ApproveManModels__Countersigner.Concat(ApproveManModels).ToList(); var number = allApproveMan.Find(x => x.Rolename == pHTGL_Approve.ApproveType).Number; if (number <= 6) { CountersignerSave(true); } else { ApprovemanSave(true); } OAWebSevice.Pushoa(); OAWebSevice.DoneRequest(pHTGL_Approve.ApproveId); BindGrid(); } protected void btnDisgree_Click(object sender, EventArgs e) { var ApproveManModels__Countersigner = PHTGL_ContractReviewService.GetApproveManModels__Countersigner(ContractReviewId); var allApproveMan = ApproveManModels__Countersigner.Concat(ApproveManModels).ToList(); var number = allApproveMan.Find(x => x.Rolename == pHTGL_Approve.ApproveType).Number; if (number <= 6) { CountersignerSave(false); } else { ApprovemanSave(false); } OAWebSevice.DoneRequest(pHTGL_Approve.ApproveId); OAWebSevice.Pushoa_Creater(pHTGL_Approve.ApproveId); BindGrid(); } void CountersignerSave(bool IsAgree) { pHTGL_Approve.ApproveDate = Funs.GetNewDateTimeOrNow("").ToString(); pHTGL_Approve.State = 1; pHTGL_Approve.IsAgree = IsAgree ? 2 : 1; string txtIdea = ""; if (IsAgree) { txtIdea = "同意"; } else { txtIdea = "不同意"; } pHTGL_Approve.ApproveIdea = txtApproveIdea.Text.Trim() == "" ? txtIdea : txtApproveIdea.Text; BLL.PHTGL_ApproveService.UpdatePHTGL_Approve(pHTGL_Approve); // ChangeState(Const.ContractReviewing); if (IsAgree) { if (IsCountersignerAllAgree()) { Model.PHTGL_Approve _Approve = new Model.PHTGL_Approve(); _Approve.ContractId = pHTGL_Approve.ContractId; _Approve.ApproveMan = ApproveManModels.Find(e => e.Number == 7).userid; _Approve.ApproveDate = ""; _Approve.State = 0; _Approve.IsAgree = 0; _Approve.ApproveIdea = ""; _Approve.ApproveType = ApproveManModels.Find(e => e.Number == 7).Rolename; _Approve.IsPushOa = 0; _Approve.ApproveForm = GetApproveForm(7); var IsExitmodel = PHTGL_ApproveService.GetPHTGL_ApproveByContractIdAndType(_Approve.ContractId, _Approve.ApproveType); if (IsExitmodel == null) { _Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.PHTGL_Approve)); BLL.PHTGL_ApproveService.AddPHTGL_Approve(_Approve); } else { _Approve.ApproveId = IsExitmodel.ApproveId; BLL.PHTGL_ApproveService.UpdatePHTGL_Approve(_Approve); } // ChangeState(Const.ContractReviewing); } } else { ChangeState(0);//拒绝 var model = PHTGL_ApproveService.GetPHTGL_ApproveByContractId(pHTGL_Approve.ContractId); if (model != null) { for (int i = 0; i < model.Count; i++) { Model.PHTGL_Approve _Approve = model[i]; _Approve.State = 1; _Approve.IsAgree = 1; _Approve.ApproveIdea = "其他会签人员已经拒绝"; pHTGL_Approve.ApproveDate = Funs.GetNewDateTimeOrNow("").ToString(); PHTGL_ApproveService.UpdatePHTGL_Approve(_Approve); OAWebSevice.DoneRequest(_Approve.ApproveId); } } } ShowNotify("提交成功,流程转入下一节点!", MessageBoxIcon.Success); if (!string.IsNullOrEmpty(Request.Params["PHTUrl"])) { PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); PageContext.RegisterStartupScript("closeActiveTab();"); } else { PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); } } void ApprovemanSave(bool IsAgree) { pHTGL_Approve.ApproveDate = Funs.GetNewDateTimeOrNow("").ToString(); pHTGL_Approve.State = 1; pHTGL_Approve.IsAgree = IsAgree ? 2 : 1; string txtIdea = ""; if (IsAgree) { txtIdea = "同意"; } else { txtIdea = "不同意"; } pHTGL_Approve.ApproveIdea = txtApproveIdea.Text.Trim() == "" ? txtIdea : txtApproveIdea.Text; BLL.PHTGL_ApproveService.UpdatePHTGL_Approve(pHTGL_Approve); int thisApproveTypeNumber = ApproveManModels.Find(e => e.Rolename == pHTGL_Approve.ApproveType).Number; int nextApproveType = thisApproveTypeNumber + 1; if (IsAgree) { if (thisApproveTypeNumber < EndApproveType) { Model.PHTGL_Approve _Approve = new Model.PHTGL_Approve(); _Approve.ContractId = pHTGL_Approve.ContractId; _Approve.ApproveMan = ApproveManModels.Find(e => e.Number == nextApproveType).userid; _Approve.ApproveDate = ""; _Approve.State = 0; _Approve.IsAgree = 0; _Approve.ApproveIdea = ""; _Approve.ApproveType = ApproveManModels.Find(e => e.Number == nextApproveType).Rolename; _Approve.IsPushOa = 0; _Approve.ApproveForm = GetApproveForm(nextApproveType); var IsExitmodel = PHTGL_ApproveService.GetPHTGL_ApproveByContractIdAndType(_Approve.ContractId, _Approve.ApproveType); if (IsExitmodel == null) { _Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.PHTGL_Approve)); BLL.PHTGL_ApproveService.AddPHTGL_Approve(_Approve); } else { _Approve.ApproveId = IsExitmodel.ApproveId; BLL.PHTGL_ApproveService.UpdatePHTGL_Approve(_Approve); } //ChangeState(Const.ContractReviewing); } else { ChangeState(1);//成功 } } else { ChangeState(0);//拒绝 } ShowNotify("提交成功,流程转入下一节点!", MessageBoxIcon.Success); if (!string.IsNullOrEmpty(Request.Params["PHTUrl"])) { PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); PageContext.RegisterStartupScript("closeActiveTab();"); } else { PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference()); } } #endregion #region 相关 /// /// 判断是否所以会签人员都已经同意 /// /// private bool IsCountersignerAllAgree() { bool IsNext = false; string strsql = "select count(*) from PHTGL_Approve where State='0' and ApproveMan !='' and ContractId='" + pHTGL_Approve.ContractId + "'"; DataTable tb = SQLHelper.RunSqlGetTable(strsql); if (tb != null && tb.Rows.Count > 0) { if (tb.Rows[0][0].ToString() == "0") { IsNext = true; } } return IsNext; } /// /// 改变审批流状态 1是成功 0是拒绝 /// /// private void ChangeState(int state) { Model.PHTGL_ContractReview _ContractReview = PHTGL_ContractReviewService.GetPHTGL_ContractReviewByContractId(contractId); switch (_ContractReview.State) { case Const.Contract_countersign: if (state == 1) { state = Const.Contract_countersign_Complete; } else if (state == 0) { state = Const.Contract_countersign_Refuse; } break; case Const.ContractReviewing: if (state == 1) { state = Const.ContractReview_Complete; } else if (state == 0) { state = Const.ContractReview_Refuse; } break; } _ContractReview.State = state; PHTGL_ContractReviewService.UpdatePHTGL_ContractReview(_ContractReview); var _Att = BLL.ContractService.GetContractById(contractId); if (_Att != null) { _Att.ApproveState = state; ContractService.UpdateContract(_Att); } } /// /// 获取最终的审批节点 /// /// private void GetEndApproveType() { var ConRev = PHTGL_ContractReviewService.GetPHTGL_ContractReviewById(ContractReviewId); if (ConRev.State == Const.Contract_countersign) { EndApproveType = ApproveManModels.Find(x => x.Rolename == "会签法律合规部2").Number; } else if (ConRev.State == Const.ContractReviewing) { EndApproveType = ApproveManModels.Find(x => x.Rolename == "分管副总经理").Number; Model.PHTGL_Contract _Contract = ContractService.GetContractById(contractId); if (_Contract.ContractAmount >= 50000000) { EndApproveType = ApproveManModels.Find(x => x.Rolename == "董事长").Number; return; } if (_Contract.ContractAmount >= 20000000) { EndApproveType = ApproveManModels.Find(x => x.Rolename == "总经理").Number; return; } } } /// /// 获得审批类型(合同评审/合同审批) /// /// /// private string GetApproveForm(int number) { if (number <= ApproveManModels.Find(x => x.Rolename == "会签法律合规部2").Number) { return PHTGL_ApproveService.ContractReview_Countersign; } else { return PHTGL_ApproveService.ContractReview; } } #endregion #region 分页 排序 /// /// 改变索引事件 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { BindGrid(); } /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) { BindGrid(); } #endregion } }