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

985 lines
39 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.Linq;
using System.Reflection;
using System.Text;
using SuperMap.RealEstate.ServiceModel;
using CMB = SuperMap.RealEstate.Coop.Merchant.Business;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core;
using HCC = HZQR.Common.Common;
using HZQR.Common;
namespace EShang.Common
{
/// <summary>
/// 公共方法
/// </summary>
public class CommonHelper
{
/// <summary>
/// 数字数组
/// </summary>
public const string charSet = "0,1,2,3,4,5,6,7,8,9";
#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>
/// 比较两个日期大小,并返回较大日期
/// </summary>
/// <param name="FirstDate"></param>
/// <param name="SecondDate"></param>
/// <returns></returns>s
public static string GetLargerDate(string FirstDate, string SecondDate)
{
if (!FirstDate.Contains("/") && !FirstDate.Contains("-"))
{
FirstDate = HCC.Common.TranslateDateTime(FirstDate);
}
if (!SecondDate.Contains("/") && !SecondDate.Contains("-"))
{
SecondDate = HCC.Common.TranslateDateTime(SecondDate);
}
return DateTime.Parse(FirstDate) > DateTime.Parse(SecondDate) ?
DateTime.Parse(FirstDate).ToShortDateString() : DateTime.Parse(SecondDate).ToShortDateString();
}
/// <summary>
/// 比较两个日期大小,并返回较大时间
/// </summary>
/// <param name="FirstTime"></param>
/// <param name="SecondTime"></param>
/// <returns></returns>s
public static string GetLargerTime(string FirstTime, string SecondTime)
{
if (!FirstTime.Contains("/") && !FirstTime.Contains("-"))
{
FirstTime = HCC.Common.TranslateDateTime(FirstTime);
}
if (!SecondTime.Contains("/") && !SecondTime.Contains("-"))
{
SecondTime = HCC.Common.TranslateDateTime(SecondTime);
}
return DateTime.Parse(FirstTime) > DateTime.Parse(SecondTime) ?
DateTime.Parse(FirstTime).ToString() : DateTime.Parse(SecondTime).ToString();
}
/// <summary>
/// 比较两个日期大小,并返回较小日期
/// </summary>
/// <param name="FirstDate"></param>
/// <param name="SecondDate"></param>
/// <returns></returns>s
public static string GetSmallerDate(string FirstDate, string SecondDate)
{
if (!FirstDate.Contains("/") && !FirstDate.Contains("-"))
{
FirstDate = HCC.Common.TranslateDateTime(FirstDate);
}
if (!SecondDate.Contains("/") && !SecondDate.Contains("-"))
{
SecondDate = HCC.Common.TranslateDateTime(SecondDate);
}
return DateTime.Parse(FirstDate) > DateTime.Parse(SecondDate) ?
DateTime.Parse(SecondDate).ToShortDateString() : DateTime.Parse(FirstDate).ToShortDateString();
}
/// <summary>
/// 比较两个日期大小,并返回较小时间
/// </summary>
/// <param name="FirstTime"></param>
/// <param name="SecondTime"></param>
/// <returns></returns>s
public static string GetSmallerTime(string FirstTime, string SecondTime)
{
if (!FirstTime.Contains("/") && !FirstTime.Contains("-"))
{
FirstTime = HCC.Common.TranslateDateTime(FirstTime);
}
if (!SecondTime.Contains("/") && !SecondTime.Contains("-"))
{
SecondTime = HCC.Common.TranslateDateTime(SecondTime);
}
return DateTime.Parse(FirstTime) > DateTime.Parse(SecondTime) ?
DateTime.Parse(SecondTime).ToString() : DateTime.Parse(FirstTime).ToString();
}
#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
#region ->
/// <summary>
/// 生成验证码
/// <param name="n">位数</param>
/// <returns>验证码字符串</returns>
public static string CreateRandomCode(int n)
{
string[] CharArray = charSet.Split(',');
string randomCode = "";
int temp = -1;
Random rand = new Random();
for (int i = 0; i < n; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(CharArray.Length - 1);
if (temp == t)
{
return CreateRandomCode(n);
}
temp = t;
randomCode += CharArray[t];
}
return randomCode;
}
#endregion
#region ->
/// <summary>
/// 获取短信验证码
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="PhoneNumber">手机号码</param>
/// <param name="SignName">短信签名</param>
/// <param name="BusinessName">商家名称</param>
/// <returns></returns>
public static string GetSMSIdentityCode(Transaction _Transaction, string PhoneNumber, string SignName, string BusinessName)
{
string identityCode = CreateRandomCode(4);
string product = "Dysmsapi";//短信API产品名称短信产品名固定无需修改
string domain = "dysmsapi.aliyuncs.com";//短信API产品域名接口地址固定无需修改
string accessKeyId = Config.AppSettings.accessKeyId;//你的accessKeyId参考本文档步骤2
string accessKeySecret = Config.AppSettings.accessKeySecret;//你的accessKeySecret参考本文档步骤2
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
//IAcsClient client = new DefaultAcsClient(profile);
// SingleSendSmsRequest request = new SingleSendSmsRequest();
//初始化ascClient,暂时不支持多region请勿修改
DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest
{
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用批量上限为1000个手机号码,
//批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
PhoneNumbers = PhoneNumber,
//必填:短信签名-可在短信控制台中找到
SignName = string.IsNullOrEmpty(SignName) ? "驿商科技" : SignName,
//必填:短信模板-可在短信控制台中找到
TemplateCode = "SMS_65150085",
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
TemplateParam = "{\"code\":\"" + identityCode + "\",\"product\":\"" +
(string.IsNullOrEmpty(BusinessName) ? "驿商云平台" : BusinessName) + "\"}"
};
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
if (sendSmsResponse.Code.ToLower() == "ok")
{
string SQLString = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SMSIDENTITY (
SMSIDENTITY_ID,CELLPHONE_NUMBER,IDENTITY_DATE,IDENTITY_CODE)
VALUES (HIGHWAY_EXCHANGE.SEQ_SMSIDENTITY.NEXTVAL,'{0}',SYSDATE,'{1}')", PhoneNumber, identityCode);
new CMB.AUTOTYPE(_Transaction).ExecuteNonQuery(SQLString, null);
}
return identityCode;
}
#endregion
#region -> Datatable中某个字符串的值
/// <summary>
/// 合并Datatable中某个字符串的值返回list
/// </summary>
/// <param name="dataTable">数据源</param>
/// <param name="FieldName">字段名称</param>
/// <param name="SortStr">排序字段</param>
/// <returns></returns>
public static List<string> JoinListFromDataTable(DataTable dataTable, string FieldName, string SortStr = "")
{
List<string> JoinStr = new List<string>();
foreach (DataRow dataRow in dataTable.DefaultView.ToTable(true, FieldName).Select("", SortStr))
{
if (dataRow[FieldName].ToString() != "")
{
JoinStr.Add(dataRow[FieldName].ToString());
}
}
return JoinStr;
}
/// <summary>
/// 合并Datatable中某个字符串的值返回string
/// </summary>
/// <param name="dataTable">数据源</param>
/// <param name="FieldName">字段名称</param>
/// <param name="SeparateStr">分隔符,默认为,</param>
/// <param name="SortStr">排序字段</param>
/// <returns></returns>
public static string JoinStrFromDataTable(DataTable dataTable, string FieldName,
string SeparateStr = ",", string SortStr = "")
{
string JoinStr = "";
foreach (DataRow dataRow in dataTable.DefaultView.ToTable(true, FieldName).Select("", SortStr))
{
if (dataRow[FieldName].ToString() != "")
{
JoinStr += (JoinStr == "" ? "" : SeparateStr) + dataRow[FieldName];
}
}
return JoinStr;
}
#endregion
#region ->
/// <summary>
/// 计算中位数
/// </summary>
/// <param name="datas">Datatable数据源</param>
/// <param name="fieldName">要计算的字段名称</param>
/// <returns></returns>
public static string getMedian(DataTable datas, string fieldName)
{
string median;
if (datas.Rows.Count == 0)
{
median = "";
}
else if (datas.Rows.Count == 1)
{
median = datas.Rows[0][fieldName].ToString();
}
else if (datas.Rows.Count % 2 == 0)
{
//如果数据源的行数为偶数,则取中间两个数据的平均值作为返回值
int index = datas.Rows.Count / 2;
median = ((datas.Rows[index - 1][fieldName].TryParseToDecimal() +
datas.Rows[index][fieldName].TryParseToDecimal()) / 2).ToString();
}
else
{
//如果数据源的行数为奇数,则取中间的数据作为返回值
median = datas.Rows[datas.Rows.Count / 2][fieldName].ToString();
}
return median;
}
#endregion
#region -> oracle数据库
/// <summary>
/// 存储数字型数据至oracle数据库
/// </summary>
/// <param name="OriValue">源数据值</param>
/// <returns></returns>
public static string GetNumberIntoOra(object OriValue)
{
if (OriValue == null)
{
return "NULL";
}
else
{
return GetNumberIntoOra(OriValue.ToString());
}
}
/// <summary>
/// 存储数字型数据至oracle数据库
/// </summary>
/// <param name="OriValue">源数据值</param>
/// <returns></returns>
public static string GetNumberIntoOra(string OriValue)
{
if (string.IsNullOrWhiteSpace(OriValue))
{
return "NULL";
}
else
{
return OriValue;
}
}
#endregion
#region -> oracle数据库
/// <summary>
/// 存储日期格式型数据至oracle数据库
/// </summary>
/// <param name="OriValue">源数据值</param>
/// <returns></returns>
public static string GetDateTimeIntoOra(string OriValue)
{
string SQLValue = "";
if (string.IsNullOrWhiteSpace(OriValue))
{
SQLValue = "NULL";
}
else
{
SQLValue = "TO_DATE('" + OriValue + "', 'YYYY/MM/DD HH24:MI:SS')";
}
return SQLValue;
}
#endregion
#region ->
/// <summary>
/// 获取当月的第一天
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <returns>返回结果日期字符串格式yyyy-MM-dd</returns>
public static string GetFirstDayOfMonth(string Month)
{
return Month.Substring(0, 4) + "-" + Month.Substring(4, 2) + "-01";
}
#endregion
#region ->
/// <summary>
/// 获取当月的最后一天
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <param name="ContainToday">最后一天是否包含今天,如果是则返回今天,否则返回昨天</param>
/// <returns>返回结果日期字符串格式yyyy-MM-dd</returns>
public static string GetLastDayOfMonth(string Month, bool ContainToday = true)
{
//获取当月的第一天
string FirstDay = GetFirstDayOfMonth(Month);
//当月最后一天=当月第一天+1个月-1天
DateTime LastDay = DateTime.Parse(FirstDay).AddMonths(1).AddDays(-1);
//如果最后一天比今天大,则按今天的日期返回,否则返回最后一天的日期
if (LastDay >= DateTime.Now.Date)
{
if (ContainToday)
{
return DateTime.Now.ToString("yyyy-MM-dd");
}
else
{
return DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
}
}
else
{
return LastDay.ToString("yyyy-MM-dd");
}
}
#endregion
#region ->
/// <summary>
/// 获取下一个月
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <returns>返回结果日期字符串格式yyyyMM</returns>
public static string GetNextMonth(string Month)
{
if (Month.EndsWith("12"))
{
return int.Parse(Month.Substring(0, 4)) + 1 + "01";
}
return (int.Parse(Month) + 1).ToString("00");
}
#endregion
#region ->
/// <summary>
/// 获取上一个月
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <param name="AddMonth">扣减月数</param>
/// <returns>返回结果日期字符串格式yyyyMM</returns>
public static string GetLastMonth(string Month, int AddMonth = -1)
{
if (AddMonth != -1)
{
return DateTime.Parse(HCC.Common.TranslateDateTime(Month)).AddMonths(AddMonth).ToString("yyyyMM");
}
if (Month.EndsWith("01"))
{
return (int.Parse(Month.Substring(0, 4)) - 1) + "12";
}
return Month.Substring(0, 4) + (int.Parse(Month.Substring(4, 2)) - 1).ToString("00");
}
#endregion
#region ->
/// <summary>
/// 根据开始结束时间计算月数
/// </summary>
/// <param name="StartDate">开始日期</param>
/// <param name="EndDate">结束日期</param>
/// <returns></returns>
public static decimal calcMonthCount(DateTime StartDate, DateTime EndDate)
{
//计算第一个月的月数1-10计算为1个月11-20计算为0.5个月20之后不计算
decimal startCount = StartDate.Day < 11 ? 1 : StartDate.Day < 21 ? (decimal)0.5 : 0;
startCount -= EndDate.Day < 11 ? 1 : EndDate.Day < 21 ? (decimal)0.5 : 0;
return (EndDate.Year - StartDate.Year) * 12 + EndDate.Month - StartDate.Month + startCount;
}
#endregion
#region ->
/// <summary>
/// 获取嵌套列表最低一级数据集
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="nestingList">原嵌套列表</param>
/// <param name="DataList">转换后的数据集</param>
public static void GetNestingData<T>(List<Model.NestingModel<T>> nestingList, List<T> DataList)
{
foreach (Model.NestingModel<T> nestingModel in nestingList)
{
if (nestingModel.children == null || nestingModel.children.Count == 0)
{
DataList.Add(nestingModel.node);
}
else
{
GetNestingData(nestingModel.children, DataList);
}
}
}
#endregion
#region ->
/// <summary>
/// 样本标准差和总体标准差计算
/// </summary>
/// <param name="arrData">数据数组</param>
/// <param name="std_dev">样本标准差sqrt(sum((xn-x)^2)/(n-1))</param>
/// <param name="STDP">总体标准差sqrt(sum((xn-x)^2)/n)</param>
public static void CalcStandardDeviation(List<decimal> arrData, out double std_dev, out double STDP) //计算标准偏差
{
decimal xAvg = arrData.Average();//样本平均值
double sSum = 0;//方差的分子
int arrNum = arrData.Count;//得到样本数量,分母
foreach (decimal data in arrData)//得到方差的分子
{
sSum += Math.Pow((double)(data - xAvg), 2);
}
std_dev = Math.Sqrt(sSum / (arrNum - 1));//样本标准差
STDP = Math.Sqrt(sSum / arrNum);//总体标准差
}
#endregion
#region -> Base64
/// <summary>
/// 将字符串编码为 Base64
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string Base64Encode(string text)
{
return (Convert.ToBase64String(Encoding.UTF8.GetBytes(text)));
}
#endregion
//------------------以下是低代码平台的相关方法--------------------------//
#region ->
/// <summary>
/// 文本内容增加空格,数量由入参控制
/// </summary>
/// <param name="TabCount">空格数量</param>
/// <returns></returns>
public static string GetTabChar(int TabCount)
{
StringBuilder _TabChar = new StringBuilder();
int _Count = TabCount * 4;
for (int i = 0; i < _Count; i++)
{
_TabChar.Append(" ");
}
return _TabChar.ToString(); ;
}
#endregion
#region ->
/// <summary>
/// 增加代码注解<br/>
/// 在代码里面生成的中文释义
/// </summary>
/// <param name="stringBuilder">字符串</param>
/// <param name="SummaryContent">注解内容</param>
/// <param name="StartIndex">内容缩进格数</param>
/// <param name="parameters">方法中的参数注解,可以为空</param>
public static void BuildCodeSummary(StringBuilder stringBuilder, string SummaryContent,
int StartIndex = 0, Dictionary<string, string> parameters = null)
{
stringBuilder.AppendLine(GetTabChar(StartIndex) + "/// <summary>");
stringBuilder.AppendLine(GetTabChar(StartIndex) + "/// " + SummaryContent);
stringBuilder.AppendLine(GetTabChar(StartIndex) + "/// </summary>");
if (parameters != null)
{
foreach (string key in parameters.Keys)
{
stringBuilder.AppendLine(GetTabChar(2) + "/// <param name=\"" + key + "\">" + parameters[key] + "</param>");
}
}
}
#endregion
#region -> catch方法代码
/// <summary>
/// 增加catch方法代码
/// </summary>
/// <param name="stringBuilder">字符串</param>
/// <param name="FailName">失败命名:例如“查询”失败</param>
/// <param name="LogName">日志名称</param>
/// <param name="StartIndex">内容缩进格数</param>
public static void BuildCatchCode(StringBuilder stringBuilder, string FailName, string LogName, int StartIndex = 0)
{
stringBuilder.AppendLine(GetTabChar(StartIndex) + "catch (Exception ex)");
stringBuilder.AppendLine(GetTabChar(StartIndex) + "{");
stringBuilder.AppendLine(GetTabChar(StartIndex + 1) + "//事务回滚");
stringBuilder.AppendLine(GetTabChar(StartIndex + 1) + "transaction.Rollback();");
//记录异常日志
stringBuilder.AppendLine(GetTabChar(StartIndex + 1) + "LogUtil.WriteLog(null, " +
"\"" + FailName + "失败!失败原因:\" + ex.Message + \"\\r\\n\" + Parameter,");
stringBuilder.AppendLine(GetTabChar(StartIndex + 2) + "DateTime.Now.ToString(\"yyyyMMdd\") + \"_" + LogName + "\");");
stringBuilder.AppendLine(GetTabChar(StartIndex + 1) + "return Ok(Method.Common.ReturnJson(999, \"查询失败\" + ex.Message));");
stringBuilder.AppendLine(GetTabChar(StartIndex) + "}");
}
#endregion
#region ->
/// <summary>
/// 获取命名空间简写
/// </summary>
/// <param name="WholeNameSpace">命名空间全称</param>
/// <returns></returns>
public static string GetNameSpaceShortName(string WholeNameSpace)
{
string ShortName = "";
foreach (string NameSpace in WholeNameSpace.Split('.'))
{
ShortName += NameSpace.Substring(0, 1);
}
return ShortName;
}
#endregion
#region ->
/// <summary>
/// 返回首字母大写、其余字符小写的字符串model对象
/// </summary>
/// <param name="className">字符串</param>
/// <returns>原字符串CLASS_NAME返回Class_nameModel</returns>
public static string GetClassModelName(string className)
{
return className + "Model";
}
/// <summary>
/// 返回首字母大写、其余字符小写的字符串
/// </summary>
/// <param name="className">字符串</param>
/// <returns>原字符串CLASS_NAME返回Class_name</returns>
public static string GetULClassName(string className)
{
return className.Substring(0, 1).ToUpper() + className.Substring(1, className.Length - 1).ToLower();
}
/// <summary>
/// 返回小写字符串如果有_则_后面的第一个字符大写
/// </summary>
/// <param name="className">字符串</param>
/// <returns>原字符串CLASS_NAME返回class_Name</returns>
public static string GetLUName(string className)
{
string resName = className.Split('_')[0].ToLower();
//以_分割字符串从第一个_之后的字符串开始遍历每段字符串首字母大写其余字母小写
for (int SplitLength = 1; SplitLength < className.Split('_').Length; SplitLength++)
{
resName += GetULClassName(className.Split('_')[SplitLength]);
}
return resName;
}
/// <summary>
/// 返回首字母小写的字符串
/// 如原字符串CLASS_NAME返回cLASS_NAME
/// </summary>
/// <param name="name">字符串</param>
/// <returns></returns>
public static string GetFLName(string name)
{
return name.Substring(0, 1).ToLower() + name.Substring(1, name.Length - 1);
}
#endregion
#region ->
/// <summary>
/// 设置时间参数默认值
/// </summary>
/// <param name="stringBuilder">字符串</param>
/// <param name="DefaultDateValueType">时间参数默认值</param>
/// <param name="DateFormat">时间参数格式</param>
/// <param name="IsDateRange">是否是时间段选择</param>
public static void SetDateInitialValue(StringBuilder stringBuilder, string DefaultDateValueType, string DateFormat, bool IsDateRange)
{
switch (DefaultDateValueType)
{
case "1": //默认显示最近一天
stringBuilder.AppendLine(GetTabChar(3) + "initialValue: " + (!IsDateRange ?
"moment().add(-1, 'day').format('" + DateFormat + "')" : "[moment().add(-1, 'day').format('" +
DateFormat + "'), moment().add(-1, 'day').format('" + DateFormat + "')],"));
break;
case "2": //默认显示最近一周
stringBuilder.AppendLine(GetTabChar(3) + "initialValue: " + (!IsDateRange ?
"moment().add(-1, 'week').format('" + DateFormat + "')" : "[moment().add(-1, 'week').format('" +
DateFormat + "'), moment().add(-1, 'day').format('" + DateFormat + "')],"));
break;
case "3": //默认显示最近一月
stringBuilder.AppendLine(GetTabChar(3) + "initialValue: " + (!IsDateRange ?
"moment().add(-1, 'month').format('" + DateFormat + "')" : "[moment().add(-1, 'month').format('" +
DateFormat + "'), moment().add(-1, 'day').format('" + DateFormat + "')],"));
break;
case "4": //默认显示最近三月
stringBuilder.AppendLine(GetTabChar(3) + "initialValue: " + (!IsDateRange ?
"moment().add(-3, 'month').format('" + DateFormat + "')" : "[moment().add(-3, 'month').format('" +
DateFormat + "'), moment().add(-1, 'day').format('" + DateFormat + "')],"));
break;
case "5": //默认显示最近半年
stringBuilder.AppendLine(GetTabChar(3) + "initialValue: " + (!IsDateRange ?
"moment().add(-6, 'month').format('" + DateFormat + "')" : "[moment().add(-6, 'month').format('" +
DateFormat + "'), moment().add(-1, 'day').format('" + DateFormat + "')],"));
break;
case "6": //默认显示最近一年
stringBuilder.AppendLine(GetTabChar(3) + "initialValue: " + (!IsDateRange ?
"moment().add(-1, 'year').format('" + DateFormat + "')" : "[moment().add(-1, 'year').format('" +
DateFormat + "'), moment().add(-1, 'day').format('" + DateFormat + "')],"));
break;
}
}
#endregion
#region ->
/// <summary>
/// 设置字段默认排序
/// </summary>
/// <param name="stringBuilder">生成代码的字符串</param>
/// <param name="OrderByType">排序方式</param>
/// <param name="StartIndex">代码缩进格数</param>
public static void SetFieldSort(StringBuilder stringBuilder, string OrderByType, int StartIndex = 3)
{
switch (OrderByType)
{
case "1"://增加排序效果,但不设置默认排序
stringBuilder.AppendLine(GetTabChar(StartIndex) + "sorter: true,");
break;
case "2"://增加排序效果,默认按正序显示
stringBuilder.AppendLine(GetTabChar(StartIndex) + "sorter: true,");
stringBuilder.AppendLine(GetTabChar(StartIndex) + "defaultSortOrder: 'ascend',");
break;
case "3"://增加排序效果,默认按倒序显示
stringBuilder.AppendLine(GetTabChar(StartIndex) + "sorter: true,");
stringBuilder.AppendLine(GetTabChar(StartIndex) + "defaultSortOrder: 'descend',");
break;
}
}
#endregion
}
}