GhbzGhxmRepository.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. using QM.KJGH.CGGL.IRepository;
  2. using QM.KJGH.CGGL.Model.Enums;
  3. using QM.KJGH.CGGL.Model.Ghxms;
  4. using QM.KJGH.Model.KJGH;
  5. using QM.OrmSqlSugar;
  6. using SqlSugar;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Threading.Tasks;
  11. using WS;
  12. using WS.AutoMapper;
  13. using WS.Orm;
  14. namespace QM.KJGH.CGGL.Repository
  15. {
  16. /// <summary>
  17. ///
  18. /// </summary>
  19. public class GhbzGhxmRepository : SqlSugarRepository<GhbzGhxm>, IGhbzGhxmRepository
  20. {
  21. /// <summary>
  22. /// 检查
  23. /// </summary>
  24. /// <param name="bsm">标识码</param>
  25. /// <returns></returns>
  26. public async Task<GhbzGhxm> CheckId(string bsm)
  27. {
  28. var model = await GetAsync(t => t.BSM == bsm && t.IS_DELETE == KJGH.Model.EnumDelete.Mormal);
  29. if (model == null)
  30. throw new UseArgumentException("数据不存在,请检查标识码是否正确");
  31. return model;
  32. }
  33. /// <summary>
  34. /// 分页获取
  35. /// </summary>
  36. /// <returns></returns>
  37. public async Task<PageData> GetPage(GhbzGhxmPage input)
  38. {
  39. var query = DbClient().Queryable<GhbzGhxm>();
  40. if (!string.IsNullOrWhiteSpace(input.XMMC))
  41. query.Where((t) => t.XMMC.Contains(input.XMMC));
  42. if (!string.IsNullOrWhiteSpace(input.GHJB))
  43. query.Where((t) => t.GHJB == input.GHJB);
  44. if (!string.IsNullOrWhiteSpace(input.GHLX))
  45. query.Where((t) => t.GHLX == input.GHLX);
  46. if (!string.IsNullOrWhiteSpace(input.DQJD))
  47. query.Where((t) => t.DQJD == input.DQJD);
  48. var page = await query.OrderBy(t => t.BSM, SqlSugar.OrderByType.Desc).Where(t => t.IS_DELETE == KJGH.Model.EnumDelete.Mormal).ToPageAsync(input.page, input.limit);
  49. page.Data = (page.Data as List<GhbzGhxm>).MapTo<GhbzGhxm, GhbzGhxmListView>();
  50. return page;
  51. }
  52. /// <summary>
  53. /// 获取
  54. /// </summary>
  55. /// <param name="bsm">标识码</param>
  56. /// <returns></returns>
  57. public async Task<GhbzGhxmView> GetById(string bsm)
  58. {
  59. var model = (await CheckId(bsm)).MapTo<GhbzGhxmView>();
  60. return model;
  61. }
  62. /// <summary>
  63. /// 添加项目
  64. /// </summary>
  65. /// <param name="ghbzGhxmDto">请求参数</param>
  66. /// <returns></returns>
  67. public async Task<GhbzGhxm> Add(GhbzGhxmDto ghbzGhxmDto, string curUser)
  68. {
  69. if ((await GetAsync(t => t.XMBH == ghbzGhxmDto.XMBH)) != null)
  70. throw new UseArgumentException("数据已存在,项目编号重复!");
  71. var model = ghbzGhxmDto.MapTo<GhbzGhxm>();
  72. model.BSM = Guid.NewGuid().ToString("N");
  73. model.CTIME = DateTime.Now;
  74. model.CUSER = curUser;
  75. model.IS_DELETE = (int)StatusEnum.Mormal;
  76. var result = await InsertAsync(model);
  77. return result;
  78. }
  79. /// <summary>
  80. /// 修改项目信息
  81. /// </summary>
  82. /// <param name="ghbzGhxmDto"></param>
  83. /// <returns></returns>
  84. public async Task<bool> Update(GhbzGhxmDto ghbzGhxmDto)
  85. {
  86. var model = await CheckId(ghbzGhxmDto.BSM);
  87. var newmodel = ghbzGhxmDto.Map(model);
  88. var result = await UpdateAsync(newmodel);
  89. return result;
  90. }
  91. public async Task<bool> Delete(string bsm)
  92. {
  93. if (string.IsNullOrEmpty(bsm))
  94. throw new UseArgumentException("请求参数错误");
  95. //Expression<Func<GhbzGhxm, bool>> conditionwhere = i => i.BSM == bsm;
  96. var result = await UpdateAsync(u => new GhbzGhxm { IS_DELETE = KJGH.Model.EnumDelete.Deleted }, i => i.BSM == bsm);
  97. return result;
  98. }
  99. /// <summary>
  100. /// 根据标识码查看详细信息
  101. /// </summary>
  102. /// <param name="bsm"></param>
  103. /// <returns></returns>
  104. public async Task<GhbzGhxmDetailDto> Detail(string bsm)
  105. {
  106. var model = (await CheckId(bsm)).MapTo<GhbzGhxmDetailDto>();
  107. var query = DbClient();
  108. //进度情况
  109. var jddata = query.Queryable<GhbzGhxmJd>().Where(t => t.XM_BSM == bsm).ToList().MapTo<GhbzGhxmJd, GhbzGhxmJdDto>();
  110. jddata.ForEach(u =>
  111. {
  112. u.JDFJ = query.Queryable<GhbzGhxmJdfjb>().Where(t => t.GL_BSM == u.BSM).ToList();
  113. });
  114. //成果目录
  115. var cgmldata = query.Queryable<GhbzGhxmCgml>().ToList().MapTo<GhbzGhxmCgml, GhbzGhxmCgmlDto>();
  116. cgmldata.ForEach(u =>
  117. {
  118. u.CG = query.Queryable<GhbzGhxmCg>().Where(t => t.ML_BSM == u.BSM && t.XM_BSM == bsm && t.IS_DELETE == KJGH.Model.EnumDelete.Mormal).ToList().MapTo<GhbzGhxmCg, GhbzGhxmCgDto>();
  119. });
  120. model.JD = jddata;
  121. model.CGML = cgmldata;
  122. return model;
  123. }
  124. /// <summary>
  125. /// 根据分组类型统计
  126. /// </summary>
  127. /// <param name="ghlx">规划类型</param>
  128. /// <returns></returns>
  129. public StatisticsView GetStatistics(string ghlx)
  130. {
  131. var query = DbClient();
  132. //var project = query.Queryable<GhbzGhxm>().Where(u => u.GHLX == ghlx & u.IS_DELETE == StatusEnum.Mormal).ToList().MapTo<GhbzGhxm, GhbzGhxmListView>();
  133. ////取出该类型得ID
  134. //var bsms = project.Select(u => u.BSM);
  135. ////按照进度统计
  136. //var process = query.Queryable<GhbzGhxmJd>().Where(it => bsms.Contains(it.XM_BSM)).GroupBy(it => it.XMJD)
  137. // .Select(it => new { xmjd = it.XMJD, count = SqlFunc.AggregateCount(it.BSM) }).ToList().ToDictionary(it => it.xmjd, it => it.count);
  138. //按照区域进度统计
  139. //var area = query.Queryable<GhbzGhxm, GhbzGhxmJd>((gg, jd) => new JoinQueryInfos(
  140. // JoinType.Left, gg.BSM == jd.XM_BSM & gg.IS_DELETE == StatusEnum.Mormal & gg.GHLX == ghlx)).GroupBy((gg, jd) => new { gg.XZQMC, jd.XMJD })
  141. // .Where((gg, jd) => gg.DQJD != null)
  142. // .Select((gg, jd) => new { xzqmc = gg.XZQMC, xmjd = jd.XMJD, count = SqlFunc.AggregateCount(jd.BSM) })
  143. // .ToList();
  144. //var list = GetList(t => t.GHLX == ghlx && t.DQJD != null & t.IS_DELETE == StatusEnum.Mormal).ToList().MapTo<GhbzGhxm, GhbzGhxmListView>();
  145. var list = query.Queryable<GhbzGhxm, CfgDict, GhbzGhxmJd>((gg, dic, jd) => new JoinQueryInfos(
  146. JoinType.Left, gg.DQJD == dic.ID, JoinType.Left, gg.DQJD == jd.XMJD && gg.BSM == jd.XM_BSM))
  147. .Where((gg, dic, jd) => gg.DQJD != null && gg.IS_DELETE == KJGH.Model.EnumDelete.Mormal && dic.TYPE == "项目进度" && gg.GHLX == ghlx)
  148. .OrderBy((gg, dic, jd) => dic.SORT)
  149. .Select((gg, dic, jd) => new GhbzGhxmListView()
  150. {
  151. BSM = gg.BSM,
  152. XMBH = gg.XMBH,
  153. XMMC = gg.XMMC,
  154. GHJB = gg.GHJB,
  155. GHLX = gg.GHLX,
  156. XZQDM = gg.XZQDM,
  157. XZQMC = gg.XZQMC,
  158. BZDW = gg.BZDW,
  159. DQJD = gg.DQJD,
  160. GHQX_KS = gg.GHQX_KS,
  161. GHQX_JS = gg.GHQX_JS,
  162. UpdateDate = jd.CTIME
  163. })
  164. .ToList();
  165. var piechart = list.GroupBy(t => t.DQJD).Select(t => new { name = t.Key, value = t.Count() }).ToList();
  166. var xzq = list.GroupBy(t => new { t.XZQDM, t.DQJD }).Select(t => new { xzqdm = t.Key.XZQDM, dqjd = t.Key.DQJD, c = t.Count() });
  167. var regionchart = list.GroupBy(t => new { t.XZQDM, t.XZQMC }).Select(t => new
  168. {
  169. xzqdm = t.Key.XZQDM,
  170. xzqmc = t.Key.XZQMC,
  171. value = new List<object>()
  172. }).ToList();
  173. foreach (var item in regionchart)
  174. {
  175. foreach (var item1 in piechart)
  176. {
  177. var temp = xzq.Where(t => t.xzqdm == item.xzqdm && t.dqjd == item1.name).FirstOrDefault();
  178. item.value.Add(new { name = item1.name, value = temp == null ? 0 : temp.c });
  179. }
  180. }
  181. return new StatisticsView
  182. {
  183. pieChart = piechart,
  184. regionChart = regionchart,
  185. ghbzGhxm = list
  186. };
  187. }
  188. }
  189. }