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.
 
 
 
 
 
 

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