TaIssueProcessController.java 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. package com.example.civilizedcity.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.example.civilizedcity.common.*;
  7. import java.time.LocalDateTime;
  8. import java.util.List;
  9. import com.example.civilizedcity.entity.SysUser;
  10. import com.example.civilizedcity.entity.TaIssue;
  11. import com.example.civilizedcity.event.MessagEvent;
  12. import com.example.civilizedcity.service.TaIssueService;
  13. import com.example.civilizedcity.service.TaOrgIssueService;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import io.swagger.annotations.ApiParam;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.context.ApplicationEventPublisher;
  19. import org.springframework.web.bind.annotation.*;
  20. import com.example.civilizedcity.entity.TaIssueProcess;
  21. import com.example.civilizedcity.service.TaIssueProcessService;
  22. /**
  23. * 问题处理;(ta_issue_process)表控制层
  24. *
  25. * @author : http://njyunzhi.com
  26. * @date : 2022-12-12
  27. */
  28. @Api(tags = "问题处理对象功能接口")
  29. @RestController
  30. @RequestMapping("/")
  31. public class TaIssueProcessController extends BaseController {
  32. @Autowired
  33. private TaIssueProcessService taIssueProcessService;
  34. @Autowired
  35. private TaIssueService taIssueService;
  36. @Autowired
  37. private TaOrgIssueService taOrgIssueService;
  38. @Autowired
  39. ApplicationEventPublisher applicationEventPublisher;
  40. /**
  41. * 通过ID查询单条数据
  42. *
  43. * @param processId 主键
  44. * @return 实例对象
  45. */
  46. @ApiOperation("通过ID查询单条数据")
  47. @GetMapping("/taIssueProcess/{id}")
  48. public ResponseBean queryById(@ApiParam("对象ID") @PathVariable Integer id) throws Exception {
  49. return ResponseBean.success(taIssueProcessService.getById(id));
  50. }
  51. /**
  52. * 分页查询
  53. *
  54. * @param pageNum 当前页码
  55. * @param pageSize 每页条数
  56. * @return 查询结果
  57. */
  58. @ApiOperation("分页查询")
  59. @GetMapping("/taIssueProcess")
  60. public ResponseBean list(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  61. @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
  62. @ApiParam("问题单ID") @RequestParam(value = "issueId") Integer issueId) throws Exception {
  63. IPage<TaIssueProcess> pg = new Page<>(pageNum, pageSize);
  64. QueryWrapper<TaIssueProcess> queryWrapper = new QueryWrapper<>();
  65. queryWrapper.eq("issue_id", issueId);
  66. queryWrapper.gt("status", Constants.STATUS_DELETE);
  67. queryWrapper.orderByDesc("create_date");
  68. IPage<TaIssueProcess> result = taIssueProcessService.page(pg, queryWrapper);
  69. return ResponseBean.success(result);
  70. }
  71. private TaIssue checkIssue(TaIssueProcess taIssueProcess) throws Exception {
  72. if (null == taIssueProcess.getIssueId()) {
  73. throw new Exception("找不到对应问题");
  74. }
  75. TaIssue taIssue = taIssueService.getById(taIssueProcess.getIssueId());
  76. if (null == taIssue || taIssue.getStatus() == Constants.STATUS_DELETE) {
  77. throw new Exception("找不到对应问题");
  78. }
  79. if (Constants.PROCESS_END.equals(taIssue.getProcessNode())) {
  80. throw new Exception("当前问题已办结");
  81. }
  82. return taIssue;
  83. }
  84. private void updateUser(TaIssueProcess taIssueProcess, SysUser sysUser) {
  85. taIssueProcess.setOrgId(sysUser.getOrgId());
  86. taIssueProcess.setCreateUser(sysUser.getUserId());
  87. taIssueProcess.setUserName(sysUser.getName());
  88. taIssueProcess.setStatus(Constants.STATUS_NORMAL);
  89. taIssueProcess.setCreateDate(LocalDateTime.now());
  90. }
  91. private void updateIssue(TaIssue taIssue, TaIssueProcess taIssueProcess) {
  92. taIssue.setProcessNode(taIssueProcess.getProcessNode());
  93. taIssue.setProcessStatus(taIssueProcess.getProcessStatus());
  94. taIssueService.updateById(taIssue);
  95. }
  96. // /**
  97. // * 审核
  98. // *
  99. // * @param taIssueProcess 实例对象
  100. // * @return 实例对象
  101. // */
  102. // @SaCheckPermission("manager")
  103. // @ApiOperation("审核")
  104. // @PostMapping("/taIssueProcess/verify")
  105. // public ResponseBean verify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  106. // TaIssue taIssue = checkIssue(taIssueProcess);
  107. //
  108. // if (StringUtils.isEmpty(taIssueProcess.getProcessStatus())) {
  109. // return ResponseBean.error("请设置审批是否通过");
  110. // }
  111. //
  112. // if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) {
  113. // // 审核未通过
  114. // if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) {
  115. // return ResponseBean.error("请填写未通过原因");
  116. // }
  117. // }
  118. //
  119. // updateUser(taIssueProcess, currentUser());
  120. // taIssueProcess.setProcessNode(Constants.PROCESS_VERIFY);
  121. // taIssueProcessService.save(taIssueProcess);
  122. //
  123. // updateIssue(taIssue, taIssueProcess);
  124. //
  125. // return ResponseBean.success(taIssueProcess);
  126. // }
  127. /**
  128. * 交办
  129. *
  130. * @param taIssueProcess 实例对象
  131. * @return 实例对象
  132. */
  133. @SaCheckPermission("manager")
  134. @ApiOperation("交办")
  135. @PostMapping("/taIssueProcess/assigned")
  136. public ResponseBean assigned(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  137. TaIssue taIssue = checkIssue(taIssueProcess);
  138. if (StringUtils.isEmpty(taIssueProcess.getOrgId())) {
  139. return ResponseBean.error("请指定交办单位");
  140. } else {
  141. taIssue.setOrgId(taIssueProcess.getOrgId());
  142. }
  143. if (StringUtils.isEmpty(taIssueProcess.getExpireDate())) {
  144. return ResponseBean.error("请设置截止日期");
  145. } else {
  146. if (DateUtils.isAfter(taIssueProcess.getExpireDate() + " 23:59:59")) {
  147. return ResponseBean.error("请设置有效的截止日期");
  148. }
  149. taIssue.setExpireDate(taIssueProcess.getExpireDate());
  150. }
  151. SysUser sysUser = currentUser();
  152. updateUser(taIssueProcess, sysUser);
  153. taIssueProcess.setProcessNode(Constants.PROCESS_ASSIGNED);
  154. taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY);
  155. taIssueProcessService.save(taIssueProcess);
  156. updateIssue(taIssue, taIssueProcess);
  157. taOrgIssueService.createNewIssue(taIssue, sysUser);
  158. return ResponseBean.success(taIssueProcess);
  159. }
  160. /**
  161. * 驳回
  162. *
  163. * @param taIssueProcess 实例对象
  164. * @return 实例对象
  165. */
  166. @SaCheckPermission("org_user")
  167. @ApiOperation("驳回")
  168. @PostMapping("/taIssueProcess/reject")
  169. public ResponseBean reject(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  170. TaIssue taIssue = checkIssue(taIssueProcess);
  171. if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) {
  172. return ResponseBean.error("请填写未驳回原因");
  173. }
  174. updateUser(taIssueProcess, currentUser());
  175. taIssueProcess.setProcessNode(Constants.PROCESS_START);
  176. taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_REJECT);
  177. taIssueProcessService.save(taIssueProcess);
  178. updateIssue(taIssue, taIssueProcess);
  179. // 发送消息
  180. applicationEventPublisher.publishEvent(new MessagEvent(this, taIssue));
  181. return ResponseBean.success(taIssueProcess);
  182. }
  183. /**
  184. * 单位驳回
  185. *
  186. * @param taIssueProcess 实例对象
  187. * @return 实例对象
  188. */
  189. @SaCheckPermission("org_user")
  190. @ApiOperation("单位驳回")
  191. @PostMapping("/taIssueProcess/org/reject")
  192. public ResponseBean orgReject(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  193. TaIssue taIssue = checkIssue(taIssueProcess);
  194. TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess());
  195. if (null == prevProcess) {
  196. return ResponseBean.error("未找到上级流程");
  197. }
  198. if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) {
  199. return ResponseBean.error("请填写未驳回原因");
  200. }
  201. updateUser(taIssueProcess, currentUser());
  202. taIssueProcess.setNextOrg(prevProcess.getOrgId());
  203. taIssueProcess.setProcessNode(Constants.PROCESS_ASSIGNED);
  204. taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_REJECT);
  205. taIssueProcessService.save(taIssueProcess);
  206. updateIssue(taIssue, taIssueProcess);
  207. return ResponseBean.success(taIssueProcess);
  208. }
  209. /**
  210. * 延期申请
  211. *
  212. * @param taIssueProcess 实例对象
  213. * @return 实例对象
  214. */
  215. @SaCheckPermission("org_user")
  216. @ApiOperation("延期申请")
  217. @PostMapping("/taIssueProcess/org/delay/apply")
  218. public ResponseBean delayApply(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  219. TaIssue taIssue = checkIssue(taIssueProcess);
  220. if (StringUtils.isEmpty(taIssueProcess.getExpireDate())) {
  221. return ResponseBean.error("请设置延期日期");
  222. } else {
  223. if (DateUtils.isAfter(taIssueProcess.getExpireDate() + " 23:59:59")) {
  224. return ResponseBean.error("请设置有效的延期日期");
  225. }
  226. }
  227. TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess());
  228. if (null == prevProcess) {
  229. return ResponseBean.error("未找到上级流程");
  230. }
  231. updateUser(taIssueProcess, currentUser());
  232. taIssueProcess.setNextOrg(prevProcess.getOrgId());
  233. taIssueProcess.setProcessNode(Constants.PROCESS_ORG_DELAY_APPLY);
  234. taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY);
  235. taIssueProcessService.save(taIssueProcess);
  236. updateIssue(taIssue, taIssueProcess);
  237. return ResponseBean.success(taIssueProcess);
  238. }
  239. /**
  240. * 延期审核
  241. *
  242. * @param taIssueProcess 实例对象
  243. * @return 实例对象
  244. */
  245. @SaCheckPermission("manager")
  246. @ApiOperation("延期审核")
  247. @PostMapping("/taIssueProcess/delay/verify")
  248. public ResponseBean delayVerify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  249. TaIssue taIssue = checkIssue(taIssueProcess);
  250. TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess());
  251. if (null == prevProcess) {
  252. return ResponseBean.error("未找到上级流程");
  253. }
  254. if (!Constants.PROCESS_ORG_DELAY_APPLY.equals(prevProcess.getProcessNode())) {
  255. return ResponseBean.error("上级流程验证不正确");
  256. }
  257. if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) {
  258. // 审核未通过
  259. if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) {
  260. return ResponseBean.error("请填写未通过原因");
  261. }
  262. } else {
  263. taIssue.setExpireDate(prevProcess.getExpireDate());
  264. }
  265. updateUser(taIssueProcess, currentUser());
  266. taIssueProcess.setNextOrg(prevProcess.getOrgId());
  267. taIssueProcess.setProcessNode(Constants.PROCESS_DELAY_VERIFY);
  268. taIssueProcessService.save(taIssueProcess);
  269. updateIssue(taIssue, taIssueProcess);
  270. return ResponseBean.success(taIssueProcess);
  271. }
  272. /**
  273. * 单位交办
  274. *
  275. * @param taIssueProcess 实例对象
  276. * @return 实例对象
  277. */
  278. @SaCheckPermission("org_user")
  279. @ApiOperation("单位交办")
  280. @PostMapping("/taIssueProcess/org/assigned")
  281. public ResponseBean orgAssigned(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  282. TaIssue taIssue = checkIssue(taIssueProcess);
  283. updateUser(taIssueProcess, currentUser());
  284. taIssueProcess.setProcessNode(Constants.PROCESS_ORG_ASSIGNED);
  285. taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY);
  286. taIssueProcessService.save(taIssueProcess);
  287. updateIssue(taIssue, taIssueProcess);
  288. return ResponseBean.success(taIssueProcess);
  289. }
  290. /**
  291. * 单位审核
  292. *
  293. * @param taIssueProcess 实例对象
  294. * @return 实例对象
  295. */
  296. @SaCheckPermission("org_manager")
  297. @ApiOperation("单位审核")
  298. @PostMapping("/taIssueProcess/org/verify")
  299. public ResponseBean orgVerify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  300. TaIssue taIssue = checkIssue(taIssueProcess);
  301. if (StringUtils.isEmpty(taIssueProcess.getProcessStatus())) {
  302. return ResponseBean.error("请设置审批是否通过");
  303. }
  304. if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) {
  305. // 审核未通过
  306. if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) {
  307. return ResponseBean.error("请填写未通过原因");
  308. }
  309. }
  310. updateUser(taIssueProcess, currentUser());
  311. taIssueProcess.setProcessNode(Constants.PROCESS_ORG_VERIFY);
  312. taIssueProcessService.save(taIssueProcess);
  313. updateIssue(taIssue, taIssueProcess);
  314. return ResponseBean.success(taIssueProcess);
  315. }
  316. /**
  317. * 办结申请
  318. *
  319. * @param taIssueProcess 实例对象
  320. * @return 实例对象
  321. */
  322. @SaCheckPermission("org_user")
  323. @ApiOperation("办结申请")
  324. @PostMapping("/taIssueProcess/org/finish/apply")
  325. public ResponseBean finishApply(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  326. TaIssue taIssue = checkIssue(taIssueProcess);
  327. updateUser(taIssueProcess, currentUser());
  328. taIssueProcess.setNextOrg(Constants.ROOT_ORG);
  329. taIssueProcess.setProcessNode(Constants.PROCESS_ORG_FINISH_APPLY);
  330. taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY);
  331. taIssueProcessService.save(taIssueProcess);
  332. updateIssue(taIssue, taIssueProcess);
  333. return ResponseBean.success(taIssueProcess);
  334. }
  335. /**
  336. * 办结审核
  337. *
  338. * @param taIssueProcess 实例对象
  339. * @return 实例对象
  340. */
  341. @SaCheckPermission("manager")
  342. @ApiOperation("办结审核")
  343. @PostMapping("/taIssueProcess/finish/verify")
  344. public ResponseBean finishVerify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception {
  345. TaIssue taIssue = checkIssue(taIssueProcess);
  346. TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess());
  347. if (null == prevProcess) {
  348. return ResponseBean.error("未找到上级流程");
  349. }
  350. if (!Constants.PROCESS_ORG_FINISH_APPLY.equals(prevProcess.getProcessNode())) {
  351. return ResponseBean.error("上级流程验证不正确");
  352. }
  353. if (StringUtils.isEmpty(taIssueProcess.getProcessStatus())) {
  354. return ResponseBean.error("请设置审批是否通过");
  355. }
  356. if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) {
  357. // 审核未通过
  358. if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) {
  359. return ResponseBean.error("请填写未通过原因");
  360. }
  361. taIssueProcess.setNextOrg(prevProcess.getOrgId());
  362. taIssueProcess.setProcessNode(Constants.PROCESS_FINISH_VERIFY);
  363. } else {
  364. // 审核通过, 说明整个流程结束
  365. taIssue.setProcessNode(Constants.PROCESS_END);
  366. taIssue.setProcessStatus(Constants.PROCESS_STATUS_PASS);
  367. }
  368. updateUser(taIssueProcess, currentUser());
  369. taIssueProcessService.save(taIssueProcess);
  370. taIssue.setOrgId(taIssueProcess.getOrgId());
  371. taIssueService.updateById(taIssue);
  372. return ResponseBean.success(taIssueProcess);
  373. }
  374. /**
  375. * 通过主键删除数据
  376. *
  377. * @param processId 主键
  378. * @return 是否成功
  379. */
  380. @ApiOperation("通过主键删除数据")
  381. @DeleteMapping("/taIssueProcess/{id}")
  382. public ResponseBean deleteById(@ApiParam("对象ID") @PathVariable Integer id) {
  383. taIssueProcessService.removeLogicById(id);
  384. return ResponseBean.success("success");
  385. }
  386. }