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.
 
 
 
 
 
 

2068 lines
84 KiB

  1. using Learun.DataBase.Repository;
  2. using Learun.Util;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using Learun.Application.TwoDevelopment.LR_LGManager;
  9. using Dapper;
  10. namespace Learun.Application.WorkFlow
  11. {
  12. /// <summary>
  13. /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架
  14. /// Copyright (c) 2013-2018 上海力软信息技术有限公司
  15. /// 创建人:力软-框架开发组
  16. /// 日 期:2018.12.07
  17. /// 描 述:流程进程
  18. /// </summary>
  19. public class NWFProcessSericve : RepositoryFactory
  20. {
  21. #region 获取数据
  22. /// <summary>
  23. /// 获取流程进程实体
  24. /// </summary>
  25. /// <param name="keyValue">主键</param>
  26. /// <returns></returns>
  27. public NWFProcessEntity GetEntity(string keyValue)
  28. {
  29. try
  30. {
  31. return this.BaseRepository().FindEntity<NWFProcessEntity>(keyValue);
  32. }
  33. catch (Exception ex)
  34. {
  35. if (ex is ExceptionEx)
  36. {
  37. throw;
  38. }
  39. else
  40. {
  41. throw ExceptionEx.ThrowServiceException(ex);
  42. }
  43. }
  44. }
  45. /// <summary>
  46. /// 获取流程进程实例
  47. /// </summary>
  48. /// <param name="processId">父流程进程主键</param>
  49. /// <param name="nodeId">节点主键</param>
  50. /// <returns></returns>
  51. public NWFProcessEntity GetEntityByProcessId(string processId, string nodeId)
  52. {
  53. try
  54. {
  55. return this.BaseRepository().FindEntity<NWFProcessEntity>(t => t.F_ParentProcessId == processId && t.F_ParentNodeId == nodeId);
  56. }
  57. catch (Exception ex)
  58. {
  59. if (ex is ExceptionEx)
  60. {
  61. throw;
  62. }
  63. else
  64. {
  65. throw ExceptionEx.ThrowServiceException(ex);
  66. }
  67. }
  68. }
  69. /// <summary>
  70. /// 获取子流程列表
  71. /// </summary>
  72. /// <param name="parentProcessId">父流程进程主键</param>
  73. /// <returns></returns>
  74. public IEnumerable<NWFProcessEntity> GetChildProcessList(string parentProcessId)
  75. {
  76. try
  77. {
  78. return this.BaseRepository().FindList<NWFProcessEntity>(t => t.F_ParentProcessId == parentProcessId);
  79. }
  80. catch (Exception ex)
  81. {
  82. if (ex is ExceptionEx)
  83. {
  84. throw;
  85. }
  86. else
  87. {
  88. throw ExceptionEx.ThrowServiceException(ex);
  89. }
  90. }
  91. }
  92. /// <summary>
  93. /// 获取流程信息列表
  94. /// </summary>
  95. /// <param name="pagination">分页参数</param>
  96. /// <param name="queryJson">查询条件</param>
  97. /// <returns></returns>
  98. public IEnumerable<NWFProcessEntity> GetPageList(Pagination pagination, string queryJson)
  99. {
  100. try
  101. {
  102. var expression = LinqExtensions.True<NWFProcessEntity>();
  103. var queryParam = queryJson.ToJObject();
  104. // 分类
  105. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  106. {
  107. if (queryParam["categoryId"].ToString() == "1")
  108. {
  109. expression = expression.And(t => t.F_IsFinished == 0);
  110. }
  111. else
  112. {
  113. expression = expression.And(t => t.F_IsFinished == 1);
  114. }
  115. }
  116. //流程类别
  117. if (!queryParam["F_Category"].IsEmpty()) // 1:未完成 2:已完成
  118. {
  119. var Categofy = queryParam["F_Category"].ToString();
  120. var codeList = this.BaseRepository().FindList<NWFSchemeInfoEntity>(a => a.F_Category == Categofy).Select(a => a.F_Code);
  121. if (codeList.Count() > 0)
  122. {
  123. expression = expression.And(a => codeList.Contains(a.F_SchemeCode));
  124. }
  125. }
  126. // 操作时间
  127. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  128. {
  129. DateTime startTime = queryParam["StartTime"].ToDate();
  130. DateTime endTime = queryParam["EndTime"].ToDate();
  131. expression = expression.And(t => t.F_CreateDate >= startTime && t.F_CreateDate <= endTime);
  132. }
  133. // 关键字
  134. if (!queryParam["keyword"].IsEmpty())
  135. {
  136. string keyword = queryParam["keyword"].ToString();
  137. expression = expression.And(t => t.F_Title.Contains(keyword) || t.F_SchemeName.Contains(keyword) || t.F_CreateUserName.Contains(keyword));
  138. }
  139. expression = expression.And(t => t.F_EnabledMark != 2);
  140. expression = expression.And(t => t.F_IsChild == 0);
  141. var result = this.BaseRepository().FindList<NWFProcessEntity>(expression, pagination);
  142. return result;
  143. }
  144. catch (Exception ex)
  145. {
  146. if (ex is ExceptionEx)
  147. {
  148. throw;
  149. }
  150. else
  151. {
  152. throw ExceptionEx.ThrowServiceException(ex);
  153. }
  154. }
  155. }
  156. /// <summary>
  157. /// 获取流程信息列表
  158. /// </summary>
  159. /// <param name="pagination">分页参数</param>
  160. /// <param name="queryJson">查询条件</param>
  161. /// <returns></returns>
  162. public IEnumerable<LC_gcsqEntity> GetUseCar(Pagination pagination, string queryJson)
  163. {
  164. try
  165. {
  166. var queryParam = queryJson.ToJObject();
  167. var dbName = this.BaseRepository().getDbConnection().Database;
  168. var dbMISName = this.BaseRepository("CollegeMIS").getDbConnection().Database;
  169. var dp = new DynamicParameters(new { });
  170. var strSql = new StringBuilder();
  171. strSql.Append(" select zb.*,lnp.* from " + dbMISName + ".[dbo].LC_gcsq zb ");
  172. strSql.Append(" left join " + dbName + ".[dbo].LR_NWF_PROCESS lnp on lnp.F_id=zb.LC_ID ");
  173. strSql.Append(" where 1=1 and lnp.F_SchemeCode = 'LC_gcsq' ");
  174. strSql.Append(" and lnp.F_EnabledMark != '3' and lnp.F_EnabledMark != '2' and lnp.F_IsChild='0' ");
  175. if (queryParam["categoryId"].ToString() == "1")
  176. {
  177. strSql.Append(" and lnp.F_IsFinished= '0' ");
  178. }
  179. else
  180. {
  181. strSql.Append(" and lnp.F_IsFinished= '1' ");
  182. }
  183. if (!queryParam["LC_ycbm"].IsEmpty())
  184. {
  185. strSql.Append(" and zb.LC_ycbm like '%" + queryParam["LC_ycbm"].ToString() + "%' ");
  186. }
  187. if (!queryParam["LC_ycr"].IsEmpty())
  188. {
  189. strSql.Append(" and zb.LC_ycr like '%" + queryParam["LC_ycr"].ToString() + "%' ");
  190. }
  191. if (!queryParam["LC_ycsj"].IsEmpty())
  192. {
  193. strSql.Append(" and zb.LC_ycsj like '%" + queryParam["LC_ycsj"].ToString() + "%' ");
  194. }
  195. if (!queryParam["LC_sjxm"].IsEmpty())
  196. {
  197. strSql.Append(" and zb.LC_sjxm like '%" + queryParam["LC_sjxm"].ToString() + "%' ");
  198. }
  199. if (!queryParam["LC_cph"].IsEmpty())
  200. {
  201. strSql.Append(" and zb.LC_cph like '%" + queryParam["LC_cph"].ToString() + "%' ");
  202. }
  203. return this.BaseRepository("CollegeMIS").FindList<LC_gcsqEntity>(strSql.ToString(), dp);
  204. }
  205. catch (Exception ex)
  206. {
  207. if (ex is ExceptionEx)
  208. {
  209. throw;
  210. }
  211. else
  212. {
  213. throw ExceptionEx.ThrowServiceException(ex);
  214. }
  215. }
  216. }
  217. /// <summary>
  218. /// 获取流程信息列表
  219. /// </summary>
  220. /// <param name="pagination">分页参数</param>
  221. /// <param name="queryJson">查询条件</param>
  222. /// <returns></returns>
  223. public IEnumerable<cs_qjEntity> GetLeaveStatistics(Pagination pagination, string queryJson)
  224. {
  225. try
  226. {
  227. var queryParam = queryJson.ToJObject();
  228. var dbName = this.BaseRepository().getDbConnection().Database;
  229. var dbMISName = this.BaseRepository("CollegeMIS").getDbConnection().Database;
  230. var dp = new DynamicParameters(new { });
  231. var strSql = new StringBuilder();
  232. strSql.Append(" select zb.*,lnp.* from " + dbMISName + ".[dbo].cs_qj zb ");
  233. strSql.Append(" left join " + dbName + ".[dbo].LR_NWF_PROCESS lnp on zb.LC_ID =lnp.F_id ");
  234. strSql.Append(" where 1=1 and lnp.F_SchemeCode = 'LC_leave'");
  235. strSql.Append(" and lnp.F_EnabledMark != '3' and lnp.F_EnabledMark != '2' and lnp.F_IsChild='0' ");
  236. if (queryParam["categoryId"].ToString() == "1")
  237. {
  238. strSql.Append(" and lnp.F_IsFinished= '0' ");
  239. }
  240. else
  241. {
  242. strSql.Append(" and lnp.F_IsFinished= '1' ");
  243. }
  244. if (!queryParam["qj_name"].IsEmpty())
  245. {
  246. strSql.Append(" and zb.qj_name = '" + queryParam["qj_name"].ToString() + "' ");
  247. }
  248. if (!queryParam["qj_bm"].IsEmpty())
  249. {
  250. strSql.Append(" and zb.qj_bm like '%" + queryParam["qj_bm"].ToString() + "%' ");
  251. }
  252. if (!queryParam["qj_lx"].IsEmpty())
  253. {
  254. strSql.Append(" and zb.qj_lx = '" + queryParam["qj_lx"].ToString() + "' ");
  255. }
  256. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  257. {
  258. DateTime startTime = queryParam["StartTime"].ToDate();
  259. DateTime endTime = queryParam["EndTime"].ToDate();
  260. strSql.Append(" and ( zb.qj_txsj>= '" + startTime + "' and zb.qj_txsj <= '" + endTime + "' )");
  261. }
  262. return this.BaseRepository("CollegeMIS").FindList<cs_qjEntity>(strSql.ToString(), dp, pagination);
  263. }
  264. catch (Exception ex)
  265. {
  266. if (ex is ExceptionEx)
  267. {
  268. throw;
  269. }
  270. else
  271. {
  272. throw ExceptionEx.ThrowServiceException(ex);
  273. }
  274. }
  275. }
  276. /// <summary>
  277. /// 获取流程信息列表
  278. /// </summary>
  279. /// <param name="pagination">分页参数</param>
  280. /// <param name="queryJson">查询条件</param>
  281. /// <returns></returns>
  282. public IEnumerable<LC_docx2Entity> GetTransceiver(Pagination pagination, string queryJson)
  283. {
  284. try
  285. {
  286. var queryParam = queryJson.ToJObject();
  287. var dbName = this.BaseRepository().getDbConnection().Database;
  288. var dbMISName = this.BaseRepository("CollegeMIS").getDbConnection().Database;
  289. var dp = new DynamicParameters(new { });
  290. var strSql = new StringBuilder();
  291. strSql.Append(" select LC_ID, LC_party, LC_accept, LC_amount, LC_num, LC_numdoc, LC_name, LC_important, LC_secret, LC_docx, LC_other, LC_docx2, LC_docx3, LC_docx4, LC_docx5,lnp.* from " + dbMISName + ".[dbo].LC_docx2 zb ");
  292. strSql.Append(" left join " + dbName + ".[dbo].LR_NWF_PROCESS lnp on zb.LC_ID =lnp.F_id ");
  293. strSql.Append(" where 1=1 and lnp.F_SchemeCode = 'LC_docx' ");
  294. strSql.Append(" and lnp.F_EnabledMark != '3' and lnp.F_EnabledMark != '2' and lnp.F_IsChild='0' ");
  295. if (queryParam["categoryId"].ToString() == "1")
  296. {
  297. strSql.Append(" and lnp.F_IsFinished= '0' ");
  298. }
  299. else
  300. {
  301. strSql.Append(" and lnp.F_IsFinished= '1' ");
  302. }
  303. if (!queryParam["LC_party"].IsEmpty())
  304. {
  305. strSql.Append(" and zb.LC_party like '%" + queryParam["LC_party"].ToString() + "%' ");
  306. }
  307. if (!queryParam["LC_name"].IsEmpty())
  308. {
  309. strSql.Append(" and zb.LC_name like '%" + queryParam["LC_name"].ToString() + "%' ");
  310. }
  311. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  312. {
  313. DateTime startTime = queryParam["StartTime"].ToDate();
  314. DateTime endTime = queryParam["EndTime"].ToDate();
  315. strSql.Append(" and CONVERT(varchar, zb.lc_accept) >= CONVERT(varchar, '" + startTime + "') and CONVERT(varchar, zb.LC_accept) <= CONVERT(varchar, '" + endTime + "')");
  316. }
  317. return this.BaseRepository("CollegeMIS").FindList<LC_docx2Entity>(strSql.ToString(), dp,pagination);
  318. }
  319. catch (Exception ex)
  320. {
  321. if (ex is ExceptionEx)
  322. {
  323. throw;
  324. }
  325. else
  326. {
  327. throw ExceptionEx.ThrowServiceException(ex);
  328. }
  329. }
  330. }
  331. /// <summary>
  332. /// 根据processid 获取taskid
  333. /// </summary>
  334. /// <param name="processId">流程id</param>
  335. /// <returns></returns>
  336. public string GetFirstTaskByProcessId(string processId)
  337. {
  338. try
  339. {
  340. return this.BaseRepository().FindList<NWFTaskEntity>(a => a.F_ProcessId == processId).OrderBy(a => a.F_ModifyDate).FirstOrDefault()?.F_Id;
  341. }
  342. catch (Exception ex)
  343. {
  344. if (ex is ExceptionEx)
  345. {
  346. throw;
  347. }
  348. else
  349. {
  350. throw ExceptionEx.ThrowServiceException(ex);
  351. }
  352. }
  353. }
  354. /// <summary>
  355. /// 获取流程信息列表
  356. /// </summary>
  357. /// <param name="pagination">分页参数</param>
  358. /// <param name="queryJson">查询条件</param>
  359. /// <returns></returns>
  360. public IEnumerable<NWFProcessEntity> GetAllList()
  361. {
  362. try
  363. {
  364. return this.BaseRepository().FindList<NWFProcessEntity>();
  365. }
  366. catch (Exception ex)
  367. {
  368. if (ex is ExceptionEx)
  369. {
  370. throw;
  371. }
  372. else
  373. {
  374. throw ExceptionEx.ThrowServiceException(ex);
  375. }
  376. }
  377. }
  378. public LC_hetongEntity GetHTInfo(string keyValue)
  379. {
  380. try
  381. {
  382. return this.BaseRepository("CollegeMIS").FindEntity<LC_hetongEntity>(a => a.LC_ID == keyValue);
  383. }
  384. catch (Exception ex)
  385. {
  386. if (ex is ExceptionEx)
  387. {
  388. throw;
  389. }
  390. else
  391. {
  392. throw ExceptionEx.ThrowServiceException(ex);
  393. }
  394. }
  395. }
  396. /// <summary>
  397. /// 获取我的流程信息列表
  398. /// </summary>
  399. /// <param name="userId">用户主键</param>
  400. /// <param name="pagination">分页参数</param>
  401. /// <param name="queryJson">查询条件</param>
  402. /// <param name="schemeCode">流程模板编码</param>
  403. /// <returns></returns>
  404. public IEnumerable<NWFProcessEntity> GetMyPageList(string userId, Pagination pagination, string queryJson, string schemeCode)
  405. {
  406. try
  407. {
  408. var expression = LinqExtensions.True<NWFProcessEntity>();
  409. var queryParam = queryJson.ToJObject();
  410. expression = expression.And(t => t.F_CreateUserId == userId);
  411. // 操作时间
  412. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  413. {
  414. DateTime startTime = queryParam["StartTime"].ToDate();
  415. DateTime endTime = queryParam["EndTime"].ToDate();
  416. expression = expression.And(t => t.F_CreateDate >= startTime && t.F_CreateDate <= endTime);
  417. }
  418. // 关键字
  419. if (!queryParam["keyword"].IsEmpty())
  420. {
  421. string keyword = queryParam["keyword"].ToString();
  422. expression = expression.And(t => t.F_Title.Contains(keyword) || t.F_SchemeName.Contains(keyword));
  423. }
  424. if (!string.IsNullOrEmpty(schemeCode))
  425. {
  426. expression = expression.And(t => t.F_SchemeCode.Equals(schemeCode));
  427. }
  428. expression = expression.And(t => t.F_IsChild == 0);
  429. var aa = this.BaseRepository().FindList<NWFProcessEntity>(expression, pagination);
  430. foreach (var item in aa)
  431. {
  432. item.F_TaskId = this.BaseRepository().FindEntity<NWFTaskEntity>(x => x.F_ProcessId == item.F_Id)?.F_Id;
  433. //合同流程审批专用 如果第一步校长审批同意的话 可以打印授权委托书
  434. if (item.F_SchemeCode == "LC_Contract_")
  435. {
  436. var entity = this.BaseRepository().FindEntity<NWFTaskLogEntity>(a =>
  437. a.F_ProcessId == item.F_Id && a.F_TaskUserId == "29add015-3638-415d-9f91-5024bd746fb5" &&
  438. a.F_OperationCode == "agree");
  439. if (null != entity)
  440. {
  441. item.LeaderIsAgree = true;
  442. }
  443. }
  444. }
  445. return aa;
  446. }
  447. catch (Exception ex)
  448. {
  449. if (ex is ExceptionEx)
  450. {
  451. throw;
  452. }
  453. else
  454. {
  455. throw ExceptionEx.ThrowServiceException(ex);
  456. }
  457. }
  458. }
  459. /// <summary>
  460. /// 获取我的流程信息列表
  461. /// </summary>
  462. /// <param name="userId">用户主键</param>
  463. /// <param name="pagination">分页参数</param>
  464. /// <param name="schemeCode">流程模板编码</param>
  465. /// <returns></returns>
  466. public IEnumerable<NWFProcessEntity> GetMyPageList(string userId, string queryJson, string schemeCode)
  467. {
  468. try
  469. {
  470. var expression = LinqExtensions.True<NWFProcessEntity>();
  471. var queryParam = queryJson.ToJObject();
  472. expression = expression.And(t => t.F_CreateUserId == userId);
  473. // 操作时间
  474. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  475. {
  476. DateTime startTime = queryParam["StartTime"].ToDate();
  477. DateTime endTime = queryParam["EndTime"].ToDate();
  478. expression = expression.And(t => t.F_CreateDate >= startTime && t.F_CreateDate <= endTime);
  479. }
  480. // 关键字
  481. if (!queryParam["keyword"].IsEmpty())
  482. {
  483. string keyword = queryParam["keyword"].ToString();
  484. expression = expression.And(t => t.F_Title.Contains(keyword) || t.F_SchemeName.Contains(keyword));
  485. }
  486. if (!string.IsNullOrEmpty(schemeCode))
  487. {
  488. expression = expression.And(t => t.F_SchemeCode.Equals(schemeCode));
  489. }
  490. expression = expression.And(t => t.F_IsChild == 0);
  491. return this.BaseRepository().FindList<NWFProcessEntity>(expression);
  492. }
  493. catch (Exception ex)
  494. {
  495. if (ex is ExceptionEx)
  496. {
  497. throw;
  498. }
  499. else
  500. {
  501. throw ExceptionEx.ThrowServiceException(ex);
  502. }
  503. }
  504. }
  505. /// <summary>
  506. /// 获取我的代办任务列表
  507. /// </summary>
  508. /// <param name="userInfo">用户信息</param>
  509. /// <param name="pagination">翻页信息</param>
  510. /// <param name="queryJson">查询条件</param>
  511. /// <param name="schemeCode">流程模板编码</param>
  512. /// <param name="isBatchAudit">true获取批量审核任务</param>
  513. /// <returns></returns>
  514. public IEnumerable<NWFProcessEntity> GetMyTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, string schemeCode, bool isBatchAudit = false)
  515. {
  516. try
  517. {
  518. string userId = userInfo.userId;
  519. var strSql = new StringBuilder();
  520. strSql.Append(@"SELECT
  521. t.F_Id AS F_TaskId,
  522. t.F_Type AS F_TaskType,
  523. t.F_NodeName AS F_TaskName,
  524. t.F_IsUrge,
  525. t.F_ModifyDate as F_CreateDate,
  526. p.F_Id,
  527. p.F_SchemeId,
  528. p.F_SchemeCode,
  529. p.F_SchemeName,
  530. p.F_Title,
  531. p.F_Level,
  532. p.F_EnabledMark,
  533. p.F_IsAgain,
  534. p.F_IsFinished,
  535. p.F_IsChild,
  536. p.F_ParentTaskId,
  537. p.F_ParentProcessId,
  538. p.F_CreateUserId,
  539. p.F_CreateUserName,
  540. p.F_IsStart
  541. FROM
  542. (
  543. SELECT
  544. F_TaskId
  545. FROM
  546. LR_NWF_TaskRelation r1
  547. LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
  548. WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
  549. ");
  550. // 添加委托信息
  551. List<UserInfo> delegateList = GetDelegateProcess(userId);
  552. foreach (var item in delegateList)
  553. {
  554. string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
  555. string userI2 = "'" + item.userId + "'";
  556. strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
  557. }
  558. strSql.Append(@") GROUP BY
  559. F_TaskId
  560. ) r
  561. LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
  562. LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
  563. WHERE
  564. t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2 OR t.F_Type = 4 OR t.F_Type = 6)");
  565. var queryParam = queryJson.ToJObject();
  566. DateTime startTime = DateTime.Now, endTime = DateTime.Now;
  567. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  568. {
  569. startTime = queryParam["StartTime"].ToDate();
  570. endTime = queryParam["EndTime"].ToDate();
  571. strSql.Append(" AND ( t.F_ModifyDate >= @startTime AND t.F_ModifyDate <= @endTime ) ");
  572. }
  573. string keyword = "";
  574. if (!queryParam["keyword"].IsEmpty())
  575. {
  576. keyword = "%" + queryParam["keyword"].ToString() + "%";
  577. strSql.Append(" AND ( p.F_Title like @keyword OR p.F_SchemeName like @keyword ) ");
  578. }
  579. if (!string.IsNullOrEmpty(schemeCode))
  580. {
  581. strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
  582. }
  583. if (isBatchAudit)
  584. {
  585. strSql.Append(" AND t.F_IsBatchAudit = 1 ");
  586. }
  587. return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userId, startTime, endTime, keyword, schemeCode }, pagination);
  588. }
  589. catch (Exception ex)
  590. {
  591. if (ex is ExceptionEx)
  592. {
  593. throw;
  594. }
  595. else
  596. {
  597. throw ExceptionEx.ThrowServiceException(ex);
  598. }
  599. }
  600. }
  601. /// <summary>
  602. /// 获取我的代办任务列表
  603. /// </summary>
  604. /// <param name="userInfo">用户信息</param>
  605. /// <param name="queryJson">查询条件</param>
  606. /// <param name="schemeCode">流程模板编码</param>
  607. /// <param name="isBatchAudit">true获取批量审核任务</param>
  608. /// <returns></returns>
  609. public IEnumerable<NWFProcessEntity> GetMyTaskPageList(UserInfo userInfo, string queryJson, string schemeCode, bool isBatchAudit = false)
  610. {
  611. try
  612. {
  613. string userId = userInfo.userId;
  614. var strSql = new StringBuilder();
  615. strSql.Append(@"SELECT
  616. t.F_Id AS F_TaskId,
  617. t.F_Type AS F_TaskType,
  618. t.F_NodeName AS F_TaskName,
  619. t.F_IsUrge,
  620. t.F_ModifyDate as F_CreateDate,
  621. p.F_Id,
  622. p.F_SchemeId,
  623. p.F_SchemeCode,
  624. p.F_SchemeName,
  625. p.F_Title,
  626. p.F_Level,
  627. p.F_EnabledMark,
  628. p.F_IsAgain,
  629. p.F_IsFinished,
  630. p.F_IsChild,
  631. p.F_ParentTaskId,
  632. p.F_ParentProcessId,
  633. p.F_CreateUserId,
  634. p.F_CreateUserName,
  635. p.F_IsStart
  636. FROM
  637. (
  638. SELECT
  639. F_TaskId
  640. FROM
  641. LR_NWF_TaskRelation r1
  642. LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
  643. WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
  644. ");
  645. // 添加委托信息
  646. List<UserInfo> delegateList = GetDelegateProcess(userId);
  647. foreach (var item in delegateList)
  648. {
  649. string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
  650. string userI2 = "'" + item.userId + "'";
  651. strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
  652. }
  653. strSql.Append(@") GROUP BY
  654. F_TaskId
  655. ) r
  656. LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
  657. LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
  658. WHERE
  659. t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2 OR t.F_Type = 4 OR t.F_Type = 6)");
  660. var queryParam = queryJson.ToJObject();
  661. DateTime startTime = DateTime.Now, endTime = DateTime.Now;
  662. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  663. {
  664. startTime = queryParam["StartTime"].ToDate();
  665. endTime = queryParam["EndTime"].ToDate();
  666. strSql.Append(" AND ( t.F_ModifyDate >= @startTime AND t.F_ModifyDate <= @endTime ) ");
  667. }
  668. string keyword = "";
  669. if (!queryParam["keyword"].IsEmpty())
  670. {
  671. keyword = "%" + queryParam["keyword"].ToString() + "%";
  672. strSql.Append(" AND ( p.F_Title like @keyword OR p.F_SchemeName like @keyword ) ");
  673. }
  674. if (!string.IsNullOrEmpty(schemeCode))
  675. {
  676. strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
  677. }
  678. if (isBatchAudit)
  679. {
  680. strSql.Append(" AND t.F_IsBatchAudit = 1 ");
  681. }
  682. return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userId, startTime, endTime, keyword, schemeCode });
  683. }
  684. catch (Exception ex)
  685. {
  686. if (ex is ExceptionEx)
  687. {
  688. throw;
  689. }
  690. else
  691. {
  692. throw ExceptionEx.ThrowServiceException(ex);
  693. }
  694. }
  695. }
  696. /// <summary>
  697. /// 获取我的已办任务列表
  698. /// </summary>
  699. /// <param name="userId">用户主键</param>
  700. /// <param name="pagination">翻页信息</param>
  701. /// <param name="queryJson">查询条件</param>
  702. /// <param name="schemeCode">流程模板编码</param>
  703. /// <returns></returns>
  704. public IEnumerable<NWFProcessEntity> GetMyFinishTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, string schemeCode)
  705. {
  706. try
  707. {
  708. var strSql = new StringBuilder();
  709. strSql.Append(@"SELECT
  710. t.F_Id AS F_TaskId,
  711. t.F_Type AS F_TaskType,
  712. t.F_NodeName AS F_TaskName,
  713. r.F_Time as F_CreateDate,
  714. p.F_Id,
  715. p.F_SchemeId,
  716. p.F_SchemeCode,
  717. p.F_SchemeName,
  718. p.F_Title,
  719. p.F_Level,
  720. p.F_EnabledMark,
  721. p.F_IsAgain,
  722. p.F_IsFinished,
  723. p.F_IsChild,
  724. p.F_ParentTaskId,
  725. p.F_ParentProcessId,
  726. p.F_CreateUserId,
  727. p.F_CreateUserName,
  728. p.F_IsStart,
  729. t.F_NodeId
  730. FROM
  731. LR_NWF_Task t
  732. LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
  733. LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
  734. WHERE
  735. (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
  736. ");
  737. var queryParam = queryJson.ToJObject();
  738. DateTime startTime = DateTime.Now, endTime = DateTime.Now;
  739. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  740. {
  741. startTime = queryParam["StartTime"].ToDate();
  742. endTime = queryParam["EndTime"].ToDate();
  743. strSql.Append(" AND ( r.F_Time >= @startTime AND r.F_Time <= @endTime ) ");
  744. }
  745. string keyword = "";
  746. if (!queryParam["keyword"].IsEmpty())
  747. {
  748. keyword = "%" + queryParam["keyword"].ToString() + "%";
  749. strSql.Append(" AND ( p.F_ProcessName like @keyword OR p.F_SchemeName like @keyword ) ");
  750. }
  751. if (!string.IsNullOrEmpty(schemeCode))
  752. {
  753. strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
  754. }
  755. var data = this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode }, pagination);
  756. foreach (var item in data)
  757. {
  758. var nextNode = this.BaseRepository().FindEntity<NWFTaskLogEntity>(a =>
  759. a.F_ProcessId == item.F_Id && a.F_PrevNodeId == item.F_NodeId);
  760. if (null != nextNode)
  761. {
  762. item.NextNodeIsAudited = true;
  763. }
  764. }
  765. return data;
  766. }
  767. catch (Exception ex)
  768. {
  769. if (ex is ExceptionEx)
  770. {
  771. throw;
  772. }
  773. else
  774. {
  775. throw ExceptionEx.ThrowServiceException(ex);
  776. }
  777. }
  778. }
  779. /// <summary>
  780. /// 获取我的已办任务列表
  781. /// </summary>
  782. /// <param name="userId">用户主键</param>
  783. /// <param name="queryJson">查询条件</param>
  784. /// <param name="schemeCode">流程模板编码</param>
  785. /// <returns></returns>
  786. public IEnumerable<NWFProcessEntity> GetMyFinishTaskPageList(UserInfo userInfo, string queryJson, string schemeCode)
  787. {
  788. try
  789. {
  790. var strSql = new StringBuilder();
  791. strSql.Append(@"SELECT
  792. t.F_Id AS F_TaskId,
  793. t.F_Type AS F_TaskType,
  794. t.F_NodeName AS F_TaskName,
  795. r.F_Time as F_CreateDate,
  796. p.F_Id,
  797. p.F_SchemeId,
  798. p.F_SchemeCode,
  799. p.F_SchemeName,
  800. p.F_Title,
  801. p.F_Level,
  802. p.F_EnabledMark,
  803. p.F_IsAgain,
  804. p.F_IsFinished,
  805. p.F_IsChild,
  806. p.F_ParentTaskId,
  807. p.F_ParentProcessId,
  808. p.F_CreateUserId,
  809. p.F_CreateUserName,
  810. p.F_IsStart
  811. FROM
  812. LR_NWF_Task t
  813. LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
  814. LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
  815. WHERE
  816. (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
  817. ");
  818. var queryParam = queryJson.ToJObject();
  819. DateTime startTime = DateTime.Now, endTime = DateTime.Now;
  820. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  821. {
  822. startTime = queryParam["StartTime"].ToDate();
  823. endTime = queryParam["EndTime"].ToDate();
  824. strSql.Append(" AND ( r.F_Time >= @startTime AND r.F_Time <= @endTime ) ");
  825. }
  826. string keyword = "";
  827. if (!queryParam["keyword"].IsEmpty())
  828. {
  829. keyword = "%" + queryParam["keyword"].ToString() + "%";
  830. strSql.Append(" AND ( p.F_ProcessName like @keyword OR p.F_SchemeName like @keyword ) ");
  831. }
  832. if (!string.IsNullOrEmpty(schemeCode))
  833. {
  834. strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
  835. }
  836. return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode });
  837. }
  838. catch (Exception ex)
  839. {
  840. if (ex is ExceptionEx)
  841. {
  842. throw;
  843. }
  844. else
  845. {
  846. throw ExceptionEx.ThrowServiceException(ex);
  847. }
  848. }
  849. }
  850. /// <summary>
  851. /// 获取委托人关联的流程进程列表
  852. /// </summary>
  853. /// <param name="userId">当前用户主键</param>
  854. /// <returns></returns>
  855. public List<UserInfo> GetDelegateProcess(string userId)
  856. {
  857. try
  858. {
  859. List<UserInfo> delegateUserlist = new List<UserInfo>();
  860. DateTime datatime = DateTime.Now;
  861. IEnumerable<NWFDelegateRuleEntity> wfDelegateRuleList = this.BaseRepository().FindList<NWFDelegateRuleEntity>(t => t.F_ToUserId == userId && t.F_BeginDate <= datatime && t.F_EndDate >= datatime);
  862. foreach (var item in wfDelegateRuleList)
  863. {
  864. UserInfo userinfo = new UserInfo();
  865. userinfo.userId = item.F_CreateUserId;
  866. var strSql = new StringBuilder();
  867. strSql.Append(@"SELECT
  868. p.F_Id
  869. FROM
  870. LR_NWF_DelegateRelation d
  871. LEFT JOIN LR_NWF_SchemeInfo s ON s.F_Id = d.F_SchemeInfoId
  872. LEFT JOIN LR_NWF_Process p ON p.F_SchemeCode = s.F_Code
  873. WHERE
  874. p.F_Id IS NOT NULL
  875. AND p.F_IsFinished = 0
  876. AND d.F_DelegateRuleId = @DelegateRuleId ");
  877. DataTable dt = this.BaseRepository().FindTable(strSql.ToString(), new { DelegateRuleId = item.F_Id });
  878. userinfo.wfProcessId = "";
  879. foreach (DataRow dr in dt.Rows)
  880. {
  881. if (!string.IsNullOrEmpty(dr[0].ToString()))
  882. {
  883. if (!string.IsNullOrEmpty(userinfo.wfProcessId))
  884. {
  885. userinfo.wfProcessId += ",";
  886. }
  887. userinfo.wfProcessId += dr[0].ToString();
  888. }
  889. }
  890. if (!string.IsNullOrEmpty(userinfo.wfProcessId))
  891. {
  892. delegateUserlist.Add(userinfo);
  893. }
  894. }
  895. return delegateUserlist;
  896. }
  897. catch (Exception ex)
  898. {
  899. if (ex is ExceptionEx)
  900. {
  901. throw;
  902. }
  903. else
  904. {
  905. throw ExceptionEx.ThrowServiceException(ex);
  906. }
  907. }
  908. }
  909. #region 流程表单数据统计
  910. /// <summary>
  911. /// 用印申请流程表单统计
  912. /// </summary>
  913. /// <param name="pagination">分页参数</param>
  914. /// <param name="queryJson">查询条件</param>
  915. /// <returns></returns>
  916. public IEnumerable<LC_yyspdEntity> GetPageListOfyyspd(Pagination pagination, string queryJson)
  917. {
  918. try
  919. {
  920. var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database;
  921. var basedbname = BaseRepository().getDbConnection().Database;
  922. var strSql = new StringBuilder();
  923. strSql.Append("select y.*,t.F_Id,t.F_SchemeId,t.F_SchemeCode,t.F_SchemeName,t.F_Title,t.F_Level,t.F_EnabledMark,t.F_IsFinished,t.F_CreateDate,t.F_CreateUserId,t.F_CreateUserName as F_CreateUserNameInProcess from LR_NWF_Process t left join LR_NWF_SchemeInfo s on t.F_SchemeCode=s.F_Code ");
  924. strSql.Append($" left join {misdbname}.dbo.LC_yyspd y on y.LC_ID=t.F_Id ");
  925. strSql.Append(" where 1=1 and t.F_EnabledMark !=2 and t.F_EnabledMark != 3 and t.F_IsChild = 0 ");
  926. strSql.Append(" and s.F_Code='LC_yyspd' ");
  927. var queryParam = queryJson.ToJObject();
  928. // 虚拟参数
  929. var dp = new DynamicParameters(new { });
  930. // 分类
  931. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  932. {
  933. if (queryParam["categoryId"].ToString() == "1")
  934. {
  935. strSql.Append(" and t.F_IsFinished = 0 ");
  936. }
  937. else
  938. {
  939. strSql.Append(" and t.F_IsFinished = 1 ");
  940. }
  941. }
  942. //用印名称
  943. if (!queryParam["LC_yzmc"].IsEmpty())
  944. {
  945. dp.Add("LC_yzmc", "%" + queryParam["LC_yzmc"].ToString() + "%", DbType.String);
  946. strSql.Append(" AND y.LC_yzmc like @LC_yzmc ");
  947. }
  948. //用印事项
  949. if (!queryParam["LC_yysx"].IsEmpty())
  950. {
  951. dp.Add("LC_yysx", "%" + queryParam["LC_yysx"].ToString() + "%", DbType.String);
  952. strSql.Append(" AND y.LC_yysx like @LC_yysx ");
  953. }
  954. //用印时间
  955. if (!queryParam["LC_yysj"].IsEmpty())
  956. {
  957. dp.Add("LC_yysj", "%" + queryParam["LC_yysj"].ToString() + "%", DbType.String);
  958. strSql.Append(" AND y.LC_yysj like @LC_yysj ");
  959. }
  960. //关键字:用印名称、用印事项、用印时间
  961. if (!queryParam["keyword"].IsEmpty())
  962. {
  963. dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  964. strSql.Append(" AND (y.LC_yzmc like @keyword or y.LC_yysx like @keyword or y.LC_yysj like @keyword) ");
  965. }
  966. // 用印时间
  967. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  968. {
  969. dp.Add("StartTime", queryParam["StartTime"].ToString(), DbType.String);
  970. dp.Add("EndTime", queryParam["EndTime"].ToString(), DbType.String);
  971. strSql.Append(" and (y.LC_yysj >= @StartTime and y.LC_yysj <= @EndTime)");
  972. }
  973. var result = this.BaseRepository().FindList<LC_yyspdEntity>(strSql.ToString(), dp);
  974. return result;
  975. }
  976. catch (Exception ex)
  977. {
  978. if (ex is ExceptionEx)
  979. {
  980. throw;
  981. }
  982. else
  983. {
  984. throw ExceptionEx.ThrowServiceException(ex);
  985. }
  986. }
  987. }
  988. /// <summary>
  989. /// 会议室申请流程表单统计
  990. /// </summary>
  991. /// <param name="pagination">分页参数</param>
  992. /// <param name="queryJson">查询条件</param>
  993. /// <returns></returns>
  994. public IEnumerable<LC_meetingEntity> GetPageListOfmeeting(Pagination pagination, string queryJson)
  995. {
  996. try
  997. {
  998. var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database;
  999. var basedbname = BaseRepository().getDbConnection().Database;
  1000. var strSql = new StringBuilder();
  1001. strSql.Append("select y.*,t.F_Id,t.F_SchemeId,t.F_SchemeCode,t.F_SchemeName,t.F_Title,t.F_Level,t.F_EnabledMark,t.F_IsFinished,t.F_CreateDate,t.F_CreateUserId,t.F_CreateUserName as F_CreateUserNameInProcess from LR_NWF_Process t left join LR_NWF_SchemeInfo s on t.F_SchemeCode=s.F_Code ");
  1002. strSql.Append($" left join {misdbname}.dbo.LC_meeting y on y.LC_ID=t.F_Id ");
  1003. strSql.Append(" where 1=1 and t.F_EnabledMark !=2 and t.F_EnabledMark != 3 and t.F_IsChild = 0 ");
  1004. strSql.Append(" and s.F_Code='LC_meeting' ");
  1005. var queryParam = queryJson.ToJObject();
  1006. // 虚拟参数
  1007. var dp = new DynamicParameters(new { });
  1008. // 分类
  1009. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  1010. {
  1011. if (queryParam["categoryId"].ToString() == "1")
  1012. {
  1013. strSql.Append(" and t.F_IsFinished = 0 ");
  1014. }
  1015. else
  1016. {
  1017. strSql.Append(" and t.F_IsFinished = 1 ");
  1018. }
  1019. }
  1020. //申请人
  1021. if (!queryParam["F_CreateUserName"].IsEmpty())
  1022. {
  1023. dp.Add("F_CreateUserName", "%" + queryParam["F_CreateUserName"].ToString() + "%", DbType.String);
  1024. strSql.Append(" AND y.F_CreateUserName like @F_CreateUserName ");
  1025. }
  1026. //会议主题
  1027. if (!queryParam["LC_Title"].IsEmpty())
  1028. {
  1029. dp.Add("LC_Title", "%" + queryParam["LC_Title"].ToString() + "%", DbType.String);
  1030. strSql.Append(" AND y.LC_Title like @LC_Title ");
  1031. }
  1032. //会议内容
  1033. if (!queryParam["LC_Content"].IsEmpty())
  1034. {
  1035. dp.Add("LC_Content", "%" + queryParam["LC_Content"].ToString() + "%", DbType.String);
  1036. strSql.Append(" AND y.LC_Content like @LC_Content ");
  1037. }
  1038. //会议室
  1039. if (!queryParam["LC_Meetroom"].IsEmpty())
  1040. {
  1041. dp.Add("LC_Meetroom", "%" + queryParam["LC_Meetroom"].ToString() + "%", DbType.String);
  1042. strSql.Append(" AND y.LC_Meetroom like @LC_Meetroom ");
  1043. }
  1044. //会议时间
  1045. if (!queryParam["LC_MeetTime"].IsEmpty())
  1046. {
  1047. dp.Add("LC_MeetTime", "%" + queryParam["LC_MeetTime"].ToString() + "%", DbType.String);
  1048. strSql.Append(" AND y.LC_MeetTime like @LC_MeetTime ");
  1049. }
  1050. //关键字:申请人、会议主题、会议内容、会议室、会议时间
  1051. if (!queryParam["keyword"].IsEmpty())
  1052. {
  1053. dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  1054. strSql.Append(" AND (y.F_CreateUserName like @keyword or y.LC_Title like @keyword or y.LC_Content like @keyword or y.LC_Meetroom like @keyword or y.LC_MeetTime like @keyword) ");
  1055. }
  1056. // 会议时间
  1057. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  1058. {
  1059. dp.Add("StartTime", queryParam["StartTime"].ToString(), DbType.Date);
  1060. dp.Add("EndTime", queryParam["EndTime"].ToString(), DbType.Date);
  1061. strSql.Append(" and (y.LC_MeetTime >= @StartTime and y.LC_MeetTime <= @EndTime)");
  1062. }
  1063. var result = this.BaseRepository().FindList<LC_meetingEntity>(strSql.ToString(), dp);
  1064. return result;
  1065. }
  1066. catch (Exception ex)
  1067. {
  1068. if (ex is ExceptionEx)
  1069. {
  1070. throw;
  1071. }
  1072. else
  1073. {
  1074. throw ExceptionEx.ThrowServiceException(ex);
  1075. }
  1076. }
  1077. }
  1078. /// <summary>
  1079. /// 党委会党委专题会申请流程表单统计
  1080. /// </summary>
  1081. /// <param name="pagination">分页参数</param>
  1082. /// <param name="queryJson">查询条件</param>
  1083. /// <returns></returns>
  1084. public IEnumerable<LC_dwhsqEntity> GetPageListOfdwhsq(Pagination pagination, string queryJson)
  1085. {
  1086. try
  1087. {
  1088. var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database;
  1089. var basedbname = BaseRepository().getDbConnection().Database;
  1090. var strSql = new StringBuilder();
  1091. strSql.Append("select y.*,t.F_Id,t.F_SchemeId,t.F_SchemeCode,t.F_SchemeName,t.F_Title,t.F_Level,t.F_EnabledMark,t.F_IsFinished,t.F_CreateDate,t.F_CreateUserId,t.F_CreateUserName as F_CreateUserNameInProcess from LR_NWF_Process t left join LR_NWF_SchemeInfo s on t.F_SchemeCode=s.F_Code ");
  1092. strSql.Append($" left join {misdbname}.dbo.LC_dwhsq y on y.LC_ID=t.F_Id ");
  1093. strSql.Append(" where 1=1 and t.F_EnabledMark !=2 and t.F_EnabledMark != 3 and t.F_IsChild = 0 ");
  1094. strSql.Append(" and s.F_Code='LC_dwhsq' ");
  1095. var queryParam = queryJson.ToJObject();
  1096. // 虚拟参数
  1097. var dp = new DynamicParameters(new { });
  1098. // 分类
  1099. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  1100. {
  1101. if (queryParam["categoryId"].ToString() == "1")
  1102. {
  1103. strSql.Append(" and t.F_IsFinished = 0 ");
  1104. }
  1105. else
  1106. {
  1107. strSql.Append(" and t.F_IsFinished = 1 ");
  1108. }
  1109. }
  1110. //申请人
  1111. if (!queryParam["F_CreateUserName"].IsEmpty())
  1112. {
  1113. dp.Add("F_CreateUserName", "%" + queryParam["F_CreateUserName"].ToString() + "%", DbType.String);
  1114. strSql.Append(" AND y.F_CreateUserName like @F_CreateUserName ");
  1115. }
  1116. //会议主题
  1117. if (!queryParam["LC_hyzt"].IsEmpty())
  1118. {
  1119. dp.Add("LC_hyzt", "%" + queryParam["LC_hyzt"].ToString() + "%", DbType.String);
  1120. strSql.Append(" AND y.LC_hyzt like @LC_hyzt ");
  1121. }
  1122. //会议内容
  1123. if (!queryParam["LC_hynr"].IsEmpty())
  1124. {
  1125. dp.Add("LC_hynr", "%" + queryParam["LC_hynr"].ToString() + "%", DbType.String);
  1126. strSql.Append(" AND y.LC_hynr like @LC_hynr ");
  1127. }
  1128. //会议时间
  1129. if (!queryParam["LC_hysj"].IsEmpty())
  1130. {
  1131. dp.Add("LC_hysj", "%" + queryParam["LC_hysj"].ToString() + "%", DbType.String);
  1132. strSql.Append(" AND y.LC_hysj like @LC_hysj ");
  1133. }
  1134. //关键字:申请人、会议主题、会议内容、会议时间
  1135. if (!queryParam["keyword"].IsEmpty())
  1136. {
  1137. dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  1138. strSql.Append(" AND (y.F_CreateUserName like @keyword or y.LC_hyzt like @keyword or y.LC_hysj like @keyword or y.LC_hynr like @keyword ) ");
  1139. }
  1140. // 会议时间
  1141. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  1142. {
  1143. dp.Add("StartTime", queryParam["StartTime"].ToString(), DbType.Date);
  1144. dp.Add("EndTime", queryParam["EndTime"].ToString(), DbType.Date);
  1145. strSql.Append(" and (y.LC_hysj >= @StartTime and y.LC_hysj <= @EndTime)");
  1146. }
  1147. var result = this.BaseRepository().FindList<LC_dwhsqEntity>(strSql.ToString(), dp);
  1148. return result;
  1149. }
  1150. catch (Exception ex)
  1151. {
  1152. if (ex is ExceptionEx)
  1153. {
  1154. throw;
  1155. }
  1156. else
  1157. {
  1158. throw ExceptionEx.ThrowServiceException(ex);
  1159. }
  1160. }
  1161. }
  1162. #endregion
  1163. #region 获取sql语句
  1164. /// <summary>
  1165. /// 获取我的流程信息列表SQL语句
  1166. /// </summary>
  1167. /// <returns></returns>
  1168. public string GetMySql()
  1169. {
  1170. try
  1171. {
  1172. var strSql = new StringBuilder();
  1173. strSql.Append(@"SELECT
  1174. p.F_CreateDate,
  1175. p.F_Id,
  1176. p.F_SchemeId,
  1177. p.F_SchemeCode,
  1178. p.F_SchemeName,
  1179. p.F_Title,
  1180. p.F_Level,
  1181. p.F_EnabledMark,
  1182. p.F_IsAgain,
  1183. p.F_IsFinished,
  1184. p.F_IsChild,
  1185. p.F_ParentTaskId,
  1186. p.F_ParentProcessId,
  1187. p.F_CreateUserId,
  1188. p.F_CreateUserName,
  1189. p.F_IsStart
  1190. FROM
  1191. LR_NWF_Process p
  1192. WHERE
  1193. p.F_CreateUserId = @userId AND p.F_IsChild = 0
  1194. ");
  1195. return strSql.ToString();
  1196. }
  1197. catch (Exception ex)
  1198. {
  1199. if (ex is ExceptionEx)
  1200. {
  1201. throw;
  1202. }
  1203. else
  1204. {
  1205. throw ExceptionEx.ThrowServiceException(ex);
  1206. }
  1207. }
  1208. }
  1209. /// <summary>
  1210. /// 获取我的代办任务列表SQL语句
  1211. /// </summary>
  1212. /// <param name="userInfo">用户信息</param>
  1213. /// <param name="isBatchAudit">true获取批量审核任务</param>
  1214. /// <returns></returns>
  1215. public string GetMyTaskSql(UserInfo userInfo, bool isBatchAudit = false)
  1216. {
  1217. try
  1218. {
  1219. var strSql = new StringBuilder();
  1220. strSql.Append(@"SELECT
  1221. t.F_Id AS F_TaskId,
  1222. t.F_Type AS F_TaskType,
  1223. t.F_NodeName AS F_TaskName,
  1224. t.F_IsUrge,
  1225. t.F_ModifyDate as F_CreateDate,
  1226. p.F_Id,
  1227. p.F_SchemeId,
  1228. p.F_SchemeCode,
  1229. p.F_SchemeName,
  1230. p.F_Title,
  1231. p.F_Level,
  1232. p.F_EnabledMark,
  1233. p.F_IsAgain,
  1234. p.F_IsFinished,
  1235. p.F_IsChild,
  1236. p.F_ParentTaskId,
  1237. p.F_ParentProcessId,
  1238. p.F_CreateUserId,
  1239. p.F_CreateUserName,
  1240. p.F_IsStart
  1241. FROM
  1242. (
  1243. SELECT
  1244. F_TaskId
  1245. FROM
  1246. LR_NWF_TaskRelation r1
  1247. LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
  1248. WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
  1249. ");
  1250. // 添加委托信息
  1251. List<UserInfo> delegateList = GetDelegateProcess(userInfo.userId);
  1252. foreach (var item in delegateList)
  1253. {
  1254. string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
  1255. string userI2 = "'" + item.userId + "'";
  1256. strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
  1257. }
  1258. strSql.Append(@") GROUP BY
  1259. F_TaskId
  1260. ) r
  1261. LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
  1262. LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
  1263. WHERE
  1264. t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2)");
  1265. if (isBatchAudit)
  1266. {
  1267. strSql.Append(" AND t.F_IsBatchAudit = 1 ");
  1268. }
  1269. return strSql.ToString();
  1270. }
  1271. catch (Exception ex)
  1272. {
  1273. if (ex is ExceptionEx)
  1274. {
  1275. throw;
  1276. }
  1277. else
  1278. {
  1279. throw ExceptionEx.ThrowServiceException(ex);
  1280. }
  1281. }
  1282. }
  1283. /// <summary>
  1284. /// 获取我的已办任务列表SQL语句
  1285. /// </summary>
  1286. /// <returns></returns>
  1287. public string GetMyFinishTaskSql()
  1288. {
  1289. try
  1290. {
  1291. var strSql = new StringBuilder();
  1292. strSql.Append(@"SELECT
  1293. t.F_Id AS F_TaskId,
  1294. t.F_Type AS F_TaskType,
  1295. t.F_NodeName AS F_TaskName,
  1296. r.F_Time as F_CreateDate,
  1297. p.F_Id,
  1298. p.F_SchemeId,
  1299. p.F_SchemeCode,
  1300. p.F_SchemeName,
  1301. p.F_Title,
  1302. p.F_Level,
  1303. p.F_EnabledMark,
  1304. p.F_IsAgain,
  1305. p.F_IsFinished,
  1306. p.F_IsChild,
  1307. p.F_ParentTaskId,
  1308. p.F_ParentProcessId,
  1309. p.F_CreateUserId,
  1310. p.F_CreateUserName,
  1311. p.F_IsStart
  1312. FROM
  1313. LR_NWF_Task t
  1314. LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
  1315. LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
  1316. WHERE
  1317. (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
  1318. ");
  1319. return strSql.ToString();
  1320. }
  1321. catch (Exception ex)
  1322. {
  1323. if (ex is ExceptionEx)
  1324. {
  1325. throw;
  1326. }
  1327. else
  1328. {
  1329. throw ExceptionEx.ThrowServiceException(ex);
  1330. }
  1331. }
  1332. }
  1333. #endregion
  1334. #endregion
  1335. #region 保存信息
  1336. /// <summary>
  1337. /// 保存流程进程数据
  1338. /// </summary>
  1339. /// <param name="nWFProcessEntity">流程进程</param>
  1340. /// <param name="taskList">流程任务列表</param>
  1341. /// <param name="taskMsgList">流程消息列表</param>
  1342. /// <param name="taskLogEntity">任务日志</param>
  1343. public void Save(NWFProcessEntity nWFProcessEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFTaskLogEntity taskLogEntity)
  1344. {
  1345. NWFProcessEntity nWFProcessEntityTmp = this.BaseRepository().FindEntity<NWFProcessEntity>(nWFProcessEntity.F_Id);
  1346. var db = this.BaseRepository().BeginTrans();
  1347. try
  1348. {
  1349. if (nWFProcessEntityTmp == null)
  1350. {
  1351. db.Insert(nWFProcessEntity);
  1352. }
  1353. else
  1354. {
  1355. db.Update(nWFProcessEntity);
  1356. }
  1357. foreach (var task in taskList)
  1358. {
  1359. task.F_ModifyDate = DateTime.Now;
  1360. db.Insert(task);
  1361. int num = 1;
  1362. if (task.nWFUserInfoList != null)
  1363. {
  1364. foreach (var taskUser in task.nWFUserInfoList)
  1365. {
  1366. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1367. nWFTaskRelationEntity.Create();
  1368. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1369. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1370. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1371. nWFTaskRelationEntity.F_Result = 0;
  1372. nWFTaskRelationEntity.F_Sort = num;
  1373. db.Insert(nWFTaskRelationEntity);
  1374. num++;
  1375. }
  1376. }
  1377. }
  1378. foreach (var taskMsg in taskMsgList)
  1379. {
  1380. db.Insert(taskMsg);
  1381. }
  1382. db.Insert(taskLogEntity);
  1383. db.Commit();
  1384. }
  1385. catch (Exception ex)
  1386. {
  1387. db.Rollback();
  1388. if (ex is ExceptionEx)
  1389. {
  1390. throw;
  1391. }
  1392. else
  1393. {
  1394. throw ExceptionEx.ThrowServiceException(ex);
  1395. }
  1396. }
  1397. }
  1398. /// <summary>
  1399. /// 保存流程进程信息
  1400. /// </summary>
  1401. /// <param name="taskLogEntity">任务日志</param>
  1402. /// <param name="taskRelationEntity">任务执行人状态更新</param>
  1403. /// <param name="taskEntityUpdate">任务状态更新</param>
  1404. /// <param name="processEntity">流程进程状态更新</param>
  1405. /// <param name="confluenceList">会签信息</param>
  1406. /// <param name="closeTaskList">会签需要关闭的任务</param>
  1407. /// <param name="taskList">新的任务列表</param>
  1408. /// <param name="taskMsgList">新的任务消息列表</param>
  1409. public void Save(NWFTaskLogEntity taskLogEntity, NWFTaskRelationEntity taskRelationEntity, NWFTaskEntity taskEntityUpdate, NWFProcessEntity processEntity, List<NWFConfluenceEntity> confluenceList, List<NWFTaskEntity> closeTaskList, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFProcessEntity pProcessEntity = null)
  1410. {
  1411. var db = this.BaseRepository().BeginTrans();
  1412. try
  1413. {
  1414. db.Insert(taskLogEntity);
  1415. if (taskRelationEntity != null)
  1416. db.Update(taskRelationEntity);
  1417. db.Update(taskEntityUpdate);
  1418. if (processEntity != null)
  1419. {
  1420. db.Update(processEntity);
  1421. }
  1422. if (pProcessEntity != null)
  1423. {
  1424. db.Update(pProcessEntity);
  1425. }
  1426. if (confluenceList != null)
  1427. {
  1428. foreach (var item in confluenceList)
  1429. {
  1430. if (item.isClear)
  1431. {
  1432. string processId = item.F_ProcessId;
  1433. string nodeId = item.F_NodeId;
  1434. db.Delete<NWFConfluenceEntity>(t => t.F_ProcessId == processId && t.F_NodeId == nodeId);
  1435. // 增加一条会签审核记录
  1436. NWFTaskLogEntity nWFTaskLogEntity = new NWFTaskLogEntity()
  1437. {
  1438. F_ProcessId = processId,
  1439. F_OperationCode = "confluence",
  1440. F_OperationName = "会签" + (item.confluenceRes == 1 ? "通过" : "不通过"),
  1441. F_NodeId = item.F_NodeId,
  1442. F_TaskType = 7
  1443. };
  1444. nWFTaskLogEntity.Create();
  1445. db.Insert(nWFTaskLogEntity);
  1446. }
  1447. else
  1448. {
  1449. db.Insert(item);
  1450. }
  1451. }
  1452. }
  1453. if (closeTaskList != null)
  1454. {
  1455. foreach (var item in closeTaskList)
  1456. {
  1457. db.Update(item);
  1458. }
  1459. }
  1460. foreach (var task in taskList)
  1461. {
  1462. task.F_ModifyDate = DateTime.Now;
  1463. db.Insert(task);
  1464. int num = 1;
  1465. if (task.nWFUserInfoList != null)
  1466. {
  1467. foreach (var taskUser in task.nWFUserInfoList)
  1468. {
  1469. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1470. nWFTaskRelationEntity.Create();
  1471. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1472. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1473. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1474. nWFTaskRelationEntity.F_Result = 0;
  1475. nWFTaskRelationEntity.F_Sort = num;
  1476. db.Insert(nWFTaskRelationEntity);
  1477. num++;
  1478. }
  1479. }
  1480. }
  1481. foreach (var taskMsg in taskMsgList)
  1482. {
  1483. db.Insert(taskMsg);
  1484. }
  1485. db.Commit();
  1486. }
  1487. catch (Exception ex)
  1488. {
  1489. db.Rollback();
  1490. if (ex is ExceptionEx)
  1491. {
  1492. throw;
  1493. }
  1494. else
  1495. {
  1496. throw ExceptionEx.ThrowServiceException(ex);
  1497. }
  1498. }
  1499. }
  1500. /// <summary>
  1501. /// 保存流程进程数据
  1502. /// </summary>
  1503. /// <param name="nWFProcessEntity">流程进程</param>
  1504. public void Save(NWFProcessEntity nWFProcessEntity)
  1505. {
  1506. try
  1507. {
  1508. this.BaseRepository().Insert(nWFProcessEntity);
  1509. }
  1510. catch (Exception ex)
  1511. {
  1512. if (ex is ExceptionEx)
  1513. {
  1514. throw;
  1515. }
  1516. else
  1517. {
  1518. throw ExceptionEx.ThrowServiceException(ex);
  1519. }
  1520. }
  1521. }
  1522. /// <summary>
  1523. /// 保存流程进程数据
  1524. /// </summary>
  1525. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1526. /// <param name="taskUserUpdateList">任务执行人需要更新状态数据</param>
  1527. /// <param name="nWFTaskMsgEntity">任务消息</param>
  1528. public void Save(NWFTaskLogEntity nWFTaskLogEntity, List<NWFTaskRelationEntity> taskUserUpdateList, NWFTaskMsgEntity nWFTaskMsgEntity)
  1529. {
  1530. var db = this.BaseRepository().BeginTrans();
  1531. try
  1532. {
  1533. db.Insert(nWFTaskLogEntity);
  1534. foreach (var item in taskUserUpdateList)
  1535. {
  1536. db.Update(item);
  1537. }
  1538. db.Insert(nWFTaskMsgEntity);
  1539. db.Commit();
  1540. }
  1541. catch (Exception ex)
  1542. {
  1543. db.Rollback();
  1544. if (ex is ExceptionEx)
  1545. {
  1546. throw;
  1547. }
  1548. else
  1549. {
  1550. throw ExceptionEx.ThrowServiceException(ex);
  1551. }
  1552. }
  1553. }
  1554. /// <summary>
  1555. /// 保存流程进程数据
  1556. /// </summary>
  1557. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1558. /// <param name="nWFTaskRelationEntity">任务执行人需要更新状态数据</param>
  1559. /// <param name="taskEntity">任务</param>
  1560. public void Save(NWFTaskLogEntity nWFTaskLogEntity, NWFTaskRelationEntity nWFTaskRelationEntity, NWFTaskEntity taskEntity)
  1561. {
  1562. var db = this.BaseRepository().BeginTrans();
  1563. try
  1564. {
  1565. db.Insert(nWFTaskLogEntity);
  1566. db.Update(nWFTaskRelationEntity);
  1567. if (taskEntity != null)
  1568. {
  1569. taskEntity.F_ModifyDate = DateTime.Now;
  1570. db.Update(taskEntity);
  1571. }
  1572. db.Commit();
  1573. }
  1574. catch (Exception ex)
  1575. {
  1576. db.Rollback();
  1577. if (ex is ExceptionEx)
  1578. {
  1579. throw;
  1580. }
  1581. else
  1582. {
  1583. throw ExceptionEx.ThrowServiceException(ex);
  1584. }
  1585. }
  1586. }
  1587. /// <summary>
  1588. /// 保存流程进程数据
  1589. /// </summary>
  1590. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1591. /// <param name="taskList">需要更新的任务列表</param>
  1592. /// <param name="taskMsgList">任务消息列表</param>
  1593. public void Save(NWFTaskLogEntity nWFTaskLogEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList)
  1594. {
  1595. var db = this.BaseRepository().BeginTrans();
  1596. try
  1597. {
  1598. db.Insert(nWFTaskLogEntity);
  1599. foreach (var item in taskList)
  1600. {
  1601. item.F_ModifyDate = DateTime.Now;
  1602. db.Update(item);
  1603. }
  1604. foreach (var item in taskMsgList)
  1605. {
  1606. db.Insert(item);
  1607. }
  1608. db.Commit();
  1609. }
  1610. catch (Exception ex)
  1611. {
  1612. db.Rollback();
  1613. if (ex is ExceptionEx)
  1614. {
  1615. throw;
  1616. }
  1617. else
  1618. {
  1619. throw ExceptionEx.ThrowServiceException(ex);
  1620. }
  1621. }
  1622. }
  1623. /// <summary>
  1624. /// 保存流程进程数据
  1625. /// </summary>
  1626. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1627. /// <param name="taskList">需要更新的任务列表</param>
  1628. /// <param name="taskMsgList">任务消息列表</param>
  1629. public void Save(NWFTaskLogEntity nWFTaskLogEntity, NWFTaskEntity task, List<NWFTaskMsgEntity> taskMsgList)
  1630. {
  1631. var db = this.BaseRepository().BeginTrans();
  1632. try
  1633. {
  1634. db.Insert(nWFTaskLogEntity);
  1635. task.F_ModifyDate = DateTime.Now;
  1636. db.Update(task);
  1637. foreach (var item in taskMsgList)
  1638. {
  1639. db.Insert(item);
  1640. }
  1641. db.Commit();
  1642. }
  1643. catch (Exception ex)
  1644. {
  1645. db.Rollback();
  1646. if (ex is ExceptionEx)
  1647. {
  1648. throw;
  1649. }
  1650. else
  1651. {
  1652. throw ExceptionEx.ThrowServiceException(ex);
  1653. }
  1654. }
  1655. }
  1656. /// <summary>
  1657. /// 保存流程进程信息
  1658. /// </summary>
  1659. /// <param name="taskLogEntity">任务日志</param>
  1660. /// <param name="taskRelationEntity">任务执行人状态更新</param>
  1661. /// <param name="taskEntityUpdate">任务状态更新</param>
  1662. /// <param name="processEntity">流程进程状态更新</param>
  1663. /// <param name="taskList">新的任务列表</param>
  1664. /// <param name="taskMsgList">新的任务消息列表</param>
  1665. public void Save(NWFTaskLogEntity pTaskLogEntity, NWFTaskRelationEntity pTaskRelationEntity, NWFTaskEntity pTaskEntityUpdate, NWFProcessEntity pProcessEntity, List<NWFTaskEntity> pTaskList, List<NWFTaskMsgEntity> pTaskMsgList, NWFProcessEntity nWFProcessEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFTaskLogEntity taskLogEntity)
  1666. {
  1667. NWFProcessEntity nWFProcessEntityTmp = this.BaseRepository().FindEntity<NWFProcessEntity>(nWFProcessEntity.F_Id);
  1668. IEnumerable<NWFTaskEntity> uTaskList = this.BaseRepository().FindList<NWFTaskEntity>(t => t.F_ProcessId == nWFProcessEntity.F_Id && t.F_NodeId == taskLogEntity.F_NodeId && t.F_IsFinished == 0);
  1669. var db = this.BaseRepository().BeginTrans();
  1670. try
  1671. {
  1672. if (nWFProcessEntityTmp == null)
  1673. {
  1674. db.Insert(nWFProcessEntity);
  1675. }
  1676. else
  1677. {
  1678. db.Update(nWFProcessEntity);
  1679. }
  1680. foreach (var task in taskList)
  1681. {
  1682. task.F_ModifyDate = DateTime.Now;
  1683. db.Insert(task);
  1684. int num = 1;
  1685. if (task.nWFUserInfoList != null)
  1686. {
  1687. foreach (var taskUser in task.nWFUserInfoList)
  1688. {
  1689. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1690. nWFTaskRelationEntity.Create();
  1691. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1692. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1693. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1694. nWFTaskRelationEntity.F_Result = 0;
  1695. nWFTaskRelationEntity.F_Sort = num;
  1696. db.Insert(nWFTaskRelationEntity);
  1697. num++;
  1698. }
  1699. }
  1700. }
  1701. foreach (var taskMsg in taskMsgList)
  1702. {
  1703. db.Insert(taskMsg);
  1704. }
  1705. db.Insert(taskLogEntity);
  1706. foreach (var item in uTaskList)
  1707. {
  1708. item.F_IsFinished = 1;
  1709. db.Update(item);
  1710. }
  1711. // 父流程
  1712. db.Insert(pTaskLogEntity);
  1713. db.Update(pTaskRelationEntity);
  1714. db.Update(pTaskEntityUpdate);
  1715. if (pProcessEntity != null)
  1716. {
  1717. db.Update(pProcessEntity);
  1718. }
  1719. foreach (var task in pTaskList)
  1720. {
  1721. task.F_ModifyDate = DateTime.Now;
  1722. db.Insert(task);
  1723. int num = 1;
  1724. if (task.nWFUserInfoList != null)
  1725. {
  1726. foreach (var taskUser in task.nWFUserInfoList)
  1727. {
  1728. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1729. nWFTaskRelationEntity.Create();
  1730. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1731. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1732. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1733. nWFTaskRelationEntity.F_Result = 0;
  1734. nWFTaskRelationEntity.F_Sort = num;
  1735. db.Insert(nWFTaskRelationEntity);
  1736. num++;
  1737. }
  1738. }
  1739. }
  1740. foreach (var taskMsg in pTaskMsgList)
  1741. {
  1742. db.Insert(taskMsg);
  1743. }
  1744. db.Commit();
  1745. }
  1746. catch (Exception ex)
  1747. {
  1748. db.Rollback();
  1749. if (ex is ExceptionEx)
  1750. {
  1751. throw;
  1752. }
  1753. else
  1754. {
  1755. throw ExceptionEx.ThrowServiceException(ex);
  1756. }
  1757. }
  1758. }
  1759. /// <summary>
  1760. /// (流程撤销)
  1761. /// </summary>
  1762. /// <param name="processId">流程进程实例</param>
  1763. /// <param name="taskList">流程任务列表</param>
  1764. /// <param name="EnabledMark">2草稿3作废</param>
  1765. public void Save(string processId, IEnumerable<NWFTaskEntity> taskList, int EnabledMark, NWFTaskLogEntity nWFTaskLogEntity = null)
  1766. {
  1767. var db = this.BaseRepository().BeginTrans();
  1768. try
  1769. {
  1770. NWFProcessEntity nWFProcessEntity = new NWFProcessEntity();
  1771. nWFProcessEntity.F_Id = processId;
  1772. nWFProcessEntity.F_EnabledMark = EnabledMark;
  1773. db.Update(nWFProcessEntity);
  1774. if (EnabledMark == 2)
  1775. {
  1776. db.Delete<NWFTaskLogEntity>(t => t.F_ProcessId == processId);
  1777. }
  1778. foreach (var task in taskList)
  1779. {
  1780. db.Delete(task);
  1781. string taskId = task.F_Id;
  1782. db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
  1783. db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
  1784. }
  1785. if (nWFTaskLogEntity != null)
  1786. {
  1787. db.Insert(nWFTaskLogEntity);
  1788. }
  1789. db.Commit();
  1790. }
  1791. catch (Exception ex)
  1792. {
  1793. db.Rollback();
  1794. if (ex is ExceptionEx)
  1795. {
  1796. throw;
  1797. }
  1798. else
  1799. {
  1800. throw ExceptionEx.ThrowServiceException(ex);
  1801. }
  1802. }
  1803. }
  1804. /// <summary>
  1805. /// 删除流程进程实体
  1806. /// </summary>
  1807. /// <param name="processId">流程进程主键</param>
  1808. public void DeleteEntity(string processId)
  1809. {
  1810. try
  1811. {
  1812. this.BaseRepository().Delete<NWFProcessEntity>(t => t.F_Id == processId);
  1813. }
  1814. catch (Exception ex)
  1815. {
  1816. if (ex is ExceptionEx)
  1817. {
  1818. throw;
  1819. }
  1820. else
  1821. {
  1822. throw ExceptionEx.ThrowServiceException(ex);
  1823. }
  1824. }
  1825. }
  1826. /// <summary>
  1827. /// 删除流程进程所有信息(流程撤销)
  1828. /// </summary>
  1829. /// <param name="processId">流程进程实例</param>
  1830. /// <param name="taskList">流程任务列表</param>
  1831. public void Delete(string processId, IEnumerable<NWFTaskEntity> taskList)
  1832. {
  1833. var db = this.BaseRepository().BeginTrans();
  1834. try
  1835. {
  1836. db.Delete<NWFProcessEntity>(t => t.F_Id == processId);
  1837. db.Delete<NWFTaskLogEntity>(t => t.F_ProcessId == processId);
  1838. foreach (var task in taskList)
  1839. {
  1840. db.Delete(task);
  1841. string taskId = task.F_Id;
  1842. db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
  1843. db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
  1844. }
  1845. db.Commit();
  1846. }
  1847. catch (Exception ex)
  1848. {
  1849. db.Rollback();
  1850. if (ex is ExceptionEx)
  1851. {
  1852. throw;
  1853. }
  1854. else
  1855. {
  1856. throw ExceptionEx.ThrowServiceException(ex);
  1857. }
  1858. }
  1859. }
  1860. /// <summary>
  1861. /// 撤销审核
  1862. /// </summary>
  1863. /// <param name="taskList">需要撤回的任务节点</param>
  1864. /// <param name="taskUser">当前处理人</param>
  1865. /// <param name="taskEntity">当前任务</param>
  1866. /// <param name="taskLogEntity">日志信息</param>
  1867. /// <param name="taskUserNew">当前任务节点的处理人(串行多人审核)</param>
  1868. public void RevokeAudit(List<string> taskList, NWFTaskRelationEntity taskUser, NWFTaskEntity taskEntity, NWFTaskLogEntity taskLogEntity, NWFTaskRelationEntity taskUserNew = null)
  1869. {
  1870. var db = this.BaseRepository().BeginTrans();
  1871. try
  1872. {
  1873. if (taskList != null)
  1874. {
  1875. foreach (var taskId in taskList)
  1876. {
  1877. db.Delete<NWFTaskEntity>(t => t.F_Id == taskId);
  1878. db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
  1879. db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
  1880. }
  1881. }
  1882. if (taskEntity != null)
  1883. {
  1884. db.Update(taskEntity);
  1885. }
  1886. taskUser.F_Mark = 0;
  1887. taskUser.F_Result = 0;
  1888. db.Update(taskUser);
  1889. db.Insert(taskLogEntity);
  1890. if (taskUserNew != null)
  1891. {
  1892. taskUserNew.F_Mark = 1;
  1893. taskUserNew.F_Result = 0;
  1894. db.Update(taskUserNew);
  1895. }
  1896. // 更新下流程实例(处理重新发起状态)
  1897. NWFProcessEntity nWFProcessEntity = new NWFProcessEntity();
  1898. nWFProcessEntity.F_Id = taskLogEntity.F_ProcessId;
  1899. nWFProcessEntity.F_IsAgain = 0;
  1900. db.Update(nWFProcessEntity);
  1901. db.Commit();
  1902. }
  1903. catch (Exception ex)
  1904. {
  1905. db.Rollback();
  1906. if (ex is ExceptionEx)
  1907. {
  1908. throw;
  1909. }
  1910. else
  1911. {
  1912. throw ExceptionEx.ThrowServiceException(ex);
  1913. }
  1914. }
  1915. }
  1916. /// <summary>
  1917. /// 保存任务
  1918. /// </summary>
  1919. /// <param name="taskList">任务列表</param>
  1920. public void SaveTask(List<NWFTaskEntity> taskList)
  1921. {
  1922. var db = this.BaseRepository().BeginTrans();
  1923. try
  1924. {
  1925. foreach (var task in taskList)
  1926. {
  1927. task.F_ModifyDate = DateTime.Now;
  1928. db.Insert(task);
  1929. int num = 1;
  1930. if (task.nWFUserInfoList != null)
  1931. {
  1932. foreach (var taskUser in task.nWFUserInfoList)
  1933. {
  1934. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1935. nWFTaskRelationEntity.Create();
  1936. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1937. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1938. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1939. nWFTaskRelationEntity.F_Result = 0;
  1940. nWFTaskRelationEntity.F_Sort = num;
  1941. db.Insert(nWFTaskRelationEntity);
  1942. num++;
  1943. }
  1944. }
  1945. }
  1946. db.Commit();
  1947. }
  1948. catch (Exception)
  1949. {
  1950. db.Rollback();
  1951. throw;
  1952. }
  1953. }
  1954. #endregion
  1955. }
  1956. }