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
}
}