コード例 #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            PageControlLocalizationText pl = new PageControlLocalizationText(this);
            pl.SetListPageControlLocalizationText();
            lblFuncName.Text = Session["FuncName"].ToString();
            SetRight.SetPageRight(this.Page, Session["FuncId"].ToString(), Session["RoleIDs"].ToString());
            btnJIAOBAN.Attributes.Add("onClick", "return confirm('" + GetGlobalResourceObject("WebGlobalResource", "Common004").ToString() + "');");
            btnDelete.Attributes.Add("onClick", "return confirm('" + GetGlobalResourceObject("WebGlobalResource", "DeleteBeforeConfirm").ToString() + "');");

            object obj;
            //为了突出哪个变电站,功能名要加变电站名称
            if (Session["Culture"] == null || Session["Culture"].ToString() == "zh-CN")
            {
                _sql = "select NAME from DMIS_SYS_DEPART where ID=" + Session["DepartID"].ToString();
            }
            else
            {
                _sql = "select OTHER_LANGUAGE_DESCR from DMIS_SYS_DEPART where ID=" + Session["DepartID"].ToString();
            }
            obj = DBOpt.dbHelper.ExecuteScalar(_sql);
            if (obj != null)
            {
                lblFuncName.Text += "[" + obj.ToString() + "]";
            }

            FillDropDownList.FillByTable(ref ddlWEATHER, "DMIS_SYS_WEATHER", "NAME", "TID");
            FillDDY();
            FillShift();
            if (ddlQueryShift.Items.Count < 1)
            {
                //JScript.Alert("还没有设置调度值班班次信息,请联系系统管理员!");
                return;
            }

            DateTime st;
            //没有权限修改交接班记录的人只能查看数据,不能执行下面查找或生成当前班次的记录。
            if (!SetRight.IsModify(Session["FuncID"].ToString(), "frmSTATION_SHIFT.aspx", "btnSave", Session["MemberID"].ToString()))
            {
                return;
            }

            if (SetRight.IsAdminitrator(Session["MemberID"].ToString()))
            {
                btnAdd.Visible    = true;
                btnDelete.Visible = true;
            }
            int days = 1;                       //没有设置值班天数,则为1
            if (ddlQueryShift.Items.Count == 1) //值班参数表只有一条记录时,则要判断值班天数,多条记录则为1
            {
                obj = DBOpt.dbHelper.ExecuteScalar("select SHIFT_DAYS from T_STATION_SHIFT_PARA where STATION_ID=" + Session["DepartID"].ToString());
                if (obj != null)  //得到值班天数
                {
                    days = Convert.ToInt16(obj);
                }
            }
            else
            {
                days = 1;
            }


            uint tid = 1;

            /***************************************
             * 判断当前班次的规则如下:
             * 1、首先找flag为1(正在当班)的记录,没有找到则以当前日期和第一个班次新建当前班次
             * 2、如果有flag为1(正在当班)的记录,则再判断此当班日期是否在今天以前的days内之内;如果不是,则把此表内条件flag=1(正值)的记录的列flag的值设置为0(已值),再以当前日期和第一个班次新建当前班次;
             * 3、flag为1(正在当班)的记录的当班日期在今天以前的days天之内,则当前班次就是此班次。
             *
             **************************************/
            _sql = "select TID,DATEM,SHIFT from T_STATION_SHIFT where flag=1 and STATION_ID=" + Session["DepartID"].ToString() + " order by DATEM desc";
            DataTable dt = DBOpt.dbHelper.GetDataTable(_sql);
            if (dt.Rows.Count > 0)                                                                                            //找到了当班的记录
            {
                st = (Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"))).AddDays(-days);                                //值班天数之前的00:00,用于下列比较
                if ((DateTime)dt.Rows[0]["DATEM"] < st)                                                                       //当前班次在值班天数以前,则新建班次
                {
                    _sql = "update T_STATION_SHIFT set flag=0 where flag=1 and STATION_ID=" + Session["DepartID"].ToString(); //先把当班记录状态设置为已交班
                    DBOpt.dbHelper.ExecuteSql(_sql);
                    //查找当日的第一个班次的记录在数据库中是否存在
                    obj = DBOpt.dbHelper.ExecuteScalar("select count(*) from T_STATION_SHIFT where to_char(DATEM,'YYYYMMDD')='" + DateTime.Now.ToString("yyyyMMdd") + "' and SHIFT=" + ddlQueryShift.Items[0].Value + " and STATION_ID=" + Session["DepartID"].ToString());
                    if (obj == null || Convert.ToInt16(obj) == 0)   //数据库中没有当日的第一个班次的记录
                    {
                        tid  = DBOpt.dbHelper.GetMaxNum("T_STATION_SHIFT", "TID");
                        obj  = DBOpt.dbHelper.ExecuteScalar("select SHIFT_STARTTIME,to_char(SHIFT_STARTTIME,'HH24:MI') ss from T_STATION_SHIFT_PARA where STATION_ID=" + Session["DepartID"].ToString() + " order by ss");
                        st   = (DateTime)obj;
                        _sql = "insert into T_STATION_SHIFT(TID,DATEM,SHIFT,FLAG,STATION_ID) values(" + tid + ",TO_DATE('"
                               + DateTime.Now.ToString("yyyy-MM-dd") + st.ToString(" HH:mm") + "','YYYY-MM-DD HH24:MI')," + ddlQueryShift.Items[0].Value + "," + ddlQueryShift.Items[0].Value + "," + Session["DepartID"].ToString() + ")";
                        if (DBOpt.dbHelper.ExecuteSql(_sql) < 0)
                        {
                            JScript.Alert((String)GetGlobalResourceObject("WebGlobalResource", "Common001"));
                            MultiView1.Visible = false;
                            return;
                        }
                    }
                    else //数据库中有当日的第一个班次的记录,则把状态设置为当班状态(为1)
                    {
                        _sql = "update T_STATION_SHIFT set flag=1 where to_char(DATEM,'YYYYMMDD')='" + DateTime.Now.ToString("yyyyMMdd") + "' and SHIFT=" + ddlQueryShift.Items[0].Value + " and STATION_ID=" + Session["DepartID"].ToString();
                        if (DBOpt.dbHelper.ExecuteSql(_sql) != 1)
                        {
                            JScript.Alert((String)GetGlobalResourceObject("WebGlobalResource", "Common002"));
                            MultiView1.Visible = false;
                            return;
                        }
                        tid = Convert.ToUInt16(DBOpt.dbHelper.ExecuteScalar("select TID from T_STATION_SHIFT where to_char(DATEM,'YYYYMMDD')='" + DateTime.Now.ToString("yyyyMMdd") + "' and SHIFT=" + ddlQueryShift.Items[0].Value + " and STATION_ID=" + Session["DepartID"].ToString()));
                    }
                    Session["CurrentShiftDate"]   = DateTime.Now.ToString("yyyyMMdd");
                    Session["CurrentShift"]       = 1;
                    ViewState["CurrentShiftDate"] = DateTime.Now.ToString("yyyy-MM-dd");
                }
                else  //当前班次是昨天以后,则以此作为当前班次
                {
                    Session["CurrentShiftDate"] = ((DateTime)dt.Rows[0][1]).ToString("yyyyMMdd");
                    Session["CurrentShift"]     = dt.Rows[0][2];
                    tid = Convert.ToUInt16(dt.Rows[0][0]);
                    ViewState["CurrentShiftDate"] = ((DateTime)dt.Rows[0][1]).ToString("yyyy-MM-dd");
                }
            }
            else   //没有当前班次,则以当日的第一个班次新建当前班次
            {
                obj = DBOpt.dbHelper.ExecuteScalar("select count(*) from T_STATION_SHIFT where to_char(DATEM,'YYYYMMDD')='" + DateTime.Now.ToString("yyyyMMdd") + "' and SHIFT=" + ddlQueryShift.Items[0].Value + " and STATION_ID=" + Session["DepartID"].ToString());
                if (obj == null || Convert.ToInt16(obj) == 0)   //数据库中没有当日的第一个班次的记录
                {
                    tid = DBOpt.dbHelper.GetMaxNum("T_STATION_SHIFT", "TID");

                    obj  = DBOpt.dbHelper.ExecuteScalar("select SHIFT_STARTTIME,to_char(SHIFT_STARTTIME,'HH24:MI') ss from T_STATION_SHIFT_PARA where STATION_ID=" + Session["DepartID"].ToString() + " order by ss");
                    st   = (DateTime)obj;
                    _sql = "insert into T_STATION_SHIFT(TID,DATEM,SHIFT,FLAG,STATION_ID,CURRENT_SHIFT_MAN1) values(" + tid + ",TO_DATE('" + DateTime.Now.ToString("yyyy-MM-dd") + st.ToString(" HH:mm") + "','YYYY-MM-DD HH24:MI')"
                           + "," + ddlQueryShift.Items[0].Value + ",1," + Session["DepartID"].ToString() + ",'" + Session["MemberName"].ToString() + "')";
                    if (DBOpt.dbHelper.ExecuteSql(_sql) < 0)
                    {
                        JScript.Alert((String)GetGlobalResourceObject("WebGlobalResource", "Common001"));
                        MultiView1.Visible = false;
                        return;
                    }
                }
                else //数据库中有当日的第一个班次的记录,把其状态改为当值(为1)
                {
                    _sql = "update T_STATION_SHIFT set flag=1 where to_char(DATEM,'YYYYMMDD')='" + DateTime.Now.ToString("yyyyMMdd") + "' and SHIFT=" + ddlQueryShift.Items[0].Value + " and STATION_ID=" + Session["DepartID"].ToString();
                    if (DBOpt.dbHelper.ExecuteSql(_sql) != 1)
                    {
                        JScript.Alert((String)GetGlobalResourceObject("WebGlobalResource", "Common002"));
                        MultiView1.Visible = false;
                        return;
                    }
                    tid = Convert.ToUInt16(DBOpt.dbHelper.ExecuteScalar("select TID from T_STATION_SHIFT where to_char(DATEM,'YYYYMMDD')='" + DateTime.Now.ToString("yyyyMMdd") + "' and SHIFT=" + ddlQueryShift.Items[0].Value + " and STATION_ID=" + Session["DepartID"].ToString()));
                }
                Session["CurrentShiftDate"]   = DateTime.Now.ToString("yyyyMMdd");
                Session["CurrentShift"]       = ddlQueryShift.Items[0].Value;
                ViewState["CurrentShiftDate"] = DateTime.Now.ToString("yyyy-MM-dd");
            }


            CustomControlFill.CustomControlFillByTableAndWhere(this.Page, "T_STATION_SHIFT", "TID=" + tid);
            wdlQueryDate.setTime(Convert.ToDateTime(ViewState["CurrentShiftDate"]));
            ddlQueryShift.SelectedIndex = ddlQueryShift.Items.IndexOf(ddlQueryShift.Items.FindByValue(Session["CurrentShift"].ToString()));
            btnQuery_Click(null, null);
        }
        else
        {
            //btnQuery_Click(null, null);
        }
    }