新增外部联系人

This commit is contained in:
jinqiming 2021-11-04 19:18:40 +08:00
parent 92a7d30962
commit eeadef6dfd
6 changed files with 43 additions and 15 deletions

View File

@ -9,13 +9,16 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.snow.common.enums.DingFlowTaskType;
import com.snow.common.enums.DingTalkListenerType;
import com.snow.framework.util.ShiroUtils;
import com.snow.system.domain.*;
import com.snow.system.domain.SysOaTaskDistribute;
import com.snow.system.event.SyncEvent;
import com.snow.system.service.ISysOaTaskDistributeService;
import com.snow.system.service.ISysUserService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -52,6 +55,9 @@ public class SysOaTaskController extends BaseController
@Autowired
private ISysUserService sysUserService;
@Autowired
private ApplicationContext applicationContext;
@RequiresPermissions("system:task:view")
@GetMapping()
public String task()
@ -215,6 +221,9 @@ public class SysOaTaskController extends BaseController
sysOaTaskDistribute.setTaskExecuteId(String.valueOf(ShiroUtils.getUserId()));
sysOaTaskDistribute.setUpdateBy(String.valueOf(ShiroUtils.getUserId()));
sysOaTaskDistribute.setTaskExecuteStatus(DingFlowTaskType.COMPLETED.getCode());
//事件发送
SyncEvent<SysOaTaskDistribute> syncEvent = new SyncEvent(sysOaTaskDistribute, DingTalkListenerType.UPDATE_TODO_TASK_EXECUTOR_STATUS);
applicationContext.publishEvent(syncEvent);
return toAjax(sysOaTaskDistributeService.updateSysOaTaskDistribute(sysOaTaskDistribute));
}
/**

View File

@ -29,7 +29,7 @@ public enum DingTalkListenerType {
GET_EXT_CONTACT_USER(5,3,"get_ext_contact_user"),
//*******************回调
CALL_BACK_CHECK_URL(1,10, "回调check_url"),
CALL_BACK_REGISTER(1,10, "回调注册"),
@ -40,6 +40,8 @@ public enum DingTalkListenerType {
CALL_BACK_FAILED_RESULT(23,10, "获取回调失败结果"),
//*****************待办
WORK_RECODE_CREATE(1,20, "创建待办"),
GET_WORK_RECORD_USER(2,20,"获取用户待办"),
@ -48,6 +50,9 @@ public enum DingTalkListenerType {
WORK_RECORD_DELETE(4,20,"删除待办"),
UPDATE_TODO_TASK_EXECUTOR_STATUS(7,20,"更新任务执行状态"),
/**
* 审批任务开始结束转交
*/

View File

