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.
 
 
 
 
 
 

752 lines
32 KiB

  1. using Dapper;
  2. using Learun.Application.Base.AuthorizeModule;
  3. using Learun.Application.Organization;
  4. using Learun.DataBase.Repository;
  5. using Learun.Util;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Text;
  11. namespace Learun.Application.OA
  12. {
  13. /// <summary>
  14. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  15. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  16. /// 创建人:陈彬彬
  17. /// 日 期:2017.04.17
  18. /// 描 述:公告管理
  19. /// </summary>
  20. public class NoticeService : RepositoryFactory
  21. {
  22. private UserService userService = new UserService();
  23. private UserRelationService userRelationService = new UserRelationService();
  24. #region 获取数据
  25. /// <summary>
  26. /// 公告列表
  27. /// </summary>
  28. /// <param name="pagination">分页参数</param>
  29. /// <param name="keyword">关键词</param>
  30. /// <returns></returns>
  31. public IEnumerable<NewsEntity> GetPageList(Pagination pagination, string keyword)
  32. {
  33. try
  34. {
  35. var strSql = new StringBuilder();
  36. strSql.Append("SELECT * FROM LR_OA_News t WHERE t.F_TypeId = 2 and F_DeleteMark=0 ");
  37. if (!string.IsNullOrEmpty(keyword))
  38. {
  39. strSql.Append(" AND F_FullHead like @keyword");
  40. }
  41. return this.BaseRepository().FindList<NewsEntity>(strSql.ToString(), new { keyword = "%" + keyword + "%" }, pagination);
  42. }
  43. catch (Exception ex)
  44. {
  45. if (ex is ExceptionEx)
  46. {
  47. throw;
  48. }
  49. else
  50. {
  51. throw ExceptionEx.ThrowServiceException(ex);
  52. }
  53. }
  54. }
  55. /// <summary>
  56. /// 通知公告阅读统计
  57. /// </summary>
  58. /// <param name="pagination"></param>
  59. /// <param name="queryJson"></param>
  60. /// <returns></returns>
  61. public IEnumerable<NewsEntity> GetPageListForStatistics(Pagination pagination, string queryJson)
  62. {
  63. try
  64. {
  65. var queryParam = queryJson.ToJObject();
  66. var sql = new StringBuilder(@"select t.*,u.F_Account,u.f_realname,f_departmentid from ");
  67. sql.Append("(");
  68. sql.Append("select t1.ruserid,isnull(srnum,0) as srnum,isnull(rnum,0) as rnum from (");
  69. sql.Append(
  70. @"select ruserid,COUNT(1) as srnum from LR_OA_News t left join LR_OA_NewsShouldRead s on s.newsid=t.f_newsid
  71. left join lr_base_user u on s.RUserId=u.F_UserId
  72. WHERE t.F_TypeId = 2 and t.F_DeleteMark=0 and t.F_EnabledMark=1
  73. and u.F_Account like '20%'
  74. and t.F_ReleaseTime>CONVERT(datetime,SUBSTRING(u.F_Account,1,4)+'-08-31',120) ");
  75. if (!queryParam["Year"].IsEmpty() && !queryParam["Month"].IsEmpty())
  76. {
  77. sql.Append($" and year(t.F_ReleaseTime)='{queryParam["Year"].ToString()}' and month(t.F_ReleaseTime)='{queryParam["Month"].ToString()}'");
  78. }
  79. sql.Append(" group by ruserid ) t1 left join (");
  80. sql.Append(
  81. @" select ruserid,COUNT(1) as rnum from LR_OA_News t left join LR_OA_NewsRead r on r.newsid=t.f_newsid
  82. left join lr_base_user u on r.RUserId=u.F_UserId
  83. WHERE t.F_TypeId = 2 and t.F_DeleteMark=0 and t.F_EnabledMark=1
  84. and u.F_Account like '20%'
  85. and t.F_ReleaseTime>CONVERT(datetime,SUBSTRING(u.F_Account,1,4)+'-08-31',120)
  86. and DATEDIFF(HOUR,t.F_ReleaseTime,r.RTime)<=24*7 ");
  87. if (!queryParam["Year"].IsEmpty() && !queryParam["Month"].IsEmpty())
  88. {
  89. sql.Append($" and year(t.F_ReleaseTime)='{queryParam["Year"].ToString()}' and month(t.F_ReleaseTime)='{queryParam["Month"].ToString()}'");
  90. }
  91. sql.Append(" group by ruserid ) t2 on t1.ruserid=t2.ruserid ");
  92. sql.Append(") t");
  93. sql.Append(" left join lr_base_user u on t.ruserid=u.f_userid where 1=1 ");
  94. // 虚拟参数
  95. var dp = new DynamicParameters(new { });
  96. if (queryParam.HasValues)
  97. {
  98. if (!queryParam["F_Encode"].IsEmpty())
  99. {
  100. sql.Append($" AND u.f_encode like '%{queryParam["F_Encode"].ToString()}%' ");
  101. }
  102. if (!queryParam["F_RealName"].IsEmpty())
  103. {
  104. sql.Append($" AND u.f_realname like '%{queryParam["F_RealName"].ToString()}%' ");
  105. }
  106. if (!queryParam["F_Departmentid"].IsEmpty())
  107. {
  108. sql.Append($" AND f_departmentid = '{queryParam["F_Departmentid"].ToString()}' ");
  109. }
  110. }
  111. var list = this.BaseRepository().FindList<NewsEntity>(sql.ToString(), pagination);
  112. return list;
  113. }
  114. catch (Exception ex)
  115. {
  116. if (ex is ExceptionEx)
  117. {
  118. throw;
  119. }
  120. else
  121. {
  122. throw ExceptionEx.ThrowServiceException(ex);
  123. }
  124. }
  125. }
  126. /// <summary>
  127. /// 保存通知公告应读人员
  128. /// </summary>
  129. public void SaveNewsShouldRead()
  130. {
  131. var db = this.BaseRepository();
  132. try
  133. {
  134. db.BeginTrans();
  135. var sql =
  136. @"SELECT case when (F_SendDeptId is null or len(F_SendDeptId)=0) and (F_SendPostId is null or len(F_SendDeptId)=0) and (ReceiverUserId is null or len(ReceiverUserId)=0) then '1' else '' end as F_Send,
  137. F_SendDeptId,F_SendPostId,* FROM LR_OA_News t WHERE t.F_TypeId = 2 and t.F_DeleteMark=0 and t.F_EnabledMark=1
  138. and t.f_Newsid not in (SELECT distinct Newsid from [dbo].[LR_OA_NewsShouldRead])";
  139. var list = db.FindList<NewsEntity>(sql);
  140. foreach (var entity in list)
  141. {
  142. if (!string.IsNullOrEmpty(entity.F_Send) && entity.F_Send == "1")
  143. {
  144. //接收人是全部教师
  145. db.ExecuteBySql($@"insert into LR_OA_NewsShouldRead
  146. SELECT newid(),'{entity.F_NewsId}',f_userid from lr_base_user where f_description='教师' and F_EnabledMark=1 and F_DeleteMark!=1 and
  147. f_userid not in (
  148. SELECT ruserid from [dbo].[LR_OA_NewsShouldRead] where newsid='{entity.F_NewsId}'
  149. )
  150. ");
  151. }
  152. else
  153. {
  154. #region 旧
  155. // //接收部门
  156. // if (!string.IsNullOrEmpty(news.F_SendDeptId))
  157. // {
  158. // var deptids = string.Join("','", news.F_SendDeptId.Split(','));
  159. // db.ExecuteBySql($@"insert into LR_OA_NewsShouldRead
  160. //SELECT newid(),'{news.F_NewsId}',f_userid from lr_base_user where f_description='教师' and F_DepartmentId in ('{deptids}')
  161. //and f_userid not in (
  162. //SELECT ruserid from [dbo].[LR_OA_NewsShouldRead] where newsid='{news.F_NewsId}'
  163. //)");
  164. // //岗位
  165. // if (!string.IsNullOrEmpty(news.F_SendPostId))
  166. // {
  167. // var postids = string.Join("','", news.F_SendPostId.Split(','));
  168. // db.ExecuteBySql($@"insert into LR_OA_NewsShouldRead
  169. //SELECT newid(),'{news.F_NewsId}',t.f_userid from lr_base_user t
  170. //join LR_Base_UserRelation r on r.f_category='2' and t.F_UserId=r.f_userid
  171. //where t.f_description='教师' and r.f_objectid in ('{postids}')
  172. // and t.F_DepartmentId not in ('{deptids}')
  173. //and t.f_userid not in (
  174. //SELECT ruserid from [dbo].[LR_OA_NewsShouldRead] where newsid='{news.F_NewsId}'
  175. //)");
  176. // }
  177. // }
  178. // //接收部门空 , 接收岗位不为空
  179. // if (string.IsNullOrEmpty(news.F_SendDeptId) && !string.IsNullOrEmpty(news.F_SendPostId))
  180. // {
  181. // var postids = string.Join("','", news.F_SendPostId.Split(','));
  182. // db.ExecuteBySql($@"insert into LR_OA_NewsShouldRead
  183. //SELECT newid(),'{news.F_NewsId}',t.f_userid from lr_base_user t
  184. //join LR_Base_UserRelation r on r.f_category='2' and t.F_UserId=r.f_userid
  185. //where t.f_description='教师' and r.f_objectid in ('{postids}')
  186. //and t.f_userid not in (
  187. //SELECT ruserid from [dbo].[LR_OA_NewsShouldRead] where newsid='{news.F_NewsId}'
  188. //)");
  189. // }
  190. #endregion
  191. #region 接受部门、接收岗位、接收人,三者同时满足;
  192. var allteacherlist = userService.GetAllList().Where(m =>
  193. m.F_DeleteMark != 1 && m.F_EnabledMark == 1 && m.F_Description == "教师");
  194. var userralationlist = userRelationService.GetUserIdListByCategory("2");
  195. var needpostuserlist = new List<UserEntity>();
  196. //接收部门,下的接收岗位,下的接收人,才是需要发送消息的用户。
  197. if (!string.IsNullOrEmpty(entity.F_SendDeptId))//部门
  198. {
  199. foreach (var senddeptid in entity.F_SendDeptId.Split(','))
  200. {
  201. var departteacherlist = allteacherlist.Where(m => senddeptid == m.F_DepartmentId);
  202. needpostuserlist.AddRange(departteacherlist.ToList());
  203. }
  204. if (!string.IsNullOrEmpty(entity.F_SendPostId))//岗位
  205. {
  206. var newpostuserlist = new List<UserEntity>();
  207. foreach (var uuitem in needpostuserlist.Distinct())
  208. {
  209. var postids = userralationlist?.Count(m => m.F_UserId == uuitem.F_UserId && entity.F_SendPostId.Contains(m.F_ObjectId));
  210. if (postids > 0)
  211. {
  212. newpostuserlist.Add(uuitem);
  213. }
  214. }
  215. if (!string.IsNullOrEmpty(entity.ReceiverUserId))//人
  216. {
  217. var intersectUserIdList = newpostuserlist.Select(x => x.F_UserId).Intersect(entity.ReceiverUserId.Split(','));
  218. needpostuserlist = newpostuserlist.Where(x => intersectUserIdList.Contains(x.F_UserId)).ToList();
  219. }
  220. else
  221. {
  222. needpostuserlist = newpostuserlist;
  223. }
  224. }
  225. else
  226. {
  227. if (!string.IsNullOrEmpty(entity.ReceiverUserId))//人
  228. {
  229. var intersectUserIdList = needpostuserlist.Select(x => x.F_UserId).Intersect(entity.ReceiverUserId.Split(','));
  230. needpostuserlist = needpostuserlist.Where(x => intersectUserIdList.Contains(x.F_UserId)).ToList();
  231. }
  232. }
  233. }
  234. else
  235. {
  236. if (!string.IsNullOrEmpty(entity.F_SendPostId))//岗位
  237. {
  238. var newpostuserlist = new List<UserEntity>();
  239. foreach (var uuitem in allteacherlist)
  240. {
  241. var postids = userralationlist?.Count(m => m.F_UserId == uuitem.F_UserId && entity.F_SendPostId.Contains(m.F_ObjectId));
  242. if (postids > 0)
  243. {
  244. newpostuserlist.Add(uuitem);
  245. }
  246. }
  247. if (!string.IsNullOrEmpty(entity.ReceiverUserId))//人
  248. {
  249. var intersectUserIdList = newpostuserlist.Select(x => x.F_UserId).Intersect(entity.ReceiverUserId.Split(','));
  250. needpostuserlist = newpostuserlist.Where(x => intersectUserIdList.Contains(x.F_UserId)).ToList();
  251. }
  252. else
  253. {
  254. needpostuserlist = newpostuserlist;
  255. }
  256. }
  257. else
  258. {
  259. if (!string.IsNullOrEmpty(entity.ReceiverUserId))//人
  260. {
  261. var intersectUserIdList = allteacherlist.Select(x => x.F_UserId).Intersect(entity.ReceiverUserId.Split(','));
  262. needpostuserlist = allteacherlist.Where(x => intersectUserIdList.Contains(x.F_UserId)).ToList();
  263. }
  264. else
  265. {
  266. //全员下发
  267. needpostuserlist = allteacherlist.ToList();
  268. }
  269. }
  270. }
  271. var needpostuserStr = string.Join("','", needpostuserlist.Select(x => x.F_UserId).ToArray());
  272. db.ExecuteBySql($@"insert into LR_OA_NewsShouldRead
  273. SELECT newid(),'{entity.F_NewsId}',f_userid from lr_base_user where f_userid in ('{needpostuserStr}') and
  274. f_userid not in (
  275. SELECT ruserid from [dbo].[LR_OA_NewsShouldRead] where newsid='{entity.F_NewsId}'
  276. )
  277. ");
  278. #endregion
  279. }
  280. }
  281. db.Commit();
  282. }
  283. catch (Exception ex)
  284. {
  285. if (ex is ExceptionEx)
  286. {
  287. throw;
  288. }
  289. else
  290. {
  291. throw ExceptionEx.ThrowServiceException(ex);
  292. }
  293. }
  294. }
  295. /// <summary>
  296. /// 新闻公告实体
  297. /// </summary>
  298. /// <param name="keyValue">主键值</param>
  299. /// <returns></returns>
  300. public NewsEntity GetEntity(string keyValue)
  301. {
  302. try
  303. {
  304. return this.BaseRepository().FindEntity<NewsEntity>(keyValue);
  305. }
  306. catch (Exception ex)
  307. {
  308. if (ex is ExceptionEx)
  309. {
  310. throw;
  311. }
  312. else
  313. {
  314. throw ExceptionEx.ThrowServiceException(ex);
  315. }
  316. }
  317. }
  318. #endregion
  319. #region 提交数据
  320. /// <summary>
  321. /// 删除
  322. /// </summary>
  323. /// <param name="keyValue">主键</param>
  324. public void DeleteEntity(string keyValue)
  325. {
  326. var db = this.BaseRepository().BeginTrans();
  327. try
  328. {
  329. var list = keyValue.Split(',');
  330. foreach (var item in list)
  331. {
  332. var entity = db.FindEntity<NewsEntity>(x => x.F_NewsId == item);
  333. if (entity != null)
  334. {
  335. entity.F_DeleteMark = 1;
  336. db.Update(entity);
  337. //db.Delete(entity);
  338. }
  339. string sql = $"delete MessageRemind where InstanceId='{entity.F_NewsId}'";
  340. db.ExecuteBySql(sql);
  341. }
  342. db.Commit();
  343. }
  344. catch (Exception ex)
  345. {
  346. db.Rollback();
  347. if (ex is ExceptionEx)
  348. {
  349. throw;
  350. }
  351. else
  352. {
  353. throw ExceptionEx.ThrowServiceException(ex);
  354. }
  355. }
  356. }
  357. /// <summary>
  358. /// 保存(新增、修改)
  359. /// </summary>
  360. /// <param name="keyValue">主键值</param>
  361. /// <param name="newsEntity">新闻公告实体</param>
  362. /// <returns></returns>
  363. public void SaveEntity(string keyValue, NewsEntity newsEntity)
  364. {
  365. try
  366. {
  367. newsEntity.F_TypeId = 2;
  368. if (!string.IsNullOrEmpty(keyValue))
  369. {
  370. newsEntity.Modify(keyValue);
  371. this.BaseRepository().Update(newsEntity);
  372. }
  373. else
  374. {
  375. newsEntity.Create();
  376. this.BaseRepository().Insert(newsEntity);
  377. }
  378. }
  379. catch (Exception ex)
  380. {
  381. if (ex is ExceptionEx)
  382. {
  383. throw;
  384. }
  385. else
  386. {
  387. throw ExceptionEx.ThrowServiceException(ex);
  388. }
  389. }
  390. }
  391. #endregion
  392. #region 扩展数据
  393. /// <summary>
  394. /// 公告列表
  395. /// </summary>
  396. /// <param name="keyword">关键词</param>
  397. /// <returns></returns>
  398. public IEnumerable<NewsEntity> GetList(string keyword, string categoryId = null)
  399. {
  400. try
  401. {
  402. var userinfo = LoginUserInfo.Get();
  403. var userId = userinfo.userId;
  404. var deptId = userinfo.departmentId;
  405. var postIds = userinfo.postIds;
  406. var strSql = new StringBuilder();
  407. strSql.Append("SELECT t.*,r.RNewsId,r.RTime FROM LR_OA_News t ");
  408. strSql.Append(" left join LR_OA_NewsRead r on t.F_NewsId = r.NewsId and r.RUserId=@userId ");
  409. strSql.Append(" left join lr_base_user u on u.F_UserId=@userId ");
  410. strSql.Append(" WHERE t.F_TypeId = 2 and t.F_DeleteMark=0 and t.F_EnabledMark=1 ");
  411. //if (userinfo.account.Contains("20"))
  412. //{
  413. // strSql.Append(" and t.F_ReleaseTime>CONVERT(datetime,SUBSTRING(u.F_Account,1,4)+'-08-31',120) ");
  414. //}
  415. if (!string.IsNullOrEmpty(categoryId))
  416. {
  417. strSql.Append($" AND t.F_CategoryId = '{categoryId}'");
  418. }
  419. if (!string.IsNullOrEmpty(keyword))
  420. {
  421. strSql.Append(" AND t.F_FullHead like @keyword");
  422. }
  423. strSql.Append(" ORDER BY t.F_ReleaseTime DESC ");
  424. var list = this.BaseRepository().FindList<NewsEntity>(strSql.ToString(), new { keyword = "%" + keyword + "%", userId = userId });
  425. var result = new List<NewsEntity>();
  426. //根据接收部门、接收岗位、接收人进行用户的筛选;
  427. foreach (var item in list)
  428. {
  429. if (!string.IsNullOrEmpty(item.ReceiverUserId))
  430. {
  431. if (item.ReceiverUserId.Contains(userId))
  432. {
  433. if (!string.IsNullOrEmpty(item.F_SendPostId))
  434. {
  435. if (!string.IsNullOrEmpty(postIds))
  436. {
  437. if (item.F_SendPostId.Split(',').Intersect(postIds.Split(',')).Any())
  438. {
  439. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  440. {
  441. if (item.F_SendDeptId.Contains(deptId))
  442. {
  443. result.Add(item);
  444. }
  445. }
  446. else
  447. {
  448. result.Add(item);
  449. }
  450. }
  451. }
  452. }
  453. else
  454. {
  455. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  456. {
  457. if (item.F_SendDeptId.Contains(deptId))
  458. {
  459. result.Add(item);
  460. }
  461. }
  462. else
  463. {
  464. result.Add(item);
  465. }
  466. }
  467. }
  468. }
  469. else
  470. {
  471. if (!string.IsNullOrEmpty(item.F_SendPostId))
  472. {
  473. if (!string.IsNullOrEmpty(postIds))
  474. {
  475. if (item.F_SendPostId.Split(',').Intersect(postIds.Split(',')).Any())
  476. {
  477. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  478. {
  479. if (item.F_SendDeptId.Contains(deptId))
  480. {
  481. result.Add(item);
  482. }
  483. }
  484. else
  485. {
  486. result.Add(item);
  487. }
  488. }
  489. }
  490. }
  491. else
  492. {
  493. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  494. {
  495. if (item.F_SendDeptId.Contains(deptId))
  496. {
  497. result.Add(item);
  498. }
  499. }
  500. else
  501. {
  502. result.Add(item);
  503. }
  504. }
  505. }
  506. }
  507. return result;
  508. }
  509. catch (Exception ex)
  510. {
  511. if (ex is ExceptionEx)
  512. {
  513. throw;
  514. }
  515. else
  516. {
  517. throw ExceptionEx.ThrowServiceException(ex);
  518. }
  519. }
  520. }
  521. public IEnumerable<NewsEntity> GetListOfSelf(string queryJson)
  522. {
  523. try
  524. {
  525. var userinfo = LoginUserInfo.Get();
  526. var userId = userinfo.userId;
  527. var deptId = userinfo.departmentId;
  528. var postIds = userinfo.postIds;
  529. var strSql = new StringBuilder();
  530. strSql.Append("SELECT t.*,r.RNewsId,r.RTime FROM LR_OA_News t ");
  531. strSql.Append(" left join LR_OA_NewsRead r on t.F_NewsId = r.NewsId and r.RUserId=@userId ");
  532. strSql.Append(" left join lr_base_user u on u.F_UserId=@userId ");
  533. strSql.Append(" WHERE t.F_TypeId = 2 and t.F_DeleteMark=0 and t.F_EnabledMark=1 ");
  534. //去掉用户入职时间条件
  535. //if (userinfo.account.Contains("20"))
  536. //{
  537. // strSql.Append(" and t.F_ReleaseTime>CONVERT(datetime,SUBSTRING(u.F_Account,1,4)+'-08-31',120) ");
  538. //}
  539. var queryParam = queryJson.ToJObject();
  540. // 虚拟参数
  541. var dp = new DynamicParameters(new { });
  542. if (!queryParam["keyword"].IsEmpty())
  543. {
  544. var keyword = "%" + queryParam["keyword"].ToString() + "%";
  545. strSql.Append(@" AND ( t.F_FullHead like '" + keyword + "' or t.F_Category like '" + keyword + "' or t.F_CreateUserName like '" + keyword
  546. + "' or t.F_SourceName like'"+ keyword + "' or t.F_SourceAddress like '"+ keyword + "' )");
  547. }
  548. if (!queryParam["categoryId"].IsEmpty())
  549. {
  550. strSql.Append($" AND t.F_CategoryId = '{queryParam["categoryId"].ToString()}'");
  551. }
  552. if (!queryParam["IsRead"].IsEmpty())
  553. {
  554. var IsRead = queryParam["IsRead"].ToString().Trim();
  555. if (IsRead == "1")
  556. {
  557. strSql.Append($" AND (r.RNewsId is not null and len(r.RNewsId)>0)");
  558. }
  559. else
  560. {
  561. strSql.Append($" AND (r.RNewsId is null or len(r.RNewsId)=0)");
  562. }
  563. }
  564. strSql.Append(" ORDER BY t.F_ReleaseTime DESC ");
  565. var list = this.BaseRepository().FindList<NewsEntity>(strSql.ToString(), new { userId = userId });
  566. var result = new List<NewsEntity>();
  567. //根据接收部门、接收岗位、接收人进行用户的筛选;
  568. foreach (var item in list)
  569. {
  570. if (!string.IsNullOrEmpty(item.ReceiverUserId))
  571. {
  572. if (item.ReceiverUserId.Contains(userId))
  573. {
  574. if (!string.IsNullOrEmpty(item.F_SendPostId))
  575. {
  576. if (!string.IsNullOrEmpty(postIds))
  577. {
  578. if (item.F_SendPostId.Split(',').Intersect(postIds.Split(',')).Any())
  579. {
  580. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  581. {
  582. if (item.F_SendDeptId.Contains(deptId))
  583. {
  584. result.Add(item);
  585. }
  586. }
  587. else
  588. {
  589. result.Add(item);
  590. }
  591. }
  592. }
  593. }
  594. else
  595. {
  596. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  597. {
  598. if (item.F_SendDeptId.Contains(deptId))
  599. {
  600. result.Add(item);
  601. }
  602. }
  603. else
  604. {
  605. result.Add(item);
  606. }
  607. }
  608. }
  609. }
  610. else
  611. {
  612. if (!string.IsNullOrEmpty(item.F_SendPostId))
  613. {
  614. if (!string.IsNullOrEmpty(postIds))
  615. {
  616. if (item.F_SendPostId.Split(',').Intersect(postIds.Split(',')).Any())
  617. {
  618. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  619. {
  620. if (item.F_SendDeptId.Contains(deptId))
  621. {
  622. result.Add(item);
  623. }
  624. }
  625. else
  626. {
  627. result.Add(item);
  628. }
  629. }
  630. }
  631. }
  632. else
  633. {
  634. if (!string.IsNullOrEmpty(item.F_SendDeptId))
  635. {
  636. if (item.F_SendDeptId.Contains(deptId))
  637. {
  638. result.Add(item);
  639. }
  640. }
  641. else
  642. {
  643. result.Add(item);
  644. }
  645. }
  646. }
  647. }
  648. return result;
  649. }
  650. catch (Exception ex)
  651. {
  652. if (ex is ExceptionEx)
  653. {
  654. throw;
  655. }
  656. else
  657. {
  658. throw ExceptionEx.ThrowServiceException(ex);
  659. }
  660. }
  661. }
  662. #endregion
  663. public void ChangeStatusById(string keyValue, int status, string processId)
  664. {
  665. try
  666. {
  667. BaseRepository().ExecuteBySql($"UPDATE dbo.LR_OA_News SET F_Status='{status}',F_ProgressId='{processId}' WHERE F_NewsId='{keyValue}'", null);
  668. }
  669. catch (Exception ex)
  670. {
  671. throw ExceptionEx.ThrowServiceException(ex);
  672. }
  673. }
  674. public NewsEntity GetEntityByProcessId(string processId)
  675. {
  676. try
  677. {
  678. return this.BaseRepository().FindEntity<NewsEntity>(t => t.F_ProgressId == processId);
  679. }
  680. catch (Exception ex)
  681. {
  682. if (ex is ExceptionEx)
  683. {
  684. throw;
  685. }
  686. else
  687. {
  688. throw ExceptionEx.ThrowServiceException(ex);
  689. }
  690. }
  691. }
  692. public void SaveFormAndSubmit(string keyValue, NewsEntity entity)
  693. {
  694. try
  695. {
  696. entity.F_TypeId = 2;
  697. if (!string.IsNullOrEmpty(keyValue))
  698. {
  699. entity.Modify(keyValue);
  700. this.BaseRepository().Update(entity);
  701. }
  702. else
  703. {
  704. entity.Create();
  705. entity.F_EnabledMark = 1;
  706. this.BaseRepository().Insert(entity);
  707. }
  708. }
  709. catch (Exception ex)
  710. {
  711. if (ex is ExceptionEx)
  712. {
  713. throw;
  714. }
  715. else
  716. {
  717. throw ExceptionEx.ThrowServiceException(ex);
  718. }
  719. }
  720. }
  721. }
  722. }