Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

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