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.

203 lines
8.2 KiB

4 days ago
  1. using NFine.Application.SystemManage;
  2. using NFine.Code;
  3. using NFine.Domain._03_Entity.SystemManage;
  4. using NFine.Domain.Entity.SystemManage;
  5. using NPOI.SS.Formula.Functions;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Linq.Expressions;
  9. using System.Web.Mvc;
  10. using System.Web.Razor.Tokenizer.Symbols;
  11. namespace NFine.Web.Areas.SystemManage.Controllers
  12. {
  13. public class OrganizeByVendorController : ControllerBase
  14. {
  15. private OrganizeByVendorApp organizeApp = new OrganizeByVendorApp();
  16. [HttpGet]
  17. [HandlerAjaxOnly]
  18. public ActionResult GetTreeSelectJson()
  19. {
  20. string RoleEnCode = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  21. string RoleFullName = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleFullName;
  22. var data = organizeApp.GetList();
  23. var treeList = new List<TreeSelectModel>();
  24. if (RoleFullName.Contains("采购"))
  25. {
  26. var mainddata = data.Where(x => x.F_EnCode.Contains(RoleEnCode)).ToList();
  27. var detailpart = new List<OrganizeByVendorEntity>();
  28. //var query = from a in data
  29. // join b in data on a.F_Id equals b.F_ParentId into ab
  30. // from detail in ab.DefaultIfEmpty()
  31. // where a.F_EnCode == RoleEnCode
  32. // select new {
  33. // main=a,
  34. // dets=detail
  35. // };
  36. foreach (var item in mainddata)
  37. {
  38. detailpart = data.Where(x => item.F_Id == x.F_ParentId).ToList();
  39. TreeSelectModel treeModel = new TreeSelectModel();
  40. treeModel.id = item.F_Id;
  41. treeModel.text = item.F_FullName;
  42. treeModel.parentId = item.F_ParentId;
  43. treeModel.data = item;
  44. treeList.Add(treeModel);
  45. foreach (var detail in detailpart)
  46. {
  47. TreeSelectModel treeModeldetail = new TreeSelectModel();
  48. treeModeldetail.id = detail.F_Id;
  49. treeModeldetail.text = detail.F_FullName; ;
  50. treeModeldetail.parentId = detail.F_ParentId;
  51. treeModel.data = detail;
  52. treeList.Add(treeModeldetail);
  53. }
  54. }
  55. }
  56. else
  57. {
  58. foreach (OrganizeByVendorEntity item in data)
  59. {
  60. TreeSelectModel treeModel = new TreeSelectModel();
  61. //bool hasChildren = data.Count(t => t.F_ParentId == item.F_Id) == 0 ? false : true;
  62. treeModel.id = item.F_Id;
  63. treeModel.text = item.F_FullName;
  64. treeModel.parentId = item.F_ParentId;
  65. treeModel.data = item;
  66. treeList.Add(treeModel);
  67. }
  68. }
  69. return Content(treeList.TreeSelectJson());
  70. }
  71. [HttpGet]
  72. [HandlerAjaxOnly]
  73. public ActionResult GetTreeJson()
  74. {
  75. var data = organizeApp.GetList();
  76. var treeList = new List<TreeViewModel>();
  77. foreach (OrganizeByVendorEntity item in data)
  78. {
  79. TreeViewModel tree = new TreeViewModel();
  80. bool hasChildren = data.Count(t => t.F_ParentId == item.F_Id) == 0 ? false : true;
  81. tree.id = item.F_Id;
  82. tree.text = item.F_FullName;
  83. tree.value = item.F_EnCode;
  84. tree.parentId = item.F_ParentId;
  85. tree.isexpand = true;
  86. tree.complete = true;
  87. tree.hasChildren = hasChildren;
  88. treeList.Add(tree);
  89. }
  90. return Content(treeList.TreeViewJson());
  91. }
  92. [HttpGet]
  93. [HandlerAjaxOnly]
  94. public ActionResult GetTreeGridJson(string keyword)
  95. {
  96. string RoleEnCode = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  97. string RoleFullName = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleFullName;
  98. var data = organizeApp.GetList();
  99. if (!string.IsNullOrEmpty(keyword))
  100. {
  101. data = data.Where(x=>x.F_FullName.Contains(keyword)).ToList();
  102. }
  103. var treeList = new List<TreeGridModel>();
  104. if (RoleFullName.Contains("采购"))
  105. {
  106. var mainddata = data.Where(x => x.F_EnCode.Contains(RoleEnCode)).ToList();
  107. var detailpart = new List<OrganizeByVendorEntity>();
  108. //var query = from a in data
  109. // join b in data on a.F_Id equals b.F_ParentId into ab
  110. // from detail in ab.DefaultIfEmpty()
  111. // where a.F_EnCode == RoleEnCode
  112. // select new {
  113. // main=a,
  114. // dets=detail
  115. // };
  116. foreach (var item in mainddata)
  117. {
  118. detailpart = data.Where(x => item.F_Id == x.F_ParentId).ToList();
  119. TreeGridModel treeModel = new TreeGridModel();
  120. treeModel.id = item.F_Id;
  121. treeModel.isLeaf = true;
  122. treeModel.parentId = item.F_ParentId;
  123. treeModel.expanded = true;
  124. treeModel.entityJson = item.ToJson();
  125. treeList.Add(treeModel);
  126. foreach (var detail in detailpart)
  127. {
  128. TreeGridModel treeModeldetail = new TreeGridModel();
  129. treeModeldetail.id = detail.F_Id;
  130. treeModeldetail.isLeaf = false;
  131. treeModeldetail.parentId = detail.F_ParentId;
  132. treeModeldetail.expanded = false;
  133. treeModeldetail.entityJson = detail.ToJson();
  134. treeList.Add(treeModeldetail);
  135. }
  136. }
  137. }
  138. else
  139. {
  140. foreach (OrganizeByVendorEntity item in data)
  141. {
  142. TreeGridModel treeModel = new TreeGridModel();
  143. bool hasChildren = data.Count(t => t.F_ParentId == item.F_Id) == 0 ? false : true;
  144. treeModel.id = item.F_Id;
  145. treeModel.isLeaf = hasChildren;
  146. treeModel.parentId = item.F_ParentId;
  147. treeModel.expanded = hasChildren;
  148. treeModel.entityJson = item.ToJson();
  149. treeList.Add(treeModel);
  150. }
  151. }
  152. //foreach (var item in query)
  153. //{
  154. // TreeGridModel treeModel = new TreeGridModel();
  155. // bool hasChildren = data.Count(t => t.F_ParentId == item.F_Id) == 0 ? false : true;
  156. // treeModel.id = item.main.F_Id;
  157. // treeModel.isLeaf = hasChildren;
  158. // treeModel.parentId = item.F_ParentId;
  159. // treeModel.expanded = hasChildren;
  160. // treeModel.entityJson = item.ToJson();
  161. // treeList.Add(treeModel);
  162. //}
  163. return Content(treeList.TreeGridJson());
  164. }
  165. [HttpGet]
  166. [HandlerAjaxOnly]
  167. public ActionResult GetFormJson(string keyValue)
  168. {
  169. var data = organizeApp.GetForm(keyValue);
  170. return Content(data.ToJson());
  171. }
  172. [HttpPost]
  173. [HandlerAjaxOnly]
  174. [ValidateAntiForgeryToken]
  175. public ActionResult SubmitForm(OrganizeByVendorEntity organizeEntity, string keyValue)
  176. {
  177. organizeApp.SubmitForm(organizeEntity, keyValue);
  178. return Success("操作成功。");
  179. }
  180. [HttpPost]
  181. [HandlerAjaxOnly]
  182. [HandlerAuthorize]
  183. [ValidateAntiForgeryToken]
  184. public ActionResult DeleteForm(string keyValue)
  185. {
  186. organizeApp.DeleteForm(keyValue);
  187. return Success("删除成功。");
  188. }
  189. }
  190. }