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
{
///
/// 代码生成表相关方法
/// 2022/10/18 11:36:31自动生成
///
public class CodeBuilderHelper
{
#region 获取代码生成表列表
///
/// 获取代码生成表列表
///
/// 事务管理器
/// 查询结果总数
/// 查询条件对象
public static List GetCODEBUILDERList(Transaction transaction,
ref int TotalCount, Model.SearchModel searchModel)
{
List CODEBUILDERList = new List();
string WhereSQL = "", RowFilterSQL = "";
if (searchModel.SearchParameter != null)
{
WhereSQL = OperationDataHelper.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
///
/// 绑定model
///
/// datarow数据源
/// model对象
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 获取代码生成表明细
///
/// 获取代码生成表明细
///
/// 事务管理器
/// 代码生成表内码
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 同步代码生成表
///
/// 赋值代码生成表数据对象
///
/// 事务管理器
/// 代码生成表数据对象
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 赋值代码生成表数据对象
///
/// 赋值代码生成表数据对象
///
///
///
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 删除代码生成表
///
/// 删除代码生成表
///
/// 事务管理器
/// 代码生成表内码
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 获取代码生成表嵌套列表
///
/// 获取代码生成表嵌套列表
///
/// 事务管理器
/// 父级内码
/// 代码类型(1:接口;2:普通页面;3:小程序;4:报表页面)
/// 有效状态
/// 模糊查询
///
public static List> GetNestingCODEBUILDERList(Transaction transaction,
string CODEBUILDER_PID, string CODEBUILDER_FORMAT, string CODEBUILDER_STATE, string SearchKey)
{
//申明嵌套列表集合
List> nestingModelList = new List>();
//赋值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 nestingModel = new Model.NestingModel();
//申明代码生成表对象
Model.CODEBUILDERModel codebuilderModel = new Model.CODEBUILDERModel();
//将代码生成表赋值给代码生成表model
SynchroModelToObject(_CODEBUILDER, codebuilderModel);
//将代码生成表model添加到嵌套对象中去
nestingModel.node = codebuilderModel;
List> nestingModelListChild = new List>();
//调用绑定嵌套列表的方法
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 绑定嵌套列表
///
/// 绑定嵌套列表
///
/// 上级分类
/// 嵌套列表
/// 代码生成表数据
/// 模糊查询内容
public static void BindNestingList(List> nestingModelList,
string CODEBUILDER_PID, DataTable dtCODEBUILDER, string SearchKey)
{
//遍历数据
foreach (DataRow drCODEBUILDER in dtCODEBUILDER.Select("CODEBUILDER_PID = " +
CODEBUILDER_PID, "CODEBUILDER_PID,CONTROL_INDEX"))
{
//申明嵌套对象
Model.NestingModel nestingModelChild = new Model.NestingModel();
//申明代码生成表对象
Model.CODEBUILDERModel codebuilderModel = new Model.CODEBUILDERModel();
//赋值代码生成表数据对象
BindDataRowToModel(drCODEBUILDER, codebuilderModel);
nestingModelChild.node = codebuilderModel;
List> nestingModelListChild = new List>();
//判断下一关系级下面是否还存在数据,没有则跳出遍历
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 获取代码生成表嵌套树
///
/// 获取代码生成表嵌套树
///
/// 事务管理器
/// 父级内码
/// 代码类型(1:接口;2:普通页面;3:小程序;4:报表页面)
/// 有效状态
/// 模糊查询
///
public static List> GetNestingCODEBUILDERTree(Transaction transaction,
string CODEBUILDER_PID, string CODEBUILDER_FORMAT, string CODEBUILDER_STATE, string SearchKey)
{
//申明嵌套树集合
List> nestingModelList = new List>();
//赋值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 nestingModel = new Model.NestingModel();
//申明代码生成表对象
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> nestingModelListChild = new List>();
//调用绑定数据的方法
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 绑定嵌套树
///
/// 绑定嵌套树
///
/// 上级分类
/// 嵌套列表
/// 代码生成表数据
/// 模糊查询内容
public static void BindNestingTree(List> nestingModelList,
string CODEBUILDER_PID, DataTable dtCODEBUILDER, string SearchKey)
{
//遍历数据
foreach (DataRow drCODEBUILDER in dtCODEBUILDER.Select("CODEBUILDER_PID = " +
CODEBUILDER_PID, "CODEBUILDER_PID,CONTROL_INDEX"))
{
//申明嵌套对象
Model.NestingModel nestingModelChild = new Model.NestingModel();
//申明代码生成表对象
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> nestingModelListChild = new List>();
//判断下一关系级下面是否还存在数据,没有则跳出遍历
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 方法 -> 生成接口代码
///
/// 生成接口代码
///
///
///
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(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(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 方法 -> 生成前端页面代码
///
/// 生成前端页面代码
///
/// 事务管理器
/// 生成前端页面代码的控件内容相关类
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数据集
///
/// 执行SQL语句,返回Datatable数据集
///
///
/// 执行SQL语句入参对象:
/// HostInterfaceId:主表接口内码
/// SubInterfaceId:附表接口内码
/// txtSQLString:SQL语句内容
/// AdvancedConfig:额外的配置项
///
///
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 方法 -> 发布接口代码文件
///
/// 发布接口代码文件
///
///
/// 接口代码文件入参
/// 重新编译解决方案的日志文件名称
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(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(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 生成接口代码文件方法
///
/// 生成接口代码文件方法
///
/// 接口文件目录
/// 接口文件命名
/// 主接口代码
/// 接口方法代码
/// 接口类代码
/// 重新编译解决方案的日志文件名称
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 方法 -> 监听接口代码生成结果
///
/// 监听接口代码生成结果
///
/// 重新编译解决方案的日志文件名称
/// 编辑结果异常日志
///
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 方法 -> 发布前端代码文件
///
/// 发布前端代码文件
///
///
///
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 方法 -> 发布前端模块
///
/// 发布前端模块
///
/// 系统用户内码
/// 用户登录账号
/// 原文件所在目录
/// 模块名称
/// 模块唯一标识
/// 系统菜单内码
/// 系统角色内码
/// 文件发布地址
/// 原文件夹目录
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 方法 -> 保存图形代码文件
///
/// 保存图形代码文件
///
/// 事务管理器
/// 图形配置session
/// 图形标题
/// 图形代码
/// 文件路径
/// 文件名称
/// 操作人内码
/// 操作人名称
/// 传输地址
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(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
}
}