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.
 
 
 
 
 
 

2130 lines
87 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. d.F_DepartmentId,d.F_FullName
  761. FROM
  762. LR_NWF_Task t
  763. LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
  764. LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
  765. LEFT JOIN(
  766. SELECT t.F_DepartmentId,t.F_FullName,u.F_RealName,u.F_UserId
  767. FROM LR_Base_Department t
  768. left join LR_BASE_USER u on t.F_DepartmentId = u.F_DepartmentId
  769. ) d ON d.F_UserId=t.F_CreateUserId
  770. WHERE
  771. (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
  772. ");
  773. var queryParam = queryJson.ToJObject();
  774. DateTime startTime = DateTime.Now, endTime = DateTime.Now;
  775. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  776. {
  777. startTime = queryParam["StartTime"].ToDate();
  778. endTime = queryParam["EndTime"].ToDate();
  779. strSql.Append(" AND ( r.F_Time >= @startTime AND r.F_Time <= @endTime ) ");
  780. }
  781. string keyword = "";
  782. if (!queryParam["keyword"].IsEmpty())
  783. {
  784. keyword = "%" + queryParam["keyword"].ToString() + "%";
  785. strSql.Append(" AND ( p.F_Title like @keyword OR p.F_SchemeName like @keyword OR p.F_CreateUserName like @keyword OR d.F_FullName like @keyword) ");
  786. }
  787. if (!string.IsNullOrEmpty(schemeCode))
  788. {
  789. strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
  790. }
  791. var data = this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode }, pagination);
  792. foreach (var item in data)
  793. {
  794. var nextNode = this.BaseRepository().FindEntity<NWFTaskLogEntity>(a =>
  795. a.F_ProcessId == item.F_Id && a.F_PrevNodeId == item.F_NodeId);
  796. if (null != nextNode)
  797. {
  798. item.NextNodeIsAudited = true;
  799. }
  800. if (!string.IsNullOrEmpty(item.F_CreateUserName))
  801. {
  802. item.F_DepartmentId = this.BaseRepository().FindEntity<UserEntity>(x => x.F_UserId == item.F_CreateUserId)?.F_DepartmentId;
  803. }
  804. }
  805. return data;
  806. }
  807. catch (Exception ex)
  808. {
  809. if (ex is ExceptionEx)
  810. {
  811. throw;
  812. }
  813. else
  814. {
  815. throw ExceptionEx.ThrowServiceException(ex);
  816. }
  817. }
  818. }
  819. /// <summary>
  820. /// 获取我的已办任务列表
  821. /// </summary>
  822. /// <param name="userId">用户主键</param>
  823. /// <param name="queryJson">查询条件</param>
  824. /// <param name="schemeCode">流程模板编码</param>
  825. /// <returns></returns>
  826. public IEnumerable<NWFProcessEntity> GetMyFinishTaskPageList(UserInfo userInfo, string queryJson, string schemeCode)
  827. {
  828. try
  829. {
  830. var strSql = new StringBuilder();
  831. strSql.Append(@"SELECT
  832. t.F_Id AS F_TaskId,
  833. t.F_Type AS F_TaskType,
  834. t.F_NodeName AS F_TaskName,
  835. r.F_Time as F_CreateDate,
  836. p.F_Id,
  837. p.F_SchemeId,
  838. p.F_SchemeCode,
  839. p.F_SchemeName,
  840. p.F_Title,
  841. p.F_Level,
  842. p.F_EnabledMark,
  843. p.F_IsAgain,
  844. p.F_IsFinished,
  845. p.F_IsChild,
  846. p.F_ParentTaskId,
  847. p.F_ParentProcessId,
  848. p.F_CreateUserId,
  849. p.F_CreateUserName,
  850. p.F_IsStart
  851. FROM
  852. LR_NWF_Task t
  853. LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
  854. LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
  855. WHERE
  856. (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
  857. ");
  858. var queryParam = queryJson.ToJObject();
  859. DateTime startTime = DateTime.Now, endTime = DateTime.Now;
  860. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  861. {
  862. startTime = queryParam["StartTime"].ToDate();
  863. endTime = queryParam["EndTime"].ToDate();
  864. strSql.Append(" AND ( r.F_Time >= @startTime AND r.F_Time <= @endTime ) ");
  865. }
  866. string keyword = "";
  867. if (!queryParam["keyword"].IsEmpty())
  868. {
  869. keyword = "%" + queryParam["keyword"].ToString() + "%";
  870. strSql.Append(" AND ( p.F_ProcessName like @keyword OR p.F_SchemeName like @keyword ) ");
  871. }
  872. if (!string.IsNullOrEmpty(schemeCode))
  873. {
  874. strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
  875. }
  876. return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode });
  877. }
  878. catch (Exception ex)
  879. {
  880. if (ex is ExceptionEx)
  881. {
  882. throw;
  883. }
  884. else
  885. {
  886. throw ExceptionEx.ThrowServiceException(ex);
  887. }
  888. }
  889. }
  890. /// <summary>
  891. /// 获取委托人关联的流程进程列表
  892. /// </summary>
  893. /// <param name="userId">当前用户主键</param>
  894. /// <returns></returns>
  895. public List<UserInfo> GetDelegateProcess(string userId)
  896. {
  897. try
  898. {
  899. List<UserInfo> delegateUserlist = new List<UserInfo>();
  900. DateTime datatime = DateTime.Now;
  901. IEnumerable<NWFDelegateRuleEntity> wfDelegateRuleList = this.BaseRepository().FindList<NWFDelegateRuleEntity>(t => t.F_ToUserId == userId && t.F_BeginDate <= datatime && t.F_EndDate >= datatime);
  902. foreach (var item in wfDelegateRuleList)
  903. {
  904. UserInfo userinfo = new UserInfo();
  905. userinfo.userId = item.F_CreateUserId;
  906. var strSql = new StringBuilder();
  907. strSql.Append(@"SELECT
  908. p.F_Id
  909. FROM
  910. LR_NWF_DelegateRelation d
  911. LEFT JOIN LR_NWF_SchemeInfo s ON s.F_Id = d.F_SchemeInfoId
  912. LEFT JOIN LR_NWF_Process p ON p.F_SchemeCode = s.F_Code
  913. WHERE
  914. p.F_Id IS NOT NULL
  915. AND p.F_IsFinished = 0
  916. AND d.F_DelegateRuleId = @DelegateRuleId ");
  917. DataTable dt = this.BaseRepository().FindTable(strSql.ToString(), new { DelegateRuleId = item.F_Id });
  918. userinfo.wfProcessId = "";
  919. foreach (DataRow dr in dt.Rows)
  920. {
  921. if (!string.IsNullOrEmpty(dr[0].ToString()))
  922. {
  923. if (!string.IsNullOrEmpty(userinfo.wfProcessId))
  924. {
  925. userinfo.wfProcessId += ",";
  926. }
  927. userinfo.wfProcessId += dr[0].ToString();
  928. }
  929. }
  930. if (!string.IsNullOrEmpty(userinfo.wfProcessId))
  931. {
  932. delegateUserlist.Add(userinfo);
  933. }
  934. }
  935. return delegateUserlist;
  936. }
  937. catch (Exception ex)
  938. {
  939. if (ex is ExceptionEx)
  940. {
  941. throw;
  942. }
  943. else
  944. {
  945. throw ExceptionEx.ThrowServiceException(ex);
  946. }
  947. }
  948. }
  949. #region 流程表单数据统计
  950. /// <summary>
  951. /// 用印申请流程表单统计
  952. /// </summary>
  953. /// <param name="pagination">分页参数</param>
  954. /// <param name="queryJson">查询条件</param>
  955. /// <returns></returns>
  956. public IEnumerable<LC_yyspdEntity> GetPageListOfyyspd(Pagination pagination, string queryJson)
  957. {
  958. try
  959. {
  960. var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database;
  961. var basedbname = BaseRepository().getDbConnection().Database;
  962. var strSql = new StringBuilder();
  963. 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 ");
  964. strSql.Append($" left join {misdbname}.dbo.LC_yyspd y on y.LC_ID=t.F_Id ");
  965. strSql.Append(" where 1=1 and t.F_EnabledMark !=2 and t.F_EnabledMark != 3 and t.F_IsChild = 0 ");
  966. strSql.Append(" and s.F_Code='LC_yyspd' ");
  967. var queryParam = queryJson.ToJObject();
  968. // 虚拟参数
  969. var dp = new DynamicParameters(new { });
  970. // 分类
  971. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  972. {
  973. if (queryParam["categoryId"].ToString() == "1")
  974. {
  975. strSql.Append(" and t.F_IsFinished = 0 ");
  976. }
  977. else
  978. {
  979. strSql.Append(" and t.F_IsFinished = 1 ");
  980. }
  981. }
  982. //用印名称
  983. if (!queryParam["LC_yzmc"].IsEmpty())
  984. {
  985. dp.Add("LC_yzmc", "%" + queryParam["LC_yzmc"].ToString() + "%", DbType.String);
  986. strSql.Append(" AND y.LC_yzmc like @LC_yzmc ");
  987. }
  988. //用印事项
  989. if (!queryParam["LC_yysx"].IsEmpty())
  990. {
  991. dp.Add("LC_yysx", "%" + queryParam["LC_yysx"].ToString() + "%", DbType.String);
  992. strSql.Append(" AND y.LC_yysx like @LC_yysx ");
  993. }
  994. //用印时间
  995. if (!queryParam["LC_yysj"].IsEmpty())
  996. {
  997. dp.Add("LC_yysj", "%" + queryParam["LC_yysj"].ToString() + "%", DbType.String);
  998. strSql.Append(" AND y.LC_yysj like @LC_yysj ");
  999. }
  1000. //关键字:用印名称、用印事项、用印时间
  1001. if (!queryParam["keyword"].IsEmpty())
  1002. {
  1003. dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  1004. strSql.Append(" AND (y.LC_yzmc like @keyword or y.LC_yysx like @keyword or y.LC_yysj like @keyword) ");
  1005. }
  1006. // 用印时间
  1007. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  1008. {
  1009. dp.Add("StartTime", queryParam["StartTime"].ToString(), DbType.String);
  1010. dp.Add("EndTime", queryParam["EndTime"].ToString(), DbType.String);
  1011. strSql.Append(" and (y.LC_yysj >= @StartTime and y.LC_yysj <= @EndTime)");
  1012. }
  1013. var result = this.BaseRepository().FindList<LC_yyspdEntity>(strSql.ToString(), dp);
  1014. return result;
  1015. }
  1016. catch (Exception ex)
  1017. {
  1018. if (ex is ExceptionEx)
  1019. {
  1020. throw;
  1021. }
  1022. else
  1023. {
  1024. throw ExceptionEx.ThrowServiceException(ex);
  1025. }
  1026. }
  1027. }
  1028. /// <summary>
  1029. /// 会议室申请流程表单统计
  1030. /// </summary>
  1031. /// <param name="pagination">分页参数</param>
  1032. /// <param name="queryJson">查询条件</param>
  1033. /// <returns></returns>
  1034. public IEnumerable<LC_meetingEntity> GetPageListOfmeeting(Pagination pagination, string queryJson)
  1035. {
  1036. try
  1037. {
  1038. var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database;
  1039. var basedbname = BaseRepository().getDbConnection().Database;
  1040. var strSql = new StringBuilder();
  1041. 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 ");
  1042. strSql.Append($" left join {misdbname}.dbo.LC_meeting y on y.LC_ID=t.F_Id ");
  1043. strSql.Append(" where 1=1 and t.F_EnabledMark !=2 and t.F_EnabledMark != 3 and t.F_IsChild = 0 ");
  1044. strSql.Append(" and s.F_Code='LC_meeting' ");
  1045. var queryParam = queryJson.ToJObject();
  1046. // 虚拟参数
  1047. var dp = new DynamicParameters(new { });
  1048. // 分类
  1049. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  1050. {
  1051. if (queryParam["categoryId"].ToString() == "1")
  1052. {
  1053. strSql.Append(" and t.F_IsFinished = 0 ");
  1054. }
  1055. else
  1056. {
  1057. strSql.Append(" and t.F_IsFinished = 1 ");
  1058. }
  1059. }
  1060. //申请人
  1061. if (!queryParam["F_CreateUserName"].IsEmpty())
  1062. {
  1063. dp.Add("F_CreateUserName", "%" + queryParam["F_CreateUserName"].ToString() + "%", DbType.String);
  1064. strSql.Append(" AND y.F_CreateUserName like @F_CreateUserName ");
  1065. }
  1066. //会议主题
  1067. if (!queryParam["LC_Title"].IsEmpty())
  1068. {
  1069. dp.Add("LC_Title", "%" + queryParam["LC_Title"].ToString() + "%", DbType.String);
  1070. strSql.Append(" AND y.LC_Title like @LC_Title ");
  1071. }
  1072. //会议内容
  1073. if (!queryParam["LC_Content"].IsEmpty())
  1074. {
  1075. dp.Add("LC_Content", "%" + queryParam["LC_Content"].ToString() + "%", DbType.String);
  1076. strSql.Append(" AND y.LC_Content like @LC_Content ");
  1077. }
  1078. //会议室
  1079. if (!queryParam["LC_Meetroom"].IsEmpty())
  1080. {
  1081. dp.Add("LC_Meetroom", "%" + queryParam["LC_Meetroom"].ToString() + "%", DbType.String);
  1082. strSql.Append(" AND y.LC_Meetroom like @LC_Meetroom ");
  1083. }
  1084. //会议时间
  1085. if (!queryParam["LC_MeetTime"].IsEmpty())
  1086. {
  1087. dp.Add("LC_MeetTime", "%" + queryParam["LC_MeetTime"].ToString() + "%", DbType.String);
  1088. strSql.Append(" AND y.LC_MeetTime like @LC_MeetTime ");
  1089. }
  1090. //关键字:申请人、会议主题、会议内容、会议室、会议时间
  1091. if (!queryParam["keyword"].IsEmpty())
  1092. {
  1093. dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  1094. 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) ");
  1095. }
  1096. // 会议时间
  1097. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  1098. {
  1099. dp.Add("StartTime", queryParam["StartTime"].ToString(), DbType.Date);
  1100. dp.Add("EndTime", queryParam["EndTime"].ToString(), DbType.Date);
  1101. strSql.Append(" and (y.LC_MeetTime >= @StartTime and y.LC_MeetTime <= @EndTime)");
  1102. }
  1103. var result = this.BaseRepository().FindList<LC_meetingEntity>(strSql.ToString(), dp);
  1104. return result;
  1105. }
  1106. catch (Exception ex)
  1107. {
  1108. if (ex is ExceptionEx)
  1109. {
  1110. throw;
  1111. }
  1112. else
  1113. {
  1114. throw ExceptionEx.ThrowServiceException(ex);
  1115. }
  1116. }
  1117. }
  1118. /// <summary>
  1119. /// 党委会党委专题会申请流程表单统计
  1120. /// </summary>
  1121. /// <param name="pagination">分页参数</param>
  1122. /// <param name="queryJson">查询条件</param>
  1123. /// <returns></returns>
  1124. public IEnumerable<LC_dwhsqEntity> GetPageListOfdwhsq(Pagination pagination, string queryJson)
  1125. {
  1126. try
  1127. {
  1128. var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database;
  1129. var basedbname = BaseRepository().getDbConnection().Database;
  1130. var strSql = new StringBuilder();
  1131. 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 ");
  1132. strSql.Append($" left join {misdbname}.dbo.LC_dwhsq y on y.LC_ID=t.F_Id ");
  1133. strSql.Append(" where 1=1 and t.F_EnabledMark !=2 and t.F_EnabledMark != 3 and t.F_IsChild = 0 ");
  1134. strSql.Append(" and s.F_Code='LC_dwhsq' ");
  1135. var queryParam = queryJson.ToJObject();
  1136. // 虚拟参数
  1137. var dp = new DynamicParameters(new { });
  1138. // 分类
  1139. if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
  1140. {
  1141. if (queryParam["categoryId"].ToString() == "1")
  1142. {
  1143. strSql.Append(" and t.F_IsFinished = 0 ");
  1144. }
  1145. else
  1146. {
  1147. strSql.Append(" and t.F_IsFinished = 1 ");
  1148. }
  1149. }
  1150. //申请人
  1151. if (!queryParam["F_CreateUserName"].IsEmpty())
  1152. {
  1153. dp.Add("F_CreateUserName", "%" + queryParam["F_CreateUserName"].ToString() + "%", DbType.String);
  1154. strSql.Append(" AND y.F_CreateUserName like @F_CreateUserName ");
  1155. }
  1156. //会议主题
  1157. if (!queryParam["LC_hyzt"].IsEmpty())
  1158. {
  1159. dp.Add("LC_hyzt", "%" + queryParam["LC_hyzt"].ToString() + "%", DbType.String);
  1160. strSql.Append(" AND y.LC_hyzt like @LC_hyzt ");
  1161. }
  1162. //会议内容
  1163. if (!queryParam["LC_hynr"].IsEmpty())
  1164. {
  1165. dp.Add("LC_hynr", "%" + queryParam["LC_hynr"].ToString() + "%", DbType.String);
  1166. strSql.Append(" AND y.LC_hynr like @LC_hynr ");
  1167. }
  1168. //会议时间
  1169. if (!queryParam["LC_hysj"].IsEmpty())
  1170. {
  1171. dp.Add("LC_hysj", "%" + queryParam["LC_hysj"].ToString() + "%", DbType.String);
  1172. strSql.Append(" AND y.LC_hysj like @LC_hysj ");
  1173. }
  1174. //关键字:申请人、会议主题、会议内容、会议时间
  1175. if (!queryParam["keyword"].IsEmpty())
  1176. {
  1177. dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  1178. 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 ) ");
  1179. }
  1180. // 会议时间
  1181. if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
  1182. {
  1183. dp.Add("StartTime", queryParam["StartTime"].ToString(), DbType.Date);
  1184. dp.Add("EndTime", queryParam["EndTime"].ToString(), DbType.Date);
  1185. strSql.Append(" and (y.LC_hysj >= @StartTime and y.LC_hysj <= @EndTime)");
  1186. }
  1187. var result = this.BaseRepository().FindList<LC_dwhsqEntity>(strSql.ToString(), dp);
  1188. return result;
  1189. }
  1190. catch (Exception ex)
  1191. {
  1192. if (ex is ExceptionEx)
  1193. {
  1194. throw;
  1195. }
  1196. else
  1197. {
  1198. throw ExceptionEx.ThrowServiceException(ex);
  1199. }
  1200. }
  1201. }
  1202. #endregion
  1203. #region 获取sql语句
  1204. /// <summary>
  1205. /// 获取我的流程信息列表SQL语句
  1206. /// </summary>
  1207. /// <returns></returns>
  1208. public string GetMySql()
  1209. {
  1210. try
  1211. {
  1212. var strSql = new StringBuilder();
  1213. strSql.Append(@"SELECT
  1214. p.F_CreateDate,
  1215. p.F_Id,
  1216. p.F_SchemeId,
  1217. p.F_SchemeCode,
  1218. p.F_SchemeName,
  1219. p.F_Title,
  1220. p.F_Level,
  1221. p.F_EnabledMark,
  1222. p.F_IsAgain,
  1223. p.F_IsFinished,
  1224. p.F_IsChild,
  1225. p.F_ParentTaskId,
  1226. p.F_ParentProcessId,
  1227. p.F_CreateUserId,
  1228. p.F_CreateUserName,
  1229. p.F_IsStart
  1230. FROM
  1231. LR_NWF_Process p
  1232. WHERE
  1233. p.F_CreateUserId = @userId AND p.F_IsChild = 0
  1234. ");
  1235. return strSql.ToString();
  1236. }
  1237. catch (Exception ex)
  1238. {
  1239. if (ex is ExceptionEx)
  1240. {
  1241. throw;
  1242. }
  1243. else
  1244. {
  1245. throw ExceptionEx.ThrowServiceException(ex);
  1246. }
  1247. }
  1248. }
  1249. /// <summary>
  1250. /// 获取我的代办任务列表SQL语句
  1251. /// </summary>
  1252. /// <param name="userInfo">用户信息</param>
  1253. /// <param name="isBatchAudit">true获取批量审核任务</param>
  1254. /// <returns></returns>
  1255. public string GetMyTaskSql(UserInfo userInfo, bool isBatchAudit = false)
  1256. {
  1257. try
  1258. {
  1259. var strSql = new StringBuilder();
  1260. strSql.Append(@"SELECT
  1261. t.F_Id AS F_TaskId,
  1262. t.F_Type AS F_TaskType,
  1263. t.F_NodeName AS F_TaskName,
  1264. t.F_IsUrge,
  1265. t.F_ModifyDate as F_CreateDate,
  1266. p.F_Id,
  1267. p.F_SchemeId,
  1268. p.F_SchemeCode,
  1269. p.F_SchemeName,
  1270. p.F_Title,
  1271. p.F_Level,
  1272. p.F_EnabledMark,
  1273. p.F_IsAgain,
  1274. p.F_IsFinished,
  1275. p.F_IsChild,
  1276. p.F_ParentTaskId,
  1277. p.F_ParentProcessId,
  1278. p.F_CreateUserId,
  1279. p.F_CreateUserName,
  1280. p.F_IsStart
  1281. FROM
  1282. (
  1283. SELECT
  1284. F_TaskId
  1285. FROM
  1286. LR_NWF_TaskRelation r1
  1287. LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
  1288. WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
  1289. ");
  1290. // 添加委托信息
  1291. List<UserInfo> delegateList = GetDelegateProcess(userInfo.userId);
  1292. foreach (var item in delegateList)
  1293. {
  1294. string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
  1295. string userI2 = "'" + item.userId + "'";
  1296. strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
  1297. }
  1298. strSql.Append(@") GROUP BY
  1299. F_TaskId
  1300. ) r
  1301. LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
  1302. LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
  1303. WHERE
  1304. t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2)");
  1305. if (isBatchAudit)
  1306. {
  1307. strSql.Append(" AND t.F_IsBatchAudit = 1 ");
  1308. }
  1309. return strSql.ToString();
  1310. }
  1311. catch (Exception ex)
  1312. {
  1313. if (ex is ExceptionEx)
  1314. {
  1315. throw;
  1316. }
  1317. else
  1318. {
  1319. throw ExceptionEx.ThrowServiceException(ex);
  1320. }
  1321. }
  1322. }
  1323. /// <summary>
  1324. /// 获取我的已办任务列表SQL语句
  1325. /// </summary>
  1326. /// <returns></returns>
  1327. public string GetMyFinishTaskSql()
  1328. {
  1329. try
  1330. {
  1331. var strSql = new StringBuilder();
  1332. strSql.Append(@"SELECT
  1333. t.F_Id AS F_TaskId,
  1334. t.F_Type AS F_TaskType,
  1335. t.F_NodeName AS F_TaskName,
  1336. r.F_Time as F_CreateDate,
  1337. p.F_Id,
  1338. p.F_SchemeId,
  1339. p.F_SchemeCode,
  1340. p.F_SchemeName,
  1341. p.F_Title,
  1342. p.F_Level,
  1343. p.F_EnabledMark,
  1344. p.F_IsAgain,
  1345. p.F_IsFinished,
  1346. p.F_IsChild,
  1347. p.F_ParentTaskId,
  1348. p.F_ParentProcessId,
  1349. p.F_CreateUserId,
  1350. p.F_CreateUserName,
  1351. p.F_IsStart
  1352. FROM
  1353. LR_NWF_Task t
  1354. LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
  1355. LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
  1356. WHERE
  1357. (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
  1358. ");
  1359. return strSql.ToString();
  1360. }
  1361. catch (Exception ex)
  1362. {
  1363. if (ex is ExceptionEx)
  1364. {
  1365. throw;
  1366. }
  1367. else
  1368. {
  1369. throw ExceptionEx.ThrowServiceException(ex);
  1370. }
  1371. }
  1372. }
  1373. #endregion
  1374. #endregion
  1375. #region 保存信息
  1376. /// <summary>
  1377. /// 保存流程进程数据
  1378. /// </summary>
  1379. /// <param name="nWFProcessEntity">流程进程</param>
  1380. /// <param name="taskList">流程任务列表</param>
  1381. /// <param name="taskMsgList">流程消息列表</param>
  1382. /// <param name="taskLogEntity">任务日志</param>
  1383. public void Save(NWFProcessEntity nWFProcessEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFTaskLogEntity taskLogEntity)
  1384. {
  1385. NWFProcessEntity nWFProcessEntityTmp = this.BaseRepository().FindEntity<NWFProcessEntity>(nWFProcessEntity.F_Id);
  1386. var db = this.BaseRepository().BeginTrans();
  1387. try
  1388. {
  1389. if (nWFProcessEntityTmp == null)
  1390. {
  1391. db.Insert(nWFProcessEntity);
  1392. }
  1393. else
  1394. {
  1395. db.Update(nWFProcessEntity);
  1396. }
  1397. foreach (var task in taskList)
  1398. {
  1399. task.F_ModifyDate = DateTime.Now;
  1400. db.Insert(task);
  1401. int num = 1;
  1402. if (task.nWFUserInfoList != null)
  1403. {
  1404. foreach (var taskUser in task.nWFUserInfoList)
  1405. {
  1406. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1407. nWFTaskRelationEntity.Create();
  1408. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1409. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1410. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1411. nWFTaskRelationEntity.F_Result = 0;
  1412. nWFTaskRelationEntity.F_Sort = num;
  1413. db.Insert(nWFTaskRelationEntity);
  1414. num++;
  1415. }
  1416. }
  1417. }
  1418. foreach (var taskMsg in taskMsgList)
  1419. {
  1420. db.Insert(taskMsg);
  1421. }
  1422. db.Insert(taskLogEntity);
  1423. db.Commit();
  1424. }
  1425. catch (Exception ex)
  1426. {
  1427. db.Rollback();
  1428. if (ex is ExceptionEx)
  1429. {
  1430. throw;
  1431. }
  1432. else
  1433. {
  1434. throw ExceptionEx.ThrowServiceException(ex);
  1435. }
  1436. }
  1437. }
  1438. /// <summary>
  1439. /// 保存流程进程信息
  1440. /// </summary>
  1441. /// <param name="taskLogEntity">任务日志</param>
  1442. /// <param name="taskRelationEntity">任务执行人状态更新</param>
  1443. /// <param name="taskEntityUpdate">任务状态更新</param>
  1444. /// <param name="processEntity">流程进程状态更新</param>
  1445. /// <param name="confluenceList">会签信息</param>
  1446. /// <param name="closeTaskList">会签需要关闭的任务</param>
  1447. /// <param name="taskList">新的任务列表</param>
  1448. /// <param name="taskMsgList">新的任务消息列表</param>
  1449. 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)
  1450. {
  1451. var db = this.BaseRepository().BeginTrans();
  1452. try
  1453. {
  1454. db.Insert(taskLogEntity);
  1455. if (taskRelationEntity != null)
  1456. db.Update(taskRelationEntity);
  1457. db.Update(taskEntityUpdate);
  1458. if (processEntity != null)
  1459. {
  1460. db.Update(processEntity);
  1461. }
  1462. if (pProcessEntity != null)
  1463. {
  1464. db.Update(pProcessEntity);
  1465. }
  1466. if (confluenceList != null)
  1467. {
  1468. foreach (var item in confluenceList)
  1469. {
  1470. if (item.isClear)
  1471. {
  1472. string processId = item.F_ProcessId;
  1473. string nodeId = item.F_NodeId;
  1474. db.Delete<NWFConfluenceEntity>(t => t.F_ProcessId == processId && t.F_NodeId == nodeId);
  1475. // 增加一条会签审核记录
  1476. NWFTaskLogEntity nWFTaskLogEntity = new NWFTaskLogEntity()
  1477. {
  1478. F_ProcessId = processId,
  1479. F_OperationCode = "confluence",
  1480. F_OperationName = "会签" + (item.confluenceRes == 1 ? "通过" : "不通过"),
  1481. F_NodeId = item.F_NodeId,
  1482. F_TaskType = 7
  1483. };
  1484. nWFTaskLogEntity.Create();
  1485. db.Insert(nWFTaskLogEntity);
  1486. }
  1487. else
  1488. {
  1489. db.Insert(item);
  1490. }
  1491. }
  1492. }
  1493. if (closeTaskList != null)
  1494. {
  1495. foreach (var item in closeTaskList)
  1496. {
  1497. db.Update(item);
  1498. }
  1499. }
  1500. foreach (var task in taskList)
  1501. {
  1502. task.F_ModifyDate = DateTime.Now;
  1503. db.Insert(task);
  1504. int num = 1;
  1505. if (task.nWFUserInfoList != null)
  1506. {
  1507. foreach (var taskUser in task.nWFUserInfoList)
  1508. {
  1509. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1510. nWFTaskRelationEntity.Create();
  1511. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1512. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1513. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1514. nWFTaskRelationEntity.F_Result = 0;
  1515. nWFTaskRelationEntity.F_Sort = num;
  1516. db.Insert(nWFTaskRelationEntity);
  1517. num++;
  1518. }
  1519. }
  1520. }
  1521. foreach (var taskMsg in taskMsgList)
  1522. {
  1523. db.Insert(taskMsg);
  1524. }
  1525. db.Commit();
  1526. }
  1527. catch (Exception ex)
  1528. {
  1529. db.Rollback();
  1530. if (ex is ExceptionEx)
  1531. {
  1532. throw;
  1533. }
  1534. else
  1535. {
  1536. throw ExceptionEx.ThrowServiceException(ex);
  1537. }
  1538. }
  1539. }
  1540. /// <summary>
  1541. /// 保存流程进程数据
  1542. /// </summary>
  1543. /// <param name="nWFProcessEntity">流程进程</param>
  1544. public void Save(NWFProcessEntity nWFProcessEntity)
  1545. {
  1546. try
  1547. {
  1548. this.BaseRepository().Insert(nWFProcessEntity);
  1549. }
  1550. catch (Exception ex)
  1551. {
  1552. if (ex is ExceptionEx)
  1553. {
  1554. throw;
  1555. }
  1556. else
  1557. {
  1558. throw ExceptionEx.ThrowServiceException(ex);
  1559. }
  1560. }
  1561. }
  1562. /// <summary>
  1563. /// 保存流程进程数据
  1564. /// </summary>
  1565. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1566. /// <param name="taskUserUpdateList">任务执行人需要更新状态数据</param>
  1567. /// <param name="nWFTaskMsgEntity">任务消息</param>
  1568. public void Save(NWFTaskLogEntity nWFTaskLogEntity, List<NWFTaskRelationEntity> taskUserUpdateList, NWFTaskMsgEntity nWFTaskMsgEntity)
  1569. {
  1570. var db = this.BaseRepository().BeginTrans();
  1571. try
  1572. {
  1573. db.Insert(nWFTaskLogEntity);
  1574. foreach (var item in taskUserUpdateList)
  1575. {
  1576. db.Update(item);
  1577. }
  1578. db.Insert(nWFTaskMsgEntity);
  1579. db.Commit();
  1580. }
  1581. catch (Exception ex)
  1582. {
  1583. db.Rollback();
  1584. if (ex is ExceptionEx)
  1585. {
  1586. throw;
  1587. }
  1588. else
  1589. {
  1590. throw ExceptionEx.ThrowServiceException(ex);
  1591. }
  1592. }
  1593. }
  1594. /// <summary>
  1595. /// 保存流程进程数据
  1596. /// </summary>
  1597. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1598. /// <param name="nWFTaskRelationEntity">任务执行人需要更新状态数据</param>
  1599. /// <param name="taskEntity">任务</param>
  1600. public void Save(NWFTaskLogEntity nWFTaskLogEntity, NWFTaskRelationEntity nWFTaskRelationEntity, NWFTaskEntity taskEntity)
  1601. {
  1602. var db = this.BaseRepository().BeginTrans();
  1603. try
  1604. {
  1605. db.Insert(nWFTaskLogEntity);
  1606. db.Update(nWFTaskRelationEntity);
  1607. if (taskEntity != null)
  1608. {
  1609. taskEntity.F_ModifyDate = DateTime.Now;
  1610. db.Update(taskEntity);
  1611. }
  1612. db.Commit();
  1613. }
  1614. catch (Exception ex)
  1615. {
  1616. db.Rollback();
  1617. if (ex is ExceptionEx)
  1618. {
  1619. throw;
  1620. }
  1621. else
  1622. {
  1623. throw ExceptionEx.ThrowServiceException(ex);
  1624. }
  1625. }
  1626. }
  1627. /// <summary>
  1628. /// 保存流程进程数据
  1629. /// </summary>
  1630. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1631. /// <param name="taskList">需要更新的任务列表</param>
  1632. /// <param name="taskMsgList">任务消息列表</param>
  1633. public void Save(NWFTaskLogEntity nWFTaskLogEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList)
  1634. {
  1635. var db = this.BaseRepository().BeginTrans();
  1636. try
  1637. {
  1638. db.Insert(nWFTaskLogEntity);
  1639. foreach (var item in taskList)
  1640. {
  1641. item.F_ModifyDate = DateTime.Now;
  1642. db.Update(item);
  1643. }
  1644. foreach (var item in taskMsgList)
  1645. {
  1646. db.Insert(item);
  1647. }
  1648. db.Commit();
  1649. }
  1650. catch (Exception ex)
  1651. {
  1652. db.Rollback();
  1653. if (ex is ExceptionEx)
  1654. {
  1655. throw;
  1656. }
  1657. else
  1658. {
  1659. throw ExceptionEx.ThrowServiceException(ex);
  1660. }
  1661. }
  1662. }
  1663. /// <summary>
  1664. /// 保存流程进程数据
  1665. /// </summary>
  1666. /// <param name="nWFTaskLogEntity">任务日志数据</param>
  1667. /// <param name="taskList">需要更新的任务列表</param>
  1668. /// <param name="taskMsgList">任务消息列表</param>
  1669. public void Save(NWFTaskLogEntity nWFTaskLogEntity, NWFTaskEntity task, List<NWFTaskMsgEntity> taskMsgList)
  1670. {
  1671. var db = this.BaseRepository().BeginTrans();
  1672. try
  1673. {
  1674. db.Insert(nWFTaskLogEntity);
  1675. task.F_ModifyDate = DateTime.Now;
  1676. db.Update(task);
  1677. foreach (var item in taskMsgList)
  1678. {
  1679. db.Insert(item);
  1680. }
  1681. db.Commit();
  1682. }
  1683. catch (Exception ex)
  1684. {
  1685. db.Rollback();
  1686. if (ex is ExceptionEx)
  1687. {
  1688. throw;
  1689. }
  1690. else
  1691. {
  1692. throw ExceptionEx.ThrowServiceException(ex);
  1693. }
  1694. }
  1695. }
  1696. /// <summary>
  1697. /// 保存流程进程信息
  1698. /// </summary>
  1699. /// <param name="taskLogEntity">任务日志</param>
  1700. /// <param name="taskRelationEntity">任务执行人状态更新</param>
  1701. /// <param name="taskEntityUpdate">任务状态更新</param>
  1702. /// <param name="processEntity">流程进程状态更新</param>
  1703. /// <param name="taskList">新的任务列表</param>
  1704. /// <param name="taskMsgList">新的任务消息列表</param>
  1705. 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)
  1706. {
  1707. NWFProcessEntity nWFProcessEntityTmp = this.BaseRepository().FindEntity<NWFProcessEntity>(nWFProcessEntity.F_Id);
  1708. IEnumerable<NWFTaskEntity> uTaskList = this.BaseRepository().FindList<NWFTaskEntity>(t => t.F_ProcessId == nWFProcessEntity.F_Id && t.F_NodeId == taskLogEntity.F_NodeId && t.F_IsFinished == 0);
  1709. var db = this.BaseRepository().BeginTrans();
  1710. try
  1711. {
  1712. if (nWFProcessEntityTmp == null)
  1713. {
  1714. db.Insert(nWFProcessEntity);
  1715. }
  1716. else
  1717. {
  1718. db.Update(nWFProcessEntity);
  1719. }
  1720. foreach (var task in taskList)
  1721. {
  1722. task.F_ModifyDate = DateTime.Now;
  1723. db.Insert(task);
  1724. int num = 1;
  1725. if (task.nWFUserInfoList != null)
  1726. {
  1727. foreach (var taskUser in task.nWFUserInfoList)
  1728. {
  1729. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1730. nWFTaskRelationEntity.Create();
  1731. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1732. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1733. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1734. nWFTaskRelationEntity.F_Result = 0;
  1735. nWFTaskRelationEntity.F_Sort = num;
  1736. db.Insert(nWFTaskRelationEntity);
  1737. num++;
  1738. }
  1739. }
  1740. }
  1741. foreach (var taskMsg in taskMsgList)
  1742. {
  1743. db.Insert(taskMsg);
  1744. }
  1745. db.Insert(taskLogEntity);
  1746. foreach (var item in uTaskList)
  1747. {
  1748. item.F_IsFinished = 1;
  1749. db.Update(item);
  1750. }
  1751. // 父流程
  1752. db.Insert(pTaskLogEntity);
  1753. db.Update(pTaskRelationEntity);
  1754. db.Update(pTaskEntityUpdate);
  1755. if (pProcessEntity != null)
  1756. {
  1757. db.Update(pProcessEntity);
  1758. }
  1759. foreach (var task in pTaskList)
  1760. {
  1761. task.F_ModifyDate = DateTime.Now;
  1762. db.Insert(task);
  1763. int num = 1;
  1764. if (task.nWFUserInfoList != null)
  1765. {
  1766. foreach (var taskUser in task.nWFUserInfoList)
  1767. {
  1768. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  1769. nWFTaskRelationEntity.Create();
  1770. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  1771. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  1772. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  1773. nWFTaskRelationEntity.F_Result = 0;
  1774. nWFTaskRelationEntity.F_Sort = num;
  1775. db.Insert(nWFTaskRelationEntity);
  1776. num++;
  1777. }
  1778. }
  1779. }
  1780. foreach (var taskMsg in pTaskMsgList)
  1781. {
  1782. db.Insert(taskMsg);
  1783. }
  1784. db.Commit();
  1785. }
  1786. catch (Exception ex)
  1787. {
  1788. db.Rollback();
  1789. if (ex is ExceptionEx)
  1790. {
  1791. throw;
  1792. }
  1793. else
  1794. {
  1795. throw ExceptionEx.ThrowServiceException(ex);
  1796. }
  1797. }
  1798. }
  1799. /// <summary>
  1800. /// (流程撤销)
  1801. /// </summary>
  1802. /// <param name="processId">流程进程实例</param>
  1803. /// <param name="taskList">流程任务列表</param>
  1804. /// <param name="EnabledMark">2草稿3作废</param>
  1805. public void Save(string processId, IEnumerable<NWFTaskEntity> taskList, int EnabledMark, NWFTaskLogEntity nWFTaskLogEntity = null)
  1806. {
  1807. var db = this.BaseRepository().BeginTrans();
  1808. try
  1809. {
  1810. NWFProcessEntity nWFProcessEntity = new NWFProcessEntity();
  1811. nWFProcessEntity.F_Id = processId;
  1812. nWFProcessEntity.F_EnabledMark = EnabledMark;
  1813. db.Update(nWFProcessEntity);
  1814. if (EnabledMark == 2)
  1815. {
  1816. db.Delete<NWFTaskLogEntity>(t => t.F_ProcessId == processId);
  1817. }
  1818. foreach (var task in taskList)
  1819. {
  1820. db.Delete(task);
  1821. string taskId = task.F_Id;
  1822. db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
  1823. db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
  1824. }
  1825. if (nWFTaskLogEntity != null)
  1826. {
  1827. db.Insert(nWFTaskLogEntity);
  1828. }
  1829. db.Commit();
  1830. }
  1831. catch (Exception ex)
  1832. {
  1833. db.Rollback();
  1834. if (ex is ExceptionEx)
  1835. {
  1836. throw;
  1837. }
  1838. else
  1839. {
  1840. throw ExceptionEx.ThrowServiceException(ex);
  1841. }
  1842. }
  1843. }
  1844. /// <summary>
  1845. /// 删除流程进程实体
  1846. /// </summary>
  1847. /// <param name="processId">流程进程主键</param>
  1848. public void DeleteEntity(string processId)
  1849. {
  1850. try
  1851. {
  1852. this.BaseRepository().Delete<NWFProcessEntity>(t => t.F_Id == processId);
  1853. }
  1854. catch (Exception ex)
  1855. {
  1856. if (ex is ExceptionEx)
  1857. {
  1858. throw;
  1859. }
  1860. else
  1861. {
  1862. throw ExceptionEx.ThrowServiceException(ex);
  1863. }
  1864. }
  1865. }
  1866. /// <summary>
  1867. ///
  1868. /// </summary>
  1869. /// <param name="processId"></param>
  1870. /// <param name="EnabledMark"></param>
  1871. public void UpdateEnabledMark(string processId, string EnabledMark)
  1872. {
  1873. try
  1874. {
  1875. var entity = this.BaseRepository().FindEntity<NWFProcessEntity>(t => t.F_Id == processId);
  1876. entity.F_EnabledMark = Convert.ToInt32(EnabledMark);
  1877. this.BaseRepository().Update(entity);
  1878. }
  1879. catch (Exception ex)
  1880. {
  1881. if (ex is ExceptionEx)
  1882. {
  1883. throw;
  1884. }
  1885. else
  1886. {
  1887. throw ExceptionEx.ThrowServiceException(ex);
  1888. }
  1889. }
  1890. }
  1891. /// <summary>
  1892. /// 删除流程进程所有信息(流程撤销)
  1893. /// </summary>
  1894. /// <param name="processId">流程进程实例</param>
  1895. /// <param name="taskList">流程任务列表</param>
  1896. public void Delete(string processId, IEnumerable<NWFTaskEntity> taskList)
  1897. {
  1898. var db = this.BaseRepository().BeginTrans();
  1899. try
  1900. {
  1901. db.Delete<NWFProcessEntity>(t => t.F_Id == processId);
  1902. db.Delete<NWFTaskLogEntity>(t => t.F_ProcessId == processId);
  1903. foreach (var task in taskList)
  1904. {
  1905. db.Delete(task);
  1906. string taskId = task.F_Id;
  1907. db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
  1908. db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
  1909. }
  1910. db.Commit();
  1911. }
  1912. catch (Exception ex)
  1913. {
  1914. db.Rollback();
  1915. if (ex is ExceptionEx)
  1916. {
  1917. throw;
  1918. }
  1919. else
  1920. {
  1921. throw ExceptionEx.ThrowServiceException(ex);
  1922. }
  1923. }
  1924. }
  1925. /// <summary>
  1926. /// 撤销审核
  1927. /// </summary>
  1928. /// <param name="taskList">需要撤回的任务节点</param>
  1929. /// <param name="taskUser">当前处理人</param>
  1930. /// <param name="taskEntity">当前任务</param>
  1931. /// <param name="taskLogEntity">日志信息</param>
  1932. /// <param name="taskUserNew">当前任务节点的处理人(串行多人审核)</param>
  1933. public void RevokeAudit(List<string> taskList, NWFTaskRelationEntity taskUser, NWFTaskEntity taskEntity, NWFTaskLogEntity taskLogEntity, NWFTaskRelationEntity taskUserNew = null)
  1934. {
  1935. var db = this.BaseRepository().BeginTrans();
  1936. try
  1937. {
  1938. if (taskList != null)
  1939. {
  1940. foreach (var taskId in taskList)
  1941. {
  1942. db.Delete<NWFTaskEntity>(t => t.F_Id == taskId);
  1943. db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
  1944. db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
  1945. }
  1946. }
  1947. if (taskEntity != null)
  1948. {
  1949. db.Update(taskEntity);
  1950. }
  1951. taskUser.F_Mark = 0;
  1952. taskUser.F_Result = 0;
  1953. db.Update(taskUser);
  1954. db.Insert(taskLogEntity);
  1955. if (taskUserNew != null)
  1956. {
  1957. taskUserNew.F_Mark = 1;
  1958. taskUserNew.F_Result = 0;
  1959. db.Update(taskUserNew);
  1960. }
  1961. // 更新下流程实例(处理重新发起状态)
  1962. NWFProcessEntity nWFProcessEntity = new NWFProcessEntity();
  1963. nWFProcessEntity.F_Id = taskLogEntity.F_ProcessId;
  1964. nWFProcessEntity.F_IsAgain = 0;
  1965. db.Update(nWFProcessEntity);
  1966. db.Commit();
  1967. }
  1968. catch (Exception ex)
  1969. {
  1970. db.Rollback();
  1971. if (ex is ExceptionEx)
  1972. {
  1973. throw;
  1974. }
  1975. else
  1976. {
  1977. throw ExceptionEx.ThrowServiceException(ex);
  1978. }
  1979. }
  1980. }
  1981. /// <summary>
  1982. /// 保存任务
  1983. /// </summary>
  1984. /// <param name="taskList">任务列表</param>
  1985. public void SaveTask(List<NWFTaskEntity> taskList)
  1986. {
  1987. var db = this.BaseRepository().BeginTrans();
  1988. try
  1989. {
  1990. foreach (var task in taskList)
  1991. {
  1992. task.F_ModifyDate = DateTime.Now;
  1993. db.Insert(task);
  1994. int num = 1;
  1995. if (task.nWFUserInfoList != null)
  1996. {
  1997. foreach (var taskUser in task.nWFUserInfoList)
  1998. {
  1999. NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
  2000. nWFTaskRelationEntity.Create();
  2001. nWFTaskRelationEntity.F_TaskId = task.F_Id;
  2002. nWFTaskRelationEntity.F_UserId = taskUser.Id;
  2003. nWFTaskRelationEntity.F_Mark = taskUser.Mark;
  2004. nWFTaskRelationEntity.F_Result = 0;
  2005. nWFTaskRelationEntity.F_Sort = num;
  2006. db.Insert(nWFTaskRelationEntity);
  2007. num++;
  2008. }
  2009. }
  2010. }
  2011. db.Commit();
  2012. }
  2013. catch (Exception)
  2014. {
  2015. db.Rollback();
  2016. throw;
  2017. }
  2018. }
  2019. #endregion
  2020. }
  2021. }