@ -1,11 +1,14 @@
package com.snow.dingtalk.listener;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.aliyun.dingtalktodo_1_0.models.GetTodoTaskBySourceIdResponseBody;
import com.snow.common.enums.DingTalkListenerType;
import com.snow.common.utils.spring.SpringUtils;
import com.snow.dingtalk.service.impl.WorkRecodeServiceImpl;
import com.snow.framework.web.domain.common.SysSendMessageDTO;
import com.snow.system.domain.SysOaTask;
import com.snow.system.domain.SysOaTaskDistribute;
import com.snow.system.event.SyncEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -29,7 +32,7 @@ public class WorkRecodeEventService implements ISyncDingTalkInfo {
Integer code = eventType.getCode();
//钉钉创建待办
if(code.equals(DingTalkListenerType.WORK_RECODE_CREATE.getCode())){
SysOaTask sysOaTask=(SysOaTask)syncEvent.getSource();
SysOaTaskDistribute sysOaTask=(SysOaTaskDistribute)syncEvent.getSource();
log.info("@@创建钉钉待办系统传入的参数:{}",JSON.toJSONString(sysOaTask));
workRecodeService.createTodoTask(sysOaTask);
}
@ -45,6 +48,16 @@ public class WorkRecodeEventService implements ISyncDingTalkInfo {
log.info("@@删除钉钉待办系统传入的参数:{}",JSON.toJSONString(taskId));
workRecodeService.deleteTodoTask(taskId);
}
//更新任务状态
if(code.equals(DingTalkListenerType.UPDATE_TODO_TASK_EXECUTOR_STATUS.getCode())){
SysOaTaskDistribute sysOaTaskDistribute=(SysOaTaskDistribute)syncEvent.getSource();
GetTodoTaskBySourceIdResponseBody body = workRecodeService.getTodoTaskByBusinessId(String.valueOf(sysOaTaskDistribute.getId()));
boolean isComplete=false;
if(ObjectUtil.isNotNull(sysOaTaskDistribute.getTaskCompleteTime())){
isComplete=true;
}
workRecodeService.updateTodoTaskExecutorStatus(body.getId(),isComplete);
}
//钉钉发送普通消息
else if(code.equals(DingTalkListenerType.ASYNCSEND_V2.getCode())){

View File

@ -6,6 +6,7 @@ import com.snow.dingtalk.model.request.WorkrecordAddRequest;
import com.snow.dingtalk.model.request.WorkrecordGetbyuseridRequest;
import com.snow.framework.web.domain.common.SysSendMessageDTO;
import com.snow.system.domain.SysOaTask;
import com.snow.system.domain.SysOaTaskDistribute;
import org.springframework.stereotype.Service;
/**
@ -31,7 +32,7 @@ public interface WorkRecodeService {
* @param sysOaTask
* @return
*/
String createTodoTask(SysOaTask sysOaTask);
String createTodoTask(SysOaTaskDistribute sysOaTaskDistribute);
/**
* 删除待办

View File

@ -32,6 +32,7 @@ import com.snow.framework.util.ShiroUtils;
import com.snow.framework.web.domain.common.SysSendMessageDTO;
import com.snow.system.domain.SysMessageTemplate;
import com.snow.system.domain.SysOaTask;
import com.snow.system.domain.SysOaTaskDistribute;
import com.snow.system.service.ISysMessageTemplateService;
import com.snow.system.service.ISysUserService;
import com.snow.system.service.impl.SysConfigServiceImpl;
@ -92,7 +93,8 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
}
@Override
public String createTodoTask(SysOaTask sysOaTask) {
public String createTodoTask(SysOaTaskDistribute sysOaTaskDistribute) {
SysOaTask sysOaTask = sysOaTaskDistribute.getSysOaTask();
List<String> taskDistributeId = sysOaTask.getTaskDistributeId();
CreateTodoTaskHeaders createTodoTaskHeaders = new CreateTodoTaskHeaders();
@ -113,7 +115,7 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
.setPriority(sysOaTask.getPriority())
.setNotifyConfigs(notifyConfigs);
if (ObjectUtil.isNotNull(sysOaTask.getTaskCompleteTime())) {
createTodoTaskRequest.setDueTime(sysOaTask.getTaskCompleteTime().getTime());
createTodoTaskRequest.setDueTime(sysOaTaskDistribute.getTaskCompleteTime().getTime());
}
//执行者id
if(CollUtil.isNotEmpty(taskDistributeId)){
@ -184,7 +186,7 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
.setId(taskId)
.setIsDone(status);
UpdateTodoTaskExecutorStatusRequest updateTodoTaskExecutorStatusRequest = new UpdateTodoTaskExecutorStatusRequest()
.setExecutorStatusList(java.util.Arrays.asList(
.setExecutorStatusList(Arrays.asList(
executorStatusList0
));
try {

View File

@ -5,6 +5,7 @@ import com.snow.common.constant.SequenceConstants;
import com.snow.common.core.text.Convert;
import com.snow.common.enums.DingFlowTaskType;
import com.snow.common.enums.DingTalkListenerType;
import com.snow.common.enums.TaskStatus;
import com.snow.common.exception.BusinessException;
import com.snow.common.utils.DateUtils;
import com.snow.system.domain.SysOaTask;
@ -83,13 +84,9 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService
sysOaTask.setCreateTime(DateUtils.getNowDate());
String newSequenceNo = sequenceService.getNewSequenceNo(SequenceConstants.OA_TASK_SEQUENCE);
sysOaTask.setTaskNo(newSequenceNo);
sysOaTask.setTaskStatus(TaskStatus.UN_FINISH.getCode());
List<String> taskDistributeIdList= sysOaTask.getTaskDistributeId();
if(CollUtil.isEmpty(taskDistributeIdList)){
//待完成
sysOaTask.setTaskStatus(DingFlowTaskType.NEW.getCode());
}else {
//已分配
sysOaTask.setTaskStatus(DingFlowTaskType.RUNNING.getCode());
if(CollUtil.isNotEmpty(taskDistributeIdList)){
taskDistributeIdList.forEach(t->{
SysOaTaskDistribute sysOaTaskDistribute=new SysOaTaskDistribute();
//任务分配人
@ -98,11 +95,12 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService
sysOaTaskDistribute.setTaskExecuteStatus(DingFlowTaskType.RUNNING.getCode());
sysOaTaskDistribute.setCreateBy(sysOaTask.getCreateBy());
sysOaTaskDistributeService.insertSysOaTaskDistribute(sysOaTaskDistribute);
sysOaTaskDistribute.setSysOaTask(sysOaTask);
//事件发送
SyncEvent<SysOaTaskDistribute> syncEvent = new SyncEvent(sysOaTaskDistribute, DingTalkListenerType.WORK_RECODE_CREATE);
applicationContext.publishEvent(syncEvent);
});
}
//事件发送
SyncEvent<SysOaTask> syncEvent = new SyncEvent(sysOaTask, DingTalkListenerType.WORK_RECODE_CREATE);
applicationContext.publishEvent(syncEvent);
return sysOaTaskMapper.insertSysOaTask(sysOaTask);
}