feat:修改创建任务逻辑

pull/165/head
sunchenliang 11 months ago
parent c5690c74b3
commit 6358674e34

@ -16,6 +16,9 @@ import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.oa.from.service.UserViewapproeService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics;
import org.flowable.bpmn.model.UserTask;
@ -46,15 +49,16 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
private IFlowTaskService flowTaskService;
@Resource
private UserViewapproeService userViewApproeService;
@Resource
private OcrTaskchildPictureService ocrTaskchildPictureService;
@Override
public boolean startProcessInstanceById(String procDefId, Map<String, Object> variables, HttpServletRequest request, String formid, String servicename,String deptid) {
public boolean startProcessInstanceById(String procDefId, Map<String, Object> variables, HttpServletRequest request, String formid, String servicename, String deptid) {
IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) {
iFormCustomService = SpringUtils.getBean(servicename);
}
if (StringUtils.isBlank(formid)) {
//表单主键
formid = iFormCustomService.saveForm(request);
@ -87,24 +91,27 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
try {
variables.put("businessKey", businessKey);
//获取下一个节点
UserTask userTask = this.flowTaskService.getNextTasks(procDefId);
if(null != userTask){
if (null != userTask) {
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
List<String> loginnames = flowTaskService.getAssignee(userTask,userName);
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
List<String> loginnames = flowTaskService.getAssignee(userTask, userName);
if (null != loginnames && !loginnames.isEmpty()) {
variables.put("persons", loginnames);
}
}
}
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(formid);
taskchildPicture.setProcessdefinitionid(processInstance.getProcessDefinitionId());
taskchildPicture.setProcessinstanceid(processInstance.getProcessInstanceId());
ocrTaskchildPictureService.updateById(taskchildPicture);
if (null != iFormCustomService) {
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),deptid);
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(), deptid);
if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
@ -145,7 +152,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
}
@Override
public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename,String depti) {
public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename, String depti) {
IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) {
@ -173,24 +180,24 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
try {
variables.put("businessKey", businessKey);
//获取下一个节点
UserTask userTask = this.flowTaskService.getNextTasks(procDefId);
if(null != userTask){
if (null != userTask) {
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
List<String> loginnames = flowTaskService.getAssignee(userTask,userName);
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
List<String> loginnames = flowTaskService.getAssignee(userTask, userName);
if (null != loginnames && !loginnames.isEmpty()) {
variables.put("persons", loginnames);
}
}
}
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
if (null != iFormCustomService) {
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),depti);
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(), depti);
if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);

@ -48,6 +48,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.SneakyThrows;
import org.apache.commons.lang3.ObjectUtils;
import org.flowable.bpmn.constants.BpmnXMLConstants;
import org.flowable.bpmn.model.*;
@ -70,12 +71,14 @@ import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@ -122,6 +125,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
private OcrPrevailCloudLogService prevailCloudLogService;
@Resource
private PrevailCloudApi prevailCloudApi;
@Autowired
private OcrContractorTaskService contractorTaskService;
@Override
public void myTodoTaskList(PageUtils vo, HttpServletRequest request) {
@ -837,6 +842,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*
* @param processInstanceId
*/
@SneakyThrows
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId, String deptid) {
FlowTaskCompleteVO flowTaskCompleteVO = null;
@ -901,7 +907,30 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
List<String> candidateUsers = userTask.getCandidateUsers();
if (null != candidateUsers && !candidateUsers.isEmpty()) {
Random rand = new Random();
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getProcessinstanceid, processInstanceId).eq(OcrTaskchildPicture::getProcessdefinitionid, processDefinitionId));
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()));
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractorList)) {
Class<? extends OcrPicture> aClass = first.getClass();
Field field = aClass.getDeclaredField(contractorList.get(0).getField());
field.setAccessible(true);
String fieldValue = (String) field.get(first);
log.info("厂商名称------{}",fieldValue);
List<String> collect = contractorList.stream().filter(contractorTask -> contractorTask.getContractor().equals(fieldValue)).map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
List<String> assigneeList = new ArrayList<>();
for (String str : candidateUsers) {
if (collect.contains(str)) {
assigneeList.add(str);
}
}
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(assigneeList)) {
taskService.claim(task.getId(), assigneeList.get(rand.nextInt(assigneeList.size())));
}else {
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
}
} else {
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
}
}
//得到候选组
@ -1963,7 +1992,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Override
public ResultVo repetitionTask(Integer type, String tenantId, Map<String, Object> query) {
query.put("type",type);
query.put("type", type);
List<RepeatedContentVo> repeatedContentVoList = flowableccMybatisDao.repetitionTaskNew(query);
List<String> formIdsToUpdate = new ArrayList<>();
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(repeatedContentVoList)) {
@ -1998,7 +2027,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
}
if(!CollectionUtils.isEmpty(checkDescribeHis)){
if (!CollectionUtils.isEmpty(checkDescribeHis)) {
ocrCheckDescribeHisService.saveOrUpdateBatch(checkDescribeHis);
UpdateWrapper<OcrTaskchildPicture> updateWrapper = new UpdateWrapper<>();
updateWrapper.in("PICTUREID", formIdsToUpdate)

@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
/**
* ClassName $className$.java
* Description:
* Description:
* Author scl.
* Date 2024/6/23 11:20
*/
@ -51,4 +51,10 @@ public class OcrContractorTask {
*/
@TableField(value = "task_user_name")
private String taskUserName;
}
/**
*
*/
@TableField(value = "field")
private String field;
}

@ -228,22 +228,11 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
queryWrapper.in("ID", formid);
List<OcrTaskchildPicture> list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper);
List<OcrPicture> pictureList = ocrPictureService.listByIds(list.stream().map(OcrTaskchildPicture::getPictureid).collect(Collectors.toList()));
Map<Long, List<OcrPicture>> picMap = pictureList.stream().collect(Collectors.groupingBy(OcrPicture::getId));
//目前没有做其他信息返回,如果需要再做修改
for (OcrTaskchildPicture ocrTaskchildPicture : list) {
boolean result = true;
OcrPicture first = pictureList.stream().filter(pic -> pic.getId().equals(ocrTaskchildPicture.getPictureid())).findFirst().get();
if (StringUtils.isNotBlank(first.getField5())) {
List<OcrContractorTask> contractorList = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getContractor, first.getField5()).eq(OcrContractorTask::getTenantId, ocrTaskchildPicture.getTenantid()));
if (CollectionUtils.isNotEmpty(contractorList)) {
List<String> collect = contractorList.stream().map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect) && !collect.contains(userToken.getLoginname())) {
result = false;
}
}
}
//判断审批人是否为当前登录用户
if (result && ocrTaskchildPicture.getAssignee().contains(userToken.getLoginname()) &&
if (ocrTaskchildPicture.getAssignee().contains(userToken.getLoginname()) &&
(ocrTaskchildPicture.getStates().intValue() != SystemConstantsOa.OA_STATUS_TYPE_END
&& ocrTaskchildPicture.getStates().intValue() != SystemConstantsOa.OA_STATUS_TYPE_REFUSE)) {
formIds.add(ocrTaskchildPicture.getId().toString());

Loading…
Cancel
Save