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.
 
 
 
 
 
 

841 lines
28 KiB

  1. using Learun.Application.WorkFlow;
  2. using Learun.Util;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Web.Mvc;
  6. using Learun.Application.Organization;
  7. using Learun.Application.Base.AuthorizeModule;
  8. namespace Learun.Application.Web.Areas.LR_NewWorkFlow.Controllers
  9. {
  10. /// <summary>
  11. /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架
  12. /// Copyright (c) 2013-2018 上海力软信息技术有限公司
  13. /// 创建人:力软-框架开发组
  14. /// 日 期:2018.12.09
  15. /// 描 述:流程进程
  16. /// </summary>
  17. public class NWFProcessController : MvcControllerBase
  18. {
  19. private NWFProcessIBLL nWFProcessIBLL = new NWFProcessBLL();
  20. private NWFSchemeIBLL nWFSchemeIBLL = new NWFSchemeBLL();
  21. private NWFTaskIBLL nWFTaskIBLL = new NWFTaskBLL();
  22. private UserIBLL userIbll = new UserBLL();
  23. private UserRelationIBLL userRelationIBLL = new UserRelationBLL();
  24. #region 视图功能
  25. /// <summary>
  26. /// 视图功能
  27. /// </summary>
  28. /// <returns></returns>
  29. [HttpGet]
  30. public ActionResult Index()
  31. {
  32. return View();
  33. }
  34. /// <summary>
  35. /// 发起流程
  36. /// </summary>
  37. /// <returns></returns>
  38. [HttpGet]
  39. public ActionResult ReleaseForm()
  40. {
  41. return View();
  42. }
  43. /// <summary>
  44. /// 流程容器
  45. /// </summary>
  46. /// <returns></returns>
  47. [HttpGet]
  48. public ActionResult NWFContainerForm()
  49. {
  50. return View();
  51. }
  52. /// <summary>
  53. /// 查看节点审核信息
  54. /// </summary>
  55. /// <returns></returns>
  56. [HttpGet]
  57. public ActionResult LookNodeForm()
  58. {
  59. return View();
  60. }
  61. /// <summary>
  62. /// 创建流程
  63. /// </summary>
  64. /// <returns></returns>
  65. [HttpGet]
  66. public ActionResult CreateForm()
  67. {
  68. return View();
  69. }
  70. /// <summary>
  71. /// 审核流程
  72. /// </summary>
  73. /// <returns></returns>
  74. [HttpGet]
  75. public ActionResult AuditFlowForm()
  76. {
  77. return View();
  78. }
  79. /// <summary>
  80. /// 加签审核流程
  81. /// </summary>
  82. /// <returns></returns>
  83. [HttpGet]
  84. public ActionResult SignAuditFlowForm()
  85. {
  86. return View();
  87. }
  88. /// <summary>
  89. /// 加签审核
  90. /// </summary>
  91. /// <returns></returns>
  92. [HttpGet]
  93. public ActionResult SignFlowForm()
  94. {
  95. return View();
  96. }
  97. /// <summary>
  98. /// 合同打印
  99. /// </summary>
  100. /// <returns></returns>
  101. [HttpGet]
  102. public ActionResult htPrint(string keyValue)
  103. {
  104. //获取校长的签名盖章
  105. var listTaskLog = nWFTaskIBLL.GetLogList(keyValue);
  106. var nwfTaskLogEntity = listTaskLog.FirstOrDefault(a => a.F_TaskUserName == "关亮");
  107. if (nwfTaskLogEntity != null)
  108. {
  109. ViewBag.StampImg = nwfTaskLogEntity.F_StampImg;
  110. ViewBag.SignImg = nwfTaskLogEntity.F_SignImg;
  111. }
  112. var data = nWFProcessIBLL.GetHTInfo(keyValue);
  113. var userInfo = new UserEntity();
  114. if (data != null)
  115. {
  116. userInfo = userIbll.GetEntityByUserId(data.LC_sqwtr);
  117. }
  118. var beginTime = data?.LC_htkssj.ToDate();
  119. var endTime = data?.LC_htjssj.ToDate();
  120. var operationTime = nwfTaskLogEntity?.F_CreateDate;
  121. ViewBag.UserName = userInfo?.F_RealName;
  122. ViewBag.IDCard = userInfo?.F_IdentityCardNo;
  123. ViewBag.BeginYear = beginTime?.Year;
  124. ViewBag.BeginMonth = beginTime?.Month;
  125. ViewBag.BeginDay = beginTime?.Day;
  126. ViewBag.EndYear = endTime?.Year;
  127. ViewBag.EndMonth = endTime?.Month;
  128. ViewBag.EndDay = endTime?.Day;
  129. ViewBag.OperationYear = operationTime?.Year;
  130. ViewBag.OperationMonth = operationTime?.Month;
  131. ViewBag.OperationDay = operationTime?.Day;
  132. return View();
  133. }
  134. /// <summary>
  135. /// 流程进度查看(父子流程)
  136. /// </summary>
  137. /// <returns></returns>
  138. [HttpGet]
  139. public ActionResult LookFlowForm()
  140. {
  141. return View();
  142. }
  143. /// <summary>
  144. /// 监控页面
  145. /// </summary>
  146. /// <returns></returns>
  147. [HttpGet]
  148. public ActionResult MonitorIndex()
  149. {
  150. return View();
  151. }
  152. /// <summary>
  153. /// 合同归档
  154. /// </summary>
  155. /// <returns></returns>
  156. [HttpGet]
  157. public ActionResult ContractFiling()
  158. {
  159. return View();
  160. }
  161. /// <summary>
  162. /// 人事归档
  163. /// </summary>
  164. /// <returns></returns>
  165. [HttpGet]
  166. public ActionResult PersonalFiling()
  167. {
  168. return View();
  169. }
  170. /// <summary>
  171. /// 监控详情页面
  172. /// </summary>
  173. /// <returns></returns>
  174. [HttpGet]
  175. public ActionResult MonitorDetailsIndex()
  176. {
  177. return View();
  178. }
  179. /// <summary>
  180. /// 查看各个节点表单
  181. /// </summary>
  182. /// <returns></returns>
  183. [HttpGet]
  184. public ActionResult MonitorForm()
  185. {
  186. return View();
  187. }
  188. /// <summary>
  189. /// 指定审核人
  190. /// </summary>
  191. /// <returns></returns>
  192. [HttpGet]
  193. public ActionResult AppointForm()
  194. {
  195. return View();
  196. }
  197. /// <summary>
  198. /// 添加审核节点
  199. /// </summary>
  200. /// <returns></returns>
  201. [HttpGet]
  202. public ActionResult AddTaskForm()
  203. {
  204. return View();
  205. }
  206. /// <summary>
  207. /// 批量审核页面
  208. /// </summary>
  209. /// <returns></returns>
  210. [HttpGet]
  211. public ActionResult BatchAuditIndex()
  212. {
  213. return View();
  214. }
  215. /// <summary>
  216. /// 选择下一节点审核人员
  217. /// </summary>
  218. /// <returns></returns>
  219. [HttpGet]
  220. public ActionResult SelectUserForm()
  221. {
  222. return View();
  223. }
  224. /// <summary>
  225. /// 签名弹层
  226. /// </summary>
  227. /// <returns></returns>
  228. public ActionResult SignForm()
  229. {
  230. return View();
  231. }
  232. #endregion
  233. #region 统计页面
  234. [HttpGet]
  235. public ActionResult MonitorIndexRenShi()
  236. {
  237. return View();
  238. }
  239. [HttpGet]
  240. public ActionResult MonitorIndexZiChan()
  241. {
  242. return View();
  243. }
  244. [HttpGet]
  245. public ActionResult MonitorIndexGongWen()
  246. {
  247. return View();
  248. }
  249. [HttpGet]
  250. public ActionResult MonitorIndexXingZhen()
  251. {
  252. return View();
  253. }
  254. #endregion
  255. #region 获取数据
  256. /// <summary>
  257. /// 获取我的流程信息列表
  258. /// </summary>
  259. /// <param name="pagination">分页参数</param>
  260. /// <param name="queryJson">查询条件</param>
  261. /// <returns></returns>
  262. [HttpGet]
  263. [AjaxOnly]
  264. public ActionResult GetPorcessList(string pagination, string queryJson)
  265. {
  266. Pagination paginationobj = pagination.ToObject<Pagination>();
  267. var list = nWFProcessIBLL.GetPageList(paginationobj, queryJson);
  268. var jsonData = new
  269. {
  270. rows = list,
  271. total = paginationobj.total,
  272. page = paginationobj.page,
  273. records = paginationobj.records,
  274. };
  275. return Success(jsonData);
  276. }
  277. /// <summary>
  278. /// 获取我的流程信息列表
  279. /// </summary>
  280. /// <param name="pagination">分页参数</param>
  281. /// <param name="queryJson">查询条件</param>
  282. /// <returns></returns>
  283. [HttpGet]
  284. [AjaxOnly]
  285. public ActionResult GetTaskPageList(string pagination, string queryJson, string categoryId)
  286. {
  287. Pagination paginationobj = pagination.ToObject<Pagination>();
  288. IEnumerable<NWFProcessEntity> list = new List<NWFProcessEntity>();
  289. UserInfo userInfo = LoginUserInfo.Get();
  290. switch (categoryId)
  291. {
  292. case "1":
  293. list = nWFProcessIBLL.GetMyPageList(userInfo.userId, paginationobj, queryJson);
  294. break;
  295. case "2":
  296. list = nWFProcessIBLL.GetMyTaskPageList(userInfo, paginationobj, queryJson);
  297. break;
  298. case "3":
  299. list = nWFProcessIBLL.GetMyFinishTaskPageList(userInfo, paginationobj, queryJson);
  300. break;
  301. }
  302. var jsonData = new
  303. {
  304. rows = list,
  305. total = paginationobj.total,
  306. page = paginationobj.page,
  307. records = paginationobj.records,
  308. };
  309. return Success(jsonData);
  310. }
  311. /// <summary>
  312. /// 获取批量审核任务清单
  313. /// </summary>
  314. /// <param name="pagination">分页参数</param>
  315. /// <param name="queryJson">查询条件</param>
  316. /// <returns></returns>
  317. [HttpGet]
  318. [AjaxOnly]
  319. public ActionResult GetBatchTaskPageList(string pagination, string queryJson)
  320. {
  321. Pagination paginationobj = pagination.ToObject<Pagination>();
  322. UserInfo userInfo = LoginUserInfo.Get();
  323. var data = nWFProcessIBLL.GetMyTaskPageList(userInfo, paginationobj, queryJson, true);
  324. var jsonData = new
  325. {
  326. rows = data,
  327. total = paginationobj.total,
  328. page = paginationobj.page,
  329. records = paginationobj.records,
  330. };
  331. return Success(jsonData);
  332. }
  333. /// <summary>
  334. /// 获取我的流程信息列表
  335. /// </summary>
  336. /// <param name="pagination">分页参数</param>
  337. /// <param name="queryJson">查询条件</param>
  338. /// <returns></returns>
  339. [HttpGet]
  340. [AjaxOnly]
  341. public ActionResult GetTask(string taskId)
  342. {
  343. var data = nWFTaskIBLL.GetEntity(taskId);
  344. return Success(data);
  345. }
  346. #endregion
  347. #region 保存更新删除
  348. /// <summary>
  349. /// 删除流程进程实体
  350. /// </summary>
  351. /// <param name="processId">流程进程主键</param>
  352. [HttpPost]
  353. [AjaxOnly]
  354. public ActionResult DeleteEntity(string processId)
  355. {
  356. nWFProcessIBLL.DeleteEntity(processId);
  357. return Success("删除成功");
  358. }
  359. #endregion
  360. #region 流程API
  361. /// <summary>
  362. /// 获取流程模板
  363. /// </summary>
  364. /// <param name="code">流程编码</param>
  365. /// <returns></returns>
  366. [HttpGet]
  367. [AjaxOnly]
  368. public ActionResult GetSchemeByCode(string code)
  369. {
  370. var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(code);
  371. if (schemeInfo != null)
  372. {
  373. var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId);
  374. return Success(data);
  375. }
  376. return Fail("找不到该流程模板");
  377. }
  378. /// <summary>
  379. /// 根据流程进程主键获取流程模板
  380. /// </summary>
  381. /// <param name="processId">流程进程主键</param>
  382. /// <returns></returns>
  383. [HttpGet]
  384. [AjaxOnly]
  385. public ActionResult GetSchemeByProcessId(string processId)
  386. {
  387. var processEntity = nWFProcessIBLL.GetEntity(processId);
  388. if (processEntity != null)
  389. {
  390. if (string.IsNullOrEmpty(processEntity.F_SchemeId))
  391. {
  392. var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(processEntity.F_SchemeCode);
  393. if (schemeInfo != null)
  394. {
  395. var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId);
  396. return Success(data);
  397. }
  398. }
  399. else
  400. {
  401. var data = nWFSchemeIBLL.GetSchemeEntity(processEntity.F_SchemeId);
  402. return Success(data);
  403. }
  404. }
  405. return Fail("找不到该流程模板");
  406. }
  407. /// <summary>
  408. /// 获取流程下一节点审核
  409. /// </summary>
  410. /// <param name="code">流程编码</param>
  411. /// <param name="processId">流程进程主键</param>
  412. /// <param name="taskId">任务主键</param>
  413. /// <param name="nodeId">节点ID</param>
  414. /// <param name="operationCode">操作编码</param>
  415. /// <returns></returns>
  416. [HttpGet]
  417. [AjaxOnly]
  418. public ActionResult GetNextAuditors(string code, string processId, string taskId, string nodeId, string operationCode)
  419. {
  420. UserInfo userInfo = LoginUserInfo.Get();
  421. var data = nWFProcessIBLL.GetNextAuditors(code, processId, taskId, nodeId, operationCode, userInfo);
  422. return Success(data);
  423. }
  424. /// <summary>
  425. /// 获取流程进程信息
  426. /// </summary>
  427. /// <param name="processId">进程主键</param>
  428. /// <param name="taskId">任务主键</param>
  429. /// <returns></returns>
  430. [HttpGet]
  431. [AjaxOnly]
  432. public ActionResult GetProcessDetails(string processId, string taskId)
  433. {
  434. UserInfo userInfo = LoginUserInfo.Get();
  435. var data = nWFProcessIBLL.GetProcessDetails(processId, taskId, userInfo);
  436. if (!string.IsNullOrEmpty(data.childProcessId))
  437. {
  438. processId = data.childProcessId;
  439. }
  440. var taskNode = nWFProcessIBLL.GetTaskUserList(processId);
  441. var jsonData = new
  442. {
  443. info = data,
  444. task = taskNode
  445. };
  446. return Success(jsonData);
  447. }
  448. /// <summary>
  449. /// 获取子流程详细信息
  450. /// </summary>
  451. /// <param name="processId">父流程进程主键</param>
  452. /// <param name="taskId">父流程子流程发起主键</param>
  453. /// <param name="schemeCode">子流程流程模板编码</param>
  454. /// <param name="nodeId">父流程发起子流程节点Id</param>
  455. /// <returns></returns>
  456. [HttpGet]
  457. [AjaxOnly]
  458. public ActionResult GetChildProcessDetails(string processId, string taskId, string schemeCode, string nodeId)
  459. {
  460. UserInfo userInfo = LoginUserInfo.Get();
  461. var data = nWFProcessIBLL.GetChildProcessDetails(processId, taskId, schemeCode, nodeId, userInfo);
  462. var taskNode = nWFProcessIBLL.GetTaskUserList(data.childProcessId);
  463. var jsonData = new
  464. {
  465. info = data,
  466. task = taskNode
  467. };
  468. return Success(jsonData);
  469. }
  470. /// <summary>
  471. /// 保存草稿
  472. /// </summary>
  473. /// <param name="processId">流程进程主键</param>
  474. /// <param name="schemeCode">流程模板编码</param>
  475. /// <returns></returns>
  476. [HttpPost]
  477. [AjaxOnly]
  478. public ActionResult SaveDraft(string processId, string schemeCode, string createUserId)
  479. {
  480. UserInfo userInfo = LoginUserInfo.Get();
  481. if (!string.IsNullOrEmpty(createUserId) && userInfo.userId != createUserId)
  482. {
  483. var userEntity = userIbll.GetEntityByUserId(createUserId);
  484. userInfo.userId = userEntity.F_UserId;
  485. userInfo.enCode = userEntity.F_EnCode;
  486. userInfo.realName = userEntity.F_RealName;
  487. userInfo.nickName = userEntity.F_NickName;
  488. userInfo.headIcon = userEntity.F_HeadIcon;
  489. userInfo.gender = userEntity.F_Gender;
  490. userInfo.mobile = userEntity.F_Mobile;
  491. userInfo.telephone = userEntity.F_Telephone;
  492. userInfo.email = userEntity.F_Email;
  493. userInfo.oICQ = userEntity.F_OICQ;
  494. userInfo.weChat = userEntity.F_WeChat;
  495. userInfo.companyId = userEntity.F_CompanyId;
  496. userInfo.departmentId = userEntity.F_DepartmentId;
  497. userInfo.openId = userEntity.F_OpenId;
  498. userInfo.isSystem = userEntity.F_SecurityLevel == 1 ? true : false;
  499. }
  500. nWFProcessIBLL.SaveDraft(processId, schemeCode, userInfo);
  501. return Success("流程草稿保存成功");
  502. }
  503. /// <summary>
  504. /// 删除草稿
  505. /// </summary>
  506. /// <param name="processId">流程进程主键</param>
  507. /// <returns></returns>
  508. [HttpPost]
  509. [AjaxOnly]
  510. public ActionResult DeleteDraft(string processId)
  511. {
  512. UserInfo userInfo = LoginUserInfo.Get();
  513. nWFProcessIBLL.DeleteDraft(processId, userInfo);
  514. return Success("流程草稿删除成功");
  515. }
  516. /// <summary>
  517. /// 创建流程
  518. /// </summary>
  519. /// <param name="schemeCode">流程模板编码</param>
  520. /// <param name="processId">流程进程主键</param>
  521. /// <param name="title">流程进程自定义标题</param>
  522. /// <param name="level">流程进程等级</param>
  523. /// <param name="auditors">下一节点审核人</param>
  524. /// <param name="createUserId">流程创建人</param>
  525. /// <returns></returns>
  526. [HttpPost]
  527. [AjaxOnly]
  528. public ActionResult CreateFlow(string schemeCode, string processId, string title, int level, string auditors, string createUserId)
  529. {
  530. UserInfo userInfo = LoginUserInfo.Get();
  531. if (!string.IsNullOrEmpty(createUserId) && userInfo.userId != createUserId)
  532. {
  533. if (title == null)
  534. {
  535. title = "";
  536. }
  537. title += "【" + userInfo.realName + "代发】";
  538. var userEntity = userIbll.GetEntityByUserId(createUserId);
  539. userInfo.userId = userEntity.F_UserId;
  540. userInfo.enCode = userEntity.F_EnCode;
  541. userInfo.realName = userEntity.F_RealName;
  542. userInfo.nickName = userEntity.F_NickName;
  543. userInfo.headIcon = userEntity.F_HeadIcon;
  544. userInfo.gender = userEntity.F_Gender;
  545. userInfo.mobile = userEntity.F_Mobile;
  546. userInfo.telephone = userEntity.F_Telephone;
  547. userInfo.email = userEntity.F_Email;
  548. userInfo.oICQ = userEntity.F_OICQ;
  549. userInfo.weChat = userEntity.F_WeChat;
  550. userInfo.companyId = userEntity.F_CompanyId;
  551. userInfo.departmentId = userEntity.F_DepartmentId;
  552. userInfo.openId = userEntity.F_OpenId;
  553. userInfo.isSystem = userEntity.F_SecurityLevel == 1 ? true : false;
  554. userInfo.roleIds = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 1);
  555. userInfo.postIds = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 2);
  556. }
  557. try
  558. {
  559. nWFProcessIBLL.CreateFlow(schemeCode, processId, title, level, auditors, userInfo);
  560. return Success("流程创建成功");
  561. }
  562. catch (System.Exception ex)
  563. {
  564. nWFProcessIBLL.SaveDraft(processId, schemeCode, userInfo);
  565. return Fail(ex.Message);
  566. }
  567. }
  568. /// <summary>
  569. /// 创建流程(子流程)
  570. /// </summary>
  571. /// <param name="schemeCode">流程模板编码</param>
  572. /// <param name="processId">流程进程主键</param>
  573. /// <param name="parentProcessId">父流程进程主键</param>
  574. /// <param name="parentTaskId">父流程任务主键</param>
  575. /// <returns></returns>
  576. [HttpPost]
  577. [AjaxOnly]
  578. public ActionResult CreateChildFlow(string schemeCode, string processId, string parentProcessId, string parentTaskId)
  579. {
  580. UserInfo userInfo = LoginUserInfo.Get();
  581. nWFProcessIBLL.CreateChildFlow(schemeCode, processId, parentProcessId, parentTaskId, userInfo);
  582. return Success("流程创建成功");
  583. }
  584. /// <summary>
  585. /// 重新创建流程
  586. /// </summary>
  587. /// <param name="processId">流程进程主键</param>
  588. /// <returns></returns>
  589. [HttpPost]
  590. [AjaxOnly]
  591. public ActionResult AgainCreateFlow(string processId)
  592. {
  593. try
  594. {
  595. UserInfo userInfo = LoginUserInfo.Get();
  596. nWFProcessIBLL.AgainCreateFlow(processId, userInfo);
  597. return Success("流程重新创建成功");
  598. }
  599. catch (System.Exception ex)
  600. {
  601. return Fail(ex.Message);
  602. }
  603. }
  604. /// <summary>
  605. /// 审批流程
  606. /// </summary>
  607. /// <param name="operationCode">流程审批操作码agree 同意 disagree 不同意 lrtimeout 超时</param>
  608. /// <param name="operationName">流程审批操名称</param>
  609. /// <param name="processId">流程进程主键</param>
  610. /// <param name="taskId">流程任务主键</param>
  611. /// <param name="des">审批意见</param>
  612. /// <param name="auditors">下一节点指定审核人</param>
  613. /// <returns></returns>
  614. [HttpPost]
  615. [AjaxOnly]
  616. public ActionResult AuditFlow(string operationCode, string operationName, string processId, string taskId, string des, string auditors, string stamp, string signUrl)
  617. {
  618. UserInfo userInfo = LoginUserInfo.Get();
  619. try
  620. {
  621. nWFProcessIBLL.AuditFlow(operationCode, operationName, processId, taskId, des, auditors, stamp, signUrl, userInfo);
  622. return Success("流程审批成功");
  623. }
  624. catch (System.Exception ex)
  625. {
  626. return Fail(ex.Message);
  627. }
  628. }
  629. /// <summary>
  630. /// 审批流程
  631. /// </summary>
  632. /// <param name="operationCode">流程审批操作码agree 同意 disagree 不同意</param>
  633. /// <param name="taskIds">任务串</param>
  634. /// <returns></returns>
  635. [HttpPost]
  636. [AjaxOnly]
  637. public ActionResult AuditFlows(string operationCode, string taskIds)
  638. {
  639. UserInfo userInfo = LoginUserInfo.Get();
  640. nWFProcessIBLL.AuditFlows(operationCode, taskIds, userInfo);
  641. return Success("流程批量审批成功");
  642. }
  643. /// <summary>
  644. /// 流程加签
  645. /// </summary>
  646. /// <param name="processId">流程进程主键</param>
  647. /// <param name="taskId">流程任务主键</param>
  648. /// <param name="userId">加签人员</param>
  649. /// <param name="des">加签说明</param>
  650. /// <returns></returns>
  651. [HttpPost]
  652. [AjaxOnly]
  653. public ActionResult SignFlow(string processId, string taskId, string userId, string des)
  654. {
  655. UserInfo userInfo = LoginUserInfo.Get();
  656. nWFProcessIBLL.SignFlow(processId, taskId, userId, des, userInfo);
  657. return Success("流程加签成功");
  658. }
  659. /// <summary>
  660. /// 流程加签审核
  661. /// </summary>
  662. /// <param name="operationCode">审核操作码</param>
  663. /// <param name="processId">流程进程主键</param>
  664. /// <param name="taskId">流程任务主键</param>
  665. /// <param name="des">加签说明</param>
  666. /// <returns></returns>
  667. [HttpPost]
  668. [AjaxOnly]
  669. public ActionResult SignAuditFlow(string operationCode, string processId, string taskId, string des)
  670. {
  671. UserInfo userInfo = LoginUserInfo.Get();
  672. nWFProcessIBLL.SignAuditFlow(operationCode, processId, taskId, des, userInfo);
  673. return Success("加签审批成功");
  674. }
  675. /// <summary>
  676. /// 确认阅读
  677. /// </summary>
  678. /// <param name="processId">流程进程主键</param>
  679. /// <param name="taskId">流程任务主键</param>
  680. /// <returns></returns>
  681. [HttpPost]
  682. [AjaxOnly]
  683. public ActionResult ReferFlow(string processId, string taskId)
  684. {
  685. UserInfo userInfo = LoginUserInfo.Get();
  686. nWFProcessIBLL.ReferFlow(processId, taskId, userInfo);
  687. return Success("保存成功");
  688. }
  689. /// <summary>
  690. /// 催办流程
  691. /// </summary>
  692. /// <param name="processId">流程进程主键</param>
  693. /// <param name="userInfo">当前操作人信息</param>
  694. /// <returns></returns>
  695. [HttpPost]
  696. [AjaxOnly]
  697. public ActionResult UrgeFlow(string processId)
  698. {
  699. UserInfo userInfo = LoginUserInfo.Get();
  700. nWFProcessIBLL.UrgeFlow(processId, userInfo);
  701. return Success("催办成功");
  702. }
  703. /// <summary>
  704. /// 撤销流程(只有在该流程未被处理的情况下)
  705. /// </summary>
  706. /// <param name="processId">流程进程主键</param>
  707. /// <returns></returns>
  708. [HttpPost]
  709. [AjaxOnly]
  710. public ActionResult RevokeFlow(string processId)
  711. {
  712. UserInfo userInfo = LoginUserInfo.Get();
  713. nWFProcessIBLL.RevokeFlow(processId, userInfo);
  714. return Success("撤销成功");
  715. }
  716. /// <summary>
  717. /// 获取流程当前任务需要处理的人
  718. /// </summary>
  719. /// <param name="processId">流程进程主键</param>
  720. /// <returns></returns>
  721. [HttpGet]
  722. [AjaxOnly]
  723. public ActionResult GetTaskUserList(string processId)
  724. {
  725. var data = nWFProcessIBLL.GetTaskUserList(processId);
  726. return Success(data);
  727. }
  728. /// <summary>
  729. /// 指派流程审核人
  730. /// </summary>
  731. /// <param name="strList">任务列表</param>
  732. [HttpPost]
  733. [ValidateAntiForgeryToken]
  734. [AjaxOnly]
  735. public ActionResult AppointUser(string strList)
  736. {
  737. IEnumerable<NWFTaskEntity> list = strList.ToObject<IEnumerable<NWFTaskEntity>>();
  738. UserInfo userInfo = LoginUserInfo.Get();
  739. nWFProcessIBLL.AppointUser(list, userInfo);
  740. return Success("指派成功");
  741. }
  742. /// <summary>
  743. /// 作废流程
  744. /// </summary>
  745. /// <param name="processId">流程进程主键</param>
  746. /// <returns></returns>
  747. [HttpPost]
  748. [AjaxOnly]
  749. public ActionResult DeleteFlow(string processId)
  750. {
  751. UserInfo userInfo = LoginUserInfo.Get();
  752. nWFProcessIBLL.DeleteFlow(processId, userInfo);
  753. return Success("作废成功");
  754. }
  755. /// <summary>
  756. /// 撤销审核
  757. /// </summary>
  758. /// <param name="processId">流程进程主键</param>
  759. /// <param name="taskId">任务主键</param>
  760. /// <returns></returns>
  761. [HttpPost]
  762. [AjaxOnly]
  763. public ActionResult RevokeAudit(string processId, string taskId)
  764. {
  765. UserInfo userInfo = LoginUserInfo.Get();
  766. var res = nWFProcessIBLL.RevokeAudit(processId, taskId, userInfo);
  767. if (res)
  768. {
  769. return Success("撤销成功");
  770. }
  771. else
  772. {
  773. return Fail("撤销失败,当前不允许撤销!");
  774. }
  775. }
  776. /// <summary>
  777. /// 添加任务
  778. /// </summary>
  779. /// <param name="processId"></param>
  780. /// <param name="bNodeId"></param>
  781. /// <param name="eNodeId"></param>
  782. /// <returns></returns>
  783. [HttpPost]
  784. [AjaxOnly]
  785. public ActionResult AddTask(string processId, string bNodeId, string eNodeId)
  786. {
  787. UserInfo userInfo = LoginUserInfo.Get();
  788. nWFProcessIBLL.AddTask(processId, bNodeId, eNodeId, userInfo);
  789. return Success("添加成功");
  790. }
  791. #endregion
  792. }
  793. }