优化批量审批接口

pull/2/head
sunchenliang 1 year ago
parent a44c24815e
commit fbbff17114

@ -3,6 +3,8 @@ package cn.jyjz.flowable.controller;
import cn.jyjz.flowable.common.SystemConstantsOa; import cn.jyjz.flowable.common.SystemConstantsOa;
import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto; import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto;
import cn.jyjz.flowable.domain.vo.FlowTaskVO; 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.service.IFlowTaskService;
import cn.jyjz.flowable.utils.PageUtils; import cn.jyjz.flowable.utils.PageUtils;
import cn.jyjz.flowable.utils.SysConstant; 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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.apache.commons.collections4.CollectionUtils;
import org.flowable.ui.common.model.RemoteUser; import org.flowable.ui.common.model.RemoteUser;
import org.flowable.ui.common.service.idm.RemoteIdmService; import org.flowable.ui.common.service.idm.RemoteIdmService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -50,7 +53,7 @@ import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Api(tags="ocr_流程接口") @Api(tags = "ocr_流程接口")
@RestController @RestController
@RequestMapping("/flow/task") @RequestMapping("/flow/task")
public class FlowTaskController extends BaseController { public class FlowTaskController extends BaseController {
@ -87,13 +90,14 @@ public class FlowTaskController extends BaseController {
/** /**
* *
*
* @param processId * @param processId
* @return * @return
* @throws Exception * @throws Exception
*/ */
@GetMapping(value = "/flowImg",produces = MediaType.IMAGE_PNG_VALUE) @GetMapping(value = "/flowImg", produces = MediaType.IMAGE_PNG_VALUE)
@ResponseBody @ResponseBody
public byte[] flowImg(@RequestParam("processId") String processId) throws Exception{ public byte[] flowImg(@RequestParam("processId") String processId) throws Exception {
InputStream diagram = flowTaskService.diagram(processId); InputStream diagram = flowTaskService.diagram(processId);
byte[] bytes = new byte[diagram.available()]; byte[] bytes = new byte[diagram.available()];
diagram.read(bytes); diagram.read(bytes);
@ -102,14 +106,15 @@ public class FlowTaskController extends BaseController {
/** /**
* *
*
* @param processId * @param processId
* @return * @return
* @throws Exception * @throws Exception
*/ */
@GetMapping(value = "/myFlowImg",produces = MediaType.IMAGE_PNG_VALUE) @GetMapping(value = "/myFlowImg", produces = MediaType.IMAGE_PNG_VALUE)
@ResponseBody @ResponseBody
public byte[] myFlowImg(@RequestParam("processId") String processId, HttpServletRequest request) throws Exception{ public byte[] myFlowImg(@RequestParam("processId") String processId, HttpServletRequest request) throws Exception {
InputStream diagram = flowTaskService.myDiagram(processId,request); InputStream diagram = flowTaskService.myDiagram(processId, request);
byte[] bytes = new byte[diagram.available()]; byte[] bytes = new byte[diagram.available()];
diagram.read(bytes); diagram.read(bytes);
return bytes; return bytes;
@ -117,15 +122,16 @@ public class FlowTaskController extends BaseController {
/** /**
* *
*
* @return * @return
*/ */
@PostMapping("/viewFormid") @PostMapping("/viewFormid")
@ResponseBody @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); Category category = flowTaskService.viewForm(processId, request);
if(null != category){ if (null != category) {
return ResultVoUtil.success(category); return ResultVoUtil.success(category);
} }
return ResultVoUtil.error(); return ResultVoUtil.error();
@ -133,125 +139,92 @@ public class FlowTaskController extends BaseController {
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="任务审批", notes="任务审批") @ApiOperation(value = "任务审批", notes = "任务审批")
@PostMapping("/completeFlow") @PostMapping("/completeFlow")
@ResponseBody @ResponseBody
public ResultVo complete(FlowTaskVO taskVO,HttpServletRequest request){ public ResultVo complete(@RequestBody FlowApprove approve, HttpServletRequest request) {
Boolean flag = flowTaskService.complete(taskVO,request); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
return flag?ResultVoUtil.success():ResultVoUtil.error(); Boolean flag = flowTaskService.complete(approve, userToken);
return flag ? ResultVoUtil.success() : ResultVoUtil.error();
} }
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="任务审批", notes="任务审批") @ApiOperation(value = "任务审批", notes = "任务审批")
@PostMapping("/completeBatchFlow") @PostMapping("/completeBatchFlow")
@ResponseBody @ResponseBody
public ResultVo completeBatch(HttpServletRequest request){ public ResultVo completeBatch(@RequestBody FlowApprove approve, HttpServletRequest request) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//任务ID //任务ID
String[] taskId = request.getParameterValues("taskId"); List<FlowTaskInfo> flowTaskInfoList = approve.getFlowTaskInfoList();
//审批的任务主键 if (CollectionUtils.isNotEmpty(flowTaskInfoList)) {
String[] formid = request.getParameterValues("formid"); List<String> formIdList = flowTaskInfoList.stream().map(FlowTaskInfo::getFormId).collect(Collectors.toList());
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)){ if (!this.ocrTaskchildPictureService.validateAssignee(formIdList, userToken)) {
return ResultVoUtil.error("审批人不一致,请到任务审批中处理。"); return ResultVoUtil.error("审批人不一致,请到任务审批中处理。");
} }
// 判断当前任务是否审批完毕
//TODO 判断当前任务是否审批完毕 if (!this.ocrTaskchildPictureService.validateApprove(formIdList)) {
if(!this.ocrTaskchildPictureService.validateApprove(formid)){
return ResultVoUtil.error("存在已经审批的任务。"); return ResultVoUtil.error("存在已经审批的任务。");
} }
Boolean flag = flowTaskService.complete(approve, userToken);
//TODO 判断taskid是否为非法空置、taskid是否存在 return flag ? ResultVoUtil.success("审批成功!") : ResultVoUtil.error("审批失败!");
//判断当前任务是否存在历史任务--暂时不做,生成任务时直接保存历史任务的审批工具中
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("审批失败");
}
} }
} return ResultVoUtil.error("审批信息为空!");
return (StringUtils.isNotBlank(smg.toString()))?ResultVoUtil.error(smg.toString()):ResultVoUtil.success();
} }
@GetMapping("/listhistore") @GetMapping("/listhistore")
@ResponseBody @ResponseBody
public ResultVo listhistore(PageUtils vo, Model model, HttpServletRequest request){ public ResultVo listhistore(PageUtils vo, Model model, HttpServletRequest request) {
String processInstanceId = request.getParameter("processInstanceId"); String processInstanceId = request.getParameter("processInstanceId");
List<HistoricTaskInstanceDto> list = flowTaskService.listHistoriceTask(processInstanceId); List<HistoricTaskInstanceDto> list = flowTaskService.listHistoriceTask(processInstanceId);
return ResultVoUtil.success(list); return ResultVoUtil.success(list);
} }
/** /**
* *
* *
*
* @return * @return
*/ */
@GetMapping("/finishedList") @GetMapping("/finishedList")
@ResponseBody @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); 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); flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils);
}else{ } else {
searchQuery.addEqual("approveUserid",user.getId().toString()); searchQuery.addEqual("approveUserid", user.getId().toString());
flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils);
} }
return ResultVoUtil.success(pageUtils); return ResultVoUtil.success(pageUtils);
} }
/** /**
* *
* *
*
* @return * @return
*/ */
@ApiOperation(value="待办任务", notes="待办任务") @ApiOperation(value = "待办任务", notes = "待办任务")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) })
@GetMapping("/listdata") @GetMapping("/listdata")
@ResponseBody @ResponseBody
public ResultVo<FlowUnionVo> listdata(PageUtils<FlowUnionVo> pageUtils, HttpServletRequest request){ public ResultVo<FlowUnionVo> listdata(PageUtils<FlowUnionVo> pageUtils, HttpServletRequest request) {
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request,"search_"); SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
//租户主键,由前端页面传送 //租户主键,由前端页面传送
String tenantId = request.getHeader("X-Tenant-Id"); String tenantId = request.getHeader("X-Tenant-Id");
@ -262,52 +235,52 @@ public class FlowTaskController extends BaseController {
String fromuserid = request.getParameter("fromuserid"); String fromuserid = request.getParameter("fromuserid");
String fromplanid = request.getParameter("fromplanid"); String fromplanid = request.getParameter("fromplanid");
if(org.apache.commons.lang3.StringUtils.isBlank(tenantId)){ if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) {
return ResultVoUtil.error("租户主键不能为空"); return ResultVoUtil.error("租户主键不能为空");
} }
if(StringUtils.isNotBlank(taskid)){ if (StringUtils.isNotBlank(taskid)) {
searchQuery.addEqual("taskid",taskid); searchQuery.addEqual("taskid", taskid);
} }
if(StringUtils.isNotBlank(taskname)){ if (StringUtils.isNotBlank(taskname)) {
searchQuery.addLike("taskname",taskname); searchQuery.addLike("taskname", taskname);
} }
if(StringUtils.isNotBlank(states)){ if (StringUtils.isNotBlank(states)) {
searchQuery.addEqual("states",states); searchQuery.addEqual("states", states);
} }
if(StringUtils.isNotBlank(fromprojectid)){ if (StringUtils.isNotBlank(fromprojectid)) {
searchQuery.addEqual("fromprojectid",fromprojectid); searchQuery.addEqual("fromprojectid", fromprojectid);
} }
if(StringUtils.isNotBlank(fromuserid)){ if (StringUtils.isNotBlank(fromuserid)) {
searchQuery.addEqual("fromuserid",fromuserid); searchQuery.addEqual("fromuserid", fromuserid);
} }
if(StringUtils.isNotBlank(fromplanid)){ if (StringUtils.isNotBlank(fromplanid)) {
searchQuery.addEqual("fromplanid",fromplanid); searchQuery.addEqual("fromplanid", fromplanid);
} }
User user = this.userService.getSessionUser(request); User user = this.userService.getSessionUser(request);
// List<Userapprove> userApprove = userapproveService.list(new LambdaQueryWrapper<Userapprove>().eq(Userapprove::getUserid, user.getId())); // List<Userapprove> userApprove = userapproveService.list(new LambdaQueryWrapper<Userapprove>().eq(Userapprove::getUserid, user.getId()));
// List<String> collect = userApprove.stream().map(Userapprove::getFormid).map(Object::toString).collect(Collectors.toList()); // List<String> collect = userApprove.stream().map(Userapprove::getFormid).map(Object::toString).collect(Collectors.toList());
// searchQuery.addIn("formid",collect); // searchQuery.addIn("formid",collect);
if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils);
}else{ } else {
String assigneeId = request.getParameter("assigneeId"); String assigneeId = request.getParameter("assigneeId");
//如果assigneeId 为空查询发起流程,否则查询待办流程 //如果assigneeId 为空查询发起流程,否则查询待办流程
if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ if (StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())) {
searchQuery.addEqual("assignee",user.getLoginname()); searchQuery.addEqual("assignee", user.getLoginname());
searchQuery.addEqual("states",SystemConstantsOa.OA_STATUS_TYPE_ING.toString()); searchQuery.addEqual("states", SystemConstantsOa.OA_STATUS_TYPE_ING.toString());
}else{ } else {
searchQuery.addEqual("createuser",user.getLoginname()); searchQuery.addEqual("createuser", user.getLoginname());
} }
searchQuery.addEqual("tenantid",tenantId); searchQuery.addEqual("tenantid", tenantId);
flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); 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(); List list = pageUtils.getList();
if(null != list && !list.isEmpty()){ if (null != list && !list.isEmpty()) {
int count = list.size(); 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 flowUnionVo = (FlowUnionVo) list.get(i);
//flowUnionVo.setView(userViewApproeService.haveByFromid(flowUnionVo.getFormid().toString())); //flowUnionVo.setView(userViewApproeService.haveByFromid(flowUnionVo.getFormid().toString()));
} }
@ -318,34 +291,36 @@ public class FlowTaskController extends BaseController {
} }
return ResultVoUtil.success(pageUtils); return ResultVoUtil.success(pageUtils);
} }
/** /**
* *
* *
*
* @return * @return
*/ */
@ApiOperation(value="我的任务", notes="查询我的待办、已经办理任务") @ApiOperation(value = "我的任务", notes = "查询我的待办、已经办理任务")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) })
@GetMapping("/listalldata") @GetMapping("/listalldata")
@ResponseBody @ResponseBody
public ResultVo listAlldata(PageUtils pageUtils, HttpServletRequest request){ public ResultVo listAlldata(PageUtils pageUtils, HttpServletRequest request) {
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request,"search_"); SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
//租户主键,由前端页面传送 //租户主键,由前端页面传送
String tenantId = request.getHeader("X-Tenant-Id"); 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("租户主键不能为空"); return ResultVoUtil.error("租户主键不能为空");
} }
User user = this.userService.getSessionUser(request); 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); flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils);
}else{ } else {
flowTaskService.getMyProcessInstances(user,tenantId,searchQuery.getQuery(),pageUtils); flowTaskService.getMyProcessInstances(user, tenantId, searchQuery.getQuery(), pageUtils);
//待办信息,增加是否查看标记 //待办信息,增加是否查看标记
// if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ // if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){
@ -368,24 +343,25 @@ public class FlowTaskController extends BaseController {
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="我的终审列表", notes="我的终审列表") @ApiOperation(value = "我的终审列表", notes = "我的终审列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) })
@GetMapping("/listfinal") @GetMapping("/listfinal")
@ResponseBody @ResponseBody
public ResultVo<OcrTaskchildPicture> listFinalData(PageUtils<OcrTaskchildPicture> pageUtils, public ResultVo<OcrTaskchildPicture> listFinalData(PageUtils<OcrTaskchildPicture> pageUtils,
@RequestParam(name="izupuser", defaultValue="",required = false) String izupuser, @RequestParam(name = "izupuser", defaultValue = "", required = false) String izupuser,
@RequestParam(name="izproject", defaultValue="",required = false) String izproject, @RequestParam(name = "izproject", defaultValue = "", required = false) String izproject,
@RequestParam(name="izplan", defaultValue="",required = false) String izplan, @RequestParam(name = "izplan", defaultValue = "", required = false) String izplan,
@RequestParam(name="izstatus", defaultValue="",required = false) String izstatus, @RequestParam(name = "izstatus", defaultValue = "", required = false) String izstatus,
@RequestParam(name="iztaskrrom", defaultValue="",required = false) String iztaskrrom, @RequestParam(name = "iztaskrrom", defaultValue = "", required = false) String iztaskrrom,
@RequestParam(name="izuptime", defaultValue="",required = false) String izuptime, @RequestParam(name = "izuptime", defaultValue = "", required = false) String izuptime,
HttpServletRequest request){ HttpServletRequest request) {
SearchQuery searchQuery = new SearchQuery(); SearchQuery searchQuery = new SearchQuery();
if(org.springframework.util.StringUtils.hasText(izupuser)){ if (org.springframework.util.StringUtils.hasText(izupuser)) {
// searchQuery.addEqual("fromuserid",izupuser); // searchQuery.addEqual("fromuserid",izupuser);
if (izupuser.contains(",")) { if (izupuser.contains(",")) {
String[] userIds = izupuser.split(","); String[] userIds = izupuser.split(",");
@ -435,7 +411,7 @@ public class FlowTaskController extends BaseController {
searchQuery.addEqual("fromsourceid", iztaskrrom); searchQuery.addEqual("fromsourceid", iztaskrrom);
} }
} }
if(org.springframework.util.StringUtils.hasText(izuptime)) { if (org.springframework.util.StringUtils.hasText(izuptime)) {
String[] dateRange = izuptime.split("-"); String[] dateRange = izuptime.split("-");
if (dateRange.length == 2) { if (dateRange.length == 2) {
try { try {
@ -448,12 +424,12 @@ public class FlowTaskController extends BaseController {
Long endTimeStamp = sdfInput.parse(dateRange[1].trim()).getTime(); Long endTimeStamp = sdfInput.parse(dateRange[1].trim()).getTime();
// 如果开始时间不为空,则将其放入查询条件中 // 如果开始时间不为空,则将其放入查询条件中
if (startTimeStamp!=null) { if (startTimeStamp != null) {
searchQuery.addGreater("createdateStart",startTimeStamp); searchQuery.addGreater("createdateStart", startTimeStamp);
} }
// 如果结束时间不为空,则将其放入查询条件中 // 如果结束时间不为空,则将其放入查询条件中
if (endTimeStamp!=null) { if (endTimeStamp != null) {
searchQuery.addLess("createdateEnd",endTimeStamp); searchQuery.addLess("createdateEnd", endTimeStamp);
} }
} catch (ParseException e) { } catch (ParseException e) {
// 处理日期解析异常 // 处理日期解析异常
@ -464,58 +440,58 @@ public class FlowTaskController extends BaseController {
//租户主键,由前端页面传送 //租户主键,由前端页面传送
String tenantId = request.getHeader("X-Tenant-Id"); 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("租户主键不能为空"); return ResultVoUtil.error("租户主键不能为空");
} }
User user = this.userService.getSessionUser(request); User user = this.userService.getSessionUser(request);
if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
}else{ } else {
searchQuery.addEqual("thisLoginUserid",user.getId().toString()); searchQuery.addEqual("thisLoginUserid", user.getId().toString());
searchQuery.addEqual("tenantid",tenantId); searchQuery.addEqual("tenantid", tenantId);
} }
Map<String,Object> query = searchQuery.getQuery(); Map<String, Object> query = searchQuery.getQuery();
flowTaskService.getFinalProcessInstances(query,pageUtils); flowTaskService.getFinalProcessInstances(query, pageUtils);
return ResultVoUtil.success(pageUtils); return ResultVoUtil.success(pageUtils);
} }
/** /**
* () * ()
*
* @return * @return
*/ */
@ApiOperation(value="图片分页列表查询-根据用户预设检索条件查询", notes="") @ApiOperation(value = "图片分页列表查询-根据用户预设检索条件查询", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @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") @GetMapping(value = "/listfinalAdvanced")
public ResultVo<IPage<OcrTaskchildPicture>> queryPageByUserSearchId( public ResultVo<IPage<OcrTaskchildPicture>> queryPageByUserSearchId(
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
//租户主键,由前端页面传送 //租户主键,由前端页面传送
String tenantId = req.getHeader("X-Tenant-Id"); 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("租户主键不能为空"); return ResultVoUtil.error("租户主键不能为空");
} }
//获取用户预设检索条件id //获取用户预设检索条件id
String userSearchId = req.getParameter("userSearchId"); String userSearchId = req.getParameter("userSearchId");
IPage<OcrTaskchildPicture> pageList = flowTaskService.queryPageByUserSearchId(pageNo,pageSize,userSearchId); IPage<OcrTaskchildPicture> pageList = flowTaskService.queryPageByUserSearchId(pageNo, pageSize, userSearchId);
return ResultVoUtil.success(pageList); return ResultVoUtil.success(pageList);
} }
/** /**
* *
* *
* CATEGORYID * CATEGORYID
*
* @return * @return
*/ */
@GetMapping("/listdataall") @GetMapping("/listdataall")
@ -537,10 +513,10 @@ public class FlowTaskController extends BaseController {
searchQuery.addEqual("createuser", user.getLoginname()); searchQuery.addEqual("createuser", user.getLoginname());
//流程类型对应流程类型表OA_CATEGORY_T的id //流程类型对应流程类型表OA_CATEGORY_T的id
searchQuery.addEqual("categoryid", categoryid); searchQuery.addEqual("categoryid", categoryid);
if(StringUtils.isNotBlank(buessinessno)){ if (StringUtils.isNotBlank(buessinessno)) {
searchQuery.addEqual("buessinessno", buessinessno); searchQuery.addEqual("buessinessno", buessinessno);
} }
if(StringUtils.isNotBlank(formid)){ if (StringUtils.isNotBlank(formid)) {
searchQuery.addEqual("id", formid); searchQuery.addEqual("id", formid);
} }
@ -551,116 +527,126 @@ public class FlowTaskController extends BaseController {
} }
return ResultVoUtil.success(flowUnionVoList); return ResultVoUtil.success(flowUnionVoList);
} }
/** /**
* *
*
* @param pageUtils * @param pageUtils
* @param request * @param request
* @return * @return
*/ */
@GetMapping("/listdatacc") @GetMapping("/listdatacc")
@ResponseBody @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_"); SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
Map<String, Object> query = searchQuery.getQuery(); Map<String, Object> query = searchQuery.getQuery();
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
flowTaskService.getMyListCc(query,userToken,paramterPage); flowTaskService.getMyListCc(query, userToken, paramterPage);
return ResultVoUtil.success(pageUtils); return ResultVoUtil.success(pageUtils);
} }
/** /**
* *
* *
*
* @return * @return
*/ */
@GetMapping("/mylistcc") @GetMapping("/mylistcc")
@ResponseBody @ResponseBody
public ResultVo myListCc(ParamterPage paramterPage, HttpServletRequest request){ public ResultVo myListCc(ParamterPage paramterPage, HttpServletRequest request) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_"); SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
Map<String, Object> query = searchQuery.getQuery(); Map<String, Object> query = searchQuery.getQuery();
IPage<FlowUnionVo> flowableccIPage = flowTaskService.getMyListCc(query,userToken,paramterPage); IPage<FlowUnionVo> flowableccIPage = flowTaskService.getMyListCc(query, userToken, paramterPage);
return ResultVoUtil.success(flowableccIPage); return ResultVoUtil.success(flowableccIPage);
} }
/** /**
* *
*
* @return * @return
*/ */
@GetMapping("/cancelTask") @GetMapping("/cancelTask")
@ResponseBody @ResponseBody
public ResultVo cancelTask(HttpServletRequest request){ public ResultVo cancelTask(HttpServletRequest request) {
String taskId = request.getParameter("taskId"); String taskId = request.getParameter("taskId");
String reason = request.getParameter("reason"); String reason = request.getParameter("reason");
flowTaskService.cancelTask(taskId,reason); flowTaskService.cancelTask(taskId, reason);
return ResultVoUtil.success(); return ResultVoUtil.success();
} }
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="重置流程流程", notes="重置流程流程") @ApiOperation(value = "重置流程流程", notes = "重置流程流程")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @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") @GetMapping("/removeTask")
@ResponseBody @ResponseBody
public ResultVo removeTask(HttpServletRequest request){ public ResultVo removeTask(HttpServletRequest request) {
String fromid = request.getParameter("fromid"); String fromid = request.getParameter("fromid");
String taskid = request.getParameter("taskid"); String taskid = request.getParameter("taskid");
return flowTaskService.removeTask(fromid,taskid); return flowTaskService.removeTask(fromid, taskid);
//return ResultVoUtil.success(); //return ResultVoUtil.success();
} }
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="重置流程流程", notes="重置流程流程") @ApiOperation(value = "重置流程流程", notes = "重置流程流程")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @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") @GetMapping("/historyTask")
@ResponseBody @ResponseBody
public ResultVo historyTask(HttpServletRequest request){ public ResultVo historyTask(HttpServletRequest request) {
String fromid = request.getParameter("fromid"); String fromid = request.getParameter("fromid");
String taskid = request.getParameter("buessinessno"); String taskid = request.getParameter("buessinessno");
return flowTaskService.removeTask(fromid,taskid); return flowTaskService.removeTask(fromid, taskid);
//return ResultVoUtil.success(); //return ResultVoUtil.success();
} }
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="重复流程", notes="重复流程") @ApiOperation(value = "重复流程", notes = "重复流程")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) })
@GetMapping("/repetitionTask") @GetMapping("/repetitionTask")
@ResponseBody @ResponseBody
public ResultVo repetitionTask(){ public ResultVo repetitionTask() {
return flowTaskService.repetitionTask(); return flowTaskService.repetitionTask();
} }
/** /**
* *
*
* @return * @return
*/ */
@ApiOperation(value="重复流程", notes="重复流程") @ApiOperation(value = "重复流程", notes = "重复流程")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) })
@GetMapping("/repetitionTaskList") @GetMapping("/repetitionTaskList")
@ResponseBody @ResponseBody
public ResultVo repetitionTaskList(){ public ResultVo repetitionTaskList() {
return flowTaskService.repetitionTaskList(); return flowTaskService.repetitionTaskList();
} }
} }

