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.

1042 lines
40 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;
using System.Data;
using System.Text;
using BP.DA;
using BP.Web;
using BP.WF.Template;
using BP.WF.XML;
using BP.WF.Port.Admin2Group;
using BP.Difference;
namespace BP.WF.HttpHandler
{
/// <summary>
/// 初始化函数
/// </summary>
public class WF_Admin_CCBPMDesigner : DirectoryPageBase
{
/// <summary>
/// 选择器
/// </summary>
/// <returns></returns>
public string SelectFlows_Init()
{
string fk_flowsort = this.GetRequestVal("FK_FlowSort").Substring(1);
if (DataType.IsNullOrEmpty(fk_flowsort) == true || fk_flowsort.Equals("undefined") == true)
fk_flowsort = "99";
DataSet ds = new DataSet();
string sql = "";
if (DBAccess.AppCenterDBType == DBType.MySQL)
sql = "SELECT CONCAT('F' , No) as No,Name, CONCAT('F' ,ParentNo) as ParentNo FROM WF_FlowSort WHERE No='" + fk_flowsort + "' OR ParentNo='" + fk_flowsort + "' ORDER BY Idx";
else
sql = "SELECT 'F' + No as No,Name, 'F' + ParentNo as ParentNo FROM WF_FlowSort WHERE No='" + fk_flowsort + "' OR ParentNo='" + fk_flowsort + "' ORDER BY Idx";
DataTable dtFlowSorts = DBAccess.RunSQLReturnTable(sql);
//if (dtFlowSort.Rows.Count == 0)
//{
// fk_dept = BP.Web.WebUser.FK_Dept;
// sql = "SELECT No,Name,ParentNo FROM Port_Dept WHERE No='" + fk_dept + "' OR ParentNo='" + fk_dept + "' ORDER BY Idx ";
// dtDept = DBAccess.RunSQLReturnTable(sql);
//}
dtFlowSorts.TableName = "FlowSorts";
ds.Tables.Add(dtFlowSorts);
if (BP.Difference.SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
{
dtFlowSorts.Columns[0].ColumnName = "No";
dtFlowSorts.Columns[1].ColumnName = "Name";
dtFlowSorts.Columns[2].ColumnName = "ParentNo";
}
//sql = "SELECT No,Name, FK_Dept FROM Port_Emp WHERE FK_Dept='" + fk_dept + "' ";
if (DBAccess.AppCenterDBType == DBType.MySQL)
sql = "SELECT No,CONCAT(NO ,'.',NAME) as Name, CONCAT('F',FK_FlowSort) as ParentNo, Idx FROM WF_Flow where FK_FlowSort='" + fk_flowsort + "' ";
else
sql = "SELECT No,(NO + '.' + NAME) as Name, 'F' + FK_FlowSort as ParentNo, Idx FROM WF_Flow where FK_FlowSort='" + fk_flowsort + "' ";
sql += " ORDER BY Idx ";
DataTable dtFlows = DBAccess.RunSQLReturnTable(sql);
dtFlows.TableName = "Flows";
ds.Tables.Add(dtFlows);
if (BP.Difference.SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
{
dtFlows.Columns[0].ColumnName = "No";
dtFlows.Columns[1].ColumnName = "Name";
dtFlows.Columns[2].ColumnName = "FK_FlowSort";
}
//转化为 json
return BP.Tools.Json.DataSetToJson(ds, false);
}
/// <summary>
/// 按照管理员登录.
/// </summary>
/// <param name="userNo">管理员编号</param>
/// <returns>登录信息</returns>
public string AdminerChang_LoginAs()
{
string orgNo = this.GetRequestVal("OrgNo");
WebUser.OrgNo = this.OrgNo;
return "info@登录成功, 如果系统不能自动刷新,请手工刷新。";
}
public string Flows_Init()
{
DataTable dt = new DataTable();
dt.Columns.Add("FlowNo");
dt.Columns.Add("FlowName");
dt.Columns.Add("NumOfRuning"); //运行中的.
dt.Columns.Add("NumOfOK"); //已经完成的.
dt.Columns.Add("NumOfEtc"); //其他.
Flows fls = new Flows();
fls.RetrieveAll();
foreach (Flow fl in fls)
{
DataRow dr = dt.NewRow();
dr["FlowNo"] = fl.No;
dr["FlowName"] = fl.Name;
dr["NumOfRuning"] = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM WF_GenerWorkFlow WHERE FK_Flow='" + fl.No + "' AND WFState in (2,5)", 0);
dr["NumOfOK"] = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM WF_GenerWorkFlow WHERE FK_Flow='" + fl.No + "' AND WFState = 3 ", 0);
dr["NumOfEtc"] = DBAccess.RunSQLReturnValInt("SELECT COUNT(*) FROM WF_GenerWorkFlow WHERE FK_Flow='" + fl.No + "' AND WFState in (4,5,6,7,8) ", 0);
dt.Rows.Add(dr);
}
return BP.Tools.Json.ToJson(dt);
}
/// <summary>
/// 构造函数
/// </summary>
public WF_Admin_CCBPMDesigner()
{
}
/// <summary>
/// 执行流程设计图的保存.
/// </summary>
/// <returns></returns>
public string Designer_Save()
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@当前您【" + WebUser.No + "," + WebUser.Name + "】不是管理员,请重新登录.造成这种原因是您在测试容器没有正常退回造成的.";
string sql = "";
try
{
Flow flow = new Flow(this.FK_Flow);
StringBuilder sBuilder = new StringBuilder();
//保存方向.
sBuilder = new StringBuilder();
string[] dirs = this.GetRequestVal("Dirs").Split('@');
Direction mydir = new Direction();
foreach (string item in dirs)
{
if (item == "" || item == null)
continue;
string[] strs = item.Split(',');
mydir.setMyPK(strs[0]);
if (mydir.IsExits == true)
continue;
sBuilder.Append("DELETE FROM WF_Direction WHERE MyPK='" + strs[0] + "';");
sBuilder.Append("INSERT INTO WF_Direction (MyPK,FK_Flow,Node,ToNode) VALUES ('" + strs[0] + "','" + strs[1] + "','" + strs[2] + "','" + strs[3] + "');");
}
DBAccess.RunSQLs(sBuilder.ToString());
//保存label位置.
sBuilder = new StringBuilder();
string[] labs = this.GetRequestVal("Labs").Split('@');
foreach (string item in labs)
{
if (DataType.IsNullOrEmpty(item) == true)
continue;
string[] strs = item.Split(',');
sBuilder.Append("UPDATE WF_LabNote SET X=" + strs[1] + ",Y=" + strs[2] + " WHERE MyPK='" + strs[0] + "';");
}
string sqls = sBuilder.ToString();
DBAccess.RunSQLs(sqls);
//更新节点 HisToNDs不然就需要检查一遍.
BP.WF.Nodes nds = new Nodes();
nds.Retrieve(BP.WF.Template.NodeAttr.FK_Flow, this.FK_Flow);
//获得方向集合处理toNodes
Directions mydirs = new Directions(this.FK_Flow);
string mystrs = "";
foreach (Node item in nds)
{
string strs = "";
foreach (Direction dir in mydirs)
{
if (dir.Node != item.NodeID)
continue;
strs += "@" + dir.ToNode;
}
int nodePosType = 0;
if (item.IsStartNode == true)
nodePosType = 0;
else if (DataType.IsNullOrEmpty(strs) == true)
nodePosType = 2;
else
nodePosType = 1;
DBAccess.RunSQL("UPDATE WF_Node SET HisToNDs='" + strs + "',NodePosType=" + nodePosType + " WHERE NodeID=" + item.NodeID);
DBAccess.RunSQL("UPDATE Sys_MapData SET Name='"+item.Name+"' WHERE No='ND"+item.NodeID+"'");
}
//获取所有子流程
string subs = this.GetRequestVal("SubFlows");
int subFlowShowType = flow.GetValIntByKey(FlowAttr.SubFlowShowType);
if (DataType.IsNullOrEmpty(subs) == false && subFlowShowType == 0)
{
string[] subFlows = subs.Split('@');
foreach (string item in subFlows)
{
if (DataType.IsNullOrEmpty(item) == true)
continue;
String[] strs = item.Split(',');
sBuilder.Append("UPDATE WF_NodeSubFlow SET X=" + strs[1] + ",Y=" + strs[2] + " WHERE MyPK='" + strs[0] + "';");
}
}
//保存节点位置. @101,2,30@102,3,1
string[] nodes = this.GetRequestVal("Nodes").Split('@');
foreach (string item in nodes)
{
if (DataType.IsNullOrEmpty(item) == true)
continue;
string[] strs = item.Split(',');
string nodeID = strs[0]; //获得nodeID.
if (subFlowShowType == 1 && subs.IndexOf(nodeID) != -1)
{
string sub = subs.Substring(subs.IndexOf("@\"" + nodeID) + 1);
if (sub.Contains("@") == true)
sub = sub.Substring(0, sub.IndexOf("@"));
string[] subInfo = sub.Split(',');
sBuilder.Append("UPDATE WF_Node SET X=" + strs[1] + ",Y=" + strs[2] + ",Name='" + strs[3] + "',SubFlowX=" + subInfo[1] + ", SubFlowY=" + subInfo[2] + " WHERE NodeID=" + strs[0] + ";");
}
else
{
sBuilder.Append("UPDATE WF_Node SET X=" + strs[1] + ",Y=" + strs[2] + ",Name='" + strs[3] + "' WHERE NodeID=" + strs[0] + ";");
}
}
DBAccess.RunSQLs(sBuilder.ToString());
// DBAccess.RunSQL("update WF_Direction set ToNodeName=WF_Node.Name from WF_Node where //WF_Direction.ToNode=WF_Node.NodeID AND WF_Direction.FK_FlOW='" + this.FK_Flow+"'");
#region 更新节点名称.
switch (SystemConfig.AppCenterDBType)
{
case DBType.MSSQL:
case DBType.KingBaseR3:
case DBType.KingBaseR6:
sql = " UPDATE WF_Direction SET ToNodeName = WF_Node.Name FROM WF_Node ";
sql += " WHERE WF_Direction.ToNode = WF_Node.NodeID AND WF_Direction.FK_Flow='" + this.FK_Flow + "'";
break;
case DBType.Oracle:
sql = "UPDATE WF_Direction E SET ToNodeName=(SELECT U.Name FROM WF_Node U WHERE E.ToNode=U.NodeID AND U.FK_Flow='" + this.FK_Flow + "') WHERE EXISTS (SELECT 1 FROM WF_Node U WHERE E.ToNode=U.NodeID AND U.FK_Flow='" + this.FK_Flow + "')";
break;
default:
sql = "UPDATE WF_Direction A, WF_Node B SET A.ToNodeName=B.Name WHERE A.ToNode=B.NodeID AND A.FK_Flow='" + this.FK_Flow + "' ";
break;
}
DBAccess.RunSQL(sql);
#endregion 更新节点名称.
//清楚缓存.
Cash.ClearCash();
// Node nd = new Node(102);
// throw new Exception(nd.Name);
return "保存成功.";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 下载流程模版
/// </summary>
/// <returns></returns>
public string ExpFlowTemplete()
{
Flow flow = new Flow(this.FK_Flow);
string fileXml = flow.GenerFlowXmlTemplete();
string docs = DataType.ReadTextFile(fileXml);
return docs;
}
/// <summary>
/// 返回临时文件.
/// </summary>
/// <returns></returns>
public string DownFormTemplete()
{
DataSet ds = BP.Sys.CCFormAPI.GenerHisDataSet_AllEleInfo(this.FK_MapData);
string file = BP.Difference.SystemConfig.PathOfTemp + this.FK_MapData + ".xml";
ds.WriteXml(file);
string docs = DataType.ReadTextFile(file);
return docs;
}
/// <summary>
/// 使管理员登录使管理员登录 /// </summary>
/// <returns></returns>
public string LetLogin()
{
LetAdminLogin(this.GetRequestVal("UserNo"), true);
return "登录成功.";
}
/// <summary>
/// 获得枚举列表的JSON.
/// </summary>
/// <returns></returns>
public string Logout()
{
BP.WF.Dev2Interface.Port_SigOut();
return "您已经安全退出,欢迎使用ccbpm.";
}
/// <summary>
/// 根据部门、角色获取人员列表
/// </summary>
/// <returns></returns>
public string GetEmpsByStationTable()
{
string deptid = this.GetRequestVal("DeptNo");
string stid = this.GetRequestVal("StationNo");
if (string.IsNullOrWhiteSpace(deptid) || string.IsNullOrWhiteSpace(stid))
return "[]";
DataTable dt = new DataTable();
dt.Columns.Add("NO", typeof(string));
dt.Columns.Add("PARENTNO", typeof(string));
dt.Columns.Add("NAME", typeof(string));
dt.Columns.Add("TTYPE", typeof(string));
BP.Port.Emp emp = null;
BP.Port.Emps emps = new BP.Port.Emps();
emps.RetrieveAll();
BP.Port.DeptEmpStations dess = new BP.Port.DeptEmpStations();
dess.Retrieve(BP.Port.DeptEmpStationAttr.FK_Dept, deptid, BP.Port.DeptEmpStationAttr.FK_Station, stid);
foreach (BP.Port.DeptEmpStation des in dess)
{
emp = emps.GetEntityByKey(des.FK_Emp) as BP.Port.Emp;
dt.Rows.Add(emp.No, deptid + "|" + stid, emp.Name, "EMP");
}
return BP.Tools.Json.ToJson(dt);
}
public string GetStructureTreeRootTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("NO", typeof(string));
dt.Columns.Add("PARENTNO", typeof(string));
dt.Columns.Add("NAME", typeof(string));
dt.Columns.Add("TTYPE", typeof(string));
string parentrootid = this.GetRequestVal("parentrootid"); // context.Request.QueryString["parentrootid"];
string newRootId = "";
if (WebUser.No != "admin")
{
newRootId = WebUser.OrgNo;
}
BP.Port.Dept dept = new BP.Port.Dept();
if (!string.IsNullOrWhiteSpace(newRootId))
{
if (dept.Retrieve(BP.Port.DeptAttr.No, newRootId) == 0)
{
dept.No = "-1";
dept.Name = "无部门";
dept.ParentNo = "";
}
}
else
{
if (dept.Retrieve(BP.Port.DeptAttr.ParentNo, parentrootid) == 0)
{
dept.No = "-1";
dept.Name = "无部门";
dept.ParentNo = "";
}
}
dt.Rows.Add(dept.No, dept.ParentNo, dept.Name, "DEPT");
return BP.Tools.Json.ToJson(dt);
}
#region 主页.
/// <summary>
/// 初始化登录界面.
/// </summary>
/// <returns></returns>
public string Default_Init()
{
try
{
//如果登录信息丢失了,就让其重新登录一次.
if (DataType.IsNullOrEmpty(BP.Web.WebUser.NoOfRel) == true)
{
string userNo = this.GetRequestVal("UserNo");
string sid = this.GetRequestVal("Token");
BP.WF.Dev2Interface.Port_LoginByToken(sid);
}
if (BP.Web.WebUser.IsAdmin == false)
return "url@Login.htm?DoType=Logout&Err=NoAdminUsers";
//如果没有流程表,就执行安装.
if (DBAccess.IsExitsObject("WF_Flow") == false)
return "url@../DBInstall.htm";
Hashtable ht = new Hashtable();
ht.Add("OSModel", "1");
//把系统信息加入里面去.
ht.Add("SysNo", BP.Difference.SystemConfig.SysNo);
ht.Add("SysName", BP.Difference.SystemConfig.SysName);
ht.Add("CustomerNo", BP.Difference.SystemConfig.CustomerNo);
ht.Add("CustomerName", BP.Difference.SystemConfig.CustomerName);
//集成的平台.
ht.Add("RunOnPlant", BP.Difference.SystemConfig.RunOnPlant);
try
{
// 执行升级
string str = BP.WF.Glo.UpdataCCFlowVer();
if (str == null)
str = "";
ht.Add("Msg", str);
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
//生成Json.
return BP.Tools.Json.ToJsonEntityModel(ht);
}
catch (Exception ex)
{
return "err@初始化界面期间出现如下错误:" + ex.Message;
}
}
#endregion
#region 登录窗口.
public string Login_InitInfo()
{
Hashtable ht = new Hashtable();
ht.Add("SysNo", BP.Difference.SystemConfig.SysNo);
ht.Add("SysName", BP.Difference.SystemConfig.SysName);
return BP.Tools.Json.ToJson(ht);
}
/// <summary>
/// 初始化登录界面.
/// </summary>
/// <returns></returns>
public string Login_Init()
{
//检查数据库连接.
try
{
DBAccess.TestIsConnection();
}
catch (Exception ex)
{
return "err@异常信息:" + ex.Message;
}
//检查是否缺少Port_Emp 表,如果没有就是没有安装.
if (DBAccess.IsExitsObject("Port_Emp") == false && DBAccess.IsExitsObject("WF_Flow") == false)
return "url@../DBInstall.htm";
////让admin登录
//if (DataType.IsNullOrEmpty(BP.Web.WebUser.No) || BP.Web.WebUser.IsAdmin == false)
// return "url@Login.htm?DoType=Logout";
//如果没有流程表,就执行安装.
if (DBAccess.IsExitsObject("WF_Flow") == false)
return "url@../DBInstall.htm";
//是否需要自动登录。 这里都把cookeis的数据获取来了.
string userNo = this.GetRequestVal("UserNo");
string sid = this.GetRequestVal("Token");
if (String.IsNullOrEmpty(sid) == false && String.IsNullOrEmpty(userNo) == false)
{
/* 如果都有值,就需要他登录。 */
try
{
string str = BP.WF.Glo.UpdataCCFlowVer();
BP.WF.Dev2Interface.Port_LoginByToken(sid);
if (this.FK_Flow == null)
return "url@Default.htm?UserNo=" + userNo + "&OrgNo=" + WebUser.OrgNo + "&Key=" + DateTime.Now.ToBinary() + "&Token=" + sid;
else
return "url@Designer.htm?UserNo=" + userNo + "&OrgNo=" + WebUser.OrgNo + "&FK_Flow=" + this.FK_Flow + "&Key=" + DateTime.Now.ToBinary() + "&Token=" + sid;
}
catch (Exception ex)
{
return "err@登录失败" + ex.Message;
}
}
try
{
// 执行升级
string str = BP.WF.Glo.UpdataCCFlowVer();
if (str == null)
str = "准备完毕,欢迎登录,当前小版本号为:" + BP.WF.Glo.Ver;
return str;
}
catch (Exception ex)
{
string msg = "err@升级失败(ccbpm有自动修复功能,您可以刷新一下系统会自动创建字段,刷新多次扔解决不了问题,请反馈给我们)";
msg += "@系统信息:" + ex.Message;
return msg;
}
}
//流程设计器登陆前台转向规则判断是否为天业BPM
public string Login_Redirect()
{
if (BP.Difference.SystemConfig.CustomerNo == "TianYe")
return "url@../../../BPM/pages/login.html";
return "url@../../AppClassic/Login.htm?DoType=Logout";
}
/// <summary>
///初始化当前登录人的下的所有组织
/// </summary>
/// <returns></returns>
public string SelectOneOrg_Init()
{
Orgs orgs = new Orgs();
// orgs.Retrieve("Adminer", WebUser.No);
orgs.RetrieveInSQL("SELECT OrgNo FROM Port_OrgAdminer WHERE FK_Emp='" + WebUser.No + "'");
return orgs.ToJson();
}
/// <summary>
///选择一个组织
/// </summary>
/// <returns></returns>
public string SelectOneOrg_Selected()
{
WebUser.OrgNo = this.OrgNo;
//找到管理员所在的部门.
string sql = "SELECT a.No FROM Port_Dept A,Port_DeptEmp B WHERE A.No=B.FK_Dept AND B.FK_Emp='" + WebUser.No + "' AND A.OrgNo='" + this.OrgNo + "'";
string deptNo = DBAccess.RunSQLReturnStringIsNull(sql, this.OrgNo);
WebUser.FK_Dept = deptNo;
//执行更新到用户表信息.
WebUser.UpdateSIDAndOrgNoSQL();
return "url@Default.htm?Token=" + WebUser.Token + "&UserNo=" + WebUser.No + "&OrgNo=" + WebUser.OrgNo;
// return "登录成功.";
}
#endregion 登录窗口.
#region 流程相关 Flow
/// <summary>
/// 获取流程所有元素
/// </summary>
/// <returns>json data</returns>
//public string Flow_AllElements_ResponseJson()
//{
// BP.WF.Flow flow = new BP.WF.Flow();
// flow.No = this.FK_Flow;
// flow.RetrieveFromDBSources();
// DataSet ds = new DataSet();
// DataTable dtNodes = DBAccess.RunSQLReturnTable("SELECT NODEID,NAME,X,Y,RUNMODEL FROM WF_NODE WHERE FK_FLOW='" + this.FK_Flow + "'");
// dtNodes.TableName = "Nodes";
// if (BP.Difference.SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
// {
// dtNodes.Columns[0].ColumnName = "NodeID";
// dtNodes.Columns[1].ColumnName = "Name";
// dtNodes.Columns[2].ColumnName = "X";
// dtNodes.Columns[3].ColumnName = "Y";
// dtNodes.Columns[4].ColumnName = "RunModel";
// }
// ds.Tables.Add(dtNodes);
// DataTable dtDirection = DBAccess.RunSQLReturnTable("SELECT NODE,TONODE FROM WF_DIRECTION WHERE FK_FLOW='" + this.FK_Flow + "'");
// dtDirection.TableName = "Direction";
// ds.Tables.Add(dtDirection);
// DataTable dtLabNote = DBAccess.RunSQLReturnTable("SELECT MYPK,NAME,X,Y FROM WF_LABNOTE WHERE FK_FLOW='" + this.FK_Flow + "'");
// dtLabNote.TableName = "LabNote";
// ds.Tables.Add(dtLabNote);
// // return BP.Tools.Json.DataSetToJson(ds, false);
// return BP.Tools.Json.ToJson(ds);
//}
#endregion end Flow
#region 节点相关 Nodes
/// <summary>
/// 根据节点编号删除流程节点
/// </summary>
/// <returns>执行结果</returns>
public string DeleteNode()
{
try
{
BP.WF.Node node = new BP.WF.Node();
node.NodeID = this.FK_Node;
if (node.RetrieveFromDBSources() == 0)
return "err@删除失败,没有删除到数据,估计该节点已经别删除了.";
if (node.IsStartNode == true)
return "err@开始节点不允许被删除。";
node.Delete();
return "删除成功.";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 修改节点名称
/// </summary>
/// <returns></returns>
public string Node_EditNodeName()
{
string FK_Node = this.GetValFromFrmByKey("NodeID");
//string NodeName = System.Web.HttpContext.Current.Server.UrlDecode(this.GetValFromFrmByKey("NodeName"));
string NodeName = HttpContextHelper.UrlDecode(this.GetValFromFrmByKey("NodeName"));
BP.WF.Node node = new BP.WF.Node();
node.NodeID = int.Parse(FK_Node);
int iResult = node.RetrieveFromDBSources();
if (iResult > 0)
{
node.Name = NodeName;
node.Update();
return "@修改成功.";
}
return "err@修改节点失败,请确认该节点是否存在?";
}
///// <summary>
///// 修改节点运行模式
///// </summary>
///// <returns></returns>
//public string Node_ChangeRunModel()
//{
// string runModel = GetValFromFrmByKey("RunModel");
// BP.WF.Node node = new BP.WF.Node(this.FK_Node);
// //节点运行模式
// switch (runModel)
// {
// case "NodeOrdinary":
// node.HisRunModel = BP.WF.RunModel.Ordinary;
// break;
// case "NodeFL":
// node.HisRunModel = BP.WF.RunModel.FL;
// break;
// case "NodeHL":
// node.HisRunModel = BP.WF.RunModel.HL;
// break;
// case "NodeFHL":
// node.HisRunModel = BP.WF.RunModel.FHL;
// break;
// case "NodeSubThread":
// node.HisRunModel = BP.WF.RunModel.SubThread;
// break;
// }
// node.Update();
// return "设置成功.";
//}
#endregion end Node
#region CCBPMDesigner
StringBuilder sbJson = new StringBuilder();
public void GenerChildRows(DataTable dt, DataTable newDt, DataRow parentRow)
{
DataRow[] rows = dt.Select("ParentNo='" + parentRow["NO"] + "'");
foreach (DataRow r in rows)
{
newDt.Rows.Add(r.ItemArray);
GenerChildRows(dt, newDt, r);
}
}
//public string GetBindingFormsTable()
//{
// string fk_flow = GetValFromFrmByKey("fk_flow");
// if (string.IsNullOrWhiteSpace(fk_flow))
// return "[]";
// StringBuilder sql = new StringBuilder();
// sql.AppendLine("SELECT wfn.FK_Frm NO,");
// sql.AppendLine(" smd.NAME,");
// sql.AppendLine(" NULL PARENTNO,");
// sql.AppendLine(" 'FORM' TTYPE,");
// sql.AppendLine(" -1 DTYPE,");
// sql.AppendLine(" 0 ISPARENT");
// sql.AppendLine("FROM WF_FrmNode wfn");
// sql.AppendLine(" INNER JOIN Sys_MapData smd");
// sql.AppendLine(" ON smd.No=wfn.FK_Frm");
// sql.AppendLine("WHERE wfn.FK_Flow = '{0}'");
// sql.AppendLine(" AND wfn.FK_Node = (");
// sql.AppendLine(" SELECT wn.NodeID");
// sql.AppendLine(" FROM WF_Node wn");
// sql.AppendLine(" WHERE wn.FK_Flow = '{0}' AND wn.NodePosType = 0");
// sql.AppendLine(" )");
// DataTable dt = DBAccess.RunSQLReturnTable(string.Format(sql.ToString(), fk_flow));
// return BP.Tools.Json.ToJson(dt);
//}
/// <summary>
/// 获取设计器 - 系统维护菜单数据
/// 系统维护管理员菜单 需要翻译
/// </summary>
/// <returns></returns>
//public string GetTreeJson_AdminMenu()
//{
// string treeJson = string.Empty;
// //查询全部.
// AdminMenus groups = new AdminMenus();
// groups.RetrieveAll();
// return BP.Tools.Json.ToJson(groups.ToDataTable());
// return treeJson;
//}
/// <summary>
/// 根据DataTable生成Json树结构
/// </summary>
//public string GetTreeJsonByTable(DataTable tabel, object pId, string rela = "ParentNo", string idCol = "No", string txtCol = "Name", string IsParent = "IsParent", string sChecked = "", string[] attrFields = null)
//{
// string treeJson = string.Empty;
// if (tabel.Rows.Count > 0)
// {
// sbJson.Append("[");
// string filer = string.Empty;
// if (pId.ToString() == "")
// {
// filer = string.Format("{0} is null or {0}='-1' or {0}='0' or {0}='F0'", rela);
// }
// else
// {
// filer = string.Format("{0}='{1}'", rela, pId);
// }
// DataRow[] rows = tabel.Select(filer, idCol);
// if (rows.Length > 0)
// {
// for (int i = 0; i < rows.Length; i++)
// {
// DataRow row = rows[i];
// string jNo = row[idCol] as string;
// string jText = row[txtCol] as string;
// if (jText.Length > 25)
// jText = jText.Substring(0, 25) + "<img src='../Scripts/easyUI/themes/icons/add2.png' onclick='moreText(" + jNo + ")'/>";
// string jIsParent = row[IsParent].ToString();
// string jState = "1".Equals(jIsParent) ? "open" : "closed";
// jState = "open".Equals(jState) && i == 0 ? "open" : "closed";
// DataRow[] rowChild = tabel.Select(string.Format("{0}='{1}'", rela, jNo));
// string tmp = "{\"id\":\"" + jNo + "\",\"text\":\"" + jText;
// //增加自定义attributes列added by liuxc,2015-10-6
// var attrs = string.Empty;
// if (attrFields != null && attrFields.Length > 0)
// {
// foreach (var field in attrFields)
// {
// if (!tabel.Columns.Contains(field)) continue;
// if (DataType.IsNullOrEmpty(row[field].ToString()))
// {
// attrs += ",\"" + field + "\":\"\"";
// continue;
// }
// attrs += ",\"" + field + "\":" +
// (tabel.Columns[field].DataType == typeof(string)
// ? string.Format("\"{0}\"", row[field])
// : row[field]);
// }
// }
// if ("0".Equals(pId.ToString()) || row[rela].ToString() == "F0")
// {
// tmp += "\",\"attributes\":{\"IsParent\":\"" + jIsParent + "\",\"IsRoot\":\"1\"" + attrs + "}";
// }
// else
// {
// tmp += "\",\"attributes\":{\"IsParent\":\"" + jIsParent + "\"" + attrs + "}";
// }
// if (rowChild.Length > 0)
// {
// tmp += ",\"checked\":" + sChecked.Contains("," + jNo + ",").ToString().ToLower()
// + ",\"state\":\"" + jState + "\"";
// }
// else
// {
// tmp += ",\"checked\":" + sChecked.Contains("," + jNo + ",").ToString().ToLower();
// }
// sbJson.Append(tmp);
// if (rowChild.Length > 0)
// {
// sbJson.Append(",\"children\":");
// GetTreeJsonByTable(tabel, jNo, rela, idCol, txtCol, IsParent, sChecked, attrFields);
// }
// sbJson.Append("},");
// }
// sbJson = sbJson.Remove(sbJson.Length - 1, 1);
// }
// sbJson.Append("]");
// treeJson = sbJson.ToString();
// }
// return treeJson;
//}
/// <summary>
/// 上移流程类别
/// </summary>
/// <returns></returns>
public String MoveUpFlowSort()
{
String fk_flowSort = this.GetRequestVal("FK_FlowSort").Replace("F", "");
FlowSort fsSub = new FlowSort(fk_flowSort); //传入的编号多出F符号需要替换掉
fsSub.DoUp();
return "F" + fsSub.No;
}
/// <summary>
/// 下移流程类别
/// </summary>
/// <returns></returns>
public String MoveDownFlowSort()
{
String fk_flowSort = this.GetRequestVal("FK_FlowSort").Replace("F", "");
FlowSort fsSub = new FlowSort(fk_flowSort); //传入的编号多出F符号需要替换掉
fsSub.DoDown();
return "F" + fsSub.No;
}
/// <summary>
/// 上移流程
/// </summary>
/// <returns></returns>
public string MoveUpFlow()
{
Flow flow = new Flow(this.FK_Flow);
flow.DoUp();
return flow.No;
}
/// <summary>
/// 下移流程
/// </summary>
/// <returns></returns>
public string MoveDownFlow()
{
Flow flow = new Flow(this.FK_Flow);
flow.DoDown();
return flow.No;
}
/// <summary>
/// 删除流程类别.
/// </summary>
/// <returns></returns>
public string DelFlowSort()
{
string fk_flowSort = this.GetRequestVal("FK_FlowSort").Replace("F", "");
FlowSort fs = new FlowSort();
fs.No = fk_flowSort;
//检查是否有流程?
Paras ps = new Paras();
ps.SQL = "SELECT COUNT(*) FROM WF_Flow WHERE FK_FlowSort=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "fk_flowSort";
ps.Add("fk_flowSort", fk_flowSort);
//string sql = "SELECT COUNT(*) FROM WF_Flow WHERE FK_FlowSort='" + fk_flowSort + "'";
if (DBAccess.RunSQLReturnValInt(ps) != 0)
return "err@该目录下有流程,您不能删除。";
//检查是否有子目录?
ps = new Paras();
ps.SQL = "SELECT COUNT(*) FROM WF_FlowSort WHERE ParentNo=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "ParentNo";
ps.Add("ParentNo", fk_flowSort);
//sql = "SELECT COUNT(*) FROM WF_FlowSort WHERE ParentNo='" + fk_flowSort + "'";
if (DBAccess.RunSQLReturnValInt(ps) != 0)
return "err@该目录下有子目录,您不能删除。";
fs.Delete();
return "删除成功.";
}
/// <summary>
/// 新建同级流程类别 对照需要翻译
/// </summary>
/// <returns></returns>
public string NewSameLevelFlowSort()
{
FlowSort fs = null;
fs = new FlowSort(this.No.Replace("F", "")); //传入的编号多出F符号需要替换掉.
string orgNo = fs.OrgNo; //记录原来的组织结构编号. 对照需要翻译
string sameNodeNo = fs.DoCreateSameLevelNode().No;
fs = new FlowSort(sameNodeNo);
fs.Name = this.Name;
fs.OrgNo = orgNo; // 组织结构编号. 对照需要翻译
fs.Update();
return "F" + fs.No;
}
/// <summary>
/// 新建下级类别.
/// </summary>
/// <returns></returns>
public string NewSubFlowSort()
{
FlowSort fsSub = new FlowSort(this.No.Replace("F", ""));//传入的编号多出F符号需要替换掉.
string orgNo = fsSub.OrgNo; //记录原来的组织结构编号. 对照需要翻译
string subNodeNo = fsSub.DoCreateSubNode().No;
FlowSort subFlowSort = new FlowSort(subNodeNo);
subFlowSort.Name = this.Name;
subFlowSort.OrgNo = orgNo; // 组织结构编号. 对照需要翻译.
subFlowSort.Update();
return "F" + subFlowSort.No;
}
/// <summary>
/// 表单树 - 删除表单类别
/// </summary>
/// <returns></returns>
public string CCForm_DelFormSort()
{
SysFormTree formTree = new SysFormTree(this.No);
//检查是否有子类别?
Paras ps = new Paras();
ps.SQL = "SELECT COUNT(*) FROM Sys_FormTree WHERE ParentNo=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "ParentNo";
ps.Add("ParentNo", this.No);
//string sql = "SELECT COUNT(*) FROM Sys_FormTree WHERE ParentNo='" + this.No + "'";
if (DBAccess.RunSQLReturnValInt(ps) != 0)
return "err@该目录下有子类别,您不能删除。";
//检查是否有表单?
ps = new Paras();
ps.SQL = "SELECT COUNT(*) FROM Sys_MapData WHERE FK_FormTree=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "FK_FormTree";
ps.Add("FK_FormTree", this.No);
//sql = "SELECT COUNT(*) FROM Sys_MapData WHERE FK_FormTree='" + this.No + "'";
if (DBAccess.RunSQLReturnValInt(ps) != 0)
return "err@该目录下有表单,您不能删除。";
formTree.Delete();
return "删除成功";
}
/// <summary>
/// 让admin登录
/// </summary>
/// <returns></returns>
public string LetAdminLoginByToken()
{
try
{
string userNo = this.GetRequestVal("UserNo");
string sid = this.GetRequestVal("Token");
BP.WF.Dev2Interface.Port_LoginByToken(sid);
return "info@登录成功";
}
catch (Exception ex)
{
return "err@登录失败:" + ex.Message;
}
}
/// <summary>
/// 让admin 登陆
/// </summary>
/// <param name="lang">当前的语言</param>
/// <returns>成功则为空,有异常时返回异常信息</returns>
public string LetAdminLogin(string empNo, bool islogin)
{
try
{
if (islogin)
{
BP.Port.Emp emp = new BP.Port.Emp(empNo);
WebUser.SignInOfGener(emp);
}
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
return "@登录成功.";
}
public string AdminerChange()
{
string mysql = "SELECT ";
mysql += "No as \"No\", ";
mysql += "Name as \"Name\", ";
mysql += "UseSta as \"UseSta\", ";
mysql += "RootOfDept as \"RootOfDept\" ";
mysql += " FROM WF_Emp WHERE No LIKE '" + this.GetRequestVal("UserNo") + "@%' ";
DataTable dt = DBAccess.RunSQLReturnTable(mysql);
return BP.Tools.Json.ToJson(dt);
}
#endregion
}
}