using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using SysBaseLibs;
using SysDataLibs.TableClass;
namespace SysDataLibs
{
public class AppEnv
{
///
/// 得到表的一条记录的信息
///
/// 传入的SQL语句
/// 要创建的对应的表信息对象
/// 创建是否成功
public static bool GetTableInfo(string pcSql, ITableInfo poTableInfo)
{
UserSession loSession = WebLibs.CheckLogin();
return GetTableInfo(pcSql, poTableInfo, loSession.DBConn);
}
public static bool GetTableInfo(string pcSql, ITableInfo poTableInfo, DBConnSql poDBConn)
{
string lcError = "";
return GetTableInfo(pcSql, poTableInfo, poDBConn, ref lcError);
}
///
/// 得到表的一条记录的信息
///
/// 传入的SQL语句
/// 要创建的对应的表信息对象
/// 数据库连接对象
/// 创建失败的时候返回的错误信息
/// 创建是否成功
public static bool GetTableInfo(string pcSql, ITableInfo poTableInfo, DBConnSql poDBConn, ref string pcErrMsg)
{
bool lbRetVal = false;
if (pcSql != "" && poTableInfo != null && poDBConn != null && poDBConn.IsOpened)
{
try
{
rsQuery loQuery = poDBConn.OpenQuery(pcSql);
if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
{
loQuery.MoveFirst();
poTableInfo.CreateTableInfo(loQuery.CurrentRow);
lbRetVal = true;
}
else
pcErrMsg = "传入的SQL语句不合法!";
}
catch (Exception e)
{
ThreadLog.LogException(e);
pcErrMsg = e.Message;
}
}
else
pcErrMsg = "传入的参数不合法!";
return lbRetVal;
}
///
/// 执行一个SQL 语句,并将数据跟 sysstatus表数据进行翻译
///
/// 传入的SQL语句
/// 要翻译的表名
/// 返回的XML形式的数据集
/// 执行成功返回true 否则 false
public static bool GetDataOfTranslate(string pcSql, string pcTableName, ref string pcData)
{
string pcDataSchema = "";
string pcErrorMsg = "";
return GetDataOfTranslate(pcSql, pcTableName, ref pcData, ref pcDataSchema, ref pcErrorMsg);
}
public static bool GetDataOfTranslate(string pcSql, string pcTableName, ref string pcData,ref string pcDataSchema)
{
string pcErrorMsg = "";
return GetDataOfTranslate(pcSql, pcTableName, ref pcData, ref pcDataSchema, ref pcErrorMsg);
}
///
/// 执行一个SQL 语句,并将数据跟 sysstatus表数据进行翻译
///
/// 传入的SQL语句
/// 要翻译的表名
/// 返回的XML形式的数据集
/// 返回的XMLd数据表现框架
/// 返回的错误信息
/// 执行成功返回true 否则 false
public static bool GetDataOfTranslate(string pcSql, string pcTableName, ref string pcData, ref string pcDataSchema, ref string pcErrorMsg)
{
UserSession loSession = WebLibs.CheckLogin();
return GetDataOfTranslate(pcSql, pcTableName, loSession.DBConn, ref pcData, ref pcDataSchema, ref pcErrorMsg);
}
///
/// 执行一个SQL 语句,并将数据跟 sysstatus表数据进行翻译
///
/// 传入的SQL语句
/// 要翻译的表名
/// 数据库连接对象
/// 返回的XML形式的数据集
/// 返回的XMLd数据表现框架
/// 返回的错误信息
/// 执行成功返回true 否则 false
public static bool GetDataOfTranslate(string pcSql, string pcTableName, DBConnSql poConn, ref string pcData, ref string pcDataSchema, ref string pcErrorMsg)
{
bool lbRetVal = false;
if (pcSql.Trim().Length > 0 && pcTableName.Trim().Length > 0 && poConn != null && poConn.IsOpened)
{
try
{
DataSet loDS = poConn.OpenDataSet(pcSql);
if (loDS != null && loDS.Tables.Count == 1)
{
pcData = loDS.GetXml();
pcDataSchema = loDS.GetXmlSchema();
DataTranslateFromSysStatus(ref pcData, pcTableName, poConn);
}
lbRetVal = true;
}
catch (Exception e)
{
ThreadLog.LogException(e);
pcErrorMsg = e.Message;
lbRetVal = false;
}
}
return lbRetVal;
}
public static bool DataTranslateFromSysStatus(ref string pcDataXML, string pcTableName, DBConnSql poConn)
{
bool lbRetVal = false;
if (UtilStr.UAndT(pcDataXML) == UtilStr.UAndT("") || pcDataXML == "")
return true;
try
{
// ColName,CodeValue,DisplayValue
string lcSqlTemp = "SELECT " + Sys_Status_info.cColName + "," + Sys_Status_info.cCodeValue + "," + Sys_Status_info.cDisplayValue + " FROM " + Tn.Sys_Status + " "
+ " WHERE " + Sys_Status_info.cTableName + " = '" + pcTableName + "'";
rsQuery loQuery = poConn.OpenQuery(lcSqlTemp);
if (loQuery.IsOpened && loQuery.RecCount > 0)
{
rsXmlNode loXmlNode = rsXmlNode.ParseGenericXml(pcDataXML);
if (loXmlNode != null && loXmlNode.Nodes.Count > 0)
{
foreach (rsXmlNode loNode in loXmlNode.Nodes)
{
loQuery.MoveFirst();
for (int i = 0; i < loQuery.RecCount; i++)
{
string lcColumnId = loQuery.GetString(Sys_Status_info.cColName);
lcColumnId = UtilStr.UAndT(lcColumnId);
rsXmlNode loColNode = loNode.GetChildNode(lcColumnId);
if (loColNode != null)
{
string lcValue = loQuery.GetString(Sys_Status_info.cCodeValue);
string lcSValue = loColNode.Value;
if (UtilStr.UAndT(lcSValue) == UtilStr.UAndT(lcValue))
{
string lcDisplay = loQuery.GetString(Sys_Status_info.cDisplayValue);
loColNode.Value = lcDisplay;
}
}
loQuery.MoveNext();
}
}
pcDataXML = loXmlNode.ToXmlString();
lbRetVal = true;
}
}
}
catch(Exception e) {
ThreadLog.LogException(e);
}
return lbRetVal;
}
/// 如果不为空则 再从sysStatus表中再翻译
///
public static bool GetDataAfterTrans(string pcSql, DBConnSql poConn, List poList, ref string pcDataXml, ref string pcDataSchema, ref string pcErrorMsg, string pcTranslateFromSysStatusTableName)
{
bool lbRetVal = false;
if (poConn == null)
{
return false;
}
lbRetVal = poConn.GetData(pcSql, ref pcDataXml, ref pcDataSchema);
if (lbRetVal)
{
GetDataAfterTrans(ref pcDataXml, poConn, poList);
if (pcTranslateFromSysStatusTableName.Length > 0)
{
//如果不为空则 再从sysStatus表中再翻译
DataTranslateFromSysStatus(ref pcDataXml, pcTranslateFromSysStatusTableName, poConn);
}
}
else
pcErrorMsg = poConn.ErrorMsg;
return lbRetVal;
}
public static bool GetDataAfterTrans(string pcSql, DBConnSql poConn, List poList, ref string pcDataXml, ref string pcDataSchema, ref string pcErrorMsg)
{
bool lbRetVal = false;
if (poConn == null)
{
return false;
}
lbRetVal = poConn.GetData(pcSql, ref pcDataXml, ref pcDataSchema);
if (lbRetVal)
{
GetDataAfterTrans(ref pcDataXml, poConn, poList);
}
else
pcErrorMsg = poConn.ErrorMsg;
return lbRetVal;
}
// 扩展
public static bool GetDataAfterTrans(string pcSql, DBConnSql poConn, List poList, ref string pcDataXml, ref string pcDataSchema, ref string pcErrorMsg, ref int piRecCount)
{
bool lbRetVal = false;
if (poConn == null)
{
return false;
}
lbRetVal = poConn.GetData(pcSql, ref pcDataXml, ref pcDataSchema, ref piRecCount);
if (lbRetVal)
{
GetDataAfterTrans(ref pcDataXml, poConn, poList);
}
else
pcErrorMsg = poConn.ErrorMsg;
return lbRetVal;
}
public static bool GetDataAfterTrans(ref string pcDataXml, DBConnSql poConn, List poList)
{
bool lbRetVal = false;
try
{
rsXmlNode loXmlNode = rsXmlNode.ParseGenericXml(pcDataXml);
if (loXmlNode != null && loXmlNode.Nodes.Count > 0)
{
Dictionary loDesList = new Dictionary();
foreach (TransFrame loTF in poList)
{
if (loTF.DataTransType == DataTransType.Trans)
{
if (loTF.IsAvail)
{
if (loTF.CreatQuery(poConn))
{
if (loDesList.ContainsKey(loTF.SourceField))
{
loDesList[loTF.SourceField] = loTF;
}
else
loDesList.Add(loTF.SourceField, loTF);
}
}
}
else if (loTF.DataTransType == DataTransType.Format)
{
if (loDesList.ContainsKey(loTF.SourceField))
{
loDesList[loTF.SourceField] = loTF;
}
else
loDesList.Add(loTF.SourceField, loTF);
}
}
if (loDesList.Count > 0)
{
foreach (rsXmlNode loNodes in loXmlNode.Nodes)
{
foreach (string lcKey in loDesList.Keys)
{
rsXmlNode loNode = loNodes.GetChildNode(lcKey);
if (loNode != null)
{
loNode.Value = loDesList[lcKey].GetDisplayValue(loNode.Value);
}
}
}
}
pcDataXml = loXmlNode.ToXmlString();
}
}
catch(Exception e) {
ThreadLog.LogException(e);
}
return lbRetVal;
}
public static void MoveRecordSort(string pcTableName, string pcKeyField, string pcKeyFieldCurValue, string pcSortField, bool pbMoveUp)
{
UserSession loSession = WebLibs.CheckLogin();
string lcSql = "select " + pcKeyField + "," + pcSortField + " from " + pcTableName + " order by " + pcSortField;
rsQuery loQuery = loSession.DBConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
{
if (loQuery.GoToRecordByFieldsAndValues(pcKeyField, pcKeyFieldCurValue))
{
int loCurSort = loQuery.GetInt(pcSortField);
int liAim = 0;
string lcAim = "";
if (pbMoveUp)
{
if (loQuery.RecNo > 0)
{
loQuery.MovePrev();
lcAim = loQuery.GetString(pcKeyField);
liAim = loQuery.GetInt(pcSortField);
}
}
else
{
if (loQuery.RecNo < (loQuery.RecCount - 1))
{
loQuery.MoveNext();
lcAim = loQuery.GetString(pcKeyField);
liAim = loQuery.GetInt(pcSortField);
}
}
if (lcAim.Trim().Length > 0)
{
lcSql = "update " + pcTableName + " set " + pcSortField + " = " + liAim + " where " + pcKeyField + "='" + pcKeyFieldCurValue + "' ";
lcSql += "update " + pcTableName + " set " + pcSortField + " = " + loCurSort + " where " + pcKeyField + "='" + lcAim + "' ";
loSession.DBConn.ExcuteSqlTran(lcSql);
}
}
}
}
public static int GetNextSortNumber(string pcTableName, string pcSortField, DBConnSql poConn)
{
int liRetVal = 0;
string lcSql = " select " + pcSortField + " from " + pcTableName + " order by " + pcSortField + " desc ";
rsQuery loQuery = poConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
{
loQuery.MoveFirst();
liRetVal = loQuery.GetInt(pcSortField);
liRetVal++;
}
return liRetVal;
}
///
/// 判断新插入的键值在表中的是否存在
///
/// 表名
/// 主键字段
/// 主键值
/// 数据库连接串
///
public static bool IsExistPrKey(string pcTableName, string pcKeyField, string pcKeyValue, DBConnSql poConn)
{
bool lbRetVal = false;
string lcSql = " select " + pcKeyField + " from " + pcTableName + " where " + pcKeyField + "='" + pcKeyValue + "'";
rsQuery loQuery = poConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
{
lbRetVal = true;
}
return lbRetVal;
}
private static SysSettingObj _SysSettingObj = null;
public static SysSettingObj SysSetObj
{
get
{
if (_SysSettingObj == null)
{
_SysSettingObj = new SysSettingObj();
}
return _SysSettingObj;
}
}
///
///
///
private static YtDataMappingObj _YtDataMappingObj = null;
public static YtDataMappingObj YtDataMappingObj
{
get
{
if (_YtDataMappingObj == null)
{
_YtDataMappingObj = new YtDataMappingObj();
}
return _YtDataMappingObj;
}
}
public static string GetTextByID(string pcId, int piIdValue, string pcNameCol, string pcTableId, DBConnSql poConn)
{
string lcRetVal = "", lcSql = "";
lcSql = " SELECT " + pcNameCol + " FROM " + pcTableId + " WHERE " + pcId + " =" + piIdValue;
rsQuery loQuery = poConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened)
{
lcRetVal = loQuery.GetString(pcNameCol);
}
return lcRetVal;
}
///
/// 传入表名及表的ID名和值、需要的字段名、返回所需字段的(string)值
///
///
///
///
///
///
///
public static string GetTextByID(string pcId, string pcIdValue, string pcNameCol, string pcTableId, DBConnSql poConn)
{
string lcRetVal = "", lcSql = "";
lcSql = " SELECT " + pcNameCol + " FROM " + pcTableId + " WHERE " + pcId + " ='" + pcIdValue + "' ";
rsQuery loQuery = poConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened)
{
lcRetVal = loQuery.GetString(pcNameCol);
}
return lcRetVal;
}
///
/// 传入sql语句 表名 及需要的字段名、返回所需字段的(string)值
///
public static string GetTextWithSQL(string pcSQL, string pcColName, DBConnSql poConn)
{
string lcRetVal = "";
rsQuery loQuery = poConn.OpenQuery(pcSQL);
if (loQuery != null && loQuery.IsOpened)
{
lcRetVal = loQuery.GetString(pcColName);
}
return lcRetVal;
}
///
/// 从sysstatus表里得到显示值
///
/// 表名
/// 列名
/// 值
/// 显示的值
public static string GetShowTextFromSysStatus(string pcTable, string pcColumn, string pcVal, DBConnSql poConn)
{
string lcRetVal = "";
string lcSql = "select " + Sys_Status_info.cDisplayValue + " from " + Tn.Sys_Status
+ " where " + Sys_Status_info.cTableName + " ='" + pcTable
+ "' and " + Sys_Status_info.cColName + "='" + pcColumn
+ "' and " + Sys_Status_info.cCodeValue + "='" + pcVal + "'";
rsQuery loQuery = poConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened)
{
lcRetVal = loQuery.GetString(Sys_Status_info.cDisplayValue);
}
return lcRetVal;
}
public static decimal GetPreBalance(string pcSellerId, string pcMarketId, DBConnSql poConn)
{
decimal lfRetVal = 0;
if (pcSellerId.Trim().Length > 0 && pcMarketId.Trim().Length > 0 && poConn != null)
{
string lcSql = "select ID, PostBalance from " + Tn.ReserveCompensateLog + " where SellerID ='" + pcSellerId + "' and MarketID='" + pcMarketId + "'";
rsQuery loQuery = poConn.OpenQuery(lcSql);
if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0)
{
loQuery.SortBy("ID", false);
loQuery.MoveFirst();
lfRetVal = loQuery.GetDecimal("PostBalance");
}
}
return lfRetVal;
}
///
/// 获取KeyValueByStatus
///
///
///
///
///
public static Dictionary GetKeyValueByStatus(string tableName, string colName, DBConnSql dbConn)
{
Dictionary loDic = new Dictionary();
rsQuery loQuery = dbConn.OpenQuery(
"SELECT CodeValue,DisplayValue FROM Sys_Status WHERE TableName='" + tableName + "' AND ColName='" + colName +
"'");
if (loQuery.IsOpened && loQuery.RecCount > 0)
{
loQuery.MoveFirst();
for (int i = 0; i < loQuery.RecCount; i++)
{
loDic.Add(loQuery.GetString(Sys_Status_info.cCodeValue), loQuery.GetString(Sys_Status_info.cDisplayValue));
loQuery.MoveNext();
}
}
return loDic;
}
///
/// 获取KeyValueByTABLE
///
///
///
///
///
public static Dictionary GetKeyValueByTable(string tableName, string DisplayColName, string ValueColName, DBConnSql dbConn, string poWhereSql="")
{
Dictionary loDic = new Dictionary();
string lcSql = "SELECT "+ ValueColName + ","+ DisplayColName + " FROM " + tableName;
if (!string.IsNullOrEmpty(poWhereSql))
{
lcSql += " WHERE " + poWhereSql;
}
rsQuery loQuery = dbConn.OpenQuery(lcSql);
if (loQuery.IsOpened && loQuery.RecCount > 0)
{
loQuery.MoveFirst();
for (int i = 0; i < loQuery.RecCount; i++)
{
loDic.Add(loQuery.GetString(ValueColName), loQuery.GetString(DisplayColName));
loQuery.MoveNext();
}
}
return loDic;
}
}
}