123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- package com.qmth.distributed.print.api;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.qmth.boot.api.annotation.Aac;
- import com.qmth.boot.api.annotation.BOOL;
- import com.qmth.boot.api.constant.ApiConstant;
- import com.qmth.boot.api.exception.ApiException;
- import com.qmth.distributed.print.business.bean.result.EditResult;
- import com.qmth.distributed.print.business.entity.TFFlow;
- import com.qmth.distributed.print.business.service.ActivitiService;
- import com.qmth.distributed.print.business.service.PrintCommonService;
- import com.qmth.distributed.print.business.service.TFFlowService;
- import com.qmth.teachcloud.common.base.BaseListPage;
- import com.qmth.teachcloud.common.base.BasePage;
- import com.qmth.teachcloud.common.contant.SystemConstant;
- import com.qmth.teachcloud.common.entity.BasicAttachment;
- import com.qmth.teachcloud.common.entity.SysUser;
- import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
- import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
- import com.qmth.teachcloud.common.enums.UploadFileEnum;
- import com.qmth.teachcloud.common.service.BasicAttachmentService;
- import com.qmth.teachcloud.common.util.Result;
- import com.qmth.teachcloud.common.util.ResultUtil;
- import com.qmth.teachcloud.common.util.ServletUtil;
- import io.swagger.annotations.*;
- import org.activiti.engine.RuntimeService;
- import org.activiti.engine.TaskService;
- import org.activiti.engine.task.Task;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.dao.DuplicateKeyException;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Objects;
- /**
- * <p>
- * 流程表 前端控制器
- * </p>
- *
- * @author wangliang
- * @since 2021-08-02
- */
- @Api(tags = "流程Controller")
- @RestController
- @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.flow}")
- @Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
- public class TFFlowController {
- private final static Logger log = LoggerFactory.getLogger(TFFlowController.class);
- @Resource
- PrintCommonService printCommonService;
- @Resource
- BasicAttachmentService basicAttachmentService;
- @Resource
- ActivitiService activitiService;
- @Resource
- TFFlowService tfFlowService;
- @Resource
- RuntimeService runtimeService;
- @Resource
- TaskService taskService;
- @ApiOperation(value = "注册流程")
- @Transactional
- @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = ResultUtil.class)})
- @RequestMapping(value = "/register", method = RequestMethod.POST)
- public Result register(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
- @ApiParam(value = "上传文件类型", required = true) @RequestParam UploadFileEnum type,
- @ApiParam(value = "流程文件名称", required = false) @RequestParam(required = false) String name,
- @ApiParam(value = "流程是否发布,true:发布,false:不发布", required = false) @RequestParam(required = false) Boolean publish) {
- BasicAttachment basicAttachment = null;
- try {
- int temp = file.getOriginalFilename().lastIndexOf(".");
- String fileName = file.getOriginalFilename().substring(0, temp);
- String format = file.getOriginalFilename().substring(temp, file.getOriginalFilename().length());
- if (!format.equalsIgnoreCase(".bpmn") && !format.contains("bpmn20.xml")) {
- throw ExceptionResultEnum.ERROR.exception("上传的流程文件格式只能为.bmpn或bpmn20.xml");
- }
- basicAttachment = printCommonService.saveAttachment(file, ServletUtil.getRequestMd5(), type);
- if (Objects.isNull(basicAttachment)) {
- throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
- }
- activitiService.uploadDeployment(file);
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
- Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) && !Objects.equals("", ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : sysUser.getSchoolId();
- TFFlow tfFlow = new TFFlow(schoolId, sysUser.getOrgId(), Objects.isNull(name) ? fileName : name, publish, sysUser.getId());
- tfFlowService.save(tfFlow);
- } catch (Exception e) {
- log.error("请求出错", e);
- if (Objects.nonNull(basicAttachment)) {
- basicAttachmentService.deleteAttachment(basicAttachment);
- }
- if (e instanceof DuplicateKeyException) {
- String errorColumn = e.getCause().toString();
- String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
- throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
- } else if (e instanceof ApiException) {
- ResultUtil.error((ApiException) e, e.getMessage());
- } else {
- ResultUtil.error(e.getMessage());
- }
- }
- return ResultUtil.ok(new EditResult(basicAttachment.getId()));
- }
- @ApiOperation(value = "发布流程")
- @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = ResultUtil.class)})
- @RequestMapping(value = "/publish", method = RequestMethod.POST)
- public Result publish(@ApiParam(value = "流程文件id", required = true) @RequestParam String id) {
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
- UpdateWrapper<TFFlow> tfFlowUpdateWrapper = new UpdateWrapper<>();
- tfFlowUpdateWrapper.lambda().eq(TFFlow::getId, id)
- .set(TFFlow::getPublish, true)
- .set(TFFlow::getUpdateId, sysUser.getId())
- .set(TFFlow::getUpdateTime, System.currentTimeMillis());
- return ResultUtil.ok(tfFlowService.update(tfFlowUpdateWrapper));
- }
- @ApiOperation(value = "流程列表")
- @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = TFFlow.class)})
- @RequestMapping(value = "/list", method = RequestMethod.POST)
- public Result list(@ApiParam(value = "流程名称", required = false) @RequestParam(required = false) String name,
- @ApiParam(value = "页码", required = true) @RequestParam Integer pageNumber,
- @ApiParam(value = "数量", required = true) @RequestParam Integer pageSize) {
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
- Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) && !Objects.equals("", ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : sysUser.getSchoolId();
- return ResultUtil.ok(tfFlowService.list(new Page<>(pageNumber, pageSize), name, schoolId, sysUser.getOrgId()));
- }
- @ApiOperation(value = "启动流程")
- @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = ResultUtil.class)})
- @RequestMapping(value = "/start", method = RequestMethod.POST)
- public Result start() {
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
- Map<String, Object> map = new HashMap<>();
- map.computeIfAbsent(SystemConstant.TEACH_ID, v -> String.valueOf(sysUser.getId()));
- activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
- return ResultUtil.ok();
- }
- @ApiOperation(value = "命题老师获取待办流程")
- @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = ResultUtil.class)})
- @RequestMapping(value = "teach/task/list", method = RequestMethod.POST)
- public Result teachTaskList(@ApiParam(value = "页码", required = true) @RequestParam Integer pageNumber,
- @ApiParam(value = "数量", required = true) @RequestParam Integer pageSize) {
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
- List<Task> taskList = taskService.createTaskQuery().taskAssignee(String.valueOf(sysUser.getId())).orderByTaskCreateTime().desc().list();
- // BaseListPage<Task> taskIPage = new BaseListPage<>(tasks.subList(pageNumber, pageSize), pageNumber, pageSize, tasks.size());
- return ResultUtil.ok(true);
- }
- }
|