feat:修改创建任务逻辑

pull/166/head
sunchenliang 11 months ago
parent b1435e04c3
commit d3f3fc9804

@ -23,13 +23,11 @@ import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService; import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo; import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch; import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild; import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild;
import cn.jyjz.xiaoyao.ocr.service.OcrSearchmanagerService; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchchildService;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo; import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import com.alanpoi.common.util.StringUtils; import com.alanpoi.common.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -39,6 +37,7 @@ import io.swagger.annotations.*;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -75,6 +74,9 @@ public class FlowTaskController extends BaseController {
@Resource @Resource
private OcrUsersearchchildService usersearchchildService; private OcrUsersearchchildService usersearchchildService;
@Autowired
private OcrContractorTaskService contractorTaskService;
// /** // /**
// * 查询我的待办任务 // * 查询我的待办任务
// * @return // * @return
@ -488,6 +490,7 @@ public class FlowTaskController extends BaseController {
} else { } else {
searchQuery.addEqual("thisLoginUserid", user.getLoginname()); searchQuery.addEqual("thisLoginUserid", user.getLoginname());
searchQuery.addEqual("tenantid", tenantId); searchQuery.addEqual("tenantid", tenantId);
} }
String searchId = request.getParameter("searchId"); String searchId = request.getParameter("searchId");
@ -497,10 +500,13 @@ public class FlowTaskController extends BaseController {
disSearchQuery(searchQuery, userSearch); disSearchQuery(searchQuery, userSearch);
} }
} }
List<OcrContractorTask> contractorTask = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getTenantId,tenantId ));
if (!org.springframework.util.CollectionUtils.isEmpty(contractorTask)) {
OcrContractorTask ocrContractorTask = contractorTask.get(0);
searchQuery.addEqual("contractor", ocrContractorTask.getField());
}
Map<String, Object> query = searchQuery.getQuery(); Map<String, Object> query = searchQuery.getQuery();
flowTaskService.getFinalProcessInstances(query, pageUtils, user); flowTaskService.getFinalProcessInstances(query, pageUtils, user);
return ResultVoUtil.success(pageUtils); return ResultVoUtil.success(pageUtils);
} }

@ -911,12 +911,14 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
OcrPicture first = ocrPictureService.getOne(new LambdaQueryWrapper<OcrPicture>().eq(OcrPicture::getId, taskchildPicture.getPictureid())); OcrPicture first = ocrPictureService.getOne(new LambdaQueryWrapper<OcrPicture>().eq(OcrPicture::getId, taskchildPicture.getPictureid()));
List<OcrContractorTask> contractorList = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getTenantId, taskchildPicture.getTenantid())); List<OcrContractorTask> contractorList = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getTenantId, taskchildPicture.getTenantid()));
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractorList)) { if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractorList)) {
List<String> userList = contractorList.stream().map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
Class<? extends OcrPicture> aClass = first.getClass(); Class<? extends OcrPicture> aClass = first.getClass();
Field field = aClass.getDeclaredField(contractorList.get(0).getField()); Field field = aClass.getDeclaredField(contractorList.get(0).getField());
field.setAccessible(true); field.setAccessible(true);
String fieldValue = (String) field.get(first); String fieldValue = (String) field.get(first);
log.info("厂商名称------{}",fieldValue); log.info("厂商名称------{}", fieldValue);
List<String> collect = contractorList.stream().filter(contractorTask -> contractorTask.getContractor().equals(fieldValue)).map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList()); List<String> collect = contractorList.stream().filter(contractorTask -> contractorTask.getContractor().equals(fieldValue)).map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
List<String> assignees = new ArrayList<>();
List<String> assigneeList = new ArrayList<>(); List<String> assigneeList = new ArrayList<>();
for (String str : candidateUsers) { for (String str : candidateUsers) {
if (collect.contains(str)) { if (collect.contains(str)) {
@ -925,7 +927,14 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(assigneeList)) { if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(assigneeList)) {
taskService.claim(task.getId(), assigneeList.get(rand.nextInt(assigneeList.size()))); taskService.claim(task.getId(), assigneeList.get(rand.nextInt(assigneeList.size())));
}else { }
if (CollectionUtils.isEmpty(assigneeList) && org.apache.commons.collections4.CollectionUtils.isNotEmpty(userList)) {
List<String> userCcollect = candidateUsers.stream().filter(o -> !userList.contains(o)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(userCcollect)) {
userCcollect = candidateUsers;
}
taskService.claim(task.getId(), userCcollect.get(rand.nextInt(userCcollect.size())));
} else {
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size()))); taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
} }
} else { } else {

@ -1016,7 +1016,7 @@
<select id="listFinalTask" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture" <select id="listFinalTask" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture"
parameterType="java.util.Map"> parameterType="java.util.Map">
select tcp.*, select distinct tcp.*,
pic.field11 reporttime, pic.field11 reporttime,
pic.similarity_score similarityscore, pic.similarity_score similarityscore,
pic.server_thumbnail_url serverThumbnailUrl, pic.server_thumbnail_url serverThumbnailUrl,
@ -1024,6 +1024,7 @@
from ocr_taskchild_picture tcp from ocr_taskchild_picture tcp
left join ocr_picture pic left join ocr_picture pic
on tcp.PICTUREID = pic.ID on tcp.PICTUREID = pic.ID
left join ocr_contractor_task oct on pic.tenant_id = oct.tenant_id and pic.${contractor.value} = oct.contractor
<include refid="Base_Where_union"> <include refid="Base_Where_union">
</include> </include>
and tcp.ISFINAIL = 1 and tcp.ISFINAIL = 1
@ -1034,8 +1035,9 @@
</if> </if>
<if test="thisLoginUserid != null and isFail != null"> <if test="thisLoginUserid != null and isFail != null">
and (FIND_IN_SET(#{thisLoginUserid.value} and (FIND_IN_SET(#{thisLoginUserid.value}
, tcp.ASSIGNEE) , tcp.ASSIGNEE) or
or tcp.STATES = 5) if((select count(1) from ocr_contractor_task where tenant_id =#{tenantid.value} and pic.${contractor.value} = contractor and task_user_assignee = #{thisLoginUserid.value})>1, 1=1,tcp.STATES = 5))
<!-- or (oct.id is not null and oct.tenant_id = #{tenantid}) or tcp.STATES = 5)-->
</if> </if>
<if test="fromuptimeStart != null"> <if test="fromuptimeStart != null">

Loading…
Cancel
Save