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.

2651 lines
94 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.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System;
using System.Data;
using BP.DA;
using BP.En;
using BP.Web;
using BP.Sys;
using BP.WF.Template;
using BP.WF.Template.Frm;
using BP.Difference;
namespace BP.WF.HttpHandler
{
/// <summary>
/// 处理页面的业务逻辑
/// </summary>
public class WF_Admin_FoolFormDesigner : DirectoryPageBase
{
#region 表单设计器.
public string Designer_Move()
{
//当前的MyPK.
string mypk = this.MyPK; //当前的主键.
//获得当前分组下的字段集合.
string mypks = this.GetRequestVal("MyPKs"); //字段集合.
int groupID = this.GetRequestValInt("GroupID");
GroupField gf = new GroupField(groupID);
if (gf.CtrlType.Equals("") == false)
return "err@你不能移动到【" + gf.Lab + "】它是非字段分组,您不能移动。";
string sql = "";
string[] strs = mypks.Split(',');
for (int i = 0; i < strs.Length; i++)
{
var str = strs[i];
if (str.Equals(mypk))
sql = "UPDATE Sys_MapAttr SET GroupID=" + groupID + ", Idx=" + i + " WHERE MyPK='" + str + "'";
else
sql = "UPDATE Sys_MapAttr SET Idx=" + i + " WHERE MyPK='" + str + "'";
DBAccess.RunSQL(sql);
}
return "表单顺序移动成功..";
}
/// <summary>
/// 字段分组移动.
/// </summary>
/// <returns></returns>
public string DesignerVue_GF_Move()
{
string[] strs = this.GetRequestVal("Vals").Split(',');
for (int i = 0; i < strs.Length; i++)
{
string str = strs[i];
if (DataType.IsNullOrEmpty(str))
continue;
string sql = "UPDATE Sys_GroupField SET Idx=" + i + " WHERE OID=" + str;
DBAccess.RunSQL(sql);
}
return "分组顺序移动成功...";
}
/// <summary>
/// 自动创建字段接口
/// </summary>
/// <returns></returns>
public string DesignerVue_CreateField()
{
//获得类型.
int dataType = int.Parse(this.GetRequestVal("DataType"));
int fIdx = int.Parse(this.GetRequestVal("Idx"));
MapAttr attr = new MapAttr();
int idx = 0;
while (true)
{
idx++;
string field = "F" + idx.ToString();
attr.MyPK = this.FrmID + "_" + field;
if (attr.IsExits == true)
continue;
// if (attr.IsExit("KeyOfEn", field, "FK_MapData", this.FrmID, "DataType", dataType) == true)
// continue;
if (dataType == BP.DA.DataType.AppString)
{
attr.setKeyOfEn(field);
attr.Name = "文字" + field;
attr.MyDataType = dataType;
attr.setMaxLen(50);
attr.setMinLen(0);
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppInt)
{
attr.setKeyOfEn(field);
attr.Name = "Int数值" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppBoolean)
{
attr.setKeyOfEn(field);
attr.Name = "开关类型:" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppMoney)
{
attr.setKeyOfEn(field);
attr.Name = "金额类型:" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppFloat)
{
attr.setKeyOfEn(field);
attr.Name = "Float数值" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppDouble)
{
attr.setKeyOfEn(field);
attr.Name = "Double数值" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppDate)
{
attr.setKeyOfEn(field);
attr.Name = "Date" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
if (dataType == BP.DA.DataType.AppDateTime)
{
attr.setKeyOfEn(field);
attr.Name = "DateTime" + field;
attr.MyDataType = dataType;
attr.setIdx(fIdx);
attr.Insert();
return attr.ToJson();
}
return "err@参数类型错误:dataType:" + dataType + ",没有判断.";
}
return "err@不应该运行到这里.";
}
/// <summary>
/// 删除字段
/// </summary>
/// <returns></returns>
public string DesignerVue_DeleteField()
{
MapAttr ma = new MapAttr(this.MyPK);
ma.Delete();
return "删除成功.";
}
/// <summary>
/// 是不是第一次进来.
/// </summary>
public bool IsFirst
{
get
{
if (this.GetRequestVal("IsFirst") == null || this.GetRequestVal("IsFirst") == "" || this.GetRequestVal("IsFirst") == "null")
return false;
return true;
}
}
/// <summary>
/// 检查表单
/// </summary>
/// <returns></returns>
public string Designer_CheckFrm()
{
#region 检查完整性.
if (this.FK_MapData.ToUpper().Contains("BP.") == true)
{
/*如果是类的实体.*/
Entities ens = ClassFactory.GetEns(this.FK_MapData);
Entity en = ens.GetNewEntity;
MapData mymd = new MapData();
mymd.No = this.FK_MapData;
mymd.ClearCash(); //清除缓存。
int i = mymd.RetrieveFromDBSources();
if (i == 0)
en.DTSMapToSys_MapData(this.FK_MapData); //调度数据到
mymd.RetrieveFromDBSources();
mymd.HisFrmType = FrmType.FoolForm;
mymd.Update();
}
#endregion
// MapFrmFool cols = new MapFrmFool(this.FK_MapData);
// cols.DoCheckFixFrmForUpdateVer();
return "url@Designer.htm?FK_MapData=" + this.FK_MapData + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + this.FK_Node;
}
/// <summary>
/// 设计器初始化.
/// </summary>
/// <returns></returns>
public string Designer_Init()
{
DataSet ds = new DataSet();
//如果是第一次进入,就执行旧版本的升级检查.
if (this.IsFirst == true)
{
return Designer_CheckFrm();
}
//把表单属性放入里面去.
MapData md = new MapData(this.FK_MapData);
//清缓存
md.ClearCash();
ds.Tables.Add(md.ToDataTableField("Sys_MapData").Copy());
// 字段属性.
MapAttrs mattrs = new MapAttrs(this.FK_MapData);
foreach (MapAttr item in mattrs)
item.DefVal = item.DefValReal;
ds.Tables.Add(mattrs.ToDataTableField("Sys_MapAttr"));
MapDtls dtls = new MapDtls();
dtls.Retrieve(MapDtlAttr.FK_MapData, this.FK_MapData, MapDtlAttr.FK_Node, 0);
ds.Tables.Add(dtls.ToDataTableField("Sys_MapDtl"));
GroupFields gfs = new GroupFields(this.FK_MapData);
// 检查组件的分组是否完整?
foreach (GroupField item in gfs)
{
bool isHave = false;
if (item.CtrlType == null)
item.CtrlType = "";
if (item.CtrlType == "Dtl")
{
foreach (MapDtl dtl in dtls)
{
if (dtl.No == item.CtrlID)
{
isHave = true;
break;
}
}
//分组不存在了,就删除掉他.
if (isHave == false)
item.Delete();
}
}
ds.Tables.Add(gfs.ToDataTableField("Sys_GroupField"));
MapFrames frms = new MapFrames(this.FK_MapData);
ds.Tables.Add(frms.ToDataTableField("Sys_MapFrame"));
//附件表.
FrmAttachments aths = new FrmAttachments(this.FK_MapData);
ds.Tables.Add(aths.ToDataTableField("Sys_FrmAttachment"));
//加入扩展属性.
MapExts MapExts = new MapExts(this.FK_MapData);
ds.Tables.Add(MapExts.ToDataTableField("Sys_MapExt"));
if (this.FK_MapData.IndexOf("ND") == 0)
{
string nodeStr = this.FK_MapData.Replace("ND", "");
if (DataType.IsNumStr(nodeStr) == true)
{
FrmNodeComponent fnc = new FrmNodeComponent(int.Parse(nodeStr));
// var f = fnc.GetValFloatByKey("FWC_H");
ds.Tables.Add(fnc.ToDataTableField("WF_Node").Copy());
}
}
//把dataet转化成json 对象.
return BP.Tools.Json.ToJson(ds);
}
#endregion
public string Designer_AthNew()
{
FrmAttachment ath = new FrmAttachment();
ath.setFK_MapData(this.FK_MapData);
ath.NoOfObj = this.GetRequestVal("AthNo");
ath.setMyPK(ath.FK_MapData + "_" + ath.NoOfObj);
if (ath.RetrieveFromDBSources() == 1)
return "err@附件ID:" + ath.NoOfObj + "已经存在.";
BP.Sys.CCFormAPI.CreateOrSaveAthMulti(this.FK_MapData, this.GetRequestVal("AthNo"), "我的附件");
return ath.MyPK;
}
/// <summary>
/// 生成随机的字段ID.
/// </summary>
/// <returns></returns>
public string GenerRandomFieldID()
{
string sql = "SELECT count(MyPK) as MyNum FROM Sys_MapAttr WHERE FK_MapData='" + this.FrmID + "'";
int idx = DBAccess.RunSQLReturnValInt(sql);
for (int i = idx; i < 999; i++)
{
string str = "F" + i.ToString().PadLeft(3, '0');
sql = "SELECT count(MyPK) as MyNum FROM Sys_MapAttr WHERE FK_MapData='" + this.FrmID + "' AND KeyOfEn='" + str + "'";
var num = DBAccess.RunSQLReturnValInt(sql);
if (num == 0)
return str;
}
return "err@系统错误.";
}
/// <summary>
/// 初始化
/// </summary>
/// <returns></returns>
public string MapDefDtlFreeFrm_Init()
{
string isFor = this.GetRequestVal("For");
if (DataType.IsNullOrEmpty(isFor) == false)
return "sln@" + isFor;
if (this.FK_MapDtl.Contains("_Ath") == true)
return "info@附件扩展";
if (this.FK_MapDtl.ToUpper().Contains("BP.WF.RETURNWORKS") == true)
return "info@退回字段扩展";
MapDtl dtl = new MapDtl();
//如果传递来了节点信息, 就是说明了独立表单的节点方案处理, 现在就要做如下判断
if (this.FK_Node != 0)
{
dtl.No = this.FK_MapDtl + "_" + this.FK_Node;
if (dtl.RetrieveFromDBSources() == 0)
{
// 开始复制它的属性.
MapAttrs mattrs = new MapAttrs(this.FK_MapDtl);
MapDtl odtl = new Sys.MapDtl();
odtl.No = this.FK_MapDtl;
int i = odtl.RetrieveFromDBSources();
if (i == 0)
return "info@字段列";
//存储表要与原明细表一致
if (string.IsNullOrWhiteSpace(odtl.PTable))
dtl.PTable = odtl.No;
else
dtl.PTable = odtl.PTable;
//让其直接保存.
dtl.No = this.FK_MapDtl + "_" + this.FK_Node;
dtl.setFK_MapData("Temp");
dtl.DirectInsert(); //生成一个明细表属性的主表.
//字段的分组也要一同复制
Dictionary<int, int> groupids = new Dictionary<int, int>();
//循环保存字段.
int idx = 0;
foreach (MapAttr item in mattrs)
{
if (item.GroupID != 0)
{
if (groupids.ContainsKey(item.GroupID))
{
item.GroupID = groupids[item.GroupID];
}
else
{
GroupField gf = new Sys.GroupField();
gf.OID = item.GroupID;
if (gf.RetrieveFromDBSources() == 0)
{
gf.Lab = "默认分组";
}
gf.EnName = dtl.No;
gf.InsertAsNew();
if (groupids.ContainsKey(item.GroupID) == false)
groupids.Add(item.GroupID, gf.OID);
item.GroupID = gf.OID;
}
}
item.setFK_MapData(this.FK_MapDtl + "_" + this.FK_Node);
item.setMyPK(item.FK_MapData + "_" + item.KeyOfEn);
item.Save();
idx++;
item.Idx = idx;
item.DirectUpdate();
}
MapData md = new MapData();
md.No = "Temp";
if (md.IsExits == false)
{
md.Name = "为权限方案设置的临时的数据";
md.Insert();
}
}
return "sln@" + dtl.No;
}
dtl.No = this.FK_MapDtl;
if (dtl.RetrieveFromDBSources() == 0)
BP.Sys.CCFormAPI.CreateOrSaveDtl(this.FK_MapData, this.FK_MapDtl, this.FK_MapDtl);
else
BP.Sys.CCFormAPI.CreateOrSaveDtl(this.FK_MapData, this.FK_MapDtl, dtl.Name);
return "创建成功.";
}
/// <summary>
/// 构造函数
/// </summary>
public WF_Admin_FoolFormDesigner()
{
}
/// <summary>
/// 转拼音
/// </summary>
/// <returns></returns>
public string ParseStringToPinyin()
{
string name = GetRequestVal("name");
string flag = GetRequestVal("flag");
//此处为字段中文转拼音设置为最大20个字符edited by liuxc,2017-9-25
return BP.Sys.CCFormAPI.ParseStringToPinyinField(name, Equals(flag, "true"), true, 20);
}
/// <summary>
/// 增加一个枚举类型
/// </summary>
/// <returns></returns>
public string SysEnumList_SaveEnumField()
{
string dtlKey = this.GetRequestVal("DtlKeyOfEn");
MapAttr attr = new Sys.MapAttr();
attr.setMyPK(this.FK_MapData + "_" + this.KeyOfEn);
if (attr.RetrieveFromDBSources() != 0)
return "err@字段名[" + this.KeyOfEn + "]已经存在.";
if (DataType.IsNullOrEmpty(dtlKey) == false)
{
attr = new Sys.MapAttr();
attr.setMyPK(this.FK_MapData + "_" + dtlKey);
if (attr.RetrieveFromDBSources() != 0)
return "err@字段名[" + dtlKey + "]已经存在.";
}
attr.setMyPK(this.FK_MapData + "_" + this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
attr.setKeyOfEn(this.KeyOfEn);
attr.UIBindKey = this.GetRequestVal("EnumKey");
attr.GroupID = this.GetRequestValInt("GroupFeid");
int uiContralType = this.GetRequestValInt("UIContralType");
if (uiContralType != 0)
{
attr.setUIContralType((UIContralType)uiContralType);
if (attr.UIContralType == UIContralType.RadioBtn)
attr.SetPara("RBShowModel", 3); //设置模式.
}
else
attr.setUIContralType(UIContralType.DDL);
if (attr.UIContralType == UIContralType.CheckBok)
attr.setMyDataType(DataType.AppString);
else
attr.setMyDataType(DataType.AppInt);
attr.setLGType(FieldTypeS.Enum);
SysEnumMain sem = new Sys.SysEnumMain();
sem.No = attr.UIBindKey;
if (sem.RetrieveFromDBSources() != 0)
attr.Name = sem.Name;
else
{
Int32 count = sem.Retrieve("EnumKey", attr.UIBindKey, "OrgNo", WebUser.OrgNo);
if (count != 0)
attr.Name = sem.Name;
else
attr.setName("枚举" + attr.UIBindKey);
}
//paras参数
Paras ps = new Paras();
ps.SQL = "SELECT OID FROM Sys_GroupField A WHERE A.FrmID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "FrmID AND ( CtrlType='' OR CtrlType IS NULL ) ORDER BY OID DESC ";
ps.Add("FrmID", this.FK_MapData);
attr.GroupID = DBAccess.RunSQLReturnValInt(ps, 0);
attr.Insert();
if (DataType.IsNullOrEmpty(dtlKey) == false)
{
attr.setMyPK(this.FK_MapData + "_" + dtlKey);
attr.setKeyOfEn(dtlKey);
string uiBindKey = sem.GetParaString("DtlEnumKey");
attr.UIBindKey = uiBindKey;
attr.Name = sem.GetParaString("DtlName");
attr.Insert();
//创建联动关系
MapExt ext = new MapExt();
string mypk = "ActiveDDL_" + this.FK_MapData + "_" + this.KeyOfEn;
ext.setMyPK(mypk);
ext.AttrsOfActive = dtlKey;
ext.DBType = "0";
ext.FK_DBSrc = "local";
ext.Doc = "Select IntKey as No, Lab as Name From " + BP.Sys.Base.Glo.SysEnum() + " Where EnumKey='" + uiBindKey + "' AND IntKey>=@Key*100 AND IntKey< (@Key*100/#100)";
ext.setFK_MapData(this.FK_MapData);
ext.AttrOfOper = this.KeyOfEn;
ext.ExtType = "ActiveDDL";
ext.Insert();
}
return this.FK_MapData + "_" + this.KeyOfEn;
}
/// <summary>
/// 保存空白的分组.
/// </summary>
/// <returns></returns>
public string GroupField_SaveBlank()
{
string no = this.GetValFromFrmByKey("TB_Blank_No");
string name = this.GetValFromFrmByKey("TB_Blank_Name");
GroupField gf = new GroupField();
gf.OID = this.GetRequestValInt("GroupField");
if (gf.OID != 0)
gf.Retrieve();
gf.CtrlID = no;
gf.EnName = this.FK_MapData;
gf.Lab = name;
gf.Save();
return "保存成功.";
}
/// <summary>
/// 审核分组保存
/// </summary>
/// <returns></returns>
public string GroupField_Save()
{
string lab = this.GetValFromFrmByKey("TB_Check_Name");
if (lab.Length == 0)
return "err@审核角色不能为空";
string prx = this.GetValFromFrmByKey("TB_Check_No");
if (prx.Length == 0)
prx = DataType.ParseStringToPinyin(lab);
MapAttr attr = new MapAttr();
int i = attr.Retrieve(MapAttrAttr.FK_MapData, this.FK_MapData, MapAttrAttr.KeyOfEn, prx + "_Note");
i += attr.Retrieve(MapAttrAttr.FK_MapData, this.FK_MapData, MapAttrAttr.KeyOfEn, prx + "_Checker");
i += attr.Retrieve(MapAttrAttr.FK_MapData, this.FK_MapData, MapAttrAttr.KeyOfEn, prx + "_RDT");
if (i > 0)
return "err@前缀已经使用:" + prx + " 请确认您是否增加了这个审核分组或者,请您更换其他的前缀。";
BP.Sys.CCFormAPI.CreateCheckGroup(this.FK_MapData, lab, prx);
return "保存成功";
}
/// <summary>
/// 保存分组
/// </summary>
/// <returns></returns>
public string GroupField_SaveCheck()
{
string lab = this.GetRequestVal("TB_Check_Name");
string prx = this.GetRequestVal("TB_Check_No");
BP.Sys.CCFormAPI.CreateCheckGroup(this.FK_MapData, lab, prx);
return "创建成功...";
}
/// <summary>
///
/// 删除分组
/// </summary>
/// <returns></returns>
public string GroupField_DeleteCheck()
{
GroupField gf = new GroupField();
gf.OID = this.GetRequestValInt("GroupField");
gf.Delete();
MapFrmFool md = new MapFrmFool(this.FK_MapData);
md.DoCheckFixFrmForUpdateVer();
return "删除成功...";
}
/// <summary>
///
/// 删除并删除该分组下的字段
/// </summary>
/// <returns></returns>
public string GroupField_DeleteAllCheck()
{
MapAttrs mattrs = new MapAttrs();
mattrs.Retrieve(MapAttrAttr.GroupID, this.GetRequestValInt("GroupField"));
foreach (MapAttr attr in mattrs)
{
if (attr.HisEditType != EditType.Edit)
continue;
if (attr.KeyOfEn == "FID")
continue;
attr.Delete();
}
GroupField gf = new GroupField();
gf.OID = this.GetRequestValInt("GroupField");
gf.Delete();
return "删除并删除该分组下的字段成功...";
}
public string ImpTableField_Step1()
{
BP.Sys.SFDBSrcs ens = new BP.Sys.SFDBSrcs();
ens.RetrieveAll();
DataSet ds = new DataSet();
ds.Tables.Add(ens.ToDataTableField("SFDBSrcs"));
return BP.Tools.Json.ToJson(ds);
}
public string FK_MapData
{
get
{
string str = this.GetRequestVal("FK_MapData"); //context.Request.QueryString["FK_MapData"];
if (DataType.IsNullOrEmpty(str))
str = this.GetRequestVal("FrmID");
return str;
}
}
public string FK_SFDBSrc
{
get
{
return this.GetRequestVal("FK_SFDBSrc");
//return context.Request.QueryString["FK_SFDBSrc"];
}
}
private string _STable = null;
public string STable
{
get
{
if (_STable == null)
{
//return this.GetRequestVal("FK_SFDBSrc");
_STable = this.GetRequestVal("STable");// context.Request.QueryString["STable"];
if (_STable == null || "".Equals(_STable))
{
BP.En.Entity en = BP.En.ClassFactory.GetEn(this.FK_MapData);
if (en != null)
_STable = en.EnMap.PhysicsTable;
else
{
MapData md = new MapData(this.FK_MapData);
_STable = md.PTable;
}
}
}
if (_STable == null)
_STable = "";
return _STable;
}
}
public string ImpTableField_Step2()
{
DataSet ds = new DataSet();
SFDBSrc src = new SFDBSrc(this.FK_SFDBSrc);
ds.Tables.Add(src.ToDataTableField("SFDBSrc"));
DataTable tables = src.GetTables();
tables.TableName = "tables";
ds.Tables.Add(tables);
DataTable tableColumns = src.GetColumns(this.STable);
tableColumns.TableName = "columns";
ds.Tables.Add(tableColumns);
MapAttrs attrs = new MapAttrs(this.FK_MapData);
ds.Tables.Add(attrs.ToDataTableField("attrs"));
DataTable dt = new DataTable();
dt.TableName = "STable";
dt.Columns.Add("STable");
DataRow dr = dt.NewRow();
dr["STable"] = this.STable;
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return BP.Tools.Json.ToJson(ds);
}
/// <summary>
/// 列
/// </summary>
private List<string> sCols = null;
/// <summary>
/// 列
/// </summary>
public List<string> SColumns
{
get
{
if (sCols != null)
return sCols;
string cols = this.GetRequestVal("SColumns") ?? "";
string[] arr = cols.Split(',');
sCols = new List<string>();
foreach (string s in arr)
{
if (string.IsNullOrWhiteSpace(s))
continue;
sCols.Add(s);
}
return sCols;
}
}
/// <summary>
/// 导入步骤
/// </summary>
/// <returns></returns>
public string ImpTableField_Step3()
{
DataSet ds = new DataSet();
SFDBSrc src = new SFDBSrc(this.FK_SFDBSrc);
var tableColumns = src.GetColumns(this.STable);
DataTable dt = tableColumns.Clone();
dt.TableName = "selectedColumns";
foreach (DataRow dr in tableColumns.Rows)
{
if (this.SColumns.Contains(dr["No"]))
{
dt.Rows.Add(dr.ItemArray);
}
}
ds.Tables.Add(dt);
SysEnums ens = new SysEnums(MapAttrAttr.MyDataType);
ds.Tables.Add(ens.ToDataTableField("MyDataType"));
SysEnums ens1 = new SysEnums(MapAttrAttr.LGType);
ds.Tables.Add(ens1.ToDataTableField("LGType"));
return BP.Tools.Json.ToJson(ds);
}
/// <summary>
/// 保存字段
/// </summary>
/// <returns></returns>
public string ImpTableField_Save()
{
MapData md = new MapData();
md.No = this.FK_MapData;
md.RetrieveFromDBSources();
string msg = md.Name + "导入字段信息:" + this.FK_MapData;
bool isLeft = true;
// float maxEnd = md.MaxEnd;
Int32 iGroupID = 0;
Paras ps = new Paras();
ps.SQL = "SELECT OID FROM Sys_GroupField WHERE FrmID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "FrmID and (CtrlType is null or CtrlType ='') ORDER BY OID DESC ";
ps.Add("FrmID", this.FK_MapData);
DataTable dt = DBAccess.RunSQLReturnTable(ps);
if (dt != null && dt.Rows.Count > 0)
{
iGroupID = Int32.Parse(dt.Rows[0][0].ToString());
}
foreach (string name in HttpContextHelper.RequestParamKeys)
{
if (name.StartsWith("HID_Idx_") == false)
continue;
string columnName = name.Substring("HID_Idx_".Length);
MapAttr ma = new MapAttr();
ma.setKeyOfEn(columnName);
ma.setFK_MapData(this.FK_MapData);
ma.setMyPK(this.FK_MapData + "_" + ma.KeyOfEn);
if (ma.IsExits)
{
msg += "\t\n字段:" + ma.KeyOfEn + " - " + ma.Name + "已存在.";
continue;
}
ma.Name = this.GetValFromFrmByKey("TB_Desc_" + columnName);
if (DataType.IsNullOrEmpty(ma.Name))
ma.Name = ma.KeyOfEn;
ma.MyDataType = this.GetValIntFromFrmByKey("DDL_DBType_" + columnName);
//翻译过去.
string len = this.GetValFromFrmByKey("TB_Len_" + columnName);
if (len.Equals("null") || DataType.IsNullOrEmpty(len) == true)
len = "20";
try
{
int mylen = int.Parse(len);
if (mylen > 4000)
{
mylen = 0;
//ma.isu = true;
}
ma.setMaxLen(mylen);
}
catch (Exception)
{
ma.setMaxLen(0);
//throw new Exception("err@转化为最大长度的时候错误:" + ma.KeyOfEn + " len:" + len);
}
ma.UIBindKey = this.GetValFromFrmByKey("TB_BindKey_" + columnName);
ma.LGType = BP.En.FieldTypeS.Normal;
ma.GroupID = iGroupID;
//绑定了外键或者枚举.
if (DataType.IsNullOrEmpty(ma.UIBindKey) == false)
{
SysEnums se = new SysEnums();
se.Retrieve(SysEnumAttr.EnumKey, ma.UIBindKey);
if (se.Count > 0)
{
ma.setMyDataType(DataType.AppInt);
ma.LGType = BP.En.FieldTypeS.Enum;
ma.setUIContralType(BP.En.UIContralType.DDL);
}
SFTable tb = new SFTable();
tb.No = ma.UIBindKey;
if (tb.IsExits == true)
{
ma.setMyDataType(DataType.AppString);
ma.LGType = BP.En.FieldTypeS.FK;
ma.setUIContralType(BP.En.UIContralType.DDL);
}
}
if (ma.MyDataType == DataType.AppBoolean)
ma.UIContralType = BP.En.UIContralType.CheckBok;
ma.Insert();
msg += "\t\n字段:" + ma.KeyOfEn + " - " + ma.Name + "加入成功.";
isLeft = !isLeft;
}
//更新名称.
DBAccess.RunSQL("UPDATE Sys_MapAttr SET Name=KeyOfEn WHERE Name=NULL OR Name='' ");
return msg;
}
/// <summary>
/// 框架信息.
/// </summary>
/// <returns></returns>
public string MapFrame_Init()
{
MapFrame mf = new MapFrame();
mf.setFK_MapData(this.FK_MapData);
if (this.MyPK == null)
{
mf.URL = "http://citydo.com.cn";
mf.W = 400;
mf.H = 300;
mf.setName("我的框架.");
mf.setFK_MapData(this.FK_MapData);
mf.setMyPK(DBAccess.GenerGUID());
}
else
{
mf.setMyPK(this.MyPK);
mf.RetrieveFromDBSources();
}
return mf.ToJson();
}
/// <summary>
/// 框架信息保存.
/// </summary>
/// <returns></returns>
public string MapFrame_Save()
{
MapFrame mf = new MapFrame();
mf = BP.Pub.PubClass.CopyFromRequestByPost(mf) as MapFrame;
mf.setFK_MapData(this.FK_MapData);
mf.Save(); //执行保存.
return "保存成功..";
}
#region SFList 外键表列表.
/// <summary>
/// 删除
/// </summary>
/// <returns></returns>
public string SFList_Delete()
{
try
{
SFTable sf = new SFTable(this.FK_SFTable);
sf.Delete();
return "删除成功...";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 字典表列表.
/// </summary>
/// <returns></returns>
public string SFList_Init()
{
DataSet ds = new DataSet();
DataTable dt = null;
SFTables ens = new SFTables();
//获取关键字
string Key = this.GetRequestVal("Key");
//如果关键之不为空,直接查询
if (string.IsNullOrWhiteSpace(Key))
{
ens.RetrieveAll();
dt = ens.ToDataTableField("SFTables");
ds.Tables.Add(dt);
}//如果关键字为空,按条件查询
else
{
QueryObject ob = new QueryObject(ens);
// 查询条件示例where No like '%Key%' or Name like '%Key%'
ob.AddWhere(SFTableAttr.No, "like", "%" + Key + "%");
ob.addOr();
ob.AddWhere(SFTableAttr.Name, "like", "%" + Key + "%");
//根据No 排序
ob.addOrderBy(SFTableAttr.No);
//返回对象为dt
dt = ob.DoQueryToTable();
dt.TableName = "SFTables";
ds.Tables.Add(dt);
}
int pTableModel = 0;
if (this.GetRequestVal("PTableModel").Equals("2"))
pTableModel = 2;
//获得ptableModel.
if (pTableModel == 0)
{
MapDtl dtl = new MapDtl();
dtl.No = this.FK_MapData;
if (dtl.RetrieveFromDBSources() == 1)
{
pTableModel = dtl.PTableModel;
}
else
{
MapData md = new MapData();
md.No = this.FK_MapData;
if (md.RetrieveFromDBSources() == 1)
pTableModel = md.PTableModel;
}
}
if (pTableModel == 2)
{
DataTable mydt = MapData.GetFieldsOfPTableMode2(this.FK_MapData);
mydt.TableName = "Fields";
ds.Tables.Add(mydt);
}
return BP.Tools.Json.ToJson(ds);
}
public string SFList_SaveSFField()
{
MapAttr attr = new Sys.MapAttr();
attr.setMyPK(this.FK_MapData + "_" + this.KeyOfEn);
if (attr.RetrieveFromDBSources() != 0)
return "err@字段名[" + this.KeyOfEn + "]已经存在.";
BP.Sys.CCFormAPI.SaveFieldSFTable(this.FK_MapData, this.KeyOfEn, null, this.GetRequestVal("SFTable"), 100, 100, 1);
attr.Retrieve();
Paras ps = new Paras();
ps.SQL = "SELECT OID FROM Sys_GroupField A WHERE A.FrmID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "FrmID AND (CtrlType='' OR CtrlType IS NULL) ORDER BY OID DESC ";
ps.Add("FrmID", this.FK_MapData);
attr.GroupID = DBAccess.RunSQLReturnValInt(ps, 0);
attr.Update();
SFTable sf = new SFTable(attr.UIBindKey);
if (sf.SrcType == DictSrcType.TableOrView || sf.SrcType == DictSrcType.BPClass || sf.SrcType == DictSrcType.CreateTable)
return "../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrSFTable&PKVal=" + attr.MyPK;
else
return "../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrSFSQL&PKVal=" + attr.MyPK;
}
#endregion 外键表列表.
/// <summary>
/// 初始化表.
/// </summary>
/// <returns></returns>
public string EditTableField_Init()
{
MapAttr attr = new MapAttr();
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
if (DataType.IsNullOrEmpty(this.MyPK) == false)
{
attr.setMyPK(this.MyPK);
attr.RetrieveFromDBSources();
}
else
{
SFTable sf = new SFTable(this.FK_SFTable);
attr.Name = sf.Name;
attr.setKeyOfEn(sf.No);
}
//第1次加载.
attr.setUIContralType(UIContralType.DDL);
attr.setFK_MapData(this.FK_MapData);
//字体大小.
int size = attr.Para_FontSize;
if (size == 0)
attr.Para_FontSize = 12;
//横跨的列数.
if (attr.ColSpan == 0)
attr.ColSpan = 1;
return attr.ToJson();
}
/// <summary>
/// 从表里选择字段.
/// </summary>
/// <returns></returns>
public string FieldTypeListChoseOneField_Init()
{
string ptable = "";
MapDtl dtl = new MapDtl();
dtl.No = this.FK_MapData;
if (dtl.RetrieveFromDBSources() == 1)
{
ptable = dtl.PTable;
}
else
{
MapData md = new MapData(this.FK_MapData);
ptable = md.PTable;
}
//获得原始数据.
DataTable dt = DBAccess.GetTableSchema(ptable, false);
//创建样本.
DataTable mydt = DBAccess.GetTableSchema(ptable, false);
mydt.Rows.Clear();
//获得现有的列..
MapAttrs attrs = new MapAttrs(this.FK_MapData);
string flowFiels = ",GUID,PRI,PrjNo,PrjName,PEmp,AtPara,FlowNote,WFSta,PNodeID,FK_FlowSort,FK_Flow,OID,FID,Title,WFState,CDT,FlowStarter,FlowStartRDT,FK_Dept,FK_NY,FlowDaySpan,FlowEmps,FlowEnder,FlowEnderRDT,FlowEndNode,PWorkID,PFlowNo,BillNo,ProjNo,";
//排除已经存在的列.
foreach (DataRow dr in dt.Rows)
{
string key = dr["FName"].ToString();
if (attrs.Contains(MapAttrAttr.KeyOfEn, key) == true)
continue;
if (flowFiels.Contains("," + key + ",") == true)
continue;
DataRow mydr = mydt.NewRow();
mydr["FName"] = dr["FName"];
mydr["FType"] = dr["FType"];
mydr["FLen"] = dr["FLen"];
mydr["FDesc"] = dr["FDesc"];
mydt.Rows.Add(mydr);
}
mydt.TableName = "dt";
return BP.Tools.Json.ToJson(mydt);
}
public string FieldTypeListChoseOneField_Save()
{
int dataType = this.GetRequestValInt("DataType");
string keyOfEn = this.GetRequestVal("KeyOfEn");
string name = this.GetRequestVal("FDesc");
string frmID = this.GetRequestVal("FK_MapData");
MapAttr attr = new MapAttr();
attr.setFK_MapData(frmID);
attr.setKeyOfEn(keyOfEn);
attr.setMyPK(attr.FK_MapData + "_" + keyOfEn);
if (attr.IsExits)
return "err@该字段[" + keyOfEn + "]已经加入里面了.";
attr.Name = name;
attr.MyDataType = dataType;
if (DataType.AppBoolean == dataType)
attr.setUIContralType(UIContralType.CheckBok);
else
attr.setUIContralType(UIContralType.TB);
//Paras ps = new Paras();
//ps.SQL = "SELECT OID FROM Sys_GroupField A WHERE A.FrmID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "FrmID AND ( CtrlType='' OR CtrlType= NULL ) ";
// ps.Add("FrmID", this.FK_MapData);
string sql = "SELECT OID FROM Sys_GroupField A WHERE A.FrmID='" + this.FK_MapData + "' AND (CtrlType='' OR CtrlType= NULL) ";
attr.GroupID = DBAccess.RunSQLReturnValInt(sql, 0);
attr.Insert();
return "保存成功.";
}
/// <summary>
/// 字段选择.
/// </summary>
/// <returns></returns>
public string FieldTypeSelect_Create()
{
string no = this.GetRequestVal("KeyOfEn");
if (no == "No")
no = "No1";
string name = this.GetRequestVal("name");
string newNo = DataType.ParseStringForNo(no, 0);
//string newName = DataType.ParseStringForName(name, 0);
string newName = name;
int fType = int.Parse(this.GetRequestVal("FType"));
bool isSupperText = this.GetRequestValBoolen("IsSupperText");
MapAttrs attrs = new MapAttrs();
int i = attrs.Retrieve(MapAttrAttr.FK_MapData, this.FK_MapData, MapAttrAttr.KeyOfEn, newNo);
if (i != 0)
return "err@字段名:" + newNo + "已经存在.";
#region 计算GroupID 需要翻译
int iGroupID = this.GroupField;
try
{
Paras ps = new Paras();
ps.SQL = "SELECT OID FROM Sys_GroupField WHERE FrmID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "FrmID and (CtrlType is null or CtrlType ='') ORDER BY OID DESC ";
ps.Add("FrmID", this.FK_MapData);
DataTable dt = DBAccess.RunSQLReturnTable(ps);
if (dt != null && dt.Rows.Count > 0)
{
iGroupID = int.Parse(dt.Rows[0][0].ToString());
}
}
catch (Exception ex)
{
}
#endregion
try
{
MapData md = new MapData();
md.No = this.FK_MapData;
if (md.RetrieveFromDBSources() != 0)
md.CheckPTableSaveModel(newNo);
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
//求出选择的字段类型.
MapAttr attr = new MapAttr();
attr.Name = newName;
attr.setKeyOfEn(newNo);
attr.setFK_MapData(this.FK_MapData);
attr.setLGType(FieldTypeS.Normal);
attr.setMyPK(this.FK_MapData + "_" + newNo);
attr.GroupID = iGroupID;
attr.MyDataType = fType;
if (DataType.IsNullOrEmpty(this.GetRequestVal("FK_Flow")) == false)
attr.SetPara("FK_Flow", this.GetRequestVal("FK_Flow"));
int colspan = attr.ColSpan;
attr.Para_FontSize = 12;
int rows = attr.UIRows;
if (attr.MyDataType == DataType.AppString)
{
UIContralType uiContralType = (UIContralType)this.GetRequestValInt("UIContralType");
attr.UIWidth = 100;
attr.UIHeight = 23;
if (uiContralType == UIContralType.SignCheck || uiContralType == UIContralType.FlowBBS)
{
attr.setUIIsEnable(false);
attr.setUIVisible(true);
}
else
{
attr.setUIVisible(true);
attr.setUIIsEnable(true);
}
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setMyDataType(DataType.AppString);
attr.setUIContralType(uiContralType);
attr.Insert();
if (isSupperText == true)
{
Sys.FrmUI.MapAttrString attrString = new Sys.FrmUI.MapAttrString(attr.MyPK);
attrString.IsSupperText = true;
attrString.Update();
}
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrString&MyPK=" + attr.MyPK;
}
if (attr.MyDataType == DataType.AppInt)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setMyDataType(DataType.AppInt);
attr.setUIContralType(UIContralType.TB);
attr.DefVal = "0";
attr.Insert();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrNum&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
if (attr.MyDataType == DataType.AppMoney)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setMyDataType(DataType.AppMoney);
attr.setUIContralType(UIContralType.TB);
attr.DefVal = "0.00";
attr.Insert();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrNum&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
if (attr.MyDataType == DataType.AppFloat)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setMyDataType(DataType.AppFloat);
attr.setUIContralType(UIContralType.TB);
attr.DefVal = "0";
attr.Insert();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrNum&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
if (attr.MyDataType == DataType.AppDouble)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.MyDataType = DataType.AppDouble;
attr.setUIContralType(UIContralType.TB);
attr.DefVal = "0";
attr.Insert();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrNum&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
if (attr.MyDataType == DataType.AppDate)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setUIContralType(UIContralType.TB);
attr.setMyDataType(DataType.AppDate);
attr.Insert();
BP.Sys.FrmUI.MapAttrDT dt = new Sys.FrmUI.MapAttrDT();
dt.setMyPK(attr.MyPK);
dt.RetrieveFromDBSources();
dt.Format = 0;
dt.Update();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrDT&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
if (attr.MyDataType == DataType.AppDateTime)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setUIContralType(UIContralType.TB);
attr.setMyDataType(DataType.AppDateTime);
attr.Insert();
BP.Sys.FrmUI.MapAttrDT dt = new Sys.FrmUI.MapAttrDT();
dt.setMyPK(attr.MyPK);
dt.RetrieveFromDBSources();
dt.Format = 1;
dt.Update();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrDT&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
if (attr.MyDataType == DataType.AppBoolean)
{
attr.UIWidth = 100;
attr.UIHeight = 23;
attr.setUIVisible(true);
attr.setUIIsEnable(true);
attr.ColSpan = 1;
attr.setMinLen(0);
attr.setMaxLen(50);
attr.setUIContralType(UIContralType.CheckBok);
attr.setMyDataType(DataType.AppBoolean);
attr.DefVal = "0";
attr.Insert();
return "url@../../Comm/En.htm?EnName=BP.Sys.FrmUI.MapAttrBoolen&MyPK=" + attr.MyPK + "&FK_MapData=" + this.FK_MapData + "&KeyOfEn=" + newNo + "&FType=" + attr.MyDataType + "&DoType=Edit&GroupField=" + this.GroupField;
}
return "err@没有判断的字段数据类型." + attr.MyDataTypeStr;
}
/// <summary>
/// 字段初始化数据.
/// </summary>
/// <returns></returns>
public string EditF_FieldInit()
{
MapAttr attr = new MapAttr();
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
if (DataType.IsNullOrEmpty(this.MyPK) == false)
{
attr.setMyPK(this.MyPK);
attr.RetrieveFromDBSources();
}
else
{
attr.GroupID = this.GroupField;
}
attr.setFK_MapData(this.FK_MapData);
//字体大小.
int size = attr.Para_FontSize;
if (size == 0)
attr.Para_FontSize = 12;
//横跨的列数.
if (attr.ColSpan == 0)
attr.ColSpan = 1;
return attr.ToJson();
}
public string FieldInitEnum()
{
MapAttr attr = new MapAttr();
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
if (DataType.IsNullOrEmpty(this.MyPK) == false)
{
attr.setMyPK(this.MyPK);
attr.RetrieveFromDBSources();
}
else
{
SysEnumMain sem = new SysEnumMain(this.EnumKey);
attr.Name = sem.Name;
attr.setKeyOfEn(sem.No);
attr.DefVal = "0";
}
//第1次加载.
if (attr.UIContralType == UIContralType.TB)
attr.setUIContralType(UIContralType.DDL);
attr.setFK_MapData(this.FK_MapData);
//字体大小.
int size = attr.Para_FontSize;
if (size == 0)
attr.Para_FontSize = 12;
//横跨的列数.
if (attr.ColSpan == 0)
attr.ColSpan = 1;
var model = attr.RBShowModel;
attr.RBShowModel = model;
return attr.ToJson();
}
/// <summary>
/// 转化成json
/// </summary>
/// <returns></returns>
public string FieldInitGroupID()
{
GroupFields gfs = new GroupFields(this.FK_MapData);
//转化成json输出.
return gfs.ToJson();
}
/// <summary>
/// 分组&枚举: 两个数据源.
/// </summary>
/// <returns></returns>
public string FieldInitGroupAndSysEnum()
{
GroupFields gfs = new GroupFields(this.FK_MapData);
//分组值.
DataSet ds = new DataSet();
ds.Tables.Add(gfs.ToDataTableField("Sys_GroupField"));
//枚举值.
string enumKey = this.EnumKey;
if (DataType.IsNullOrEmpty(enumKey) == true || enumKey.Equals("null") == true)
{
MapAttr ma = new MapAttr(this.MyPK);
enumKey = ma.UIBindKey;
}
SysEnums enums = new SysEnums(enumKey);
ds.Tables.Add(enums.ToDataTableField("Sys_Enum"));
//转化成json输出.
string json = BP.Tools.Json.ToJson(ds);
// DataType.WriteFile("c:\\FieldInitGroupAndSysEnum.json", json);
return json;
}
/// <summary>
/// 保存枚举值.
/// </summary>
/// <returns></returns>
public string FieldSaveEnum()
{
try
{
//定义变量.
if (this.EnumKey == null)
return "err@没有接收到EnumKey的值无法进行保存操作。";
//@周朋 , 判断数据模式,创建的字段是否符合要求.
MapData md = new MapData(this.FK_MapData);
md.CheckPTableSaveModel(this.KeyOfEn);
//赋值.
MapAttr attr = new MapAttr();
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
if (DataType.IsNullOrEmpty(this.MyPK) == false)
{
attr.setMyPK(this.MyPK);
attr.RetrieveFromDBSources();
}
else
{
/*判断字段是否存在?*/
if (attr.IsExit(MapAttrAttr.KeyOfEn, this.KeyOfEn, MapAttrAttr.FK_MapData, this.FK_MapData) == true)
return "err@字段名:" + this.KeyOfEn + "已经存在.";
}
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
attr.setLGType(FieldTypeS.Enum);
attr.UIBindKey = this.EnumKey;
attr.setMyDataType(DataType.AppInt);
//控件类型.
attr.setUIContralType(UIContralType.DDL);
attr.Name = this.GetValFromFrmByKey("TB_Name");
attr.setKeyOfEn(this.GetValFromFrmByKey("TB_KeyOfEn"));
attr.ColSpan = this.GetValIntFromFrmByKey("DDL_ColSpan");
if (attr.ColSpan == 0)
attr.ColSpan = 1;
//显示方式.
attr.RBShowModel = this.GetValIntFromFrmByKey("DDL_RBShowModel");
//控件类型.
attr.UIContralType = (UIContralType)this.GetValIntFromFrmByKey("RB_CtrlType");
attr.UIIsInput = this.GetValBoolenFromFrmByKey("CB_IsInput"); //是否是必填项.
attr.IsEnableJS = this.GetValBoolenFromFrmByKey("CB_IsEnableJS"); //是否启用js设置
attr.Para_FontSize = this.GetValIntFromFrmByKey("TB_FontSize"); //字体大小.
//默认值.
attr.DefVal = this.GetValFromFrmByKey("TB_DefVal");
try
{
//分组.
if (this.GetValIntFromFrmByKey("DDL_GroupID") != 0)
attr.GroupID = this.GetValIntFromFrmByKey("DDL_GroupID"); //在那个分组里?
}
catch
{
}
//是否可用?所有类型的属性,都需要。
int isEnable = this.GetValIntFromFrmByKey("RB_UIIsEnable");
if (isEnable == 0)
attr.setUIIsEnable(false);
else
attr.setUIIsEnable(true);
//是否可见?
int visable = this.GetValIntFromFrmByKey("RB_UIVisible");
if (visable == 0)
attr.setUIVisible(false);
else
attr.setUIVisible(true);
attr.setMyPK(this.FK_MapData + "_" + this.KeyOfEn);
attr.Save();
return "保存成功.";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 保存外键表字段.
/// </summary>
/// <returns></returns>
public string EditTableField_Save()
{
try
{
//定义变量.
if (this.FK_SFTable == null)
return "err@没有接收到FK_SFTable的值无法进行保存操作。";
//赋值.
MapAttr attr = new MapAttr();
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
if (DataType.IsNullOrEmpty(this.MyPK) == false)
{
attr.setMyPK(this.MyPK);
attr.RetrieveFromDBSources();
}
else
{
/*判断字段是否存在?*/
if (attr.IsExit(MapAttrAttr.KeyOfEn, this.KeyOfEn, MapAttrAttr.FK_MapData, this.FK_MapData) == true)
return "err@字段名:" + this.KeyOfEn + "已经存在.";
}
attr.setKeyOfEn(this.KeyOfEn);
attr.setFK_MapData(this.FK_MapData);
attr.setLGType(FieldTypeS.FK);
attr.UIBindKey = this.FK_SFTable;
attr.setMyDataType(DataType.AppString);
//控件类型.
attr.setUIContralType(UIContralType.DDL);
attr.Name = this.GetValFromFrmByKey("TB_Name");
attr.setKeyOfEn(this.GetValFromFrmByKey("TB_KeyOfEn"));
attr.ColSpan = this.GetValIntFromFrmByKey("DDL_ColSpan");
if (attr.ColSpan == 0)
attr.ColSpan = 1;
attr.UIIsInput = this.GetValBoolenFromFrmByKey("CB_IsInput"); //是否是必填项.
attr.Para_FontSize = this.GetValIntFromFrmByKey("TB_FontSize"); //字体大小.
//默认值.
attr.DefVal = this.GetValFromFrmByKey("TB_DefVal");
try
{
//分组.
if (this.GetValIntFromFrmByKey("DDL_GroupID") != 0)
attr.GroupID = this.GetValIntFromFrmByKey("DDL_GroupID"); //在那个分组里?
}
catch
{
}
//是否可用?所有类型的属性,都需要。
int isEnable = this.GetValIntFromFrmByKey("RB_UIIsEnable");
if (isEnable == 0)
attr.setUIIsEnable(false);
else
attr.setUIIsEnable(true);
//是否可见?
int visable = this.GetValIntFromFrmByKey("RB_UIVisible");
if (visable == 0)
attr.setUIVisible(false);
else
attr.setUIVisible(true);
attr.setMyPK(this.FK_MapData + "_" + this.KeyOfEn);
attr.Save();
return "保存成功.";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 执行保存.
/// </summary>
/// <returns></returns>
//public string EditF_Save()
//{
// try
// {
// //定义变量.
// int fType = int.Parse(this.GetRequestVal("FType")); //字段数据物理类型
// FieldTypeS lgType = (FieldTypeS)int.Parse(this.GetRequestVal("LGType")); //逻辑类型.
// string uiBindKey = this.GetRequestVal("UIBindKey");// context.Request.QueryString["UIBindKey"];
// //赋值.
// MapAttr attr = new MapAttr();
// attr.setKeyOfEn(this.KeyOfEn);
// attr.setFK_MapData(this.FK_MapData);
// attr.LGType = lgType; //逻辑类型.
// attr.UIBindKey = uiBindKey; //绑定的枚举或者外键.
// attr.MyDataType = fType; //物理类型.
// if (DataType.IsNullOrEmpty(this.MyPK) == false)
// {
// attr.setMyPK(this.MyPK);
// attr.RetrieveFromDBSources();
// }
// attr.setFK_MapData(this.FK_MapData);
// attr.MyDataType = fType; //数据类型.
// attr.Name = this.GetValFromFrmByKey("TB_Name");
// attr.setKeyOfEn(this.GetValFromFrmByKey("TB_KeyOfEn"));
// attr.ColSpan = this.GetValIntFromFrmByKey("DDL_ColSpan");
// if (attr.ColSpan == 0)
// attr.ColSpan = 1;
// attr.Para_FontSize = this.GetValIntFromFrmByKey("TB_FontSize"); //字体大小.
// attr.Para_Tip = this.GetValFromFrmByKey("TB_Tip"); //操作提示.
// //默认值.
// attr.DefVal = this.GetValFromFrmByKey("TB_DefVal");
// //对于明细表就可能没有值.
// try
// {
// //分组.
// if (this.GetValIntFromFrmByKey("DDL_GroupID") != 0)
// attr.GroupID = this.GetValIntFromFrmByKey("DDL_GroupID"); //在那个分组里?
// }
// catch
// {
// }
// //把必填项拿出来,所有字段都可以设置成必填项 杨玉慧
// attr.UIIsInput = this.GetValBoolenFromFrmByKey("CB_IsInput"); //是否是必填项.
// if (attr.MyDataType == DataType.AppString && lgType == FieldTypeS.Normal)
// {
// attr.IsRichText = this.GetValBoolenFromFrmByKey("CB_IsRichText"); //是否是富文本?
// attr.IsSupperText = this.GetValIntFromFrmByKey("CB_IsSupperText"); //是否是超大文本?
// //高度.
// attr.UIHeightInt = this.GetValIntFromFrmByKey("DDL_Rows") * 23;
// //最大最小长度.
// attr.setMaxLen(this.GetValIntFromFrmByKey("TB_MaxLen"));
// attr.setMinLen(this.GetValIntFromFrmByKey("TB_MinLen"));
// attr.UIWidth = this.GetValIntFromFrmByKey("TB_UIWidth"); //宽度.
// }
// switch (attr.MyDataType)
// {
// case DataType.AppInt:
// case DataType.AppFloat:
// case DataType.AppDouble:
// case DataType.AppMoney:
// attr.IsSum = this.GetValBoolenFromFrmByKey("CB_IsSum");
// break;
// }
// //获取宽度.
// try
// {
// attr.UIWidth = this.GetValIntFromFrmByKey("TB_UIWidth"); //宽度.
// }
// catch
// {
// }
// //是否可用?所有类型的属性,都需要。
// int isEnable = this.GetValIntFromFrmByKey("RB_UIIsEnable");
// if (isEnable == 0)
// attr.setUIIsEnable(false);
// else
// attr.setUIIsEnable(true);
// //仅仅对普通类型的字段需要.
// if (lgType == FieldTypeS.Normal)
// {
// //是否可见?
// int visable = this.GetValIntFromFrmByKey("RB_UIVisible");
// if (visable == 0)
// attr.setUIVisible(false);
// else
// attr.setUIVisible(true);
// }
// attr.setMyPK(this.FK_MapData + "_" + this.KeyOfEn);
// attr.Save();
// return "保存成功.";
// }
// catch (Exception ex)
// {
// return ex.Message;
// }
//}
/// <summary>
/// 该方法有2处调用。
/// 1修改字段。
/// 2编辑属性。
/// </summary>
/// <returns></returns>
public string DtlInit()
{
MapDtl dtl = new MapDtl();
dtl.No = this.FK_MapDtl;
if (dtl.RetrieveFromDBSources() == 0)
{
dtl.setFK_MapData(this.FK_MapData);
dtl.Name = this.FK_MapData;
dtl.Insert();
dtl.IntMapAttrs();
}
if (this.FK_Node != 0)
{
/* 如果传递来了节点信息, 就是说明了独立表单的节点方案处理, 现在就要做如下判断.
* 1, 如果已经有了.
*/
dtl.No = this.FK_MapDtl + "_" + this.FK_Node;
if (dtl.RetrieveFromDBSources() == 0)
{
// 开始复制它的属性.
MapAttrs mattrs = new MapAttrs(this.FK_MapDtl);
//让其直接保存.
dtl.No = this.FK_MapDtl + "_" + this.FK_Node;
dtl.setFK_MapData("Temp");
dtl.DirectInsert(); //生成一个明细表属性的主表.
//循环保存字段.
int idx = 0;
foreach (MapAttr item in mattrs)
{
item.setFK_MapData(this.FK_MapDtl + "_" + this.FK_Node);
item.setMyPK(item.FK_MapData + "_" + item.KeyOfEn);
item.Save();
idx++;
item.Idx = idx;
item.DirectUpdate();
}
MapData md = new MapData();
md.No = "Temp";
if (md.IsExits == false)
{
md.Name = "为权限方案设置的临时的数据";
md.Insert();
}
}
}
DataSet ds = new DataSet();
DataTable dt = dtl.ToDataTableField("Main");
ds.Tables.Add(dt);
//获得字段列表.
MapAttrs attrsDtl = new MapAttrs(this.FK_MapDtl);
DataTable dtAttrs = attrsDtl.ToDataTableField("Ens");
ds.Tables.Add(dtAttrs);
//返回json配置信息.
return BP.Tools.Json.ToJson(ds);
}
/// <summary>
/// 执行保存.
/// </summary>
/// <returns></returns>
public string DtlSave()
{
try
{
//复制.
MapDtl dtl = new MapDtl(this.FK_MapDtl);
//从request对象里复制数据,到entity.
BP.Pub.PubClass.CopyFromRequest(dtl);
dtl.Update();
return "保存成功...";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 下载表单.
/// </summary>
public void DownTempFrm()
{
string fileFullName = BP.Difference.SystemConfig.PathOfWebApp + "Temp/" + this.FK_MapData + ".xml";
HttpContextHelper.ResponseWriteFile(fileFullName, this.FK_MapData + ".xml");
}
public bool IsReusable
{
get
{
return false;
}
}
public bool IsNodeSheet
{
get
{
if (this.FK_MapData.StartsWith("ND") == true)
return true;
return false;
}
}
/// <summary>
/// 字段属性编辑 初始化
/// </summary>
/// <returns></returns>
public string Attachment_Init()
{
FrmAttachment ath = new FrmAttachment();
ath.setFK_MapData(this.FK_MapData);
ath.NoOfObj = this.Ath;
ath.FK_Node = this.FK_Node;
if (this.MyPK == null)
{
if (this.FK_Node == 0)
ath.setMyPK(this.FK_MapData + "_" + this.Ath);
else
ath.setMyPK(this.FK_MapData + "_" + this.Ath + "_" + this.FK_Node);
}
else
{
ath.setMyPK(this.MyPK);
}
int i = ath.RetrieveFromDBSources();
if (i == 0)
{
/*初始化默认值.*/
ath.NoOfObj = "Ath1";
ath.Name = "我的附件";
// ath.SaveTo = BP.Difference.SystemConfig.PathOfDataUser + "/UploadFile/" + this.FK_MapData + "/";
ath.H = 40;
ath.Exts = "*.*";
}
if (i == 0 && this.FK_Node != 0)
{
/*这里处理 独立表单解决方案, 如果有FK_Node 就说明该节点需要单独控制该附件的属性. */
MapData mapData = new MapData();
mapData.RetrieveByAttr(MapDataAttr.No, this.FK_MapData);
if (mapData.AppType == "0")
{
FrmAttachment souceAthMent = new FrmAttachment();
// 查询出来原来的数据.
int rowCount = souceAthMent.Retrieve(FrmAttachmentAttr.FK_MapData, this.FK_MapData, FrmAttachmentAttr.NoOfObj, this.Ath, FrmAttachmentAttr.FK_Node, "0");
if (rowCount > 0)
{
ath.Copy(souceAthMent);
}
}
if (this.FK_Node == 0)
ath.setMyPK(this.FK_MapData + "_" + this.Ath);
else
ath.setMyPK(this.FK_MapData + "_" + this.Ath + "_" + this.FK_Node);
//插入一个新的.
ath.FK_Node = this.FK_Node;
ath.setFK_MapData(this.FK_MapData);
ath.NoOfObj = this.Ath;
// ath.DirectInsert();
}
return ath.ToJson();
}
/// <summary>
/// 保存.
/// </summary>
/// <returns></returns>
public string Attachment_Save()
{
FrmAttachment ath = new FrmAttachment();
ath.setFK_MapData(this.FK_MapData);
ath.NoOfObj = this.Ath;
ath.FK_Node = this.FK_Node;
ath.setMyPK(this.FK_MapData + "_" + this.Ath);
int i = ath.RetrieveFromDBSources();
ath = BP.Pub.PubClass.CopyFromRequestByPost(ath) as FrmAttachment;
if (i == 0)
ath.Save(); //执行保存.
else
ath.Update();
return "保存成功..";
}
public string Attachment_Delete()
{
FrmAttachment ath = new FrmAttachment();
ath.setMyPK(this.MyPK);
ath.Delete();
return "删除成功.." + ath.MyPK;
}
#region sfGuide
/// <summary>
/// 获取数据源字典表信息
/// </summary>
/// <returns></returns>
public string SFGuide_GetInfo()
{
string sfno = this.GetRequestVal("sfno"); //context.Request.QueryString["sfno"];
if (string.IsNullOrWhiteSpace(sfno))
return "err@参数不正确";
SFTable sftable = new SFTable(sfno);
DataTable dt = sftable.ToDataTableField("info");
foreach (DataColumn col in dt.Columns)
col.ColumnName = col.ColumnName.ToUpper();
return BP.Tools.Json.ToJson(dt);
}
public string SFGuide_SaveInfo()
{
bool IsNew = this.GetRequestValBoolen("IsNew");
string sfno = this.GetRequestVal("No");
string myname = this.GetRequestVal("Name");
int srctype = this.GetRequestValInt("SrcType");
int codestruct = this.GetRequestValInt("CodeStruct");
string defval = this.GetRequestVal("DefVal");
string sfdbsrc = this.GetRequestVal("FK_SFDBSrc");
string srctable = this.GetRequestVal("SrcTable");
string columnvalue = this.GetRequestVal("ColumnValue");
string columntext = this.GetRequestVal("ColumnText");
string parentvalue = this.GetRequestVal("ParentValue");
string tabledesc = this.GetRequestVal("TableDesc");
string selectstatement = this.GetRequestVal("Selectstatement");
//判断是否已经存在
SFTable sftable = new SFTable();
sftable.No = sfno;
if (IsNew && sftable.RetrieveFromDBSources() > 0)
return "err@字典编号" + sfno + "已经存在,不允许重复。";
sftable.Name = myname;
sftable.SrcType = (DictSrcType)srctype;
sftable.CodeStruct = (CodeStruct)codestruct;
sftable.DefVal = defval;
sftable.FK_SFDBSrc = sfdbsrc;
sftable.SrcTable = srctable;
sftable.ColumnValue = columnvalue;
sftable.ColumnText = columntext;
sftable.ParentValue = parentvalue;
sftable.TableDesc = tabledesc;
sftable.SelectStatement = selectstatement;
switch (sftable.SrcType)
{
case DictSrcType.BPClass:
string[] nos = sftable.No.Split('.');
sftable.FK_Val = "FK_" + nos[nos.Length - 1].TrimEnd('s');
sftable.FK_SFDBSrc = "local";
break;
default:
sftable.FK_Val = "FK_" + sftable.No;
break;
}
sftable.Save();
return "保存成功!";
}
public string SFGuide_Getmtds()
{
string src = this.GetRequestVal("src"); //context.Request.QueryString["src"];
if (string.IsNullOrWhiteSpace(src))
return "err@系统中没有webservices类型的数据源该类型的外键表不能创建请维护数据源.";
SFDBSrc sr = new SFDBSrc(src);
if (sr.DBSrcType != DBSrcType.WebServices)
return "err@数据源“" + sr.Name + "”不是WebService数据源.";
List<WSMethod> mtds = GetWebServiceMethods(sr);
return LitJson.JsonMapper.ToJson(mtds);
}
public string SFGuide_GetCols()
{
string src = this.GetRequestVal("src"); //context.Request.QueryString["src"];
string table = this.GetRequestVal("table"); //context.Request.QueryString["table"];
if (string.IsNullOrWhiteSpace(src))
throw new Exception("err@参数不正确");
if (string.IsNullOrWhiteSpace(table))
{
return "[]";
}
SFDBSrc sr = new SFDBSrc(src);
DataTable dt = sr.GetColumns(table);
foreach (DataColumn col in dt.Columns)
col.ColumnName = col.ColumnName.ToUpper();
foreach (DataRow r in dt.Rows)
{
r["Name"] = r["No"] +
(r["Name"] == null || r["Name"] == DBNull.Value ||
string.IsNullOrWhiteSpace(r["Name"].ToString())
? ""
: string.Format("[{0}]", r["Name"]));
}
return BP.Tools.Json.ToJson(dt);
}
/// <summary>
/// //获取表/视图列表
/// </summary>
/// <returns></returns>
public string SFGuide_GetTVs()
{
string src = this.GetRequestVal("src");// context.Request.QueryString["src"];
SFDBSrc sr = new SFDBSrc(src);
DataTable dt = sr.GetTables();
foreach (DataColumn col in dt.Columns)
col.ColumnName = col.ColumnName.ToUpper();
return BP.Tools.Json.ToJson(dt);
}
/// <summary>
/// 获得clsss列表.
/// </summary>
/// <returns></returns>
public string SFGuide_GetClass()
{
string sfno = this.GetRequestVal("sfno");// context.Request.QueryString["sfno"];
string stru = this.GetRequestVal("struct"); //context.Request.QueryString["struct"];
int st = 0;
if (string.IsNullOrWhiteSpace(stru) || !int.TryParse(stru, out st))
throw new Exception("err@参数不正确.");
string error = string.Empty;
ArrayList arr = null;
SFTables sfs = new SFTables();
Entities ens = null;
SFTable sf = null;
sfs.Retrieve(SFTableAttr.DictSrcType, (int)DictSrcType.BPClass);
switch (st)
{
case 0:
arr = ClassFactory.GetObjects("BP.En.EntityNoName");
break;
case 1:
arr = ClassFactory.GetObjects("BP.En.EntitySimpleTree");
break;
default:
arr = new ArrayList();
break;
}
StringBuilder s = new StringBuilder("[");
foreach (BP.En.Entity en in arr)
{
try
{
if (en == null)
continue;
ens = en.GetNewEntities;
if (ens == null)
continue;
sf = sfs.GetEntityByKey(ens.ToString()) as SFTable;
if ((sf != null && sf.No != sfno) ||
string.IsNullOrWhiteSpace(ens.ToString()))
continue;
s.Append(string.Format(
"{{\"NO\":\"{0}\",\"NAME\":\"{0}[{1}]\",\"DESC\":\"{1}\"}},", ens,
en.EnDesc));
}
catch
{
continue;
}
}
return s.ToString().TrimEnd(',') + "]";
}
/// <summary>
/// 获取数据源列表
/// </summary>
/// <returns></returns>
public string SFGuide_GetSrcs()
{
string type = this.GetRequestVal("type");
int itype;
bool onlyWS = false;
SFDBSrcs srcs = new SFDBSrcs();
if (!string.IsNullOrWhiteSpace(type) && int.TryParse(type, out itype))
{
onlyWS = true;
srcs.Retrieve(SFDBSrcAttr.DBSrcType, itype);
}
else
{
srcs.RetrieveAll();
}
DataTable dt = srcs.ToDataTableField();
foreach (DataColumn col in dt.Columns)
col.ColumnName = col.ColumnName.ToUpper();
if (onlyWS == false)
{
List<DataRow> wsRows = new List<DataRow>();
foreach (DataRow r in dt.Rows)
{
if (Equals(r["DBSrcType"], DBSrcType.WebServices))
wsRows.Add(r);
}
foreach (DataRow r in wsRows)
dt.Rows.Remove(r);
}
return BP.Tools.Json.ToJson(dt);
}
#endregion
#region Methods
/// <summary>
/// 获取webservice方法列表
/// </summary>
/// <param name="dbsrc">WebService数据源</param>
/// <returns></returns>
public List<WSMethod> GetWebServiceMethods(SFDBSrc dbsrc)
{
return BP.WF.Difference.WF_Admin_FoolFormDesigner.GetWebServiceMethods(dbsrc);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public string FrmView_Init()
{
string frmID = this.GetRequestVal("FrmID");
MapData md = new MapData(frmID);
//获得表单模版.
DataSet myds = BP.Sys.CCFormAPI.GenerHisDataSet(md.No);
#region 把主从表数据放入里面.
//.工作数据放里面去, 放进去前执行一次装载前填充事件.
GEEntity wk = new GEEntity(FrmID);
DataTable mainTable = wk.ToDataTableField("MainTable");
mainTable.TableName = "MainTable";
myds.Tables.Add(mainTable);
#endregion
#region 增加附件信息.
BP.Sys.FrmAttachments athDescs = new FrmAttachments();
athDescs.Retrieve(FrmAttachmentAttr.FK_MapData, this.FrmID);
if (athDescs.Count != 0)
{
FrmAttachment athDesc = athDescs[0] as FrmAttachment;
//查询出来数据实体.
BP.Sys.FrmAttachmentDBs dbs = new BP.Sys.FrmAttachmentDBs();
if (athDesc.HisCtrlWay == AthCtrlWay.PWorkID)
{
Paras ps = new Paras();
ps.SQL = "SELECT PWorkID FROM WF_GenerWorkFlow WHERE WorkID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "WorkID";
ps.Add("WorkID", this.WorkID);
string pWorkID = DBAccess.RunSQLReturnValInt(ps, 0).ToString();
if (pWorkID == null || pWorkID == "0")
{
pWorkID = this.WorkID.ToString();
}
if (athDesc.AthUploadWay == AthUploadWay.Inherit)
{
/* 继承模式 */
BP.En.QueryObject qo = new BP.En.QueryObject(dbs);
qo.AddWhere(FrmAttachmentDBAttr.RefPKVal, pWorkID);
qo.addOr();
qo.AddWhere(FrmAttachmentDBAttr.RefPKVal, this.WorkID.ToString());
qo.addOrderBy("RDT");
qo.DoQuery();
}
if (athDesc.AthUploadWay == AthUploadWay.Interwork)
{
/*共享模式*/
dbs.Retrieve(FrmAttachmentDBAttr.RefPKVal, pWorkID);
}
}
else if (athDesc.HisCtrlWay == AthCtrlWay.WorkID)
{
/* 继承模式 */
BP.En.QueryObject qo = new BP.En.QueryObject(dbs);
qo.AddWhere(FrmAttachmentDBAttr.NoOfObj, athDesc.NoOfObj);
qo.addAnd();
qo.AddWhere(FrmAttachmentDBAttr.RefPKVal, this.WorkID.ToString());
qo.addOrderBy("RDT");
qo.DoQuery();
}
//增加一个数据源.
myds.Tables.Add(dbs.ToDataTableField("Sys_FrmAttachmentDB").Copy());
}
#endregion
#region 把外键表加入DataSet
DataTable dtMapAttr = myds.Tables["Sys_MapAttr"];
DataTable dt = new DataTable();
MapExts mes = md.MapExts;
MapExt me = new MapExt();
DataTable ddlTable = new DataTable();
ddlTable.Columns.Add("No");
foreach (DataRow dr in dtMapAttr.Rows)
{
string lgType = dr["LGType"].ToString();
string uiBindKey = dr["UIBindKey"].ToString();
if (DataType.IsNullOrEmpty(uiBindKey) == true)
continue; //为空就continue.
if (lgType.Equals("1") == true)
continue; //枚举值就continue;
string uiIsEnable = dr["UIIsEnable"].ToString();
if (uiIsEnable.Equals("0") == true && lgType.Equals("1") == true)
continue; //如果是外键,并且是不可以编辑的状态.
if (uiIsEnable.Equals("1") == true && lgType.Equals("0") == true)
continue; //如果是外部数据源,并且是不可以编辑的状态.
// 检查是否有下拉框自动填充。
string keyOfEn = dr["KeyOfEn"].ToString();
string fk_mapData = dr["FK_MapData"].ToString();
#region 处理下拉框数据范围. for 小杨.
me = mes.GetEntityByKey(MapExtAttr.ExtType, MapExtXmlList.AutoFullDLL, MapExtAttr.AttrOfOper, keyOfEn) as MapExt;
if (me != null)
{
string fullSQL = me.Doc.Clone() as string;
fullSQL = fullSQL.Replace("~", ",");
fullSQL = BP.WF.Glo.DealExp(fullSQL, wk, null);
dt = DBAccess.RunSQLReturnTable(fullSQL);
if(SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
{
string columnName = "";
foreach (DataColumn col in dt.Columns)
{
columnName = col.ColumnName.ToUpper();
switch (columnName)
{
case "NO":
col.ColumnName = "No";
break;
case "NAME":
col.ColumnName = "Name";
break;
}
}
}
//重构新表
DataTable dt_FK_Dll = new DataTable();
dt_FK_Dll.TableName = keyOfEn;//可能存在隐患,如果多个字段,绑定同一个表,就存在这样的问题.
dt_FK_Dll.Columns.Add("No", typeof(string));
dt_FK_Dll.Columns.Add("Name", typeof(string));
foreach (DataRow dllRow in dt.Rows)
{
DataRow drDll = dt_FK_Dll.NewRow();
drDll["No"] = dllRow["No"];
drDll["Name"] = dllRow["Name"];
dt_FK_Dll.Rows.Add(drDll);
}
myds.Tables.Add(dt_FK_Dll);
continue;
}
#endregion 处理下拉框数据范围.
// 判断是否存在.
if (myds.Tables.Contains(uiBindKey) == true)
{
continue;
}
DataTable mydt = BP.Pub.PubClass.GetDataTableByUIBineKey(uiBindKey);
if (mydt == null)
{
DataRow ddldr = ddlTable.NewRow();
ddldr["No"] = uiBindKey;
ddlTable.Rows.Add(ddldr);
}
else
{
myds.Tables.Add(mydt);
}
}
ddlTable.TableName = "UIBindKey";
myds.Tables.Add(ddlTable);
#endregion End把外键表加入DataSet
#region 图片附件
FrmImgAthDBs imgAthDBs = new FrmImgAthDBs(this.FrmID, this.WorkID.ToString());
if (imgAthDBs != null && imgAthDBs.Count > 0)
{
DataTable dt_ImgAth = imgAthDBs.ToDataTableField("Sys_FrmImgAthDB");
myds.Tables.Add(dt_ImgAth);
}
#endregion
return BP.Tools.Json.ToJson(myds);
}
#endregion
#region ImpTableFieldSelectBindKey 外键枚举
/// <summary>
/// 初始化数据
/// </summary>
/// <returns></returns>
public string ImpTableFieldSelectBindKey_Init()
{
DataSet ds = new DataSet();
BP.Sys.SysEnumMains ens = new BP.Sys.SysEnumMains();
ens.RetrieveAll();
ds.Tables.Add(ens.ToDataTableField("EnumMain"));
BP.Sys.SFTables tabs = new BP.Sys.SFTables();
tabs.RetrieveAll();
ds.Tables.Add(tabs.ToDataTableField("SFTables"));
return BP.Tools.Json.ToJson(ds);
}
#endregion ImpTableFieldSelectBindKey 外键枚举
public string MapDataVer_SetMainVer()
{
MapDataVer mdVer = new MapDataVer(this.MyPK);
#region 1.变更主版本
string sql = "UPDATE Sys_MapDataVer SET IsRel=0 WHERE FrmID='" + mdVer.FrmID + "'";
DBAccess.RunSQL(sql);
mdVer.SetValByKey("IsRel", 1);
mdVer.Update(); //更新.
#endregion 1.变更主版本
#region 2. 覆盖之前的主版本数据
MapData mainData = new MapData(mdVer.FrmID);
string currVer = mainData.No + "." + mainData.Ver2022.ToString();
MapData md = new MapData();
md.No = currVer;
if (md.RetrieveFromDBSources() == 1)
md.Delete();
//把表单属性的FK_FormTree清空
BP.Sys.CCFormAPI.CopyFrm(mainData.No, currVer, mainData.Name + "(Ver" + currVer + ".0)", mainData.FK_FormTree);
md.FK_FormTree = "";
md.PTable = mainData.PTable;
md.Update();
//修改从表的存储表
MapDtls dtls = md.MapDtls;
foreach (MapDtl dtl in dtls)
{
if (dtl.PTable.Equals(dtl.No) == true)
{
dtl.PTable = dtl.PTable.Replace(currVer, mainData.No);
dtl.Update();
continue;
}
}
//把当前表单对应数据改成当前的版本
DBAccess.RunSQL("UPDATE " + md.PTable + " SET AtPara=CONCAT(AtPara,'@FrmVer=" + mainData.Ver2022 + "') WHERE AtPara NOT LIKE '%@FrmVer=%'");
#endregion 2. 覆盖之前的主版本数据
#region 3.把设置的表单数据拷贝到FrmID所在的表单上去
//FrmID的表单只有不存在其他版本的时候才可以删除修改版本
sql = "UPDATE Sys_MapDataVer SET FrmID='" + mdVer.MyPK + "'WHERE FrmID='" + mdVer.FrmID + "'";
DBAccess.RunSQL(sql);
//绑定的表单,表单方案的还原
FrmNodes frmNodes = new FrmNodes();
frmNodes.Retrieve(FrmNodeAttr.FK_Frm, mainData.No);
FrmFields frmFields = new FrmFields();
string whereFK_MapData = "'" + mainData.No + "'";
dtls = new MapDtls(mainData.No);
foreach (MapDtl dtl in dtls)
{
whereFK_MapData += ",'" + dtl.No + "' ";
}
frmFields.RetrieveIn(FrmFieldAttr.FK_MapData, whereFK_MapData);
mainData.Delete();
//把表单属性的FK_FormTree清空
BP.Sys.CCFormAPI.CopyFrm(mainData.No + "." + mdVer.Ver, mainData.No, mainData.Name, mainData.FK_FormTree);
mainData.FK_FormTree = mainData.FK_FormTree;
mainData.PTable = mainData.PTable;
mainData.Ver2022 = mdVer.Ver;
mainData.Update();
//修改从表的存储表
dtls = mainData.MapDtls;
foreach (MapDtl dtl in dtls)
{
if (dtl.PTable.Equals(dtl.No) == true)
{
dtl.PTable = dtl.PTable.Replace(mainData.No + "." + mdVer.Ver, mainData.No);
dtl.Update();
continue;
}
}
sql = "UPDATE Sys_MapDataVer SET FrmID='" + mainData.No + "' WHERE FrmID='" + this.MyPK + "'";
DBAccess.RunSQL(sql);
//还原表单方案
foreach (FrmNode frmNode in frmNodes)
{
frmNode.DirectInsert();
}
foreach (FrmField frmField in frmFields)
{
frmField.DirectInsert();
}
#endregion 3.把设置的表单数据拷贝到FrmID所在的表单上去
return "设置成功.";
}
public string SysEnumList_SelectEnum()
{
string sql = "";
string EnumName = this.GetRequestVal("EnumName");
if (EnumName == "")
sql = "SELECT EnumKey,No,Name,CfgVal,Lang FROM Sys_EnumMain";
else
sql = "SELECT EnumKey,No,Name,CfgVal,Lang FROM Sys_EnumMain WHERE (No like '%" + EnumName + "%') OR (Name like '%" + EnumName + "%')";
DataTable dt = DBAccess.RunSQLReturnTable(sql);
if (SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
{
dt.Columns[0].ColumnName = "EnumKey";
dt.Columns[1].ColumnName = "No";
dt.Columns[2].ColumnName = "Name";
dt.Columns[3].ColumnName = "CfgVal";
dt.Columns[4].ColumnName = "Lang";
}
return BP.Tools.Json.ToJson(dt);
}
public string SysEnumList_MapAttrs()
{
string sql = "SELECT A.FK_MapData,A.KeyOfEn,A.Name From Sys_MapAttr A,Sys_MapData B Where A.FK_MapData=B.No " +
"AND A.UIBindKey='" + this.GetRequestVal("UIBindKey") + "' AND B.OrgNo='" + this.GetRequestVal("OrgNo") + "'";
DataTable dt = DBAccess.RunSQLReturnTable(sql);
if (SystemConfig.AppCenterDBFieldCaseModel != FieldCaseModel.None)
{
dt.Columns[0].ColumnName = "FK_MapData";
dt.Columns[1].ColumnName = "KeyOfEn";
dt.Columns[2].ColumnName = "Name";
}
return BP.Tools.Json.ToJson(dt);
}
}
public class WSMethod
{
public string No { get; set; }
public string Name { get; set; }
public Dictionary<string, string> ParaMS { get; set; }
public string Return { get; set; }
}
}