deal_list.aspx.cs
上传用户:xrffrp
上传日期:2022-03-25
资源大小:22155k
文件大小:26k
源码类别:

OA系统

开发平台:

ASP/ASPX

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using System.Data.SqlClient;
  12. public partial class web_approvel_ch_deal_list : System.Web.UI.Page
  13. {
  14.     protected void Page_Load(object sender, EventArgs e)
  15.     {
  16.         if (!IsPostBack)
  17.         {
  18.             LoginDAO.CheckLogin(Session, Response, "../../", 2);
  19.             this.SetMainTable();
  20.             if (Request.QueryString["f_id"] != null)
  21.             {
  22.                 PnlFlow.Visible = true;
  23.                 PnlApprovel.Visible = true;
  24.                 PnlDeal.Visible = true;
  25.                 this.SetValue(Request.QueryString["f_id"]);
  26.                 FlowList.DataKeyNames = new string[] { "id" };
  27.             }
  28.             if (Request.QueryString["o_id"] != null)
  29.             {
  30.                 OffFlowList.Visible = true;
  31.                 PnlOff.Visible = true;
  32.                 PnlDeal.Visible = true;
  33.                 this.SetOffValue(Request.QueryString["o_id"]);
  34.                 OffFlowList.DataKeyNames = new string[] { "id" };
  35.             }
  36.         }
  37.     }
  38.     protected void SetMainTable()
  39.     {
  40.         SqlConnection conn = dbConnection.getConnection();
  41.         conn.Open();
  42.         string user_id = "0";
  43.         if (Session["user_id"] != null)
  44.         {
  45.             user_id = Session["user_id"].ToString();
  46.         }
  47.         ArrayList ids = new ArrayList();
  48.         ArrayList form_ids = new ArrayList();
  49.         ArrayList is_businesses = new ArrayList();
  50.         ArrayList f_steps = new ArrayList();
  51.         SqlCommand cmd = new SqlCommand("SELECT f.id, f.form_id, f.is_business, f.step FROM dbo.OA_CH_APPROVEL_FORM_FLOW AS f " +
  52.             " left join oa_ch_business_form as b on f.form_id=b.id WHERE (f.operator_id = " + user_id + ") AND (f.is_check = 'N') and state=1", conn);
  53.         SqlDataReader dr = cmd.ExecuteReader();
  54.         while (dr.Read())
  55.         {
  56.             ids.Add(dr["id"].ToString());
  57.             form_ids.Add(dr["form_id"].ToString());
  58.             is_businesses.Add(dr["is_business"].ToString());
  59.             f_steps.Add(dr["step"].ToString());
  60.         }
  61.         dr.Close();
  62.         for (int i = ids.Count - 1; i >= 0; i--)
  63.         {
  64.             int f_step = Convert.ToInt32(f_steps[i]);
  65.             if (is_businesses[i].Equals("Y"))
  66.             {
  67.                 cmd = new SqlCommand("select e.emp_name, b.apply_date, b.step,b.id from OA_CH_BUSINESS_FORM b inner join " +
  68.                     "OA_EMPLOYEE e on b.emp_id=e.id where b.id=" + form_ids[i], conn);
  69.                 dr = cmd.ExecuteReader();
  70.                 if (dr.Read())
  71.                 {
  72.                     int b_step = Convert.ToInt32(dr["step"].ToString()) + 1;
  73.                     if (b_step == f_step)
  74.                     {
  75.                         TblFlow.Visible = true;
  76.                         TableRow tr = new TableRow();
  77.                         TableCell td = new TableCell();
  78.                         td.BorderWidth = Unit.Pixel(1);
  79.                         td.Text = dr["emp_name"].ToString();
  80.                         tr.Cells.Add(td);
  81.                         td = new TableCell();
  82.                         td.BorderWidth = Unit.Pixel(1);
  83.                         td.Text = dr["emp_name"].ToString() + "的出差單";
  84.                         tr.Cells.Add(td);
  85.                         td = new TableCell();
  86.                         td.BorderWidth = Unit.Pixel(1);
  87.                         td.Text = dr["apply_date"].ToString();
  88.                         tr.Cells.Add(td);
  89.                         td = new TableCell();
  90.                         td.BorderWidth = Unit.Pixel(1);
  91.                         HyperLink hl = new HyperLink();
  92.                         hl.Text = "查看";
  93.                         hl.NavigateUrl = "deal_list.aspx?f_id=" + ids[i].ToString()+"&f_id1="+dr["id"].ToString();
  94.                         td.Controls.Add(hl);
  95.                         tr.Cells.Add(td);
  96.                         TblFlow.Rows.Add(tr);
  97.                     }
  98.                 }
  99.                 dr.Close();
  100.             }
  101.             else
  102.             {
  103.                 cmd = new SqlCommand("select e.emp_name, o.apply_date, t.name off_type, o.step,o.id from OA_CH_OFF_FORM o "+
  104.                     "inner join OA_EMPLOYEE e on o.emp_id=e.id inner join OA_CH_OFF_TYPE t on o.off_type=t.id "+
  105.                     "where o.id=" + form_ids[i] + " and state=1", conn);
  106.                 dr = cmd.ExecuteReader();
  107.                 if (dr.Read())
  108.                 {
  109.                     int b_step = Convert.ToInt32(dr["step"].ToString()) + 1;
  110.                     if (f_step == b_step)
  111.                     {
  112.                         TblFlow.Visible = true;
  113.                         TableRow tr = new TableRow();
  114.                         TableCell td = new TableCell();
  115.                         td.BorderWidth = Unit.Pixel(1);
  116.                         td.Text = dr["emp_name"].ToString();
  117.                         tr.Cells.Add(td);
  118.                         td = new TableCell();
  119.                         td.BorderWidth = Unit.Pixel(1);
  120.                         td.Text = dr["emp_name"].ToString() + "的" + dr["off_type"].ToString() + "單";
  121.                         tr.Cells.Add(td);
  122.                         td = new TableCell();
  123.                         td.BorderWidth = Unit.Pixel(1);
  124.                         td.Text = dr["apply_date"].ToString();
  125.                         tr.Cells.Add(td);
  126.                         td = new TableCell();
  127.                         td.BorderWidth = Unit.Pixel(1);
  128.                         HyperLink hl = new HyperLink();
  129.                         hl.Text = "查看";
  130.                         hl.NavigateUrl = "deal_list.aspx?o_id=" + ids[i].ToString()+"&o_id1="+dr["id"].ToString();
  131.                         td.Controls.Add(hl);
  132.                         tr.Cells.Add(td);
  133.                         TblFlow.Rows.Add(tr);
  134.                     }
  135.                 }
  136.                 dr.Close();
  137.             }
  138.         }
  139.         conn.Close();
  140.     }
  141.     protected void SetValue(string id)
  142.     {
  143.         SqlConnection conn = dbConnection.getConnection();
  144.         conn.Open();
  145.         int form_id = 0;
  146.         string is_business = "";
  147.         SqlCommand cmd = new SqlCommand("select form_id, is_business from OA_CH_APPROVEL_FORM_FLOW where id="+id, conn);
  148.         SqlDataReader dr = cmd.ExecuteReader();
  149.         if (dr.Read())
  150.         {
  151.             form_id = Convert.ToInt32(dr["form_id"].ToString());
  152.             is_business = dr["is_business"].ToString();
  153.         }
  154.         dr.Close();
  155.         FormId.Value = form_id.ToString();
  156.         if (is_business.Equals("Y"))
  157.         {
  158.             PnlApprovel.Visible = true;
  159.             cmd = new SqlCommand("select a.form_id, e.emp_name, e.emp_no, p.name position, a.apply_date," +
  160.                 "d.name department, a.days, a.begin_time, a.end_time, f1.name depart_place, f2.name arrive_place, " +
  161.                 "a.depart_time, a.arrive_time from OA_CH_BUSINESS_FORM a inner join OA_EMPLOYEE e on a.emp_id=e.id " +
  162.                 "inner join OA_DEPARTMENT d on a.department_id=d.id inner join OA_EMPLOYEE_POSITION p on " +
  163.                 "e.position=p.id inner join OA_FLIGHT_PLACE f1 on a.depart_place=f1.id inner join " +
  164.                 "OA_FLIGHT_PLACE f2 on a.arrive_place=f2.id where a.id=" + form_id, conn);
  165.             dr = cmd.ExecuteReader();
  166.             if (dr.Read())
  167.             {
  168.                 TxtFormId.Text = dr["form_id"].ToString();
  169.                 TxtEmpName.Text = dr["emp_name"].ToString();
  170.                 TxtEmpNo.Text = dr["emp_no"].ToString();
  171.                 TxtPosition.Text = dr["position"].ToString();
  172.                 TxtApplyDate.Text = dr["apply_date"].ToString();
  173.                 TxtDepartment.Text = dr["department"].ToString();
  174.                 TxtDays.Text = dr["days"].ToString();
  175.                 TxtBeginTime.Text = dr["begin_time"].ToString();
  176.                 TxtEndTime.Text = dr["end_time"].ToString();
  177.                 TxtDepartPlace.Text = dr["depart_place"].ToString();
  178.                 TxtArrivePlace.Text = dr["arrive_place"].ToString();
  179.                 TxtDepartTime.Text = dr["depart_time"].ToString();
  180.                 TxtArriveTime.Text = dr["arrive_time"].ToString();
  181.             }
  182.             dr.Close();
  183.         }
  184.         conn.Close();
  185.         this.SetTable(form_id);
  186.     }
  187.     protected void SetOffValue(string id)
  188.     {
  189.         SqlConnection conn = dbConnection.getConnection();
  190.         conn.Open();
  191.         int form_id = 0;
  192.         SqlCommand cmd = new SqlCommand("select form_id from OA_CH_APPROVEL_FORM_FLOW where id="+id, conn);
  193.         form_id = Convert.ToInt32(cmd.ExecuteScalar().ToString());
  194.         cmd = new SqlCommand("select o.form_id, e.emp_no, e.emp_name, d.name department, " +
  195.             "e.emp_name delegate, e.position position, " +
  196.             "t.name off_type, o.begin_time, o.end_time, o.hours, o.apply_date, o.parenthesis, " +
  197.             "o.reason from OA_CH_OFF_FORM o inner join OA_EMPLOYEE e on o.emp_id=e.id inner join " +
  198.             "OA_DEPARTMENT d on o.department_id=d.id inner join OA_CH_OFF_TYPE t on " +
  199.             "o.off_type=t.id where o.id=" + form_id, conn);
  200.         SqlDataReader dr = cmd.ExecuteReader();
  201.         if (dr.Read())
  202.         {
  203.             TxtOffFormId.Text = dr["form_id"].ToString();
  204.             TxtOffEmpName.Text = dr["emp_no"].ToString() + dr["emp_name"].ToString();
  205.             TxtOffDepartment.Text = dr["department"].ToString();
  206.             TxtDelegate.Text = dr["delegate"].ToString();
  207.             TxtOffPosition.Text = dr["position"].ToString();
  208.             TxtOffType2.Text = dr["off_type"].ToString();
  209.             TxtOffBeginTime.Text = dr["begin_time"].ToString();
  210.             TxtOffEndTime.Text = dr["end_time"].ToString();
  211.             TxtHours.Text = dr["hours"].ToString();
  212.             TxtOffApplyDate.Text = dr["apply_date"].ToString();
  213.             TxtParenthesis.Text = dr["parenthesis"].ToString();
  214.             TxtReason.Text = dr["reason"].ToString();
  215.         }
  216.         dr.Close();
  217.         conn.Close();
  218.     }
  219.     protected void SetTable(int form_id)
  220.     {
  221.         SqlConnection conn = dbConnection.getConnection();
  222.         conn.Open();
  223.         int flag = 0;
  224.         SqlCommand cmd = new SqlCommand("select number, company, subject, linkman, tel, place, visa_begin, visa_end, " +
  225.             "flight_go_begin, flight_back_end, is_aboard, remark from OA_CH_BUSINESS_DETAIL where form_id=" + form_id +
  226.             " order by number", conn);
  227.         SqlDataReader dr = cmd.ExecuteReader();
  228.         while (dr.Read())
  229.         {
  230.             flag = 1;
  231.             //動態創建表格行
  232.             TableRow tr1 = new TableRow();
  233.             TableCell td1 = new TableCell();
  234.             td1.BorderWidth = Unit.Pixel(1);
  235.             Label label = new Label();
  236.             label.BorderStyle = BorderStyle.None;
  237.             label.Text = dr["number"].ToString();
  238.             td1.Controls.Add(label);
  239.             tr1.Cells.Add(td1);
  240.             TableCell td2 = new TableCell();
  241.             td2.BorderWidth = Unit.Pixel(1);
  242.             label = new Label();
  243.             label.BorderStyle = BorderStyle.None;
  244.             label.Text = dr["company"].ToString();
  245.             td2.Controls.Add(label);
  246.             tr1.Cells.Add(td2);
  247.             TableCell td3 = new TableCell();
  248.             td3.BorderWidth = Unit.Pixel(1);
  249.             label = new Label();
  250.             label.BorderStyle = BorderStyle.None;
  251.             label.Text = dr["subject"].ToString();
  252.             td3.Controls.Add(label);
  253.             tr1.Cells.Add(td3);
  254.             TableCell td4 = new TableCell();
  255.             td4.BorderWidth = Unit.Pixel(1);
  256.             label = new Label();
  257.             label.BorderStyle = BorderStyle.None;
  258.             label.Text = dr["linkman"].ToString();
  259.             td4.Controls.Add(label);
  260.             tr1.Cells.Add(td4);
  261.             TableCell td5 = new TableCell();
  262.             td5.BorderWidth = Unit.Pixel(1);
  263.             label = new Label();
  264.             label.BorderStyle = BorderStyle.None;
  265.             label.Text = dr["tel"].ToString();
  266.             td5.Controls.Add(label);
  267.             tr1.Cells.Add(td5);
  268.             TableCell td6 = new TableCell();
  269.             td6.BorderWidth = Unit.Pixel(1);
  270.             label = new Label();
  271.             label.BorderStyle = BorderStyle.None;
  272.             label.Text = dr["place"].ToString();
  273.             td6.Controls.Add(label);
  274.             tr1.Cells.Add(td6);
  275.             TableCell td7 = new TableCell();
  276.             td7.BorderWidth = Unit.Pixel(1);
  277.             label = new Label();
  278.             label.BorderStyle = BorderStyle.None;
  279.             label.Text = dr["visa_begin"].ToString();
  280.             td7.Controls.Add(label);
  281.             tr1.Cells.Add(td7);
  282.             TableCell td8 = new TableCell();
  283.             td8.BorderWidth = Unit.Pixel(1);
  284.             label = new Label();
  285.             label.BorderStyle = BorderStyle.None;
  286.             label.Text = dr["visa_end"].ToString();
  287.             td8.Controls.Add(label);
  288.             tr1.Cells.Add(td8);
  289.             TableCell td9 = new TableCell();
  290.             td9.BorderWidth = Unit.Pixel(1);
  291.             label = new Label();
  292.             label.BorderStyle = BorderStyle.None;
  293.             label.Text = dr["flight_go_begin"].ToString();
  294.             td9.Controls.Add(label);
  295.             tr1.Cells.Add(td9);
  296.             TableCell td10 = new TableCell();
  297.             td10.BorderWidth = Unit.Pixel(1);
  298.             label = new Label();
  299.             label.BorderStyle = BorderStyle.None;
  300.             label.Text = dr["flight_back_end"].ToString();
  301.             td10.Controls.Add(label);
  302.             tr1.Cells.Add(td10);
  303.             TableCell td11 = new TableCell();
  304.             td11.BorderWidth = Unit.Pixel(1);
  305.             CheckBox chk = new CheckBox();
  306.             chk.Text = "國外";
  307.             chk.Enabled = false;
  308.             if (dr["is_aboard"].ToString().Equals("Y"))
  309.             {
  310.                 chk.Checked = true;
  311.             }
  312.             else
  313.             {
  314.                 chk.Checked = false;
  315.             }
  316.             td11.Controls.Add(chk);
  317.             tr1.Cells.Add(td11);
  318.             TableCell td12 = new TableCell();
  319.             td12.BorderWidth = Unit.Pixel(1);
  320.             label = new Label();
  321.             label.BorderStyle = BorderStyle.None;
  322.             label.Text = dr["remark"].ToString();
  323.             td12.Controls.Add(label);
  324.             tr1.Cells.Add(td12);
  325.             TblDetail.Rows.Add(tr1);
  326.         }
  327.         dr.Close();
  328.         conn.Close();
  329.         if (flag == 0)
  330.         {
  331.             TblDetail.Visible = false;
  332.         }
  333.     }
  334.     protected void FlowList_RowCreated(object sender, GridViewRowEventArgs e)
  335.     {
  336.         if (e.Row.RowType == DataControlRowType.DataRow)
  337.         {
  338.             SqlConnection conn = dbConnection.getConnection();
  339.             conn.Open();
  340.             SqlCommand cmd = new SqlCommand("select apply_type, is_check, is_agree, comment from " +
  341.                 "OA_CH_APPROVEL_FORM_FLOW where id=" + FlowList.DataKeys[e.Row.RowIndex].Value.ToString(), conn);
  342.             SqlDataReader dr = cmd.ExecuteReader();
  343.             if (dr.Read())
  344.             {
  345.                 Label label = (Label)e.Row.FindControl("LblApplyType");
  346.                 if (dr["apply_type"].ToString().Equals("1"))
  347.                 {
  348.                     label.Text = "會簽";
  349.                 }
  350.                 else if (dr["apply_type"].ToString().Equals("3"))
  351.                 {
  352.                     label.Text = "代理";
  353.                 }
  354.                 else
  355.                 {
  356.                     label.Text = "審批";
  357.                 }
  358.                 label = (Label)e.Row.FindControl("LblIsCheck");
  359.                 if (dr["is_check"].ToString().Equals("N"))
  360.                 {
  361.                     label.Text = "未處理";
  362.                 }
  363.                 else
  364.                 {
  365.                     label.Text = "已處理";
  366.                     label = (Label)e.Row.FindControl("LblIsAgree");
  367.                     if (dr["is_agree"].ToString().Equals("Y"))
  368.                     {
  369.                         label.Text = "已同意";
  370.                     }
  371.                     else
  372.                     {
  373.                         label.Text = "不同意";
  374.                     }
  375.                 }
  376.                 label = (Label)e.Row.FindControl("LblComment");
  377.                 label.Text = dr["comment"].ToString();
  378.             }
  379.             dr.Close();
  380.             conn.Close();
  381.         }
  382.     }
  383.     protected void OffFlowList_RowCreated(object sender, GridViewRowEventArgs e)
  384.     {
  385.         if (e.Row.RowType == DataControlRowType.DataRow)
  386.         {
  387.             SqlConnection conn = dbConnection.getConnection();
  388.             conn.Open();
  389.             SqlCommand cmd = new SqlCommand("select apply_type, is_check, is_agree, comment from " +
  390.                 "OA_CH_APPROVEL_FORM_FLOW where id=" + OffFlowList.DataKeys[e.Row.RowIndex].Value.ToString(), conn);
  391.             SqlDataReader dr = cmd.ExecuteReader();
  392.             if (dr.Read())
  393.             {
  394.                 Label label = (Label)e.Row.FindControl("LblApplyType");
  395.                 if (dr["apply_type"].ToString().Equals("1"))
  396.                 {
  397.                     label.Text = "會簽";
  398.                 }
  399.                 else if (dr["apply_type"].ToString().Equals("3"))
  400.                 {
  401.                     label.Text = "代理";
  402.                 }
  403.                 else
  404.                 {
  405.                     label.Text = "審批";
  406.                 }
  407.                 label = (Label)e.Row.FindControl("LblIsCheck");
  408.                 if (dr["is_check"].ToString().Equals("N"))
  409.                 {
  410.                     label.Text = "未處理";
  411.                 }
  412.                 else
  413.                 {
  414.                     label.Text = "已處理";
  415.                     label = (Label)e.Row.FindControl("LblIsAgree");
  416.                     if (dr["is_agree"].ToString().Equals("Y"))
  417.                     {
  418.                         label.Text = "已同意";
  419.                     }
  420.                     else
  421.                     {
  422.                         label.Text = "不同意";
  423.                     }
  424.                 }
  425.                 label = (Label)e.Row.FindControl("LblComment");
  426.                 label.Text = dr["comment"].ToString();
  427.             }
  428.             dr.Close();
  429.             conn.Close();
  430.         }
  431.     }
  432.     protected void RbAgree_SelectedIndexChanged(object sender, EventArgs e)
  433.     {
  434.         if (TxtComment.Text.Equals("已同意") || TxtComment.Text.Equals("不同意"))
  435.         {
  436.             if (RbAgree.SelectedValue.Equals("Y"))
  437.             {
  438.                 TxtComment.Text = "已同意";
  439.             }
  440.             else
  441.             {
  442.                 TxtComment.Text = "不同意";
  443.             }
  444.         }
  445.         this.SetTable(Convert.ToInt32(FormId.Value));
  446.     }
  447.     protected void BtnOk_Click(object sender, EventArgs e)
  448.     {
  449.         SqlConnection conn = dbConnection.getConnection();
  450.         conn.Open();
  451.         SqlTransaction tx = conn.BeginTransaction();
  452.         try
  453.         {
  454.             int flow_id = 0;
  455.             if (Request.QueryString["f_id"] != null)
  456.             {
  457.                 flow_id = Convert.ToInt32(Request.QueryString["f_id"]);
  458.             }
  459.             else if (Request.QueryString["o_id"] != null)
  460.             {
  461.                 flow_id = Convert.ToInt32(Request.QueryString["o_id"]);
  462.             }
  463.             string is_business = "";
  464.             DateMgr mgr = new DateMgr();
  465.             SqlCommand cmd = new SqlCommand("update OA_CH_APPROVEL_FORM_FLOW set is_check='Y', is_agree='" +
  466.                 RbAgree.SelectedValue + "', comment='" + TxtComment.Text.Replace("n", "<br>") + "', check_date='" + mgr.getDateTime() +
  467.                 "' where id=" + flow_id, conn);
  468.             cmd.Transaction = tx;
  469.             cmd.ExecuteNonQuery();
  470.             cmd = new SqlCommand("select form_id, is_business from OA_CH_APPROVEL_FORM_FLOW where id=" + flow_id, conn);
  471.             cmd.Transaction = tx;
  472.             SqlDataReader dr = cmd.ExecuteReader();
  473.             int form_id = 0;
  474.             if (dr.Read())
  475.             {
  476.                 form_id = Convert.ToInt32(dr["form_id"].ToString());
  477.                 is_business = dr["is_business"].ToString();                
  478.             }
  479.             dr.Close();
  480.             if (is_business.Equals("Y"))
  481.             {
  482.                 cmd = new SqlCommand("select max(step) from OA_CH_APPROVEL_FORM_FLOW where form_id=" + form_id + " and is_business='Y'", conn);
  483.                 cmd.Transaction = tx;
  484.                 int max_step = Convert.ToInt32(cmd.ExecuteScalar());
  485.                 cmd = new SqlCommand("select step from OA_CH_BUSINESS_FORM where id=" + form_id, conn);
  486.                 cmd.Transaction = tx;
  487.                 int step = Convert.ToInt32(cmd.ExecuteScalar());
  488.                 string total_result = "跑流程中";
  489.                 string time = "";
  490.                 if (max_step == step + 1)
  491.                 {
  492.                     if (RbAgree.SelectedValue.Equals("N"))
  493.                     {
  494.                         total_result = "不同意";
  495.                     }
  496.                     else
  497.                     {
  498.                         total_result = "同意";
  499.                     }
  500.                     time = mgr.getDateTime();
  501.                 }
  502.                 else
  503.                 {
  504.                     if (RbAgree.SelectedValue.Equals("N"))
  505.                     {
  506.                         total_result = "不同意";
  507.                         time = mgr.getDateTime();
  508.                     }
  509.                 }
  510.                 cmd = new SqlCommand("update OA_CH_BUSINESS_FORM set step=step+1, total_result='" +
  511.                     total_result + "', finish_date='" + time + "' where id=" + form_id, conn);
  512.                 cmd.Transaction = tx;
  513.                 cmd.ExecuteNonQuery();
  514.                 //mail
  515.                 ArrayList name1 = new ArrayList();
  516.                 ArrayList mail1 = new ArrayList();
  517.                 cmd = new SqlCommand("select top 1 a.email_work,a.emp_name from oa_employee as a inner join " +
  518.                    "OA_CH_APPROVEL_FORM_FLOW as b on b.operator_id=a.id left join OA_CH_BUSINESS_FORM as c " +
  519.                      "on b.form_id=c.id where b.step=c.step+1 and c.id=" + form_id + " order by position desc", conn);
  520.                 cmd.Transaction = tx;
  521.                 SqlDataReader dr3 = cmd.ExecuteReader();
  522.                 while (dr3.Read())
  523.                 {
  524.                     name1.Add(dr3["emp_name"].ToString());
  525.                     mail1.Add(dr3["email_work"].ToString());
  526.                     //mail.mail_q(mail1[0], name1[0], TxtEmpName.Text, "中幹出差申請單");
  527.                 } dr3.Close();
  528.                 //   
  529.             }
  530.             else
  531.             {
  532.                 cmd = new SqlCommand("select max(step) from OA_CH_APPROVEL_FORM_FLOW where form_id=" + form_id + " and is_business='N'", conn);
  533.                 cmd.Transaction = tx;
  534.                 int max_step = Convert.ToInt32(cmd.ExecuteScalar());
  535.                 cmd = new SqlCommand("select step from OA_CH_OFF_FORM where id=" + form_id, conn);
  536.                 cmd.Transaction = tx;
  537.                 int step = Convert.ToInt32(cmd.ExecuteScalar());
  538.                 string total_result = "跑流程中";
  539.                 string time = "";
  540.                 if (max_step == step + 1)
  541.                 {
  542.                     if (RbAgree.SelectedValue.Equals("N"))
  543.                     {
  544.                         total_result = "不同意";
  545.                     }
  546.                     else
  547.                     {
  548.                         total_result = "同意";
  549.                     }
  550.                     time = mgr.getDateTime();
  551.                 }
  552.                 else
  553.                 {
  554.                     if (RbAgree.SelectedValue.Equals("N"))
  555.                     {
  556.                         total_result = "不同意";
  557.                         time = mgr.getDateTime();
  558.                     }
  559.                 }
  560.                 cmd = new SqlCommand("update OA_CH_OFF_FORM set step=step+1, total_result='" +
  561.                     total_result + "', finish_date='" + time + "' where id=" + form_id, conn);
  562.                 cmd.Transaction = tx;
  563.                 cmd.ExecuteNonQuery();
  564.                 //mail
  565.                 ArrayList name1 = new ArrayList();
  566.                 ArrayList mail1 = new ArrayList();
  567.                 cmd = new SqlCommand("select top 1 a.email_work,a.emp_name from oa_employee as a inner join " +
  568.                    "OA_CH_APPROVEL_FORM_FLOW as b on b.operator_id=a.id left join OA_CH_OFF_FORM as c " +
  569.                      "on b.form_id=c.id where b.step=c.step+1 and c.id=" + form_id + " order by position desc", conn);
  570.                 cmd.Transaction = tx;
  571.                 SqlDataReader dr3 = cmd.ExecuteReader();
  572.                 while (dr3.Read())
  573.                 {
  574.                     name1.Add(dr3["emp_name"].ToString());
  575.                     mail1.Add(dr3["email_work"].ToString());
  576.                     //mail.mail_q(mail1[0], name1[0], TxtEmpName.Text, "中幹請假單");
  577.                 } dr3.Close();
  578.                 //   
  579.             }
  580.             tx.Commit();
  581.         }
  582.         catch (Exception ex)
  583.         {
  584.             Response.Write(ex.ToString());
  585.             tx.Rollback();
  586.         }
  587.         conn.Close();
  588.         try
  589.         {
  590.             Response.Redirect("finish_list.aspx");
  591.         }
  592.         catch (Exception ex)
  593.         {
  594.             Response.Write(ex.Message);
  595.         }
  596.     }
  597. }