From fbbff171146b3566f52c512c093375a0ec115dcd Mon Sep 17 00:00:00 2001 From: sunchenliang <2532527871@qq.com> Date: Thu, 28 Mar 2024 20:45:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=B9=E9=87=8F=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlowTaskController.java | 326 +++++++++--------- .../cn/jyjz/flowable/entity/FlowApprove.java | 46 +++ .../cn/jyjz/flowable/entity/FlowTaskInfo.java | 25 ++ .../flowable/service/IFlowTaskService.java | 3 +- .../service/impl/FlowTaskServiceImpl.java | 184 +++++----- .../oa/from/service/UserapproveService.java | 7 +- .../service/impl/UserapproveServiceImpl.java | 12 +- .../jyjz/xiaoyao/ocr/dto/ApproveNodeDto.java | 59 ++++ .../jyjz/xiaoyao/ocr/dto/FlowResultDto.java | 75 ++++ .../cn/jyjz/xiaoyao/ocr/dto/ReuseImgDto.java | 25 ++ .../service/OcrTaskchildPictureService.java | 6 +- .../impl/OcrTaskchildPictureServiceImpl.java | 16 +- 12 files changed, 515 insertions(+), 269 deletions(-) create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowApprove.java create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowTaskInfo.java create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dto/ApproveNodeDto.java create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dto/FlowResultDto.java create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dto/ReuseImgDto.java diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java index 3441cfa0..d2674ad2 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java @@ -3,6 +3,8 @@ package cn.jyjz.flowable.controller; import cn.jyjz.flowable.common.SystemConstantsOa; import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto; import cn.jyjz.flowable.domain.vo.FlowTaskVO; +import cn.jyjz.flowable.entity.FlowApprove; +import cn.jyjz.flowable.entity.FlowTaskInfo; import cn.jyjz.flowable.service.IFlowTaskService; import cn.jyjz.flowable.utils.PageUtils; import cn.jyjz.flowable.utils.SysConstant; @@ -33,6 +35,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.*; +import org.apache.commons.collections4.CollectionUtils; import org.flowable.ui.common.model.RemoteUser; import org.flowable.ui.common.service.idm.RemoteIdmService; import org.springframework.beans.factory.annotation.Autowired; @@ -50,7 +53,7 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -@Api(tags="ocr_流程接口") +@Api(tags = "ocr_流程接口") @RestController @RequestMapping("/flow/task") public class FlowTaskController extends BaseController { @@ -87,13 +90,14 @@ public class FlowTaskController extends BaseController { /** * 查看过程流程图 + * * @param processId * @return * @throws Exception */ - @GetMapping(value = "/flowImg",produces = MediaType.IMAGE_PNG_VALUE) + @GetMapping(value = "/flowImg", produces = MediaType.IMAGE_PNG_VALUE) @ResponseBody - public byte[] flowImg(@RequestParam("processId") String processId) throws Exception{ + public byte[] flowImg(@RequestParam("processId") String processId) throws Exception { InputStream diagram = flowTaskService.diagram(processId); byte[] bytes = new byte[diagram.available()]; diagram.read(bytes); @@ -102,14 +106,15 @@ public class FlowTaskController extends BaseController { /** * 查看已办流程图 + * * @param processId * @return * @throws Exception */ - @GetMapping(value = "/myFlowImg",produces = MediaType.IMAGE_PNG_VALUE) + @GetMapping(value = "/myFlowImg", produces = MediaType.IMAGE_PNG_VALUE) @ResponseBody - public byte[] myFlowImg(@RequestParam("processId") String processId, HttpServletRequest request) throws Exception{ - InputStream diagram = flowTaskService.myDiagram(processId,request); + public byte[] myFlowImg(@RequestParam("processId") String processId, HttpServletRequest request) throws Exception { + InputStream diagram = flowTaskService.myDiagram(processId, request); byte[] bytes = new byte[diagram.available()]; diagram.read(bytes); return bytes; @@ -117,15 +122,16 @@ public class FlowTaskController extends BaseController { /** * 查看表单主键 + * * @return */ @PostMapping("/viewFormid") @ResponseBody - public ResultVo viewFormid(@RequestParam("processId") String processId, HttpServletRequest request){ + public ResultVo viewFormid(@RequestParam("processId") String processId, HttpServletRequest request) { //查询业务主键 - Category category = flowTaskService.viewForm(processId,request); - if(null != category){ + Category category = flowTaskService.viewForm(processId, request); + if (null != category) { return ResultVoUtil.success(category); } return ResultVoUtil.error(); @@ -133,125 +139,92 @@ public class FlowTaskController extends BaseController { /** * 完成任务 + * * @return */ - @ApiOperation(value="任务审批", notes="任务审批") + @ApiOperation(value = "任务审批", notes = "任务审批") @PostMapping("/completeFlow") @ResponseBody - public ResultVo complete(FlowTaskVO taskVO,HttpServletRequest request){ - Boolean flag = flowTaskService.complete(taskVO,request); - return flag?ResultVoUtil.success():ResultVoUtil.error(); + public ResultVo complete(@RequestBody FlowApprove approve, HttpServletRequest request) { + UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); + Boolean flag = flowTaskService.complete(approve, userToken); + return flag ? ResultVoUtil.success() : ResultVoUtil.error(); } /** * 批量任务审批 + * * @return */ - @ApiOperation(value="任务审批", notes="任务审批") + @ApiOperation(value = "任务审批", notes = "任务审批") @PostMapping("/completeBatchFlow") @ResponseBody - public ResultVo completeBatch(HttpServletRequest request){ - + public ResultVo completeBatch(@RequestBody FlowApprove approve, HttpServletRequest request) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); - //任务ID - String[] taskId = request.getParameterValues("taskId"); - //审批的任务主键 - String[] formid = request.getParameterValues("formid"); - - String[] taskname = request.getParameterValues("taskname"); - - //是否同意,true:同意,false:拒绝 - boolean approvd = Boolean.valueOf(request.getParameter("approvd")); - - //审批意见") - String taskComment = request.getParameter("taskComment"); - //判断当前任务审批人是否一致 - if(!this.ocrTaskchildPictureService.validateAssignee(formid,userToken)){ - return ResultVoUtil.error("审批人不一致,请到任务审批中处理。"); - } - - //TODO 判断当前任务是否审批完毕 - if(!this.ocrTaskchildPictureService.validateApprove(formid)){ - return ResultVoUtil.error("存在已经审批的任务。"); - } - - //TODO 判断taskid是否为非法,空置、taskid是否存在 - - //判断当前任务是否存在历史任务--暂时不做,生成任务时直接保存历史任务的审批工具中 - - StringBuffer smg = new StringBuffer(); - for(int i = 0;i < taskId.length;i++){ - String ti = taskId[i]; - String fi = formid[i]; - FlowTaskVO taskVO = new FlowTaskVO(); - taskVO.setTaskId(ti); - taskVO.setFormid(fi); - taskVO.setApprovd(approvd); - taskVO.setTaskComment(taskComment); - - Boolean flag = flowTaskService.complete(taskVO,request); - - if(!flag){ - if(StringUtils.isNotBlank(smg.toString())){ - smg.append(","); - smg.append(taskname[i]); - smg.append("审批失败"); - }else{ - smg.append(taskname[i]); - smg.append("审批失败"); - } - + List flowTaskInfoList = approve.getFlowTaskInfoList(); + if (CollectionUtils.isNotEmpty(flowTaskInfoList)) { + List formIdList = flowTaskInfoList.stream().map(FlowTaskInfo::getFormId).collect(Collectors.toList()); + //判断当前任务审批人是否一致 + if (!this.ocrTaskchildPictureService.validateAssignee(formIdList, userToken)) { + return ResultVoUtil.error("审批人不一致,请到任务审批中处理。"); } + // 判断当前任务是否审批完毕 + if (!this.ocrTaskchildPictureService.validateApprove(formIdList)) { + return ResultVoUtil.error("存在已经审批的任务。"); + } + Boolean flag = flowTaskService.complete(approve, userToken); + return flag ? ResultVoUtil.success("审批成功!") : ResultVoUtil.error("审批失败!"); } - - - - return (StringUtils.isNotBlank(smg.toString()))?ResultVoUtil.error(smg.toString()):ResultVoUtil.success(); + return ResultVoUtil.error("审批信息为空!"); } @GetMapping("/listhistore") @ResponseBody - public ResultVo listhistore(PageUtils vo, Model model, HttpServletRequest request){ + public ResultVo listhistore(PageUtils vo, Model model, HttpServletRequest request) { String processInstanceId = request.getParameter("processInstanceId"); - List list = flowTaskService.listHistoriceTask(processInstanceId); + List list = flowTaskService.listHistoriceTask(processInstanceId); return ResultVoUtil.success(list); } + /** * 我的已办 - * 查询我发起的已经完成的任务 + * 查询我发起的已经完成的任务 + * * @return */ @GetMapping("/finishedList") @ResponseBody - public ResultVo getFinishedList(PageUtils pageUtils, HttpServletRequest request){ + public ResultVo getFinishedList(PageUtils pageUtils, HttpServletRequest request) { - SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request,"search_"); + SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_"); User user = this.userService.getSessionUser(request); - if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ - flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); - }else{ - searchQuery.addEqual("approveUserid",user.getId().toString()); + if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { + flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils); + } else { + searchQuery.addEqual("approveUserid", user.getId().toString()); - flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); + flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils); } return ResultVoUtil.success(pageUtils); } + /** * 我的发起 - * 查询我发起的已经完成的任务 + * 查询我发起的已经完成的任务 + * * @return */ - @ApiOperation(value="待办任务", notes="待办任务") + @ApiOperation(value = "待办任务", notes = "待办任务") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), }) @GetMapping("/listdata") @ResponseBody - public ResultVo listdata(PageUtils pageUtils, HttpServletRequest request){ - SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request,"search_"); + public ResultVo listdata(PageUtils pageUtils, HttpServletRequest request) { + SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_"); //租户主键,由前端页面传送 String tenantId = request.getHeader("X-Tenant-Id"); @@ -262,52 +235,52 @@ public class FlowTaskController extends BaseController { String fromuserid = request.getParameter("fromuserid"); String fromplanid = request.getParameter("fromplanid"); - if(org.apache.commons.lang3.StringUtils.isBlank(tenantId)){ + if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) { return ResultVoUtil.error("租户主键不能为空"); } - if(StringUtils.isNotBlank(taskid)){ - searchQuery.addEqual("taskid",taskid); + if (StringUtils.isNotBlank(taskid)) { + searchQuery.addEqual("taskid", taskid); } - if(StringUtils.isNotBlank(taskname)){ - searchQuery.addLike("taskname",taskname); + if (StringUtils.isNotBlank(taskname)) { + searchQuery.addLike("taskname", taskname); } - if(StringUtils.isNotBlank(states)){ - searchQuery.addEqual("states",states); + if (StringUtils.isNotBlank(states)) { + searchQuery.addEqual("states", states); } - if(StringUtils.isNotBlank(fromprojectid)){ - searchQuery.addEqual("fromprojectid",fromprojectid); + if (StringUtils.isNotBlank(fromprojectid)) { + searchQuery.addEqual("fromprojectid", fromprojectid); } - if(StringUtils.isNotBlank(fromuserid)){ - searchQuery.addEqual("fromuserid",fromuserid); + if (StringUtils.isNotBlank(fromuserid)) { + searchQuery.addEqual("fromuserid", fromuserid); } - if(StringUtils.isNotBlank(fromplanid)){ - searchQuery.addEqual("fromplanid",fromplanid); + if (StringUtils.isNotBlank(fromplanid)) { + searchQuery.addEqual("fromplanid", fromplanid); } User user = this.userService.getSessionUser(request); // List userApprove = userapproveService.list(new LambdaQueryWrapper().eq(Userapprove::getUserid, user.getId())); // List collect = userApprove.stream().map(Userapprove::getFormid).map(Object::toString).collect(Collectors.toList()); // searchQuery.addIn("formid",collect); - if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ + if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { - flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); - }else{ + flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils); + } else { String assigneeId = request.getParameter("assigneeId"); //如果assigneeId 为空查询发起流程,否则查询待办流程 - if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ - searchQuery.addEqual("assignee",user.getLoginname()); - searchQuery.addEqual("states",SystemConstantsOa.OA_STATUS_TYPE_ING.toString()); - }else{ - searchQuery.addEqual("createuser",user.getLoginname()); + if (StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())) { + searchQuery.addEqual("assignee", user.getLoginname()); + searchQuery.addEqual("states", SystemConstantsOa.OA_STATUS_TYPE_ING.toString()); + } else { + searchQuery.addEqual("createuser", user.getLoginname()); } - searchQuery.addEqual("tenantid",tenantId); - flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); + searchQuery.addEqual("tenantid", tenantId); + flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils); //待办信息,增加是否查看标记 - if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ + if (StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())) { List list = pageUtils.getList(); - if(null != list && !list.isEmpty()){ + if (null != list && !list.isEmpty()) { int count = list.size(); - for(int i = 0;i < count;i++){ + for (int i = 0; i < count; i++) { FlowUnionVo flowUnionVo = (FlowUnionVo) list.get(i); //flowUnionVo.setView(userViewApproeService.haveByFromid(flowUnionVo.getFormid().toString())); } @@ -318,34 +291,36 @@ public class FlowTaskController extends BaseController { } return ResultVoUtil.success(pageUtils); } + /** * 我的任务 - * 查询我的待办、已经办理任务 + * 查询我的待办、已经办理任务 + * * @return */ - @ApiOperation(value="我的任务", notes="查询我的待办、已经办理任务") + @ApiOperation(value = "我的任务", notes = "查询我的待办、已经办理任务") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), }) @GetMapping("/listalldata") @ResponseBody - public ResultVo listAlldata(PageUtils pageUtils, HttpServletRequest request){ - SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request,"search_"); + public ResultVo listAlldata(PageUtils pageUtils, HttpServletRequest request) { + SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_"); //租户主键,由前端页面传送 String tenantId = request.getHeader("X-Tenant-Id"); - if(org.apache.commons.lang3.StringUtils.isBlank(tenantId)){ + if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) { return ResultVoUtil.error("租户主键不能为空"); } User user = this.userService.getSessionUser(request); - if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ + if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { - flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); - }else{ + flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils); + } else { - flowTaskService.getMyProcessInstances(user,tenantId,searchQuery.getQuery(),pageUtils); + flowTaskService.getMyProcessInstances(user, tenantId, searchQuery.getQuery(), pageUtils); //待办信息,增加是否查看标记 // if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ @@ -368,24 +343,25 @@ public class FlowTaskController extends BaseController { /** * 终审列表 + * * @return */ - @ApiOperation(value="我的终审列表", notes="我的终审列表") + @ApiOperation(value = "我的终审列表", notes = "我的终审列表") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), }) @GetMapping("/listfinal") @ResponseBody public ResultVo listFinalData(PageUtils pageUtils, - @RequestParam(name="izupuser", defaultValue="",required = false) String izupuser, - @RequestParam(name="izproject", defaultValue="",required = false) String izproject, - @RequestParam(name="izplan", defaultValue="",required = false) String izplan, - @RequestParam(name="izstatus", defaultValue="",required = false) String izstatus, - @RequestParam(name="iztaskrrom", defaultValue="",required = false) String iztaskrrom, - @RequestParam(name="izuptime", defaultValue="",required = false) String izuptime, - HttpServletRequest request){ + @RequestParam(name = "izupuser", defaultValue = "", required = false) String izupuser, + @RequestParam(name = "izproject", defaultValue = "", required = false) String izproject, + @RequestParam(name = "izplan", defaultValue = "", required = false) String izplan, + @RequestParam(name = "izstatus", defaultValue = "", required = false) String izstatus, + @RequestParam(name = "iztaskrrom", defaultValue = "", required = false) String iztaskrrom, + @RequestParam(name = "izuptime", defaultValue = "", required = false) String izuptime, + HttpServletRequest request) { SearchQuery searchQuery = new SearchQuery(); - if(org.springframework.util.StringUtils.hasText(izupuser)){ + if (org.springframework.util.StringUtils.hasText(izupuser)) { // searchQuery.addEqual("fromuserid",izupuser); if (izupuser.contains(",")) { String[] userIds = izupuser.split(","); @@ -435,7 +411,7 @@ public class FlowTaskController extends BaseController { searchQuery.addEqual("fromsourceid", iztaskrrom); } } - if(org.springframework.util.StringUtils.hasText(izuptime)) { + if (org.springframework.util.StringUtils.hasText(izuptime)) { String[] dateRange = izuptime.split("-"); if (dateRange.length == 2) { try { @@ -448,12 +424,12 @@ public class FlowTaskController extends BaseController { Long endTimeStamp = sdfInput.parse(dateRange[1].trim()).getTime(); // 如果开始时间不为空,则将其放入查询条件中 - if (startTimeStamp!=null) { - searchQuery.addGreater("createdateStart",startTimeStamp); + if (startTimeStamp != null) { + searchQuery.addGreater("createdateStart", startTimeStamp); } // 如果结束时间不为空,则将其放入查询条件中 - if (endTimeStamp!=null) { - searchQuery.addLess("createdateEnd",endTimeStamp); + if (endTimeStamp != null) { + searchQuery.addLess("createdateEnd", endTimeStamp); } } catch (ParseException e) { // 处理日期解析异常 @@ -464,58 +440,58 @@ public class FlowTaskController extends BaseController { //租户主键,由前端页面传送 String tenantId = request.getHeader("X-Tenant-Id"); - if(org.apache.commons.lang3.StringUtils.isBlank(tenantId)){ + if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) { return ResultVoUtil.error("租户主键不能为空"); } User user = this.userService.getSessionUser(request); - if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ - }else{ - searchQuery.addEqual("thisLoginUserid",user.getId().toString()); - searchQuery.addEqual("tenantid",tenantId); + if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { + } else { + searchQuery.addEqual("thisLoginUserid", user.getId().toString()); + searchQuery.addEqual("tenantid", tenantId); } - Map query = searchQuery.getQuery(); + Map query = searchQuery.getQuery(); - flowTaskService.getFinalProcessInstances(query,pageUtils); + flowTaskService.getFinalProcessInstances(query, pageUtils); return ResultVoUtil.success(pageUtils); } - /** + /** * 终审列表(高级检索) + * * @return */ - @ApiOperation(value="图片分页列表查询-根据用户预设检索条件查询", notes="") + @ApiOperation(value = "图片分页列表查询-根据用户预设检索条件查询", notes = "") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), - @ApiImplicitParam(paramType = "path",name = "userSearchId", value = "预设检索条件id", required = true), + @ApiImplicitParam(paramType = "path", name = "userSearchId", value = "预设检索条件id", required = true), }) @GetMapping(value = "/listfinalAdvanced") public ResultVo> queryPageByUserSearchId( - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { //租户主键,由前端页面传送 String tenantId = req.getHeader("X-Tenant-Id"); - if(org.apache.commons.lang3.StringUtils.isBlank(tenantId)){ + if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) { return ResultVoUtil.error("租户主键不能为空"); } //获取用户预设检索条件id String userSearchId = req.getParameter("userSearchId"); - IPage pageList = flowTaskService.queryPageByUserSearchId(pageNo,pageSize,userSearchId); + IPage pageList = flowTaskService.queryPageByUserSearchId(pageNo, pageSize, userSearchId); return ResultVoUtil.success(pageList); } - - /** * 我的发起 - * 查询我发起的已经完成的任务 - * (CATEGORYID)流程类型为必填项 + * 查询我发起的已经完成的任务 + * (CATEGORYID)流程类型为必填项 + * * @return */ @GetMapping("/listdataall") @@ -537,10 +513,10 @@ public class FlowTaskController extends BaseController { searchQuery.addEqual("createuser", user.getLoginname()); //流程类型,对应流程类型表(OA_CATEGORY_T)的id searchQuery.addEqual("categoryid", categoryid); - if(StringUtils.isNotBlank(buessinessno)){ + if (StringUtils.isNotBlank(buessinessno)) { searchQuery.addEqual("buessinessno", buessinessno); } - if(StringUtils.isNotBlank(formid)){ + if (StringUtils.isNotBlank(formid)) { searchQuery.addEqual("id", formid); } @@ -551,116 +527,126 @@ public class FlowTaskController extends BaseController { } return ResultVoUtil.success(flowUnionVoList); } + /** * 抄送给我的 + * * @param pageUtils * @param request * @return */ @GetMapping("/listdatacc") @ResponseBody - public ResultVo listdatacc(ParamterPage paramterPage,PageUtils pageUtils, HttpServletRequest request){ + public ResultVo listdatacc(ParamterPage paramterPage, PageUtils pageUtils, HttpServletRequest request) { SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_"); Map query = searchQuery.getQuery(); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); - flowTaskService.getMyListCc(query,userToken,paramterPage); + flowTaskService.getMyListCc(query, userToken, paramterPage); return ResultVoUtil.success(pageUtils); } + /** * 抄送我的 - * 查询我发起的已经完成的任务 + * 查询我发起的已经完成的任务 + * * @return */ @GetMapping("/mylistcc") @ResponseBody - public ResultVo myListCc(ParamterPage paramterPage, HttpServletRequest request){ + public ResultVo myListCc(ParamterPage paramterPage, HttpServletRequest request) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_"); Map query = searchQuery.getQuery(); - IPage flowableccIPage = flowTaskService.getMyListCc(query,userToken,paramterPage); + IPage flowableccIPage = flowTaskService.getMyListCc(query, userToken, paramterPage); return ResultVoUtil.success(flowableccIPage); } + /** * 撤销流程 + * * @return */ @GetMapping("/cancelTask") @ResponseBody - public ResultVo cancelTask(HttpServletRequest request){ + public ResultVo cancelTask(HttpServletRequest request) { String taskId = request.getParameter("taskId"); String reason = request.getParameter("reason"); - flowTaskService.cancelTask(taskId,reason); + flowTaskService.cancelTask(taskId, reason); return ResultVoUtil.success(); } /** * 重置流程流程 + * * @return */ - @ApiOperation(value="重置流程流程", notes="重置流程流程") + @ApiOperation(value = "重置流程流程", notes = "重置流程流程") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), - @ApiImplicitParam(paramType = "path",name = "fromid", value = "任务表主键", required = true) + @ApiImplicitParam(paramType = "path", name = "fromid", value = "任务表主键", required = true) }) @GetMapping("/removeTask") @ResponseBody - public ResultVo removeTask(HttpServletRequest request){ + public ResultVo removeTask(HttpServletRequest request) { String fromid = request.getParameter("fromid"); String taskid = request.getParameter("taskid"); - return flowTaskService.removeTask(fromid,taskid); + return flowTaskService.removeTask(fromid, taskid); //return ResultVoUtil.success(); } /** * 审批历史记录 + * * @return */ - @ApiOperation(value="重置流程流程", notes="重置流程流程") + @ApiOperation(value = "重置流程流程", notes = "重置流程流程") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), - @ApiImplicitParam(paramType = "path",name = "buessinessno", value = "业务编码", required = true) + @ApiImplicitParam(paramType = "path", name = "buessinessno", value = "业务编码", required = true) }) @GetMapping("/historyTask") @ResponseBody - public ResultVo historyTask(HttpServletRequest request){ + public ResultVo historyTask(HttpServletRequest request) { String fromid = request.getParameter("fromid"); String taskid = request.getParameter("buessinessno"); - return flowTaskService.removeTask(fromid,taskid); + return flowTaskService.removeTask(fromid, taskid); //return ResultVoUtil.success(); } /** * 重复任务 + * * @return */ - @ApiOperation(value="重复流程", notes="重复流程") + @ApiOperation(value = "重复流程", notes = "重复流程") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), }) @GetMapping("/repetitionTask") @ResponseBody - public ResultVo repetitionTask(){ + public ResultVo repetitionTask() { return flowTaskService.repetitionTask(); } /** * 重复任务 + * * @return */ - @ApiOperation(value="重复流程", notes="重复流程") + @ApiOperation(value = "重复流程", notes = "重复流程") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), }) @GetMapping("/repetitionTaskList") @ResponseBody - public ResultVo repetitionTaskList(){ + public ResultVo repetitionTaskList() { return flowTaskService.repetitionTaskList(); } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowApprove.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowApprove.java new file mode 100644 index 00000000..f7c81fc1 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowApprove.java @@ -0,0 +1,46 @@ +package cn.jyjz.flowable.entity; + +import lombok.Data; + +import java.util.List; + +/** + * ClassName: FlowApprove$.java + * Description: + * Author: scl. + * Date: 2024/3/28 17:04 + */ +@Data +public class FlowApprove { + + /** + * 备注 + */ + private String comment; + /** + * 审批结果 + */ + private Boolean result; + /** + * 失败原因 + */ + private String failCauseName; + /** + * 失败原因id + */ + private String failCauseId; + + /** + * 处理方式 + */ + private String disposeType; + + /** + * 处理方式id + */ + private String disposeTypeId; + /** + * 任务id集合 + */ + private List flowTaskInfoList; +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowTaskInfo.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowTaskInfo.java new file mode 100644 index 00000000..4bd26ac5 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/FlowTaskInfo.java @@ -0,0 +1,25 @@ +package cn.jyjz.flowable.entity; + +import lombok.Data; + +/** + * ClassName: FlowTaskInfo$.java + * Description: + * Author: scl. + * Date: 2024/3/28 20:09 + */ +@Data +public class FlowTaskInfo { + /** + * 流程任务id + */ + private String formId; + /** + * 任务id + */ + private String taskId; + /** + * 任务名称 + */ + private String taskName; +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java index 4ac91d06..22c29397 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java @@ -5,6 +5,7 @@ import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto; import cn.jyjz.flowable.domain.vo.FlowTaskCompleteVO; import cn.jyjz.flowable.domain.vo.FlowTaskVO; import cn.jyjz.flowable.domain.vo.WorkFlowNodeVO; +import cn.jyjz.flowable.entity.FlowApprove; import cn.jyjz.flowable.utils.PageUtils; import cn.jyjz.xiaoyao.admin.dataobject.User; import cn.jyjz.xiaoyao.common.base.param.ParamterPage; @@ -34,7 +35,7 @@ public interface IFlowTaskService { Category viewForm(String processId, HttpServletRequest request); - Boolean complete(FlowTaskVO taskVO, HttpServletRequest request); + Boolean complete(FlowApprove approve,UserToken userToken); /** diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java index 9a9e5480..a5bacbdb 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java @@ -5,6 +5,8 @@ import cn.hutool.core.date.DateUtil; import cn.jyjz.flowable.common.SystemConstantsOa; import cn.jyjz.flowable.config.CustomProcessDiagramGenerator; import cn.jyjz.flowable.domain.vo.*; +import cn.jyjz.flowable.entity.FlowApprove; +import cn.jyjz.flowable.entity.FlowTaskInfo; import cn.jyjz.flowable.service.IFlowInstanceService; import cn.jyjz.xiaoyao.common.base.language.SystemMessage; import cn.jyjz.xiaoyao.common.base.service.UserTokenService; @@ -437,94 +439,31 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * 完成任务 */ @Override - public Boolean complete(FlowTaskVO taskVO, HttpServletRequest request) { + public Boolean complete(FlowApprove approve, UserToken userToken) { try { - // 当前要处理的任务 - Task task = taskService.createTaskQuery().taskId(taskVO.getTaskId()).singleResult(); - // 查询流程定义的信息 - ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() - .processDefinitionId(task.getProcessDefinitionId()) - .singleResult(); - // 对任务添加对应的审批意见 - taskService.addComment(task.getId(), task.getProcessInstanceId(), taskVO.getTaskComment()); - - Map variables = new HashMap<>(); - if (null != taskVO.getTaskApprovd() && StringUtils.isNotBlank(taskVO.getTaskApprovd().toString())) { - variables.put("taskApprovd", taskVO.getTaskApprovd().intValue()); - } - variables.put("approvd", taskVO.getApprovd()); - OcrTaskchildPicture model = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); - //只有同意,再进行候选人设置 - if (taskVO.getApprovd()) { - //进入下一个节点 - taskService.complete(task.getId(), variables); - updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition); - String category = processDefinition.getCategory(); - Category categoryDto = this.categoryService.getCategory(category); - IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename()); - FlowModelVO formData = iFormCustomService.getForm(taskVO.getFormid()); - List taskList = this.nowRunTask(formData.getProcessInstanceId(), formData.getProcessdefinitionid()); - Task taskData = null; - if (null != taskList && !taskList.isEmpty()) { - taskData = taskList.get(0); - } - if (ObjectUtils.isEmpty(taskData)) { - model.setFinishtime(System.currentTimeMillis()); - model.setStates(SystemConstantsOa.OA_STATUS_TYPE_END); - ocrTaskchildPictureService.updateById(model); - } else { - //判断节点上的描述字段,是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录 - if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) { - User user = userService.findByLoginname(formData.getAssignee()); - userFinalService.save(user.getId().toString(), taskVO.getFormid()); - } - OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); - UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); - sendMsg(childPicture,userToken); - childPicture.setTaskId(taskData.getId()); - childPicture.setTaskname(taskData.getName()); - ocrTaskchildPictureService.updateById(childPicture); - } - //增加未查看记录 - userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString()); - } else { - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); - //我这里以 流程定义key(oa_category_t定义的关键字,逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename - String businesskey = processInstance.getBusinessKey(); - //3、修改业务表状态 - //判断业务key是否存在 - if (StringUtils.isNotBlank(businesskey)) { - String assignee = ""; - BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); - //传节点定义key获取当前节点 - FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); - if (flowElement instanceof UserTask) { - UserTask userTask = (UserTask) flowElement; - //如果审批不存在,需要在候选组中查询 - if (StringUtils.isBlank(userTask.getAssignee())) { - assignee = userTask.getAssignee(); - } + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(approve.getFlowTaskInfoList())) { + List flowTaskInfoList = approve.getFlowTaskInfoList(); + for (FlowTaskInfo flowTaskInfo : flowTaskInfoList) { + // 当前要处理的任务 + Task task = taskService.createTaskQuery().taskId(flowTaskInfo.getTaskId()).singleResult(); + // 查询流程定义的信息 + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(task.getProcessDefinitionId()) + .singleResult(); + // 对任务添加对应的审批意见 + taskService.addComment(task.getId(), task.getProcessInstanceId(), approve.getComment()); + Map variables = new HashMap<>(); + variables.put("approvd", approve.getResult()); + OcrTaskchildPicture model = ocrTaskchildPictureService.getById(Long.parseLong(flowTaskInfo.getFormId())); + if (approve.getResult()) { + disposeSucceedTask(task, processDefinition, variables, model, flowTaskInfo.getFormId(), userToken); + } else { + disposeFailureTask(task,flowTaskInfo.getFormId(),variables); } - String[] busskey = businesskey.split(SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT); - IFormCustomService iFormCustomService = SpringUtils.getBean(busskey[2]); - //设置流程结束状态 - iFormCustomService.endForm(busskey[1], SystemConstantsOa.OA_STATUS_TYPE_REFUSE, assignee, task.getProcessInstanceId(), task.getName()); + userapproveService.save(userToken, approve, task,flowTaskInfo.getFormId()); } - //1、获取终止节点 - List endNodes = findEndFlowElement(task.getProcessDefinitionId()); - String endId = endNodes.get(0).getId(); - //2、执行终止 - List executions = runtimeService.createExecutionQuery().parentId(task.getProcessInstanceId()).list(); - List executionIds = new ArrayList<>(); - executions.forEach(execution -> executionIds.add(execution.getId())); - runtimeService.createChangeActivityStateBuilder().moveExecutionsToSingleActivityId(executionIds, endId).processVariables(variables).changeState(); - OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); - taskchildPicture.setFinishtime(System.currentTimeMillis()); - ocrTaskchildPictureService.updateById(taskchildPicture); } - UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); //保存当前审批用户与业务表的关系 - userapproveService.save(userToken, taskVO, task); return true; } catch (Exception e) { log.error("e={}", e); @@ -532,7 +471,84 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask return false; } - private void sendMsg(OcrTaskchildPicture model,UserToken userToken){ + /** + * 处理审批成功任务 + */ + private void disposeSucceedTask(Task task, ProcessDefinition processDefinition, Map variables, OcrTaskchildPicture model, String formId, UserToken userToken) { + //进入下一个节点 + taskService.complete(task.getId(), variables); + updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition); + String category = processDefinition.getCategory(); + Category categoryDto = this.categoryService.getCategory(category); + IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename()); + FlowModelVO formData = iFormCustomService.getForm(formId); + List taskList = this.nowRunTask(formData.getProcessInstanceId(), formData.getProcessdefinitionid()); + Task taskData = null; + if (null != taskList && !taskList.isEmpty()) { + taskData = taskList.get(0); + } + if (ObjectUtils.isEmpty(taskData)) { + model.setFinishtime(System.currentTimeMillis()); + model.setStates(SystemConstantsOa.OA_STATUS_TYPE_END); + ocrTaskchildPictureService.updateById(model); + } else { + //判断节点上的描述字段,是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录 + if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) { + User user = userService.findByLoginname(formData.getAssignee()); + userFinalService.save(user.getId().toString(), formId); + } + OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId)); + sendMsg(childPicture, userToken); + childPicture.setTaskId(taskData.getId()); + childPicture.setTaskname(taskData.getName()); + ocrTaskchildPictureService.updateById(childPicture); + } + //增加未查看记录 + userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString()); + + } + + /** + * 处理失败任务 + */ + private void disposeFailureTask(Task task, String formId, Map variables) { + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); + //我这里以 流程定义key(oa_category_t定义的关键字,逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename + String businesskey = processInstance.getBusinessKey(); + //3、修改业务表状态 + //判断业务key是否存在 + if (StringUtils.isNotBlank(businesskey)) { + String assignee = ""; + BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); + //传节点定义key获取当前节点 + FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); + if (flowElement instanceof UserTask) { + UserTask userTask = (UserTask) flowElement; + //如果审批不存在,需要在候选组中查询 + if (StringUtils.isBlank(userTask.getAssignee())) { + assignee = userTask.getAssignee(); + } + } + String[] busskey = businesskey.split(SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT); + IFormCustomService iFormCustomService = SpringUtils.getBean(busskey[2]); + //设置流程结束状态 + iFormCustomService.endForm(busskey[1], SystemConstantsOa.OA_STATUS_TYPE_REFUSE, assignee, task.getProcessInstanceId(), task.getName()); + } + //1、获取终止节点 + List endNodes = findEndFlowElement(task.getProcessDefinitionId()); + String endId = endNodes.get(0).getId(); + //2、执行终止 + List executions = runtimeService.createExecutionQuery().parentId(task.getProcessInstanceId()).list(); + List executionIds = new ArrayList<>(); + executions.forEach(execution -> executionIds.add(execution.getId())); + runtimeService.createChangeActivityStateBuilder().moveExecutionsToSingleActivityId(executionIds, endId).processVariables(variables).changeState(); + OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId)); + taskchildPicture.setFinishtime(System.currentTimeMillis()); + ocrTaskchildPictureService.updateById(taskchildPicture); + } + + //发送消息 + private void sendMsg(OcrTaskchildPicture model, UserToken userToken) { cn.jyjz.xiaoyao.common.base.vo.User byLoginname = userTokenService.findByLoginname(model.getAssignee()); OcrMsg msg = new OcrMsg(); msg.setCreateTime(System.currentTimeMillis()); diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/UserapproveService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/UserapproveService.java index d75b2733..335ebecd 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/UserapproveService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/UserapproveService.java @@ -1,6 +1,7 @@ package cn.jyjz.xiaoyao.oa.from.service; import cn.jyjz.flowable.domain.vo.FlowTaskVO; +import cn.jyjz.flowable.entity.FlowApprove; import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService; import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove; @@ -13,11 +14,11 @@ public interface UserapproveService extends BaseService { /** * 保存审批人员于业务表单的关联 - * @param userid 当前审批用户的主键 - * @param formid 业务表单主键 + * @param approve 当前审批用户的主键 + * @param formId 业务表单主键 * @return 成功返回true,否则返回false */ - public boolean save(UserToken userToken, FlowTaskVO taskVO, Task task ); + public boolean save(UserToken userToken, FlowApprove approve, Task task,String formId); /** * 删除审批人员于业务表单的关联 diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/impl/UserapproveServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/impl/UserapproveServiceImpl.java index f58a6fc9..e5207871 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/impl/UserapproveServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/service/impl/UserapproveServiceImpl.java @@ -1,6 +1,7 @@ package cn.jyjz.xiaoyao.oa.from.service.impl; import cn.jyjz.flowable.domain.vo.FlowTaskVO; +import cn.jyjz.flowable.entity.FlowApprove; import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl; import cn.jyjz.xiaoyao.oa.from.dataDao.UserapproveMybatisDao; @@ -22,22 +23,19 @@ public class UserapproveServiceImpl extends BaseServiceImpl falseImgList; + /** + * 重复小结任务集合 + */ + private List briefRepeatTaskList; + /** + * 审批节点详情集合 + */ + private List approveDetailList; + /** + * 图片重复集合 + */ + private List pictureRepeatList; + + +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dto/ReuseImgDto.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dto/ReuseImgDto.java new file mode 100644 index 00000000..67fc7230 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dto/ReuseImgDto.java @@ -0,0 +1,25 @@ +package cn.jyjz.xiaoyao.ocr.dto; + +import lombok.Data; + +/** + * ClassName: ReuseImgDto$.java + * Description: + * Author: scl. + * Date: 2024/3/27 23:59 + */ +@Data +public class ReuseImgDto { + /** + * 当前任务图片no 2.0系统推送的no + */ + private Long imgNo; + /** + * 重复图片对应的taskNo 2.0系统推送的no + */ + private Long taskNo; + /** + * 重复图片对应的ImgNo 2.0系统推送的no + */ + private Long repeatImgNo; +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java index 326a9b7f..2eac2b0d 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java @@ -51,7 +51,7 @@ public interface OcrTaskchildPictureService extends BaseService formid); public boolean validateBoole(String[] formid); @@ -61,7 +61,7 @@ public interface OcrTaskchildPictureService extends BaseService formid,UserToken userToken); /** * 根据主键,查询图片详情 @@ -147,4 +147,6 @@ public interface OcrTaskchildPictureService extends BaseService getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId); + void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture,OcrPicture picture); + } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java index 8d39acc8..d1ab579e 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java @@ -14,6 +14,7 @@ import cn.jyjz.xiaoyao.oa.from.service.CategoryService; import cn.jyjz.xiaoyao.oa.from.service.UserapproveService; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataobject.*; +import cn.jyjz.xiaoyao.ocr.dto.FlowResultDto; import cn.jyjz.xiaoyao.ocr.dto.UserapproveDto; import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService; import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService; @@ -39,6 +40,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -201,7 +203,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl formid, UserToken userToken) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.in("ID", formid); List list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper); @@ -224,7 +226,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl formid) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.in("ID", formid); List list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper); @@ -686,4 +688,14 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl