1006 lines
60 KiB
C#
1006 lines
60 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Business = SuperMap.RealEstate.FrameWork.Platform.Business;
|
||
using Newtonsoft.Json.Linq;
|
||
using Newtonsoft.Json;
|
||
using HZQR.Common;
|
||
|
||
namespace CodeBuilderApi.GeneralMethod
|
||
{
|
||
/// <summary>
|
||
/// 生成接口代码相关方法
|
||
/// </summary>
|
||
public class InterfaceCodeHelper
|
||
{
|
||
#region WebApi接口
|
||
/// <summary>
|
||
/// 生成WebApi接口代码(*Controller.cs)
|
||
/// </summary>
|
||
/// <param name="InterfaceDomainname">接口命名空间名称</param>
|
||
/// <param name="InterfaceController">接口类别名称</param>
|
||
/// <param name="InterfaceRoute">接口路径</param>
|
||
/// <param name="InterfaceName">接口对象中文名称,自定义生成</param>
|
||
/// <param name="HeaderRequest">请求头 传参</param>
|
||
/// <param name="CombineModelField">集合对象</param>
|
||
/// <param name="ListModelField">列表对象</param>
|
||
/// <param name="_DataTable">接口字段数据源,包含入参对象和返参对象中的字段</param>
|
||
/// <param name="InterfaceDesc">接口备注说明</param>
|
||
/// <param name="CommController">是否为商品相关的接口</param>
|
||
/// <returns></returns>
|
||
public static StringBuilder GetController(string InterfaceDomainname, string InterfaceController,
|
||
string InterfaceRoute, string InterfaceName, string CombineModelField, string HeaderRequest,
|
||
string ListModelField, DataTable _DataTable, string InterfaceDesc, bool CommController)
|
||
{
|
||
StringBuilder _ApiController = new StringBuilder();
|
||
|
||
_ApiController.AppendLine("using System;");
|
||
_ApiController.AppendLine("using System.Collections.Generic;");
|
||
_ApiController.AppendLine("using System.Web.Http;");
|
||
_ApiController.AppendLine("using System.Web.Http.Description;");
|
||
_ApiController.AppendLine("using ESCG = EShang.Common.GeneralMethod;");
|
||
_ApiController.AppendLine("using ESCM = EShang.Common.Model;");
|
||
_ApiController.AppendLine("using Newtonsoft.Json;");
|
||
_ApiController.AppendLine("using HZQR.Common;");
|
||
_ApiController.AppendLine("");
|
||
_ApiController.AppendLine("namespace " + InterfaceDomainname + ".Controllers");
|
||
_ApiController.AppendLine("{");
|
||
|
||
//增加接口文件中文注解
|
||
CommonHelper.BuildCodeSummary(_ApiController, InterfaceController + InterfaceDesc, 1);
|
||
//接口路径名称
|
||
string _InterfaceRoute = InterfaceRoute.Split('/')[2].Split(',')[0];
|
||
//接口路径名称
|
||
if (_InterfaceRoute.ToUpper().StartsWith("GET"))
|
||
{
|
||
_InterfaceRoute = _InterfaceRoute.Substring(3, _InterfaceRoute.Length - 3);
|
||
}
|
||
|
||
//方法命名
|
||
string HelperName = _InterfaceRoute + "Helper";
|
||
//入参字段拼接,入参日志字段拼接,实现方法字段拼接,默认排序选项
|
||
string HeaderStr = "", ParamsStr = "", ParamsLogStr = "", ParamsHelperStr = "", SortStr = "";
|
||
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(1) + "public class " + _InterfaceRoute + "Controller : BaseController");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(1) + "{");
|
||
|
||
#region 获取集合数据
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "#region " + InterfaceName.Split(',')[0]);
|
||
//定义入参字段及中文注释存储的键值对集合
|
||
Dictionary<string, string> Parameters = new Dictionary<string, string>();
|
||
//获取入参字段
|
||
DataRow[] drParamsList = _DataTable.Select("ShowParams = 1",
|
||
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID");
|
||
//获取返参字段
|
||
DataRow[] drResponseList = _DataTable.Select("ShowResponse = 1",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID");
|
||
//如果主表或者附表是商品表,则采用调用商品查询的接口来生成接口
|
||
if (CommController)
|
||
{
|
||
if (_DataTable.Select("ColumnParamsRename = 'ProvinceCode' and ShowParams = 1").Length == 0 &&
|
||
!("," + HeaderRequest + ",").Contains(",ProvinceCode,"))
|
||
{
|
||
Parameters.Add("ProvinceCode", "商品表省份编码");
|
||
ParamsStr = "string ProvinceCode";
|
||
ParamsLogStr = "商品表省份编码【\" + ProvinceCode + \"】";
|
||
ParamsHelperStr = ", ProvinceCode";
|
||
}
|
||
}
|
||
//增加接口入参字段注解
|
||
Business.INTERFACE.BuildInterfaceParams(drParamsList, drResponseList, HeaderRequest, Parameters,
|
||
ref HeaderStr, ref ParamsStr, ref ParamsLogStr, ref ParamsHelperStr, ref SortStr, true);
|
||
Parameters.Add("PageIndex", "查询页码数");
|
||
Parameters.Add("PageSize", "每页显示行数");
|
||
Parameters.Add("SortStr", "排序内容");
|
||
//去掉入参字段首尾的空格和,
|
||
if (string.IsNullOrWhiteSpace(ParamsStr.Replace(",", "")))
|
||
{
|
||
ParamsStr = ParamsStr.Trim().Trim(',');
|
||
}
|
||
//增加接口及入参字段中文注解
|
||
CommonHelper.BuildCodeSummary(_ApiController, InterfaceName.Split(',')[0], 2, Parameters);
|
||
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "/// <returns></returns>");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) +
|
||
"[Route(\"" + InterfaceRoute.Split(',')[0].TrimStart('/') + "\")]");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "[AcceptVerbs(\"GET\")]");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) +
|
||
"[ResponseType(typeof(Models.JsonMsg<Models.JsonList<ESCM." + CombineModelField + ">>))]");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "public IHttpActionResult " + _InterfaceRoute +
|
||
"(" + ParamsStr + "int? PageIndex = null, int? PageSize = null, string SortStr = \"" + SortStr + "\")");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
|
||
if (!string.IsNullOrWhiteSpace(HeaderRequest))
|
||
{
|
||
//定义请求头参数
|
||
_ApiController.AppendLine(HeaderStr);
|
||
}
|
||
|
||
//接口报错时,记录入参日志
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "string Parameter = \"入参信息:" + ParamsLogStr + "\";");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "try");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "int TotalCount = 0;");
|
||
//接口实现相关方法
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "//获取集合数据");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "List<ESCM." + CombineModelField + "> " +
|
||
_InterfaceRoute + " = ESCG." + HelperName + "." + _InterfaceRoute + "(");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(5) +
|
||
"transaction, ref TotalCount, PageIndex, PageSize, SortStr" + ParamsHelperStr + ");");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "//转化json形式");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "Models.JsonList<ESCM." + CombineModelField +
|
||
"> jsonList = Models.JsonList<ESCM." + CombineModelField + ">.Success(");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(5) +
|
||
_InterfaceRoute + ", TotalCount, PageIndex, PageSize);");
|
||
//结果输出
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "return Ok(Models.JsonMsg<Models.JsonList<ESCM." +
|
||
CombineModelField + ">>.Success(jsonList, 100, \"查询成功\"));");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "}");
|
||
//添加异常捕捉代码
|
||
CommonHelper.BuildCatchCode(_ApiController, "查询", _InterfaceRoute, 3);
|
||
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "#endregion");
|
||
#endregion
|
||
|
||
//如果有第二个接口(也就是主附表列表接口),则添加对应的接口代码
|
||
if (InterfaceName.Split(',').Length > 1)
|
||
{
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
|
||
#region 获取列表数据
|
||
//获取列表接口名称
|
||
//接口路径名称
|
||
_InterfaceRoute = InterfaceRoute.Split(',')[1].Split('/')[2];
|
||
//接口路径名称
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "#region " + InterfaceName.Split(',')[1]);
|
||
|
||
//增加接口及入参字段中文注解
|
||
CommonHelper.BuildCodeSummary(_ApiController, InterfaceName.Split(',')[1], 2, Parameters);
|
||
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "/// <returns></returns>");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) +
|
||
"[Route(\"" + InterfaceRoute.Split(',')[1].TrimStart('/') + "\")]");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "[AcceptVerbs(\"GET\")]");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) +
|
||
"[ResponseType(typeof(Models.JsonMsg<Models.JsonList<ESCM." + ListModelField + ">>))]");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "public IHttpActionResult " + _InterfaceRoute +
|
||
"(" + ParamsStr + "int? PageIndex = null, int? PageSize = null, string SortStr = \"\")");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
|
||
if (!string.IsNullOrWhiteSpace(HeaderRequest))
|
||
{
|
||
//定义请求头参数
|
||
_ApiController.AppendLine(HeaderStr);
|
||
}
|
||
|
||
if (_InterfaceRoute.ToUpper().StartsWith("GET"))
|
||
_InterfaceRoute = _InterfaceRoute.Substring(3, _InterfaceRoute.Length - 3);
|
||
|
||
//接口报错时,记录入参日志
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "string Parameter = \"入参信息:" + ParamsLogStr + "\";");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "try");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "int TotalCount = 0;");
|
||
//接口实现相关方法
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "//获取集合数据");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "List<ESCM." + ListModelField + "> " +
|
||
_InterfaceRoute + " = ESCG." + HelperName + "." + _InterfaceRoute + "(");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(5) +
|
||
"transaction, ref TotalCount, PageIndex, PageSize, SortStr" + ParamsHelperStr + ");");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "//转化json形式");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "Models.JsonList<ESCM." + ListModelField +
|
||
"> jsonList = Models.JsonList<ESCM." + ListModelField + ">.Success(");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(5) +
|
||
_InterfaceRoute + ", TotalCount, PageIndex, PageSize);");
|
||
//结果输出
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(4) + "return Ok(Models.JsonMsg<Models.JsonList<ESCM." +
|
||
ListModelField + ">>.Success(jsonList, 100, \"查询成功\"));");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(3) + "}");
|
||
//添加异常捕捉代码
|
||
CommonHelper.BuildCatchCode(_ApiController, "查询", _InterfaceRoute, 3);
|
||
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(2) + "#endregion");
|
||
#endregion
|
||
}
|
||
|
||
_ApiController.AppendLine(CommonHelper.GetTabChar(1) + "}");
|
||
_ApiController.AppendLine("}");
|
||
|
||
return _ApiController;
|
||
}
|
||
#endregion
|
||
|
||
#region WebApi接口帮助类
|
||
/// <summary>
|
||
/// 生成WebApi接口帮助类代码(*Helper.cs)
|
||
/// </summary>
|
||
/// <param name="HostClassName">主表数据表类名</param>
|
||
/// <param name="HostnameSpace">主表命名</param>
|
||
/// <param name="HostWholetableName">主表全名</param>
|
||
/// <param name="SubWholetableName">附表全名</param>
|
||
/// <param name="Hostfield">主表关联字段</param>
|
||
/// <param name="Subfield">附表关联字段</param>
|
||
/// <param name="SubclassName">附表方法类名称</param>
|
||
/// <param name="SubnameSpace">附表命名空间</param>
|
||
/// <param name="InterfaceController">接口类别名称</param>
|
||
/// <param name="InterfaceRoute">接口路径</param>
|
||
/// <param name="CombineModelField">集合对象</param>
|
||
/// <param name="ListModelField">列表对象</param>
|
||
/// <param name="InterfaceName">接口对象中文名称,自定义生成</param>
|
||
/// <param name="txtSearchParams">默认生成SQL语句</param>
|
||
/// <param name="txtSQLString">更新修改SQL语句</param>
|
||
/// <param name="dtInterfaceModel">接口字段数据源,包含入参对象和返参对象中的字段</param>
|
||
/// <param name="dtNewTable">额外新增的数据表命名空间,在申明引用的时候添加</param>
|
||
/// <param name="AdvancedConfig">接口中的合计项字段、按照日/月/年统计的时间字段</param>
|
||
/// <param name="InterfaceDesc">接口备注说明</param>
|
||
/// <param name="CommController">是否为商品相关的接口</param>
|
||
/// <returns></returns>
|
||
public static StringBuilder GetHelper(string HostClassName, string HostnameSpace, string HostWholetableName, string SubWholetableName,
|
||
string Hostfield, string Subfield, string SubclassName, string SubnameSpace, string InterfaceController, string InterfaceRoute,
|
||
string CombineModelField, string ListModelField, string InterfaceName, ref string txtSearchParams, ref string txtSQLString,
|
||
DataTable dtInterfaceModel, DataTable dtNewTable, JObject AdvancedConfig, string InterfaceDesc, bool CommController)
|
||
{
|
||
StringBuilder _ApiHelper = new StringBuilder();
|
||
|
||
_ApiHelper.AppendLine("using System;");
|
||
_ApiHelper.AppendLine("using System.Collections.Generic;");
|
||
_ApiHelper.AppendLine("using System.Data;");
|
||
_ApiHelper.AppendLine("using System.Linq;");
|
||
_ApiHelper.AppendLine("using SuperMap.RealEstate.ServiceModel;");
|
||
_ApiHelper.AppendLine("using Business = " + HostnameSpace + ";");
|
||
//添加附表命名空间的引用
|
||
if (!string.IsNullOrWhiteSpace(SubnameSpace) && HostnameSpace != SubnameSpace)
|
||
{
|
||
_ApiHelper.AppendLine("using " + CommonHelper.GetNameSpaceShortName(SubnameSpace) + " = " + SubnameSpace + ";");
|
||
}
|
||
|
||
if (dtNewTable != null && dtNewTable.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow drNewTable in dtNewTable.DefaultView.ToTable(true, "OWNER_NAMESPACE").Rows)
|
||
{
|
||
string WholeNameSpace = drNewTable["OWNER_NAMESPACE"].ToString();
|
||
if (WholeNameSpace != HostnameSpace && WholeNameSpace != SubnameSpace)
|
||
{
|
||
_ApiHelper.AppendLine("using " + CommonHelper.GetNameSpaceShortName(
|
||
WholeNameSpace) + " = " + WholeNameSpace + ";");
|
||
}
|
||
}
|
||
}
|
||
|
||
_ApiHelper.AppendLine("using HZQR.Common;");
|
||
_ApiHelper.AppendLine("");
|
||
_ApiHelper.AppendLine("namespace EShang.Common.GeneralMethod");
|
||
_ApiHelper.AppendLine("{");
|
||
//添加帮助类中文释义
|
||
CommonHelper.BuildCodeSummary(_ApiHelper, InterfaceController + InterfaceDesc, 1);
|
||
|
||
//接口名称
|
||
string _InterfaceRoute = InterfaceRoute.Split('/')[2].Split(',')[0];
|
||
//接口命名
|
||
if (_InterfaceRoute.ToUpper().StartsWith("GET"))
|
||
{
|
||
_InterfaceRoute = _InterfaceRoute.Substring(3, _InterfaceRoute.Length - 3);
|
||
}
|
||
|
||
// string ControllerName = CommonHelper.GetControllerName(_InterfaceRoute);
|
||
string ParamsStr = "", GroupByStr = ""; //定义入参字符串,分组字符串
|
||
string _ClassName = CombineModelField.Substring(0, CombineModelField.Length - 5); //获取方法类名称
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(1) + "public class " + _InterfaceRoute + "Helper");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(1) + "{");
|
||
|
||
#region 获取集合
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#region " + InterfaceName.Split(',')[0]);
|
||
|
||
#region 增加方法及入参字段中文注解
|
||
Dictionary<string, string> parameters = new Dictionary<string, string>();
|
||
parameters.Add("transaction", "事务管理器");
|
||
parameters.Add("TotalCount", "查询结果总数");
|
||
//获取入参字段
|
||
DataRow[] dataRows = dtInterfaceModel.Select("ShowParams = 1",
|
||
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID");
|
||
//如果主表或者附表是商品表,则采用调用商品查询的接口来生成接口
|
||
if (CommController)
|
||
{
|
||
if (dtInterfaceModel.Select("ColumnParamsRename = 'ProvinceCode' and ShowParams = 1").Length == 0)
|
||
{
|
||
ParamsStr = "string ProvinceCode";
|
||
parameters.Add("ProvinceCode", "商品表省份编码");
|
||
}
|
||
}
|
||
//添加方法入参相关代码
|
||
Business.INTERFACE.BuildHelperParams(dataRows, parameters, ref ParamsStr);
|
||
parameters.Add("PageIndex", "查询页码数");
|
||
parameters.Add("PageSize", "每页显示行数");
|
||
parameters.Add("SortStr", "排序内容");
|
||
//去掉入参字段首尾的空格和,
|
||
ParamsStr = ParamsStr.Trim().Trim(',');
|
||
//添加入参字段中文注释
|
||
CommonHelper.BuildCodeSummary(_ApiHelper, InterfaceName.Split(',')[0], 2, parameters);
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) +
|
||
"public static List<Model." + CombineModelField + "> " + _InterfaceRoute + "(");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) +
|
||
"Transaction transaction, ref int TotalCount, int? PageIndex, int? PageSize, string SortStr" +
|
||
(!string.IsNullOrWhiteSpace(ParamsStr) ? "," : ""));
|
||
if (!string.IsNullOrWhiteSpace(ParamsStr))
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + ParamsStr + ")");
|
||
}
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + string.Format(
|
||
"List<Model.{0}> {1} = new List<Model.{0}>();", CombineModelField, _InterfaceRoute));
|
||
|
||
//申明变量:非商品表的主附表类型,商品表的主附表类型、表名称
|
||
string unModelDataType = "", ModelDataType = "", DatatableName = "";
|
||
//申明入参或者返参字段数据源
|
||
DataRow[] drInterfaceModels;
|
||
#region 拼接查询条件SQL txtSearchParams.Text!!!!!!!!!!!!!
|
||
//增加分割附,目的是可以在重新生成SQL语句的时候替换这块代码
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "/***************SQL语句代码分隔符***************/");
|
||
|
||
//定义入参查询条件字符串
|
||
StringBuilder sbSearchParam = new StringBuilder();
|
||
if (HostWholetableName != "HIGHWAY_STORAGE.T_COMMODITY")
|
||
{
|
||
unModelDataType = "1";
|
||
DatatableName = HostWholetableName + " A";
|
||
}
|
||
else
|
||
{
|
||
ModelDataType = "1";
|
||
}
|
||
if (SubWholetableName != "HIGHWAY_STORAGE.T_COMMODITY")
|
||
{
|
||
unModelDataType += (unModelDataType == "" ? "" : ",") + 2;
|
||
DatatableName = SubWholetableName + " B";
|
||
}
|
||
else
|
||
{
|
||
ModelDataType += (ModelDataType == "" ? "" : ",") + 2;
|
||
}
|
||
if (unModelDataType != "")
|
||
{
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowParams = 1 and ModelDataType in (" + unModelDataType + ")",
|
||
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID");
|
||
Business.INTERFACE.BuildSearchParams(sbSearchParam, drInterfaceModels, 3);
|
||
//将内容展示在txtSearchParams文本控件中
|
||
txtSearchParams = sbSearchParam.ToString();
|
||
//将内容复制到_ApiHelper中
|
||
_ApiHelper.Append(txtSearchParams);
|
||
}
|
||
#endregion
|
||
|
||
#region 组装SQL查询语句 txtSQLString.Text!!!!!!!!!!!!!!
|
||
//增加分割附,目的是可以在重新生成SQL语句的时候替换这块代码
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "/***************SQL语句代码分隔符***************/");
|
||
|
||
//定义SQL查询语句字符串
|
||
StringBuilder sbSQLString = new StringBuilder();
|
||
|
||
//判断返参数据列表中,有没有需要将日期组合计算或合计的项
|
||
bool HasSummary = dtInterfaceModel.Select("DateFormat >= 1").Length +
|
||
dtInterfaceModel.Select("DataSummary >= 1").Length > 0;
|
||
|
||
//定义字符表相匹配的字段组成的查询条件
|
||
string RelateSQL = string.IsNullOrWhiteSpace(Subfield) ? "1 = 1" :
|
||
"A." + Hostfield + " = B." + Subfield;
|
||
|
||
if (CommController)
|
||
{
|
||
if (DatatableName != "")
|
||
{
|
||
sbSQLString.AppendLine(CommonHelper.GetTabChar(3) + "string SQLString = string.Format(@\"SELECT * FROM " +
|
||
DatatableName + " WHERE 1 = 1{0}\", WhereSQL);");
|
||
}
|
||
if (HostWholetableName != "")
|
||
{
|
||
sbSQLString.AppendLine(CommonHelper.GetTabChar(3) + "DataTable dtSource = new Business." +
|
||
CommonHelper.GetExcuteClassName(HostnameSpace) + "(transaction).ExecuteDataTable(SQLString);");
|
||
}
|
||
else
|
||
{
|
||
sbSQLString.AppendLine(CommonHelper.GetTabChar(3) + "DataTable dtSource = new " +
|
||
CommonHelper.GetNameSpaceShortName(SubnameSpace) + "." +
|
||
CommonHelper.GetExcuteClassName(SubnameSpace) + "(transaction).ExecuteDataTable(SQLString);");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//获取返参字段列表,按照返参索引、数据格式、字段内码排序显示
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowResponse = 1", "ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
|
||
|
||
//生成SQL查询语句
|
||
Business.INTERFACE.BuildSQLString(sbSQLString, drInterfaceModels, HasSummary,
|
||
HostWholetableName, SubWholetableName, RelateSQL, GroupByStr, 3, AdvancedConfig);
|
||
}
|
||
//将内容展示在txtSQLString文本控件中
|
||
txtSQLString = sbSQLString.ToString();
|
||
//将内容复制到_ApiHelper中
|
||
_ApiHelper.Append(txtSQLString);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "/***************SQL语句代码分隔符***************/");
|
||
#endregion
|
||
|
||
if (CommController)
|
||
{
|
||
_ApiHelper.AppendLine();
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "Model.SearchModel<Model.COMMODITYModel> " +
|
||
"searchModel = new Model.SearchModel<Model.COMMODITYModel>");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "SearchParameter = new Model.COMMODITYModel");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "{");
|
||
|
||
if (ModelDataType != "")
|
||
{
|
||
foreach (DataRow drSearch in dtInterfaceModel.Select("ShowParams = 1 and ModelDataType in (" + ModelDataType + ")",
|
||
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID"))
|
||
{
|
||
if (drSearch["DATE_FIELD"].TryParseToInt() == 1)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(drSearch["SEARCH_FIELD"].ToString()))
|
||
{
|
||
//有多查询条件字段的日期
|
||
string _SEARCH_FIELD = drSearch["SEARCH_FIELD"].ToString();
|
||
|
||
for (int FieldCount = 0; FieldCount < _SEARCH_FIELD.Split(',').Length; FieldCount++)
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + _SEARCH_FIELD.Split(',')[FieldCount] +
|
||
" = " + _SEARCH_FIELD.Split(',')[FieldCount] + ", //查询" + drSearch["INTERFACEMODEL_COMMENT"]);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//普通日期字段
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + drSearch["INTERFACEMODEL_NAME"] +
|
||
" = " + drSearch["ColumnParamsRename"] + ", //查询" + drSearch["INTERFACEMODEL_COMMENT"]);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(drSearch["SEARCH_FIELD"].ToString()))
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + drSearch["SEARCH_FIELD"] +
|
||
" = " + drSearch["ColumnParamsRename"] + ", //查询" + drSearch["INTERFACEMODEL_COMMENT"]);
|
||
}
|
||
else
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + drSearch["INTERFACEMODEL_NAME"] +
|
||
" = " + drSearch["ColumnParamsRename"] + ", //查询" + drSearch["INTERFACEMODEL_COMMENT"]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "},");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "PageIndex = 1,");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "PageSize = 999999,");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "};");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "List<Model.COMMODITYModel> COMMODITYList = COMMODITYHelper.GetCOMMODITYList(");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "transaction, ref TotalCount, searchModel, ProvinceCode, \"\", \"\");");
|
||
_ApiHelper.AppendLine();
|
||
if (!string.IsNullOrWhiteSpace(Subfield) && unModelDataType != "")
|
||
{
|
||
#region 组装linq
|
||
//使用linq将商品列表和另一个数据源的表进行组装,返回指定的字段内容
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "var linqList = from FData in COMMODITYList");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(7) + "from SData in dtSource.AsEnumerable().Where(");
|
||
//查询另一个表字段的数据源
|
||
DataTable dtUnComm = dtInterfaceModel.Select("ModelDataType in (" + unModelDataType + ")").CopyToDataTable();
|
||
//匹配两个表的关联字段
|
||
string hostFieldType = CommonHelper.GetFieldTypeName(Hostfield,
|
||
dtInterfaceModel.Select("ModelDataType in (" + ModelDataType + ")").CopyToDataTable()),
|
||
subFieldType = CommonHelper.GetFieldTypeName(Subfield,
|
||
dtInterfaceModel.Select("ModelDataType in (" + unModelDataType + ")").CopyToDataTable());
|
||
|
||
//获取各自要加载的数据类型
|
||
string hostTypeStr = "", subTypeStr = "";
|
||
switch (hostFieldType)
|
||
{
|
||
case "decimal?":
|
||
switch (subFieldType)
|
||
{
|
||
case "decimal?":
|
||
subTypeStr = "";
|
||
break;
|
||
default:
|
||
subTypeStr = ".TryParseToDecimal()";
|
||
break;
|
||
}
|
||
break;
|
||
case "DateTime?":
|
||
switch (subFieldType)
|
||
{
|
||
case "DateTime?":
|
||
subTypeStr = "";
|
||
break;
|
||
default:
|
||
subTypeStr = ".TryParseToDateTime()";
|
||
break;
|
||
}
|
||
break;
|
||
case "bool?":
|
||
switch (subFieldType)
|
||
{
|
||
case "bool?":
|
||
subTypeStr = "";
|
||
break;
|
||
default:
|
||
subTypeStr = ".TryParseToBool()";
|
||
break;
|
||
}
|
||
break;
|
||
default:
|
||
switch (subFieldType)
|
||
{
|
||
case "decimal?":
|
||
hostTypeStr = ".TryParseToDecimal()";
|
||
break;
|
||
case "DateTime?":
|
||
hostTypeStr = ".TryParseToDateTime()";
|
||
break;
|
||
case "bool?":
|
||
hostTypeStr = ".TryParseToBool()";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(8) + "o => FData." + Hostfield + hostTypeStr +
|
||
" == o.Field<" + subFieldType + ">(\"" + Subfield + "\")" + subTypeStr + ")");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(7) + "select new");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(7) + "{");
|
||
//遍历商品表的返参字段,加载到返回的linq数据集中
|
||
foreach (DataRow drField in dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType in (" + ModelDataType + ")"))
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(8) + drField["INTERFACEMODEL_NAME"] +
|
||
" = FData." + drField["INTERFACEMODEL_NAME"] + ",");
|
||
}
|
||
//遍历另一个表的返参字段,加载到返回的linq数据集中
|
||
foreach (DataRow drField in dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType in (" + unModelDataType + ")"))
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(8) + drField["INTERFACEMODEL_NAME"] +
|
||
" = SData?[\"" + drField["INTERFACEMODEL_NAME"] + "\"],");
|
||
}
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(7) + "};");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "DataTable dt" + _ClassName +
|
||
" = DataTableHelper.ListToDataTable(linqList.ToList());");
|
||
}
|
||
else
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "DataTable dt" + _ClassName +
|
||
" = DataTableHelper.ListToDataTable(COMMODITYList);");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "DataTable dt" + _ClassName + " = new Business." +
|
||
CommonHelper.GetExcuteClassName(HostnameSpace) + "(transaction).ExecuteDataTable(SQLString);");
|
||
}
|
||
|
||
#region 增加可编辑的筛选、排序代码【有需要可以人工修改】
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//增加组合查询条件");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//if (!string.IsNullOrWhiteSpace(SearchKeyName))");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) +
|
||
"foreach (string KeyName in SearchKeyName.Split(','))");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(2) +
|
||
"RowFilterSQL += (RowFilterSQL == \"\" ? \"\" : \" or \") +");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(3) +
|
||
"KeyName + \" like '%\" + SearchKeyValue + \"%'\";");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//if (RowFilterSQL != \"\")");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) +
|
||
"dt" + _ClassName + ".DefaultView.RowFilter = RowFilterSQL;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//排序内容:");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "dt" + _ClassName + ".DefaultView.Sort = SortStr;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "dt" + _ClassName + " = dt" + _ClassName + ".DefaultView.ToTable();");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//获取查询结果总记录条数");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "TotalCount = dt" + _ClassName + ".Rows.Count;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//根据传入的页码和每页显示条数返回结果");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "if (PageSize != null && PageIndex != null)");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "dt" + _ClassName +
|
||
" = CommonHelper.GetDataTableWithPageSize(dt" + _ClassName + ", PageSize.Value, PageIndex.Value);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "");
|
||
|
||
#region 存储数据到model对象中
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "int curRowNum = 1;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "foreach (DataRow dr" + _ClassName + " in dt" + _ClassName + ".Rows)");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "Model." + CombineModelField + " " +
|
||
_ClassName.ToLower() + "Model = new Model." + CombineModelField + "();");
|
||
//判断返参字段中是否包含序号,没有就添加进去
|
||
if (dtInterfaceModel.Select("ColumnResponseRename = 'curIndex' and ShowResponse = 1").Length == 0)
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "//绑定序号");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + _ClassName.ToLower() + "Model.curIndex = curRowNum;");
|
||
}
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "//绑定用户表数据对象");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "BindDataRowToModel(dr" + _ClassName + ", " + _ClassName.ToLower() + "Model);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + _InterfaceRoute + ".Add(" + _ClassName.ToLower() + "Model);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "curRowNum++;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "}");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "return " + _InterfaceRoute + ";");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
|
||
#region 定义数据绑定到model的方法
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#region 绑定model");
|
||
|
||
//添加方法中文释义
|
||
parameters.Clear();
|
||
parameters.Add("dr" + _ClassName, "主表datarow数据源");
|
||
parameters.Add(_ClassName.ToLower() + "Model", "主表model对象");
|
||
CommonHelper.BuildCodeSummary(_ApiHelper, "绑定model", 2, parameters);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "public static void BindDataRowToModel(DataRow dr" +
|
||
_ClassName + ", Model." + CombineModelField + " " + _ClassName.ToLower() + "Model)");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
//获取字段数据源,并生成代码
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType in (1,2)",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
|
||
Business.INTERFACE.SetObjectToModel(_ApiHelper, drInterfaceModels,
|
||
_ClassName.ToLower() + "Model", "dr" + _ClassName, 3, AdvancedConfig);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#endregion");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#endregion");
|
||
#endregion
|
||
|
||
//如果是关联接口,则执行下方代码,生成两表的子父级列表
|
||
if (InterfaceRoute.Split(',').Length > 1)
|
||
{
|
||
_InterfaceRoute = InterfaceRoute.Split(',')[1].Split('/')[2];
|
||
if (_InterfaceRoute.ToUpper().StartsWith("GET"))
|
||
_InterfaceRoute = _InterfaceRoute.Substring(3, _InterfaceRoute.Length - 3);
|
||
_ClassName = ListModelField.Substring(0, ListModelField.Length - 5);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
|
||
#region 获取列表
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#region " + InterfaceName.Split(',')[1]);
|
||
|
||
#region 增加方法及入参字段中文注解
|
||
ParamsStr = "";
|
||
parameters.Clear();
|
||
parameters.Add("transaction", "事务管理器");
|
||
parameters.Add("TotalCount", "查询结果总数");
|
||
//获取列表页面入参数据源
|
||
dataRows = dtInterfaceModel.Select("ShowParams = 1",
|
||
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID");
|
||
//添加方法入参相关代码
|
||
Business.INTERFACE.BuildHelperParams(dataRows, parameters, ref ParamsStr);
|
||
parameters.Add("PageIndex", "查询页码数");
|
||
parameters.Add("PageSize", "每页显示行数");
|
||
parameters.Add("SortStr", "排序内容");
|
||
//去掉入参字段首尾的空格和,
|
||
ParamsStr = ParamsStr.Trim().Trim(',');
|
||
//添加入参字段中文注释
|
||
CommonHelper.BuildCodeSummary(_ApiHelper, InterfaceName.Split(',')[1], 2, parameters);
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) +
|
||
"public static List<Model." + ListModelField + "> " + _InterfaceRoute + "(");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) +
|
||
"Transaction transaction, ref int TotalCount, int? PageIndex, int? PageSize, string SortStr" +
|
||
(!string.IsNullOrWhiteSpace(ParamsStr) ? "," : ""));
|
||
if (!string.IsNullOrWhiteSpace(ParamsStr))
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + ParamsStr + ")");
|
||
}
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
|
||
//申明方法返回的结果
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + string.Format(
|
||
"List<Model.{0}> {1} = new List<Model.{0}>();", ListModelField, _InterfaceRoute));
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "/***************SQL语句代码分隔符***************/");
|
||
|
||
//拼接查询条件SQL
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowParams = 1 and ModelDataType in (1,2)",
|
||
"ColumnParamsIndex,ModelDataType,INTERFACEMODEL_INDEX,INTERFACEMODEL_ID");
|
||
Business.INTERFACE.BuildSearchParams(_ApiHelper, drInterfaceModels, 3);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "/***************SQL语句代码分隔符***************/");
|
||
|
||
//组装SQL查询语句
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowResponse = 1", "ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
|
||
Business.INTERFACE.BuildSQLString(_ApiHelper, drInterfaceModels, HasSummary,
|
||
HostWholetableName, SubWholetableName, RelateSQL, GroupByStr, 3);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "/***************SQL语句代码分隔符***************/");
|
||
|
||
//获取查询结果的代码
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "DataTable dt" + _ClassName + " = new Business." +
|
||
HostClassName + "(transaction).ExecuteDataTable(SQLString);");
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//获取查询结果总记录条数");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "TotalCount = dt" + _ClassName + ".Rows.Count;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//根据传入的页码和每页显示条数返回结果");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "if (PageSize != null && PageIndex != null)");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "dt" + _ClassName + " = CommonHelper.GetDataTableWithPageSize(" +
|
||
"dt" + _ClassName + ", PageSize.Value, PageIndex.Value);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "}");
|
||
|
||
#region 增加可编辑的筛选、排序代码【有需要可以人工修改】
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//增加组合查询条件");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//if (!string.IsNullOrWhiteSpace(SearchKeyName))");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" +
|
||
CommonHelper.GetTabChar(1) + "foreach (string KeyName in SearchKeyName.Split(','))");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" +
|
||
CommonHelper.GetTabChar(2) + "RowFilterSQL += (RowFilterSQL == \"\" ? \"\" : \" or \") +");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" +
|
||
CommonHelper.GetTabChar(3) + "KeyName + \" like '%\" + SearchKeyValue + \"%'\";");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//if (RowFilterSQL != \"\")");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//" + CommonHelper.GetTabChar(1) +
|
||
"dt" + _ClassName + ".DefaultView.RowFilter = RowFilterSQL;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//排序:");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "dt" + _ClassName + ".DefaultView.Sort = SortStr;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "dt" + _ClassName + " = dt" + _ClassName + ".DefaultView.ToTable();");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "");
|
||
|
||
#region 遍历主表字段,生成结果到主表集合中
|
||
int CurLineNum = 0;
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "int curRowNum = 1;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "foreach (DataRow dr" +
|
||
_ClassName + " in dt" + _ClassName + ".DefaultView.ToTable(true,");
|
||
foreach (DataRow dataRow in dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType = 1",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID"))
|
||
{
|
||
//每5个字段放一行显示
|
||
_ApiHelper.Append(CurLineNum == 0 ? CommonHelper.GetTabChar(4) :
|
||
CurLineNum % 5 == 0 ? ",\r\n" + CommonHelper.GetTabChar(4) : ", ");
|
||
_ApiHelper.Append("\"" + dataRow["ColumnResponseRename"] + "\"");
|
||
CurLineNum++;
|
||
}
|
||
_ApiHelper.Append(").Rows)\r\n");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "{");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "Model." + ListModelField + " " +
|
||
_ClassName.ToLower() + "Model = new Model." + ListModelField + "();");
|
||
//判断返参字段中是否包含序号,没有就添加进去
|
||
if (dtInterfaceModel.Select("ColumnResponseRename = 'curIndex' and ShowResponse = 1").Length == 0)
|
||
{
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "//绑定序号");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + _ClassName.ToLower() + "Model.curIndex = curRowNum;");
|
||
}
|
||
|
||
//绑定主表数据到model
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "//绑定" + ListModelField);
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "BindDataRowToModel(dr" + _ClassName + ", " + _ClassName.ToLower() + "Model);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "//初始化附表数据集合");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + _ClassName.ToLower() + "Model." + SubclassName +
|
||
"SubList = new List<Model." + SubclassName + "SubModel>();");
|
||
|
||
#region 绑定附表数据到附表数据集合中
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "foreach (DataRow dr" + SubclassName + " in dt" + _ClassName + ".Select(");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + "\"" + Subfield + " = '\" + " +
|
||
_ClassName.ToLower() + "Model." + Hostfield + " + \"'\"))");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "{");
|
||
//绑定附表数据到model
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + "Model." + SubclassName + "SubModel " +
|
||
SubclassName.ToLower() + "SubModel = new Model." + SubclassName + "SubModel();");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + "//绑定附表数据对象");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + "BindDataRowToModel(dr" + SubclassName + ", " + SubclassName.ToLower() + "SubModel);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(5) + _ClassName.ToLower() + "Model." +
|
||
SubclassName + "SubList.Add(" + SubclassName.ToLower() + "SubModel);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "}");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + _InterfaceRoute + ".Add(" + _ClassName.ToLower() + "Model);");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(4) + "curRowNum++;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "}");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "//获取查询结果总记录条数");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "TotalCount = " + _InterfaceRoute + ".Count;");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "");
|
||
//返回结果
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(3) + "return " + _InterfaceRoute + ";");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#region 绑定" + ListModelField);
|
||
|
||
#region 定义绑定数据到列表model的方法
|
||
//添加方法中文释义和字段注解
|
||
parameters.Clear();
|
||
parameters.Add("dr" + _ClassName, "主表datarow数据源");
|
||
parameters.Add(_ClassName.ToLower() + "Model", "主表model对象");
|
||
CommonHelper.BuildCodeSummary(_ApiHelper, "绑定" + ListModelField, 2, parameters);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "public static void BindDataRowToModel(DataRow dr" +
|
||
_ClassName + ", Model." + ListModelField + " " + _ClassName.ToLower() + "Model)");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
|
||
//获取主表字段数据源,并生成代码
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType = 1",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
|
||
Business.INTERFACE.SetObjectToModel(_ApiHelper, drInterfaceModels,
|
||
_ClassName.ToLower() + "Model", "dr" + _ClassName, 3, AdvancedConfig);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
|
||
#region 定义附表数据绑定到附表subModel的方法
|
||
//添加方法中文释义和字段注解
|
||
parameters.Clear();
|
||
parameters.Add("dr" + SubclassName + "Sub", "附表datarow数据源");
|
||
parameters.Add(SubclassName.ToLower() + "subModel", "附表model对象");
|
||
CommonHelper.BuildCodeSummary(_ApiHelper, "绑定附表数据对象", 2, parameters);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "public static void BindDataRowToModel(DataRow dr" +
|
||
SubclassName + "Sub, Model." + SubclassName + "SubModel " + SubclassName.ToLower() + "subModel)");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "{");
|
||
|
||
//获取附表字段数据源,并生成代码
|
||
drInterfaceModels = dtInterfaceModel.Select("ShowResponse = 1 and ModelDataType = 2",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID");
|
||
Business.INTERFACE.SetObjectToModel(_ApiHelper, drInterfaceModels,
|
||
SubclassName.ToLower() + "subModel", "dr" + SubclassName + "Sub", 3, AdvancedConfig);
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "}");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#endregion");
|
||
#endregion
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(2) + "#endregion");
|
||
#endregion
|
||
}
|
||
|
||
_ApiHelper.AppendLine(CommonHelper.GetTabChar(1) + "}");
|
||
_ApiHelper.AppendLine("}");
|
||
|
||
return _ApiHelper;
|
||
}
|
||
#endregion
|
||
|
||
#region WebApi接口数据对象类
|
||
/// <summary>
|
||
/// 生成WebApi接口数据对象类代码(*Model.cs)
|
||
/// </summary>
|
||
/// <param name="InterfaceName">接口对象中文名称,自定义生成</param>
|
||
/// <param name="CombineModelField">集合对象</param>
|
||
/// <param name="ListModelField">列表对象</param>
|
||
/// <param name="SubtableName">附表中文名字</param>
|
||
/// <param name="SubclassName">附表方法类名称</param>
|
||
/// <param name="_DataTable">接口字段数据源,包含入参对象和返参对象中的字段</param>
|
||
/// <param name="AdvancedConfig">接口中的合计项字段、按照日/月/年统计的时间字段</param>
|
||
/// <returns></returns>
|
||
public static StringBuilder GetDataModel(string InterfaceName, string CombineModelField, string ListModelField, string SubtableName,
|
||
string SubclassName, DataTable _DataTable, JObject AdvancedConfig = null)
|
||
{
|
||
StringBuilder _ApiModel = new StringBuilder();
|
||
_ApiModel.AppendLine("using System;");
|
||
_ApiModel.AppendLine("using System.Collections.Generic;");
|
||
_ApiModel.AppendLine("using System.Runtime.Serialization;");
|
||
_ApiModel.AppendLine("");
|
||
_ApiModel.AppendLine("namespace EShang.Common.Model");
|
||
_ApiModel.AppendLine("{");
|
||
|
||
#region 添加集合相关数据对象
|
||
///添加集合数据对象的中文释义
|
||
CommonHelper.BuildCodeSummary(_ApiModel, InterfaceName.Split(',')[0] + "相关类", 1);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "[DataContract]");
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "public class " + CombineModelField);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "{");
|
||
|
||
//判断返参字段中是否包含序号,没有就添加进去
|
||
if (_DataTable.Select("ColumnResponseRename = 'curIndex' and ShowResponse = 1").Length == 0)
|
||
{
|
||
Business.INTERFACE.BuildModels(_ApiModel, "curIndex", "int?", "序号", 2);
|
||
_ApiModel.AppendLine("");
|
||
}
|
||
|
||
//遍历返参字段,加入到数据对象中
|
||
foreach (DataRow _DataRow in _DataTable.Select("ShowResponse = 1",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID"))
|
||
{
|
||
Business.INTERFACE.BuildModels(_ApiModel, _DataRow, 2, AdvancedConfig);
|
||
}
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "}");
|
||
#endregion
|
||
|
||
//如果有第二个接口(也就是主附表列表接口,根据自动生成的中文名判断???????????),则添加相应的参数对象
|
||
if (InterfaceName.Split(',').Length > 1)
|
||
{
|
||
_ApiModel.AppendLine("");
|
||
|
||
#region 添加列表相关数据对象
|
||
|
||
#region 创建主表SubModel
|
||
//添加主表SubModel的中文释义 ListModelField SubclassName
|
||
CommonHelper.BuildCodeSummary(_ApiModel, InterfaceName.Split(',')[1] + "相关类", 1);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "[DataContract]");
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "public class " + ListModelField);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "{");
|
||
//判断返参字段中是否包含序号,没有就添加进去
|
||
if (_DataTable.Select("ColumnResponseRename = 'curIndex' and ShowResponse = 1").Length == 0)
|
||
{
|
||
Business.INTERFACE.BuildModels(_ApiModel, "curIndex", "int?", "序号", 2);
|
||
_ApiModel.AppendLine("");
|
||
}
|
||
|
||
//遍历返参主表+自定义字段,加入到数据对象中
|
||
foreach (DataRow _DataRow in _DataTable.Select("ShowResponse = 1 and ModelDataType in (1,3)",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID"))
|
||
{
|
||
Business.INTERFACE.BuildModels(_ApiModel, _DataRow, 2, AdvancedConfig);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
}
|
||
//添加附表SubModel列表的中文释义
|
||
CommonHelper.BuildCodeSummary(_ApiModel, SubtableName + "集合", 2);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(2) + "[DataMember]");
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(2) + "public List<" +
|
||
SubclassName + "SubModel> " + SubclassName + "SubList { get; set; }");
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "}");
|
||
#endregion
|
||
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "");
|
||
|
||
#region 创建附表SubModel
|
||
//添加附表SubModel的中文释义
|
||
CommonHelper.BuildCodeSummary(_ApiModel, InterfaceName.Split(',')[1] + "附表相关类", 1);
|
||
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "[DataContract]");
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "public class " + SubclassName + "SubModel");
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "{");
|
||
//遍历返参附表字段,加入到数据对象中
|
||
foreach (DataRow _DataRow in _DataTable.Select("ShowResponse = 1 and ModelDataType = 2",
|
||
"ColumnResponseIndex,ModelDataType,INTERFACEMODEL_ID"))
|
||
{
|
||
Business.INTERFACE.BuildModels(_ApiModel, _DataRow, 2, AdvancedConfig);
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(2) + "");
|
||
}
|
||
_ApiModel.AppendLine(CommonHelper.GetTabChar(1) + "}");
|
||
#endregion
|
||
|
||
#endregion
|
||
}
|
||
|
||
_ApiModel.AppendLine("}");
|
||
|
||
return _ApiModel;
|
||
}
|
||
#endregion
|
||
}
|
||
}
|