You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1821 lines
85 KiB

  1. using Learun.Application.AppMagager;
  2. using Learun.Application.Base.CodeGeneratorModule;
  3. using Learun.Application.Base.SystemModule;
  4. using Learun.Application.BaseModule.CodeGeneratorModule;
  5. using Learun.Util;
  6. using System.Collections.Generic;
  7. using System.Configuration;
  8. using System.Web.Mvc;
  9. namespace Learun.Application.Web.Areas.LR_CodeGeneratorModule.Controllers
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架
  13. /// Copyright (c) 2013-2018 上海力软信息技术有限公司
  14. /// 创建人:力软-框架开发组
  15. /// 日 期:2017.03.09
  16. /// 描 述:PC端代码生成器
  17. /// </summary>
  18. public class TemplatePCController : MvcControllerBase
  19. {
  20. private CodeGenerator codeGenerator = new CodeGenerator();
  21. private CodeGeneratorApp codeGeneratorApp = new CodeGeneratorApp();
  22. private CodeGeneratorWx codeGeneratorWx = new CodeGeneratorWx();
  23. private ModuleIBLL moduleIBLL = new ModuleBLL();
  24. private DatabaseTableIBLL databaseTableIBLL = new DatabaseTableBLL();
  25. private FunctionIBLL functionIBLL = new FunctionBLL();
  26. #region 视图功能
  27. /// <summary>
  28. /// 管理页面
  29. /// </summary>
  30. /// <returns></returns>
  31. [HttpGet]
  32. public ActionResult Index()
  33. {
  34. return View();
  35. }
  36. /// <summary>
  37. /// 自定义开发模板
  38. /// </summary>
  39. /// <returns></returns>
  40. [HttpGet]
  41. public ActionResult CustmerCodeIndex()
  42. {
  43. ViewBag.rootDirectory = GetRootDirectory();
  44. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  45. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  46. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  47. return View();
  48. }
  49. /// <summary>
  50. /// 添加扩展按钮
  51. /// </summary>
  52. /// <returns></returns>
  53. [HttpGet]
  54. public ActionResult AddBtnForm()
  55. {
  56. return View();
  57. }
  58. /// <summary>
  59. /// 快速开发模板
  60. /// </summary>
  61. /// <returns></returns>
  62. [HttpGet]
  63. public ActionResult FastCodeIndex()
  64. {
  65. ViewBag.rootDirectory = GetRootDirectory();
  66. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  67. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  68. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  69. return View();
  70. }
  71. /// <summary>
  72. /// 快速生成类
  73. /// </summary>
  74. /// <returns></returns>
  75. [HttpGet]
  76. public ActionResult EntityCodeIndex()
  77. {
  78. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  79. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  80. ViewBag.rootDirectory = GetRootDirectory();
  81. return View();
  82. }
  83. /// <summary>
  84. /// 流程系统表单开发模板
  85. /// </summary>
  86. /// <returns></returns>
  87. [HttpGet]
  88. public ActionResult WorkflowCodeIndex()
  89. {
  90. ViewBag.rootDirectory = GetRootDirectory();
  91. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  92. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  93. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  94. return View();
  95. }
  96. /// <summary>
  97. /// 编辑列表开发模板
  98. /// </summary>
  99. /// <returns></returns>
  100. [HttpGet]
  101. public ActionResult GridEditCodeIndex()
  102. {
  103. ViewBag.rootDirectory = GetRootDirectory();
  104. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  105. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  106. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  107. return View();
  108. }
  109. /// <summary>
  110. /// 报表开发模板
  111. /// </summary>
  112. /// <returns></returns>
  113. [HttpGet]
  114. public ActionResult ReportCodeIndex()
  115. {
  116. ViewBag.rootDirectory = GetRootDirectory();
  117. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  118. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  119. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  120. return View();
  121. }
  122. /// <summary>
  123. /// 移动端开发模板
  124. /// </summary>
  125. /// <returns></returns>
  126. [HttpGet]
  127. public ActionResult AppCustmerCodeIndex()
  128. {
  129. ViewBag.rootDirectory = GetRootDirectory();
  130. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  131. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  132. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  133. ViewBag.apiDirectory = ConfigurationManager.AppSettings["ApiDirectory"].ToString();
  134. ViewBag.appDirectory = ConfigurationManager.AppSettings["AppDirectory"].ToString();
  135. return View();
  136. }
  137. /// <summary>
  138. /// 小程序开发模板
  139. /// </summary>
  140. /// <returns></returns>
  141. [HttpGet]
  142. public ActionResult WxCustmerCodeIndex()
  143. {
  144. ViewBag.rootDirectory = GetRootDirectory();
  145. ViewBag.mappingDirectory = ConfigurationManager.AppSettings["MappingDirectory"].ToString();
  146. ViewBag.serviceDirectory = ConfigurationManager.AppSettings["ServiceDirectory"].ToString();
  147. ViewBag.webDirectory = ConfigurationManager.AppSettings["WebDirectory"].ToString();
  148. ViewBag.apiDirectory = ConfigurationManager.AppSettings["ApiDirectory"].ToString();
  149. ViewBag.appDirectory = ConfigurationManager.AppSettings["WxDirectory"].ToString();
  150. return View();
  151. }
  152. #endregion
  153. #region 自定义开发模板
  154. /// <summary>
  155. /// 自定义开发模板代码生成
  156. /// </summary>
  157. /// <param name="databaseLinkId">数据库连接ID</param>
  158. /// <param name="dbTable">数据表</param>
  159. /// <param name="formData">表单数据</param>
  160. /// <param name="queryData">查询数据</param>
  161. /// <param name="colData">列表数据</param>
  162. /// <param name="baseInfo">基础信息</param>
  163. /// <returns></returns>
  164. [HttpPost]
  165. [AjaxOnly]
  166. public ActionResult LookCustmerCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo)
  167. {
  168. // 数据实体化
  169. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  170. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  171. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  172. ColModel colDataObj = colData.ToObject<ColModel>();
  173. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  174. // 将表单数据进行一次转化
  175. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  176. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  177. foreach (var tab in formDataObj)
  178. {
  179. foreach (var compont in tab.componts)
  180. {
  181. if (!string.IsNullOrEmpty(compont.table))
  182. {
  183. compontMap.Add(compont.table + compont.field, compont);
  184. compontMap2.Add(compont.id, compont);
  185. }
  186. }
  187. }
  188. // 实体类 映射类
  189. string entityCode = "";
  190. string mapCode = "";
  191. string mainTable = "";
  192. foreach (var tableOne in dbTableObj)
  193. {
  194. bool isMain = false;
  195. if (string.IsNullOrEmpty(tableOne.relationName))
  196. {
  197. mainTable = tableOne.name;
  198. isMain = true;
  199. }
  200. // 实体类
  201. entityCode += codeGenerator.EntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain);
  202. // 映射类
  203. mapCode += codeGenerator.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  204. }
  205. // 服务类
  206. string serviceCode = codeGenerator.ServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj);
  207. // 业务类
  208. string bllCode = codeGenerator.BllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  209. // 业务接口类
  210. string ibllCode = codeGenerator.IBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  211. // 控制器类
  212. string controllerCode = codeGenerator.ControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  213. // 页面类
  214. string indexCode = codeGenerator.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  215. // 页面js类
  216. string indexJsCode = codeGenerator.IndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  217. // 表单类
  218. string formCode = codeGenerator.FormCreate(baseInfoObj, formDataObj, compontMap);
  219. // 表单js类
  220. string formJsCode = codeGenerator.FormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  221. var jsonData = new
  222. {
  223. entityCode = entityCode,
  224. mapCode = mapCode,
  225. serviceCode = serviceCode,
  226. bllCode = bllCode,
  227. ibllCode = ibllCode,
  228. controllerCode = controllerCode,
  229. indexCode = indexCode,
  230. indexJsCode = indexJsCode,
  231. formCode = formCode,
  232. formJsCode = formJsCode
  233. };
  234. return Success(jsonData);
  235. }
  236. /// <summary>
  237. /// 自定义开发模板代码生成(创建)
  238. /// </summary>
  239. /// <param name="databaseLinkId">数据库连接ID</param>
  240. /// <param name="dbTable">数据表</param>
  241. /// <param name="formData">表单数据</param>
  242. /// <param name="queryData">查询数据</param>
  243. /// <param name="colData">列表数据</param>
  244. /// <param name="baseInfo">基础信息</param>
  245. /// <param name="moduleEntityJson">系统功能配置信息</param>
  246. /// <returns></returns>
  247. [HttpPost]
  248. [AjaxOnly]
  249. public ActionResult CreateCustmerCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo, string moduleEntityJson)
  250. {
  251. // 数据
  252. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  253. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  254. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  255. ColModel colDataObj = colData.ToObject<ColModel>();
  256. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  257. var moduleEntity = moduleEntityJson.ToObject<ModuleEntity>();
  258. moduleEntity.F_Target = "iframe";
  259. moduleEntity.F_UrlAddress = "/" + baseInfoObj.outputArea + "/" + baseInfoObj.name + "/Index";
  260. // 按钮
  261. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  262. foreach (var btn in colDataObj.btns)
  263. {
  264. switch (btn)
  265. {
  266. case "add":
  267. ModuleButtonEntity addButtonEntity = new ModuleButtonEntity();
  268. addButtonEntity.Create();
  269. addButtonEntity.F_EnCode = "lr_add";
  270. addButtonEntity.F_FullName = "新增";
  271. moduleButtonList.Add(addButtonEntity);
  272. break;
  273. case "edit":
  274. ModuleButtonEntity editButtonEntity = new ModuleButtonEntity();
  275. editButtonEntity.Create();
  276. editButtonEntity.F_EnCode = "lr_edit";
  277. editButtonEntity.F_FullName = "编辑";
  278. moduleButtonList.Add(editButtonEntity);
  279. break;
  280. case "delete":
  281. ModuleButtonEntity deleteButtonEntity = new ModuleButtonEntity();
  282. deleteButtonEntity.Create();
  283. deleteButtonEntity.F_EnCode = "lr_delete";
  284. deleteButtonEntity.F_FullName = "删除";
  285. moduleButtonList.Add(deleteButtonEntity);
  286. break;
  287. case "print":
  288. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  289. printButtonEntity.Create();
  290. printButtonEntity.F_EnCode = "lr_print";
  291. printButtonEntity.F_FullName = "打印";
  292. moduleButtonList.Add(printButtonEntity);
  293. break;
  294. }
  295. }
  296. foreach (var btn in colDataObj.btnexs)
  297. {
  298. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  299. printButtonEntity.Create();
  300. printButtonEntity.F_EnCode = btn.id;
  301. printButtonEntity.F_FullName = btn.name;
  302. moduleButtonList.Add(printButtonEntity);
  303. }
  304. // 列表
  305. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  306. foreach (var col in colDataObj.fields)
  307. {
  308. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  309. moduleColumnEntity.Create();
  310. moduleColumnEntity.F_EnCode = col.field;
  311. moduleColumnEntity.F_FullName = col.fieldName;
  312. moduleColumnEntity.F_ParentId = "0";
  313. moduleColumnList.Add(moduleColumnEntity);
  314. }
  315. // 表单字段
  316. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  317. // 将表单数据进行一次转化
  318. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  319. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  320. foreach (var tab in formDataObj)
  321. {
  322. foreach (var compont in tab.componts)
  323. {
  324. ModuleFormEntity moduleFormEntity = new ModuleFormEntity();
  325. moduleFormEntity.Create();
  326. moduleFormEntity.F_EnCode = compont.field;
  327. moduleFormEntity.F_FullName = compont.title;
  328. moduleFormEntitys.Add(moduleFormEntity);
  329. if (!string.IsNullOrEmpty(compont.table))
  330. {
  331. compontMap.Add(compont.table + compont.field, compont);
  332. compontMap2.Add(compont.id, compont);
  333. }
  334. }
  335. }
  336. var moduleEntityTemp = moduleIBLL.GetModuleByUrl(moduleEntity.F_UrlAddress);
  337. if (moduleEntityTemp == null)
  338. {
  339. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);//模块功能cbb
  340. }
  341. // 实体类 映射类
  342. string codeContent = "";
  343. string mainTable = "";
  344. foreach (var tableOne in dbTableObj)
  345. {
  346. bool isMain = false;
  347. if (string.IsNullOrEmpty(tableOne.relationName))
  348. {
  349. mainTable = tableOne.name;
  350. isMain = true;
  351. }
  352. // 实体类
  353. codeContent = codeGenerator.EntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain);
  354. codeGenerator.CreateEntityCodeFile(baseInfoObj, tableOne.name, codeContent);
  355. // 映射类
  356. codeContent = codeGenerator.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  357. codeGenerator.CreateMapCodeFile(baseInfoObj, tableOne.name, codeContent);
  358. }
  359. // 服务类
  360. codeContent = codeGenerator.ServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj);
  361. codeGenerator.CreateSerivceCodeFile(baseInfoObj, codeContent);
  362. // 业务类
  363. codeContent = codeGenerator.BllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  364. codeGenerator.CreateBLLCodeFile(baseInfoObj, codeContent);
  365. // 业务接口类
  366. codeContent = codeGenerator.IBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  367. codeGenerator.CreateIBLLCodeFile(baseInfoObj, codeContent);
  368. // 控制器类
  369. codeContent = codeGenerator.ControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  370. codeGenerator.CreateControllerCodeFile(baseInfoObj, codeContent);
  371. // 页面类
  372. codeContent = codeGenerator.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  373. codeGenerator.CreateIndexCodeFile(baseInfoObj, codeContent);
  374. // 页面js类
  375. codeContent = codeGenerator.IndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  376. codeGenerator.CreateIndexJSCodeFile(baseInfoObj, codeContent);
  377. // 表单类
  378. codeContent = codeGenerator.FormCreate(baseInfoObj, formDataObj, compontMap);
  379. codeGenerator.CreateFormCodeFile(baseInfoObj, codeContent);
  380. // 表单js类
  381. codeContent = codeGenerator.FormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  382. codeGenerator.CreateFormJSCodeFile(baseInfoObj, codeContent);
  383. return Success("创建成功");
  384. }
  385. #endregion
  386. #region 快速开发模板
  387. /// <summary>
  388. /// 快速开发代码查看
  389. /// </summary>
  390. /// <param name="codeBaseConfigModel">配置信息</param>
  391. /// <returns></returns>
  392. [HttpPost]
  393. [AjaxOnly]
  394. public ActionResult LookFastCode(CodeBaseConfigModel codeBaseConfigModel)
  395. {
  396. string entityCode = "";
  397. string mapCode = "";
  398. codeBaseConfigModel.backProject = ConfigurationManager.AppSettings["BackProject"].ToString();
  399. // 实体类
  400. entityCode += codeGenerator.EntityCreate(codeBaseConfigModel, codeBaseConfigModel.tableName);
  401. // 映射类
  402. mapCode += codeGenerator.MappingCreate(codeBaseConfigModel, codeBaseConfigModel.tableName);
  403. // 服务类
  404. string serviceCode = codeGenerator.ServiceCreate(codeBaseConfigModel);
  405. // 业务类
  406. string bllCode = codeGenerator.BllCreate(codeBaseConfigModel);
  407. // 业务接口类
  408. string ibllCode = codeGenerator.IBllCreate(codeBaseConfigModel);
  409. // 控制器类
  410. string controllerCode = codeGenerator.ControllerCreate(codeBaseConfigModel);
  411. // 页面类
  412. string indexCode = codeGenerator.IndexCreate(codeBaseConfigModel);
  413. // 页面js类
  414. string indexJsCode = codeGenerator.IndexJSCreate(codeBaseConfigModel);
  415. // 表单类
  416. string formCode = codeGenerator.FormCreate(codeBaseConfigModel);
  417. // 表单js类
  418. string formJsCode = codeGenerator.FormJsCreate(codeBaseConfigModel);
  419. var jsonData = new
  420. {
  421. entityCode = entityCode,
  422. mapCode = mapCode,
  423. serviceCode = serviceCode,
  424. bllCode = bllCode,
  425. ibllCode = ibllCode,
  426. controllerCode = controllerCode,
  427. indexCode = indexCode,
  428. indexJsCode = indexJsCode,
  429. formCode = formCode,
  430. formJsCode = formJsCode
  431. };
  432. return Success(jsonData);
  433. }
  434. /// <summary>
  435. /// 快速开发代码创建
  436. /// </summary>
  437. /// <param name="codeBaseConfigModel">配置信息</param>
  438. /// <returns></returns>
  439. [HttpPost]
  440. [AjaxOnly]
  441. public ActionResult CreateFastCode(CodeBaseConfigModel codeBaseConfigModel)
  442. {
  443. string codeContent = "";
  444. codeBaseConfigModel.backProject = ConfigurationManager.AppSettings["BackProject"].ToString();
  445. // 实体类
  446. codeContent = codeGenerator.EntityCreate(codeBaseConfigModel, codeBaseConfigModel.tableName);
  447. codeGenerator.CreateEntityCodeFile(codeBaseConfigModel, codeBaseConfigModel.tableName, codeContent);
  448. // 映射类
  449. codeContent = codeGenerator.MappingCreate(codeBaseConfigModel, codeBaseConfigModel.tableName);
  450. codeGenerator.CreateMapCodeFile(codeBaseConfigModel, codeBaseConfigModel.tableName, codeContent);
  451. // 服务类
  452. codeContent = codeGenerator.ServiceCreate(codeBaseConfigModel);
  453. codeGenerator.CreateSerivceCodeFile(codeBaseConfigModel, codeContent);
  454. // 业务接口类
  455. codeContent = codeGenerator.IBllCreate(codeBaseConfigModel);
  456. codeGenerator.CreateIBLLCodeFile(codeBaseConfigModel, codeContent);
  457. // 业务类
  458. codeContent = codeGenerator.BllCreate(codeBaseConfigModel);
  459. codeGenerator.CreateBLLCodeFile(codeBaseConfigModel, codeContent);
  460. // 控制器类
  461. codeContent = codeGenerator.ControllerCreate(codeBaseConfigModel);
  462. codeGenerator.CreateControllerCodeFile(codeBaseConfigModel, codeContent);
  463. // 页面类
  464. codeContent = codeGenerator.IndexCreate(codeBaseConfigModel);
  465. codeGenerator.CreateIndexCodeFile(codeBaseConfigModel, codeContent);
  466. // 页面js类
  467. codeContent = codeGenerator.IndexJSCreate(codeBaseConfigModel);
  468. codeGenerator.CreateIndexJSCodeFile(codeBaseConfigModel, codeContent);
  469. // 表单类
  470. codeContent = codeGenerator.FormCreate(codeBaseConfigModel);
  471. codeGenerator.CreateFormCodeFile(codeBaseConfigModel, codeContent);
  472. // 表单js类
  473. codeContent = codeGenerator.FormJsCreate(codeBaseConfigModel);
  474. codeGenerator.CreateFormJSCodeFile(codeBaseConfigModel, codeContent);
  475. var moduleEntity = codeBaseConfigModel.moduleEntityJson.ToObject<ModuleEntity>();
  476. moduleEntity.F_Target = "iframe";
  477. moduleEntity.F_UrlAddress = "/" + codeBaseConfigModel.area + "/" + codeBaseConfigModel.name + "/Index";
  478. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  479. ModuleButtonEntity addButtonEntity = new ModuleButtonEntity();
  480. addButtonEntity.Create();
  481. addButtonEntity.F_ActionAddress = "/" + codeBaseConfigModel.area + "/" + codeBaseConfigModel.name + "/Form";
  482. addButtonEntity.F_EnCode = "lr_add";
  483. addButtonEntity.F_FullName = "新增";
  484. moduleButtonList.Add(addButtonEntity);
  485. ModuleButtonEntity editButtonEntity = new ModuleButtonEntity();
  486. editButtonEntity.Create();
  487. editButtonEntity.F_ActionAddress = "/" + codeBaseConfigModel.area + "/" + codeBaseConfigModel.name + "/Form";
  488. editButtonEntity.F_EnCode = "lr_edit";
  489. editButtonEntity.F_FullName = "编辑";
  490. moduleButtonList.Add(editButtonEntity);
  491. ModuleButtonEntity deleteButtonEntity = new ModuleButtonEntity();
  492. deleteButtonEntity.Create();
  493. deleteButtonEntity.F_ActionAddress = "/" + codeBaseConfigModel.area + "/" + codeBaseConfigModel.name + "/DeleteForm";
  494. deleteButtonEntity.F_EnCode = "lr_delete";
  495. deleteButtonEntity.F_FullName = "删除";
  496. moduleButtonList.Add(deleteButtonEntity);
  497. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  498. IEnumerable<DatabaseTableFieldModel> fieldList = databaseTableIBLL.GetTableFiledList(codeBaseConfigModel.databaseLinkId, codeBaseConfigModel.tableName);
  499. // 表单字段
  500. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  501. foreach (var fileditem in fieldList)
  502. {
  503. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  504. moduleColumnEntity.Create();
  505. moduleColumnEntity.F_EnCode = fileditem.f_column;
  506. moduleColumnEntity.F_FullName = fileditem.f_remark;
  507. moduleColumnEntity.F_ParentId = "0";
  508. ModuleFormEntity moduleFormEntity = new ModuleFormEntity();
  509. moduleFormEntity.Create();
  510. moduleFormEntity.F_EnCode = fileditem.f_column;
  511. moduleFormEntity.F_FullName = fileditem.f_remark;
  512. moduleFormEntitys.Add(moduleFormEntity);
  513. moduleColumnList.Add(moduleColumnEntity);
  514. }
  515. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);
  516. return Success("创建成功");
  517. }
  518. #endregion
  519. #region 快速生成实体类和映射类
  520. /// <summary>
  521. /// 快速开发代码查看
  522. /// </summary>
  523. /// <param name="codeBaseConfigModel">配置信息</param>
  524. /// <returns></returns>
  525. [HttpPost]
  526. [AjaxOnly]
  527. public ActionResult LookEntityCode(CodeBaseConfigModel codeBaseConfigModel)
  528. {
  529. string entityCode = "";
  530. string mapCode = "";
  531. codeBaseConfigModel.backProject = ConfigurationManager.AppSettings["BackProject"].ToString();
  532. string[] tableNameList = codeBaseConfigModel.tableNames.Split(',');
  533. foreach (string tableName in tableNameList)
  534. {
  535. // 实体类
  536. entityCode += codeGenerator.EntityCreate(codeBaseConfigModel, tableName);
  537. // 映射类
  538. mapCode += codeGenerator.MappingCreate(codeBaseConfigModel, tableName);
  539. }
  540. var jsonData = new
  541. {
  542. entityCode = entityCode,
  543. mapCode = mapCode
  544. };
  545. return Success(jsonData);
  546. }
  547. /// <summary>
  548. /// 快速开发代码创建
  549. /// </summary>
  550. /// <param name="codeBaseConfigModel">配置信息</param>
  551. /// <returns></returns>
  552. [HttpPost]
  553. [AjaxOnly]
  554. public ActionResult CreateEntityCode(CodeBaseConfigModel codeBaseConfigModel)
  555. {
  556. string codeContent = "";
  557. codeBaseConfigModel.backProject = ConfigurationManager.AppSettings["BackProject"].ToString();
  558. string[] tableNameList = codeBaseConfigModel.tableNames.Split(',');
  559. foreach (string tableName in tableNameList)
  560. {
  561. // 实体类
  562. codeContent = codeGenerator.EntityCreate(codeBaseConfigModel, tableName);
  563. codeGenerator.CreateEntityCodeFile(codeBaseConfigModel, tableName, codeContent);
  564. // 映射类
  565. codeContent = codeGenerator.MappingCreate(codeBaseConfigModel, tableName);
  566. codeGenerator.CreateMapCodeFile(codeBaseConfigModel, tableName, codeContent);
  567. }
  568. return Success("创建成功");
  569. }
  570. #endregion
  571. #region 流程系统表单模板
  572. /// <summary>
  573. /// 流程系统表单代码生成
  574. /// </summary>
  575. /// <param name="codeBaseConfigModel">配置信息</param>
  576. /// <returns></returns>
  577. [HttpPost]
  578. [AjaxOnly]
  579. public ActionResult LookWorkflowCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo)
  580. {
  581. // 数据
  582. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  583. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  584. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  585. ColModel colDataObj = colData.ToObject<ColModel>();
  586. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  587. // 将表单数据进行一次转化
  588. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  589. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  590. foreach (var tab in formDataObj)
  591. {
  592. foreach (var compont in tab.componts)
  593. {
  594. if (!string.IsNullOrEmpty(compont.table))
  595. {
  596. compontMap.Add(compont.table + compont.field, compont);
  597. compontMap2.Add(compont.id, compont);
  598. }
  599. }
  600. }
  601. // 实体类 映射类
  602. string entityCode = "";
  603. string mapCode = "";
  604. string mainTable = "";
  605. foreach (var tableOne in dbTableObj)
  606. {
  607. bool isMain = false;
  608. if (string.IsNullOrEmpty(tableOne.relationName))
  609. {
  610. mainTable = tableOne.name;
  611. isMain = true;
  612. }
  613. // 实体类
  614. entityCode += codeGenerator.WfEntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain, colDataObj.workField);
  615. // colDataObj
  616. mapCode += codeGenerator.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  617. }
  618. // 服务类
  619. string serviceCode = codeGenerator.WfServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj, colDataObj.workField);
  620. // 业务类
  621. string bllCode = codeGenerator.WfBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  622. // 业务接口类
  623. string ibllCode = codeGenerator.WfIBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  624. // 控制器类
  625. string controllerCode = codeGenerator.WfControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  626. // 页面类
  627. string indexCode = codeGenerator.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  628. // 页面js类
  629. string indexJsCode = codeGenerator.WfIndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  630. // 表单类
  631. string formCode = codeGenerator.FormCreate(baseInfoObj, formDataObj, compontMap);
  632. // 表单js类
  633. string formJsCode = codeGenerator.WfFormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2, colDataObj.workField);
  634. var jsonData = new
  635. {
  636. entityCode = entityCode,
  637. mapCode = mapCode,
  638. serviceCode = serviceCode,
  639. bllCode = bllCode,
  640. ibllCode = ibllCode,
  641. controllerCode = controllerCode,
  642. indexCode = indexCode,
  643. indexJsCode = indexJsCode,
  644. formCode = formCode,
  645. formJsCode = formJsCode
  646. };
  647. return Success(jsonData);
  648. }
  649. /// <summary>
  650. /// 流程系统表单代码创建
  651. /// </summary>
  652. /// <param name="codeBaseConfigModel">配置信息</param>
  653. /// <returns></returns>
  654. [HttpPost]
  655. [AjaxOnly]
  656. public ActionResult CreateWorkflowCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo, string moduleEntityJson)
  657. {
  658. // 数据
  659. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  660. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  661. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  662. ColModel colDataObj = colData.ToObject<ColModel>();
  663. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  664. var moduleEntity = moduleEntityJson.ToObject<ModuleEntity>();
  665. moduleEntity.F_Target = "iframe";
  666. moduleEntity.F_UrlAddress = "/" + baseInfoObj.outputArea + "/" + baseInfoObj.name + "/Index";
  667. // 按钮
  668. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  669. foreach (var btn in colDataObj.btns)
  670. {
  671. switch (btn)
  672. {
  673. case "add":
  674. ModuleButtonEntity addButtonEntity = new ModuleButtonEntity();
  675. addButtonEntity.Create();
  676. addButtonEntity.F_EnCode = "lr_add";
  677. addButtonEntity.F_FullName = "新增";
  678. moduleButtonList.Add(addButtonEntity);
  679. break;
  680. case "edit":
  681. ModuleButtonEntity editButtonEntity = new ModuleButtonEntity();
  682. editButtonEntity.Create();
  683. editButtonEntity.F_EnCode = "lr_edit";
  684. editButtonEntity.F_FullName = "编辑";
  685. moduleButtonList.Add(editButtonEntity);
  686. break;
  687. case "delete":
  688. ModuleButtonEntity deleteButtonEntity = new ModuleButtonEntity();
  689. deleteButtonEntity.Create();
  690. deleteButtonEntity.F_EnCode = "lr_delete";
  691. deleteButtonEntity.F_FullName = "删除";
  692. moduleButtonList.Add(deleteButtonEntity);
  693. break;
  694. case "print":
  695. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  696. printButtonEntity.Create();
  697. printButtonEntity.F_EnCode = "lr_print";
  698. printButtonEntity.F_FullName = "打印";
  699. moduleButtonList.Add(printButtonEntity);
  700. break;
  701. }
  702. }
  703. foreach (var btn in colDataObj.btnexs)
  704. {
  705. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  706. printButtonEntity.Create();
  707. printButtonEntity.F_EnCode = btn.id;
  708. printButtonEntity.F_FullName = btn.name;
  709. moduleButtonList.Add(printButtonEntity);
  710. }
  711. // 列表
  712. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  713. foreach (var col in colDataObj.fields)
  714. {
  715. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  716. moduleColumnEntity.Create();
  717. moduleColumnEntity.F_EnCode = col.field;
  718. moduleColumnEntity.F_FullName = col.fieldName;
  719. moduleColumnEntity.F_ParentId = "0";
  720. moduleColumnList.Add(moduleColumnEntity);
  721. }
  722. // 表单字段
  723. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  724. // 将表单数据进行一次转化
  725. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  726. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  727. foreach (var tab in formDataObj)
  728. {
  729. foreach (var compont in tab.componts)
  730. {
  731. ModuleFormEntity moduleFormEntity = new ModuleFormEntity();
  732. moduleFormEntity.Create();
  733. moduleFormEntity.F_EnCode = compont.field;
  734. moduleFormEntity.F_FullName = compont.title;
  735. moduleFormEntitys.Add(moduleFormEntity);
  736. if (!string.IsNullOrEmpty(compont.table))
  737. {
  738. compontMap.Add(compont.table + compont.field, compont);
  739. compontMap2.Add(compont.id, compont);
  740. }
  741. }
  742. }
  743. var moduleEntityTemp = moduleIBLL.GetModuleByUrl(moduleEntity.F_UrlAddress);
  744. if (moduleEntityTemp == null)
  745. {
  746. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);
  747. }
  748. // 实体类 映射类
  749. string codeContent = "";
  750. string mainTable = "";
  751. foreach (var tableOne in dbTableObj)
  752. {
  753. bool isMain = false;
  754. if (string.IsNullOrEmpty(tableOne.relationName))
  755. {
  756. mainTable = tableOne.name;
  757. isMain = true;
  758. }
  759. // 实体类
  760. codeContent = codeGenerator.WfEntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain, colDataObj.workField);
  761. codeGenerator.CreateEntityCodeFile(baseInfoObj, tableOne.name, codeContent);
  762. // 映射类
  763. codeContent = codeGenerator.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  764. codeGenerator.CreateMapCodeFile(baseInfoObj, tableOne.name, codeContent);
  765. }
  766. // 服务类
  767. codeContent = codeGenerator.WfServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj, colDataObj.workField);
  768. codeGenerator.CreateSerivceCodeFile(baseInfoObj, codeContent);
  769. // 业务类
  770. codeContent = codeGenerator.WfBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  771. codeGenerator.CreateBLLCodeFile(baseInfoObj, codeContent);
  772. // 业务接口类
  773. codeContent = codeGenerator.WfIBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  774. codeGenerator.CreateIBLLCodeFile(baseInfoObj, codeContent);
  775. // 控制器类
  776. codeContent = codeGenerator.WfControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  777. codeGenerator.CreateControllerCodeFile(baseInfoObj, codeContent);
  778. // 页面类
  779. codeContent = codeGenerator.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  780. codeGenerator.CreateIndexCodeFile(baseInfoObj, codeContent);
  781. // 页面js类
  782. codeContent = codeGenerator.WfIndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  783. codeGenerator.CreateIndexJSCodeFile(baseInfoObj, codeContent);
  784. // 表单类
  785. codeContent = codeGenerator.FormCreate(baseInfoObj, formDataObj, compontMap);
  786. codeGenerator.CreateFormCodeFile(baseInfoObj, codeContent);
  787. // 表单js类
  788. codeContent = codeGenerator.WfFormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2, colDataObj.workField);
  789. codeGenerator.CreateFormJSCodeFile(baseInfoObj, codeContent);
  790. return Success("创建成功");
  791. }
  792. #endregion
  793. #region 编辑列表开发模板
  794. /// <summary>
  795. /// 编辑列表开发模板代码生成
  796. /// </summary>
  797. /// <param name="databaseLinkId">数据库连接ID</param>
  798. /// <param name="dbTable">数据表</param>
  799. /// <param name="dbTablePk">数据表主键</param>
  800. /// <param name="formData">表单数据</param>
  801. /// <param name="queryData">查询数据</param>
  802. /// <param name="colData">列表数据</param>
  803. /// <param name="baseInfo">基础信息</param>
  804. /// <returns></returns>
  805. [HttpPost]
  806. [AjaxOnly]
  807. public ActionResult LookGridEditCode(string databaseLinkId, string dbTable, string dbTablePk, string formData, string queryData, string colData, string baseInfo)
  808. {
  809. // 数据实体化
  810. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  811. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  812. ColModel colDataObj = colData.ToObject<ColModel>();
  813. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  814. // 将表单数据进行一次转化
  815. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  816. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  817. foreach (var tab in formDataObj)
  818. {
  819. foreach (var compont in tab.componts)
  820. {
  821. if (!string.IsNullOrEmpty(compont.table))
  822. {
  823. compontMap.Add(compont.table + compont.field, compont);
  824. compontMap2.Add(compont.id, compont);
  825. }
  826. }
  827. }
  828. // 实体类
  829. string entityCode = codeGenerator.EntityCreate(databaseLinkId, dbTable, dbTablePk, baseInfoObj, colDataObj, true);
  830. // 映射类
  831. string mapCode = codeGenerator.MappingCreate(dbTable, dbTablePk, baseInfoObj);
  832. // 服务类
  833. string serviceCode = codeGenerator.GridEditServiceCreate(databaseLinkId, dbTable, dbTablePk, compontMap, queryDataObj, colDataObj, baseInfoObj);
  834. // 业务类
  835. string bllCode = codeGenerator.GridEditBllCreate(baseInfoObj, dbTable, dbTablePk, colDataObj);
  836. // 业务接口类
  837. string ibllCode = codeGenerator.GridEditIBllCreate(baseInfoObj, dbTable, colDataObj);
  838. // 控制器类
  839. string controllerCode = codeGenerator.GridEditControllerCreate(baseInfoObj, dbTable, compontMap, colDataObj);
  840. // 页面类
  841. string indexCode = codeGenerator.GridEditIndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  842. // 页面js类
  843. string indexJsCode = codeGenerator.GridEditIndexJSCreate(baseInfoObj, dbTablePk, compontMap, colDataObj, queryDataObj);
  844. // 表单类
  845. string formCode = codeGenerator.FormCreate(baseInfoObj, formDataObj, compontMap);
  846. // 表单js类
  847. string formJsCode = codeGenerator.GridEditFormJsCreate(baseInfoObj, formDataObj, compontMap2);
  848. var jsonData = new
  849. {
  850. entityCode = entityCode,
  851. mapCode = mapCode,
  852. serviceCode = serviceCode,
  853. bllCode = bllCode,
  854. ibllCode = ibllCode,
  855. controllerCode = controllerCode,
  856. indexCode = indexCode,
  857. indexJsCode = indexJsCode,
  858. formCode = formCode,
  859. formJsCode = formJsCode
  860. };
  861. return Success(jsonData);
  862. }
  863. /// <summary>
  864. /// 编辑列表开发模板代码生成(创建)
  865. /// </summary>
  866. /// <param name="databaseLinkId">数据库连接ID</param>
  867. /// <param name="dbTable">数据表</param>
  868. /// <param name="formData">表单数据</param>
  869. /// <param name="queryData">查询数据</param>
  870. /// <param name="colData">列表数据</param>
  871. /// <param name="baseInfo">基础信息</param>
  872. /// <param name="moduleEntityJson">系统功能配置信息</param>
  873. /// <returns></returns>
  874. [HttpPost]
  875. [AjaxOnly]
  876. public ActionResult CreateGridEditCode(string databaseLinkId, string dbTable, string dbTablePk, string formData, string queryData, string colData, string baseInfo, string moduleEntityJson)
  877. {
  878. // 数据
  879. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  880. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  881. ColModel colDataObj = colData.ToObject<ColModel>();
  882. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  883. var moduleEntity = moduleEntityJson.ToObject<ModuleEntity>();
  884. moduleEntity.F_Target = "iframe";
  885. moduleEntity.F_UrlAddress = "/" + baseInfoObj.outputArea + "/" + baseInfoObj.name + "/Index";
  886. // 按钮
  887. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  888. foreach (var btn in colDataObj.btns)
  889. {
  890. switch (btn)
  891. {
  892. case "add":
  893. ModuleButtonEntity addButtonEntity = new ModuleButtonEntity();
  894. addButtonEntity.Create();
  895. addButtonEntity.F_EnCode = "lr_add";
  896. addButtonEntity.F_FullName = "新增";
  897. moduleButtonList.Add(addButtonEntity);
  898. break;
  899. case "save":
  900. ModuleButtonEntity editButtonEntity = new ModuleButtonEntity();
  901. editButtonEntity.Create();
  902. editButtonEntity.F_EnCode = "lr_save";
  903. editButtonEntity.F_FullName = "保存";
  904. moduleButtonList.Add(editButtonEntity);
  905. break;
  906. case "delete":
  907. ModuleButtonEntity deleteButtonEntity = new ModuleButtonEntity();
  908. deleteButtonEntity.Create();
  909. deleteButtonEntity.F_EnCode = "lr_delete";
  910. deleteButtonEntity.F_FullName = "删除";
  911. moduleButtonList.Add(deleteButtonEntity);
  912. break;
  913. case "print":
  914. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  915. printButtonEntity.Create();
  916. printButtonEntity.F_EnCode = "lr_print";
  917. printButtonEntity.F_FullName = "打印";
  918. moduleButtonList.Add(printButtonEntity);
  919. break;
  920. }
  921. }
  922. foreach (var btn in colDataObj.btnexs)
  923. {
  924. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  925. printButtonEntity.Create();
  926. printButtonEntity.F_EnCode = btn.id;
  927. printButtonEntity.F_FullName = btn.name;
  928. moduleButtonList.Add(printButtonEntity);
  929. }
  930. // 列表
  931. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  932. foreach (var col in colDataObj.fields)
  933. {
  934. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  935. moduleColumnEntity.Create();
  936. moduleColumnEntity.F_EnCode = col.field;
  937. moduleColumnEntity.F_FullName = col.fieldName;
  938. moduleColumnEntity.F_ParentId = "0";
  939. moduleColumnList.Add(moduleColumnEntity);
  940. }
  941. // 表单字段
  942. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  943. // 将表单数据进行一次转化
  944. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  945. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  946. foreach (var tab in formDataObj)
  947. {
  948. foreach (var compont in tab.componts)
  949. {
  950. ModuleFormEntity moduleFormEntity = new ModuleFormEntity();
  951. moduleFormEntity.Create();
  952. moduleFormEntity.F_EnCode = compont.field;
  953. moduleFormEntity.F_FullName = compont.title;
  954. moduleFormEntitys.Add(moduleFormEntity);
  955. if (!string.IsNullOrEmpty(compont.table))
  956. {
  957. compontMap.Add(compont.table + compont.field, compont);
  958. compontMap2.Add(compont.id, compont);
  959. }
  960. }
  961. }
  962. var moduleEntityTemp = moduleIBLL.GetModuleByUrl(moduleEntity.F_UrlAddress);
  963. if (moduleEntityTemp == null)
  964. {
  965. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);//模块功能cbb
  966. }
  967. // 实体类 映射类
  968. string codeContent = "";
  969. // 实体类
  970. codeContent = codeGenerator.EntityCreate(databaseLinkId, dbTable, dbTablePk, baseInfoObj, colDataObj, true);
  971. codeGenerator.CreateEntityCodeFile(baseInfoObj, dbTable, codeContent);
  972. // 映射类
  973. codeContent = codeGenerator.MappingCreate(dbTable, dbTablePk, baseInfoObj);
  974. codeGenerator.CreateMapCodeFile(baseInfoObj, dbTable, codeContent);
  975. // 服务类
  976. codeContent = codeGenerator.GridEditServiceCreate(databaseLinkId, dbTable, dbTablePk, compontMap, queryDataObj, colDataObj, baseInfoObj);
  977. codeGenerator.CreateSerivceCodeFile(baseInfoObj, codeContent);
  978. // 业务类
  979. codeContent = codeGenerator.GridEditBllCreate(baseInfoObj, dbTable, dbTablePk, colDataObj);
  980. codeGenerator.CreateBLLCodeFile(baseInfoObj, codeContent);
  981. // 业务接口类
  982. codeContent = codeGenerator.GridEditIBllCreate(baseInfoObj, dbTable, colDataObj);
  983. codeGenerator.CreateIBLLCodeFile(baseInfoObj, codeContent);
  984. // 控制器类
  985. codeContent = codeGenerator.GridEditControllerCreate(baseInfoObj, dbTable, compontMap, colDataObj);
  986. codeGenerator.CreateControllerCodeFile(baseInfoObj, codeContent);
  987. // 页面类
  988. codeContent = codeGenerator.GridEditIndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  989. codeGenerator.CreateIndexCodeFile(baseInfoObj, codeContent);
  990. // 页面js类
  991. codeContent = codeGenerator.GridEditIndexJSCreate(baseInfoObj, dbTablePk, compontMap, colDataObj, queryDataObj);
  992. codeGenerator.CreateIndexJSCodeFile(baseInfoObj, codeContent);
  993. // 表单类
  994. codeContent = codeGenerator.FormCreate(baseInfoObj, formDataObj, compontMap);
  995. codeGenerator.CreateFormCodeFile(baseInfoObj, codeContent);
  996. // 表单js类
  997. codeContent = codeGenerator.GridEditFormJsCreate(baseInfoObj, formDataObj, compontMap2);
  998. codeGenerator.CreateFormJSCodeFile(baseInfoObj, codeContent);
  999. return Success("创建成功");
  1000. }
  1001. #endregion
  1002. #region 报表开发模板
  1003. /// <summary>
  1004. /// 报表开发模板代码生成
  1005. /// </summary>
  1006. /// <param name="databaseLinkId">数据库连接ID</param>
  1007. /// <param name="queryData">查询数据</param>
  1008. /// <param name="colData">列表数据</param>
  1009. /// <param name="baseInfo">基础信息</param>
  1010. /// <returns></returns>
  1011. [HttpPost]
  1012. [AjaxOnly]
  1013. public ActionResult LookReportCode(string databaseLinkId, string strSql, string queryData, string colData, string baseInfo)
  1014. {
  1015. // 数据实体化
  1016. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  1017. List<ReportColModel> collist = colData.ToObject<List<ReportColModel>>();
  1018. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  1019. // 服务类
  1020. string serviceCode = codeGenerator.ReportServiceCreate(databaseLinkId, strSql, collist, queryDataObj, baseInfoObj);
  1021. // 业务类
  1022. string bllCode = codeGenerator.ReportBllCreate(baseInfoObj);
  1023. // 业务接口类
  1024. string ibllCode = codeGenerator.ReportIBllCreate(baseInfoObj);
  1025. // 控制器类
  1026. string controllerCode = codeGenerator.ReportControllerCreate(baseInfoObj);
  1027. // 页面类
  1028. string indexCode = codeGenerator.ReportIndexCreate(baseInfoObj, queryDataObj);
  1029. // 页面js类
  1030. string indexJsCode = codeGenerator.ReportIndexJSCreate(baseInfoObj, collist, queryDataObj);
  1031. var jsonData = new
  1032. {
  1033. serviceCode = serviceCode,
  1034. bllCode = bllCode,
  1035. ibllCode = ibllCode,
  1036. controllerCode = controllerCode,
  1037. indexCode = indexCode,
  1038. indexJsCode = indexJsCode
  1039. };
  1040. return Success(jsonData);
  1041. }
  1042. /// <summary>
  1043. /// 自定义开发模板代码生成(创建)
  1044. /// </summary>
  1045. /// <param name="databaseLinkId">数据库连接ID</param>
  1046. /// <param name="queryData">查询数据</param>
  1047. /// <param name="colData">列表数据</param>
  1048. /// <param name="baseInfo">基础信息</param>
  1049. /// <param name="moduleEntityJson">系统功能配置信息</param>
  1050. /// <returns></returns>
  1051. [HttpPost]
  1052. [AjaxOnly]
  1053. public ActionResult CreateReportCode(string databaseLinkId, string strSql, string queryData, string colData, string baseInfo, string moduleEntityJson)
  1054. {
  1055. // 数据
  1056. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  1057. List<ReportColModel> collist = colData.ToObject<List<ReportColModel>>();
  1058. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  1059. var moduleEntity = moduleEntityJson.ToObject<ModuleEntity>();
  1060. moduleEntity.F_Target = "iframe";
  1061. moduleEntity.F_UrlAddress = "/" + baseInfoObj.outputArea + "/" + baseInfoObj.name + "/Index";
  1062. // 按钮
  1063. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  1064. ModuleButtonEntity outportButtonEntity = new ModuleButtonEntity();
  1065. outportButtonEntity.Create();
  1066. outportButtonEntity.F_EnCode = "lr_outport";
  1067. outportButtonEntity.F_FullName = "导出";
  1068. moduleButtonList.Add(outportButtonEntity);
  1069. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  1070. printButtonEntity.Create();
  1071. printButtonEntity.F_EnCode = "lr_print";
  1072. printButtonEntity.F_FullName = "打印";
  1073. moduleButtonList.Add(printButtonEntity);
  1074. // 列表
  1075. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  1076. foreach (var col in collist)
  1077. {
  1078. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  1079. moduleColumnEntity.Create();
  1080. moduleColumnEntity.F_EnCode = col.field;
  1081. moduleColumnEntity.F_FullName = col.name;
  1082. moduleColumnEntity.F_ParentId = "0";
  1083. moduleColumnList.Add(moduleColumnEntity);
  1084. }
  1085. // 表单字段
  1086. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  1087. var moduleEntityTemp = moduleIBLL.GetModuleByUrl(moduleEntity.F_UrlAddress);
  1088. if (moduleEntityTemp == null)
  1089. {
  1090. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);//模块功能cbb
  1091. }
  1092. // 实体类 映射类
  1093. string codeContent = "";
  1094. // 服务类
  1095. codeContent = codeGenerator.ReportServiceCreate(databaseLinkId, strSql, collist, queryDataObj, baseInfoObj);
  1096. codeGenerator.CreateSerivceCodeFile(baseInfoObj, codeContent);
  1097. // 业务类
  1098. codeContent = codeGenerator.ReportBllCreate(baseInfoObj);
  1099. codeGenerator.CreateBLLCodeFile(baseInfoObj, codeContent);
  1100. // 业务接口类
  1101. codeContent = codeGenerator.ReportIBllCreate(baseInfoObj);
  1102. codeGenerator.CreateIBLLCodeFile(baseInfoObj, codeContent);
  1103. // 控制器类
  1104. codeContent = codeGenerator.ReportControllerCreate(baseInfoObj);
  1105. codeGenerator.CreateControllerCodeFile(baseInfoObj, codeContent);
  1106. // 页面类
  1107. codeContent = codeGenerator.ReportIndexCreate(baseInfoObj, queryDataObj);
  1108. codeGenerator.CreateIndexCodeFile(baseInfoObj, codeContent);
  1109. // 页面js类
  1110. codeContent = codeGenerator.ReportIndexJSCreate(baseInfoObj, collist, queryDataObj);
  1111. codeGenerator.CreateIndexJSCodeFile(baseInfoObj, codeContent);
  1112. return Success("创建成功");
  1113. }
  1114. #endregion
  1115. #region 移动开发模板
  1116. /// <summary>
  1117. /// 移动开发模板代码生成
  1118. /// </summary>
  1119. /// <param name="databaseLinkId">数据库连接ID</param>
  1120. /// <param name="dbTable">数据表</param>
  1121. /// <param name="formData">表单数据</param>
  1122. /// <param name="queryData">查询数据</param>
  1123. /// <param name="colData">列表数据</param>
  1124. /// <param name="baseInfo">基础信息</param>
  1125. /// <returns></returns>
  1126. [HttpPost]
  1127. [AjaxOnly]
  1128. public ActionResult LookAppCustmerCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo)
  1129. {
  1130. // 数据实体化
  1131. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  1132. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  1133. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  1134. ColModel colDataObj = colData.ToObject<ColModel>();
  1135. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  1136. // 将表单数据进行一次转化
  1137. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  1138. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  1139. foreach (var tab in formDataObj)
  1140. {
  1141. foreach (var compont in tab.componts)
  1142. {
  1143. if (!string.IsNullOrEmpty(compont.table))
  1144. {
  1145. compontMap.Add(compont.table + compont.field, compont);
  1146. compontMap2.Add(compont.id, compont);
  1147. }
  1148. }
  1149. }
  1150. // 实体类 映射类
  1151. string entityCode = "";
  1152. string mapCode = "";
  1153. string mainTable = "";
  1154. foreach (var tableOne in dbTableObj)
  1155. {
  1156. bool isMain = false;
  1157. if (string.IsNullOrEmpty(tableOne.relationName))
  1158. {
  1159. mainTable = tableOne.name;
  1160. isMain = true;
  1161. }
  1162. // 实体类
  1163. entityCode += codeGeneratorApp.EntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain);
  1164. // 映射类
  1165. mapCode += codeGeneratorApp.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  1166. }
  1167. // 服务类
  1168. string serviceCode = codeGeneratorApp.ServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj);
  1169. // 业务类
  1170. string bllCode = codeGeneratorApp.BllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1171. // 业务接口类
  1172. string ibllCode = codeGeneratorApp.IBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1173. // 控制器类
  1174. string controllerCode = codeGeneratorApp.ControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1175. // 页面类
  1176. string indexCode = codeGeneratorApp.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  1177. // 页面js类
  1178. string indexJsCode = codeGeneratorApp.IndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1179. // 表单类
  1180. string formCode = codeGeneratorApp.FormCreate(baseInfoObj, formDataObj, compontMap);
  1181. // 表单js类
  1182. string formJsCode = codeGeneratorApp.FormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  1183. // api接口类
  1184. string apiCode = codeGeneratorApp.ApiCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1185. // 移动页面
  1186. string appIndexCode = codeGeneratorApp.AppIndexCreate(baseInfoObj, compontMap, queryDataObj);
  1187. // 移动页面JS
  1188. string appIndexJsCode = codeGeneratorApp.AppIndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1189. // 移动页面表单
  1190. string appFormCode = codeGeneratorApp.AppFormCreate(baseInfoObj, formDataObj, compontMap);
  1191. // 移动表单页面JS
  1192. string appFormJsCode = codeGeneratorApp.AppFormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  1193. var jsonData = new
  1194. {
  1195. entityCode,
  1196. mapCode,
  1197. serviceCode,
  1198. bllCode,
  1199. ibllCode,
  1200. controllerCode,
  1201. indexCode,
  1202. indexJsCode,
  1203. formCode,
  1204. formJsCode,
  1205. apiCode,
  1206. appIndexCode = appIndexCode + appIndexJsCode,
  1207. appFormCode = appFormCode + appFormJsCode
  1208. };
  1209. return Success(jsonData);
  1210. }
  1211. /// <summary>
  1212. /// 自定义开发模板代码生成(创建)
  1213. /// </summary>
  1214. /// <param name="databaseLinkId">数据库连接ID</param>
  1215. /// <param name="dbTable">数据表</param>
  1216. /// <param name="formData">表单数据</param>
  1217. /// <param name="queryData">查询数据</param>
  1218. /// <param name="colData">列表数据</param>
  1219. /// <param name="baseInfo">基础信息</param>
  1220. /// <param name="moduleEntityJson">系统功能配置信息</param>
  1221. /// <returns></returns>
  1222. [HttpPost]
  1223. [AjaxOnly]
  1224. public ActionResult CreateAppCustmerCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo, string moduleEntityJson, string functionEntityJson)
  1225. {
  1226. // 数据
  1227. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  1228. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  1229. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  1230. ColModel colDataObj = colData.ToObject<ColModel>();
  1231. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  1232. FunctionEntity functionEntity = functionEntityJson.ToObject<FunctionEntity>();
  1233. functionEntity.F_Url = baseInfoObj.outputArea + "/" + baseInfoObj.name;
  1234. functionIBLL.SaveEntity("", functionEntity, null);
  1235. var moduleEntity = moduleEntityJson.ToObject<ModuleEntity>();
  1236. moduleEntity.F_Target = "iframe";
  1237. moduleEntity.F_UrlAddress = "/" + baseInfoObj.outputArea + "/" + baseInfoObj.name + "/Index";
  1238. // 按钮
  1239. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  1240. foreach (var btn in colDataObj.btns)
  1241. {
  1242. switch (btn)
  1243. {
  1244. case "add":
  1245. ModuleButtonEntity addButtonEntity = new ModuleButtonEntity();
  1246. addButtonEntity.Create();
  1247. addButtonEntity.F_EnCode = "lr_add";
  1248. addButtonEntity.F_FullName = "新增";
  1249. moduleButtonList.Add(addButtonEntity);
  1250. break;
  1251. case "edit":
  1252. ModuleButtonEntity editButtonEntity = new ModuleButtonEntity();
  1253. editButtonEntity.Create();
  1254. editButtonEntity.F_EnCode = "lr_edit";
  1255. editButtonEntity.F_FullName = "编辑";
  1256. moduleButtonList.Add(editButtonEntity);
  1257. break;
  1258. case "delete":
  1259. ModuleButtonEntity deleteButtonEntity = new ModuleButtonEntity();
  1260. deleteButtonEntity.Create();
  1261. deleteButtonEntity.F_EnCode = "lr_delete";
  1262. deleteButtonEntity.F_FullName = "删除";
  1263. moduleButtonList.Add(deleteButtonEntity);
  1264. break;
  1265. case "print":
  1266. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  1267. printButtonEntity.Create();
  1268. printButtonEntity.F_EnCode = "lr_print";
  1269. printButtonEntity.F_FullName = "打印";
  1270. moduleButtonList.Add(printButtonEntity);
  1271. break;
  1272. }
  1273. }
  1274. foreach (var btn in colDataObj.btnexs)
  1275. {
  1276. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  1277. printButtonEntity.Create();
  1278. printButtonEntity.F_EnCode = btn.id;
  1279. printButtonEntity.F_FullName = btn.name;
  1280. moduleButtonList.Add(printButtonEntity);
  1281. }
  1282. // 列表
  1283. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  1284. foreach (var col in colDataObj.fields)
  1285. {
  1286. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  1287. moduleColumnEntity.Create();
  1288. moduleColumnEntity.F_EnCode = col.field;
  1289. moduleColumnEntity.F_FullName = col.fieldName;
  1290. moduleColumnEntity.F_ParentId = "0";
  1291. moduleColumnList.Add(moduleColumnEntity);
  1292. }
  1293. // 表单字段
  1294. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  1295. // 将表单数据进行一次转化
  1296. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  1297. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  1298. foreach (var tab in formDataObj)
  1299. {
  1300. foreach (var compont in tab.componts)
  1301. {
  1302. ModuleFormEntity moduleFormEntity = new ModuleFormEntity();
  1303. moduleFormEntity.Create();
  1304. moduleFormEntity.F_EnCode = compont.field;
  1305. moduleFormEntity.F_FullName = compont.title;
  1306. moduleFormEntitys.Add(moduleFormEntity);
  1307. if (!string.IsNullOrEmpty(compont.table))
  1308. {
  1309. compontMap.Add(compont.table + compont.field, compont);
  1310. compontMap2.Add(compont.id, compont);
  1311. }
  1312. }
  1313. }
  1314. var moduleEntityTemp = moduleIBLL.GetModuleByUrl(moduleEntity.F_UrlAddress);
  1315. if (moduleEntityTemp == null)
  1316. {
  1317. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);//模块功能cbb
  1318. }
  1319. // 实体类 映射类
  1320. string codeContent = "";
  1321. string mainTable = "";
  1322. foreach (var tableOne in dbTableObj)
  1323. {
  1324. bool isMain = false;
  1325. if (string.IsNullOrEmpty(tableOne.relationName))
  1326. {
  1327. mainTable = tableOne.name;
  1328. isMain = true;
  1329. }
  1330. // 实体类
  1331. codeContent = codeGeneratorApp.EntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain);
  1332. codeGenerator.CreateEntityCodeFile(baseInfoObj, tableOne.name, codeContent);
  1333. // 映射类
  1334. codeContent = codeGeneratorApp.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  1335. codeGenerator.CreateMapCodeFile(baseInfoObj, tableOne.name, codeContent);
  1336. }
  1337. // 服务类
  1338. codeContent = codeGeneratorApp.ServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj);
  1339. codeGenerator.CreateSerivceCodeFile(baseInfoObj, codeContent);
  1340. // 业务类
  1341. codeContent = codeGeneratorApp.BllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1342. codeGenerator.CreateBLLCodeFile(baseInfoObj, codeContent);
  1343. // 业务接口类
  1344. codeContent = codeGeneratorApp.IBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1345. codeGenerator.CreateIBLLCodeFile(baseInfoObj, codeContent);
  1346. // 控制器类
  1347. codeContent = codeGeneratorApp.ControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1348. codeGenerator.CreateControllerCodeFile(baseInfoObj, codeContent);
  1349. // 页面类
  1350. codeContent = codeGeneratorApp.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  1351. codeGenerator.CreateIndexCodeFile(baseInfoObj, codeContent);
  1352. // 页面js类
  1353. codeContent = codeGeneratorApp.IndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1354. codeGenerator.CreateIndexJSCodeFile(baseInfoObj, codeContent);
  1355. // 表单类
  1356. codeContent = codeGeneratorApp.FormCreate(baseInfoObj, formDataObj, compontMap);
  1357. codeGenerator.CreateFormCodeFile(baseInfoObj, codeContent);
  1358. // 表单js类
  1359. codeContent = codeGeneratorApp.FormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  1360. codeGenerator.CreateFormJSCodeFile(baseInfoObj, codeContent);
  1361. // api接口类
  1362. codeContent = codeGeneratorApp.ApiCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1363. codeGenerator.CreateApiFile(baseInfoObj, codeContent);
  1364. // 移动页面
  1365. codeContent = codeGeneratorApp.AppIndexCreate(baseInfoObj, compontMap, queryDataObj);
  1366. codeGenerator.CreateAppIndexCodeFile(baseInfoObj, codeContent, "html");
  1367. // 移动页面JS
  1368. codeContent = codeGeneratorApp.AppIndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1369. codeGenerator.CreateAppIndexCodeFile(baseInfoObj, codeContent, "js");
  1370. codeGenerator.CreateAppIndexCodeFile(baseInfoObj, "", "css");
  1371. // 移动页面表单
  1372. codeContent = codeGeneratorApp.AppFormCreate(baseInfoObj, formDataObj, compontMap);
  1373. codeGenerator.CreateAppFormCodeFile(baseInfoObj, codeContent, "html");
  1374. // 移动表单页面JS
  1375. codeContent = codeGeneratorApp.AppFormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  1376. codeGenerator.CreateAppFormCodeFile(baseInfoObj, codeContent, "js");
  1377. codeGenerator.CreateAppFormCodeFile(baseInfoObj, "", "css");
  1378. return Success("创建成功");
  1379. }
  1380. #endregion
  1381. #region 小程序开发模板
  1382. /// <summary>
  1383. /// 移动开发模板代码生成
  1384. /// </summary>
  1385. /// <param name="databaseLinkId">数据库连接ID</param>
  1386. /// <param name="dbTable">数据表</param>
  1387. /// <param name="formData">表单数据</param>
  1388. /// <param name="queryData">查询数据</param>
  1389. /// <param name="colData">列表数据</param>
  1390. /// <param name="baseInfo">基础信息</param>
  1391. /// <returns></returns>
  1392. [HttpPost]
  1393. [AjaxOnly]
  1394. public ActionResult LookWxCustmerCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo)
  1395. {
  1396. // 数据实体化
  1397. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  1398. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  1399. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  1400. ColModel colDataObj = colData.ToObject<ColModel>();
  1401. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  1402. // 将表单数据进行一次转化
  1403. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  1404. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  1405. foreach (var tab in formDataObj)
  1406. {
  1407. foreach (var compont in tab.componts)
  1408. {
  1409. if (!string.IsNullOrEmpty(compont.table))
  1410. {
  1411. compontMap.Add(compont.table + compont.field, compont);
  1412. compontMap2.Add(compont.id, compont);
  1413. }
  1414. }
  1415. }
  1416. // 实体类 映射类
  1417. string entityCode = "";
  1418. string mapCode = "";
  1419. string mainTable = "";
  1420. foreach (var tableOne in dbTableObj)
  1421. {
  1422. bool isMain = false;
  1423. if (string.IsNullOrEmpty(tableOne.relationName))
  1424. {
  1425. mainTable = tableOne.name;
  1426. isMain = true;
  1427. }
  1428. // 实体类
  1429. entityCode += codeGeneratorWx.EntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain);
  1430. // 映射类
  1431. mapCode += codeGeneratorWx.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  1432. }
  1433. // 服务类
  1434. string serviceCode = codeGeneratorWx.ServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj);
  1435. // 业务类
  1436. string bllCode = codeGeneratorWx.BllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1437. // 业务接口类
  1438. string ibllCode = codeGeneratorWx.IBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1439. // 控制器类
  1440. string controllerCode = codeGeneratorWx.ControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1441. // 页面类
  1442. string indexCode = codeGeneratorWx.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  1443. // 页面js类
  1444. string indexJsCode = codeGeneratorWx.IndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1445. // 表单类
  1446. string formCode = codeGeneratorWx.FormCreate(baseInfoObj, formDataObj, compontMap);
  1447. // 表单js类
  1448. string formJsCode = codeGeneratorWx.FormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  1449. // api接口类
  1450. string apiCode = codeGeneratorWx.ApiCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1451. // 移动页面
  1452. string appIndexCode = codeGeneratorWx.AppIndexCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1453. // 移动页面表单
  1454. string appFormCode = codeGeneratorWx.AppFormCreate(baseInfoObj, dbTableObj, formDataObj, compontMap, colDataObj);
  1455. var jsonData = new
  1456. {
  1457. entityCode,
  1458. mapCode,
  1459. serviceCode,
  1460. bllCode,
  1461. ibllCode,
  1462. controllerCode,
  1463. indexCode,
  1464. indexJsCode,
  1465. formCode,
  1466. formJsCode,
  1467. apiCode,
  1468. appIndexCode = appIndexCode,
  1469. appFormCode = appFormCode
  1470. };
  1471. return Success(jsonData);
  1472. }
  1473. /// <summary>
  1474. /// 自定义开发模板代码生成(创建)
  1475. /// </summary>
  1476. /// <param name="databaseLinkId">数据库连接ID</param>
  1477. /// <param name="dbTable">数据表</param>
  1478. /// <param name="formData">表单数据</param>
  1479. /// <param name="queryData">查询数据</param>
  1480. /// <param name="colData">列表数据</param>
  1481. /// <param name="baseInfo">基础信息</param>
  1482. /// <param name="moduleEntityJson">系统功能配置信息</param>
  1483. /// <returns></returns>
  1484. [HttpPost]
  1485. [AjaxOnly]
  1486. public ActionResult CreateWxCustmerCode(string databaseLinkId, string dbTable, string formData, string queryData, string colData, string baseInfo, string moduleEntityJson, string functionEntityJson)
  1487. {
  1488. // 数据
  1489. List<DbTableModel> dbTableObj = dbTable.ToObject<List<DbTableModel>>();
  1490. List<CodeFormTabModel> formDataObj = formData.ToObject<List<CodeFormTabModel>>();
  1491. QueryModel queryDataObj = queryData.ToObject<QueryModel>();
  1492. ColModel colDataObj = colData.ToObject<ColModel>();
  1493. BaseModel baseInfoObj = baseInfo.ToObject<BaseModel>();
  1494. FunctionEntity functionEntity = functionEntityJson.ToObject<FunctionEntity>();
  1495. functionEntity.F_Url = baseInfoObj.outputArea + "/" + baseInfoObj.name;
  1496. functionIBLL.SaveEntity("", functionEntity, null);
  1497. var moduleEntity = moduleEntityJson.ToObject<ModuleEntity>();
  1498. moduleEntity.F_Target = "iframe";
  1499. moduleEntity.F_UrlAddress = "/" + baseInfoObj.outputArea + "/" + baseInfoObj.name + "/Index";
  1500. // 按钮
  1501. List<ModuleButtonEntity> moduleButtonList = new List<ModuleButtonEntity>();
  1502. foreach (var btn in colDataObj.btns)
  1503. {
  1504. switch (btn)
  1505. {
  1506. case "add":
  1507. ModuleButtonEntity addButtonEntity = new ModuleButtonEntity();
  1508. addButtonEntity.Create();
  1509. addButtonEntity.F_EnCode = "lr_add";
  1510. addButtonEntity.F_FullName = "新增";
  1511. moduleButtonList.Add(addButtonEntity);
  1512. break;
  1513. case "edit":
  1514. ModuleButtonEntity editButtonEntity = new ModuleButtonEntity();
  1515. editButtonEntity.Create();
  1516. editButtonEntity.F_EnCode = "lr_edit";
  1517. editButtonEntity.F_FullName = "编辑";
  1518. moduleButtonList.Add(editButtonEntity);
  1519. break;
  1520. case "delete":
  1521. ModuleButtonEntity deleteButtonEntity = new ModuleButtonEntity();
  1522. deleteButtonEntity.Create();
  1523. deleteButtonEntity.F_EnCode = "lr_delete";
  1524. deleteButtonEntity.F_FullName = "删除";
  1525. moduleButtonList.Add(deleteButtonEntity);
  1526. break;
  1527. case "print":
  1528. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  1529. printButtonEntity.Create();
  1530. printButtonEntity.F_EnCode = "lr_print";
  1531. printButtonEntity.F_FullName = "打印";
  1532. moduleButtonList.Add(printButtonEntity);
  1533. break;
  1534. }
  1535. }
  1536. foreach (var btn in colDataObj.btnexs)
  1537. {
  1538. ModuleButtonEntity printButtonEntity = new ModuleButtonEntity();
  1539. printButtonEntity.Create();
  1540. printButtonEntity.F_EnCode = btn.id;
  1541. printButtonEntity.F_FullName = btn.name;
  1542. moduleButtonList.Add(printButtonEntity);
  1543. }
  1544. // 列表
  1545. List<ModuleColumnEntity> moduleColumnList = new List<ModuleColumnEntity>();
  1546. foreach (var col in colDataObj.fields)
  1547. {
  1548. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  1549. moduleColumnEntity.Create();
  1550. moduleColumnEntity.F_EnCode = col.field;
  1551. moduleColumnEntity.F_FullName = col.fieldName;
  1552. moduleColumnEntity.F_ParentId = "0";
  1553. moduleColumnList.Add(moduleColumnEntity);
  1554. }
  1555. // 表单字段
  1556. List<ModuleFormEntity> moduleFormEntitys = new List<ModuleFormEntity>();
  1557. // 将表单数据进行一次转化
  1558. Dictionary<string, CodeFormCompontModel> compontMap = new Dictionary<string, CodeFormCompontModel>();
  1559. Dictionary<string, CodeFormCompontModel> compontMap2 = new Dictionary<string, CodeFormCompontModel>();
  1560. foreach (var tab in formDataObj)
  1561. {
  1562. foreach (var compont in tab.componts)
  1563. {
  1564. ModuleFormEntity moduleFormEntity = new ModuleFormEntity();
  1565. moduleFormEntity.Create();
  1566. moduleFormEntity.F_EnCode = compont.field;
  1567. moduleFormEntity.F_FullName = compont.title;
  1568. moduleFormEntitys.Add(moduleFormEntity);
  1569. if (!string.IsNullOrEmpty(compont.table))
  1570. {
  1571. compontMap.Add(compont.table + compont.field, compont);
  1572. compontMap2.Add(compont.id, compont);
  1573. }
  1574. }
  1575. }
  1576. var moduleEntityTemp = moduleIBLL.GetModuleByUrl(moduleEntity.F_UrlAddress);
  1577. if (moduleEntityTemp == null)
  1578. {
  1579. moduleIBLL.SaveEntity("", moduleEntity, moduleButtonList, moduleColumnList, moduleFormEntitys);//模块功能cbb
  1580. }
  1581. // 实体类 映射类
  1582. string codeContent = "";
  1583. string mainTable = "";
  1584. foreach (var tableOne in dbTableObj)
  1585. {
  1586. bool isMain = false;
  1587. if (string.IsNullOrEmpty(tableOne.relationName))
  1588. {
  1589. mainTable = tableOne.name;
  1590. isMain = true;
  1591. }
  1592. // 实体类
  1593. codeContent = codeGeneratorWx.EntityCreate(databaseLinkId, tableOne.name, tableOne.pk, baseInfoObj, colDataObj, isMain);
  1594. codeGenerator.CreateEntityCodeFile(baseInfoObj, tableOne.name, codeContent);
  1595. // 映射类
  1596. codeContent = codeGeneratorWx.MappingCreate(tableOne.name, tableOne.pk, baseInfoObj);
  1597. codeGenerator.CreateMapCodeFile(baseInfoObj, tableOne.name, codeContent);
  1598. }
  1599. // 服务类
  1600. codeContent = codeGeneratorWx.ServiceCreate(databaseLinkId, dbTableObj, compontMap, queryDataObj, colDataObj, baseInfoObj);
  1601. codeGenerator.CreateSerivceCodeFile(baseInfoObj, codeContent);
  1602. // 业务类
  1603. codeContent = codeGeneratorWx.BllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1604. codeGenerator.CreateBLLCodeFile(baseInfoObj, codeContent);
  1605. // 业务接口类
  1606. codeContent = codeGeneratorWx.IBllCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1607. codeGenerator.CreateIBLLCodeFile(baseInfoObj, codeContent);
  1608. // 控制器类
  1609. codeContent = codeGeneratorWx.ControllerCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1610. codeGenerator.CreateControllerCodeFile(baseInfoObj, codeContent);
  1611. // 页面类
  1612. codeContent = codeGeneratorWx.IndexCreate(baseInfoObj, compontMap, queryDataObj, colDataObj);
  1613. codeGenerator.CreateIndexCodeFile(baseInfoObj, codeContent);
  1614. // 页面js类
  1615. codeContent = codeGeneratorWx.IndexJSCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1616. codeGenerator.CreateIndexJSCodeFile(baseInfoObj, codeContent);
  1617. // 表单类
  1618. codeContent = codeGeneratorWx.FormCreate(baseInfoObj, formDataObj, compontMap);
  1619. codeGenerator.CreateFormCodeFile(baseInfoObj, codeContent);
  1620. // 表单js类
  1621. codeContent = codeGeneratorWx.FormJsCreate(baseInfoObj, dbTableObj, formDataObj, compontMap2);
  1622. codeGenerator.CreateFormJSCodeFile(baseInfoObj, codeContent);
  1623. // api接口类
  1624. codeContent = codeGeneratorWx.ApiCreate(baseInfoObj, dbTableObj, compontMap, colDataObj);
  1625. codeGenerator.CreateApiFile(baseInfoObj, codeContent);
  1626. // 移动页面
  1627. codeContent = codeGeneratorWx.AppIndexCreate(baseInfoObj, dbTableObj, compontMap, colDataObj, queryDataObj);
  1628. codeGenerator.CreateWxIndexCodeFile(baseInfoObj, codeContent, "vue");
  1629. // 移动页面表单
  1630. codeContent = codeGeneratorWx.AppFormCreate(baseInfoObj, dbTableObj, formDataObj, compontMap, colDataObj);
  1631. codeGenerator.CreateWxFormCodeFile(baseInfoObj, codeContent, "vue");
  1632. return Success("创建成功");
  1633. }
  1634. #endregion
  1635. #region 私有方法
  1636. /// <summary>
  1637. /// 获取项目根目录
  1638. /// </summary>
  1639. /// <returns></returns>
  1640. private string GetRootDirectory()
  1641. {
  1642. string rootDirectory = Server.MapPath("~/Web.config"); ;
  1643. for (int i = 0; i < 2; i++)
  1644. {
  1645. rootDirectory = rootDirectory.Substring(0, rootDirectory.LastIndexOf('\\'));
  1646. }
  1647. return rootDirectory;
  1648. }
  1649. #endregion
  1650. }
  1651. }