@ -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<FlowTaskInfo> flowTaskInfoList;
}

@ -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;
}

@ -5,6 +5,7 @@ import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto;
import cn.jyjz.flowable.domain.vo.FlowTaskCompleteVO; import cn.jyjz.flowable.domain.vo.FlowTaskCompleteVO;
import cn.jyjz.flowable.domain.vo.FlowTaskVO; import cn.jyjz.flowable.domain.vo.FlowTaskVO;
import cn.jyjz.flowable.domain.vo.WorkFlowNodeVO; import cn.jyjz.flowable.domain.vo.WorkFlowNodeVO;
import cn.jyjz.flowable.entity.FlowApprove;
import cn.jyjz.flowable.utils.PageUtils; import cn.jyjz.flowable.utils.PageUtils;
import cn.jyjz.xiaoyao.admin.dataobject.User; import cn.jyjz.xiaoyao.admin.dataobject.User;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage; import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
@ -34,7 +35,7 @@ public interface IFlowTaskService {
Category viewForm(String processId, HttpServletRequest request); Category viewForm(String processId, HttpServletRequest request);
Boolean complete(FlowTaskVO taskVO, HttpServletRequest request); Boolean complete(FlowApprove approve,UserToken userToken);
/** /**

@ -5,6 +5,8 @@ import cn.hutool.core.date.DateUtil;
import cn.jyjz.flowable.common.SystemConstantsOa; import cn.jyjz.flowable.common.SystemConstantsOa;
import cn.jyjz.flowable.config.CustomProcessDiagramGenerator; import cn.jyjz.flowable.config.CustomProcessDiagramGenerator;
import cn.jyjz.flowable.domain.vo.*; 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.flowable.service.IFlowInstanceService;
import cn.jyjz.xiaoyao.common.base.language.SystemMessage; import cn.jyjz.xiaoyao.common.base.language.SystemMessage;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService; import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
@ -437,32 +439,49 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
*/ */
@Override @Override
public Boolean complete(FlowTaskVO taskVO, HttpServletRequest request) { public Boolean complete(FlowApprove approve, UserToken userToken) {
try { try {
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(approve.getFlowTaskInfoList())) {
List<FlowTaskInfo> flowTaskInfoList = approve.getFlowTaskInfoList();
for (FlowTaskInfo flowTaskInfo : flowTaskInfoList) {
// 当前要处理的任务 // 当前要处理的任务
Task task = taskService.createTaskQuery().taskId(taskVO.getTaskId()).singleResult(); Task task = taskService.createTaskQuery().taskId(flowTaskInfo.getTaskId()).singleResult();
// 查询流程定义的信息 // 查询流程定义的信息
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(task.getProcessDefinitionId()) .processDefinitionId(task.getProcessDefinitionId())
.singleResult(); .singleResult();
// 对任务添加对应的审批意见 // 对任务添加对应的审批意见
taskService.addComment(task.getId(), task.getProcessInstanceId(), taskVO.getTaskComment()); taskService.addComment(task.getId(), task.getProcessInstanceId(), approve.getComment());
Map<String, Object> variables = new HashMap<>(); Map<String, Object> variables = new HashMap<>();
if (null != taskVO.getTaskApprovd() && StringUtils.isNotBlank(taskVO.getTaskApprovd().toString())) { variables.put("approvd", approve.getResult());
variables.put("taskApprovd", taskVO.getTaskApprovd().intValue()); 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);
}
userapproveService.save(userToken, approve, task,flowTaskInfo.getFormId());
}
}
//保存当前审批用户与业务表的关系
return true;
} catch (Exception e) {
log.error("e={}", e);
}
return false;
} }
variables.put("approvd", taskVO.getApprovd());
OcrTaskchildPicture model = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); /**
//只有同意,再进行候选人设置 *
if (taskVO.getApprovd()) { */
private void disposeSucceedTask(Task task, ProcessDefinition processDefinition, Map<String, Object> variables, OcrTaskchildPicture model, String formId, UserToken userToken) {
//进入下一个节点 //进入下一个节点
taskService.complete(task.getId(), variables); taskService.complete(task.getId(), variables);
updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition); updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition);
String category = processDefinition.getCategory(); String category = processDefinition.getCategory();
Category categoryDto = this.categoryService.getCategory(category); Category categoryDto = this.categoryService.getCategory(category);
IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename()); IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename());
FlowModelVO formData = iFormCustomService.getForm(taskVO.getFormid()); FlowModelVO formData = iFormCustomService.getForm(formId);
List<Task> taskList = this.nowRunTask(formData.getProcessInstanceId(), formData.getProcessdefinitionid()); List<Task> taskList = this.nowRunTask(formData.getProcessInstanceId(), formData.getProcessdefinitionid());
Task taskData = null; Task taskData = null;
if (null != taskList && !taskList.isEmpty()) { if (null != taskList && !taskList.isEmpty()) {
@ -476,18 +495,23 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//判断节点上的描述字段是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录 //判断节点上的描述字段是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录
if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) { if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) {
User user = userService.findByLoginname(formData.getAssignee()); User user = userService.findByLoginname(formData.getAssignee());
userFinalService.save(user.getId().toString(), taskVO.getFormid()); userFinalService.save(user.getId().toString(), formId);
} }
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); sendMsg(childPicture, userToken);
sendMsg(childPicture,userToken);
childPicture.setTaskId(taskData.getId()); childPicture.setTaskId(taskData.getId());
childPicture.setTaskname(taskData.getName()); childPicture.setTaskname(taskData.getName());
ocrTaskchildPictureService.updateById(childPicture); ocrTaskchildPictureService.updateById(childPicture);
} }
//增加未查看记录 //增加未查看记录
userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString()); userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString());
} else {
}
/**
*
*/
private void disposeFailureTask(Task task, String formId, Map<String, Object> variables) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
//我这里以 流程定义key(oa_category_t定义的关键字逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename //我这里以 流程定义key(oa_category_t定义的关键字逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename
String businesskey = processInstance.getBusinessKey(); String businesskey = processInstance.getBusinessKey();
@ -518,21 +542,13 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
List<String> executionIds = new ArrayList<>(); List<String> executionIds = new ArrayList<>();
executions.forEach(execution -> executionIds.add(execution.getId())); executions.forEach(execution -> executionIds.add(execution.getId()));
runtimeService.createChangeActivityStateBuilder().moveExecutionsToSingleActivityId(executionIds, endId).processVariables(variables).changeState(); runtimeService.createChangeActivityStateBuilder().moveExecutionsToSingleActivityId(executionIds, endId).processVariables(variables).changeState();
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(taskVO.getFormid())); OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
taskchildPicture.setFinishtime(System.currentTimeMillis()); taskchildPicture.setFinishtime(System.currentTimeMillis());
ocrTaskchildPictureService.updateById(taskchildPicture); 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);
}
return false;
}
private void sendMsg(OcrTaskchildPicture model,UserToken userToken){ //发送消息
private void sendMsg(OcrTaskchildPicture model, UserToken userToken) {
cn.jyjz.xiaoyao.common.base.vo.User byLoginname = userTokenService.findByLoginname(model.getAssignee()); cn.jyjz.xiaoyao.common.base.vo.User byLoginname = userTokenService.findByLoginname(model.getAssignee());
OcrMsg msg = new OcrMsg(); OcrMsg msg = new OcrMsg();
msg.setCreateTime(System.currentTimeMillis()); msg.setCreateTime(System.currentTimeMillis());

@ -1,6 +1,7 @@
package cn.jyjz.xiaoyao.oa.from.service; package cn.jyjz.xiaoyao.oa.from.service;
import cn.jyjz.flowable.domain.vo.FlowTaskVO; 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.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove; import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove;
@ -13,11 +14,11 @@ public interface UserapproveService extends BaseService<Userapprove> {
/** /**
* *
* @param userid * @param approve
* @param formid * @param formId
* @return truefalse * @return truefalse
*/ */
public boolean save(UserToken userToken, FlowTaskVO taskVO, Task task ); public boolean save(UserToken userToken, FlowApprove approve, Task task,String formId);
/** /**
* *

@ -1,6 +1,7 @@
package cn.jyjz.xiaoyao.oa.from.service.impl; package cn.jyjz.xiaoyao.oa.from.service.impl;
import cn.jyjz.flowable.domain.vo.FlowTaskVO; 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.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.oa.from.dataDao.UserapproveMybatisDao; import cn.jyjz.xiaoyao.oa.from.dataDao.UserapproveMybatisDao;
@ -22,22 +23,19 @@ public class UserapproveServiceImpl extends BaseServiceImpl<UserapproveMybatisDa
private UserapproveMybatisDao userapprovemybatisdao; private UserapproveMybatisDao userapprovemybatisdao;
@Override @Override
public boolean save(UserToken userToken, FlowTaskVO taskVO, Task taskd) { public boolean save(UserToken userToken, FlowApprove approve, Task taskd,String formId) {
Userapprove userapprove = new Userapprove(); Userapprove userapprove = new Userapprove();
userapprove.setUserid(Long.parseLong(userToken.getUserid())); userapprove.setUserid(Long.parseLong(userToken.getUserid()));
userapprove.setFormid(Long.parseLong(taskVO.getFormid())); userapprove.setFormid(Long.parseLong(formId));
userapprove.setTaskname(taskd.getName()); userapprove.setTaskname(taskd.getName());
userapprove.setTaskcomment(taskVO.getTaskComment()); userapprove.setTaskcomment(approve.getComment());
userapprove.setCreatedate(System.currentTimeMillis()); userapprove.setCreatedate(System.currentTimeMillis());
userapprove.setUsername(userToken.getUsername()); userapprove.setUsername(userToken.getUsername());
if (taskVO.getApprovd()) { if (approve.getResult()) {
userapprove.setStatshis(2); userapprove.setStatshis(2);
} else { } else {
userapprove.setStatshis(3); userapprove.setStatshis(3);
} }
return this.save(userapprove); return this.save(userapprove);
} }

@ -0,0 +1,59 @@
package cn.jyjz.xiaoyao.ocr.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* ClassName ApproveNodeDto$.java
* Description:
* Author scl.
* Date 2024/3/27 23:57
*/
@Data
public class ApproveNodeDto {
/**
*
*/
private String nodeName;
/**
*
*/
private String approveByName;
/**
*
*/
private Integer approveWay;
/**
*
*/
private Integer approveResult;
/**
*
*/
private String reason;
/**
*
*/
private Integer processMethod;
/**
*
*/
private String approveRemark;
/**
*
*/
private String extendField;
/**
*
*/
private Integer isPictureRight;
/**
*
*/
private Integer isPictureRepeat;
/**
*
*/
private Integer isBriefRepeat;
}

@ -0,0 +1,75 @@
package cn.jyjz.xiaoyao.ocr.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* ClassName FlowResultDto$.java
* Description:
* Author scl.
* Date 2024/3/27 22:39
*/
@Data
public class FlowResultDto {
/**
* id
*/
private Long tenantNo;
/**
* id
*/
private Long accountNo;
/**
* id 2.0no
*/
private Long taskNo;
/**
* 0.,1.'
*/
private Integer approveResult;
/**
*
*/
private String approveRemark;
/**
*
*/
private BigDecimal pictureMatchDegree;
/**
*
*/
private String extendField;
/**
* 0 ,1
*/
private Integer isPictureRepeat;
/**
* 0 ,1
*/
private Integer isPictureRight;
/**
* 0 ,1
*/
private Integer isBriefRepeat;
/**
*
*/
private List<Long> falseImgList;
/**
*
*/
private List<Long> briefRepeatTaskList;
/**
*
*/
private List<ApproveNodeDto> approveDetailList;
/**
*
*/
private List<ReuseImgDto> pictureRepeatList;
}

@ -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.0no
*/
private Long imgNo;
/**
* taskNo 2.0no
*/
private Long taskNo;
/**
* ImgNo 2.0no
*/
private Long repeatImgNo;
}

@ -51,7 +51,7 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
* @param formid * @param formid
* @return * @return
*/ */
public boolean validateApprove(String[] formid); public boolean validateApprove(List<String> formid);
public boolean validateBoole(String[] formid); public boolean validateBoole(String[] formid);
@ -61,7 +61,7 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
* @param userToken * @param userToken
* @return * @return
*/ */
public boolean validateAssignee(String[] formid,UserToken userToken); public boolean validateAssignee(List<String> formid,UserToken userToken);
/** /**
* *
@ -147,4 +147,6 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId); Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId);
void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture,OcrPicture picture);
} }

@ -14,6 +14,7 @@ import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService; import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.*; 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.dto.UserapproveDto;
import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService; import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService; 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 org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -201,7 +203,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
* @param userToken * @param userToken
* @return * @return
*/ */
public boolean validateAssignee(String[] formid, UserToken userToken) { public boolean validateAssignee(List<String> formid, UserToken userToken) {
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("ID", formid); queryWrapper.in("ID", formid);
List<OcrTaskchildPicture> list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper); List<OcrTaskchildPicture> list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper);
@ -224,7 +226,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
* @param formid * @param formid
* @return * @return
*/ */
public boolean validateApprove(String[] formid) { public boolean validateApprove(List<String> formid) {
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("ID", formid); queryWrapper.in("ID", formid);
List<OcrTaskchildPicture> list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper); List<OcrTaskchildPicture> list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper);
@ -686,4 +688,14 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
return ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName); return ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName);
} }
@Override
public void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture) {
FlowResultDto flowResultDto = new FlowResultDto();
flowResultDto.setTenantNo(picture.getTenantId());
flowResultDto.setAccountNo(Long.parseLong(picture.getPictureid()));
flowResultDto.setTaskNo(Long.parseLong(picture.getRemark()));
flowResultDto.setPictureMatchDegree(BigDecimal.valueOf(picture.getSimilarityscore()));
flowResultDto.setIsPictureRepeat(Integer.valueOf(picture.getField14()));
}
} }

Loading…
Cancel
Save