private void RptBind()
        {
            String _strWhere = " Period_id=" + period_id;
            String _order    = " order by Fl_Province asc";
            var    bll       = new BLL.CCOM.Fractional_line();

            this.rptList.DataSource = bll.GetList(_strWhere + _order);
            this.rptList.DataBind();
        }
 protected bool DoUpdate(Model.CCOM.Fractional_line Fl)
 {
     try
     {
         BLL.CCOM.Fractional_line Bfl = new BLL.CCOM.Fractional_line();
         Bfl.Update(Fl);
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
 protected bool DoUpdate(Model.CCOM.Fractional_line Fl)
 {
     try
     {
         BLL.CCOM.Fractional_line Bfl = new BLL.CCOM.Fractional_line();
         Bfl.Update(Fl);
     }
     catch (Exception ex)
     {
         JscriptMsg("添加出错,请重新提交", "", "Error");
         return(false);
     }
     return(true);
 }
        private void RptBind1(int fi_id)
        {
            var Fra_model = new BLL.CCOM.Fractional_line().GetModel(fi_id);

            this.txtYiBenWen.Text  = Fra_model.WenKeYiBen == 0 ? "" : Fra_model.WenKeYiBen.ToString();
            this.txtYiBenLi.Text   = Fra_model.LiKeYiBen == 0 ? "" : Fra_model.LiKeYiBen.ToString();
            this.txtErBenWen.Text  = Fra_model.WenKeErBen == 0 ? "" : Fra_model.WenKeErBen.ToString();
            this.txtErBenLi.Text   = Fra_model.LiKeErBen == 0 ? "" : Fra_model.LiKeErBen.ToString();
            this.txtSanBenWen.Text = Fra_model.WenKeSanBen == 0 ? "" : Fra_model.WenKeSanBen.ToString();
            this.txtSanBenLi.Text  = Fra_model.LiKeSanBen == 0 ? "" : Fra_model.LiKeSanBen.ToString();
            this.txtYiShuWen.Text  = Fra_model.WenKeYiShuXian == 0 ? "" : Fra_model.WenKeYiShuXian.ToString();
            this.txtYiShuLi.Text   = Fra_model.LiKeYiShuXian == 0 ? "" : Fra_model.LiKeYiShuXian.ToString();
            this.txtManWen.Text    = Fra_model.WenKeZongFen == 0 ? "" : Fra_model.WenKeZongFen.ToString();
            this.txtManLi.Text     = Fra_model.LiKeZongFen == 0 ? "" : Fra_model.LiKeZongFen.ToString();

            this.ddlPro_ID.Items.FindByValue(Fra_model.Fl_Province.ToString()).Selected = true;
            this.ddlPro_ID.Enabled = false;
        }
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            string result = "";

            if (this.txtFraUpload.PostedFile.FileName == "")
            {
                JscriptMsg("请选择上传文件", "", "Error");
                return;
            }
            DataSet ds   = new DataSet();
            string  path = "/upload/excel/";

            #region 解决360获取绝对路径导致出错的问题
            string   AbsolutePath = this.txtFraUpload.PostedFile.FileName;
            string[] pathList     = new string[] { };

            pathList     = AbsolutePath.Split('\\');
            AbsolutePath = pathList[pathList.Length - 1];
            #endregion

            string fileName = DateTime.Now.ToFileTime() + "_" + AbsolutePath;
            string FexName  = fileName.Substring(fileName.LastIndexOf(".") + 1);
            if (FexName != "xls" && FexName != "xlsx")
            {
                JscriptMsg("请上传Excel文件", "", "Error");
                return;
            }

            string filePath = Server.MapPath(path + fileName);

            this.txtFraUpload.SaveAs(filePath);
            int success = 0, error = 0;
            try
            {
                BLL.CCOM.Province PBll = new BLL.CCOM.Province();

                var excel = new Common.ExcelToData();
                ds = excel.GetExcelData(filePath);

                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    string _ProName = ds.Tables[0].Rows[i]["省份"].ToString().Trim();

                    var p_model = PBll.GetModel("Province_name='" + _ProName + "'");
                    if (p_model == null)
                    {
                        result += "×第" + (i + 1).ToString() + "行添加失败,该省份‘" + ds.Tables[0].Rows[i]["省份"].ToString().Trim() + "’不存在,请按照模板格式下拉选择;<br/>";
                        error++;
                        continue;
                    }

                    var model  = new Model.CCOM.Fractional_line();
                    var _model = new Model.CCOM.Fractional_line();

                    int Pro_id = p_model.Province_id;
                    model = new BLL.CCOM.Fractional_line().GetModel(" Period_id = " + period_id + " and Fl_Province=" + Pro_id);

                    _model.WenKeYiBen     = ((ds.Tables[0].Rows[i]["文科一本线"].ToString().Trim() == "") ? 0 : (Convert.ToDecimal(ds.Tables[0].Rows[i]["文科一本线"].ToString().Trim())));
                    _model.LiKeYiBen      = (ds.Tables[0].Rows[i]["理科一本线"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["理科一本线"].ToString().Trim()));
                    _model.WenKeErBen     = (ds.Tables[0].Rows[i]["文科二本线"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["文科二本线"].ToString().Trim()));
                    _model.LiKeErBen      = (ds.Tables[0].Rows[i]["理科二本线"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["理科二本线"].ToString().Trim()));
                    _model.WenKeSanBen    = (ds.Tables[0].Rows[i]["文科三本线"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["文科三本线"].ToString().Trim()));
                    _model.LiKeSanBen     = (ds.Tables[0].Rows[i]["理科三本线"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["理科三本线"].ToString().Trim()));
                    _model.WenKeYiShuXian = (ds.Tables[0].Rows[i]["艺术类最低控制线(文科)"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["艺术类最低控制线(文科)"].ToString().Trim()));
                    _model.LiKeYiShuXian  = (ds.Tables[0].Rows[i]["艺术类最低控制线(理科)"].ToString().Trim() == "" ? 0 : Convert.ToDecimal(ds.Tables[0].Rows[i]["艺术类最低控制线(理科)"].ToString().Trim()));
                    if (ds.Tables[0].Rows[i]["文科满分"].ToString().Trim() == "")
                    {
                        result += "×第" + (i + 1).ToString() + "行添加失败,文科满分不能为空;<br/>";
                        error++;
                        continue;
                    }
                    _model.WenKeZongFen = Convert.ToDecimal(ds.Tables[0].Rows[i]["文科满分"].ToString().Trim());
                    if (ds.Tables[0].Rows[i]["理科满分"].ToString().Trim() == "")
                    {
                        result += "×第" + (i + 1).ToString() + "行添加失败,理科满分不能为空;<br/>";
                        error++;
                        continue;
                    }
                    _model.LiKeZongFen = Convert.ToDecimal(ds.Tables[0].Rows[i]["理科满分"].ToString().Trim());

                    bool isOK = false;
                    if (model != null)
                    {
                        _model.Fl_id       = model.Fl_id;
                        _model.Period_id   = model.Period_id;
                        _model.Fl_Province = model.Fl_Province;
                        _model.Fl_addtime  = model.Fl_addtime;
                        isOK = DoUpdate(_model);
                    }
                    else
                    {
                        _model.Fl_Province = Pro_id;
                        _model.Period_id   = period_id;
                        _model.Fl_addtime  = DateTime.Now;
                        isOK = DoAdd(_model);
                    }

                    if (isOK)
                    {
                        success++;
                    }
                    else
                    {
                        result += "×第" + (i + 1).ToString() + "行‘" + ds.Tables[0].Rows[i]["省份"].ToString().Trim() + "’信息异常,导入失败。<br/>";
                        error++;
                    }
                }
                new Calculation().calculateFenShuXian();
            }
            catch (Exception ex)
            {
                ILog LOGGER = LogManager.GetLogger("quanquan");
                LOGGER.Debug("导入分数线异常" + ex.Message, ex);
                result = "导入分数线异常,请联系客服";
            }

            string divinfo = "<div class=\"alert alert-block alert-info fade in\">";
            divinfo += "<button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>";
            divinfo += "<h4 class=\"alert-heading\">导入结果</h4>";
            divinfo += "<p>";
            if (success != ds.Tables[0].DefaultView.Count)
            {
                divinfo += "部分导入成功,您可以按照提示修改Excel并重新提交<br>";
            }
            else
            {
                divinfo += "全部导入成功,请您进入下一步确认导入信息<br>";
            }
            divinfo += "*共有" + ds.Tables[0].DefaultView.Count + "条数据,成功" + success + "条,失败" + error + "条;<br/>";
            if (result != "")
            {
                divinfo += "详细信息如下:<br><font color='red'>" + result;
            }
            divinfo           += "</font></p>";
            divinfo           += "</div>";
            this.lblError.Text = divinfo;

            //显示下一步
            if (success > 0)
            {
                this.btnSubmit.Visible = true;
            }
            //删除上传的文件
            File.Delete(filePath);
        }
        /// <summary>
        /// 如果某省市没有设定分数线,那么用北京的分数线进行折算
        /// </summary>
        /// <returns>成功返回true</returns>
        public bool calculateFenShuXian()
        {
            var bll     = new BLL.CCOM.Fractional_line();
            var modelBJ = bll.GetModelList("Fl_Province in (select Province_id from Province where Province_name = '北京市') and Period_id = " + period_id);

            if (modelBJ != null && modelBJ.Count > 0)
            {
                var BeiJingXian  = modelBJ[0];
                var provinceList = new BLL.CCOM.Province().GetModelList("");
                foreach (var province in provinceList)
                {
                    var model = bll.GetModelList("Fl_Province = " + province.Province_id + " and Period_id = " + period_id);
                    if (model != null && model.Count > 0)
                    {
                        ///先算三本线
                        //理科
                        if (model[0].LiKeSanBen.ToString() == "0")
                        {
                            if (model[0].LiKeErBen.ToString() != "0")
                            {
                                model[0].LiKeSanBen = BeiJingXian.LiKeSanBen * model[0].LiKeErBen / BeiJingXian.LiKeErBen;
                            }
                            else if (model[0].LiKeYiBen.ToString() != "0")
                            {
                                model[0].LiKeSanBen = BeiJingXian.LiKeSanBen * model[0].LiKeYiBen / BeiJingXian.LiKeYiBen;
                            }
                        }
                        //文科
                        if (model[0].WenKeSanBen.ToString() == "0")
                        {
                            if (model[0].WenKeErBen.ToString() != "0")
                            {
                                model[0].WenKeSanBen = BeiJingXian.WenKeSanBen * model[0].WenKeErBen / BeiJingXian.WenKeErBen;
                            }
                            else if (model[0].WenKeYiBen.ToString() != "0")
                            {
                                model[0].WenKeSanBen = BeiJingXian.WenKeSanBen * model[0].WenKeYiBen / BeiJingXian.WenKeYiBen;
                            }
                        }

                        ///再算艺术线
                        //理科
                        if (model[0].LiKeYiShuXian.ToString() == "0")
                        {
                            if (model[0].LiKeSanBen.ToString() != "0")
                            {
                                model[0].LiKeYiShuXian = BeiJingXian.LiKeYiShuXian * model[0].LiKeSanBen / BeiJingXian.LiKeSanBen;
                            }
                        }
                        //文科
                        if (model[0].WenKeYiShuXian.ToString() == "0")
                        {
                            if (model[0].WenKeSanBen.ToString() != "0")
                            {
                                model[0].WenKeYiShuXian = BeiJingXian.WenKeYiShuXian * model[0].WenKeSanBen / BeiJingXian.WenKeSanBen;
                            }
                        }

                        bll.Update(model[0]);
                    }
                }
            }
            return(true);
        }
        /// <summary>
        /// 计算成绩,计算这个App_CCOM_TestScores表中 ShiJian是当前年份的记录
        /// 要求该表中以下字段不为空:UserID、SchoolUserID、WenLi、ZongFen、ZhuanYeMingCheng、ZhuanYeFenShu、ShiJian,SchoolUser_HomeProvince
        /// 最终计算的出WenKaoGuoXian、WenKeFenShu、以及ZuiZhongFenShu
        /// 计算规则:先判断其文考成绩是否过线(根据各省分数线以及不同专业的那个要求);而后将理科考生的成绩按照公式转化为文科成绩,文科考生不做处理;
        /// 紧接着将文科成绩按照公式转化为百分制;最后文科成绩和艺术专业成绩按照各50%计算出最终成绩。
        /// </summary>
        /// <returns></returns>
        public bool Calculate(string major_id)
        {
            //calculateFenShuXian();
            try
            {
                BLL.CCOM.View_TotalScore bll = new BLL.CCOM.View_TotalScore();
                var userList = bll.GetModelList(" Period_id=" + period_id + " AND Agency_id=" + major_id); //本年度的学生
                foreach (var user in userList)
                {
                    var userInfo = new BLL.CCOM.User_property().GetModel(" User_id=" + user.User_id);
                    var userCEE  = new BLL.CCOM.Examination_CEE_score().GetModel(" User_id=" + user.User_id + " AND Period_id=" + period_id);
                    var model    = new BLL.CCOM.Transcript().GetModel(" User_id=" + user.User_id + " AND Period_id=" + period_id);
                    if (userInfo != null)
                    {
                        var fenshuxian = new BLL.CCOM.Fractional_line().GetModelList("Fl_Province = " + userInfo.UP_province + " and Period_id = " + period_id);
                        if (fenshuxian == null || fenshuxian.Count == 0)
                        {
                            continue;
                        }

                        int WenLi = (int)(userCEE.CEE_type);
                        ///判断是否过线
                        string zhuanye    = new BLL.CCOM.Agency().GetModel("Agency_id=" + major_id).Agency_name;
                        var    guoxianfen = guoxianFen(zhuanye, WenLi, fenshuxian[0]);
                        if (guoxianfen == 0)
                        {
                            continue;
                        }

                        bool passline = false;
                        if (guoxianfen <= Convert.ToDecimal(userCEE.CEE_score))
                        {
                            passline = true;
                        }
                        else
                        {
                            passline = false;
                        }

                        decimal wenkaofenshu = (decimal)userCEE.CEE_score;
                        if (WenLi == 2)  //理科
                        {
                            wenkaofenshu = wenkaofenshu / (decimal)fenshuxian[0].LiKeSanBen * (decimal)fenshuxian[0].WenKeSanBen;
                        }
                        wenkaofenshu = wenkaofenshu / (decimal)fenshuxian[0].WenKeZongFen * 100;  //转换为百分制
                        user.Transcript_CEE_convert_score = wenkaofenshu;
                        user.Transcript_CEE_score         = userCEE.CEE_score;

                        decimal score = 0;
                        if (zhuanye == "音乐学" || zhuanye == "音乐艺术管理" || zhuanye == "音乐治疗" || zhuanye == "音乐教育" || zhuanye == "音乐教育(协作计划)")
                        {
                            score = wenkaofenshu * (decimal)0.5 + (decimal)user.Transcript_AEE_score * (decimal)0.5;
                        }
                        else
                        {
                            score = (decimal)user.Transcript_AEE_score;
                        }

                        model.Transcript_CEE_score         = userCEE.CEE_score;
                        model.Transcript_CEE_convert_score = wenkaofenshu;
                        model.Transcript_passline          = passline;
                        model.Transcript_score             = score;
                    }
                    new BLL.CCOM.Transcript().Update(model);
                }
            }
            catch
            {
            }
            return(true);
        }
        /*
         * protected void btnCalculation_Click(object sender, EventArgs e)
         * {
         *  try
         *  {
         *      new Calculation().calculateFenShuXian();
         *      JscriptMsg("计算分数线成功", "FractionallineList.aspx?fun_id=" + MyRequest.GetString("fun_id"), "Success");
         *  }
         *  catch
         *  {
         *      JscriptMsg("计算分数线失败,请重新尝试", "FractionallineList.aspx?fun_id=" + MyRequest.GetString("fun_id"), "Error");
         *  }
         * }
         * */
        protected void exportexcel_ServerClick(object sender, EventArgs e)
        {
            String _strWhere = " Period_id=" + period_id;
            String _order    = " order by Fl_Province asc";

            try
            {
                BLL.CCOM.Fractional_line bll = new BLL.CCOM.Fractional_line();

                List <Model.CCOM.Fractional_line> modelList = bll.GetModelList(_strWhere + _order);

                DataSet ds = new DataSet();
                ds.Tables.Clear();

                DataTable  dt = ds.Tables.Add("Sheet1");
                DataRow    dr;
                DataColumn column;

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "序号";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "省份";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "文科一本线";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "理科一本线";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "文科二本线";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "理科二本线";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "文科三本线";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "理科三本线";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "艺术类最低控制线(文科)";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "艺术类最低控制线(理科)";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "文科满分";
                ds.Tables["Sheet1"].Columns.Add(column);

                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = "理科满分";
                ds.Tables["Sheet1"].Columns.Add(column);

                int count = modelList.Count;
                for (int i = 0, num = 1; i < count; i++, num++)
                {
                    dr                 = ds.Tables["Sheet1"].NewRow();
                    dr["序号"]           = num.ToString();
                    dr["省份"]           = GetProvinceName(modelList[i].Fl_Province);
                    dr["文科一本线"]        = ((decimal)modelList[i].WenKeYiBen).ToString("F2");
                    dr["理科一本线"]        = ((decimal)modelList[i].LiKeYiBen).ToString("F2");
                    dr["文科二本线"]        = ((decimal)modelList[i].WenKeErBen).ToString("F2");
                    dr["理科二本线"]        = ((decimal)modelList[i].LiKeErBen).ToString("F2");
                    dr["文科三本线"]        = ((decimal)modelList[i].WenKeSanBen).ToString("F2");
                    dr["理科三本线"]        = ((decimal)modelList[i].LiKeSanBen).ToString("F2");
                    dr["艺术类最低控制线(文科)"] = ((decimal)modelList[i].WenKeYiShuXian).ToString("F2");
                    dr["艺术类最低控制线(理科)"] = ((decimal)modelList[i].LiKeYiShuXian).ToString("F2");
                    dr["文科满分"]         = ((decimal)modelList[i].WenKeZongFen).ToString("F2");
                    dr["理科满分"]         = ((decimal)modelList[i].LiKeZongFen).ToString("F2");

                    ds.Tables["Sheet1"].Rows.Add(dr);
                }

                DataToExcel.ExportToExcel(ds, Server.MapPath("/upload/excel/"), "高考分数线_" + DateTime.Now.ToFileTime().ToString() + ".xlsx", this.Page);
            }
            catch
            {
                JscriptMsg("获取高考分数线出错", "", "Error");
            }
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            if (this.ddlPro_ID.SelectedItem.Value == "#")
            {
                JscriptMsg("请选择省份!", "", "Error");
                return;
            }
            if (this.txtManWen.Text.ToString().Trim() == "" || this.txtManLi.Text.ToString().Trim() == "")
            {
                JscriptMsg("文理科满分不能为空!", "", "Error");
                return;
            }
            var model  = new Model.CCOM.Fractional_line();
            var _model = new Model.CCOM.Fractional_line();

            int Pro_id = Convert.ToInt32(this.ddlPro_ID.SelectedItem.Value);

            model = new BLL.CCOM.Fractional_line().GetModel(" Period_id = " + period_id + " and Fl_Province=" + Pro_id);

            _model.WenKeYiBen     = ((this.txtYiBenWen.Text.ToString() == "") ? 0 : (Convert.ToDecimal(this.txtYiBenWen.Text.ToString().Trim())));
            _model.LiKeYiBen      = (this.txtYiBenLi.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtYiBenLi.Text.ToString().Trim()));
            _model.WenKeErBen     = (this.txtErBenWen.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtErBenWen.Text.ToString().Trim()));
            _model.LiKeErBen      = (this.txtErBenLi.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtErBenLi.Text.ToString().Trim()));
            _model.WenKeSanBen    = (this.txtSanBenWen.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtSanBenWen.Text.ToString().Trim()));
            _model.LiKeSanBen     = (this.txtSanBenLi.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtSanBenLi.Text.ToString().Trim()));
            _model.WenKeYiShuXian = (this.txtYiShuWen.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtYiShuWen.Text.ToString().Trim()));
            _model.LiKeYiShuXian  = (this.txtYiShuLi.Text.ToString() == "" ? 0 : Convert.ToDecimal(this.txtYiShuLi.Text.ToString().Trim()));
            _model.WenKeZongFen   = Convert.ToDecimal(this.txtManWen.Text.ToString().Trim());
            _model.LiKeZongFen    = Convert.ToDecimal(this.txtManLi.Text.ToString().Trim());

            bool isOK = false;

            if (model != null)
            {
                _model.Fl_id       = model.Fl_id;
                _model.Period_id   = model.Period_id;
                _model.Fl_Province = model.Fl_Province;
                _model.Fl_addtime  = model.Fl_addtime;
                isOK = DoUpdate(_model);
            }
            else
            {
                _model.Fl_Province = Pro_id;
                _model.Period_id   = period_id;
                _model.Fl_addtime  = DateTime.Now;
                isOK = DoAdd(_model);
            }

            if (isOK)
            {
                try
                {
                    new Calculation().calculateFenShuXian();
                    JscriptMsg("分数线添加成功", "FractionallineList.aspx?fun_id=" + get_fun_id("CCOM/CEEManege/FractionallineList.aspx"), "Success");
                }
                catch
                {
                    JscriptMsg("分数线添加失败,请重新尝试", "", "Error");
                }
            }
        }