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.
 
 
 
 
 
 

1054 lines
36 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 UseCar()
  237. {
  238. return View();
  239. }
  240. [HttpGet]
  241. public ActionResult LeaveStatistics()
  242. {
  243. return View();
  244. }
  245. [HttpGet]
  246. public ActionResult Transceiver()
  247. {
  248. return View();
  249. }
  250. [HttpGet]
  251. public ActionResult MonitorIndexRenShi()
  252. {
  253. return View();
  254. }
  255. [HttpGet]
  256. public ActionResult MonitorIndexZiChan()
  257. {
  258. return View();
  259. }
  260. [HttpGet]
  261. public ActionResult MonitorIndexGongWen()
  262. {
  263. return View();
  264. }
  265. [HttpGet]
  266. public ActionResult MonitorIndexXingZhen()
  267. {
  268. return View();
  269. }
  270. /// <summary>
  271. /// 用印申请统计
  272. /// </summary>
  273. /// <returns></returns>
  274. [HttpGet]
  275. public ActionResult MonitorIndexOfyyspd()
  276. {
  277. return View();
  278. }
  279. /// <summary>
  280. /// 会议室申请统计
  281. /// </summary>
  282. /// <returns></returns>
  283. [HttpGet]
  284. public ActionResult MonitorIndexOfmeeting()
  285. {
  286. return View();
  287. }
  288. /// <summary>
  289. /// 党委会党委专题会申请统计
  290. /// </summary>
  291. /// <returns></returns>
  292. [HttpGet]
  293. public ActionResult MonitorIndexOfdwhsq()
  294. {
  295. return View();
  296. }
  297. #endregion
  298. #region 获取数据
  299. /// <summary>
  300. /// 获取我的流程信息列表
  301. /// </summary>
  302. /// <param name="pagination">分页参数</param>
  303. /// <param name="queryJson">查询条件</param>
  304. /// <returns></returns>
  305. [HttpGet]
  306. [AjaxOnly]
  307. public ActionResult GetPorcessList(string pagination, string queryJson)
  308. {
  309. Pagination paginationobj = pagination.ToObject<Pagination>();
  310. var list = nWFProcessIBLL.GetPageList(paginationobj, queryJson);
  311. var jsonData = new
  312. {
  313. rows = list,
  314. total = paginationobj.total,
  315. page = paginationobj.page,
  316. records = paginationobj.records,
  317. };
  318. return Success(jsonData);
  319. }
  320. [HttpGet]
  321. [AjaxOnly]
  322. public ActionResult GetUseCar(string pagination, string queryJson)
  323. {
  324. Pagination paginationobj = pagination.ToObject<Pagination>();
  325. var list = nWFProcessIBLL.GetUseCar(paginationobj, queryJson);
  326. var jsonData = new
  327. {
  328. rows = list,
  329. total = paginationobj.total,
  330. page = paginationobj.page,
  331. records = paginationobj.records,
  332. };
  333. return Success(jsonData);
  334. }
  335. [HttpGet]
  336. [AjaxOnly]
  337. public ActionResult GetLeaveStatistics(string pagination, string queryJson)
  338. {
  339. Pagination paginationobj = pagination.ToObject<Pagination>();
  340. var list = nWFProcessIBLL.GetLeaveStatistics(paginationobj, queryJson);
  341. var jsonData = new
  342. {
  343. rows = list,
  344. total = paginationobj.total,
  345. page = paginationobj.page,
  346. records = paginationobj.records,
  347. };
  348. return Success(jsonData);
  349. }
  350. [HttpGet]
  351. [AjaxOnly]
  352. public ActionResult GetTransceiver(string pagination, string queryJson)
  353. {
  354. Pagination paginationobj = pagination.ToObject<Pagination>();
  355. var list = nWFProcessIBLL.GetTransceiver(paginationobj, queryJson);
  356. var jsonData = new
  357. {
  358. rows = list,
  359. total = paginationobj.total,
  360. page = paginationobj.page,
  361. records = paginationobj.records,
  362. };
  363. return Success(jsonData);
  364. }
  365. public ActionResult GetFirstTaskByProcessId(string processId)
  366. {
  367. var taskId = nWFProcessIBLL.GetFirstTaskByProcessId(processId);
  368. return Success(new { taskId });
  369. }
  370. /// <summary>
  371. /// 获取我的流程信息列表
  372. /// </summary>
  373. /// <param name="pagination">分页参数</param>
  374. /// <param name="queryJson">查询条件</param>
  375. /// <returns></returns>
  376. [HttpGet]
  377. [AjaxOnly]
  378. public ActionResult GetTaskPageList(string pagination, string queryJson, string categoryId)
  379. {
  380. Pagination paginationobj = pagination.ToObject<Pagination>();
  381. IEnumerable<NWFProcessEntity> list = new List<NWFProcessEntity>();
  382. UserInfo userInfo = LoginUserInfo.Get();
  383. switch (categoryId)
  384. {
  385. case "1":
  386. list = nWFProcessIBLL.GetMyPageList(userInfo.userId, paginationobj, queryJson);
  387. break;
  388. case "2":
  389. list = nWFProcessIBLL.GetMyTaskPageList(userInfo, paginationobj, queryJson);
  390. break;
  391. case "3":
  392. list = nWFProcessIBLL.GetMyFinishTaskPageList(userInfo, paginationobj, queryJson);
  393. break;
  394. }
  395. var jsonData = new
  396. {
  397. rows = list,
  398. total = paginationobj.total,
  399. page = paginationobj.page,
  400. records = paginationobj.records,
  401. };
  402. return Success(jsonData);
  403. }
  404. /// <summary>
  405. /// 获取批量审核任务清单
  406. /// </summary>
  407. /// <param name="pagination">分页参数</param>
  408. /// <param name="queryJson">查询条件</param>
  409. /// <returns></returns>
  410. [HttpGet]
  411. [AjaxOnly]
  412. public ActionResult GetBatchTaskPageList(string pagination, string queryJson)
  413. {
  414. Pagination paginationobj = pagination.ToObject<Pagination>();
  415. UserInfo userInfo = LoginUserInfo.Get();
  416. var data = nWFProcessIBLL.GetMyTaskPageList(userInfo, paginationobj, queryJson, true);
  417. var jsonData = new
  418. {
  419. rows = data,
  420. total = paginationobj.total,
  421. page = paginationobj.page,
  422. records = paginationobj.records,
  423. };
  424. return Success(jsonData);
  425. }
  426. /// <summary>
  427. /// 获取我的流程信息列表
  428. /// </summary>
  429. /// <param name="pagination">分页参数</param>
  430. /// <param name="queryJson">查询条件</param>
  431. /// <returns></returns>
  432. [HttpGet]
  433. [AjaxOnly]
  434. public ActionResult GetTask(string taskId)
  435. {
  436. var data = nWFTaskIBLL.GetEntity(taskId);
  437. return Success(data);
  438. }
  439. #endregion
  440. #region 保存更新删除
  441. /// <summary>
  442. /// 删除流程进程实体
  443. /// </summary>
  444. /// <param name="processId">流程进程主键</param>
  445. [HttpPost]
  446. [AjaxOnly]
  447. public ActionResult DeleteEntity(string processId)
  448. {
  449. nWFProcessIBLL.DeleteEntity(processId);
  450. return Success("删除成功");
  451. }
  452. #endregion
  453. #region 流程表单数据统计
  454. /// <summary>
  455. /// 用印申请流程表单统计
  456. /// </summary>
  457. /// <param name="pagination">分页参数</param>
  458. /// <param name="queryJson">查询条件</param>
  459. /// <returns></returns>
  460. [HttpGet]
  461. [AjaxOnly]
  462. public ActionResult GetPageListOfyyspd(string pagination, string queryJson)
  463. {
  464. Pagination paginationobj = pagination.ToObject<Pagination>();
  465. var list = nWFProcessIBLL.GetPageListOfyyspd(paginationobj, queryJson);
  466. var jsonData = new
  467. {
  468. rows = list,
  469. total = paginationobj.total,
  470. page = paginationobj.page,
  471. records = paginationobj.records,
  472. };
  473. return Success(jsonData);
  474. }
  475. /// <summary>
  476. /// 会议室申请流程表单统计
  477. /// </summary>
  478. /// <param name="pagination">分页参数</param>
  479. /// <param name="queryJson">查询条件</param>
  480. /// <returns></returns>
  481. [HttpGet]
  482. [AjaxOnly]
  483. public ActionResult GetPageListOfmeeting(string pagination, string queryJson)
  484. {
  485. Pagination paginationobj = pagination.ToObject<Pagination>();
  486. var list = nWFProcessIBLL.GetPageListOfmeeting(paginationobj, queryJson);
  487. var jsonData = new
  488. {
  489. rows = list,
  490. total = paginationobj.total,
  491. page = paginationobj.page,
  492. records = paginationobj.records,
  493. };
  494. return Success(jsonData);
  495. }
  496. /// <summary>
  497. /// 党委会党委专题会申请流程表单统计
  498. /// </summary>
  499. /// <param name="pagination">分页参数</param>
  500. /// <param name="queryJson">查询条件</param>
  501. /// <returns></returns>
  502. [HttpGet]
  503. [AjaxOnly]
  504. public ActionResult GetPageListOfdwhsq(string pagination, string queryJson)
  505. {
  506. Pagination paginationobj = pagination.ToObject<Pagination>();
  507. var list = nWFProcessIBLL.GetPageListOfdwhsq(paginationobj, queryJson);
  508. var jsonData = new
  509. {
  510. rows = list,
  511. total = paginationobj.total,
  512. page = paginationobj.page,
  513. records = paginationobj.records,
  514. };
  515. return Success(jsonData);
  516. }
  517. #endregion
  518. #region 流程API
  519. /// <summary>
  520. /// 获取流程模板
  521. /// </summary>
  522. /// <param name="code">流程编码</param>
  523. /// <returns></returns>
  524. [HttpGet]
  525. [AjaxOnly]
  526. public ActionResult GetSchemeByCode(string code)
  527. {
  528. var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(code);
  529. if (schemeInfo != null)
  530. {
  531. var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId);
  532. return Success(data);
  533. }
  534. return Fail("找不到该流程模板");
  535. }
  536. /// <summary>
  537. /// 根据流程进程主键获取流程模板
  538. /// </summary>
  539. /// <param name="processId">流程进程主键</param>
  540. /// <returns></returns>
  541. [HttpGet]
  542. [AjaxOnly]
  543. public ActionResult GetSchemeByProcessId(string processId)
  544. {
  545. var processEntity = nWFProcessIBLL.GetEntity(processId);
  546. if (processEntity != null)
  547. {
  548. if (string.IsNullOrEmpty(processEntity.F_SchemeId))
  549. {
  550. var schemeInfo = nWFSchemeIBLL.GetInfoEntityByCode(processEntity.F_SchemeCode);
  551. if (schemeInfo != null)
  552. {
  553. var data = nWFSchemeIBLL.GetSchemeEntity(schemeInfo.F_SchemeId);
  554. return Success(data);
  555. }
  556. }
  557. else
  558. {
  559. var data = nWFSchemeIBLL.GetSchemeEntity(processEntity.F_SchemeId);
  560. return Success(data);
  561. }
  562. }
  563. return Fail("找不到该流程模板");
  564. }
  565. /// <summary>
  566. /// 获取流程下一节点审核
  567. /// </summary>
  568. /// <param name="code">流程编码</param>
  569. /// <param name="processId">流程进程主键</param>
  570. /// <param name="taskId">任务主键</param>
  571. /// <param name="nodeId">节点ID</param>
  572. /// <param name="operationCode">操作编码</param>
  573. /// <returns></returns>
  574. [HttpGet]
  575. [AjaxOnly]
  576. public ActionResult GetNextAuditors(string code, string processId, string taskId, string nodeId, string operationCode)
  577. {
  578. UserInfo userInfo = LoginUserInfo.Get();
  579. var data = nWFProcessIBLL.GetNextAuditors(code, processId, taskId, nodeId, operationCode, userInfo);
  580. return Success(data);
  581. }
  582. /// <summary>
  583. /// 获取流程进程信息
  584. /// </summary>
  585. /// <param name="processId">进程主键</param>
  586. /// <param name="taskId">任务主键</param>
  587. /// <returns></returns>
  588. [HttpGet]
  589. [AjaxOnly]
  590. public ActionResult GetProcessDetails(string processId, string taskId)
  591. {
  592. UserInfo userInfo = LoginUserInfo.Get();
  593. var data = nWFProcessIBLL.GetProcessDetails(processId, taskId, userInfo);
  594. if (!string.IsNullOrEmpty(data.childProcessId))
  595. {
  596. processId = data.childProcessId;
  597. }
  598. var taskNode = nWFProcessIBLL.GetTaskUserList(processId);
  599. var jsonData = new
  600. {
  601. info = data,
  602. task = taskNode
  603. };
  604. return Success(jsonData);
  605. }
  606. /// <summary>
  607. /// 获取子流程详细信息
  608. /// </summary>
  609. /// <param name="processId">父流程进程主键</param>
  610. /// <param name="taskId">父流程子流程发起主键</param>
  611. /// <param name="schemeCode">子流程流程模板编码</param>
  612. /// <param name="nodeId">父流程发起子流程节点Id</param>
  613. /// <returns></returns>
  614. [HttpGet]
  615. [AjaxOnly]
  616. public ActionResult GetChildProcessDetails(string processId, string taskId, string schemeCode, string nodeId)
  617. {
  618. UserInfo userInfo = LoginUserInfo.Get();
  619. var data = nWFProcessIBLL.GetChildProcessDetails(processId, taskId, schemeCode, nodeId, userInfo);
  620. var taskNode = nWFProcessIBLL.GetTaskUserList(data.childProcessId);
  621. var jsonData = new
  622. {
  623. info = data,
  624. task = taskNode
  625. };
  626. return Success(jsonData);
  627. }
  628. /// <summary>
  629. /// 保存草稿
  630. /// </summary>
  631. /// <param name="processId">流程进程主键</param>
  632. /// <param name="schemeCode">流程模板编码</param>
  633. /// <returns></returns>
  634. [HttpPost]
  635. [AjaxOnly]
  636. public ActionResult SaveDraft(string processId, string schemeCode, string createUserId)
  637. {
  638. UserInfo userInfo = LoginUserInfo.Get();
  639. if (!string.IsNullOrEmpty(createUserId) && userInfo.userId != createUserId)
  640. {
  641. var userEntity = userIbll.GetEntityByUserId(createUserId);
  642. userInfo.userId = userEntity.F_UserId;
  643. userInfo.enCode = userEntity.F_EnCode;
  644. userInfo.realName = userEntity.F_RealName;
  645. userInfo.nickName = userEntity.F_NickName;
  646. userInfo.headIcon = userEntity.F_HeadIcon;
  647. userInfo.gender = userEntity.F_Gender;
  648. userInfo.mobile = userEntity.F_Mobile;
  649. userInfo.telephone = userEntity.F_Telephone;
  650. userInfo.email = userEntity.F_Email;
  651. userInfo.oICQ = userEntity.F_OICQ;
  652. userInfo.weChat = userEntity.F_WeChat;
  653. userInfo.companyId = userEntity.F_CompanyId;
  654. userInfo.departmentId = userEntity.F_DepartmentId;
  655. userInfo.openId = userEntity.F_OpenId;
  656. userInfo.isSystem = userEntity.F_SecurityLevel == 1 ? true : false;
  657. }
  658. nWFProcessIBLL.SaveDraft(processId, schemeCode, userInfo);
  659. return Success("流程草稿保存成功");
  660. }
  661. /// <summary>
  662. /// 删除草稿
  663. /// </summary>
  664. /// <param name="processId">流程进程主键</param>
  665. /// <returns></returns>
  666. [HttpPost]
  667. [AjaxOnly]
  668. public ActionResult DeleteDraft(string processId)
  669. {
  670. UserInfo userInfo = LoginUserInfo.Get();
  671. nWFProcessIBLL.DeleteDraft(processId, userInfo);
  672. return Success("流程草稿删除成功");
  673. }
  674. /// <summary>
  675. /// 创建流程
  676. /// </summary>
  677. /// <param name="schemeCode">流程模板编码</param>
  678. /// <param name="processId">流程进程主键</param>
  679. /// <param name="title">流程进程自定义标题</param>
  680. /// <param name="level">流程进程等级</param>
  681. /// <param name="auditors">下一节点审核人</param>
  682. /// <param name="createUserId">流程创建人</param>
  683. /// <returns></returns>
  684. [HttpPost]
  685. [AjaxOnly]
  686. public ActionResult CreateFlow(string schemeCode, string processId, string title, int level, string auditors, string createUserId)
  687. {
  688. UserInfo userInfo = LoginUserInfo.Get();
  689. if (!string.IsNullOrEmpty(createUserId) && userInfo.userId != createUserId)
  690. {
  691. if (title == null)
  692. {
  693. title = "";
  694. }
  695. title += "【" + userInfo.realName + "代发】";
  696. var userEntity = userIbll.GetEntityByUserId(createUserId);
  697. userInfo.userId = userEntity.F_UserId;
  698. userInfo.enCode = userEntity.F_EnCode;
  699. userInfo.realName = userEntity.F_RealName;
  700. userInfo.nickName = userEntity.F_NickName;
  701. userInfo.headIcon = userEntity.F_HeadIcon;
  702. userInfo.gender = userEntity.F_Gender;
  703. userInfo.mobile = userEntity.F_Mobile;
  704. userInfo.telephone = userEntity.F_Telephone;
  705. userInfo.email = userEntity.F_Email;
  706. userInfo.oICQ = userEntity.F_OICQ;
  707. userInfo.weChat = userEntity.F_WeChat;
  708. userInfo.companyId = userEntity.F_CompanyId;
  709. userInfo.departmentId = userEntity.F_DepartmentId;
  710. userInfo.openId = userEntity.F_OpenId;
  711. userInfo.isSystem = userEntity.F_SecurityLevel == 1 ? true : false;
  712. userInfo.roleIds = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 1);
  713. userInfo.postIds = userRelationIBLL.GetObjectIds(userEntity.F_UserId, 2);
  714. }
  715. try
  716. {
  717. nWFProcessIBLL.CreateFlow(schemeCode, processId, title, level, auditors, userInfo);
  718. return Success("流程创建成功");
  719. }
  720. catch (System.Exception ex)
  721. {
  722. nWFProcessIBLL.SaveDraft(processId, schemeCode, userInfo);
  723. return Fail(ex.Message);
  724. }
  725. }
  726. /// <summary>
  727. /// 创建流程(子流程)
  728. /// </summary>
  729. /// <param name="schemeCode">流程模板编码</param>
  730. /// <param name="processId">流程进程主键</param>
  731. /// <param name="parentProcessId">父流程进程主键</param>
  732. /// <param name="parentTaskId">父流程任务主键</param>
  733. /// <returns></returns>
  734. [HttpPost]
  735. [AjaxOnly]
  736. public ActionResult CreateChildFlow(string schemeCode, string processId, string parentProcessId, string parentTaskId)
  737. {
  738. UserInfo userInfo = LoginUserInfo.Get();
  739. nWFProcessIBLL.CreateChildFlow(schemeCode, processId, parentProcessId, parentTaskId, 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 AgainCreateFlow(string processId)
  750. {
  751. try
  752. {
  753. UserInfo userInfo = LoginUserInfo.Get();
  754. nWFProcessIBLL.AgainCreateFlow(processId, userInfo);
  755. return Success("流程重新创建成功");
  756. }
  757. catch (System.Exception ex)
  758. {
  759. return Fail(ex.Message);
  760. }
  761. }
  762. /// <summary>
  763. /// 审批流程
  764. /// </summary>
  765. /// <param name="operationCode">流程审批操作码agree 同意 disagree 不同意 lrtimeout 超时</param>
  766. /// <param name="operationName">流程审批操名称</param>
  767. /// <param name="processId">流程进程主键</param>
  768. /// <param name="taskId">流程任务主键</param>
  769. /// <param name="des">审批意见</param>
  770. /// <param name="auditors">下一节点指定审核人</param>
  771. /// <returns></returns>
  772. [HttpPost]
  773. [AjaxOnly]
  774. public ActionResult AuditFlow(string operationCode, string operationName, string processId, string taskId, string des, string auditors, string stamp, string signUrl)
  775. {
  776. UserInfo userInfo = LoginUserInfo.Get();
  777. try
  778. {
  779. nWFProcessIBLL.AuditFlow(operationCode, operationName, processId, taskId, des, auditors, stamp, signUrl, userInfo);
  780. return Success("流程审批成功");
  781. }
  782. catch (System.Exception ex)
  783. {
  784. return Fail(ex.Message);
  785. }
  786. }
  787. /// <summary>
  788. /// 审批流程
  789. /// </summary>
  790. /// <param name="operationCode">流程审批操作码agree 同意 disagree 不同意</param>
  791. /// <param name="taskIds">任务串</param>
  792. /// <returns></returns>
  793. [HttpPost]
  794. [AjaxOnly]
  795. public ActionResult AuditFlows(string operationCode, string taskIds)
  796. {
  797. UserInfo userInfo = LoginUserInfo.Get();
  798. nWFProcessIBLL.AuditFlows(operationCode, taskIds, userInfo);
  799. return Success("流程批量审批成功");
  800. }
  801. /// <summary>
  802. /// 流程加签
  803. /// </summary>
  804. /// <param name="processId">流程进程主键</param>
  805. /// <param name="taskId">流程任务主键</param>
  806. /// <param name="userId">加签人员</param>
  807. /// <param name="des">加签说明</param>
  808. /// <returns></returns>
  809. [HttpPost]
  810. [AjaxOnly]
  811. public ActionResult SignFlow(string processId, string taskId, string userId, string des)
  812. {
  813. UserInfo userInfo = LoginUserInfo.Get();
  814. nWFProcessIBLL.SignFlow(processId, taskId, userId, des, userInfo);
  815. return Success("流程加签成功");
  816. }
  817. /// <summary>
  818. /// 流程加签
  819. /// </summary>
  820. /// <param name="processId">流程进程主键</param>
  821. /// <param name="taskId">流程任务主键</param>
  822. /// <param name="userId">加签人员(可多人)</param>
  823. /// <param name="des">加签说明</param>
  824. /// <returns></returns>
  825. [HttpPost]
  826. [AjaxOnly]
  827. public ActionResult SignFlowTwo(string processId, string taskId, string userId, string des)
  828. {
  829. UserInfo userInfo = LoginUserInfo.Get();
  830. nWFProcessIBLL.SignFlowTwo(processId, taskId, userId, des, userInfo);
  831. return Success("流程加签成功");
  832. }
  833. /// <summary>
  834. /// 流程加签审核
  835. /// </summary>
  836. /// <param name="operationCode">审核操作码</param>
  837. /// <param name="processId">流程进程主键</param>
  838. /// <param name="taskId">流程任务主键</param>
  839. /// <param name="des">加签说明</param>
  840. /// <returns></returns>
  841. [HttpPost]
  842. [AjaxOnly]
  843. public ActionResult SignAuditFlow(string operationCode, string processId, string taskId, string des)
  844. {
  845. UserInfo userInfo = LoginUserInfo.Get();
  846. nWFProcessIBLL.SignAuditFlow(operationCode, processId, taskId, des, userInfo);
  847. return Success("加签审批成功");
  848. }
  849. /// <summary>
  850. /// 确认阅读
  851. /// </summary>
  852. /// <param name="processId">流程进程主键</param>
  853. /// <param name="taskId">流程任务主键</param>
  854. /// <returns></returns>
  855. [HttpPost]
  856. [AjaxOnly]
  857. public ActionResult ReferFlow(string processId, string taskId)
  858. {
  859. UserInfo userInfo = LoginUserInfo.Get();
  860. nWFProcessIBLL.ReferFlow(processId, taskId, userInfo);
  861. return Success("保存成功");
  862. }
  863. /// <summary>
  864. /// 催办流程
  865. /// </summary>
  866. /// <param name="processId">流程进程主键</param>
  867. /// <param name="userInfo">当前操作人信息</param>
  868. /// <returns></returns>
  869. [HttpPost]
  870. [AjaxOnly]
  871. public ActionResult UrgeFlow(string processId)
  872. {
  873. UserInfo userInfo = LoginUserInfo.Get();
  874. nWFProcessIBLL.UrgeFlow(processId, userInfo);
  875. return Success("催办成功");
  876. }
  877. /// <summary>
  878. /// 撤销流程(只有在该流程未被处理的情况下)
  879. /// </summary>
  880. /// <param name="processId">流程进程主键</param>
  881. /// <returns></returns>
  882. [HttpPost]
  883. [AjaxOnly]
  884. public ActionResult RevokeFlow(string processId)
  885. {
  886. UserInfo userInfo = LoginUserInfo.Get();
  887. nWFProcessIBLL.RevokeFlow(processId, userInfo);
  888. return Success("撤销成功");
  889. }
  890. /// <summary>
  891. /// 获取流程当前任务需要处理的人
  892. /// </summary>
  893. /// <param name="processId">流程进程主键</param>
  894. /// <returns></returns>
  895. [HttpGet]
  896. [AjaxOnly]
  897. public ActionResult GetTaskUserList(string processId)
  898. {
  899. var data = nWFProcessIBLL.GetTaskUserList(processId);
  900. return Success(data);
  901. }
  902. /// <summary>
  903. /// 指派流程审核人
  904. /// </summary>
  905. /// <param name="strList">任务列表</param>
  906. [HttpPost]
  907. [ValidateAntiForgeryToken]
  908. [AjaxOnly]
  909. public ActionResult AppointUser(string strList)
  910. {
  911. IEnumerable<NWFTaskEntity> list = strList.ToObject<IEnumerable<NWFTaskEntity>>();
  912. UserInfo userInfo = LoginUserInfo.Get();
  913. nWFProcessIBLL.AppointUser(list, userInfo);
  914. return Success("指派成功");
  915. }
  916. /// <summary>
  917. /// 作废流程
  918. /// </summary>
  919. /// <param name="processId">流程进程主键</param>
  920. /// <returns></returns>
  921. [HttpPost]
  922. [AjaxOnly]
  923. public ActionResult DeleteFlow(string processId)
  924. {
  925. UserInfo userInfo = LoginUserInfo.Get();
  926. nWFProcessIBLL.DeleteFlow(processId, userInfo);
  927. return Success("作废成功");
  928. }
  929. /// <summary>
  930. /// 撤销审核
  931. /// </summary>
  932. /// <param name="processId">流程进程主键</param>
  933. /// <param name="taskId">任务主键</param>
  934. /// <returns></returns>
  935. [HttpPost]
  936. [AjaxOnly]
  937. public ActionResult RevokeAudit(string processId, string taskId)
  938. {
  939. UserInfo userInfo = LoginUserInfo.Get();
  940. var res = nWFProcessIBLL.RevokeAudit(processId, taskId, userInfo);
  941. if (res)
  942. {
  943. return Success("撤销成功");
  944. }
  945. else
  946. {
  947. return Fail("撤销失败,当前不允许撤销!");
  948. }
  949. }
  950. /// <summary>
  951. /// 添加任务
  952. /// </summary>
  953. /// <param name="processId"></param>
  954. /// <param name="bNodeId"></param>
  955. /// <param name="eNodeId"></param>
  956. /// <returns></returns>
  957. [HttpPost]
  958. [AjaxOnly]
  959. public ActionResult AddTask(string processId, string bNodeId, string eNodeId)
  960. {
  961. UserInfo userInfo = LoginUserInfo.Get();
  962. nWFProcessIBLL.AddTask(processId, bNodeId, eNodeId, userInfo);
  963. return Success("添加成功");
  964. }
  965. #endregion
  966. [HttpGet]
  967. public ActionResult GetNextUser(string F_TaskId)
  968. {
  969. List<string> usernamelist = new List<string>();
  970. List<string> nextlist = nWFTaskIBLL.GetTaskUserList(F_TaskId).Select(m => m.F_UserId).ToList();
  971. foreach (var uid in nextlist)
  972. {
  973. var userentity = userIbll.GetEntityByUserId(uid);
  974. string deptname = departmentIbll.GetEntity(userentity?.F_DepartmentId)?.F_FullName;
  975. usernamelist.Add("[" + deptname + "]" + userentity?.F_RealName);
  976. }
  977. return SuccessString(string.Join(",", usernamelist));
  978. }
  979. [HttpGet]
  980. public ActionResult GetNextUserMonitor(string F_ProcessId)
  981. {
  982. var tasklist = nWFTaskIBLL.GetUnFinishTaskList(F_ProcessId).FirstOrDefault();
  983. if (tasklist != null && !string.IsNullOrEmpty(tasklist.F_Id))
  984. {
  985. List<string> usernamelist = new List<string>();
  986. List<string> nextlist = nWFTaskIBLL.GetTaskUserList(tasklist.F_Id).Select(m => m.F_UserId).ToList();
  987. foreach (var uid in nextlist)
  988. {
  989. var userentity = userIbll.GetEntityByUserId(uid);
  990. string deptname = departmentIbll.GetEntity(userentity?.F_DepartmentId)?.F_FullName;
  991. usernamelist.Add("[" + deptname + "]" + userentity?.F_RealName);
  992. }
  993. return SuccessString(string.Join(",", usernamelist));
  994. }
  995. else
  996. {
  997. return SuccessString("");
  998. }
  999. }
  1000. }
  1001. }