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.

NWFProcessController.cs 36 KiB

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