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

1448 lines
76 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.IO;
using System.Text;
using SuperMap.RealEstate.ServiceModel;
using CMB = SuperMap.RealEstate.Coop.Merchant.Business;
using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business;
using Business = SuperMap.RealEstate.FrameWork.Platform.Business;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using HZQR.Common;
namespace CodeBuilderApi.GeneralMethod
{
/// <summary>
/// 代码生成表相关方法
/// 2022/10/18 11:36:31自动生成
/// </summary>
public class CodeBuilderHelper
{
#region
/// <summary>
/// 获取代码生成表列表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="TotalCount">查询结果总数</param>
/// <param name="searchModel">查询条件对象</param>
public static List<Model.CODEBUILDERModel> GetCODEBUILDERList(Transaction transaction,
ref int TotalCount, Model.SearchModel<Model.CODEBUILDERModel> searchModel)
{
List<Model.CODEBUILDERModel> CODEBUILDERList = new List<Model.CODEBUILDERModel>();
string WhereSQL = "", RowFilterSQL = "";
if (searchModel.SearchParameter != null)
{
WhereSQL = OperationDataHelper<Model.CODEBUILDERModel>.GetWhereSQL(searchModel.SearchParameter, searchModel.QueryType);
if (WhereSQL != "")
{
WhereSQL = "WHERE " + WhereSQL;
}
}
DataTable dtCODEBUILDER = new Business.CODEBUILDER(transaction).FillDataTable(WhereSQL);
//增加组合查询条件
if (searchModel.keyWord != null && !string.IsNullOrWhiteSpace(searchModel.keyWord.Key))
{
foreach (string KeyName in searchModel.keyWord.Key.Split(','))
{
RowFilterSQL += (RowFilterSQL == "" ? "" : " or ") +
KeyName + " like '%" + searchModel.keyWord.Value + "%'";
}
}
if (RowFilterSQL != "")
{
dtCODEBUILDER.DefaultView.RowFilter = RowFilterSQL;
}
//排序:
dtCODEBUILDER.DefaultView.Sort = searchModel.SortStr;
dtCODEBUILDER = dtCODEBUILDER.DefaultView.ToTable();
//获取查询结果总记录条数
TotalCount = dtCODEBUILDER.Rows.Count;
//根据传入的页码和每页显示条数返回结果
dtCODEBUILDER = CommonHelper.GetDataTableWithPageSize(dtCODEBUILDER, searchModel.PageSize, searchModel.PageIndex);
foreach (DataRow drCODEBUILDER in dtCODEBUILDER.Rows)
{
Model.CODEBUILDERModel codebuilderModel = new Model.CODEBUILDERModel();
//绑定用户表数据对象
BindDataRowToModel(drCODEBUILDER, codebuilderModel);
CODEBUILDERList.Add(codebuilderModel);
}
return CODEBUILDERList;
}
#region model
/// <summary>
/// 绑定model
/// </summary>
/// <param name="drCODEBUILDER">datarow数据源</param>
/// <param name="codebuilderModel">model对象</param>
public static void BindDataRowToModel(DataRow drCODEBUILDER, Model.CODEBUILDERModel codebuilderModel)
{
if (drCODEBUILDER["CODEBUILDER_ID"].ToString() != "")
{
codebuilderModel.CODEBUILDER_ID = drCODEBUILDER["CODEBUILDER_ID"].TryParseToInt(); //代码生成内码
}
if (drCODEBUILDER["CODEBUILDER_PID"].ToString() != "")
{
codebuilderModel.CODEBUILDER_PID = drCODEBUILDER["CODEBUILDER_PID"].TryParseToInt(); //父级内码
}
if (drCODEBUILDER["CODEBUILDER_FORMAT"].ToString() != "")
{
codebuilderModel.CODEBUILDER_FORMAT = drCODEBUILDER["CODEBUILDER_FORMAT"].TryParseToShort(); //代码类型1接口2普通页面3小程序4报表页面
}
codebuilderModel.FILE_NAME = drCODEBUILDER["FILE_NAME"].ToString(); //文件名称
codebuilderModel.FILE_PATH = drCODEBUILDER["FILE_PATH"].ToString(); //文件路径
if (drCODEBUILDER["INTERFACE_ID"].ToString() != "")
{
codebuilderModel.INTERFACE_ID = drCODEBUILDER["INTERFACE_ID"].TryParseToInt(); //主接口内码
}
if (drCODEBUILDER["INTERFACE_SUBID"].ToString() != "")
{
codebuilderModel.INTERFACE_SUBID = drCODEBUILDER["INTERFACE_SUBID"].TryParseToInt(); //附接口内码
}
codebuilderModel.CONTROL_ID = drCODEBUILDER["CONTROL_ID"].ToString(); //控件名称
codebuilderModel.CONTROL_VALUE = drCODEBUILDER["CONTROL_VALUE"].ToString(); //控件内容
if (drCODEBUILDER["CONTROL_INDEX"].ToString() != "")
{
codebuilderModel.CONTROL_INDEX = drCODEBUILDER["CONTROL_INDEX"].TryParseToInt(); //控件索引
}
if (drCODEBUILDER["CODEBUILDER_STATE"].ToString() != "")
{
codebuilderModel.CODEBUILDER_STATE = drCODEBUILDER["CODEBUILDER_STATE"].TryParseToShort(); //有效状态
}
if (drCODEBUILDER["OPERATE_DATE"].ToString() != "")
{
codebuilderModel.OPERATE_DATE = drCODEBUILDER["OPERATE_DATE"].TryParseToDateTime(); //操作时间
}
codebuilderModel.CODEBUILDER_DESC = drCODEBUILDER["CODEBUILDER_DESC"].ToString(); //备注说明
codebuilderModel.CODEBUILDER_GUID = drCODEBUILDER["CODEBUILDER_GUID"].ToString(); //唯一标识
}
#endregion
#endregion
#region
/// <summary>
/// 获取代码生成表明细
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="CODEBUILDERId">代码生成表内码</param>
public static Model.CODEBUILDERModel GetCODEBUILDERDetail(Transaction transaction, int CODEBUILDERId)
{
Model.CODEBUILDERModel codebuilderModel = new Model.CODEBUILDERModel();
Business.CODEBUILDER _CODEBUILDER = new Business.CODEBUILDER(transaction);
_CODEBUILDER.CODEBUILDER_ID = CODEBUILDERId;
if (_CODEBUILDER.Select())
{
codebuilderModel.CODEBUILDER_ID = _CODEBUILDER.CODEBUILDER_ID; //代码生成内码
codebuilderModel.CODEBUILDER_PID = _CODEBUILDER.CODEBUILDER_PID; //父级内码
codebuilderModel.CODEBUILDER_FORMAT = _CODEBUILDER.CODEBUILDER_FORMAT; //代码类型1接口2普通页面3小程序4报表页面
codebuilderModel.FILE_NAME = _CODEBUILDER.FILE_NAME; //文件名称
codebuilderModel.FILE_PATH = _CODEBUILDER.FILE_PATH; //文件路径
codebuilderModel.INTERFACE_ID = _CODEBUILDER.INTERFACE_ID; //主接口内码
codebuilderModel.INTERFACE_SUBID = _CODEBUILDER.INTERFACE_SUBID; //附接口内码
codebuilderModel.CONTROL_ID = _CODEBUILDER.CONTROL_ID; //控件名称
codebuilderModel.CONTROL_VALUE = _CODEBUILDER.CONTROL_VALUE; //控件内容
codebuilderModel.CONTROL_INDEX = _CODEBUILDER.CONTROL_INDEX; //控件索引
codebuilderModel.CODEBUILDER_STATE = _CODEBUILDER.CODEBUILDER_STATE; //有效状态
codebuilderModel.OPERATE_DATE = _CODEBUILDER.OPERATE_DATE; //操作时间
codebuilderModel.CODEBUILDER_DESC = _CODEBUILDER.CODEBUILDER_DESC; //备注说明
codebuilderModel.CODEBUILDER_GUID = _CODEBUILDER.CODEBUILDER_GUID; //唯一标识
}
return codebuilderModel;
}
#endregion
#region
/// <summary>
/// 赋值代码生成表数据对象
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="codebuilderModel">代码生成表数据对象</param>
public static bool SynchroCODEBUILDER(Transaction transaction, Model.CODEBUILDERModel codebuilderModel)
{
bool SynchroFlag = true;
Business.CODEBUILDER _CODEBUILDER = new Business.CODEBUILDER(transaction);
if (codebuilderModel.CODEBUILDER_ID != null)
{
_CODEBUILDER.CODEBUILDER_ID = codebuilderModel.CODEBUILDER_ID;
if (_CODEBUILDER.Select())
{
SynchroModelToObject(_CODEBUILDER, codebuilderModel);
_CODEBUILDER.Update();
}
else
{
SynchroFlag = false;
}
}
else
{
SynchroModelToObject(_CODEBUILDER, codebuilderModel);
_CODEBUILDER.Insert();
}
return SynchroFlag;
}
#region
/// <summary>
/// 赋值代码生成表数据对象
/// </summary>
/// <param name="_CODEBUILDER"></param>
/// <param name="codebuilderModel"></param>
public static void SynchroModelToObject(Business.CODEBUILDER _CODEBUILDER, Model.CODEBUILDERModel codebuilderModel)
{
_CODEBUILDER.CODEBUILDER_PID = codebuilderModel.CODEBUILDER_PID; //父级内码
_CODEBUILDER.CODEBUILDER_FORMAT = codebuilderModel.CODEBUILDER_FORMAT; //代码类型1接口2普通页面3小程序4报表页面
_CODEBUILDER.FILE_NAME = codebuilderModel.FILE_NAME; //文件名称
_CODEBUILDER.FILE_PATH = codebuilderModel.FILE_PATH; //文件路径
_CODEBUILDER.INTERFACE_ID = codebuilderModel.INTERFACE_ID; //主接口内码
_CODEBUILDER.INTERFACE_SUBID = codebuilderModel.INTERFACE_SUBID; //附接口内码
_CODEBUILDER.CONTROL_ID = codebuilderModel.CONTROL_ID; //控件名称
_CODEBUILDER.CONTROL_VALUE = codebuilderModel.CONTROL_VALUE; //控件内容
_CODEBUILDER.CONTROL_INDEX = codebuilderModel.CONTROL_INDEX; //控件索引
_CODEBUILDER.CODEBUILDER_STATE = codebuilderModel.CODEBUILDER_STATE; //有效状态
_CODEBUILDER.OPERATE_DATE = codebuilderModel.OPERATE_DATE; //操作时间
_CODEBUILDER.CODEBUILDER_DESC = codebuilderModel.CODEBUILDER_DESC; //备注说明
_CODEBUILDER.CODEBUILDER_GUID = codebuilderModel.CODEBUILDER_GUID; //唯一标识
}
#endregion
#endregion
#region
/// <summary>
/// 删除代码生成表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="CODEBUILDERId">代码生成表内码</param>
public static bool DeleteCODEBUILDER(Transaction transaction, int? CODEBUILDERId)
{
bool DeleteFlag = false;
if (CODEBUILDERId != null)
{
Business.CODEBUILDER _CODEBUILDER = new Business.CODEBUILDER(transaction);
_CODEBUILDER.CODEBUILDER_ID = CODEBUILDERId;
if (_CODEBUILDER.Select())
{
_CODEBUILDER.CODEBUILDER_STATE = 0;
DeleteFlag = _CODEBUILDER.Update();
}
}
return DeleteFlag;
}
#endregion
#region
/// <summary>
/// 获取代码生成表嵌套列表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="CODEBUILDER_PID">父级内码</param>
/// <param name="CODEBUILDER_FORMAT">代码类型1接口2普通页面3小程序4报表页面</param>
/// <param name="CODEBUILDER_STATE">有效状态</param>
/// <param name="SearchKey">模糊查询</param>
/// <returns></returns>
public static List<Model.NestingModel<Model.CODEBUILDERModel>> GetNestingCODEBUILDERList(Transaction transaction,
string CODEBUILDER_PID, string CODEBUILDER_FORMAT, string CODEBUILDER_STATE, string SearchKey)
{
//申明嵌套列表集合
List<Model.NestingModel<Model.CODEBUILDERModel>> nestingModelList = new List<Model.NestingModel<Model.CODEBUILDERModel>>();
//赋值sql语句
string WhereSQL = "";
//查询父级内码
if (!string.IsNullOrWhiteSpace(CODEBUILDER_PID))
{
WhereSQL += (WhereSQL == "" ? "WHERE " : " AND ") + "CODEBUILDER_PID IN (" + CODEBUILDER_PID + ")";
}
//查询代码类型1接口2普通页面3小程序4报表页面
if (!string.IsNullOrWhiteSpace(CODEBUILDER_FORMAT))
{
WhereSQL += (WhereSQL == "" ? "WHERE " : " AND ") + "CODEBUILDER_FORMAT IN (" + CODEBUILDER_FORMAT + ")";
}
//查询有效状态
if (!string.IsNullOrWhiteSpace(CODEBUILDER_STATE))
{
WhereSQL += (WhereSQL == "" ? "WHERE " : " AND ") + "CODEBUILDER_STATE IN (" + CODEBUILDER_STATE + ")";
}
//查询代码生成表数据
DataTable dtCODEBUILDER = new Business.CODEBUILDER(transaction).FillDataTable(WhereSQL);
if (CODEBUILDER_PID == "-1")
{
//调用绑定数据的方法
BindNestingList(nestingModelList, "-1", dtCODEBUILDER, SearchKey);
}
else
{
Business.CODEBUILDER _CODEBUILDER = new Business.CODEBUILDER(transaction);
_CODEBUILDER.CODEBUILDER_ID_Encrypt = CODEBUILDER_PID.ToEncrypt();
if (_CODEBUILDER.Select())
{
//申明嵌套对象
Model.NestingModel<Model.CODEBUILDERModel> nestingModel = new Model.NestingModel<Model.CODEBUILDERModel>();
//申明代码生成表对象
Model.CODEBUILDERModel codebuilderModel = new Model.CODEBUILDERModel();
//将代码生成表赋值给代码生成表model
SynchroModelToObject(_CODEBUILDER, codebuilderModel);
//将代码生成表model添加到嵌套对象中去
nestingModel.node = codebuilderModel;
List<Model.NestingModel<Model.CODEBUILDERModel>> nestingModelListChild = new List<Model.NestingModel<Model.CODEBUILDERModel>>();
//调用绑定嵌套列表的方法
BindNestingList(nestingModelListChild, _CODEBUILDER.KeyID, dtCODEBUILDER, SearchKey);
//赋值子级
nestingModel.children = nestingModelListChild;
//过滤模糊查询条件
if (nestingModelListChild.Count > 0 || string.IsNullOrWhiteSpace(SearchKey))
{
nestingModelList.Add(nestingModel);
}
}
}
dtCODEBUILDER.Clear();
dtCODEBUILDER.Dispose();
return nestingModelList;
}
#region
/// <summary>
/// 绑定嵌套列表
/// </summary>
/// <param name="CODEBUILDER_PID">上级分类</param>
/// <param name="nestingModelList">嵌套列表</param>
/// <param name="dtCODEBUILDER">代码生成表数据</param>
/// <param name="SearchKey">模糊查询内容</param>
public static void BindNestingList(List<Model.NestingModel<Model.CODEBUILDERModel>> nestingModelList,
string CODEBUILDER_PID, DataTable dtCODEBUILDER, string SearchKey)
{
//遍历数据
foreach (DataRow drCODEBUILDER in dtCODEBUILDER.Select("CODEBUILDER_PID = " +
CODEBUILDER_PID, "CODEBUILDER_PID,CONTROL_INDEX"))
{
//申明嵌套对象
Model.NestingModel<Model.CODEBUILDERModel> nestingModelChild = new Model.NestingModel<Model.CODEBUILDERModel>();
//申明代码生成表对象
Model.CODEBUILDERModel codebuilderModel = new Model.CODEBUILDERModel();
//赋值代码生成表数据对象
BindDataRowToModel(drCODEBUILDER, codebuilderModel);
nestingModelChild.node = codebuilderModel;
List<Model.NestingModel<Model.CODEBUILDERModel>> nestingModelListChild = new List<Model.NestingModel<Model.CODEBUILDERModel>>();
//判断下一关系级下面是否还存在数据,没有则跳出遍历
if (dtCODEBUILDER.Select("CODEBUILDER_PID = " + codebuilderModel.CODEBUILDER_ID).Length > 0)
{
//调用绑定嵌套列表的方法
BindNestingList(nestingModelListChild, codebuilderModel.CODEBUILDER_ID.ToString(), dtCODEBUILDER, SearchKey);
//赋值子级
nestingModelChild.children = nestingModelListChild;
}
//过滤模糊查询条件
if (nestingModelListChild.Count > 0 || string.IsNullOrWhiteSpace(SearchKey))
{
nestingModelList.Add(nestingModelChild);
}
}
}
#endregion
#endregion
#region
/// <summary>
/// 获取代码生成表嵌套树
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="CODEBUILDER_PID">父级内码</param>
/// <param name="CODEBUILDER_FORMAT">代码类型1接口2普通页面3小程序4报表页面</param>
/// <param name="CODEBUILDER_STATE">有效状态</param>
/// <param name="SearchKey">模糊查询</param>
/// <returns></returns>
public static List<Model.NestingModel<Model.CommonTypeModel>> GetNestingCODEBUILDERTree(Transaction transaction,
string CODEBUILDER_PID, string CODEBUILDER_FORMAT, string CODEBUILDER_STATE, string SearchKey)
{
//申明嵌套树集合
List<Model.NestingModel<Model.CommonTypeModel>> nestingModelList = new List<Model.NestingModel<Model.CommonTypeModel>>();
//赋值sql语句
string WhereSQL = "";
//查询父级内码
if (!string.IsNullOrWhiteSpace(CODEBUILDER_PID))
{
WhereSQL += (WhereSQL == "" ? "WHERE " : " AND ") + "CODEBUILDER_PID IN (" + CODEBUILDER_PID + ")";
}
//查询代码类型1接口2普通页面3小程序4报表页面
if (!string.IsNullOrWhiteSpace(CODEBUILDER_FORMAT))
{
WhereSQL += (WhereSQL == "" ? "WHERE " : " AND ") + "CODEBUILDER_FORMAT IN (" + CODEBUILDER_FORMAT + ")";
}
//查询有效状态
if (!string.IsNullOrWhiteSpace(CODEBUILDER_STATE))
{
WhereSQL += (WhereSQL == "" ? "WHERE " : " AND ") + "CODEBUILDER_STATE IN (" + CODEBUILDER_STATE + ")";
}
//查询代码生成表数据
DataTable dtCODEBUILDER = new Business.CODEBUILDER(transaction).FillDataTable(WhereSQL);
if (CODEBUILDER_PID == "-1")
{
//调用绑定数据的方法
BindNestingTree(nestingModelList, "-1", dtCODEBUILDER, SearchKey);
}
else
{
Business.CODEBUILDER _CODEBUILDER = new Business.CODEBUILDER(transaction);
_CODEBUILDER.CODEBUILDER_ID_Encrypt = CODEBUILDER_PID.ToEncrypt();
if (_CODEBUILDER.Select())
{
//申明嵌套对象
Model.NestingModel<Model.CommonTypeModel> nestingModel = new Model.NestingModel<Model.CommonTypeModel>();
//申明代码生成表对象
Model.CommonTypeModel commonTypeModel = new Model.CommonTypeModel();
//将代码生成表赋值给CommonTypeModel
//绑定控件名称
commonTypeModel.label = _CODEBUILDER.CONTROL_ID;
//绑定代码生成内码
commonTypeModel.value = _CODEBUILDER.KeyID;
commonTypeModel.type = 1;//标识为子级节点
commonTypeModel.key = commonTypeModel.type + "-" + commonTypeModel.value;
//绑定唯一标识
if (!string.IsNullOrWhiteSpace(_CODEBUILDER.CODEBUILDER_GUID))
{
commonTypeModel.ico = _CODEBUILDER.CODEBUILDER_GUID;
}
//将commonTypeModel添加到嵌套对象中去
nestingModel.node = commonTypeModel;
List<Model.NestingModel<Model.CommonTypeModel>> nestingModelListChild = new List<Model.NestingModel<Model.CommonTypeModel>>();
//调用绑定数据的方法
BindNestingTree(nestingModelListChild, _CODEBUILDER.KeyID, dtCODEBUILDER, SearchKey);
//赋值子级
nestingModel.children = nestingModelListChild;
//过滤模糊查询条件
if (nestingModelListChild.Count > 0 || string.IsNullOrWhiteSpace(SearchKey))
{
nestingModelList.Add(nestingModel);
}
}
}
dtCODEBUILDER.Clear();
dtCODEBUILDER.Dispose();
return nestingModelList;
}
#region
/// <summary>
/// 绑定嵌套树
/// </summary>
/// <param name="CODEBUILDER_PID">上级分类</param>
/// <param name="nestingModelList">嵌套列表</param>
/// <param name="dtCODEBUILDER">代码生成表数据</param>
/// <param name="SearchKey">模糊查询内容</param>
public static void BindNestingTree(List<Model.NestingModel<Model.CommonTypeModel>> nestingModelList,
string CODEBUILDER_PID, DataTable dtCODEBUILDER, string SearchKey)
{
//遍历数据
foreach (DataRow drCODEBUILDER in dtCODEBUILDER.Select("CODEBUILDER_PID = " +
CODEBUILDER_PID, "CODEBUILDER_PID,CONTROL_INDEX"))
{
//申明嵌套对象
Model.NestingModel<Model.CommonTypeModel> nestingModelChild = new Model.NestingModel<Model.CommonTypeModel>();
//申明代码生成表对象
Model.CommonTypeModel commonTypeModel = new Model.CommonTypeModel();
//将代码生成表赋值给CommonTypeModel
//绑定控件名称
commonTypeModel.label = drCODEBUILDER["CONTROL_ID"].ToString();
//绑定代码生成内码
commonTypeModel.value = drCODEBUILDER["CODEBUILDER_ID"].ToString();
commonTypeModel.type = 1;//标识为子级节点
commonTypeModel.key = commonTypeModel.type + "-" + commonTypeModel.value;
//绑定唯一标识
if (!string.IsNullOrWhiteSpace(drCODEBUILDER["CODEBUILDER_GUID"].ToString()))
{
commonTypeModel.ico = drCODEBUILDER["CODEBUILDER_GUID"].ToString();
}
nestingModelChild.node = commonTypeModel;
List<Model.NestingModel<Model.CommonTypeModel>> nestingModelListChild = new List<Model.NestingModel<Model.CommonTypeModel>>();
//判断下一关系级下面是否还存在数据,没有则跳出遍历
if (dtCODEBUILDER.Select("CODEBUILDER_PID = " + drCODEBUILDER["CODEBUILDER_ID"]).Length > 0)
{
//调用绑定嵌套列表的方法
BindNestingTree(nestingModelListChild, drCODEBUILDER["CODEBUILDER_ID"].ToString(), dtCODEBUILDER, SearchKey);
//赋值子级
nestingModelChild.children = nestingModelListChild;
}
//过滤模糊查询条件
if (nestingModelListChild.Count > 0 || string.IsNullOrWhiteSpace(SearchKey))
{
nestingModelList.Add(nestingModelChild);
}
}
}
#endregion
#endregion
#region ->
/// <summary>
/// 生成接口代码
/// </summary>
/// <param name="interfaceCodeModel"></param>
/// <returns></returns>
public static Model.InterfaceCodeResModel BuildInterfaceCode(Model.InterfaceCodeModel interfaceCodeModel)
{
Model.InterfaceCodeResModel interfaceCodeResModel = new Model.InterfaceCodeResModel();
//获取接口传入的SQL条件语句、SQL查询语句
string txtSearchParams = interfaceCodeModel.txtSearchParams, txtSQLString = interfaceCodeModel.txtSQLString;
DataTable dtInterfaceModel = null, dtNewTable = null;
JObject AdvancedConfig = null;
//解析接口字段数据源
if (!string.IsNullOrWhiteSpace(interfaceCodeModel.str_dtInterfaceModel))
{
dtInterfaceModel = JsonConvert.DeserializeObject<DataTable>(interfaceCodeModel.str_dtInterfaceModel);
if (dtInterfaceModel.Select("ShowResponse = 1").Length == 0) return null;
//如果字段没有设置过重命名,则重命名的字段和字段名称一致
foreach (DataRow drIM in dtInterfaceModel.Rows)
{
if (drIM["ColumnParamsRename"].ToString() == "")
{
drIM["ColumnParamsRename"] = drIM["INTERFACEMODEL_NAME"];
}
if (drIM["ColumnResponseRename"].ToString() == "")
{
drIM["ColumnResponseRename"] = drIM["INTERFACEMODEL_NAME"];
}
}
}
//解析额外新增的数据表命名空间
if (!string.IsNullOrWhiteSpace(interfaceCodeModel.str_dtNewTable))
{
dtNewTable = JsonConvert.DeserializeObject<DataTable>(interfaceCodeModel.str_dtNewTable);
}
//解析传入的接口中的合计项字段、按照日/月/年统计的时间字段
if (!string.IsNullOrWhiteSpace(interfaceCodeModel.str_AdvancedConfig))
{
AdvancedConfig = JObject.Parse(interfaceCodeModel.str_AdvancedConfig);
}
//申明变量,是否为商品相关的接口
bool CommController = false;
if (interfaceCodeModel.HostWholetableName == "HIGHWAY_STORAGE.T_COMMODITY" ||
interfaceCodeModel.SubWholetableName == "HIGHWAY_STORAGE.T_COMMODITY")
{
CommController = true;
}
//生成接口代码
interfaceCodeResModel.Controller_cs = InterfaceCodeHelper.GetController(interfaceCodeModel.InterfaceDomainName,
interfaceCodeModel.InterfaceController, interfaceCodeModel.InterfaceRoute, interfaceCodeModel.InterfaceName,
interfaceCodeModel.CombineModelField, interfaceCodeModel.HeaderRequest, interfaceCodeModel.ListModelField,
dtInterfaceModel, interfaceCodeModel.InterfaceDesc, CommController).ToString();
//获取主表和附表的命名空间,存储格式:主表命名空间,附表命名空间
string HostnameSpace = interfaceCodeModel.HostnameSpace, SubnameSpace = "";
if (!string.IsNullOrWhiteSpace(HostnameSpace))
{
HostnameSpace = interfaceCodeModel.HostnameSpace.Split(',')[0];
if (interfaceCodeModel.HostnameSpace.Contains(","))
{
SubnameSpace = interfaceCodeModel.HostnameSpace.Split(',')[1];
}
}
//生成接口相关方法代码
interfaceCodeResModel.Helper_cs = InterfaceCodeHelper.GetHelper(interfaceCodeModel.HostClassName,
HostnameSpace, interfaceCodeModel.HostWholetableName, interfaceCodeModel.SubWholetableName,
interfaceCodeModel.Hostfield, interfaceCodeModel.Subfield, interfaceCodeModel.SubclassName, SubnameSpace,
interfaceCodeModel.InterfaceController, interfaceCodeModel.InterfaceRoute, interfaceCodeModel.CombineModelField,
interfaceCodeModel.ListModelField, interfaceCodeModel.InterfaceName, ref txtSearchParams, ref txtSQLString,
dtInterfaceModel, dtNewTable, AdvancedConfig, interfaceCodeModel.InterfaceDesc, CommController).ToString();
//生成接口相关对象代码
interfaceCodeResModel.Model_cs = InterfaceCodeHelper.GetDataModel(interfaceCodeModel.InterfaceName,
interfaceCodeModel.CombineModelField, interfaceCodeModel.ListModelField, interfaceCodeModel.SubtableName,
interfaceCodeModel.SubclassName, dtInterfaceModel, AdvancedConfig).ToString();
//生成接口where查询条件语句
interfaceCodeResModel.txtSearchParams = txtSearchParams;
//生成接口SQL查询语句
interfaceCodeResModel.txtSQLString = txtSQLString;
return interfaceCodeResModel;
}
#endregion
#region ->
/// <summary>
/// 生成前端页面代码
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="webPageCodeModel">生成前端页面代码的控件内容相关类</param>
public static Model.WebPageCodeResModel BuildWebPageCode(Transaction transaction, Model.WebPageCodeModel webPageCodeModel)
{
Model.WebPageCodeResModel webPageCodeResModel = new Model.WebPageCodeResModel();
Business.INTERFACE INTERFACEHost = new Business.INTERFACE(transaction);
INTERFACEHost.INTERFACE_ID = webPageCodeModel.HostInterfaceId;
if (INTERFACEHost.Select())
{
//查询接口入参数据
DataTable dtInterfaceParams = Business.INTERFACE.GetInterfaceDatas(transaction, 2, INTERFACEHost.INTERFACE_ID);
//查询接口入参对象数据
DataTable dtInterfaceParamsModel = Business.INTERFACE.GetInterfaceDatas(transaction, 4, INTERFACEHost.INTERFACE_ID);
//查询接口返参数据
DataTable dtInterfaceResponse = Business.INTERFACE.GetInterfaceDatas(transaction, 3, INTERFACEHost.INTERFACE_ID);
//查询接口返参对象数据
DataTable dtInterfaceResponseModel = Business.INTERFACE.GetInterfaceDatas(transaction, 5, INTERFACEHost.INTERFACE_ID);
//获取主接口类型
webPageCodeModel.InterfaceType = INTERFACEHost.INTERFACE_TYPE;
//获取主接口类名称
webPageCodeModel.HostClassName = CommonHelper.GetInterfaceClassName(
INTERFACEHost.INTERFACE_TYPE.Value, INTERFACEHost.INTERFACE_ROUTE);
//获取主接口相关对象名称
webPageCodeModel.HostModelName = CommonHelper.GetClassModelName(webPageCodeModel.HostClassName);
#region
//主接口相关数据源
DataTable dtInterface;
if (INTERFACEHost.INTERFACE_TYPE == 0)
{
dtInterface = INTERFACEHost.FillDataTable("WHERE INTERFACE_PID = '" + INTERFACEHost.INTERFACE_ID + "'");
if (dtInterface.Select("INTERFACE_NAME like '获取列表【%'").Length > 0)
{
dtInterfaceResponseModel = Business.INTERFACE.GetInterfaceDatas(transaction, 5,
dtInterface.Select("INTERFACE_NAME like '获取列表【%'")[0]["INTERFACE_ID"].TryParseToInt());
}
}
else
{
dtInterface = INTERFACEHost.FillDataTable("WHERE INTERFACE_ID = '" + INTERFACEHost.INTERFACE_ID + "'");
if (INTERFACEHost.INTERFACE_TYPE > 1)
{
//非标准接口的唯一键值取curIndex
if (webPageCodeModel.interfaceNameSpaceModel != null && string.IsNullOrWhiteSpace(
webPageCodeModel.interfaceNameSpaceModel.DDLUniqueName))
{
webPageCodeModel.interfaceNameSpaceModel.DDLUniqueName = "curIndex";
}
}
}
//获取接口入参对象名称
string ParamsName = webPageCodeModel.interfaceNameSpaceModel != null ?
webPageCodeModel.interfaceNameSpaceModel.txtParamsName : "";
//申明关联接口返参字段数据源
DataTable dtGridViewExRelate = null;
//获取关联接口字段数据源
if (webPageCodeModel.relateInterfaceModel != null)
{
//关联接口相关数据源
DataTable dtInterfaceRelate;
if (webPageCodeModel.relateInterfaceModel.RelateInterfaceId != null)
{
Business.INTERFACE INTERFACERelate = new Business.INTERFACE(transaction);
INTERFACERelate.INTERFACE_ID = webPageCodeModel.relateInterfaceModel.RelateInterfaceId;
if (INTERFACERelate.Select())
{
//申明接口入参字段数据源
DataTable ParamsTable = null;
if (INTERFACERelate.INTERFACE_TYPE == 0)
{
//获取关联表相关接口
dtInterfaceRelate = INTERFACERelate.FillDataTable(
"WHERE INTERFACE_PID = '" + INTERFACERelate.INTERFACE_ID + "'");
//关联接口-查询获取明细接口
if (dtInterfaceRelate.Select("INTERFACE_NAME like '获取明细%'").Length > 0)
{
DataRow _DataRow = dtInterfaceRelate.Select("INTERFACE_NAME like '获取明细%'")[0];
ParamsTable = new Business.INTERFACEPARAMS(transaction).FillDataTable(
"WHERE INTERFACE_ID = " + _DataRow["INTERFACE_ID"] + " AND INTERFACEPARAMS_NAME = '" +
webPageCodeModel.relateInterfaceModel.RelateField + "'");
dtGridViewExRelate = Business.INTERFACE.GetInterfaceDatas(transaction, 5,
_DataRow["INTERFACE_ID"].TryParseToInt());
}
webPageCodeModel.relateInterfaceModel.RelateClassName = INTERFACERelate.INTERFACE_ROUTE;
webPageCodeModel.relateInterfaceModel.RelateModelName = CommonHelper.GetClassModelName(
webPageCodeModel.relateInterfaceModel.RelateClassName);
}
else
{
dtInterfaceRelate = INTERFACERelate.FillDataTable(
"WHERE INTERFACE_ID = '" + INTERFACERelate.INTERFACE_ID + "'");
dtGridViewExRelate = Business.INTERFACE.GetInterfaceDatas(
transaction, 5, INTERFACERelate.INTERFACE_ID);
webPageCodeModel.relateInterfaceModel.RelateClassName =
CommonHelper.GetInterfaceClassName(transaction, INTERFACERelate.INTERFACE_ID.Value);
webPageCodeModel.relateInterfaceModel.RelateModelName = CommonHelper.GetClassModelName(
webPageCodeModel.relateInterfaceModel.RelateClassName);
}
//生成前端页面的接口文件
webPageCodeResModel.txtservice_ts = WebPageCodeHelper.GetService(transaction,
dtInterface, ParamsTable, ParamsName, webPageCodeModel.HostClassName, webPageCodeModel.HostModelName,
dtInterfaceRelate, webPageCodeModel.relateInterfaceModel.RelateClassName,
webPageCodeModel.relateInterfaceModel.RelateModelName).ToString();
}
}
}
else
{
//生成前端页面的接口文件
webPageCodeResModel.txtservice_ts = WebPageCodeHelper.GetService(transaction, dtInterface, null,
ParamsName, webPageCodeModel.HostClassName, webPageCodeModel.HostModelName).ToString();
}
#endregion
//获取页面引用对象代码
webPageCodeResModel.txtdata_d_ts = WebPageCodeHelper.GetDataModel(dtInterfaceParams,
dtInterfaceParamsModel, ParamsName, dtInterfaceResponseModel, dtGridViewExRelate).ToString();
//获取列表页面代码
webPageCodeResModel.txtIndex_tsx = WebPageCodeHelper.GetIndex(webPageCodeModel, dtInterfaceParams).ToString();
//获取antd框架路由代码
if (webPageCodeModel.CreateRoute == null || webPageCodeModel.CreateRoute.Value)
{
StringBuilder sbRoute = new StringBuilder();
if (WebPageCodeHelper.GetRoute(ref sbRoute, 0, Config.AppSettings.IndexPageDir, "",
"/" + Config.AppSettings.IndexPageDir + "/" + webPageCodeModel.HostClassName, "", 0, null, false, 3000))
{
webPageCodeResModel.txtroutes_ts = sbRoute.ToString();
}
}
}
return webPageCodeResModel;
}
#endregion
#region -> SQL语句Datatable数据集
/// <summary>
/// 执行SQL语句返回Datatable数据集
/// </summary>
/// <param name="transaction"></param>
/// <param name="exSQLParam">执行SQL语句入参对象<br/>
/// HostInterfaceId主表接口内码<br/>
/// SubInterfaceId附表接口内码<br/>
/// txtSQLStringSQL语句内容<br/>
/// AdvancedConfig额外的配置项
/// </param>
/// <returns></returns>
public static DataTable ExcuteSQLString(Transaction transaction, Model.ExSQLParam exSQLParam)
{
DataTable dtSQLResultClone = null;
string InterfaceModelId = "";
Business.INTERFACE _INTERFACE = new Business.INTERFACE(transaction);
_INTERFACE.INTERFACE_ID = exSQLParam.HostInterfaceId;
if (!_INTERFACE.Select())
{
return dtSQLResultClone;
}
Business.INTERFACEMODEL _INTERFACEMODEL = new Business.INTERFACEMODEL(transaction);
if (_INTERFACE.INTERFACE_TYPE == 0)
{
_INTERFACEMODEL.AddSearchParameter("INTERFACEMODEL_NAME", _INTERFACE.INTERFACE_ROUTE + "Model");
_INTERFACEMODEL.AddSearchParameter("INTERFACEMODEL_PID", -1);
_INTERFACEMODEL.AddSearchParameter("INTERFACEMODEL_FORMAT", 4);
if (_INTERFACEMODEL.Search())
{
InterfaceModelId = _INTERFACEMODEL.KeyID;
}
}
else
{
Business.INTERFACERESPONSE _INTERFACERESPONSE = new Business.INTERFACERESPONSE(transaction);
_INTERFACERESPONSE.AddSearchParameter("INTERFACE_ID", exSQLParam.HostInterfaceId);
if (_INTERFACERESPONSE.Search() && _INTERFACERESPONSE.INTERFACEMODEL_ID != null)
{
_INTERFACEMODEL.INTERFACEMODEL_ID = _INTERFACERESPONSE.INTERFACEMODEL_ID;
if (_INTERFACEMODEL.Select())
{
InterfaceModelId = _INTERFACEMODEL.KeyID;
}
}
}
if (string.IsNullOrWhiteSpace(InterfaceModelId))
{
return dtSQLResultClone;
}
//获取session中的高级配置信息
JObject AdvancedConfig = null;
if (!string.IsNullOrWhiteSpace(exSQLParam.AdvancedConfig))
{
AdvancedConfig = JObject.Parse(exSQLParam.AdvancedConfig);
}
//定义SQL语句执行结果
DataTable dtSQLResult = null;
//去除SQL语句中的和查询无关的字符
string SQLString = exSQLParam.txtSQLString.Replace("{0}", "").Replace(
"\", WhereSQL);", "").Replace("string SQLString = string.Format(@\"", "");
//根据关联的数据库表,匹配查询对象
if (_INTERFACEMODEL.DATABASETABLE_ID != null)
{
Business.DATABASETABLE _DATABASETABLE = new Business.DATABASETABLE(transaction);
_DATABASETABLE.DATABASETABLE_ID = _INTERFACEMODEL.DATABASETABLE_ID;
if (_DATABASETABLE.Select())
{
switch (_DATABASETABLE.DATABASEINFO_NAME)
{
case "云平台正式库":
dtSQLResult = new Business.ANTDROUTE(transaction).ExecuteDataTable(SQLString);
break;
case "合作商户平台":
dtSQLResult = new CMB.AUTOTYPE(transaction).ExecuteDataTable(SQLString);
break;
default:
dtSQLResult = new MSPB.AUTOTYPE(transaction).ExecuteDataTable(SQLString);
break;
}
}
}
else
{
dtSQLResult = new Business.ANTDROUTE(transaction).ExecuteDataTable(SQLString);
}
dtSQLResult = CommonHelper.GetDataTableWithPageSize(dtSQLResult, 10, 1);
//定义查询结果的字段注解
dtSQLResultClone = dtSQLResult.Clone();
#region
//获取列表上设置的字段内容
//DataTable dtInterfaceModel = GetGridViewDataSet();
////遍历返参字段列表,获取字段中文释义
//DataRow drComment = dtSQLResultClone.NewRow();
//foreach (DataColumn dcComment in dtSQLResultClone.Columns)
//{
// //查询返参字段的中文释义
// if (dtInterfaceModel.Select("ColumnResponseRename = '" + dcComment.ColumnName + "'").Length > 0)
// {
// DataRow drInterfaceModel = dtInterfaceModel.Select("ColumnResponseRename = '" + dcComment.ColumnName + "'")[0];
// //绑定中文释义
// drComment[dcComment] = drInterfaceModel["INTERFACEMODEL_COMMENT"].ToString().Split('(')[0].Split('')[0];
// if (drInterfaceModel["DataSummary"].ToString() == "1")
// {
// drComment[dcComment] = drComment[dcComment].ToString() + "合计值";
// }
// else if (drInterfaceModel["DataSummary"].ToString() == "2")
// {
// drComment[dcComment] = drComment[dcComment].ToString() + "总数量";
// }
// }
// else if (AdvancedConfig != null && AdvancedConfig.ToString().Contains(dcComment.ColumnName))
// {
// drComment[dcComment] = AdvancedConfig.ToString().Split(dcComment.ColumnName)[1].Split("\"")[4].Trim('\\');
// }
//}
////添加字段注解到第一行
//dtSQLResultClone.Rows.InsertAt(drComment, 0);
#endregion
//遍历查询结果,添加到克隆的数据源中
int RowCount = 0;
foreach (DataRow drSQLResult in dtSQLResult.Rows)
{
//默认返回100行数据
if (RowCount == 100) break;
DataRow drData = dtSQLResultClone.NewRow();
for (int CellCount = 0; CellCount < drSQLResult.ItemArray.Length; CellCount++)
{
drData[CellCount] = drSQLResult[CellCount];
}
dtSQLResultClone.Rows.Add(drData);
}
return dtSQLResultClone;
}
#endregion
#region ->
/// <summary>
/// 发布接口代码文件
/// </summary>
/// <param name="transaction"></param>
/// <param name="createFileParam">接口代码文件入参</param>
/// <param name="RebuildslnLogName">重新编译解决方案的日志文件名称</param>
public static bool CreateInterfaceFile(Transaction transaction, Model.CreateITFFileParam createFileParam, string RebuildslnLogName)
{
//生成具体页面文件
CreateFile(createFileParam.InterfaceController, createFileParam.UniqueCode, createFileParam.str_Controller_cs,
createFileParam.str_Helper_cs, createFileParam.str_Model_cs, RebuildslnLogName);
DataTable dtInterfaceModel = JsonConvert.DeserializeObject<DataTable>(createFileParam.str_dtInterfaceModel);
if (dtInterfaceModel.Select("ShowResponse = 1").Length == 0) return false;
//如果字段没有设置过重命名,则重命名的字段和字段名称一致
foreach (DataRow drIM in dtInterfaceModel.Rows)
{
if (drIM["ColumnParamsRename"].ToString() == "")
{
drIM["ColumnParamsRename"] = drIM["INTERFACEMODEL_NAME"];
}
if (drIM["ColumnResponseRename"].ToString() == "")
{
drIM["ColumnResponseRename"] = drIM["INTERFACEMODEL_NAME"];
}
}
//获取session中的高级配置信息 判断是否有存了合计的分类值
JObject AdvancedConfig = null;
if (!string.IsNullOrWhiteSpace(createFileParam.str_AdvancedConfig))
{
AdvancedConfig = JObject.Parse(createFileParam.str_AdvancedConfig);
}
#region
Business.INTERFACEMODEL INTERFACEMODELCombine = new Business.INTERFACEMODEL(transaction);
INTERFACEMODELCombine.AddSearchParameter("INTERFACEMODEL_PID", -1);
INTERFACEMODELCombine.AddSearchParameter("INTERFACEMODEL_FORMAT", 4);
INTERFACEMODELCombine.AddSearchParameter("INTERFACEMODEL_NAME", createFileParam.CombineModelField);
if (!INTERFACEMODELCombine.Search())
{
INTERFACEMODELCombine.ResetProperty();
INTERFACEMODELCombine.INTERFACEMODEL_PID = -1;
INTERFACEMODELCombine.INTERFACEMODEL_FORMAT = 4;
INTERFACEMODELCombine.INTERFACEMODEL_NAME = createFileParam.CombineModelField;
INTERFACEMODELCombine.INTERFACEMODEL_COMMENT = createFileParam.InterfaceName.Split(',')[0] + "相关类";
INTERFACEMODELCombine.Insert();
}
else
{
INTERFACEMODELCombine.ExecuteNonQuery("DELETE FROM T_INTERFACEMODEL WHERE INTERFACEMODEL_PID = " +
INTERFACEMODELCombine.KeyID, null);
}
//绑定集合接口参数对象
DataRow[] dataRowCombine = dtInterfaceModel.Select("ShowResponse = 1",
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
Business.INTERFACE.SaveModelToOracle(transaction, dataRowCombine, INTERFACEMODELCombine.INTERFACEMODEL_ID, AdvancedConfig);
#endregion
Business.INTERFACEMODEL INTERFACEMODELList = new Business.INTERFACEMODEL(transaction);
//如果有第二个接口(也就是主附表列表接口),则保存对应的参数对象
if (createFileParam.InterfaceName.Split(',').Length > 1)
{
#region
#region
Business.INTERFACEMODEL INTERFACEMODELSub = new Business.INTERFACEMODEL(transaction);
INTERFACEMODELSub.AddSearchParameter("INTERFACEMODEL_PID", -1);
INTERFACEMODELSub.AddSearchParameter("INTERFACEMODEL_FORMAT", 4);
INTERFACEMODELSub.AddSearchParameter("INTERFACEMODEL_NAME", createFileParam.SubClassName + "SubModel");
if (!INTERFACEMODELSub.Search())
{
INTERFACEMODELSub.ResetProperty();
INTERFACEMODELSub.INTERFACEMODEL_PID = -1;
INTERFACEMODELSub.INTERFACEMODEL_FORMAT = 4;
INTERFACEMODELSub.INTERFACEMODEL_NAME = createFileParam.SubClassName + "SubModel";
INTERFACEMODELSub.INTERFACEMODEL_COMMENT = createFileParam.InterfaceName.Split(',')[1] + "附表相关类";
INTERFACEMODELSub.Insert();
}
else
{
INTERFACEMODELSub.ExecuteNonQuery("DELETE FROM T_INTERFACEMODEL WHERE INTERFACEMODEL_PID = " + INTERFACEMODELSub.KeyID, null);
}
//绑定列表接口附表参数对象
DataRow[] dataRowSub = dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType = 2",
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
Business.INTERFACE.SaveModelToOracle(transaction, dataRowSub, INTERFACEMODELSub.INTERFACEMODEL_ID, AdvancedConfig);
#endregion
#region
INTERFACEMODELList.AddSearchParameter("INTERFACEMODEL_PID", -1);
INTERFACEMODELList.AddSearchParameter("INTERFACEMODEL_FORMAT", 4);
INTERFACEMODELList.AddSearchParameter("INTERFACEMODEL_NAME", createFileParam.ListModelField);
if (!INTERFACEMODELList.Search())
{
INTERFACEMODELList.ResetProperty();
INTERFACEMODELList.INTERFACEMODEL_PID = -1;
INTERFACEMODELList.INTERFACEMODEL_FORMAT = 4;
INTERFACEMODELList.INTERFACEMODEL_NAME = createFileParam.ListModelField;
INTERFACEMODELList.INTERFACEMODEL_COMMENT = createFileParam.InterfaceName.Split(',')[1] + "相关类";
INTERFACEMODELList.Insert();
}
else
{
INTERFACEMODELList.ExecuteNonQuery("DELETE FROM T_INTERFACEMODEL WHERE INTERFACEMODEL_PID = " + INTERFACEMODELList.KeyID, null);
}
//绑定列表接口主表参数对象
DataRow[] dataRowList = dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType in (1,3)",
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
Business.INTERFACE.SaveModelToOracle(transaction, dataRowList, INTERFACEMODELList.INTERFACEMODEL_ID, AdvancedConfig);
//添加主表对象中的附表集合
Business.INTERFACEMODEL SubListModel = new Business.INTERFACEMODEL(transaction);
SubListModel.INTERFACEMODEL_PID = INTERFACEMODELList.INTERFACEMODEL_ID;
SubListModel.INTERFACEMODEL_FORMAT = 5;
SubListModel.INTERFACEMODEL_USEDID = INTERFACEMODELSub.INTERFACEMODEL_ID;
SubListModel.INTERFACEMODEL_NAME = createFileParam.SubClassName + "SubList";
SubListModel.INTERFACEMODEL_COMMENT = createFileParam.SubTableName + "集合";
SubListModel.Insert();
#endregion
#endregion
}
#region
int RouteCount = 0;
foreach (string Route in createFileParam.InterfaceRoute.Split(','))
{
Business.INTERFACE _INTERFACE = new Business.INTERFACE(transaction);
_INTERFACE.AddSearchParameter("INTERFACE_ROUTE", Route);
if (!_INTERFACE.Search())
{
//插入接口主表
_INTERFACE.ResetProperty();
_INTERFACE.INTERFACE_NAME = createFileParam.InterfaceName.Split(',')[RouteCount];
_INTERFACE.INTERFACE_ROUTE = Route;
_INTERFACE.INTERFACE_DOMAINNAME = "https://api.eshangtech.com/" + createFileParam.InterfaceDomainName;
_INTERFACE.INTERFACE_ACCEPTVERBS = 1;
_INTERFACE.INTERFACE_CONTROLLER = createFileParam.InterfaceController;
_INTERFACE.PARAMS_FORMAT = 0;
_INTERFACE.RESPONSE_FORMAT = 2;
_INTERFACE.STANDARD_TYPE = 0;
_INTERFACE.INTERFACE_PID = -1;
_INTERFACE.INTERFACE_TYPE = createFileParam.InterfaceType.TryParseToShort();
_INTERFACE.INTERFACE_DESC = createFileParam.InterfaceDesc;
_INTERFACE.Insert();
}
else
{
//更新接口表数据
_INTERFACE.INTERFACE_NAME = createFileParam.InterfaceName.Split(',')[RouteCount];
_INTERFACE.INTERFACE_ROUTE = Route;
_INTERFACE.INTERFACE_DOMAINNAME = "https://api.eshangtech.com/" + createFileParam.InterfaceDomainName;
_INTERFACE.INTERFACE_CONTROLLER = createFileParam.InterfaceController;
_INTERFACE.INTERFACE_TYPE = createFileParam.InterfaceType.TryParseToShort();
_INTERFACE.INTERFACE_DESC = createFileParam.InterfaceDesc;
_INTERFACE.Update();
//删除接口相关的表,需要重新插入
_INTERFACE.ExecuteNonQuery("DELETE FROM T_RTINTERFACETABLE WHERE INTERFACE_ID = " + _INTERFACE.KeyID, null);
_INTERFACE.ExecuteNonQuery("DELETE FROM T_INTERFACEPARAMS WHERE INTERFACE_ID = " + _INTERFACE.KeyID, null);
_INTERFACE.ExecuteNonQuery("DELETE FROM T_INTERFACERESPONSE WHERE INTERFACE_ID = " + _INTERFACE.KeyID, null);
_INTERFACE.ExecuteNonQuery("DELETE FROM T_RTINTERFACESQL WHERE INTERFACE_ID = " + _INTERFACE.KeyID, null);
}
//插入接口数据库表关联
if (!string.IsNullOrWhiteSpace(createFileParam.HostModelId))
{
Business.INTERFACEMODEL _INTERFACEMODEL = new Business.INTERFACEMODEL(transaction);
_INTERFACEMODEL.INTERFACEMODEL_ID_Encrypt = createFileParam.HostModelId.ToEncrypt();
if (_INTERFACEMODEL.Select() && _INTERFACEMODEL.DATABASETABLE_ID != null)
{
Business.RTINTERFACETABLE _RTINTERFACETABLE = new Business.RTINTERFACETABLE(transaction);
_RTINTERFACETABLE.DATABASETABLE_ID = _INTERFACEMODEL.DATABASETABLE_ID;
_RTINTERFACETABLE.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
//_RTINTERFACETABLE.STAFF_ID = PassportInfo.ID;
//_RTINTERFACETABLE.STAFF_NAME = PassportInfo.Name;
_RTINTERFACETABLE.OPERATE_DATE = DateTime.Now;
_RTINTERFACETABLE.RTINTERFACETABLE_DESC = createFileParam.InterfaceDesc;
_RTINTERFACETABLE.Insert();
}
}
//插入接口和数据库表关联关系
if (!string.IsNullOrWhiteSpace(createFileParam.SubModelId))
{
Business.INTERFACEMODEL _INTERFACEMODEL = new Business.INTERFACEMODEL(transaction);
_INTERFACEMODEL.INTERFACEMODEL_ID_Encrypt = createFileParam.SubModelId.ToEncrypt();
if (_INTERFACEMODEL.Select() && _INTERFACEMODEL.DATABASETABLE_ID != null)
{
Business.RTINTERFACETABLE _RTINTERFACETABLE = new Business.RTINTERFACETABLE(transaction);
_RTINTERFACETABLE.DATABASETABLE_ID = _INTERFACEMODEL.DATABASETABLE_ID;
_RTINTERFACETABLE.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
//_RTINTERFACETABLE.STAFF_ID = PassportInfo.ID;
//_RTINTERFACETABLE.STAFF_NAME = PassportInfo.Name;
_RTINTERFACETABLE.OPERATE_DATE = DateTime.Now;
_RTINTERFACETABLE.RTINTERFACETABLE_DESC = createFileParam.InterfaceDesc;
_RTINTERFACETABLE.Insert();
}
}
//获取session中的其他数据库表信息
if (!string.IsNullOrWhiteSpace(createFileParam.str_dtOtherTable))
{
DataTable dtNewTable = JsonConvert.DeserializeObject<DataTable>(createFileParam.str_dtOtherTable);
if (dtNewTable.Rows.Count > 0)
{
foreach (DataRow drNewTable in dtNewTable.Rows)
{
Business.RTINTERFACETABLE _RTINTERFACETABLE = new Business.RTINTERFACETABLE(transaction);
_RTINTERFACETABLE.DATABASETABLE_ID = drNewTable["DATABASETABLE_ID"].TryParseToInt();
_RTINTERFACETABLE.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
//_RTINTERFACETABLE.STAFF_ID = PassportInfo.ID;
//_RTINTERFACETABLE.STAFF_NAME = PassportInfo.Name;
_RTINTERFACETABLE.OPERATE_DATE = DateTime.Now;
_RTINTERFACETABLE.RTINTERFACETABLE_DESC = createFileParam.InterfaceDesc;
_RTINTERFACETABLE.Insert();
}
}
}
//插入接口入参
foreach (DataRow _DataRow in dtInterfaceModel.Select("ShowParams = 1",
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID"))
{
if (_DataRow["DATE_FIELD"].ToString() == "1" && _DataRow["SEARCH_FIELD"].ToString() != "")
{
int FieldCount = 0;
//如果是日期字段,且有多查询条件,则将对应查询条件字段添加到入参中
foreach (string DateSearchField in _DataRow["SEARCH_FIELD"].ToString().Split(','))
{
Business.INTERFACEPARAMS _INTERFACEPARAMS = new Business.INTERFACEPARAMS(transaction);
_INTERFACEPARAMS.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
_INTERFACEPARAMS.INTERFACEPARAMS_FORMAT = 0;
_INTERFACEPARAMS.INTERFACEPARAMS_NAME = DateSearchField;
_INTERFACEPARAMS.INTERFACEPARAMS_COMMENT = _DataRow["INTERFACEMODEL_COMMENT"].ToString() +
(FieldCount == 0 ? "(开始时间)" : "(结束时间)");
_INTERFACEPARAMS.DATE_FIELD = 1;
_INTERFACEPARAMS.Insert();
FieldCount++;
}
}
else
{
Business.INTERFACEPARAMS _INTERFACEPARAMS = new Business.INTERFACEPARAMS(transaction);
_INTERFACEPARAMS.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
_INTERFACEPARAMS.INTERFACEPARAMS_FORMAT = 0;
_INTERFACEPARAMS.INTERFACEPARAMS_NAME = _DataRow["INTERFACEMODEL_NAME"].ToString();
_INTERFACEPARAMS.INTERFACEPARAMS_COMMENT = _DataRow["INTERFACEMODEL_COMMENT"].ToString();
_INTERFACEPARAMS.DATE_FIELD = _DataRow["DATE_FIELD"].TryParseToShort();
_INTERFACEPARAMS.ENUM_FIELD = _DataRow["ENUM_FIELD"].ToString();
_INTERFACEPARAMS.Insert();
}
}
#region
Business.INTERFACEPARAMS PageIndexParams = new Business.INTERFACEPARAMS(transaction);
PageIndexParams.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
PageIndexParams.INTERFACEPARAMS_FORMAT = 1;
PageIndexParams.INTERFACEPARAMS_NAME = "PageIndex";
PageIndexParams.INTERFACEPARAMS_COMMENT = "查询页码数";
PageIndexParams.Insert();
Business.INTERFACEPARAMS PageSizeParams = new Business.INTERFACEPARAMS(transaction);
PageSizeParams.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
PageSizeParams.INTERFACEPARAMS_FORMAT = 1;
PageSizeParams.INTERFACEPARAMS_NAME = "PageSize";
PageSizeParams.INTERFACEPARAMS_COMMENT = "每页显示行数";
PageSizeParams.Insert();
Business.INTERFACEPARAMS SortStrParams = new Business.INTERFACEPARAMS(transaction);
SortStrParams.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
SortStrParams.INTERFACEPARAMS_FORMAT = 0;
SortStrParams.INTERFACEPARAMS_NAME = "SortStr";
SortStrParams.INTERFACEPARAMS_COMMENT = "排序内容";
SortStrParams.Insert();
#endregion
//插入接口返参
Business.INTERFACERESPONSE _INTERFACERESPONSE = new Business.INTERFACERESPONSE(transaction);
_INTERFACERESPONSE.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
_INTERFACERESPONSE.INTERFACEMODEL_ID = RouteCount == 0 ?
INTERFACEMODELCombine.INTERFACEMODEL_ID : INTERFACEMODELList.INTERFACEMODEL_ID;
_INTERFACERESPONSE.INTERFACERESPONSE_FORMAT = 5;
_INTERFACERESPONSE.INTERFACERESPONSE_NAME = Route.Split('/')[2].Substring(3);
_INTERFACERESPONSE.INTERFACERESPONSE_COMMENT = _INTERFACE.INTERFACE_NAME;
_INTERFACERESPONSE.Insert();
//添加接口关联的SQL语句
if (!string.IsNullOrWhiteSpace(createFileParam.txtSearchParams))
{
Business.RTINTERFACESQL _RTINTERFACESQL = new Business.RTINTERFACESQL(transaction);
_RTINTERFACESQL.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
_RTINTERFACESQL.SQLSTRING_TYPE = 1; //查询条件
_RTINTERFACESQL.SQLSTRING_CONTENT = createFileParam.txtSearchParams;
//_RTINTERFACESQL.STAFF_ID = PassportInfo.ID;
//_RTINTERFACESQL.STAFF_NAME = PassportInfo.Name;
_RTINTERFACESQL.OPERATE_DATE = DateTime.Now;
_RTINTERFACESQL.Insert();
}
if (!string.IsNullOrWhiteSpace(createFileParam.txtSQLString))
{
Business.RTINTERFACESQL _RTINTERFACESQL = new Business.RTINTERFACESQL(transaction);
_RTINTERFACESQL.INTERFACE_ID = _INTERFACE.INTERFACE_ID;
_RTINTERFACESQL.SQLSTRING_TYPE = 2; //SQL执行语句
_RTINTERFACESQL.SQLSTRING_CONTENT = createFileParam.txtSQLString;
//_RTINTERFACESQL.STAFF_ID = PassportInfo.ID;
//_RTINTERFACESQL.STAFF_NAME = PassportInfo.Name;
_RTINTERFACESQL.OPERATE_DATE = DateTime.Now;
_RTINTERFACESQL.Insert();
}
RouteCount++;
}
#endregion
return true;
}
#region
/// <summary>
/// 生成接口代码文件方法
/// </summary>
/// <param name="InterfaceController">接口文件目录</param>
/// <param name="CombineModel">接口文件命名</param>
/// <param name="str_Controller_cs">主接口代码</param>
/// <param name="str_Helper_cs">接口方法代码</param>
/// <param name="str_Model_cs">接口类代码</param>
/// <param name="RebuildslnLogName">重新编译解决方案的日志文件名称</param>
public static void CreateFile(string InterfaceController, string CombineModel,
string str_Controller_cs, string str_Helper_cs, string str_Model_cs, string RebuildslnLogName)
{
//生成接口代码文件目录
string _ControllerFilePath = Config.AppSettings.ControllerPath + "\\AutoTest";
if (!Directory.Exists(_ControllerFilePath))
{
Directory.CreateDirectory(_ControllerFilePath);
}
//如果有新的接口生成,则生成接口文件
if (str_Controller_cs != "")
{
CommonHelper.SaveFile(_ControllerFilePath + "\\" + CombineModel + "Controller.cs", str_Controller_cs);
}
//生成接口相关方法代码文件目录
string _HelperFilePath = Config.AppSettings.HelperPath + "\\AutoTest";
if (!Directory.Exists(_HelperFilePath))
{
Directory.CreateDirectory(_HelperFilePath);
}
//如果有新的接口相关方法生成,则生成接口相关方法文件
if (str_Helper_cs != "")
{
CommonHelper.SaveFile(_HelperFilePath + "\\" + CombineModel + "Helper.cs", str_Helper_cs);
}
//生成接口相关对象代码文件目录
string _ModelFilePath = Config.AppSettings.ModelPath + "\\AutoTest";
if (!Directory.Exists(_ModelFilePath))
{
Directory.CreateDirectory(_ModelFilePath);
}
//如果有新的数据对象生成,则生成数据对象文件
if (str_Model_cs != "")
{
CommonHelper.SaveFile(_ModelFilePath + "\\" + CombineModel + "Model.cs", str_Model_cs);
}
//异步执行重新编译解决方案
CommonHelper.Rebuildsln(Config.AppSettings.msbuildPath, Config.AppSettings.slnPath, RebuildslnLogName);
}
#endregion
#endregion
#region ->
/// <summary>
/// 监听接口代码生成结果
/// </summary>
/// <param name="RebuildslnLogName">重新编译解决方案的日志文件名称</param>
/// <param name="resMsg">编辑结果异常日志</param>
/// <returns></returns>
public static bool ListenRebuildRes(string RebuildslnLogName, ref string resMsg)
{
if (File.Exists(Config.AppSettings.CodeBuilderLogAbsUrl + "\\" + RebuildslnLogName + ".txt"))
{
string ErrorLogPath = Config.AppSettings.CodeBuilderLogAbsUrl + "\\" + RebuildslnLogName + "Error.txt";
if (File.Exists(ErrorLogPath))
{
resMsg = File.ReadAllText(ErrorLogPath, Encoding.UTF8);
}
return true;
}
return false;
}
#endregion
#region ->
/// <summary>
/// 发布前端代码文件
/// </summary>
/// <param name="transaction"></param>
/// <param name="createWebFileParam"></param>
public static void CreateWebFile(Transaction transaction, Model.CreateWebFileParam createWebFileParam)
{
string resMsg = "";
string pushlishPath = string.IsNullOrWhiteSpace(createWebFileParam.SavePath) ?
Config.AppSettings.SolutionPath : createWebFileParam.SavePath + "\\src\\pages\\";
string routePath = string.IsNullOrWhiteSpace(createWebFileParam.SavePath) ?
Config.AppSettings.RoutePath : createWebFileParam.SavePath + "\\config";
//生成前端代码文件目录
string FileName = createWebFileParam.FileName;
if (FileName.Split('/').Length > 0)
{
FileName = FileName.Split('/')[FileName.Split('/').Length - 1];
}
string _FilePath = pushlishPath + Config.AppSettings.IndexPageDir + "\\" + FileName;
if (!Directory.Exists(_FilePath))
{
Directory.CreateDirectory(_FilePath);
}
//如果有新的页面生成,则生成页面文件
if (!string.IsNullOrWhiteSpace(createWebFileParam.txtIndex_tsx))
{
CommonHelper.SaveFile(_FilePath, "Index.tsx", createWebFileParam.txtIndex_tsx, ref resMsg, createWebFileParam.SaveServer);
//存储页面和接口的关联关系
Business.RTPAGEINTERFACE _RTPAGEINTERFACE = new Business.RTPAGEINTERFACE(transaction);
_RTPAGEINTERFACE.AddSearchParameter("PAGE_URL", _FilePath + "\\Index.tsx");
_RTPAGEINTERFACE.AddSearchParameter("INTERFACE_ID", createWebFileParam.InterfaceId);
if (!_RTPAGEINTERFACE.Search())
{
_RTPAGEINTERFACE.ResetProperty();
_RTPAGEINTERFACE.PAGE_NAME = createWebFileParam.TableTitle;
_RTPAGEINTERFACE.PAGE_URL = _FilePath + "\\Index.tsx";
_RTPAGEINTERFACE.PAGE_ROUTE = "/" + Config.AppSettings.IndexPageDir.ToLower() + "/" + FileName;
_RTPAGEINTERFACE.INTERFACE_ID = createWebFileParam.InterfaceId.TryParseToInt();
//_RTPAGEINTERFACE.STAFF_ID = PassportInfo.ID;
//_RTPAGEINTERFACE.STAFF_NAME = PassportInfo.Name;
_RTPAGEINTERFACE.OPERATE_DATE = DateTime.Now;
_RTPAGEINTERFACE.Insert();
}
}
//如果有新的接口服务生成,则生成接口服务文件
if (!string.IsNullOrWhiteSpace(createWebFileParam.txtdata_d_ts))
{
CommonHelper.SaveFile(_FilePath, "data.d.ts", createWebFileParam.txtdata_d_ts,
ref resMsg, createWebFileParam.SaveServer);
}
//如果有新的数据对象生成,则生成数据对象文件
if (!string.IsNullOrWhiteSpace(createWebFileParam.txtservice_ts))
{
CommonHelper.SaveFile(_FilePath, "service.ts", createWebFileParam.txtservice_ts,
ref resMsg, createWebFileParam.SaveServer);
}
//生成前端路由代码文件目录
if (!string.IsNullOrWhiteSpace(routePath))
{
if (!Directory.Exists(routePath))
{
Directory.CreateDirectory(routePath);
}
if (!string.IsNullOrWhiteSpace(createWebFileParam.txtroutes_ts))
{
CommonHelper.SaveFile(routePath, "routes.ts", createWebFileParam.txtroutes_ts,
ref resMsg, createWebFileParam.SaveServer);
}
}
}
#endregion
#region ->
/// <summary>
/// 发布前端模块
/// </summary>
/// <param name="UserId">系统用户内码</param>
/// <param name="UserPassport">用户登录账号</param>
/// <param name="DirName">原文件所在目录</param>
/// <param name="ModuleName">模块名称</param>
/// <param name="ModuleGuid">模块唯一标识</param>
/// <param name="SystemMenuId">系统菜单内码</param>
/// <param name="SystemRoleId">系统角色内码</param>
/// <param name="SaveServer">文件发布地址</param>
/// <param name="SolutionPath">原文件夹目录</param>
public static void PublishWebFile(string UserId, string UserPassport, string DirName, string ModuleName,
string ModuleGuid, int SystemMenuId, int? SystemRoleId, string SaveServer, string SolutionPath)
{
string resMsg = "";
string destDir = "a" + DateTime.Now.ToString("yyMMddHHmmssff");
try
{
UserId = UserId.ToDecrypt();
}
catch { }
if (string.IsNullOrWhiteSpace(ModuleGuid))
{
ModuleGuid = Guid.NewGuid().ToString();
}
StringBuilder sbRoute = new StringBuilder();
string SystemModuleURL = "/" + UserPassport.ToLower() + "/" + destDir;
WebPageCodeHelper.GetRoute(ref sbRoute, UserId.TryParseToInt(), UserPassport, ModuleName,
SystemModuleURL, ModuleGuid, SystemMenuId, SystemRoleId, true, 1000);
//存储框架路由文件路径
CommonHelper.SaveFile(Config.AppSettings.RoutePath, "routes.ts", sbRoute.ToString(), ref resMsg, SaveServer);
//迁移模块文件
if (string.IsNullOrWhiteSpace(SolutionPath))
{
SolutionPath = Config.AppSettings.SolutionPath.Replace("\\\\", "\\");
}
string publishPath = Config.AppSettings.SolutionPath.Replace("\\\\", "\\");
//目标路径文件夹不存在,则先新建文件夹
if (!Directory.Exists(publishPath + UserPassport.ToLower()))
{
Directory.CreateDirectory(publishPath + UserPassport.ToLower());
}
CommonHelper.CopyFilesAndDirs(SolutionPath + Config.AppSettings.IndexPageDir + "\\" + DirName + "\\",
publishPath + UserPassport.ToLower() + "\\" + destDir + "\\", true);
}
#endregion
#region ->
/// <summary>
/// 保存图形代码文件
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="chartSession">图形配置session</param>
/// <param name="chartTitle">图形标题</param>
/// <param name="txtChart_tsx">图形代码</param>
/// <param name="fileDir">文件路径</param>
/// <param name="fileName">文件名称</param>
/// <param name="passportInfoID">操作人内码</param>
/// <param name="passportInfoName">操作人名称</param>
/// <param name="postUrl">传输地址</param>
public static void SaveChartFile(Transaction transaction, string chartSession, string chartTitle, string txtChart_tsx,
string fileDir, string fileName, int? passportInfoID = null, string passportInfoName = "", string postUrl = "")
{
string resMsg = "";
Model.ChartSettingModel _ChartSettingModel = JsonConvert.DeserializeObject<Model.ChartSettingModel>(chartSession);
if (_ChartSettingModel != null && !string.IsNullOrWhiteSpace(_ChartSettingModel.InterfaceId))
{
Business.RTPAGEINTERFACE _RTPAGEINTERFACE = new Business.RTPAGEINTERFACE(transaction);
_RTPAGEINTERFACE.AddSearchParameter("PAGE_URL", fileDir + "\\" + fileName);
_RTPAGEINTERFACE.AddSearchParameter("INTERFACE_ID", _ChartSettingModel.InterfaceId);
if (!_RTPAGEINTERFACE.Search())
{
_RTPAGEINTERFACE.ResetProperty();
_RTPAGEINTERFACE.PAGE_NAME = chartTitle;
_RTPAGEINTERFACE.PAGE_URL = fileDir + "\\" + fileName;
_RTPAGEINTERFACE.INTERFACE_ID = _ChartSettingModel.InterfaceId.TryParseToInt();
_RTPAGEINTERFACE.STAFF_ID = passportInfoID;
_RTPAGEINTERFACE.STAFF_NAME = passportInfoName;
_RTPAGEINTERFACE.OPERATE_DATE = DateTime.Now;
_RTPAGEINTERFACE.Insert();
}
}
if (string.IsNullOrWhiteSpace(postUrl))
{
if (!Directory.Exists(fileDir))
{
Directory.CreateDirectory(fileDir);
}
CommonHelper.SaveFile(fileDir + "\\" + fileName, txtChart_tsx);
}
else
{
CommonHelper.SaveFile(fileDir, "SChart.tsx", txtChart_tsx, ref resMsg, postUrl);
}
}
#endregion
}
}