TsysOrganizeRepository.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. using Ropin.Inspection.Common;
  2. using Ropin.Inspection.Model.Entities;
  3. using Ropin.Inspection.Model.ViewModel;
  4. using Ropin.Inspection.Repository.Interface;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace Ropin.Inspection.Repository
  11. {
  12. public class TsysOrganizeRepository : RepositoryBase<TSYS_Org, Guid>, ITsysOrganizeRepository
  13. {
  14. public TsysOrganizeRepository(InspectionDbContext dbContext) : base(dbContext)
  15. {
  16. }
  17. public int GetMaxKid()
  18. {
  19. //int iMax = from q in DbContext.TSYS_Org orderby q.K_ID descending select (q.K_ID); //DbContext.Database.SqlQuery("SELECT MAX(K_ID) From TSYS_Org");
  20. var table = DbContext.Database.SqlQuery("SELECT MAX(K_ID) From TSYS_Org");
  21. int iMax = Convert.ToInt32(table.Rows[0][0]) ;
  22. return iMax;
  23. }
  24. public async Task<List<TsysOrganizeTree>> GetListTreeAsync(string licenseTypeCode,string licenseCode, Guid? orgCode, string status)
  25. {
  26. //C_LicenseCode
  27. //MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("qRCode", "") };
  28. //string sql = "SELECT * From TSYS_Org";
  29. //List<TsysOrganizeViewModel> model = EntityFrameworkCoreExtensions.GetList<TsysOrganizeViewModel>(DbContext.Database, sql, parameters).ToList();
  30. //var v = DbContext.TSYS_Org.ToList();
  31. if (string.IsNullOrEmpty(licenseTypeCode))
  32. throw new Exception("没有许可证");
  33. IEnumerable<TSYS_Org> orgs = null;
  34. //if (licenseCode.StartsWith("SYSTEM"))
  35. if (licenseTypeCode == TsysLicenseType.SYSTEM)
  36. orgs = this.GetAll();
  37. else
  38. orgs = await this.GetByConditionAsync(a => a.C_LicenseCode == licenseCode);
  39. //IEnumerable<TSYS_Org> orgs = await this.GetByConditionAsync(a => a.C_LicenseCode == licenseCode); //.GetAll().ToList();
  40. List<TSYS_Org> list = null;
  41. var treeList = new List<TsysOrganizeTree>();
  42. if(status!=null)
  43. list = orgs.Where(i=>i.C_Status ==status).ToList();
  44. else
  45. list = orgs.ToList();
  46. if (Guid.Empty.Equals(orgCode) || orgCode == null|| licenseCode.StartsWith("SYSTEM"))
  47. {
  48. foreach (var item in list.Where(m => m.C_ParentCode == null).OrderBy(m => m.I_Sort)) //&& m.C_Status == "1"
  49. {
  50. //获得子级
  51. var children = RecursionOrganize(list, new List<TsysOrganizeTree>(), item.C_Code);
  52. treeList.Add(new TsysOrganizeTree()
  53. {
  54. K_ID = item.K_ID,
  55. C_LicenseCode = item.C_LicenseCode,
  56. //C_LicenseName = item.C_LicenseName,
  57. C_Code = item.C_Code,
  58. C_Name = item.C_Name,
  59. C_SName = item.C_SName,
  60. C_LName = item.C_LName,
  61. C_Level = item.C_Level,
  62. C_ParentCode = item.C_ParentCode,
  63. C_Type = item.C_Type,
  64. C_Phone = item.C_Phone,
  65. C_Linker = item.C_Linker,
  66. C_GIS = item.C_GIS,
  67. I_Sort = item.I_Sort,
  68. C_Remark = item.C_Remark,
  69. C_CreateBy = item.C_CreateBy,
  70. D_CreateOn = item.D_CreateOn,
  71. C_LastUpdatedBy = item.C_LastUpdatedBy,
  72. D_LastUpdatedOn = item.D_LastUpdatedOn,
  73. C_Status = item.C_Status,
  74. Open = children.Count > 0,
  75. Children = children.Count == 0 ? null : children
  76. });
  77. }
  78. }
  79. else
  80. {
  81. foreach (var item in list.Where(m => m.C_Code.Equals(orgCode) && m.C_Status == "1").OrderBy(m => m.I_Sort))
  82. {
  83. //获得子级
  84. var children = RecursionOrganize(list, new List<TsysOrganizeTree>(), orgCode);
  85. treeList.Add(new TsysOrganizeTree()
  86. {
  87. K_ID = item.K_ID,
  88. C_LicenseCode = item.C_LicenseCode,
  89. C_Code = item.C_Code,
  90. C_Name = item.C_Name,
  91. C_SName = item.C_SName,
  92. C_LName = item.C_LName,
  93. C_Level = item.C_Level,
  94. C_ParentCode = item.C_ParentCode,
  95. C_Type = item.C_Type,
  96. C_Phone = item.C_Phone,
  97. C_Linker = item.C_Linker,
  98. C_GIS = item.C_GIS,
  99. I_Sort = item.I_Sort,
  100. C_Remark = item.C_Remark,
  101. C_CreateBy = item.C_CreateBy,
  102. D_CreateOn = item.D_CreateOn,
  103. C_LastUpdatedBy = item.C_LastUpdatedBy,
  104. D_LastUpdatedOn = item.D_LastUpdatedOn,
  105. C_Status = item.C_Status,
  106. Open = children.Count > 0,
  107. Children = children.Count == 0 ? null : children
  108. });
  109. }
  110. }
  111. return await Task.Run(() => treeList);
  112. }
  113. public async Task<TsysOrg> GetOrgsByAsync(string licenseCode)
  114. {
  115. if (string.IsNullOrEmpty(licenseCode))
  116. throw new Exception("没有许可证");
  117. IEnumerable<TSYS_Org> orgs = null;
  118. if ("SYSTEM_001" == licenseCode)
  119. orgs = this.GetAll();
  120. else
  121. orgs = await this.GetByConditionAsync(a => a.C_LicenseCode == licenseCode); //.GetAll().ToList();
  122. List<TSYS_Org> list = orgs.ToList();
  123. TsysOrg tysOrg = new TsysOrg();
  124. tysOrg.OwnerOrgList = await GetOrganizeByTypeAsync(list, "PARTY_TYPE_001");
  125. tysOrg.PlatformOrgList = await GetOrganizeByTypeAsync(list, "PARTY_TYPE_004");
  126. tysOrg.SuperviseOrgList = await GetOrganizeByTypeAsync(list, "PARTY_TYPE_002");
  127. tysOrg.SupplierOrgList = await GetOrganizeByTypeAsync(list, "PARTY_TYPE_003");
  128. return await Task.Run(() => tysOrg);
  129. }
  130. async Task<List<TsysOrganizeTree>> GetOrganizeByTypeAsync(List<TSYS_Org> list,string type)
  131. {
  132. var treeList = new List<TsysOrganizeTree>();
  133. foreach (var item in list.Where(m => m.C_ParentCode == null && m.C_Type == type).OrderBy(m => m.I_Sort))
  134. {
  135. //获得子级
  136. var children = RecursionOrganize(list, new List<TsysOrganizeTree>(), item.C_Code);
  137. treeList.Add(new TsysOrganizeTree()
  138. {
  139. K_ID = item.K_ID,
  140. C_LicenseCode = item.C_LicenseCode,
  141. C_Code = item.C_Code,
  142. C_Name = item.C_Name,
  143. C_SName = item.C_SName,
  144. C_LName = item.C_LName,
  145. C_Level = item.C_Level,
  146. C_ParentCode = item.C_ParentCode,
  147. C_Type = item.C_Type,
  148. C_Phone = item.C_Phone,
  149. C_Linker = item.C_Linker,
  150. C_GIS = item.C_GIS,
  151. I_Sort = item.I_Sort,
  152. C_Remark = item.C_Remark,
  153. C_CreateBy = item.C_CreateBy,
  154. D_CreateOn = item.D_CreateOn,
  155. C_LastUpdatedBy = item.C_LastUpdatedBy,
  156. D_LastUpdatedOn = item.D_LastUpdatedOn,
  157. C_Status = item.C_Status,
  158. Open = children.Count > 0,
  159. Children = children.Count == 0 ? null : children
  160. });
  161. }
  162. return await Task.Run(() => treeList);
  163. }
  164. public async Task<List<TsysOrganizeTree>> GetByOrganizeCodeAsync(Guid id)
  165. {
  166. List<TSYS_Org> list = this.GetAll().ToList().OrderBy(m => m.I_Sort).ToList();
  167. var treeList = new List<TsysOrganizeTree>();
  168. var item = list.Where(m => m.C_ParentCode.Equals(id)).FirstOrDefault(); //&& m.C_Status == "1"
  169. if (item != null)
  170. {
  171. //获得子级
  172. var children = RecursionOrganize(list, new List<TsysOrganizeTree>(), item.C_Code);
  173. treeList.Add(new TsysOrganizeTree()
  174. {
  175. K_ID = item.K_ID,
  176. C_LicenseCode = item.C_LicenseCode,
  177. C_Code = item.C_Code,
  178. C_Name = item.C_Name,
  179. C_SName = item.C_SName,
  180. C_LName = item.C_LName,
  181. C_Level = item.C_Level,
  182. C_ParentCode = item.C_ParentCode,
  183. C_Type = item.C_Type,
  184. C_Phone = item.C_Phone,
  185. C_Linker = item.C_Linker,
  186. C_GIS = item.C_GIS,
  187. I_Sort = item.I_Sort,
  188. C_Remark = item.C_Remark,
  189. C_CreateBy = item.C_CreateBy,
  190. D_CreateOn = item.D_CreateOn,
  191. C_LastUpdatedBy = item.C_LastUpdatedBy,
  192. D_LastUpdatedOn = item.D_LastUpdatedOn,
  193. C_Status = item.C_Status,
  194. Open = children.Count > 0,
  195. Children = children.Count == 0 ? null : children
  196. });
  197. }
  198. return await Task.Run(() => treeList);
  199. }
  200. List<TsysOrganizeTree> RecursionOrganize(List<TSYS_Org> sourceList, List<TsysOrganizeTree> list, Guid? guid)
  201. {
  202. foreach (var row in sourceList.Where(m => m.C_ParentCode.Equals(guid) ).OrderBy(m => m.I_Sort))// && m.C_Status == "1"
  203. {
  204. var res = RecursionOrganize(sourceList, new List<TsysOrganizeTree>(), row.C_Code);
  205. list.Add(new TsysOrganizeTree()
  206. {
  207. K_ID = row.K_ID,
  208. C_LicenseCode = row.C_LicenseCode,
  209. C_Code = row.C_Code,
  210. C_Name = row.C_Name,
  211. C_SName = row.C_SName,
  212. C_LName = row.C_LName,
  213. C_Level = row.C_Level,
  214. C_ParentCode = row.C_ParentCode,
  215. C_Type = row.C_Type,
  216. C_Phone = row.C_Phone,
  217. C_Linker = row.C_Linker,
  218. C_GIS = row.C_GIS,
  219. I_Sort = row.I_Sort,
  220. C_Remark = row.C_Remark,
  221. C_CreateBy = row.C_CreateBy,
  222. D_CreateOn = row.D_CreateOn,
  223. C_LastUpdatedBy = row.C_LastUpdatedBy,
  224. D_LastUpdatedOn = row.D_LastUpdatedOn,
  225. C_Status = row.C_Status,
  226. Open = res.Count > 0,
  227. Children = res.Count > 0 ? res : null
  228. });
  229. }
  230. return list;
  231. }
  232. }
  233. }