using BLL;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.CQMS.Information
{
    public partial class VisaApplicationEdit : PageBase
    {
        #region 定义变量
        /// 
        /// 方案审查主键
        /// 
        public string VisaApplicationId
        {
            get
            {
                return (string)ViewState["VisaApplicationId"];
            }
            set
            {
                ViewState["VisaApplicationId"] = value;
            }
        }
        #endregion
        #region 定义集合
        /// 
        /// 定义会签意见集合
        /// 
        public static List approves = new List();
        #endregion
        public int ContactImg
        {
            get
            {
                return Convert.ToInt32(ViewState["ContactImg"]);
            }
            set
            {
                ViewState["ContactImg"] = value;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BLL.SecretLevelService.InitSecretLevelDropDownList(drpSecretLevel, true);
                UnitService.InitUnitByProjectIdUnitTypeDropDownList(drpUnit, CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_2, true);
                BindXMRole();
                BindSJRole();
                BindCGRole();
                BindSGRole();
                BindSCRole();
                BindYZRole();
                BindQTRole();
                ContactImg = 0;
                //CommonService.GetAllButtonList(CurrUser.LoginProjectId, CurrUser.UserId, Const.VisaApplicationMenuId);
                txtCompileDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
                VisaApplicationId = Request.Params["visaApplicationId"];
                if (!string.IsNullOrWhiteSpace(VisaApplicationId))
                {
                    HFVisaApplicationId.Text = VisaApplicationId;
                    Model.CQMS_VisaApplication visaApplication = VisaApplicationService.GetVisaApplicationByVisaApplicationId(VisaApplicationId);
                    txtVisaApplicationCode.Text = visaApplication.VisaApplicationCode;
                    if (!string.IsNullOrEmpty(visaApplication.SecretLevelId))
                    {
                        drpSecretLevel.SelectedValue = visaApplication.SecretLevelId;
                    }
                    if (!string.IsNullOrEmpty(visaApplication.UnitId))
                    {
                        drpUnit.SelectedValue = visaApplication.UnitId;
                        BindFBRole();
                    }
                    this.txtContractNo.Text = visaApplication.ContractNo;
                    this.txtTaskTheme.Text = visaApplication.TaskTheme;
                    if (!string.IsNullOrEmpty(visaApplication.ApplicableProcedures))
                    {
                        this.rblApplicableProcedures.SelectedValue = visaApplication.ApplicableProcedures;
                    }
                    this.txtReasons.Text = visaApplication.Reasons;
                    this.txtJobDescription.Text = visaApplication.JobDescription;
                    if (visaApplication.CompileDate != null)
                    {
                        txtCompileDate.Text = string.Format("{0:yyyy-MM-dd}", visaApplication.CompileDate);
                    }
                    if (visaApplication.Edition != null)
                    {
                        txtEdition.Text = visaApplication.Edition.ToString();
                    }
                    bindApprove();
                    var xmUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "XM");
                    if (xmUserIds.Count > 0)
                    {
                        SetCheck(trOne, xmUserIds);
                    }
                    var sjUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "SJ");
                    if (sjUserIds.Count > 0)
                    {
                        SetCheck(trTwo, sjUserIds);
                    }
                    var cgUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "CG");
                    if (cgUserIds.Count > 0)
                    {
                        SetCheck(trThree, cgUserIds);
                    }
                    var sgUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "SG");
                    if (sgUserIds.Count > 0)
                    {
                        SetCheck(trFour, sgUserIds);
                    }
                    var scUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "SC");
                    if (scUserIds.Count > 0)
                    {
                        SetCheck(trFive, scUserIds);
                    }
                    var yzUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "YZ");
                    if (yzUserIds.Count > 0)
                    {
                        SetCheck(trSixe, yzUserIds);
                    }
                    var fbUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "FB");
                    if (fbUserIds.Count > 0)
                    {
                        SetCheck(trSeven, fbUserIds);
                    }
                    var qtUserIds = VisaApplicationApproveService.GetUserIdsApprovesBySignType(VisaApplicationId, "QT");
                    if (qtUserIds.Count > 0)
                    {
                        SetCheck(trEight, qtUserIds);
                    }
                    if (visaApplication.State == Const.VisaApplication_Compile)
                    {
                        agree.Hidden = true;
                        options.Hidden = true;
                        optio.Hidden = true;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Compile, false);
                        UserService.InitUserProjectIdUnitTypeDropDownList(drpHandleMan, CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_1, false);
                    }
                    else if (visaApplication.State == Const.VisaApplication_ReCompile)  //重报
                    {
                        this.trNext.Hidden = true;
                        agree.Hidden = true;
                        options.Hidden = true;
                        optio.Hidden = true;
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit1)
                    {
                        this.trHQ.Hidden = false;
                        this.trNext.Hidden = true;
                        this.drpHandleMan.Required = false;
                        NoEdit();
                        ////获取上个版次会签不同意的审批记录
                        //List lastHQNotAggreeApproves = BLL.VisaApplicationApproveService.GetHQNotAggreeApprovesByVisaApplicationIdAndEdtion(VisaApplicationId, visaApplication.Edition.Value - 1);
                        //if (lastHQNotAggreeApproves.Count > 0)
                        //{
                        //    var xmIds = lastHQNotAggreeApproves.Where(x => x.SignType == "XM").Select(x => x.ApproveMan).ToList();
                        //    if (xmIds.Count > 0)
                        //    {
                        //        SetCheck(trOne, xmIds);
                        //    }
                        //    var sjIds = lastHQNotAggreeApproves.Where(x => x.SignType == "SJ").Select(x => x.ApproveMan).ToList();
                        //    if (sjIds.Count > 0)
                        //    {
                        //        SetCheck(trTwo, sjIds);
                        //    }
                        //    var cgIds = lastHQNotAggreeApproves.Where(x => x.SignType == "CG").Select(x => x.ApproveMan).ToList();
                        //    if (cgIds.Count > 0)
                        //    {
                        //        SetCheck(trThree, cgIds);
                        //    }
                        //    var sgIds = lastHQNotAggreeApproves.Where(x => x.SignType == "SG").Select(x => x.ApproveMan).ToList();
                        //    if (sgIds.Count > 0)
                        //    {
                        //        SetCheck(trFour, sgIds);
                        //    }
                        //    var scIds = lastHQNotAggreeApproves.Where(x => x.SignType == "SC").Select(x => x.ApproveMan).ToList();
                        //    if (scIds.Count > 0)
                        //    {
                        //        SetCheck(trFive, scIds);
                        //    }
                        //    var yzIds = lastHQNotAggreeApproves.Where(x => x.SignType == "YZ").Select(x => x.ApproveMan).ToList();
                        //    if (yzIds.Count > 0)
                        //    {
                        //        SetCheck(trSixe, yzIds);
                        //    }
                        //    var fbIds = lastHQNotAggreeApproves.Where(x => x.SignType == "FB").Select(x => x.ApproveMan).ToList();
                        //    if (fbIds.Count > 0)
                        //    {
                        //        SetCheck(trSeven, fbIds);
                        //    }
                        //    var qtIds = lastHQNotAggreeApproves.Where(x => x.SignType == "QT").Select(x => x.ApproveMan).ToList();
                        //    if (qtIds.Count > 0)
                        //    {
                        //        SetCheck(trEight, qtIds);
                        //    }
                        //    Panel2.Enabled = false;
                        //}
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit2)
                    {
                        this.trHQ.Hidden = false;
                        this.trNext.Hidden = true;
                        this.drpHandleMan.Required = false;
                        NoEdit();
                        Panel2.Enabled = false;
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit3)
                    {
                        this.trEstimatedCost.Hidden = false;
                        this.trHQ.Hidden = false;
                        NoEdit();
                        Panel2.Enabled = false;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Audit3, false);
                        var userList = from x in Funs.DB.Sys_User
                                       join y in Funs.DB.Project_ProjectUnit
                                       on x.UnitId equals y.UnitId
                                       join p in Funs.DB.Project_ProjectUser
                                       on x.UserId equals p.UserId
                                       where p.RoleId.Contains(Const.ControlManager)
                                       && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit4)
                    {
                        this.trEstimatedCost.Hidden = false;
                        if (!string.IsNullOrEmpty(visaApplication.EstimatedCost))
                        {
                            this.rblEstimatedCost.SelectedValue = visaApplication.EstimatedCost;
                        }
                        this.trHQ.Hidden = false;
                        NoEdit();
                        Panel2.Enabled = false;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Audit4, false);
                        UserService.InitUserProjectIdUnitTypeDropDownList(drpHandleMan, CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_1, false);
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit5)
                    {
                        this.trEstimatedCost.Hidden = false;
                        if (!string.IsNullOrEmpty(visaApplication.EstimatedCost))
                        {
                            this.rblEstimatedCost.SelectedValue = visaApplication.EstimatedCost;
                        }
                        this.trEstimatedCost.Enabled = false;
                        this.trHQ.Hidden = false;
                        NoEdit();
                        Panel2.Enabled = false;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Audit5, false);
                        var userList = from x in Funs.DB.Sys_User
                                       join y in Funs.DB.Project_ProjectUnit
                                       on x.UnitId equals y.UnitId
                                       join p in Funs.DB.Project_ProjectUser
                                       on x.UserId equals p.UserId
                                       where p.RoleId.Contains(Const.ProjectManager)
                                       && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit6)
                    {
                        this.trEstimatedCost.Hidden = false;
                        if (!string.IsNullOrEmpty(visaApplication.EstimatedCost))
                        {
                            this.rblEstimatedCost.SelectedValue = visaApplication.EstimatedCost;
                        }
                        this.trEstimatedCost.Enabled = false;
                        this.trHQ.Hidden = false;
                        NoEdit();
                        Panel2.Enabled = false;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Audit6, false);
                        var userList = from x in Funs.DB.Sys_User
                                       where x.UnitId == BLL.Const.UnitId_CD && x.IsOffice == true
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit7)
                    {
                        this.trEstimatedCost.Hidden = false;
                        if (!string.IsNullOrEmpty(visaApplication.EstimatedCost))
                        {
                            this.rblEstimatedCost.SelectedValue = visaApplication.EstimatedCost;
                        }
                        this.trEstimatedCost.Enabled = false;
                        this.trHQ.Hidden = false;
                        NoEdit();
                        Panel2.Enabled = false;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Audit7, false);
                        var userList = from x in Funs.DB.Sys_User
                                       where x.UnitId == BLL.Const.UnitId_CD && x.IsOffice == true
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                    else if (visaApplication.State == Const.VisaApplication_Audit8)
                    {
                        this.trEstimatedCost.Hidden = false;
                        if (!string.IsNullOrEmpty(visaApplication.EstimatedCost))
                        {
                            this.rblEstimatedCost.SelectedValue = visaApplication.EstimatedCost;
                        }
                        this.trEstimatedCost.Enabled = false;
                        this.trHQ.Hidden = false;
                        NoEdit();
                        Panel2.Enabled = false;
                        VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Audit8, false);
                        this.trApprovalComments.Hidden = false;
                        this.drpHandleMan.Enabled = false;
                        this.drpHandleMan.Required = false;
                        this.drpHandleMan.Items.Clear();
                    }
                    //提交版本人多次修改
                    //if (visaApplication.CompileMan.Equals(CurrUser.UserId))
                    //{
                    //    txtVisaApplicationCode.Enabled = true;
                    //    drpUnit.Enabled = true;
                    //    txtCompileDate.Enabled = true;
                    //    ContactImg = 0;
                    //    Panel2.Enabled = true;
                    //    rblIsAgree.Hidden = true;
                    //    rblIsAgree.Required = false;
                    //    options.Hidden = true;
                    //    txtOptions.Required = false;
                    //    optio.Hidden = true;
                    //}
                }
                else
                {
                    agree.Hidden = true;
                    txtEdition.Text = "0";
                    options.Hidden = true;
                    optio.Hidden = true;
                    plApprove2.Hidden = true;
                    VisaApplicationService.Init(drpHandleType, Const.VisaApplication_Compile, false);
                    UserService.InitUserProjectIdUnitTypeDropDownList(drpHandleMan, CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_1, false);
                    //txtVisaApplicationCode.Text = SQLHelper.RunProcNewId2("SpGetNewCode3ByProjectId", "dbo.CQMS_VisaApplication", "Code", CurrUser.LoginProjectId);
                }
            }
        }
        private void NoEdit()
        {
            txtVisaApplicationCode.Enabled = false;
            drpSecretLevel.Enabled = false;
            drpUnit.Enabled = false;
            txtContractNo.Enabled = false;
            txtTaskTheme.Enabled = false;
            rblApplicableProcedures.Enabled = false;
            txtReasons.Enabled = false;
            txtJobDescription.Enabled = false;
            txtCompileDate.Enabled = false;
            txtEdition.Enabled = false;
            ContactImg = -1;
        }
        /// 
        /// 审批列表
        /// 
        private void bindApprove()
        {
            var list = VisaApplicationApproveService.getListData(VisaApplicationId);
            gvApprove.DataSource = list;
            gvApprove.DataBind();
        }
        public string man(Object man)
        {
            string appman = string.Empty;
            if (UserService.GetUserByUserId(man.ToString()) != null)
            {
                appman = UserService.GetUserByUserId(man.ToString()).UserName;
            }
            return appman;
        }
        #region 保存/提交
        protected void btnSave_Click(object sender, EventArgs e)
        {
            //validate(Const.BtnSave, "save");
            if (CommonService.GetAllButtonPowerList(CurrUser.LoginProjectId, CurrUser.UserId, Const.VisaApplicationMenuId, Const.BtnSave))
            {
                SaveVisaApplication("save");
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                Alert.ShowInTop("保存成功!", MessageBoxIcon.Success);
            }
            else
            {
                Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
            }
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            validate(Const.BtnSubmit, "submmit");
        }
        /// 
        /// 保存验证
        /// 
        /// 
        /// 
        public void validate(string buttonName, string tip)
        {
            if (CommonService.GetAllButtonPowerList(CurrUser.LoginProjectId, CurrUser.UserId, Const.VisaApplicationMenuId, buttonName))
            {
                string err = string.Empty;
                if (this.drpSecretLevel.SelectedValue == BLL.Const._Null)
                {
                    err += "请选择密级,";
                }
                if (this.drpUnit.SelectedValue == BLL.Const._Null)
                {
                    err += "请选择分包单位,";
                }
                //if (!AttachFileService.Getfile(HFVisaApplicationId.Text, Const.VisaApplicationMenuId))
                //{
                //    err += "请上传附件,";
                //}
                //if (trOne.Nodes[0].Nodes.Count == 0 && trTwo.Nodes.Count == 0 && trThree.Nodes.Count == 0 &&
                //    trFour.Nodes.Count == 0 && trFive.Nodes.Count == 0 && trSixe.Nodes.Count == 0)
                //{
                //    err += "请选择总包会签人员,";
                //}
                Model.CQMS_VisaApplication visaApplication = BLL.VisaApplicationService.GetVisaApplicationByVisaApplicationId(VisaApplicationId);
                if (visaApplication != null && visaApplication.State != BLL.Const.VisaApplication_Compile && visaApplication.State != BLL.Const.VisaApplication_ReCompile && this.rblIsAgree.SelectedValue == "true")
                {
                    List list = new List();
                    list.Add(trOne);
                    list.Add(trTwo);
                    list.Add(trThree);
                    list.Add(trFour);
                    list.Add(trFive);
                    list.Add(trSixe);
                    list.Add(trSeven);
                    list.Add(trEight);
                    var res = false;
                    foreach (var item in list)
                    {
                        if (nodesCheckd(item))
                        {
                            res = true;
                            break;
                        }
                    }
                    if (!res)
                    {
                        err += "请选择会签人员,";
                    }
                }
                if (!string.IsNullOrWhiteSpace(err))
                {
                    err = err.Substring(0, err.LastIndexOf(","));
                    err += "!";
                }
                if (!string.IsNullOrWhiteSpace(err))
                {
                    Alert.ShowInTop(err, MessageBoxIcon.Warning);
                    return;
                }
                if (!string.IsNullOrWhiteSpace(VisaApplicationId))
                {//更新时操作
                    if (tip == "save")
                    {
                        EditConstructSol("save");
                    }
                    else
                    {
                        EditConstructSol("submit");
                    }
                }
                else
                {
                    if (tip == "save")
                    {
                        SaveVisaApplication("save");
                    }
                    else
                    {
                        SaveVisaApplication("submit");
                    }
                    //添加时操作           
                }
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
                if (tip == "save")
                {
                    tip = "保存成功!";
                }
                else
                {
                    tip = "提交成功!";
                }
                Alert.ShowInTop(tip, MessageBoxIcon.Success);
            }
            else
            {
                Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
            }
        }
        /// 
        /// 编辑时候保存
        /// 
        private void EditConstructSol(string saveType)
        {
            Model.CQMS_VisaApplication visaApplication = new Model.CQMS_VisaApplication();
            visaApplication.VisaApplicationCode = txtVisaApplicationCode.Text.Trim();
            visaApplication.SecretLevelId = this.drpSecretLevel.SelectedValue;
            visaApplication.ProjectId = CurrUser.LoginProjectId;
            visaApplication.UnitId = this.drpUnit.SelectedValue;
            visaApplication.ContractNo = this.txtContractNo.Text.Trim();
            visaApplication.TaskTheme = this.txtTaskTheme.Text.Trim();
            visaApplication.ApplicableProcedures = this.rblApplicableProcedures.SelectedValue;
            visaApplication.Reasons = this.txtReasons.Text.Trim();
            visaApplication.JobDescription = this.txtJobDescription.Text.Trim();
            int edtion = Convert.ToInt32(txtEdition.Text);
            visaApplication.Edition = edtion;
            if (!string.IsNullOrEmpty(txtCompileDate.Text.Trim()))
            {
                visaApplication.CompileDate = Convert.ToDateTime(txtCompileDate.Text.Trim());
            }
            if (!string.IsNullOrEmpty(VisaApplicationId))
            {
                visaApplication.VisaApplicationId = VisaApplicationId;
                Model.CQMS_VisaApplication visaApplication1 = VisaApplicationService.GetVisaApplicationByVisaApplicationId(VisaApplicationId);
                if (saveType == "submit")
                {
                    Model.CQMS_VisaApplicationApprove approve = VisaApplicationApproveService.GetConstructSoluAppByApproveMan(VisaApplicationId, CurrUser.UserId, Convert.ToInt32(visaApplication1.Edition));
                    if (approve != null)
                    {
                        approve.IsAgree = Convert.ToBoolean(this.rblIsAgree.SelectedValue);
                        approve.ApproveIdea = this.txtOptions.Text.Trim();
                        approve.ApproveDate = DateTime.Now;
                        VisaApplicationApproveService.UpdateVisaApplicationApprove(approve);
                    }
                    if (visaApplication1.State == BLL.Const.VisaApplication_Compile)
                    {
                        visaApplication.State = this.drpHandleType.SelectedValue;
                        Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                        reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                        reApprove.ApproveMan = this.drpHandleMan.SelectedValue;
                        reApprove.ApproveType = this.drpHandleType.SelectedValue;
                        reApprove.Edition = edtion;
                        VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                    }
                    else if (visaApplication1.State == BLL.Const.VisaApplication_ReCompile)   //重报
                    {
                        //获取上个版次会签不同意的审批记录
                        List lastHQNotAggreeApproves = BLL.VisaApplicationApproveService.GetHQNotAggreeApprovesByVisaApplicationIdAndEdtion(VisaApplicationId, visaApplication1.Edition.Value - 1);
                        visaApplication.State = lastHQNotAggreeApproves[0].ApproveType;
                        foreach (var item in lastHQNotAggreeApproves)
                        {
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = item.ApproveMan;
                            reApprove.ApproveType = item.ApproveType;
                            reApprove.Edition = edtion;
                            reApprove.SignType = item.SignType;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                    }
                    else if (visaApplication1.State == BLL.Const.VisaApplication_Audit1)
                    {
                        if (this.rblIsAgree.SelectedValue == "true")    //同意
                        {
                            countersign(visaApplication.VisaApplicationId);
                            visaApplication.State = Const.VisaApplication_Audit2;
                        }
                        else   //不同意
                        {
                            visaApplication.State = Const.VisaApplication_ReCompile;
                            visaApplication.Edition = edtion + 1;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = visaApplication1.CompileMan;
                            reApprove.ApproveType = Const.VisaApplication_ReCompile;
                            reApprove.Edition = edtion + 1;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                    }
                    else if (visaApplication1.State == BLL.Const.VisaApplication_Audit2)  //会签
                    {
                        visaApplication.State = Const.VisaApplication_Audit2;
                        List allApproves = VisaApplicationApproveService.GetHandleVisaApplicationApprovesByVisaApplicationId(VisaApplicationId, visaApplication.Edition == null ? 0 : Convert.ToInt32(visaApplication.Edition));
                        var count = allApproves.Where(p => p.ApproveDate != null && p.IsAgree != null && Convert.ToBoolean(p.IsAgree)).Count();//查询会签同意的
                        var fcount = allApproves.Where(p => p.ApproveDate != null && p.IsAgree != null && !Convert.ToBoolean(p.IsAgree)).Count();//查询会签不同意的
                        if ((count + fcount) == allApproves.Count)
                        {
                            if (count == allApproves.Count)
                            {
                                visaApplication.State = Const.VisaApplication_Audit3;
                                Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                                reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                                var users = BLL.UserService.GetUserListByProjectIdAndRoleId(this.CurrUser.LoginProjectId, BLL.Const.ControlEngineer);
                                if (users.Count() > 0)
                                {
                                    reApprove.ApproveMan = users[0].UserId;
                                }
                                reApprove.ApproveType = Const.VisaApplication_Audit3;
                                reApprove.Edition = edtion;
                                VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                            }
                            //有不同意意见,打回重新编制
                            if (fcount > 0)
                            {
                                visaApplication.State = Const.VisaApplication_ReCompile;
                                visaApplication.Edition = edtion + 1;
                                Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                                reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                                reApprove.ApproveMan = visaApplication1.CompileMan;
                                reApprove.ApproveType = Const.VisaApplication_ReCompile;
                                reApprove.Edition = edtion + 1;
                                VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                            }
                        }
                    }
                    else if (visaApplication1.State == BLL.Const.VisaApplication_Audit3)  //费控工程师审核
                    {
                        if (this.rblIsAgree.SelectedValue == "true")    //同意
                        {
                            visaApplication.State = this.drpHandleType.SelectedValue;
                            visaApplication.EstimatedCost = this.rblEstimatedCost.SelectedValue;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = this.drpHandleMan.SelectedValue;
                            reApprove.ApproveType = this.drpHandleType.SelectedValue;
                            reApprove.Edition = edtion;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                        else   //不同意
                        {
                            visaApplication.State = Const.VisaApplication_ReCompile;
                            visaApplication.Edition = edtion + 1;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = visaApplication1.CompileMan;
                            reApprove.ApproveType = Const.VisaApplication_ReCompile;
                            reApprove.Edition = edtion + 1;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                    }
                    else if (visaApplication1.State == BLL.Const.VisaApplication_Audit4)  //控制经理审核
                    {
                        if (this.rblIsAgree.SelectedValue == "true")    //同意
                        {
                            visaApplication.State = this.drpHandleType.SelectedValue;
                            visaApplication.EstimatedCost = this.rblEstimatedCost.SelectedValue;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = this.drpHandleMan.SelectedValue;
                            reApprove.ApproveType = this.drpHandleType.SelectedValue;
                            reApprove.Edition = edtion;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                        else   //不同意
                        {
                            visaApplication.State = Const.VisaApplication_ReCompile;
                            visaApplication.Edition = edtion + 1;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = visaApplication1.CompileMan;
                            reApprove.ApproveType = Const.VisaApplication_ReCompile;
                            reApprove.Edition = edtion + 1;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                    }
                    else if (visaApplication1.State == BLL.Const.VisaApplication_Audit5 || visaApplication1.State == BLL.Const.VisaApplication_Audit6 || visaApplication1.State == BLL.Const.VisaApplication_Audit7 || visaApplication1.State == BLL.Const.VisaApplication_Audit8)
                    {
                        if (this.rblIsAgree.SelectedValue == "true")    //同意
                        {
                            visaApplication.State = this.drpHandleType.SelectedValue;
                            if (this.trApprovalComments.Hidden == false)
                            {
                                visaApplication.ApprovalComments = this.rblApprovalComments.SelectedValue;
                            }
                            visaApplication.EstimatedCost = this.rblEstimatedCost.SelectedValue;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            if (!string.IsNullOrEmpty(this.drpHandleMan.SelectedValue))
                            {
                                reApprove.ApproveMan = this.drpHandleMan.SelectedValue;
                            }
                            reApprove.ApproveType = this.drpHandleType.SelectedValue;
                            reApprove.Edition = edtion;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                        else   //不同意
                        {
                            visaApplication.State = Const.VisaApplication_ReCompile;
                            visaApplication.Edition = edtion + 1;
                            Model.CQMS_VisaApplicationApprove reApprove = new Model.CQMS_VisaApplicationApprove();
                            reApprove.VisaApplicationId = visaApplication.VisaApplicationId;
                            reApprove.ApproveMan = visaApplication1.CompileMan;
                            reApprove.ApproveType = Const.VisaApplication_ReCompile;
                            reApprove.Edition = edtion + 1;
                            VisaApplicationApproveService.AddVisaApplicationApprove(reApprove);
                        }
                    }
                    VisaApplicationService.UpdateVisaApplication(visaApplication);
                }
                LogService.AddSys_Log(CurrUser, visaApplication.VisaApplicationCode, VisaApplicationId, Const.VisaApplicationMenuId, "修改工程签证申请/评审表");
            }
        }
        #endregion
        #region 添加时候的保存
        /// 
        /// 保存方案审查
        /// 
        /// 保存类型
        private void SaveVisaApplication(string saveType)
        {
            //if (tvHSE.CheckedNodes.Count == 0 || (tvHSE.CheckedNodes.Count > 0 && tvHSE.CheckedNodes[0].Value == "0"))
            //{
            //    ScriptManager.RegisterStartupScript(this, typeof(string), "_alert", "alert('请选择HSE会签人员!')", true);
            //    return;
            //}
            Model.CQMS_VisaApplication visaApplication = new Model.CQMS_VisaApplication();
            visaApplication.VisaApplicationCode = txtVisaApplicationCode.Text.Trim();
            visaApplication.SecretLevelId = this.drpSecretLevel.SelectedValue;
            visaApplication.ProjectId = CurrUser.LoginProjectId;
            visaApplication.UnitId = this.drpUnit.SelectedValue;
            visaApplication.ContractNo = this.txtContractNo.Text.Trim();
            visaApplication.TaskTheme = this.txtTaskTheme.Text.Trim();
            visaApplication.ApplicableProcedures = this.rblApplicableProcedures.SelectedValue;
            visaApplication.Reasons = this.txtReasons.Text.Trim();
            visaApplication.JobDescription = this.txtJobDescription.Text.Trim();
            int edtion = Convert.ToInt32(txtEdition.Text);
            visaApplication.Edition = edtion;
            if (!string.IsNullOrEmpty(txtCompileDate.Text.Trim()))
            {
                visaApplication.CompileDate = Convert.ToDateTime(txtCompileDate.Text.Trim());
            }
            if (saveType == "submit")
            {
                visaApplication.State = Const.VisaApplication_Audit1;
            }
            else
            {
                visaApplication.State = Const.VisaApplication_Compile;
            }
            if (!string.IsNullOrEmpty(HFVisaApplicationId.Text))
            {
                visaApplication.VisaApplicationId = HFVisaApplicationId.Text;
            }
            else
            {
                visaApplication.VisaApplicationId = SQLHelper.GetNewID(typeof(Model.CQMS_VisaApplication));
            }
            visaApplication.CompileMan = CurrUser.UserId;
            visaApplication.Edition = Convert.ToInt32(txtEdition.Text);
            if (!string.IsNullOrEmpty(HFVisaApplicationId.Text))
            {
                VisaApplicationService.UpdateVisaApplication(visaApplication);
            }
            else
            {
                VisaApplicationService.AddVisaApplication(visaApplication);
            }
            if (saveType == "submit")
            {
                Model.CQMS_VisaApplicationApprove approve1 = new Model.CQMS_VisaApplicationApprove();
                approve1.VisaApplicationId = visaApplication.VisaApplicationId;
                approve1.ApproveDate = DateTime.Now;
                approve1.ApproveMan = this.CurrUser.UserId;
                approve1.ApproveType = Const.VisaApplication_Compile;
                approve1.Edition = Convert.ToInt32(txtEdition.Text);
                VisaApplicationApproveService.AddVisaApplicationApprove(approve1);
                Model.CQMS_VisaApplicationApprove approve2 = new Model.CQMS_VisaApplicationApprove();
                approve2.VisaApplicationId = visaApplication.VisaApplicationId;
                approve2.ApproveMan = this.drpHandleMan.SelectedValue;
                approve2.ApproveType = Const.VisaApplication_Audit1;
                approve2.Edition = Convert.ToInt32(txtEdition.Text);
                VisaApplicationApproveService.AddVisaApplicationApprove(approve2);
            }
            else
            {
                Model.CQMS_VisaApplicationApprove approve1 = new Model.CQMS_VisaApplicationApprove();
                approve1.VisaApplicationId = visaApplication.VisaApplicationId;
                approve1.ApproveMan = this.CurrUser.UserId;
                approve1.ApproveType = Const.VisaApplication_Compile;
                approve1.Edition = Convert.ToInt32(txtEdition.Text);
                VisaApplicationApproveService.AddVisaApplicationApprove(approve1);
            }
            LogService.AddSys_Log(CurrUser, visaApplication.VisaApplicationCode, VisaApplicationId, Const.VisaApplicationMenuId, "添加工程签证申请/评审表");
            //}
            //提交
            //if (saveType == "submit")
            //{
            //    countersign(visaApplication.VisaApplicationId);
            //}
            //LogService.AddSys_Log(CurrUser, visaApplication.VisaApplicationCode, VisaApplicationId, Const.VisaApplicationMenuId, "编制工程签证申请/评审表");
        }
        #endregion
        /// 
        /// 删除未选择的代办记录
        /// 
        /// 
        private void delSolutionApprove(string visaApplicationId, string man, string signType)
        {
            var count = VisaApplicationApproveService.getListSolutionApproveCount(visaApplicationId, man, signType);
            if (count > 0)
            {
                VisaApplicationApproveService.delSolutionApprove(visaApplicationId, man);
            }
        }
        /// 
        /// 会签
        /// 
        private void countersign(string visaApplicationId)
        {
            var visaApplication = VisaApplicationService.GetVisaApplicationByVisaApplicationId(VisaApplicationId);
            if (trOne.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trOne.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "XM";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "XM");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "XM");
                    }
                }
            }
            if (trTwo.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trTwo.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "SJ";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "SJ");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "SJ");
                    }
                }
            }
            if (trThree.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trThree.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "CG";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "CG");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "CG");
                    }
                }
            }
            if (trFour.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trFour.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "SG";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "SG");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "SG");
                    }
                }
            }
            if (trFive.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trFive.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "SC";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "SC");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "SC");
                    }
                }
            }
            if (trSixe.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trSixe.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "YZ";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "YZ");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "YZ");
                    }
                }
            }
            if (trSeven.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trSeven.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "FB";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "FB");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "FB");
                    }
                }
            }
            if (trEight.Nodes[0].Nodes.Count > 0)
            {
                foreach (TreeNode tn in trEight.Nodes[0].Nodes)
                {
                    if (tn.Checked)
                    {
                        Model.CQMS_VisaApplicationApprove approve = new Model.CQMS_VisaApplicationApprove();
                        approve.VisaApplicationId = visaApplicationId;
                        approve.ApproveMan = tn.NodeID;
                        approve.ApproveType = Const.VisaApplication_Audit2;
                        approve.SignType = "QT";
                        int edtion = Convert.ToInt32(txtEdition.Text);
                        //if (visaApplication != null)
                        //{
                        //    edtion++;
                        //}
                        approve.Edition = edtion;
                        delSolutionApprove(visaApplicationId, tn.NodeID, "QT");
                        VisaApplicationApproveService.AddVisaApplicationApprove(approve);
                        APICommonService.SendSubscribeMessage(approve.ApproveMan, "工程签证申请/评审表待办理", this.CurrUser.UserName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
                    }
                    else
                    {
                        delSolutionApprove(visaApplicationId, tn.NodeID, "QT");
                    }
                }
            }
        }
        #region 动态加载角色树
        /// 
        /// 设置树的节点选择
        /// 
        /// 
        /// 
        private void SetCheck(Tree tree, List userIds)
        {
            foreach (TreeNode tn in tree.Nodes[0].Nodes)
            {
                if (userIds.Contains(tn.NodeID))
                {
                    tn.Checked = true;
                }
            }
        }
        /// 加载角色树:动态加载
        /// 
        private void BindXMRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "项目管理";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trOne.Nodes.Add(rootNode);
            trOne.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                               on x.UserId equals p.UserId
                               where p.RoleId.Contains(Const.ProjectManagement2)
                               && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               select x;
                //var ss = LINQToDataTable(userList);
                foreach (var u in userList)
                {
                    TreeNode Node = new TreeNode();
                    Node.Text = u.UserName;
                    Node.NodeID = u.UserId;
                    Node.EnableCheckEvent = true;
                    rootNode.Nodes.Add(Node);
                }
            }
        }
        private void BindSJRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "设计";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trTwo.Nodes.Add(rootNode);
            trTwo.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                               on x.UserId equals p.UserId
                               where (p.RoleId.Contains(Const.DesignManager) || p.RoleId.Contains(Const.DesignAssistantManager))
                               && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               orderby x.UserCode
                               select x;
                foreach (var u in userList)
                {
                    TreeNode roleNode = new TreeNode();
                    roleNode.Text = u.UserName;
                    roleNode.NodeID = u.UserId;
                    rootNode.Nodes.Add(roleNode);
                }
            }
        }
        /// 
        /// 判断是否有选择
        /// 
        /// 
        /// 
        public Boolean nodesCheckd(Tree node)
        {
            bool res = false;
            if (node.Nodes[0].Nodes.Count > 0)
            {
                foreach (var item in node.Nodes[0].Nodes)
                {
                    if (item.Checked)
                    {
                        res = true;
                        break;
                    }
                }
            }
            return res;
        }
        private void BindCGRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "采购";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trThree.Nodes.Add(rootNode);
            trThree.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                               on x.UserId equals p.UserId
                               where (p.RoleId.Contains(Const.PurchasingManager) || p.RoleId.Contains(Const.PurchasingAssistantManager))
                               && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               orderby x.UserCode
                               select x;
                foreach (var u in userList)
                {
                    TreeNode roleNode = new TreeNode();
                    roleNode.Text = u.UserName;
                    roleNode.NodeID = u.UserId;
                    rootNode.Nodes.Add(roleNode);
                }
            }
        }
        private void BindSGRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "施工";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trFour.Nodes.Add(rootNode);
            trFour.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                               on x.UserId equals p.UserId
                               where (p.RoleId.Contains(Const.SGEngineer) || p.RoleId.Contains(Const.QAManager) || p.RoleId.Contains(Const.ConstructionManager) || p.RoleId.Contains(Const.ConstructionAssistantManager))
                               && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               orderby x.UserCode
                               select x;
                foreach (var u in userList)
                {
                    TreeNode roleNode = new TreeNode();
                    roleNode.Text = u.UserName;
                    roleNode.NodeID = u.UserId;
                    rootNode.Nodes.Add(roleNode);
                }
            }
        }
        private void BindSCRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "试车";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trFive.Nodes.Add(rootNode);
            trFive.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                              on x.UserId equals p.UserId
                               where (p.RoleId.Contains(Const.DriveManager) || p.RoleId.Contains(Const.DriveAssistantManager) || p.RoleId.Contains(Const.DriveEngineer))
                               && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               orderby x.UserCode
                               select x;
                foreach (var u in userList)
                {
                    TreeNode roleNode = new TreeNode();
                    roleNode.Text = u.UserName;
                    roleNode.NodeID = u.UserId;
                    rootNode.Nodes.Add(roleNode);
                }
            }
        }
        private void BindYZRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "业主";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trSixe.Nodes.Add(rootNode);
            trSixe.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                              on x.UserId equals p.UserId
                               where y.UnitType == Const.ProjectUnitType_4 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               orderby x.UserCode
                               select x;
                foreach (var u in userList)
                {
                    TreeNode roleNode = new TreeNode();
                    roleNode.Text = u.UserName;
                    roleNode.NodeID = u.UserId;
                    rootNode.Nodes.Add(roleNode);
                }
            }
        }
        private void BindFBRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "分包商";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trSeven.Nodes.Add(rootNode);
            trSeven.EnableCheckBox = true;
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                var userList = from x in db.Sys_User
                               join y in db.Project_ProjectUnit
                               on x.UnitId equals y.UnitId
                               join p in db.Project_ProjectUser
                              on x.UserId equals p.UserId
                               where y.UnitId == this.drpUnit.SelectedValue && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                               orderby x.UserCode
                               select x;
                foreach (var u in userList)
                {
                    TreeNode roleNode = new TreeNode();
                    roleNode.Text = u.UserName;
                    roleNode.NodeID = u.UserId;
                    rootNode.Nodes.Add(roleNode);
                }
            }
        }
        private void BindQTRole()
        {
            TreeNode rootNode = new TreeNode();//定义根节点
            rootNode.Text = "其他";
            rootNode.NodeID = "0";
            rootNode.Expanded = true;
            rootNode.EnableCheckEvent = true;
            trEight.Nodes.Add(rootNode);
            trEight.EnableCheckBox = true;
            //using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            //{
            //    var userList = from x in db.Sys_User
            //                   join y in db.Project_ProjectUnit
            //                   on x.UnitId equals y.UnitId
            //                   join p in db.Project_ProjectUser
            //                  on x.UserId equals p.UserId
            //                   where y.UnitType == Const.ProjectUnitType_4 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
            //                   orderby x.UserCode
            //                   select x;
            //    foreach (var u in userList)
            //    {
            //        TreeNode roleNode = new TreeNode();
            //        roleNode.Text = u.UserName;
            //        roleNode.NodeID = u.UserId;
            //        rootNode.Nodes.Add(roleNode);
            //    }
            //}
        }
        #endregion
        #region 树结构的全选
        protected void trOne_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trOne.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trOne.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trTwo_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trTwo.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trTwo.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trThree_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trThree.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trThree.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trFour_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trFour.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trFour.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trFive_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trFive.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trFive.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trSixe_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trSixe.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trSixe.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trSeven_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trSeven.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trSeven.UncheckAllNodes(e.Node.Nodes);
            }
        }
        protected void trEight_NodeCheck(object sender, TreeCheckEventArgs e)
        {
            if (e.Checked)
            {
                trEight.CheckAllNodes(e.Node.Nodes);
            }
            else
            {
                trEight.UncheckAllNodes(e.Node.Nodes);
            }
        }
        #endregion
        protected void imgBtnFile_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(HFVisaApplicationId.Text))   //新增记录
            {
                HFVisaApplicationId.Text = SQLHelper.GetNewID(typeof(Model.CQMS_VisaApplication));
            }
            PageContext.RegisterStartupScript(WindowAtt.GetShowReference(
            String.Format("../../AttachFile/webuploader.aspx?type={0}&toKeyId={1}&path=FileUpload/VisaApplication&menuId={2}",
            ContactImg, HFVisaApplicationId.Text, Const.VisaApplicationMenuId)));
        }
        protected void btnapprove_Click(object sender, EventArgs e)
        {
            //HFVisaApplicationId.Text
            var approve = VisaApplicationApproveService.GetVisaApplicationApproveByApproveMan(HFVisaApplicationId.Text, CurrUser.UserId);
            if (approve != null)
            {
                var approveId = approve.VisaApplicationApproveId;
                PageContext.RegisterStartupScript(WindowAtt.GetShowReference(
                String.Format("../../AttachFile/webuploader.aspx?type={0}&toKeyId={1}&path=FileUpload/VisaApplication&menuId={2}",
                0, approveId, Const.VisaApplicationMenuId)));
            }
        }
        protected void gvApprove_RowCommand(object sender, GridCommandEventArgs e)
        {
            object[] keys = gvApprove.DataKeys[e.RowIndex];
            string fileId = string.Empty;
            if (keys == null)
            {
                return;
            }
            else
            {
                fileId = keys[0].ToString();
            }
            PageContext.RegisterStartupScript(WindowAtt.GetShowReference(
                 String.Format("../../AttachFile/webuploader.aspx?type={0}&toKeyId={1}&path=FileUpload/VisaApplication&menuId={2}",
                 -1, fileId, Const.VisaApplicationMenuId)));
        }
        protected void drpHandleType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Complete) //审批完成
            {
                this.trApprovalComments.Hidden = false;
                this.drpHandleMan.Enabled = false;
                this.drpHandleMan.Required = false;
                this.drpHandleMan.Items.Clear();
            }
            else
            {
                this.trApprovalComments.Hidden = true;
                this.drpHandleMan.Enabled = true;
                this.drpHandleMan.Required = true;
                if(this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_ReCompile)
                {
                    Model.CQMS_VisaApplicationApprove approve = BLL.VisaApplicationApproveService.GetCompile(this.VisaApplicationId);
                    if (approve != null)
                    {
                        List list = new List();
                        Model.Sys_User compileMan = BLL.UserService.GetUserByUserId(approve.ApproveMan);
                        list.Add(compileMan);
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        this.drpHandleMan.DataSource = list;
                        this.drpHandleMan.DataBind();
                    }
                }
                else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit4)
                {
                    var userList = from x in Funs.DB.Sys_User
                                   join y in Funs.DB.Project_ProjectUnit
                                   on x.UnitId equals y.UnitId
                                   join p in Funs.DB.Project_ProjectUser
                                   on x.UserId equals p.UserId
                                   where p.RoleId.Contains(Const.ControlManager)
                                   && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                                   select x;
                    drpHandleMan.DataValueField = "UserId";
                    drpHandleMan.DataTextField = "UserName";
                    drpHandleMan.DataSource = userList;
                    drpHandleMan.DataBind();
                }
                else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit5)
                {
                    UserService.InitUserProjectIdUnitTypeDropDownList(drpHandleMan, CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_1, false);
                }
                else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit6)
                {
                    var userList = from x in Funs.DB.Sys_User
                                   join y in Funs.DB.Project_ProjectUnit
                                   on x.UnitId equals y.UnitId
                                   join p in Funs.DB.Project_ProjectUser
                                   on x.UserId equals p.UserId
                                   where p.RoleId.Contains(Const.ProjectManager)
                                   && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                                   select x;
                    drpHandleMan.DataValueField = "UserId";
                    drpHandleMan.DataTextField = "UserName";
                    drpHandleMan.DataSource = userList;
                    drpHandleMan.DataBind();
                }
                else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit7 || this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit8)
                {
                    var userList = from x in Funs.DB.Sys_User
                                   where x.UnitId == BLL.Const.UnitId_CD && x.IsOffice == true
                                   select x;
                    drpHandleMan.DataValueField = "UserId";
                    drpHandleMan.DataTextField = "UserName";
                    drpHandleMan.DataSource = userList;
                    drpHandleMan.DataBind();
                }
            }
        }
        protected void rblIsAgree_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.rblIsAgree.SelectedValue == "false")
            {
                this.drpHandleType.SelectedValue = BLL.Const.VisaApplication_ReCompile;
                this.drpHandleMan.Enabled = true;
                this.drpHandleMan.Required = true;
                Model.CQMS_VisaApplicationApprove approve = BLL.VisaApplicationApproveService.GetCompile(this.VisaApplicationId);
                if (approve != null)
                {
                    List list = new List();
                    Model.Sys_User compileMan = BLL.UserService.GetUserByUserId(approve.ApproveMan);
                    list.Add(compileMan);
                    drpHandleMan.DataValueField = "UserId";
                    drpHandleMan.DataTextField = "UserName";
                    this.drpHandleMan.DataSource = list;
                    this.drpHandleMan.DataBind();
                }
            }
            else
            {
                this.drpHandleType.SelectedIndex = 0;
                if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Complete)
                {
                    this.drpHandleMan.Enabled = false;
                    this.drpHandleMan.Required = false;
                    this.drpHandleMan.Items.Clear();
                }
                else
                {
                    if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit4)
                    {
                        var userList = from x in Funs.DB.Sys_User
                                       join y in Funs.DB.Project_ProjectUnit
                                       on x.UnitId equals y.UnitId
                                       join p in Funs.DB.Project_ProjectUser
                                       on x.UserId equals p.UserId
                                       where p.RoleId.Contains(Const.ControlManager)
                                       && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                    else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit5)
                    {
                        UserService.InitUserProjectIdUnitTypeDropDownList(drpHandleMan, CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_1, false);
                    }
                    else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit6)
                    {
                        var userList = from x in Funs.DB.Sys_User
                                       join y in Funs.DB.Project_ProjectUnit
                                       on x.UnitId equals y.UnitId
                                       join p in Funs.DB.Project_ProjectUser
                                       on x.UserId equals p.UserId
                                       where p.RoleId.Contains(Const.ProjectManager)
                                       && y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                    else if (this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit7 || this.drpHandleType.SelectedValue == BLL.Const.VisaApplication_Audit8)
                    {
                        var userList = from x in Funs.DB.Sys_User
                                       where x.UnitId == BLL.Const.UnitId_CD && x.IsOffice == true
                                       select x;
                        drpHandleMan.DataValueField = "UserId";
                        drpHandleMan.DataTextField = "UserName";
                        drpHandleMan.DataSource = userList;
                        drpHandleMan.DataBind();
                    }
                }
            }
        }
    }
}