2025-03-28 09:49:56 +08:00

289 lines
10 KiB
C#
Raw Permalink 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.Data;
using System.Reflection;
using SuperMap.RealEstate.ServiceModel;
using CMB = SuperMap.RealEstate.Coop.Merchant.Business;
namespace ServerPartTransmission
{
public class CommonHelper
{
#region -> DateTime类型转换为long类型
/// <summary>
/// 将DateTime类型转换为long类型
/// </summary>
/// <param name="dt">时间</param>
/// <returns></returns>
public static long ConvertDataTimeLong(DateTime dt)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
TimeSpan toNow = dt.Subtract(dtStart);
long timeStamp = toNow.Ticks;
timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 7));
return timeStamp;
}
#endregion
#region -> Long类型转换为DateTime类型
/// <summary>
/// 将Long类型转换为DateTime类型
/// </summary>
/// <param name="d">long</param>
/// <returns></returns>s
public static DateTime ConvertLongDateTime(long d)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(d + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
DateTime dtResult = dtStart.Add(toNow);
return dtResult;
}
/// <summary>
/// 时间戳(毫秒值)String转换为DateTime类型转换
/// </summary>
/// <param name="time">毫秒时间戳</param>
/// <returns></returns>
public static DateTime TicksToDate(string time)
{
return new DateTime((Convert.ToInt64(time) * 10000) + 621355968000000000);
}
#endregion
#region ->
/// <summary>
/// 枚举参数过滤处理解决麻烦的SQL拼接
/// 对照数据表给定添加、更新的参数枚举类型ValueType
/// </summary>
/// <param name="_Type">数据类型</param>
/// <param name="_String">数据值</param>
/// <returns></returns>
public static string IsArrayType(ValueType _Type, object _String = null)
{
if (_String != null && _String.ToString() != "")
{
switch (_Type)
{
case ValueType.String:
return string.Format("'{0}'", _String.ToString().Replace("'", " "));
case ValueType.Int:
case ValueType.Double:
case ValueType.Boolean:
return _String.ToString();
case ValueType.DateTime:
return string.Format("TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", _String);
}
}
return "null";
}
/// <summary>
/// 枚举参数过滤处理解决麻烦的SQL拼接
/// 对照数据表给定添加、更新的参数枚举类型ValueType
/// </summary>
/// <param name="_Type">数据类型</param>
/// <param name="_DefaultValue">是否使用缺省值</param>
/// <returns></returns>
private static string IsArrayType(ValueType _Type, bool _DefaultValue = false)
{
if (_DefaultValue)
{
switch (_Type)
{
case ValueType.String:
return "''";
case ValueType.Int:
case ValueType.Double:
case ValueType.Boolean:
return "0";
case ValueType.DateTime:
return string.Format("TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", DateTime.Now.ToString());
}
}
return "null";
}
#endregion
#region -> 5
/// <summary>
/// 定义5个类型的枚举
/// </summary>
public enum ValueType
{
/// <summary>
/// 字符串
/// </summary>
String = 0,
/// <summary>
/// 整型
/// </summary>
Int = 1,
/// <summary>
/// 双精度
/// </summary>
Double = 2,
/// <summary>
/// true或false
/// </summary>
Boolean = 3,
/// <summary>
/// 日期
/// </summary>
DateTime = 4
}
#endregion
#region -> SQL语句分页
/// <summary>
/// SQL语句分页
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="rn">开始的行号</param>
/// <param name="rowNum">结束的行号</param>
/// <returns></returns>
public static string GetPageSql(string sql, int? rn = null, int? rowNum = null)
{
if (rn != null && rowNum != null)
{
//分页查询
sql = string.Format(@"
SELECT * FROM (
SELECT ROWNUM RN,N.* FROM ({0}) N WHERE ROWNUM<={1}
) M WHERE M.RN>={2}", sql, rowNum, rn);
}
return sql;
}
#endregion
#region ->
/// <summary>
/// 添加图片
/// </summary>
/// <param name="transaction">事务</param>
/// <param name="imgArr">图片路径数组</param>
/// <param name="tableId">业务关联表Id</param>
/// <param name="tableName">业务关联表名称</param>
/// <param name="imageType">图片类型</param>
/// <returns></returns>
public static string AddImageByFile(Transaction transaction, string imgArr,
int tableId, string tableName, int imageType)
{
string imageids = string.Empty; //图片集合
try
{
#region
foreach (string imagePath in imgArr.Split(","))
{
using (CMB.IMAGE _IMAGE = new CMB.IMAGE(transaction))
{
_IMAGE.IMAGE_PATH = imagePath;
_IMAGE.IMAGE_DATE = DateTime.Now;
_IMAGE.TABLE_ID = tableId;
_IMAGE.TABLE_NAME = tableName;
_IMAGE.IMAGE_TYPE = (short)imageType;
_IMAGE.ISVALID = 1;
_IMAGE.Insert();
imageids += (string.IsNullOrEmpty(imageids) ? "" : ",") + _IMAGE.IMAGE_ID;
}
}
#endregion
}
catch { }
return imageids;
}
#endregion
#region ->
/// <summary>
/// 添加图片
/// </summary>
/// <param name="transaction">事务</param>
/// <param name="tableName">表名</param>
/// <param name="tableId">表内码</param>
/// <param name="imgType">图片类型</param>
/// <returns></returns>
public static DataTable ImageList(Transaction transaction, string tableName, int? tableId = null, int? imgType = null)
{
//根据业务表查询图库
DataTable dtImage = new CMB.IMAGE(transaction).FillDataTable(
"WHERE TABLE_NAME = '" + tableName + "'" + " AND TABLE_ID = '" + tableId + "'" + " AND IMAGE_TYPE = '" + imgType + "'");
return dtImage;
}
#endregion
#region ->
/// <summary>
/// 为属性赋值
/// </summary>
/// <typeparam name="T">源单类</typeparam>
/// <typeparam name="S">需要转换的实体类</typeparam>
/// <param name="source"></param>
/// <returns></returns>
public static S EntityConvert<T, S>(T source)
{
S target = Activator.CreateInstance<S>();
var sType = source.GetType();
var dType = typeof(S);
foreach (PropertyInfo now in sType.GetProperties())
{
var name = dType.GetProperty(now.Name);
if (name == null)
continue;
dType.GetProperty(now.Name).SetValue(target, now.GetValue(source));
}
return target;
}
#endregion
#region -> Datatable数据
/// <summary>
/// 获取指定页码Datatable数据
/// </summary>
/// <param name="dtOrigin">源数据</param>
/// <param name="pageSize">每页返回的数量</param>
/// <param name="pageIndex">返回第几页数据</param>
/// <returns>Datatable数据格式</returns>
public static DataTable GetDataTableWithPageSize(DataTable dtOrigin, int pageSize, int pageIndex)
{
if (pageIndex == 0)
{
pageIndex = 1;
}
if (pageSize == 0)
{
pageSize = 10;
}
//克隆数据源
DataTable dtClone = dtOrigin.Clone();
dtClone.Columns.Add("RN", typeof(int));
//开始插入数据源
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
//获取当前数据源行数
int RN = pageSize * (pageIndex - 1) + RowCount;
//如果行数大于数据源实际数量,则直接跳过
if (RN >= dtOrigin.Rows.Count)
{
break;
}
//获取当前数据源内容
DataRow EndAccountDataRow = dtOrigin.Rows[RN];
//创建一个新 System.Data.DataRow 具有与表相同的架构
DataRow _DataRow = dtClone.NewRow();
//开始插入数据
for (int ColumnsCount = 0; ColumnsCount < dtOrigin.Columns.Count; ColumnsCount++)
{
_DataRow[ColumnsCount] = EndAccountDataRow[ColumnsCount];
}
_DataRow["RN"] = RN + 1;
//将数据加入到克隆的DataTable中
dtClone.Rows.Add(_DataRow);
}
return dtClone;
}
#endregion
}
}