package com.example.civilizedcity.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.civilizedcity.common.*; import java.time.LocalDateTime; import java.util.List; import com.example.civilizedcity.entity.SysUser; import com.example.civilizedcity.entity.TaIssue; import com.example.civilizedcity.event.MessagEvent; import com.example.civilizedcity.service.TaIssueService; import com.example.civilizedcity.service.TaOrgIssueService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.bind.annotation.*; import com.example.civilizedcity.entity.TaIssueProcess; import com.example.civilizedcity.service.TaIssueProcessService; /** * 问题处理;(ta_issue_process)表控制层 * * @author : http://njyunzhi.com * @date : 2022-12-12 */ @Api(tags = "问题处理对象功能接口") @RestController @RequestMapping("/") public class TaIssueProcessController extends BaseController { @Autowired private TaIssueProcessService taIssueProcessService; @Autowired private TaIssueService taIssueService; @Autowired private TaOrgIssueService taOrgIssueService; @Autowired ApplicationEventPublisher applicationEventPublisher; /** * 通过ID查询单条数据 * * @param processId 主键 * @return 实例对象 */ @ApiOperation("通过ID查询单条数据") @GetMapping("/taIssueProcess/{id}") public ResponseBean queryById(@ApiParam("对象ID") @PathVariable Integer id) throws Exception { return ResponseBean.success(taIssueProcessService.getById(id)); } /** * 分页查询 * * @param pageNum 当前页码 * @param pageSize 每页条数 * @return 查询结果 */ @ApiOperation("分页查询") @GetMapping("/taIssueProcess") public ResponseBean list(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @ApiParam("问题单ID") @RequestParam(value = "issueId") Integer issueId) throws Exception { IPage<TaIssueProcess> pg = new Page<>(pageNum, pageSize); QueryWrapper<TaIssueProcess> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("issue_id", issueId); queryWrapper.gt("status", Constants.STATUS_DELETE); queryWrapper.orderByDesc("create_date"); IPage<TaIssueProcess> result = taIssueProcessService.page(pg, queryWrapper); return ResponseBean.success(result); } private TaIssue checkIssue(TaIssueProcess taIssueProcess) throws Exception { if (null == taIssueProcess.getIssueId()) { throw new Exception("找不到对应问题"); } TaIssue taIssue = taIssueService.getById(taIssueProcess.getIssueId()); if (null == taIssue || taIssue.getStatus() == Constants.STATUS_DELETE) { throw new Exception("找不到对应问题"); } if (Constants.PROCESS_END.equals(taIssue.getProcessNode())) { throw new Exception("当前问题已办结"); } return taIssue; } private void updateUser(TaIssueProcess taIssueProcess, SysUser sysUser) { taIssueProcess.setOrgId(sysUser.getOrgId()); taIssueProcess.setCreateUser(sysUser.getUserId()); taIssueProcess.setUserName(sysUser.getName()); taIssueProcess.setStatus(Constants.STATUS_NORMAL); taIssueProcess.setCreateDate(LocalDateTime.now()); } private void updateIssue(TaIssue taIssue, TaIssueProcess taIssueProcess) { taIssue.setProcessNode(taIssueProcess.getProcessNode()); taIssue.setProcessStatus(taIssueProcess.getProcessStatus()); taIssueService.updateById(taIssue); } // /** // * 审核 // * // * @param taIssueProcess 实例对象 // * @return 实例对象 // */ // @SaCheckPermission("manager") // @ApiOperation("审核") // @PostMapping("/taIssueProcess/verify") // public ResponseBean verify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { // TaIssue taIssue = checkIssue(taIssueProcess); // // if (StringUtils.isEmpty(taIssueProcess.getProcessStatus())) { // return ResponseBean.error("请设置审批是否通过"); // } // // if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) { // // 审核未通过 // if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) { // return ResponseBean.error("请填写未通过原因"); // } // } // // updateUser(taIssueProcess, currentUser()); // taIssueProcess.setProcessNode(Constants.PROCESS_VERIFY); // taIssueProcessService.save(taIssueProcess); // // updateIssue(taIssue, taIssueProcess); // // return ResponseBean.success(taIssueProcess); // } /** * 交办 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("manager") @ApiOperation("交办") @PostMapping("/taIssueProcess/assigned") public ResponseBean assigned(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); if (StringUtils.isEmpty(taIssueProcess.getOrgId())) { return ResponseBean.error("请指定交办单位"); } else { taIssue.setOrgId(taIssueProcess.getOrgId()); } if (StringUtils.isEmpty(taIssueProcess.getExpireDate())) { return ResponseBean.error("请设置截止日期"); } else { if (DateUtils.isAfter(taIssueProcess.getExpireDate() + " 23:59:59")) { return ResponseBean.error("请设置有效的截止日期"); } taIssue.setExpireDate(taIssueProcess.getExpireDate()); } SysUser sysUser = currentUser(); updateUser(taIssueProcess, sysUser); taIssueProcess.setProcessNode(Constants.PROCESS_ASSIGNED); taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); taOrgIssueService.createNewIssue(taIssue, sysUser); return ResponseBean.success(taIssueProcess); } /** * 驳回 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("org_user") @ApiOperation("驳回") @PostMapping("/taIssueProcess/reject") public ResponseBean reject(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) { return ResponseBean.error("请填写未驳回原因"); } updateUser(taIssueProcess, currentUser()); taIssueProcess.setProcessNode(Constants.PROCESS_START); taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_REJECT); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); // 发送消息 applicationEventPublisher.publishEvent(new MessagEvent(this, taIssue)); return ResponseBean.success(taIssueProcess); } /** * 单位驳回 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("org_user") @ApiOperation("单位驳回") @PostMapping("/taIssueProcess/org/reject") public ResponseBean orgReject(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess()); if (null == prevProcess) { return ResponseBean.error("未找到上级流程"); } if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) { return ResponseBean.error("请填写未驳回原因"); } updateUser(taIssueProcess, currentUser()); taIssueProcess.setNextOrg(prevProcess.getOrgId()); taIssueProcess.setProcessNode(Constants.PROCESS_ASSIGNED); taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_REJECT); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); return ResponseBean.success(taIssueProcess); } /** * 延期申请 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("org_user") @ApiOperation("延期申请") @PostMapping("/taIssueProcess/org/delay/apply") public ResponseBean delayApply(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); if (StringUtils.isEmpty(taIssueProcess.getExpireDate())) { return ResponseBean.error("请设置延期日期"); } else { if (DateUtils.isAfter(taIssueProcess.getExpireDate() + " 23:59:59")) { return ResponseBean.error("请设置有效的延期日期"); } } TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess()); if (null == prevProcess) { return ResponseBean.error("未找到上级流程"); } updateUser(taIssueProcess, currentUser()); taIssueProcess.setNextOrg(prevProcess.getOrgId()); taIssueProcess.setProcessNode(Constants.PROCESS_ORG_DELAY_APPLY); taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); return ResponseBean.success(taIssueProcess); } /** * 延期审核 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("manager") @ApiOperation("延期审核") @PostMapping("/taIssueProcess/delay/verify") public ResponseBean delayVerify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess()); if (null == prevProcess) { return ResponseBean.error("未找到上级流程"); } if (!Constants.PROCESS_ORG_DELAY_APPLY.equals(prevProcess.getProcessNode())) { return ResponseBean.error("上级流程验证不正确"); } if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) { // 审核未通过 if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) { return ResponseBean.error("请填写未通过原因"); } } else { taIssue.setExpireDate(prevProcess.getExpireDate()); } updateUser(taIssueProcess, currentUser()); taIssueProcess.setNextOrg(prevProcess.getOrgId()); taIssueProcess.setProcessNode(Constants.PROCESS_DELAY_VERIFY); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); return ResponseBean.success(taIssueProcess); } /** * 单位交办 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("org_user") @ApiOperation("单位交办") @PostMapping("/taIssueProcess/org/assigned") public ResponseBean orgAssigned(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); updateUser(taIssueProcess, currentUser()); taIssueProcess.setProcessNode(Constants.PROCESS_ORG_ASSIGNED); taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); return ResponseBean.success(taIssueProcess); } /** * 单位审核 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("org_manager") @ApiOperation("单位审核") @PostMapping("/taIssueProcess/org/verify") public ResponseBean orgVerify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); if (StringUtils.isEmpty(taIssueProcess.getProcessStatus())) { return ResponseBean.error("请设置审批是否通过"); } if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) { // 审核未通过 if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) { return ResponseBean.error("请填写未通过原因"); } } updateUser(taIssueProcess, currentUser()); taIssueProcess.setProcessNode(Constants.PROCESS_ORG_VERIFY); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); return ResponseBean.success(taIssueProcess); } /** * 办结申请 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("org_user") @ApiOperation("办结申请") @PostMapping("/taIssueProcess/org/finish/apply") public ResponseBean finishApply(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); updateUser(taIssueProcess, currentUser()); taIssueProcess.setNextOrg(Constants.ROOT_ORG); taIssueProcess.setProcessNode(Constants.PROCESS_ORG_FINISH_APPLY); taIssueProcess.setProcessStatus(Constants.PROCESS_STATUS_READY); taIssueProcessService.save(taIssueProcess); updateIssue(taIssue, taIssueProcess); return ResponseBean.success(taIssueProcess); } /** * 办结审核 * * @param taIssueProcess 实例对象 * @return 实例对象 */ @SaCheckPermission("manager") @ApiOperation("办结审核") @PostMapping("/taIssueProcess/finish/verify") public ResponseBean finishVerify(@ApiParam("对象实体") @RequestBody TaIssueProcess taIssueProcess) throws Exception { TaIssue taIssue = checkIssue(taIssueProcess); TaIssueProcess prevProcess = taIssueProcessService.getById(taIssueProcess.getPrevProcess()); if (null == prevProcess) { return ResponseBean.error("未找到上级流程"); } if (!Constants.PROCESS_ORG_FINISH_APPLY.equals(prevProcess.getProcessNode())) { return ResponseBean.error("上级流程验证不正确"); } if (StringUtils.isEmpty(taIssueProcess.getProcessStatus())) { return ResponseBean.error("请设置审批是否通过"); } if (Constants.PROCESS_STATUS_REJECT.equals(taIssueProcess.getProcessStatus())) { // 审核未通过 if (StringUtils.isEmpty(taIssueProcess.getProcessResult())) { return ResponseBean.error("请填写未通过原因"); } taIssueProcess.setNextOrg(prevProcess.getOrgId()); taIssueProcess.setProcessNode(Constants.PROCESS_FINISH_VERIFY); } else { // 审核通过, 说明整个流程结束 taIssue.setProcessNode(Constants.PROCESS_END); taIssue.setProcessStatus(Constants.PROCESS_STATUS_PASS); } updateUser(taIssueProcess, currentUser()); taIssueProcessService.save(taIssueProcess); taIssue.setOrgId(taIssueProcess.getOrgId()); taIssueService.updateById(taIssue); return ResponseBean.success(taIssueProcess); } /** * 通过主键删除数据 * * @param processId 主键 * @return 是否成功 */ @ApiOperation("通过主键删除数据") @DeleteMapping("/taIssueProcess/{id}") public ResponseBean deleteById(@ApiParam("对象ID") @PathVariable Integer id) { taIssueProcessService.removeLogicById(id); return ResponseBean.success("success"); } }