SingleTableController.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using LeaRun.Application.Busines.AuthorizeManage;
  2. using LeaRun.Application.Busines.SystemManage;
  3. using LeaRun.Application.Code;
  4. using LeaRun.Application.Entity.AuthorizeManage;
  5. using LeaRun.Application.Entity.SystemManage;
  6. using LeaRun.CodeGenerator;
  7. using LeaRun.CodeGenerator.Model;
  8. using LeaRun.CodeGenerator.Template;
  9. using LeaRun.Util;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Web;
  16. using System.Web.Mvc;
  17. namespace LeaRun.Application.Web.Areas.GeneratorManage.Controllers
  18. {
  19. /// <summary>
  20. /// 版 本 6.1
  21. /// Copyright (c) 2013-2016 上海力软信息技术有限公司
  22. /// 创建人:佘赐雄
  23. /// 日 期:2016.2.2 10:29
  24. /// 描 述:生成器单表
  25. /// </summary>
  26. public class SingleTableController : MvcControllerBase
  27. {
  28. private ModuleBLL moduleBLL = new ModuleBLL();
  29. #region 视图功能
  30. /// <summary>
  31. /// 代码生成器
  32. /// </summary>
  33. /// <returns></returns>
  34. [HttpGet]
  35. public ActionResult CodeBuilder()
  36. {
  37. string OutputDirectory = Server.MapPath("~/Web.config"); ;
  38. for (int i = 0; i < 2; i++)
  39. OutputDirectory = OutputDirectory.Substring(0, OutputDirectory.LastIndexOf('\\'));
  40. ViewBag.OutputDirectory = OutputDirectory;
  41. ViewBag.UserName = OperatorProvider.Provider.Current().UserName;
  42. return View();
  43. }
  44. /// <summary>
  45. /// 编辑表格
  46. /// </summary>
  47. /// <returns></returns>
  48. [HttpGet]
  49. public ActionResult EditGrid()
  50. {
  51. return View();
  52. }
  53. /// <summary>
  54. /// 编辑控件
  55. /// </summary>
  56. /// <returns></returns>
  57. [HttpGet]
  58. public ActionResult EditControl()
  59. {
  60. return View();
  61. }
  62. #endregion
  63. #region 提交数据
  64. /// <summary>
  65. /// 查看代码
  66. /// </summary>
  67. /// <param name="baseInfoJson">基本信息配置Json</param>
  68. /// <param name="gridInfoJson">表格信息Json</param>
  69. /// <param name="gridColumnJson">表格字段信息Json</param>
  70. /// <param name="formInfoJson">表单信息Json</param>
  71. /// <param name="formFieldJson">表单字段信息Json</param>
  72. /// <returns></returns>
  73. [HttpPost]
  74. [AjaxOnly]
  75. public ActionResult LookCode(string baseInfoJson, string gridInfoJson, string gridColumnJson, string formInfoJson, string formFieldJson)
  76. {
  77. SingleTable default_Template = new SingleTable();
  78. BaseConfigModel baseConfigModel = baseInfoJson.ToObject<BaseConfigModel>();
  79. baseConfigModel.gridModel = gridInfoJson.ToObject<GridModel>();
  80. baseConfigModel.gridColumnModel = gridColumnJson.ToList<GridColumnModel>();
  81. baseConfigModel.formModel = formInfoJson.ToObject<FormModel>();
  82. baseConfigModel.formFieldModel = formFieldJson.ToList<FormFieldModel>();
  83. var tableFiled = new DataBaseTableBLL().GetTableFiledList(baseConfigModel.DataBaseLinkId, baseConfigModel.DataBaseTableName);
  84. string entitybuilder = default_Template.EntityBuilder(baseConfigModel, DataHelper.ListToDataTable<DataBaseTableFieldEntity>(tableFiled.ToList()));
  85. string entitymapbuilder = default_Template.EntityMapBuilder(baseConfigModel);
  86. string servicebuilder = default_Template.ServiceBuilder(baseConfigModel);
  87. string iservicebuilder = default_Template.IServiceBuilder(baseConfigModel);
  88. string businesbuilder = default_Template.BusinesBuilder(baseConfigModel);
  89. string controllerbuilder = default_Template.ControllerBuilder(baseConfigModel);
  90. string indexbuilder = default_Template.IndexBuilder(baseConfigModel);
  91. string formbuilder = default_Template.FormBuilder(baseConfigModel);
  92. var jsonData = new
  93. {
  94. entityCode = entitybuilder,
  95. entitymapCode = entitymapbuilder,
  96. serviceCode = servicebuilder,
  97. iserviceCode = iservicebuilder,
  98. businesCode = businesbuilder,
  99. controllerCode = controllerbuilder,
  100. indexCode = indexbuilder,
  101. formCode = formbuilder
  102. };
  103. return ToJsonResult(jsonData);
  104. }
  105. /// <summary>
  106. /// 创建代码(自动写入VS里面目录)
  107. /// </summary>
  108. /// <param name="baseInfoJson">基本信息配置Json</param>
  109. /// <param name="strCode">生成代码内容</param>
  110. /// <returns></returns>
  111. [HttpPost]
  112. [AjaxOnly]
  113. public ActionResult CreateCode(string baseInfoJson, string strCode)
  114. {
  115. BaseConfigModel baseConfigModel = baseInfoJson.ToObject<BaseConfigModel>();
  116. CreateCodeFile.CreateExecution(baseConfigModel, Server.UrlDecode(strCode));
  117. return Success("恭喜您,创建成功!");
  118. }
  119. /// <summary>
  120. /// 发布功能(自动创建导航菜单)
  121. /// </summary>
  122. /// <param name="baseInfoJson">基本信息配置Json</param>
  123. /// <param name="moduleEntity">功能实体</param>
  124. /// <param name="moduleButtonList">按钮实体列表</param>
  125. /// <param name="moduleColumnList">视图实体列表</param>
  126. /// <returns></returns>
  127. [HttpPost]
  128. [AjaxOnly]
  129. public ActionResult PublishModule(string baseInfoJson, ModuleEntity moduleEntity, string moduleButtonListJson, string moduleColumnListJson)
  130. {
  131. BaseConfigModel baseConfigModel = baseInfoJson.ToObject<BaseConfigModel>();
  132. var urlAddress = "/" + baseConfigModel.OutputAreas + "/" + CommonHelper.DelLastLength(baseConfigModel.ControllerName, 10) + "/" + baseConfigModel.IndexPageName;
  133. moduleEntity.SortCode = moduleBLL.GetSortCode();
  134. moduleEntity.IsMenu = 1;
  135. moduleEntity.EnabledMark = 1;
  136. moduleEntity.Target = "iframe";
  137. moduleEntity.UrlAddress = urlAddress;
  138. moduleBLL.SaveForm("", moduleEntity, moduleButtonListJson, moduleColumnListJson);
  139. return Success("发布成功!");
  140. }
  141. #endregion
  142. #region 处理数据
  143. /// <summary>
  144. /// 加载模板数据
  145. /// </summary>
  146. /// <param name="templateId">模板Id</param>
  147. /// <returns></returns>
  148. [HttpGet]
  149. [AjaxOnly]
  150. public ActionResult GetTemplateData(string templateId)
  151. {
  152. string filepath = Server.MapPath("~/Areas/SystemManage/Views/CodeGenerator/template/" + templateId + ".txt");
  153. FileStream fs = new System.IO.FileStream(filepath, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);
  154. StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"));
  155. return Content(sr.ReadToEnd().ToString());
  156. }
  157. #endregion
  158. }
  159. }