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.
 
 
 
 
 
 

864 lines
29 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.F_CreateUserName);
  117. }
  118. var beginTime = data?.LC_htkssj.ToDate();
  119. var endTime = data?.LC_htjssj.ToDate();
  120. var operationTime = data?.OperationTime.ToDate();
  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. public ActionResult GetFirstTaskByProcessId(string processId)
  278. {
  279. var taskId= nWFProcessIBLL.GetFirstTaskByProcessId(processId);
  280. return Success(new {taskId});
  281. }
  282. /// <summary>
  283. /// 获取我的流程信息列表
  284. /// </summary>
  285. /// <param name="pagination">分页参数</param>
  286. /// <param name="queryJson">查询条件</param>
  287. /// <returns></returns>
  288. [HttpGet]
  289. [AjaxOnly]
  290. public ActionResult GetTaskPageList(string pagination, string queryJson, string categoryId)
  291. {
  292. Pagination paginationobj = pagination.ToObject<Pagination>();
  293. IEnumerable<NWFProcessEntity> list = new List<NWFProcessEntity>();
  294. UserInfo userInfo = LoginUserInfo.Get();
  295. switch (categoryId)
  296. {
  297. case "1":
  298. list = nWFProcessIBLL.GetMyPageList(userInfo.userId, paginationobj, queryJson);
  299. break;
  300. case "2":
  301. list = nWFProcessIBLL.GetMyTaskPageList(userInfo, paginationobj, queryJson);
  302. break;
  303. case "3":
  304. list = nWFProcessIBLL.GetMyFinishTaskPageList(userInfo, paginationobj, queryJson);
  305. break;
  306. }
  307. var jsonData = new
  308. {
  309. rows = list,
  310. total = paginationobj.total,
  311. page = paginationobj.page,
  312. records = paginationobj.records,
  313. };
  314. return Success(jsonData);
  315. }
  316. /// <summary>
  317. /// 获取批量审核任务清单
  318. /// </summary>
  319. /// <param name="pagination">分页参数</param>
  320. /// <param name="queryJson">查询条件</param>
  321. /// <returns></returns>
  322. [HttpGet]
  323. [AjaxOnly]
  324. public ActionResult GetBatchTaskPageList(string pagination, string queryJson)
  325. {
  326. Pagination paginationobj = pagination.ToObject<Pagination>();
  327. UserInfo userInfo = LoginUserInfo.Get();
  328. var data = nWFProcessIBLL.GetMyTaskPageList(userInfo, paginationobj, queryJson, true);
  329. var jsonData = new
  330. {
  331. rows = data,
  332. total = paginationobj.total,
  333. page = paginationobj.page,
  334. records = paginationobj.records,
  335. };
  336. return Success(jsonData);
  337. }
  338. /// <summary>
  339. /// 获取我的流程信息列表
  340. /// </summary>
  341. /// <param name="pagination">分页参数</param>
  342. /// <param name="queryJson">查询条件</param>
  343. /// <returns></returns>
  344. [HttpGet]
  345. [AjaxOnly]
  346. public ActionResult GetTask(string taskId)
  347. {
  348. var data = nWFTaskIBLL.GetEntity(taskId);
  349. return Success(data);
  350. }
  351. #endregion
  352. #region 保存更新删除
  353. /// <summary>
  354. /// 删除流程进程实体
  355. /// </summary>
  356. /// <param name="processId">流程进程主键</param>
  357. [HttpPost]
  358. [AjaxOnly]
  359. public ActionResult DeleteEntity(string processId)
  360. {
  361. nWFProcessIBLL.DeleteEntity(processId);
  362. return Success("删除成功");
  363. }
  364. #endregion
  365. #region 流程API
  366. /// <summary>
  367. /// 获取流程模板
  368. /// </summary>
  369. /// <param name="code">流程编码</param>
  370. /// <returns></returns>
  371. [HttpGet]
  372. [AjaxOnly]
  373. public ActionResult GetSchemeByCode(string code)
  374. {
  375. var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(code);
  376. if (schemeInfo != null)
  377. {
  378. var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId);
  379. return Success(data);
  380. }
  381. return Fail("找不到该流程模板");
  382. }
  383. /// <summary>
  384. /// 根据流程进程主键获取流程模板
  385. /// </summary>
  386. /// <param name="processId">流程进程主键</param>
  387. /// <returns></returns>
  388. [HttpGet]
  389. [AjaxOnly]
  390. public ActionResult GetSchemeByProcessId(string processId)
  391. {
  392. var processEntity = nWFProcessIBLL.GetEntity(processId);
  393. if (processEntity != null)
  394. {
  395. if (string.IsNullOrEmpty(processEntity.F_SchemeId))
  396. {
  397. var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(processEntity.F_SchemeCode);
  398. if (schemeInfo != null)
  399. {
  400. var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId);
  401. return Success(data);
  402. }
  403. }
  404. else
  405. {
  406. var data = nWFSchemeIBLL.GetSchemeEntity(processEntity.F_SchemeId);
  407. return Success(data);
  408. }
  409. }
  410. return Fail("找不到该流程模板");
  411. }
  412. /// <summary>
  413. /// 获取流程下一节点审核
  414. /// </summary>
  415. /// <param name="code">流程编码</param>
  416. /// <param name="processId">流程进程主键</param>
  417. /// <param name="taskId">任务主键</param>
  418. /// <param name="nodeId">节点ID</param>
  419. /// <param name="operationCode">操作编码</param>
  420. /// <returns></returns>
  421. [HttpGet]
  422. [AjaxOnly]
  423. public ActionResult GetNextAuditors(string code, string processId, string taskId, string nodeId, string operationCode)
  424. {
  425. UserInfo userInfo = LoginUserInfo.Get();
  426. var data = nWFProcessIBLL.GetNextAuditors(code, processId, taskId, nodeId, operationCode, userInfo);
  427. return Success(data);
  428. }
  429. /// <summary>
  430. /// 获取流程进程信息
  431. /// </summary>
  432. /// <param name="processId">进程主键</param>
  433. /// <param name="taskId">任务主键</param>
  434. /// <returns></returns>
  435. [HttpGet]
  436. [AjaxOnly]
  437. public ActionResult GetProcessDetails(string processId, string taskId)
  438. {
  439. UserInfo userInfo = LoginUserInfo.Get();
  440. var data = nWFProcessIBLL.GetProcessDetails(processId, taskId, userInfo);
  441. if (!string.IsNullOrEmpty(data.childProcessId))
  442. {
  443. processId = data.childProcessId;
  444. }
  445. var taskNode = nWFProcessIBLL.GetTaskUserList(processId);
  446. var jsonData = new
  447. {
  448. info = data,
  449. task = taskNode
  450. };
  451. return Success(jsonData);
  452. }
  453. /// <summary>
  454. /// 获取子流程详细信息
  455. /// </summary>
  456. /// <param name="processId">父流程进程主键</param>
  457. /// <param name="taskId">父流程子流程发起主键</param>
  458. /// <param name="schemeCode">子流程流程模板编码</param>
  459. /// <param name="nodeId">父流程发起子流程节点Id</param>
  460. /// <returns></returns>
  461. [HttpGet]
  462. [AjaxOnly]
  463. public ActionResult GetChildProcessDetails(string processId, string taskId, string schemeCode, string nodeId)
  464. {
  465. UserInfo userInfo = LoginUserInfo.Get();
  466. var data = nWFProcessIBLL.GetChildProcessDetails(processId, taskId, schemeCode, nodeId, userInfo);
  467. var taskNode = nWFProcessIBLL.GetTaskUserList(data.childProcessId);
  468. var jsonData = new
  469. {
  470. info = data,
  471. task = taskNode
  472. };
  473. return Success(jsonData);
  474. }
  475. /// <summary>
  476. /// 保存草稿
  477. /// </summary>
  478. /// <param name="processId">流程进程主键</param>
  479. /// <param name="schemeCode">流程模板编码</param>
  480. /// <returns></returns>
  481. [HttpPost]
  482. [AjaxOnly]
  483. public ActionResult SaveDraft(string processId, string schemeCode, string createUserId)
  484. {
  485. UserInfo userInfo = LoginUserInfo.Get();
  486. if (!string.IsNullOrEmpty(createUserId) && userInfo.userId != createUserId)
  487. {
  488. var userEntity = userIbll.GetEntityByUserId(createUserId);
  489. userInfo.userId = userEntity.F_UserId;
  490. userInfo.enCode = userEntity.F_EnCode;
  491. userInfo.realName = userEntity.F_RealName;
  492. userInfo.nickName = userEntity.F_NickName;
  493. userInfo.headIcon = userEntity.F_HeadIcon;
  494. userInfo.gender = userEntity.F_Gender;
  495. userInfo.mobile = userEntity.F_Mobile;
  496. userInfo.telephone = userEntity.F_Telephone;
  497. userInfo.email = userEntity.F_Email;
  498. userInfo.oICQ = userEntity.F_OICQ;
  499. userInfo.weChat = userEntity.F_WeChat;
  500. userInfo.companyId = userEntity.F_CompanyId;
  501. userInfo.departmentId = userEntity.F_DepartmentId;
  502. userInfo.openId = userEntity.F_OpenId;
  503. userInfo.isSystem = userEntity.F_SecurityLevel == 1 ? true : false;
  504. }
  505. nWFProcessIBLL.SaveDraft(processId, schemeCode, userInfo);
  506. return Success("流程草稿保存成功");
  507. }
  508. /// <summary>
  509. /// 删除草稿
  510. /// </summary>
  511. /// <param name="processId">流程进程主键</param>
  512. /// <returns></returns>
  513. [HttpPost]
  514. [AjaxOnly]
  515. public ActionResult DeleteDraft(string processId)
  516. {
  517. UserInfo userInfo = LoginUserInfo.Get();
  518. nWFProcessIBLL.DeleteDraft(processId, userInfo);
  519. return Success("流程草稿删除成功");
  520. }
  521. /// <summary>
  522. /// 创建流程
  523. /// </summary>
  524. /// <param name="schemeCode">流程模板编码</param>
  525. /// <param name="processId">流程进程主键</param>
  526. /// <param name="title">流程进程自定义标题</param>
  527. /// <param name="level">流程进程等级</param>
  528. /// <param name="auditors">下一节点审核人</param>
  529. /// <param name="createUserId">流程创建人</param>
  530. /// <returns></returns>
  531. [HttpPost]
  532. [AjaxOnly]
  533. public ActionResult CreateFlow(string schemeCode, string processId, string title, int level, string auditors, string createUserId)
  534. {
  535. UserInfo userInfo = LoginUserInfo.Get();
  536. if (!string.IsNullOrEmpty(createUserId) && userInfo.userId != createUserId)
  537. {
  538. if (title == null)
  539. {
  540. title = "";
  541. }
  542. title += "【" + userInfo.realName + "代发】";
  543. var userEntity = userIbll.GetEntityByUserId(createUserId);
  544. userInfo.userId = userEntity.F_UserId;
  545. userInfo.enCode = userEntity.F_EnCode;
  546. userInfo.realName = userEntity.F_RealName;
  547. userInfo.nickName = userEntity.F_NickName;
  548. userInfo.headIcon = userEntity.F_HeadIcon;
  549. userInfo.gender = userEntity.F_Gender;
  550. userInfo.mobile = userEntity.F_Mobile;
  551. userInfo.telephone = userEntity.F_Telephone;
  552. userInfo.email = userEntity.F_Email;
  553. userInfo.oICQ = userEntity.F_OICQ;
  554. userInfo.weChat = userEntity.F_WeChat;
  555. userInfo.companyId = userEntity.F_CompanyId;
  556. userInfo.departmentId = userEntity.F_DepartmentId;
  557. userInfo.openId = userEntity.F_OpenId;
  558. userInfo.isSystem = userEntity.F_SecurityLevel == 1 ? true : false;
  559. userInfo.roleIds = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 1);
  560. userInfo.postIds = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 2);
  561. }
  562. try
  563. {
  564. nWFProcessIBLL.CreateFlow(schemeCode, processId, title, level, auditors, userInfo);
  565. return Success("流程创建成功");
  566. }
  567. catch (System.Exception ex)
  568. {
  569. nWFProcessIBLL.SaveDraft(processId, schemeCode, userInfo);
  570. return Fail(ex.Message);
  571. }
  572. }
  573. /// <summary>
  574. /// 创建流程(子流程)
  575. /// </summary>
  576. /// <param name="schemeCode">流程模板编码</param>
  577. /// <param name="processId">流程进程主键</param>
  578. /// <param name="parentProcessId">父流程进程主键</param>
  579. /// <param name="parentTaskId">父流程任务主键</param>
  580. /// <returns></returns>
  581. [HttpPost]
  582. [AjaxOnly]
  583. public ActionResult CreateChildFlow(string schemeCode, string processId, string parentProcessId, string parentTaskId)
  584. {
  585. UserInfo userInfo = LoginUserInfo.Get();
  586. nWFProcessIBLL.CreateChildFlow(schemeCode, processId, parentProcessId, parentTaskId, userInfo);
  587. return Success("流程创建成功");
  588. }
  589. /// <summary>
  590. /// 重新创建流程
  591. /// </summary>
  592. /// <param name="processId">流程进程主键</param>
  593. /// <returns></returns>
  594. [HttpPost]
  595. [AjaxOnly]
  596. public ActionResult AgainCreateFlow(string processId)
  597. {
  598. try
  599. {
  600. UserInfo userInfo = LoginUserInfo.Get();
  601. nWFProcessIBLL.AgainCreateFlow(processId, userInfo);
  602. return Success("流程重新创建成功");
  603. }
  604. catch (System.Exception ex)
  605. {
  606. return Fail(ex.Message);
  607. }
  608. }
  609. /// <summary>
  610. /// 审批流程
  611. /// </summary>
  612. /// <param name="operationCode">流程审批操作码agree 同意 disagree 不同意 lrtimeout 超时</param>
  613. /// <param name="operationName">流程审批操名称</param>
  614. /// <param name="processId">流程进程主键</param>
  615. /// <param name="taskId">流程任务主键</param>
  616. /// <param name="des">审批意见</param>
  617. /// <param name="auditors">下一节点指定审核人</param>
  618. /// <returns></returns>
  619. [HttpPost]
  620. [AjaxOnly]
  621. public ActionResult AuditFlow(string operationCode, string operationName, string processId, string taskId, string des, string auditors, string stamp, string signUrl)
  622. {
  623. UserInfo userInfo = LoginUserInfo.Get();
  624. try
  625. {
  626. nWFProcessIBLL.AuditFlow(operationCode, operationName, processId, taskId, des, auditors, stamp, signUrl, userInfo);
  627. return Success("流程审批成功");
  628. }
  629. catch (System.Exception ex)
  630. {
  631. return Fail(ex.Message);
  632. }
  633. }
  634. /// <summary>
  635. /// 审批流程
  636. /// </summary>
  637. /// <param name="operationCode">流程审批操作码agree 同意 disagree 不同意</param>
  638. /// <param name="taskIds">任务串</param>
  639. /// <returns></returns>
  640. [HttpPost]
  641. [AjaxOnly]
  642. public ActionResult AuditFlows(string operationCode, string taskIds)
  643. {
  644. UserInfo userInfo = LoginUserInfo.Get();
  645. nWFProcessIBLL.AuditFlows(operationCode, taskIds, userInfo);
  646. return Success("流程批量审批成功");
  647. }
  648. /// <summary>
  649. /// 流程加签
  650. /// </summary>
  651. /// <param name="processId">流程进程主键</param>
  652. /// <param name="taskId">流程任务主键</param>
  653. /// <param name="userId">加签人员</param>
  654. /// <param name="des">加签说明</param>
  655. /// <returns></returns>
  656. [HttpPost]
  657. [AjaxOnly]
  658. public ActionResult SignFlow(string processId, string taskId, string userId, string des)
  659. {
  660. UserInfo userInfo = LoginUserInfo.Get();
  661. nWFProcessIBLL.SignFlow(processId, taskId, userId, des, userInfo);
  662. return Success("流程加签成功");
  663. }
  664. /// <summary>
  665. /// 流程加签
  666. /// </summary>
  667. /// <param name="processId">流程进程主键</param>
  668. /// <param name="taskId">流程任务主键</param>
  669. /// <param name="userId">加签人员(可多人)</param>
  670. /// <param name="des">加签说明</param>
  671. /// <returns></returns>
  672. [HttpPost]
  673. [AjaxOnly]
  674. public ActionResult SignFlowTwo(string processId, string taskId, string userId, string des)
  675. {
  676. UserInfo userInfo = LoginUserInfo.Get();
  677. nWFProcessIBLL.SignFlowTwo(processId, taskId, userId, des, userInfo);
  678. return Success("流程加签成功");
  679. }
  680. /// <summary>
  681. /// 流程加签审核
  682. /// </summary>
  683. /// <param name="operationCode">审核操作码</param>
  684. /// <param name="processId">流程进程主键</param>
  685. /// <param name="taskId">流程任务主键</param>
  686. /// <param name="des">加签说明</param>
  687. /// <returns></returns>
  688. [HttpPost]
  689. [AjaxOnly]
  690. public ActionResult SignAuditFlow(string operationCode, string processId, string taskId, string des)
  691. {
  692. UserInfo userInfo = LoginUserInfo.Get();
  693. nWFProcessIBLL.SignAuditFlow(operationCode, processId, taskId, des, userInfo);
  694. return Success("加签审批成功");
  695. }
  696. /// <summary>
  697. /// 确认阅读
  698. /// </summary>
  699. /// <param name="processId">流程进程主键</param>
  700. /// <param name="taskId">流程任务主键</param>
  701. /// <returns></returns>
  702. [HttpPost]
  703. [AjaxOnly]
  704. public ActionResult ReferFlow(string processId, string taskId)
  705. {
  706. UserInfo userInfo = LoginUserInfo.Get();
  707. nWFProcessIBLL.ReferFlow(processId, taskId, userInfo);
  708. return Success("保存成功");
  709. }
  710. /// <summary>
  711. /// 催办流程
  712. /// </summary>
  713. /// <param name="processId">流程进程主键</param>
  714. /// <param name="userInfo">当前操作人信息</param>
  715. /// <returns></returns>
  716. [HttpPost]
  717. [AjaxOnly]
  718. public ActionResult UrgeFlow(string processId)
  719. {
  720. UserInfo userInfo = LoginUserInfo.Get();
  721. nWFProcessIBLL.UrgeFlow(processId, userInfo);
  722. return Success("催办成功");
  723. }
  724. /// <summary>
  725. /// 撤销流程(只有在该流程未被处理的情况下)
  726. /// </summary>
  727. /// <param name="processId">流程进程主键</param>
  728. /// <returns></returns>
  729. [HttpPost]
  730. [AjaxOnly]
  731. public ActionResult RevokeFlow(string processId)
  732. {
  733. UserInfo userInfo = LoginUserInfo.Get();
  734. nWFProcessIBLL.RevokeFlow(processId, userInfo);
  735. return Success("撤销成功");
  736. }
  737. /// <summary>
  738. /// 获取流程当前任务需要处理的人
  739. /// </summary>
  740. /// <param name="processId">流程进程主键</param>
  741. /// <returns></returns>
  742. [HttpGet]
  743. [AjaxOnly]
  744. public ActionResult GetTaskUserList(string processId)
  745. {
  746. var data = nWFProcessIBLL.GetTaskUserList(processId);
  747. return Success(data);
  748. }
  749. /// <summary>
  750. /// 指派流程审核人
  751. /// </summary>
  752. /// <param name="strList">任务列表</param>
  753. [HttpPost]
  754. [ValidateAntiForgeryToken]
  755. [AjaxOnly]
  756. public ActionResult AppointUser(string strList)
  757. {
  758. IEnumerable<NWFTaskEntity> list = strList.ToObject<IEnumerable<NWFTaskEntity>>();
  759. UserInfo userInfo = LoginUserInfo.Get();
  760. nWFProcessIBLL.AppointUser(list, userInfo);
  761. return Success("指派成功");
  762. }
  763. /// <summary>
  764. /// 作废流程
  765. /// </summary>
  766. /// <param name="processId">流程进程主键</param>
  767. /// <returns></returns>
  768. [HttpPost]
  769. [AjaxOnly]
  770. public ActionResult DeleteFlow(string processId)
  771. {
  772. UserInfo userInfo = LoginUserInfo.Get();
  773. nWFProcessIBLL.DeleteFlow(processId, userInfo);
  774. return Success("作废成功");
  775. }
  776. /// <summary>
  777. /// 撤销审核
  778. /// </summary>
  779. /// <param name="processId">流程进程主键</param>
  780. /// <param name="taskId">任务主键</param>
  781. /// <returns></returns>
  782. [HttpPost]
  783. [AjaxOnly]
  784. public ActionResult RevokeAudit(string processId, string taskId)
  785. {
  786. UserInfo userInfo = LoginUserInfo.Get();
  787. var res = nWFProcessIBLL.RevokeAudit(processId, taskId, userInfo);
  788. if (res)
  789. {
  790. return Success("撤销成功");
  791. }
  792. else
  793. {
  794. return Fail("撤销失败,当前不允许撤销!");
  795. }
  796. }
  797. /// <summary>
  798. /// 添加任务
  799. /// </summary>
  800. /// <param name="processId"></param>
  801. /// <param name="bNodeId"></param>
  802. /// <param name="eNodeId"></param>
  803. /// <returns></returns>
  804. [HttpPost]
  805. [AjaxOnly]
  806. public ActionResult AddTask(string processId, string bNodeId, string eNodeId)
  807. {
  808. UserInfo userInfo = LoginUserInfo.Get();
  809. nWFProcessIBLL.AddTask(processId, bNodeId, eNodeId, userInfo);
  810. return Success("添加成功");
  811. }
  812. #endregion
  813. }
  814. }