MultiTableController.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using LeaRun.Application.Busines.AuthorizeManage;
  2. using LeaRun.Application.Code;
  3. using LeaRun.Application.Entity.AuthorizeManage;
  4. using LeaRun.CodeGenerator;
  5. using LeaRun.CodeGenerator.Model;
  6. using LeaRun.CodeGenerator.Template;
  7. using LeaRun.Util;
  8. using System.Web.Mvc;
  9. namespace LeaRun.Application.Web.Areas.GeneratorManage.Controllers
  10. {
  11. /// <summary>
  12. /// 版 本 6.3.1
  13. /// Copyright (c) 2013-2016 上海力软信息技术有限公司
  14. /// 创建人:佘赐雄
  15. /// 日 期:2016.2.13 14:29
  16. /// 描 述:生成器多表
  17. /// </summary>
  18. public class MultiTableController : MvcControllerBase
  19. {
  20. private ModuleBLL moduleBLL = new ModuleBLL();
  21. #region 视图功能
  22. /// <summary>
  23. /// 代码生成器
  24. /// </summary>
  25. /// <returns></returns>
  26. [HttpGet]
  27. public ActionResult CodeBuilder()
  28. {
  29. string OutputDirectory = Server.MapPath("~/Web.config"); ;
  30. for (int i = 0; i < 2; i++)
  31. OutputDirectory = OutputDirectory.Substring(0, OutputDirectory.LastIndexOf('\\'));
  32. ViewBag.OutputDirectory = OutputDirectory;
  33. ViewBag.UserName = OperatorProvider.Provider.Current().UserName;
  34. return View();
  35. }
  36. /// <summary>
  37. /// 编辑控件
  38. /// </summary>
  39. /// <returns></returns>
  40. [HttpGet]
  41. public ActionResult EditControl()
  42. {
  43. return View();
  44. }
  45. #endregion
  46. #region 提交数据
  47. /// <summary>
  48. /// 查看代码
  49. /// </summary>
  50. /// <param name="baseInfoJson">基本信息配置</param>
  51. /// <param name="gridPrimaryFieldJson"></param>
  52. /// <param name="gridDetailsFieldJson"></param>
  53. /// <param name="formPrimaryFieldJson"></param>
  54. /// <param name="formDetailsFieldJson"></param>
  55. /// <returns></returns>
  56. [HttpPost]
  57. [AjaxOnly]
  58. public ActionResult LookCode(string baseInfoJson, string gridPrimaryFieldJson, string gridDetailsFieldJson, string formPrimaryFieldJson, string formDetailsFieldJson)
  59. {
  60. MultiTableConfigModel multiTableConfigModel = baseInfoJson.ToObject<MultiTableConfigModel>();
  61. var gridPrimary = gridPrimaryFieldJson.ToList<GridColumnModel>();
  62. var gridDetails = gridDetailsFieldJson.ToList<GridColumnModel>();
  63. var formPrimary = formPrimaryFieldJson.ToList<GridColumnModel>();
  64. var formDetails = formDetailsFieldJson.ToList<GridColumnModel>();
  65. MultiTable multiTable = new MultiTable();
  66. string entitybuilder = multiTable.EntityBuilder(multiTableConfigModel, gridPrimary, false);//主表实体
  67. string childEntitybuilder = multiTable.EntityBuilder(multiTableConfigModel, gridDetails, true);//子表实体
  68. string entitymapbuilder = multiTable.EntityMapBuilder(multiTableConfigModel, false);//实体映射类
  69. string childEntitymapbuilder = multiTable.EntityMapBuilder(multiTableConfigModel, true);
  70. //服务类
  71. string servicebuilder = multiTable.ServiceBuilder(multiTableConfigModel, gridPrimary);
  72. //服务接口类
  73. string iservicebuilder = multiTable.IServiceBuilder(multiTableConfigModel);
  74. //业务类
  75. string businesbuilder = multiTable.BusinesBuilder(multiTableConfigModel);
  76. //控制器
  77. string controllerbuilder = multiTable.ControllerBuilder(multiTableConfigModel);
  78. //主页面
  79. string indexbuilder = multiTable.IndexBuilder(multiTableConfigModel, gridPrimary, gridDetails);
  80. //表单页面
  81. string formbuilder = multiTable.FormBuilder(multiTableConfigModel, formPrimary, formDetails);
  82. var jsonData = new
  83. {
  84. entityCode = entitybuilder,
  85. entityChildCode = childEntitybuilder,
  86. entitymapCode = entitymapbuilder,
  87. entitymapChildCode = childEntitymapbuilder,
  88. serviceCode = servicebuilder,
  89. iserviceCode = iservicebuilder,
  90. businesCode = businesbuilder,
  91. controllerCode = controllerbuilder,
  92. indexCode = indexbuilder,
  93. formCode = formbuilder
  94. };
  95. return ToJsonResult(jsonData);
  96. }
  97. /// <summary>
  98. /// 创建代码(自动写入VS里面目录)
  99. /// </summary>
  100. /// <param name="baseInfoJson">基本信息配置Json</param>
  101. /// <param name="strCode">生成代码内容</param>
  102. /// <returns></returns>
  103. [HttpPost]
  104. [AjaxOnly]
  105. public ActionResult CreateCode(string baseInfoJson, string strCode)
  106. {
  107. MultiTableConfigModel baseConfigModel = baseInfoJson.ToObject<MultiTableConfigModel>();
  108. CreateCodeFile.CreateExecution(baseConfigModel, Server.UrlDecode(strCode));
  109. return Success("恭喜您,创建成功!");
  110. }
  111. /// <summary>
  112. /// 发布功能(自动创建导航菜单)
  113. /// </summary>
  114. /// <param name="baseInfoJson">基本信息配置Json</param>
  115. /// <param name="moduleEntity">功能实体</param>
  116. /// <param name="moduleButtonListJson">按钮实体列表</param>
  117. /// <param name="moduleColumnListJson">视图实体列表</param>
  118. /// <returns></returns>
  119. [HttpPost]
  120. [AjaxOnly]
  121. public ActionResult PublishModule(string baseInfoJson, ModuleEntity moduleEntity, string moduleButtonListJson, string moduleColumnListJson)
  122. {
  123. MultiTableConfigModel baseConfigModel = baseInfoJson.ToObject<MultiTableConfigModel>();
  124. var urlAddress = "/" + baseConfigModel.OutputAreas + "/" + CommonHelper.DelLastLength(baseConfigModel.ControllerName, 10) + "/" + baseConfigModel.IndexPageName;
  125. moduleEntity.SortCode = moduleBLL.GetSortCode();
  126. moduleEntity.IsMenu = 1;
  127. moduleEntity.EnabledMark = 1;
  128. moduleEntity.Target = "iframe";
  129. moduleEntity.UrlAddress = urlAddress;
  130. moduleBLL.SaveForm("", moduleEntity, moduleButtonListJson, moduleColumnListJson);
  131. return Success("发布成功!");
  132. }
  133. #endregion
  134. #region 处理数据
  135. #endregion
  136. }
  137. }