2025-03-27 15:05:14 +08:00

643 lines
32 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI.WebControls;
using SuperMap.RealEstate.Identity;
using SuperMap.RealEstate.ServiceModel;
using SuperMap.RealEstate.CoreFrameWork;
using SuperMap.RealEstate.Web.UI.WebControls;
using SuperMap.RealEstate.FrameWork.Business;
using SuperMap.RealEstate.CoreFrameWork.Dictionary.Business;
namespace HZQR.Common.Common
{
/// <summary>
/// 业务相关方法
/// </summary>
public class BusinessHelper
{
#region
/// <summary>
/// 记录数据表变更日志
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="TableID">变更表主键值</param>
/// <param name="TableName">变更表名称</param>
/// <param name="OwnerName">变更用户名称</param>
/// <param name="_PassportInfo">综管平台用户对象</param>
/// <param name="OperateDesc">操作说明</param>
public static void RecordDataChangeLog(Transaction _Transaction, int TableID,
string TableName, string OwnerName, PassportInfo _PassportInfo, string OperateDesc)
{
string SQLString = string.Format(@"INSERT INTO PLATFORM_FRAMEWORK.T_DATACHANGE (
DATACHANGE_ID,TABLE_ID,TABLE_NAME,OWNER_NAME,
STAFF_ID,STAFF_NAME,OPERATE_DATE,OPERATE_DESC)
VALUES (
PLATFORM_FRAMEWORK.SEQ_DATACHANGE.NEXTVAL,
{0},'{1}','{2}',{3},'{4}',SYSDATE,'{5}')",
TableID, TableName, OwnerName, _PassportInfo.ID, _PassportInfo.Name, OperateDesc);
new User(_Transaction).ExecuteNonQuery(SQLString, null);
}
#endregion
#region
/// <summary>
/// 记录业务办理日志
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="BusinessLogType">业务类型</param>
/// <param name="BusinessID">业务ID</param>
/// <param name="TableName">数据表名称</param>
/// <param name="OwnerName">数据表用户</param>
/// <param name="BusinessLogContent">日志内容</param>
/// <param name="PassportInfoID">操作人内码</param>
/// <param name="PassportInfoName">操作人名称</param>
public static void RecordBusinessLog(Transaction _Transaction, int BusinessLogType, int BusinessID,
string TableName, string OwnerName, string BusinessLogContent, int? PassportInfoID, string PassportInfoName)
{
if (BusinessLogType == 209000)
{
return;
}
RecordBusinessLog(_Transaction, BusinessLogType, BusinessID, TableName, OwnerName, BusinessLogContent, 1, 1);
}
/// <summary>
/// 记录业务办理日志
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="BusinessLogType">业务类型</param>
/// <param name="BusinessID">业务ID</param>
/// <param name="TableName">数据表名称</param>
/// <param name="OwnerName">数据表用户</param>
/// <param name="BusinessLogContent">日志内容</param>
/// <param name="Data_Consistency">数据一致性0不一致1一致</param>
/// <param name="Check_State">反查标识0后续需要干预处理的日志1纯记录作为定时删除日志的标记</param>
public static void RecordBusinessLog(Transaction _Transaction, int BusinessLogType, int BusinessID,
string TableName, string OwnerName, string BusinessLogContent, int Data_Consistency, int Check_State)
{
if (BusinessLogType == 209000)
{
return;
}
RecordBusinessLog(_Transaction, BusinessLogType, BusinessID, TableName, OwnerName,
BusinessLogContent, Data_Consistency, Check_State, "");
}
/// <summary>
/// 记录业务办理日志
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="BusinessLogType">业务类型
/// 进销存业务:
/// 201000进销存入库
/// 202000进销存调拨
/// 203000进销存退货
/// 204000进销存领用
/// 205000进销存销售
/// 206000进销存盘点结存
/// 206001进销存盘点损溢
/// 207000补充本期无库存有销售的新商品
/// 209000用户查询信息
/// 总仓统配业务:
/// 501000总仓入库
/// 502000总仓调拨
/// 503000总仓退货
/// 504000总仓领用
/// 505000总仓损溢
/// 506000总仓盘点结存
/// 506001总仓盘点损溢
/// 507000总仓异常实时库存
/// 508000总仓配送
/// 509000总仓异常退货
/// </param>
/// <param name="BusinessID">业务表主键值</param>
/// <param name="TableName">变更表名称</param>
/// <param name="OwnerName">变更用户名称</param>
/// <param name="BusinessLogContent">日志内容</param>
/// <param name="Data_Consistency">数据一致性0不一致1一致</param>
/// <param name="Check_State">反查标识0后续需要干预处理的日志1纯记录作为定时删除日志的标记</param>
/// <param name="UniqueCode">日结账单唯一标识,格式:服务区编码|门店编码|结账时间|机器编码|销售金额</param>
public static void RecordBusinessLog(Transaction _Transaction, int BusinessLogType, int BusinessID, string TableName,
string OwnerName, string BusinessLogContent, int Data_Consistency, int Check_State, string UniqueCode)
{
string SQLString = "";
try
{
SQLString = string.Format(@"INSERT INTO PLATFORM_FRAMEWORK.T_BUSINESSLOG (
BUSINESSLOG_ID,BUSINESSLOG_TYPE,BUSINESS_ID,TABLE_NAME,OWNER_NAME,
BUSINESSLOG_CONTENT,OPERATE_DATE,DATA_CONSISTENCY,CHECK_STATE,UNIQUECODE)
VALUES (
PLATFORM_FRAMEWORK.SEQ_BUSINESSLOG.NEXTVAL,
{0},{1},'{2}','{3}','{4}',{5},{6},{7},'{8}')",
BusinessLogType, BusinessID, TableName, OwnerName, BusinessLogContent,
DateTime.Now.ToString("yyyyMMddHHmmss"), Data_Consistency, Check_State, UniqueCode);
new User(_Transaction).ExecuteNonQuery(SQLString, null);
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "记录业务办理日志失败!执行语句:" + SQLString,
DateTime.Now.ToString("yyyyMMdd") + "_BusinessLog");
}
}
/// <summary>
/// 记录业务办理日志
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="businessLogModel">业务日志数据对象</param>
public static void RecordBusinessLog(Transaction _Transaction, Models.BusinessLogModel businessLogModel)
{
string SQLString = string.Format(@"INSERT INTO PLATFORM_FRAMEWORK.T_BUSINESSLOG (
BUSINESSLOG_ID,BUSINESSLOG_TYPE,BUSINESS_ID,TABLE_NAME,OWNER_NAME,
BUSINESSLOG_CONTENT,OPERATE_DATE,DATA_CONSISTENCY,CHECK_STATE,UNIQUECODE,
SERVERPARTCODE,SHOPCODE,MACHINECODE,BUSINESSTYPE,
SALE_AMOUNT,CASHPAY_AMOUNT,DAILY_AMOUNT,CHANNEL_AMOUNT,
ENDACCOUNT_ID,STATISTICS_DATE)
VALUES (
PLATFORM_FRAMEWORK.SEQ_BUSINESSLOG.NEXTVAL,
{0},{1},'{2}','{3}','{4}',{5},{6},{7},'{8}',
'{9}','{10}','{11}',{12},{13},{14},{15},{16},{17},{18})",
businessLogModel.BUSINESSLOG_TYPE == null ? "NULL" : businessLogModel.BUSINESSLOG_TYPE.ToString(),
businessLogModel.BUSINESS_ID == null ? "NULL" : businessLogModel.BUSINESS_ID.ToString(),
businessLogModel.TABLE_NAME, businessLogModel.OWNER_NAME,
businessLogModel.BUSINESSLOG_CONTENT, DateTime.Now.ToString("yyyyMMddHHmmss"),
businessLogModel.DATA_CONSISTENCY == null ? "NULL" : businessLogModel.DATA_CONSISTENCY.ToString(),
businessLogModel.CHECK_STATE == null ? "NULL" : businessLogModel.CHECK_STATE.ToString(),
businessLogModel.UNIQUECODE, businessLogModel.SERVERPARTCODE, businessLogModel.SHOPCODE, businessLogModel.MACHINECODE,
businessLogModel.BUSINESSTYPE == null ? "NULL" : businessLogModel.BUSINESSTYPE.ToString(),
businessLogModel.SALE_AMOUNT == null ? "NULL" : businessLogModel.SALE_AMOUNT.ToString(),
businessLogModel.CASHPAY_AMOUNT == null ? "NULL" : businessLogModel.CASHPAY_AMOUNT.ToString(),
businessLogModel.DAILY_AMOUNT == null ? "NULL" : businessLogModel.DAILY_AMOUNT.ToString(),
businessLogModel.CHANNEL_AMOUNT == null ? "NULL" : businessLogModel.CHANNEL_AMOUNT.ToString(),
businessLogModel.ENDACCOUNT_ID == null ? "NULL" : businessLogModel.ENDACCOUNT_ID.ToString(),
businessLogModel.STATISTICS_DATE == null ? "NULL" : businessLogModel.STATISTICS_DATE.ToString());
new User(_Transaction).ExecuteNonQuery(SQLString, null);
}
#endregion
#region
/// <summary>
/// 更新日志表反查标识
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="BusinessLogType">日志类型</param>
/// <param name="BusinessID">业务ID</param>
/// <param name="TableName">业务表名称</param>
/// <param name="OwnerName">业务表用户</param>
/// <param name="BusinessLogContent">日志内容</param>
/// <param name="Data_Consistency">数据一致性</param>
/// <param name="Check_State">反查标识0后续需要干预处理的日志1纯记录作为定时删除日志的标记</param>
public static void UpdateBusinessLogCheckState(Transaction _Transaction, int BusinessLogType, int BusinessID,
string TableName, string OwnerName, string BusinessLogContent, int? Data_Consistency, int? Check_State)
{
string SQLString = "", UpdateSQL = "";
try
{
if (BusinessLogContent != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "BUSINESSLOG_CONTENT = '" + BusinessLogContent + "'";
}
if (Data_Consistency != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "DATA_CONSISTENCY = " + Data_Consistency;
}
if (Check_State != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "CHECK_STATE = " + Check_State;
}
SQLString = string.Format(@"UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG SET {0}
WHERE BUSINESSLOG_TYPE = {1} AND BUSINESS_ID = {2} AND
TABLE_NAME = '{3}' AND OWNER_NAME = '{4}'",
UpdateSQL, BusinessLogType, BusinessID, TableName, OwnerName);
new User(_Transaction).ExecuteNonQuery(SQLString, null);
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "记录业务办理日志失败!执行语句:" + SQLString,
DateTime.Now.ToString("yyyyMMdd") + "_BusinessLog");
}
}
/// <summary>
/// 更新日志表反查标识
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="BusinessLogID">日志内码</param>
/// <param name="BusinessLogContent">日志内容</param>
/// <param name="Data_Consistency">数据一致性</param>
/// <param name="Check_State">反查标识0后续需要干预处理的日志1纯记录作为定时删除日志的标记</param>
public static void UpdateBusinessLogCheckState(Transaction _Transaction, int BusinessLogID,
string BusinessLogContent, int? Data_Consistency, int? Check_State)
{
UpdateBusinessLogCheckState(_Transaction, BusinessLogID, BusinessLogContent, Data_Consistency, Check_State, null);
}
/// <summary>
/// 更新日志表反查标识
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="BusinessLogID">日志内码</param>
/// <param name="BusinessLogContent">日志内容</param>
/// <param name="Data_Consistency">数据一致性</param>
/// <param name="Check_State">反查标识0后续需要干预处理的日志1纯记录作为定时删除日志的标记</param>
/// <param name="Daily_Amount">自然日移动支付金额</param>
/// <param name="Endaccount_Id">日结账单内码</param>
public static void UpdateBusinessLogCheckState(Transaction _Transaction, int BusinessLogID,
string BusinessLogContent, int? Data_Consistency, int? Check_State,
decimal? Daily_Amount, int? Endaccount_Id = null)
{
string SQLString = "", UpdateSQL = "";
try
{
if (BusinessLogContent != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "BUSINESSLOG_CONTENT = '" + BusinessLogContent + "'";
}
if (Data_Consistency != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "DATA_CONSISTENCY = " + Data_Consistency;
}
if (Check_State != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "CHECK_STATE = " + Check_State;
}
if (Daily_Amount != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "DAILY_AMOUNT = " + Daily_Amount;
}
if (Endaccount_Id != null)
{
UpdateSQL += (UpdateSQL == "" ? "" : ",") + "ENDACCOUNT_ID = " + Endaccount_Id;
}
SQLString = string.Format(@"UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG
SET {0} WHERE BUSINESSLOG_ID = {1}", UpdateSQL, BusinessLogID);
new User(_Transaction).ExecuteNonQuery(SQLString, null);
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "记录业务办理日志失败!执行语句:" + SQLString,
DateTime.Now.ToString("yyyyMMdd") + "_BusinessLog");
}
}
#endregion
#region session
/// <summary>
/// 获取用户session
/// </summary>
public static void GetPassportInfoSession(Transaction _Transaction, HttpContext context, string UserID)
{
if (string.IsNullOrWhiteSpace(UserID)) return;
DataTable dtUser = new User(_Transaction).ExecuteDataTable(
"SELECT * FROM PLATFORM_FRAMEWORK.T_USER WHERE USER_ID = " + UserID);
if (dtUser.Rows.Count > 0)
{
context.Session[ConstStringHelper.RequestQueryString_PassportUserName] = dtUser.Rows[0]["USER_PASSPORT"];
context.Session["User_ID"] = dtUser.Rows[0]["USER_ID"];
context.Session["User_Name"] = dtUser.Rows[0]["USER_NAME"];
context.Session["User_Authenticated"] = true;
context.Session[ConstStringHelper.RequestQueryString_PassportGuid] = Guid.NewGuid().ToString();
context.Session["User_EnabledCityAuthority"] = "USER_ENABLEDCITYAUTHORITY";
context.Session["User_CityAuthority"] = dtUser.Rows[0]["USER_CITYAUTHORITY"];
context.Session["User_EnabledLicense"] = dtUser.Rows[0]["USER_ENABLEDLICENSE"];
context.Session["User_License"] = dtUser.Rows[0]["USER_LICENSE"];
context.Session["User_UserMobilephone"] = dtUser.Rows[0]["USER_MOBILEPHONE"];
context.Session["User_ProvinceCode"] = dtUser.Rows[0]["USER_PROVINCE"];
context.Session["User_ProvinceUnit"] = dtUser.Rows[0]["PROVINCE_UNIT"];
}
}
#endregion
#region id获取系统模块数据表对象
/// <summary>
/// 根据模块id获取系统模块数据表对象
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="ModuleId">模块id</param>
/// <returns></returns>
public static Module GetModuleByModuleId(Transaction transaction, string ModuleId)
{
Module module = new Module(transaction);
if (!string.IsNullOrWhiteSpace(ModuleId))
{
module.Module_ID_Encrypt = ModuleId.ToEncrypt();
module.Select();
}
return module;
}
#endregion
#region
/// <summary>
/// 获取系统模块数据表对象
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="ModuleGuid">模块guid</param>
/// <returns></returns>
public static Module GetModuleByModuleGuid(Transaction transaction, string ModuleGuid)
{
Module module = new Module(transaction);
if (!string.IsNullOrWhiteSpace(ModuleGuid))
{
module.AddSearchParameter("MODULE_GUID", ModuleGuid);
module.Search();
}
return module;
}
#endregion
#region ->
/// <summary>
/// 获取枚举及其子集
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="FieldExplain_Field">枚举字段内码</param>
/// <param name="RetString"></param>
/// <param name="Pid">当前枚举的内码,顶层为-1</param>
/// <param name="obscureName">其他检索条件,枚举名称</param>
/// <param name="_SearchDataTable">枚举数据源</param>
/// <returns></returns>
public static void GetSubFieldEnum(Transaction transaction, string FieldExplain_Field, ref string RetString,
string Pid, string obscureName, DataTable _SearchDataTable = null)
{
//由于数据量商品类别不可能太多,所以一次性全部取出
if (_SearchDataTable == null)
{
_SearchDataTable = GetFieldEnumDataSource(transaction, FieldExplain_Field);
}
string SearchString = "FIELDENUM_PID = '" + Pid + "'" + (obscureName == "" ? "" : " AND FIELDENUM_NAME LIKE '" + obscureName + "'");
DataRow[] _DataRowList = _SearchDataTable.Select(SearchString);
if (_DataRowList.Length == 0)
{
return;
}
else
{
foreach (DataRow _CurrRow in _DataRowList)
{
RetString += (RetString == "" ? "" : ",") + _CurrRow["FIELDENUM_VALUE"].ToString();
GetSubFieldEnum(transaction, FieldExplain_Field, ref RetString,
_CurrRow["FIELDENUM_ID"].ToString(), obscureName, _SearchDataTable);
}
}
}
private static DataTable GetFieldEnumDataSource(Transaction transaction, string FieldExplain_Field)
{
string StrSql = "SELECT * FROM V_FIELDENUM WHERE FIELDEXPLAIN_FIELD = '" + FieldExplain_Field + "'";
DataTable _DataTable = new FieldEnum(transaction).ExecuteDataTable(StrSql);
_DataTable.DefaultView.Sort = "FIELDENUM_PID,FIELDENUM_INDEX,FIELDENUM_VALUE";
return _DataTable.DefaultView.ToTable();
}
#endregion
#region ->
/// <summary>
/// 绑定枚举树
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="treeNodeCollection">树集合</param>
/// <param name="FieldExplain_Field">字段名称</param>
/// <param name="pid">父级枚举</param>
/// <param name="dataStatus">枚举状态筛选条件</param>
/// <param name="showType">显示模式0【枚举值】1【枚举内码】</param>
/// <param name="dtEnum">枚举数据源</param>
/// <param name="ShowTarget">点击节点是否跳转页面</param>
/// <param name="NavigateUrl">页面跳转地址</param>
public static void BindingEnumTreeView(Transaction transaction, TreeNodeCollection treeNodeCollection,
string FieldExplain_Field, string pid, string dataStatus = "", int showType = 0, DataTable dtEnum = null,
bool ShowTarget = false, string NavigateUrl = "javascript:void(0);")
{
BindingEnumTreeView(transaction, treeNodeCollection, FieldExplain_Field,
pid, dataStatus, showType, dtEnum, ShowTarget, NavigateUrl, false);
}
/// <summary>
/// 绑定枚举树
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="treeNodeCollection">树集合</param>
/// <param name="FieldExplain_Field">字段名称</param>
/// <param name="pid">父级枚举</param>
/// <param name="dataStatus">枚举状态筛选条件</param>
/// <param name="showType">显示模式0【枚举值】1【枚举内码】</param>
/// <param name="dtEnum">枚举数据源</param>
/// <param name="ShowTarget">点击节点是否跳转页面</param>
/// <param name="NavigateUrl">页面跳转地址</param>
/// <param name="ShowIndex">树节点是否显示索引</param>
public static void BindingEnumTreeView(Transaction transaction, TreeNodeCollection treeNodeCollection,
string FieldExplain_Field, string pid, string dataStatus, int showType, DataTable dtEnum,
bool ShowTarget, string NavigateUrl, bool ShowIndex)
{
if (dtEnum == null)
{
string WhereSQL = "";
if (!string.IsNullOrEmpty(dataStatus))
{
WhereSQL = " AND FIELDENUM_STATUS IN (" + dataStatus + ")";
}
//获取枚举信息
FieldExplain fieldExplain = DictionaryHelper.GetFieldExplain(FieldExplain_Field, transaction);
dtEnum = new FieldEnum(transaction).FillDataTable("WHERE FIELDEXPLAIN_ID = " + fieldExplain.KeyID + WhereSQL);
}
foreach (DataRow drEnum in dtEnum.Select("FIELDENUM_PID = " + pid, "FIELDENUM_INDEX,FIELDENUM_VALUE"))
{
TreeNode treeNode = new TreeNode();
treeNode.Text = (ShowIndex ? "【" + drEnum["FIELDENUM_INDEX"] + "】" : "") + drEnum["FIELDENUM_NAME"].ToString();
treeNode.Value = showType == 0 ? drEnum["FIELDENUM_VALUE"].ToEncrypt() : drEnum["FIELDENUM_ID"].ToEncrypt();
if (ShowTarget)
{
if (string.IsNullOrWhiteSpace(NavigateUrl) || NavigateUrl == "javascript:void(0);")
{
treeNode.NavigateUrl = "javascript:void(0);";
}
else
{
treeNode.NavigateUrl = NavigateUrl + (NavigateUrl.Contains("?") ? "&" : "?") +
"FIELDENUMID=" + drEnum["FIELDENUM_ID"].ToEncrypt() + "&FIELDENUMVALUE=" + drEnum["FIELDENUM_VALUE"].ToEncrypt();
}
}
else
{
treeNode.NavigateUrl = "javascript:void(0);";
}
if (dtEnum.Select("FIELDENUM_PID = " + drEnum["FIELDENUM_ID"]).Length > 0)
{
BindingEnumTreeView(transaction, treeNode.ChildNodes, FieldExplain_Field, drEnum["FIELDENUM_ID"].ToString(),
dataStatus, showType, dtEnum, ShowTarget, NavigateUrl, ShowIndex);
}
treeNodeCollection.Add(treeNode);
}
}
#endregion
#region ->
/// <summary>
/// 绑定枚举字典类别下拉框
/// </summary>
/// <param name="transaction"></param>
/// <param name="items"></param>
/// <param name="disabledValue"></param>
public static void BindingFieldExplainDDL(Transaction transaction, List<ListItemEx> items, string disabledValue)
{
DataTable _DataTable = GetFieldExplainTypeDataSource(transaction, string.Empty, string.Empty);
BindingFieldExplainDDL(transaction, _DataTable, "-1", items, disabledValue, 0, true);
}
/// <summary>
/// 绑定枚举字典下拉框
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="dtFieldExplainType">数据字典类型数据源</param>
/// <param name="pid">父级枚举字典</param>
/// <param name="items">枚举字典下拉框</param>
/// <param name="disabledValue">不可加载的数值</param>
/// <param name="level">显示级别</param>
/// <param name="disabled">字典类型是否可以选择</param>
/// <param name="ShowFieldExplain">显示数据字典</param>
/// <param name="dtFieldExplain">数据字典数据源</param>
/// <param name="valueType">下拉框值类型0【字典内码】1【字典英文】</param>
public static void BindingFieldExplainDDL(Transaction transaction, DataTable dtFieldExplainType, string pid,
List<ListItemEx> items, string disabledValue, int level, bool disabled, bool ShowFieldExplain = false,
DataTable dtFieldExplain = null, int valueType = 0)
{
BindingFieldExplainDDL(transaction, dtFieldExplainType, pid, items, disabledValue,
level, disabled, ShowFieldExplain, dtFieldExplain, valueType, false);
}
/// <summary>
/// 绑定枚举字典下拉框
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="dtFieldExplainType">数据字典类型数据源</param>
/// <param name="pid">父级枚举字典</param>
/// <param name="items">枚举字典下拉框</param>
/// <param name="disabledValue">不可加载的数值</param>
/// <param name="level">显示级别</param>
/// <param name="disabled">字典类型是否可以选择</param>
/// <param name="ShowFieldExplain">显示数据字典</param>
/// <param name="dtFieldExplain">数据字典数据源</param>
/// <param name="valueType">下拉框值类型0【字典内码】1【字典英文】</param>
/// <param name="showDataTableEnum">是否显示数据库表枚举</param>
public static void BindingFieldExplainDDL(Transaction transaction, DataTable dtFieldExplainType, string pid,
List<ListItemEx> items, string disabledValue, int level, bool disabled, bool ShowFieldExplain,
DataTable dtFieldExplain, int valueType, bool showDataTableEnum)
{
//获取枚举字段类型数据源
if (dtFieldExplainType == null)
{
dtFieldExplainType = GetFieldExplainTypeDataSource(transaction, string.Empty, string.Empty);
}
//获取枚举字段数据源
if (ShowFieldExplain && dtFieldExplain == null)
{
dtFieldExplain = new FieldExplain(transaction).FillDataTable("");
}
//加载数据库表枚举
if (showDataTableEnum)
{
FieldExplain fieldExplain = DictionaryHelper.GetFieldExplain("DATATABLE_ENUM", transaction);
ListItemEx listItemExType = new ListItemEx();
listItemExType.Value = "0";
listItemExType.Text = "常用数据库表枚举";
listItemExType.Level = level;
if (!disabled)
{
listItemExType.Enabled = false;
}
items.Add(listItemExType);
if (ShowFieldExplain)
{
foreach (DataRow drFieldEnum in new FieldEnum(transaction).FillDataTable("WHERE FIELDEXPLAIN_ID = " +
fieldExplain.FieldExplain_ID).Select("", "FIELDENUM_INDEX,FIELDENUM_VALUE"))
{
ListItemEx ListItemField = new ListItemEx();
ListItemField.Value = valueType == 0 ? drFieldEnum["FIELDENUM_ID"].ToString() :
drFieldEnum["FIELDENUM_VALUE"].ToString(); //0【字典内码】1【字典英文】
ListItemField.Text = drFieldEnum["FIELDENUM_NAME"].ToString() +
"[" + drFieldEnum["FIELDENUM_VALUE"] + "]"; //字典中文名称[字典英文]
ListItemField.Level = level + 1;
items.Add(ListItemField);
}
}
}
foreach (DataRow _Row in dtFieldExplainType.Select("ExplainType_PID = '" + pid + "'",
"EXPLAINTYPE_INDEX,EXPLAINTYPE_NAME,EXPLAINTYPE_ID"))
{
ListItemEx _ListItem = new ListItemEx();
_ListItem.Value = _Row["ExplainType_ID"].ToString();
_ListItem.Text = _Row["ExplainType_Name"].ToString();
_ListItem.Level = level;
if (_ListItem.Value == disabledValue)
{
continue;
}
if (!disabled)
{
_ListItem.Enabled = false;
}
items.Add(_ListItem);
BindingFieldExplainDDL(transaction, dtFieldExplainType, _Row["ExplainType_ID"].ToString(), items,
disabledValue, level + 1, disabled, ShowFieldExplain, dtFieldExplain, valueType);
if (ShowFieldExplain)
{
foreach (DataRow drFieldExplain in dtFieldExplain.Select("EXPLAINTYPE_ID = " +
_Row["ExplainType_ID"].ToString(), "FIELDEXPLAIN_INDEX,FIELDEXPLAIN_FIELD"))
{
ListItemEx ListItemField = new ListItemEx();
ListItemField.Value = valueType == 0 ? drFieldExplain["FIELDEXPLAIN_ID"].ToString() :
drFieldExplain["FIELDEXPLAIN_FIELD"].ToString(); //0【字典内码】1【字典英文】
ListItemField.Text = drFieldExplain["FIELDEXPLAIN_NAME"].ToString() +
"[" + drFieldExplain["FIELDEXPLAIN_FIELD"] + "]"; //字典中文名称[字典英文]
ListItemField.Level = level + 1;
items.Add(ListItemField);
}
}
}
}
#endregion
#region ->
/// <summary />
public static DataTable GetFieldExplainTypeDataSource(Transaction transaction, string pid)
{
return GetFieldExplainTypeDataSource(transaction, pid, string.Empty);
}
/// <summary />
public static DataTable GetFieldExplainTypeDataSource(Transaction transaction, string pid, string obscureName)
{
string whereSQL = string.IsNullOrEmpty(pid) ? "" : "WHERE EXPLAINTYPE_PID = " + pid;
DataTable dtExplainType = new ExplainType(transaction).FillDataTable(whereSQL);
if (!string.IsNullOrWhiteSpace(obscureName))
{
dtExplainType.DefaultView.RowFilter = "EXPLAINTYPE_NAME like '%" + obscureName + "%'";
}
dtExplainType.DefaultView.Sort = "EXPLAINTYPE_INDEX,EXPLAINTYPE_NAME,EXPLAINTYPE_ID";
return dtExplainType.DefaultView.ToTable();
}
#endregion
}
}