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.
 
 
 
 
 
 

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