tijian_tieying/web/Web/NWorkFlow/GoToNextNode.aspx.cs

483 lines
20 KiB
C#
Raw Normal View History

2025-02-20 12:14:39 +08:00
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class NWorkFlow_GoToNextNode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//该节点根据传过来的工作的ID信息查询到使用的工作流、当前节点信息全部通过往下流转、一个通过往下流转
//根据节点信息、该工作的通过人列表信息、审批人列表信息===>该节点是否应该继续往下流转
//如果要往下流转则显示页面上的下一节点设置信息,否则用程序跳转回待办事项页面。
//根据Type参数属性Type为0时为正常下一节点Type为1时为绑定所有节点供选择。
if (!Page.IsPostBack)
{
ZWL.BLL.ERPNWorkToDo MyModel = new ZWL.BLL.ERPNWorkToDo();
MyModel.GetModel(int.Parse(Request.QueryString["ID"].ToString()));
this.Label1.Text = MyModel.WorkName;
this.Label4.Text = MyModel.FormContent.Replace("disabled", "").Replace("hidden", "visible");
//判断 当前节点信息(全部通过可向下流转、一人通过可向下流转) 该工作的通过人列表信息、审批人列表信息
string SPMoShi = ZWL.DBUtility.DbHelperSQL.GetSHSL("select top 1 PSType from ERPNWorkFlowNode where ID=" + MyModel.JieDianID.ToString());
if (CheCkIfOk(MyModel.OKUserList, MyModel.ShenPiUserList, SPMoShi) == true)
{
//绑定下一个节点
try
{
//绑定下一节点 正常状态
if (Request.QueryString["Type"].ToString().Trim() == "0")
{
//绑定下一节点
string[] NextStrList = ZWL.DBUtility.DbHelperSQL.GetSHSL("select NextNode from ERPNWorkFlowNode where ID=" + MyModel.JieDianID.ToString()).Split(',');
for (int i = 0; i < NextStrList.Length; i++)
{
ListItem MyItem = new ListItem();
MyItem.Value = ZWL.DBUtility.DbHelperSQL.GetSHSL("select ID from ERPNWorkFlowNode where NodeSerils='" + NextStrList[i].ToString() + "' and WorkFlowID=" + MyModel.WorkFlowID.ToString());//根据序号和workflowID获得节点ID
MyItem.Text = "节点序号:" + NextStrList[i].ToString() + "--节点名称:" + ZWL.DBUtility.DbHelperSQL.GetSHSL("select NodeName from ERPNWorkFlowNode where NodeSerils='" + NextStrList[i].ToString() + "' and WorkFlowID=" + MyModel.WorkFlowID.ToString());
if (MyItem.Value.ToString().Length > 0)
{
this.DropDownList3.Items.Add(MyItem);
}
}
}
else //绑定所有节点(除开始节点)
{
//清除根据条件决定下一节点选项
this.CheckBox1.Checked = false;
this.CheckBox1.Enabled = false;
DataSet MyDS = ZWL.DBUtility.DbHelperSQL.GetDataSet("select ID,NodeSerils,NodeName from ERPNWorkFlowNode where WorkFlowID=" + MyModel.WorkFlowID.ToString());
for (int jjj = 0; jjj < MyDS.Tables[0].Rows.Count; jjj++)
{
ListItem MyItem = new ListItem();
MyItem.Value = MyDS.Tables[0].Rows[jjj]["ID"].ToString();
MyItem.Text = "节点序号:" + MyDS.Tables[0].Rows[jjj]["NodeSerils"].ToString() + "--节点名称:" + MyDS.Tables[0].Rows[jjj]["NodeName"].ToString();
if (MyItem.Value.ToString().Length > 0)
{
this.DropDownList3.Items.Add(MyItem);
}
}
}
//根据选择的节点,绑定人员等信息。
ZWL.BLL.ERPNWorkFlowNode MyJieDian = new ZWL.BLL.ERPNWorkFlowNode();
MyJieDian.GetModel(int.Parse(this.DropDownList3.SelectedItem.Value.ToString()));
this.TextBox1.Text = MyJieDian.PSType;
this.TextBox2.Text = MyJieDian.SPType;
SetPageFromPSStr(MyJieDian.SPType, MyJieDian.SPDefaultList);
}
catch
{ }
}
else
{
ZWL.Common.MessageBox.ShowAndRedirect(this, "该节点工作需要等待其他人全部办理后才能继续往下流转,请继续等待!", "NowWorkFlow.aspx");
}
//~~~~~~~~~~~~~~~~~当前节点为空!并且下一节点的下拉框也为空!······直接进行提交操作!
if (this.DropDownList3.Items.Count <= 0 && ZWL.DBUtility.DbHelperSQL.GetSHSL("select NodeAddr from ERPNWorkFlowNode where ID=" + MyModel.JieDianID.ToString()) == "结束")
{
this.RequiredFieldValidator2.Enabled = false;
ZWL.Common.MessageBox.ResponseScript(this, "document.getElementById('ImageButton1').click();");
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
}
/// <summary>
/// 根据审批模式字符串设置页面显示
/// </summary>
/// <param name="SPStr"></param>
public void SetPageFromPSStr(string SPStr, string DefultStr)
{
if (SPStr == "审批时自由指定")
{
this.TextBox5.Text = "";
}
else if (SPStr == "从默认审批人中选择")
{
this.TextBox5.Text = DefultStr;
}
else if (SPStr == "从默认审批部门中选择")
{
string SqlWhere = "";
string[] DefultList = DefultStr.Split(',');
for (int i = 0; i < DefultList.Length; i++)
{
if (SqlWhere.Trim().Length > 0)
{
SqlWhere = SqlWhere + " or " + " ','+Department+',' like '%," + DefultList[i].ToString() + ",%' ";
}
else
{
SqlWhere = " ','+Department+',' like '%," + DefultList[i].ToString() + ",%' ";
}
}
this.TextBox5.Text = ZWL.DBUtility.DbHelperSQL.GetStringList("select UserName from ERPUser where " + SqlWhere).Replace("|", ",");
}
else if (SPStr == "从默认审批角色中选择")
{
string SqlWhere = "";
string[] DefultList = DefultStr.Split(',');
for (int i = 0; i < DefultList.Length; i++)
{
if (SqlWhere.Trim().Length > 0)
{
SqlWhere = SqlWhere + " or " + " ','+JiaoSe+',' like '%," + DefultList[i].ToString() + ",%' ";
}
else
{
SqlWhere = " ','+JiaoSe+',' like '%," + DefultList[i].ToString() + ",%' ";
}
}
this.TextBox5.Text = ZWL.DBUtility.DbHelperSQL.GetStringList("select UserName from ERPUser where " + SqlWhere).Replace("|", ",");
}
else if (SPStr == "自动选择流程发起人")
{
this.TextBox5.Text = ZWL.Common.PublicMethod.GetSessionValue("UserName");
}
else if (SPStr == "自动选择本部门主管")
{
this.TextBox5.Text = ZWL.DBUtility.DbHelperSQL.GetSHSL("select top 1 ChargeMan from ERPBuMen where BuMenName='" + ZWL.Common.PublicMethod.GetSessionValue("Department") + "'");
}
else if (SPStr == "自动选择上级部门主管")
{
this.TextBox5.Text = ZWL.DBUtility.DbHelperSQL.GetSHSL("select top 1 ChargeMan from ERPBuMen where ID=(select top 1 DirID from ERPBuMen where BuMenName='" + ZWL.Common.PublicMethod.GetSessionValue("Department") + "')");
}
}
protected bool CheCkIfOk(string TongGuoStr, string ShenPiList, string TiaoJianStr)
{
if (Request.QueryString["DoType"].ToString() == "putong")
{
if (TiaoJianStr == "一人通过可向下流转")
{
return true;
}
else
{
//判断审批人列表是否全部在通过人列表中
string[] ShenPiArry = ShenPiList.Split(',');
for (int i = 0; i < ShenPiArry.Length; i++)
{
if (ZWL.Common.PublicMethod.StrIFIn("," + ShenPiArry[i] + ",", "," + TongGuoStr + ",") == false)
{
//检测到任何一个审批人不在已经通过列表中则返回false
return false;
}
}
return true;
}
}
else
{
return true;
}
}
protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
//根据选择的节点,绑定人员等信息。
ZWL.BLL.ERPNWorkFlowNode MyJieDian = new ZWL.BLL.ERPNWorkFlowNode();
MyJieDian.GetModel(int.Parse(this.DropDownList3.SelectedItem.Value.ToString()));
this.TextBox1.Text = MyJieDian.PSType;
this.TextBox2.Text = MyJieDian.SPType;
SetPageFromPSStr(MyJieDian.SPType, MyJieDian.SPDefaultList);
}
catch
{ }
}
public int CheckCondition(string DefaultNodeID)
{
ZWL.BLL.ERPNWorkToDo MyModel = new ZWL.BLL.ERPNWorkToDo();
MyModel.GetModel(int.Parse(Request.QueryString["ID"].ToString()));
//格式如DEFG_请假天数→大于→10→3|ABCD_请假天数→大于→10→3
string[] TiaoJianList = ZWL.DBUtility.DbHelperSQL.GetSHSL("select ConditionSet from ERPNWorkFlowNode where ID=" + MyModel.JieDianID.ToString()).Split('|');
for (int i = 0; i < TiaoJianList.Length; i++)
{
if (TiaoJianList[i].Trim().Length > 0)
{
string NextIDStr = CheckTiaoJian(TiaoJianList[i].ToString());
if (NextIDStr != "0")
{
return int.Parse(NextIDStr);
}
}
}
return int.Parse(DefaultNodeID);
}
/// <summary>
/// 比较两个字符串,返回结果是否正确
/// </summary>
/// <param name="Str1"></param>
/// <param name="Str2"></param>
/// <param name="BiJiaoTiaoJian"></param>
/// <param name="LeiXing"></param>
/// <returns></returns>
protected bool BiaoJiaoTwoStr(string Str1, string Str2, string BiJiaoTiaoJian)
{
try
{
double A1 = double.Parse(Str1);
double A2 = double.Parse(Str2); //大于 大于等于 小于 小于等于 等于 不等于 包含 不包含
if (BiJiaoTiaoJian == "大于" && A1 > A2)
{
return true;
}
else if (BiJiaoTiaoJian == "大于等于" && A1 >= A2)
{
return true;
}
else if (BiJiaoTiaoJian == "小于" && A1 < A2)
{
return true;
}
else if (BiJiaoTiaoJian == "小于等于" && A1 <= A2)
{
return true;
}
else if (BiJiaoTiaoJian == "等于" && A1 == A2)
{
return true;
}
else if (BiJiaoTiaoJian == "不等于" && A1 != A2)
{
return true;
}
else if (BiJiaoTiaoJian == "包含" && ZWL.Common.PublicMethod.StrIFIn(Str2, Str1))
{
return true;
}
else if (BiJiaoTiaoJian == "不包含")
{
if (ZWL.Common.PublicMethod.StrIFIn(Str2, Str1))
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
catch
{
if (BiJiaoTiaoJian == "等于" && Str1 == Str2)
{
return true;
}
else if (BiJiaoTiaoJian == "不等于" && Str1 != Str2)
{
return true;
}
else if (BiJiaoTiaoJian == "包含" && ZWL.Common.PublicMethod.StrIFIn(Str2, Str1))
{
return true;
}
else if (BiJiaoTiaoJian == "不包含")
{
if (ZWL.Common.PublicMethod.StrIFIn(Str2, Str1))
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
}
/// <summary>
/// 判断条件返回下一节点ID
/// </summary>
/// <param name="FormCcontent"></param>
/// <param name="TiaoJianStr"></param>
/// <param name="WorkFlowIDStr"></param>
/// <returns></returns>
protected string CheckTiaoJian(string TiaoJianStr)
{
ZWL.BLL.ERPNWorkToDo MyModel = new ZWL.BLL.ERPNWorkToDo();
MyModel.GetModel(int.Parse(Request.QueryString["ID"].ToString()));
//条件格式如ABCD_请假天数→大于→10→3
string ZiDuanStrEN = TiaoJianStr.Split('_')[0]; //字段名称EN 如ABCD
string ZiDuanStrCN = TiaoJianStr.Split('_')[1]; //字段名称CN 如:请假天数
string BiJiaoStr = TiaoJianStr.Split('→')[1]; //条件比较 如:大于
string ZhiStr = TiaoJianStr.Split('→')[2];//比较的值,如: 10
string JieDianXuHaoStr = TiaoJianStr.Split('→')[3];//跳转的节点序号,如: 3
string NowValue = "";
try
{
NowValue = Request.Form[ZiDuanStrEN].ToString();
}
catch
{ }
if (BiaoJiaoTwoStr(NowValue, ZhiStr, BiJiaoStr) == true)
{
return ZWL.DBUtility.DbHelperSQL.GetSHSLInt("select top 1 ID from ERPNWorkFlowNode where NodeSerils='" + JieDianXuHaoStr + "' and WorkFlowID=" + MyModel.WorkFlowID.ToString());
}
else
{
return "0";
}
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
BanLiWork();
}
public void BanLiWork()
{
ZWL.BLL.ERPNWorkToDo XMyModel = new ZWL.BLL.ERPNWorkToDo();
XMyModel.GetModel(int.Parse(Request.QueryString["ID"].ToString()));
//初始化
string XJieDianIDStr = "0";
string XJieDianNameStr = "";
string XShenPiRenListStr = "";
string XTongGuoRenListStr = "";
string XStateNowStr = "正在办理";
string JingBanRenStr = "";//条件判断时读取经办人
try
{
if (CheckBox1.Checked == true)
{
//条件未找到或者没有匹配项时,采用选择好的节点
XJieDianIDStr = this.DropDownList3.SelectedValue.ToString();
try
{
///////////根据条件获取下一审批节点信息
XJieDianIDStr = CheckCondition(this.DropDownList3.SelectedValue.ToString()).ToString();
}
catch
{
XJieDianIDStr = this.DropDownList3.SelectedValue.ToString();
}
}
else
{
XJieDianIDStr = this.DropDownList3.SelectedValue.ToString();
}
XStateNowStr = "正在办理";
XJieDianNameStr = ZWL.DBUtility.DbHelperSQL.GetSHSL("select NodeName from ERPNWorkFlowNode where ID=" + XJieDianIDStr);
}
catch
{
if (ZWL.DBUtility.DbHelperSQL.GetSHSL("select NodeAddr from ERPNWorkFlowNode where ID=" + XMyModel.JieDianID.ToString()) == "结束")
{
XStateNowStr = "正常结束";
XJieDianIDStr = XMyModel.JieDianID.ToString();
GetDetailsData();//写入明细表
}
else
{
XStateNowStr = "强制结束";
XJieDianIDStr = XMyModel.JieDianID.ToString();
GetDetailsData();//写入明细表
}
XJieDianNameStr = "结束";
}
if (JingBanRenStr == "")
{
XShenPiRenListStr = ZWL.Common.PublicMethod.WorkWeiTuoUserList(this.TextBox5.Text);
}
else
{
XShenPiRenListStr = ZWL.Common.PublicMethod.WorkWeiTuoUserList(JingBanRenStr);
}
if (XShenPiRenListStr.Trim().Length <= 0)
{
XShenPiRenListStr = "工作已办结";
}
XTongGuoRenListStr = "默认";
//执行uodate语句
ZWL.DBUtility.DbHelperSQL.ExecuteSQL("update ERPNWorkToDo set LateTime='" + DateTime.Now.AddHours(double.Parse(ZWL.DBUtility.DbHelperSQL.GetSHSLInt("select top 1 JieShuHours from ERPNWorkFlowNode where ID=" + XJieDianIDStr))).ToString() + "',JieDianID=" + XJieDianIDStr + ",JieDianName='" + XJieDianNameStr + "',ShenPiUserList='" + XShenPiRenListStr + "',OKUserList='" + XTongGuoRenListStr + "',StateNow='" + XStateNowStr + "' where ID=" + Request.QueryString["ID"].ToString());
if (XStateNowStr == "正在办理")
{
//发送短信
SendMainAndSms.SendMessage(CHKSMS, CHKMOB, "您有新的工作需要办理!(" + this.Label1.Text + ")", ZWL.Common.PublicMethod.WorkWeiTuoUserList(this.TextBox5.Text.Trim()));
}
else if (XStateNowStr == "正常结束")
{
SendMainAndSms.SendMessage(CHKSMS, CHKMOB, "您的工作已经正常结束!(" + this.Label1.Text + ")", XMyModel.UserName);
}
else
{
SendMainAndSms.SendMessage(CHKSMS, CHKMOB, "您的工作已经被强制结束!(" + this.Label1.Text + ")", XMyModel.UserName);
}
//写系统日志
ZWL.BLL.ERPRiZhi MyRiZhi = new ZWL.BLL.ERPRiZhi();
MyRiZhi.UserName = ZWL.Common.PublicMethod.GetSessionValue("UserName");
MyRiZhi.DoSomething = "用户办理工作(" + this.Label1.Text + ")";
MyRiZhi.IpStr = System.Web.HttpContext.Current.Request.UserHostAddress.ToString();
MyRiZhi.Add();
ZWL.Common.MessageBox.ShowAndRedirect(this, "工作办理成功!", "NowWorkFlow.aspx");
}
/// <summary>
/// 将表单中个数据列的数据写入明细记录表中,便于后期统计
/// </summary>
public void GetDetailsData()
{
ZWL.BLL.ERPNWorkToDo MyModel = new ZWL.BLL.ERPNWorkToDo();
MyModel.GetModel(int.Parse(Request.QueryString["ID"].ToString()));
//获取当前表单对应的工作数据列
string[] FormItemList = ZWL.DBUtility.DbHelperSQL.GetSHSL("select top 1 ItemsList from ERPNForm where ID=" + MyModel.FormID.ToString()).Split('|');
for (int i = 0; i < FormItemList.Length; i++)
{
if (FormItemList[i].Trim().Length > 0)
{
try
{
ZWL.BLL.ERPNWorkDetails Model = new ZWL.BLL.ERPNWorkDetails();
Model.WorkID = int.Parse(Request.QueryString["ID"].ToString());
Model.ItemsNameCN = FormItemList[i].Split('_')[1];
Model.ItemsNameEn = FormItemList[i].Split('_')[0];
Model.ItemsValue = Request.Form[FormItemList[i].Split('_')[0]].ToString();
Model.Add();
}
catch { }
}
}
}
}