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.

NoticeService.cs 8.5 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. using Learun.DataBase.Repository;
  2. using Learun.Util;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. namespace Learun.Application.OA
  7. {
  8. /// <summary>
  9. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  10. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  11. /// 创建人:陈彬彬
  12. /// 日 期:2017.04.17
  13. /// 描 述:公告管理
  14. /// </summary>
  15. public class NoticeService : RepositoryFactory
  16. {
  17. #region 获取数据
  18. /// <summary>
  19. /// 公告列表
  20. /// </summary>
  21. /// <param name="pagination">分页参数</param>
  22. /// <param name="keyword">关键词</param>
  23. /// <returns></returns>
  24. public IEnumerable<NewsEntity> GetPageList(Pagination pagination, string keyword)
  25. {
  26. try
  27. {
  28. var strSql = new StringBuilder();
  29. strSql.Append("SELECT * FROM LR_OA_News t WHERE t.F_TypeId = 2 and F_Status<>'-1' and F_DeleteMark=0");
  30. if (!string.IsNullOrEmpty(keyword))
  31. {
  32. strSql.Append(" AND F_FullHead like @keyword");
  33. }
  34. return this.BaseRepository().FindList<NewsEntity>(strSql.ToString(), new { keyword = "%" + keyword + "%" }, pagination);
  35. }
  36. catch (Exception ex)
  37. {
  38. if (ex is ExceptionEx)
  39. {
  40. throw;
  41. }
  42. else
  43. {
  44. throw ExceptionEx.ThrowServiceException(ex);
  45. }
  46. }
  47. }
  48. public IEnumerable<NewsEntity> GetPageListRevert(Pagination pagination, string keyword)
  49. {
  50. try
  51. {
  52. var strSql = new StringBuilder();
  53. strSql.Append("SELECT * FROM LR_OA_News t WHERE t.F_TypeId = 2 and F_Status='-1' ");
  54. if (!string.IsNullOrEmpty(keyword))
  55. {
  56. strSql.Append(" AND F_FullHead like @keyword");
  57. }
  58. return this.BaseRepository().FindList<NewsEntity>(strSql.ToString(), new { keyword = "%" + keyword + "%" }, pagination);
  59. }
  60. catch (Exception ex)
  61. {
  62. if (ex is ExceptionEx)
  63. {
  64. throw;
  65. }
  66. else
  67. {
  68. throw ExceptionEx.ThrowServiceException(ex);
  69. }
  70. }
  71. }
  72. /// <summary>
  73. /// 新闻公告实体
  74. /// </summary>
  75. /// <param name="keyValue">主键值</param>
  76. /// <returns></returns>
  77. public NewsEntity GetEntity(string keyValue)
  78. {
  79. try
  80. {
  81. return this.BaseRepository().FindEntity<NewsEntity>(keyValue);
  82. }
  83. catch (Exception ex)
  84. {
  85. if (ex is ExceptionEx)
  86. {
  87. throw;
  88. }
  89. else
  90. {
  91. throw ExceptionEx.ThrowServiceException(ex);
  92. }
  93. }
  94. }
  95. #endregion
  96. #region 提交数据
  97. /// <summary>
  98. /// 删除
  99. /// </summary>
  100. /// <param name="keyValue">主键</param>
  101. public void DeleteEntity(string keyValue)
  102. {
  103. var db = this.BaseRepository().BeginTrans();
  104. try
  105. {
  106. var list = keyValue.Split(',');
  107. foreach (var item in list)
  108. {
  109. var entity = db.FindEntity<NewsEntity>(x => x.F_NewsId == item);
  110. if (entity != null)
  111. {
  112. db.Delete(entity);
  113. }
  114. }
  115. db.Commit();
  116. }
  117. catch (Exception ex)
  118. {
  119. db.Rollback();
  120. if (ex is ExceptionEx)
  121. {
  122. throw;
  123. }
  124. else
  125. {
  126. throw ExceptionEx.ThrowServiceException(ex);
  127. }
  128. }
  129. }
  130. public void RecycleForm(string keyValue, string status)
  131. {
  132. var db = this.BaseRepository().BeginTrans();
  133. try
  134. {
  135. var list = keyValue.Split(',');
  136. foreach (var item in list)
  137. {
  138. var entity = db.FindEntity<NewsEntity>(x => x.F_NewsId == item);
  139. if (entity != null)
  140. {
  141. entity.F_Status = status;
  142. db.Update(entity);
  143. }
  144. }
  145. db.Commit();
  146. }
  147. catch (Exception ex)
  148. {
  149. db.Rollback();
  150. if (ex is ExceptionEx)
  151. {
  152. throw;
  153. }
  154. else
  155. {
  156. throw ExceptionEx.ThrowServiceException(ex);
  157. }
  158. }
  159. }
  160. /// <summary>
  161. /// 保存(新增、修改)
  162. /// </summary>
  163. /// <param name="keyValue">主键值</param>
  164. /// <param name="newsEntity">新闻公告实体</param>
  165. /// <returns></returns>
  166. public void SaveEntity(string keyValue, NewsEntity newsEntity)
  167. {
  168. try
  169. {
  170. newsEntity.F_TypeId = 2;
  171. if (!string.IsNullOrEmpty(keyValue))
  172. {
  173. newsEntity.Modify(keyValue);
  174. this.BaseRepository().Update(newsEntity);
  175. }
  176. else
  177. {
  178. newsEntity.Create();
  179. this.BaseRepository().Insert(newsEntity);
  180. }
  181. }
  182. catch (Exception ex)
  183. {
  184. if (ex is ExceptionEx)
  185. {
  186. throw;
  187. }
  188. else
  189. {
  190. throw ExceptionEx.ThrowServiceException(ex);
  191. }
  192. }
  193. }
  194. #endregion
  195. #region 扩展数据
  196. /// <summary>
  197. /// 公告列表
  198. /// </summary>
  199. /// <param name="keyword">关键词</param>
  200. /// <returns></returns>
  201. public IEnumerable<NewsEntity> GetList(string keyword, string userId, string categoryId = null)
  202. {
  203. try
  204. {
  205. var strSql = new StringBuilder();
  206. strSql.Append("SELECT t.*,r.RNewsId,r.RTime FROM LR_OA_News t ");
  207. strSql.Append(" left join LR_OA_NewsRead r on t.F_NewsId = r.NewsId and r.RUserId=@userId ");
  208. strSql.Append(" WHERE t.F_TypeId = 2 and F_Status<>'-1' and t.F_DeleteMark=0 ");
  209. if (!string.IsNullOrEmpty(categoryId))
  210. {
  211. strSql.Append($" AND F_CategoryId = '{categoryId}'");
  212. }
  213. if (!string.IsNullOrEmpty(keyword))
  214. {
  215. strSql.Append(" AND F_FullHead like @keyword");
  216. }
  217. strSql.Append(" ORDER BY t.F_ReleaseTime DESC ");
  218. return this.BaseRepository().FindList<NewsEntity>(strSql.ToString(), new { keyword = "%" + keyword + "%", userId = userId });
  219. }
  220. catch (Exception ex)
  221. {
  222. if (ex is ExceptionEx)
  223. {
  224. throw;
  225. }
  226. else
  227. {
  228. throw ExceptionEx.ThrowServiceException(ex);
  229. }
  230. }
  231. }
  232. #endregion
  233. public void ChangeStatusById(string keyValue, int status, string processId)
  234. {
  235. try
  236. {
  237. BaseRepository().ExecuteBySql($"UPDATE dbo.LR_OA_News SET F_Status='{status}',F_ProgressId='{processId}' WHERE F_NewsId='{keyValue}'", null);
  238. }
  239. catch (Exception ex)
  240. {
  241. throw ExceptionEx.ThrowServiceException(ex);
  242. }
  243. }
  244. public NewsEntity GetEntityByProcessId(string processId)
  245. {
  246. try
  247. {
  248. return this.BaseRepository().FindEntity<NewsEntity>(t => t.F_ProgressId == processId);
  249. }
  250. catch (Exception ex)
  251. {
  252. if (ex is ExceptionEx)
  253. {
  254. throw;
  255. }
  256. else
  257. {
  258. throw ExceptionEx.ThrowServiceException(ex);
  259. }
  260. }
  261. }
  262. }
  263. }