You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

194 lines
9.0 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Web;
using BP.DA;
using BP.Sys;
using BP.Web;
using BP.Port;
using BP.En;
using BP.WF;
using BP.WF.Template;
namespace BP.Cloud.HttpHandler
{
/// <summary>
/// 页面功能实体
/// </summary>
public class Admin_TestingContainer : BP.WF.HttpHandler.DirectoryPageBase
{
/// <summary>
/// 构造函数
/// </summary>
public Admin_TestingContainer()
{
}
#region TestFlow2020_Init
/// <summary>
/// 发起.
/// </summary>
/// <returns></returns>
public string TestFlow2020_StartIt()
{
string sid = this.GetRequestVal("Token");
if (WebUser.IsAdmin == false)
return "err@非管理员无法测试";
//用户编号.
string userNo = this.GetRequestVal("UserNo");
//BP.Cloud.Dev2Interface.Port_Login(userID:,)
//判断是否可以测试该流程?
//组织url发起该流程.
string url = "../../../WF/Admin/TestingContainer/Default.html?RunModel=2&FK_Flow=" + this.FK_Flow + "&UserNo=" + userNo;
url += "&OrgNo=" + WebUser.OrgNo;
url += "&Adminer=" + WebUser.No;
url += "&AdminerToken=" + sid;
return url;
}
/// <summary>
/// 初始化
/// </summary>
/// <returns></returns>
public string TestFlow2020_Init()
{
//清除缓存.
BP.Difference.SystemConfig.DoClearCash();
if (BP.Web.WebUser.IsAdmin == false)
return "err@您不是管理员,无法执行该操作.";
FlowExt fl = new FlowExt(this.FK_Flow);
//if ( fl.Tester.Length <= 1)
//{
// string msg = "err@二级管理员[" + BP.Web.WebUser.Name + "]您好,您尚未为该流程配置测试人员.";
// msg += "您需要在流程属性里的底部[设置流程发起测试人]的属性里,设置可以发起的测试人员,多个人员用逗号分开.";
// return msg;
//}
#region 检查是否是测试用户
int nodeid = int.Parse(this.FK_Flow + "01");
DataTable dt = null;
string sql = "";
BP.WF.Node nd = new BP.WF.Node(nodeid);
if (nd.IsGuestNode)
{
/*如果是 guest 节点,就让其跳转到 guest登录界面让其发起流程。*/
//这个地址需要配置.
return "url@/SDKFlowDemo/GuestApp/Login.htm?FK_Flow=" + this.FK_Flow;
}
#endregion 测试人员.
#region 从配置里获取-测试人员.
/* 检查是否设置了测试人员,如果设置了就按照测试人员身份进入
* 设置测试人员的目的是太多了人员影响测试效率.
* */
if (fl.Tester.Length > 2)
{
// 构造人员表.
DataTable dtEmps = new DataTable();
dtEmps.Columns.Add("No");
dtEmps.Columns.Add("Name");
dtEmps.Columns.Add("FK_DeptText");
string[] strs = fl.Tester.Split(',');
foreach (string str in strs)
{
if (DataType.IsNullOrEmpty(str) == true)
continue;
BP.Cloud.Emp emp = new BP.Cloud.Emp();
emp.OrgNo = this.GetRequestVal("OrgNo");
emp.UserID = str;
emp.No = emp.OrgNo + "_" + emp.UserID;
//emp.SetValByKey("UserID", str);
int i = emp.RetrieveFromDBSources();
if (i == 0)
continue;
DataRow dr = dtEmps.NewRow();
dr["No"] = emp.No;
dr["Name"] = emp.Name;
dr["FK_DeptText"] = emp.FK_DeptText;
dtEmps.Rows.Add(dr);
}
if (dtEmps.Rows.Count > 0)
return BP.Tools.Json.ToJson(dtEmps);
}
#endregion 测试人员.
#region 从设置里获取-测试人员.
try
{
switch (nd.HisDeliveryWay)
{
case DeliveryWay.ByStation:
case DeliveryWay.ByStationOnly:
sql = "SELECT A.No AS No,A.Name AS Name,B.Name AS FK_DeptText FROM Port_Emp A ,Port_Dept B,Port_DeptEmpStation C,WF_NodeStation D WHERE A.FK_Dept=B.No AND C.FK_Emp=A.No AND C.FK_Dept=B.No AND D.FK_Station=C.FK_Station AND A.OrgNo='" + WebUser.OrgNo + "' AND D.FK_Node=" + nd.NodeID;
// emps.RetrieveInSQL_Order("select fk_emp from Port_Empstation WHERE fk_station in (select fk_station from WF_NodeStation WHERE FK_Node=" + nodeid + " )", "FK_Dept");
break;
case DeliveryWay.ByDept:
sql = "select A.No,A.Name,D.Name AS FK_DeptText from Port_Emp A,Port_Dept D where A.FK_Dept=D.No AND A.OrgNo='" + WebUser.OrgNo + "' AND A.FK_Dept in (select FK_Dept from WF_NodeDept where FK_Node='" + nodeid + "') ";
//emps.RetrieveInSQL("");
break;
case DeliveryWay.ByBindEmp:
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
sql = "SELECT A.No,A.Name,D.Name AS FK_DeptText FROM Port_Emp A,Port_Dept D where A.FK_Dept=D.No AND A.OrgNo='" + WebUser.OrgNo + "' AND A.No in (select FK_Emp from WF_NodeEmp where FK_Node='" + nodeid + "') ";
else
sql = "SELECT A.No,A.Name,D.Name AS FK_DeptText FROM Port_Emp A,Port_Dept D where A.FK_Dept=D.No AND A.OrgNo='" + WebUser.OrgNo + "' AND A.UserID in (select FK_Emp from WF_NodeEmp where FK_Node='" + nodeid + "') ";
//emps.RetrieveInSQL("select fk_emp from wf_NodeEmp WHERE fk_node=" + int.Parse(this.FK_Flow + "01") + " ");
break;
case DeliveryWay.ByDeptAndStation:
sql = "SELECT A.No AS No,A.Name AS Name ,B.Name AS FK_DeptText"
+ " FROM Port_Emp A,Port_Dept B, Port_DeptEmpStation C,WF_NodeDept D,WF_NodeStation E"
+ " WHERE A.FK_Dept = B.No AND (A.No=C.FK_Emp OR A.UserID=C.FK_Emp) AND B.No=C.FK_Dept AND C.FK_Dept = D.FK_Dept AND C.FK_Station=E.FK_Station AND D.FK_Node=E.FK_Node"
+ " AND E.FK_Node="+nodeid
+ " AND C.OrgNo='"+WebUser.OrgNo + "'"
+ " ORDER BY "
+ " C.FK_Emp";
break;
case DeliveryWay.BySelected: //所有的人员多可以启动, 2016年11月开始约定此规则.
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.Single)
sql = "SELECT a.No,a.Name,b.Name as FK_DeptText FROM Port_Emp A,Port_Dept B WHERE A.FK_Dept=B.No ";
else
sql = "SELECT a.No,a.Name,b.Name as FK_DeptText FROM Port_Emp A,Port_Dept B WHERE a.OrgNo='" + WebUser.OrgNo + "' AND A.FK_Dept=B.No AND B.OrgNo='" + WebUser.OrgNo + "' ";
dt = BP.DA.DBAccess.RunSQLReturnTable(sql);
break;
case DeliveryWay.BySQL:
if (DataType.IsNullOrEmpty(nd.DeliveryParas))
return "err@您设置的按SQL访问开始节点但是您没有设置sql.";
break;
default:
break;
}
dt = BP.DA.DBAccess.RunSQLReturnTable(sql);
if (dt.Rows.Count == 0)
return "err@您按照:" + nd.HisDeliveryWay + "的方式设置的开始节点的访问规则,但是开始节点没有人员。" + sql;
if (dt.Rows.Count > 2000)
return "err@可以发起开始节点的人员太多,会导致系统崩溃变慢,您需要在流程属性里设置可以发起的测试用户.";
//返回数据源.
return BP.Tools.Json.ToJson(dt);
#endregion 从设置里获取-测试人员.
}
catch (Exception ex)
{
return "err@<h2>您没有正确的设置开始节点的访问规则,这样导致没有可启动的人员,<a href='http://bbs.citydo.com.cn/showtopic-4103.aspx' target=_blank ><font color=red>点击这查看解决办法</font>.</a>。</h2> 系统错误提示:" + ex.Message + "<br><h3>也有可能你你切换了OSModel导致的什么是OSModel,请查看在线帮助文档 <a href='http://ccbpm.mydoc.io' target=_blank>http://ccbpm.mydoc.io</a> .</h3>";
}
}
#endregion
}
}