提交 c01de7fc 编写于 作者: liyi_hz2008's avatar liyi_hz2008 提交者: liyi_hz2008

新增将工作转换为某项工作的子工作的单独服务

上级 4e01a3b3
......@@ -713,7 +713,7 @@ public class ActionSave extends BaseAction {
}
public static class Wo extends WoId {
public static class Wo extends WoId {
@FieldDescribe("操作引起的动态内容")
List<WoDynamic> dynamics = new ArrayList<>();
......
package com.x.teamwork.assemble.control.jaxrs.task;
import com.google.gson.Gson;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.teamwork.assemble.control.service.BatchOperationPersistService;
import com.x.teamwork.assemble.control.service.BatchOperationProcessService;
import com.x.teamwork.core.entity.*;
import net.sf.ehcache.Element;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* 将任务转为子任务
*/
public class ActionTransformAsSubTask extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionTransformAsSubTask.class);
/**
* 将任务转换为子任务的服务
* 1、确认ID是否合法
* 2、将任务的parentId设置为parentId
* 3、保存任务信息
* 4、记录动态信息
*
* @param request
* @param effectivePerson
* @param sourceTaskId
* @param parentId
* @return
* @throws Exception
*/
protected ActionResult<Wo> execute(HttpServletRequest request, EffectivePerson effectivePerson, String sourceTaskId, String parentId ) throws Exception {
ActionResult<Wo> result = new ActionResult<>();
Wo wo = new Wo();
Task sourceTask = null;
Task parentTask = null;
TaskDetail taskDetail = null;
TaskExtField taskExtField = null;
List<ProjectExtFieldRele> extFieldReleList = null;
List<TaskTag> tags = null;
List<Dynamic> dynamics = new ArrayList<>();
Boolean check = true;
if ( StringUtils.isEmpty( sourceTaskId ) ) {
check = false;
Exception exception = new TaskTransformException("需要转换的工作任务ID不允许为空!");
result.error( exception );
}
if ( StringUtils.isEmpty( parentId ) ) {
check = false;
Exception exception = new TaskTransformException("上级任务ID不允许为空!");
result.error( exception );
}
if (check) {
//查询需要转换为子任务的任务是否存在
try {
sourceTask = taskQueryService.get( sourceTaskId );
if ( sourceTask == null) {
check = false;
Exception exception = new TaskNotExistsException(sourceTaskId);
result.error( exception );
}
} catch (Exception e) {
check = false;
Exception exception = new TaskQueryException(e, "根据指定ID查询工作任务信息对象时发生异常。sourceTaskId:" + sourceTaskId );
result.error(exception);
logger.error(e, effectivePerson, request, null);
}
}
if (check) {
//查询上级任务是否存在
try {
parentTask = taskQueryService.get( parentId );
if ( parentTask == null) {
check = false;
Exception exception = new TaskNotExistsException( parentId );
result.error( exception );
}
} catch (Exception e) {
check = false;
Exception exception = new TaskQueryException(e, "根据指定ID查询工作任务信息对象时发生异常。parentId:" + parentId );
result.error(exception);
logger.error(e, effectivePerson, request, null);
}
}
try {
taskPersistService.updateParentId( sourceTask.getId(), parentTask.getId(), effectivePerson );
} catch (Exception e) {
check = false;
Exception exception = new TaskPersistException(e, "工作上级任务ID信息更新时发生异常。");
result.error(exception);
logger.error(e, effectivePerson, request, null);
}
if (check) {
//记录工作任务信息变化记录
try {
dynamics = dynamicPersistService.subTaskTransformDynamic( sourceTask, parentTask, effectivePerson );
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
}
}
if (check) {
try {
new BatchOperationPersistService().addOperation(
BatchOperationProcessService.OPT_OBJ_TASK,
BatchOperationProcessService.OPT_TYPE_PERMISSION, sourceTask.getId(), sourceTask.getId(), "刷新文档权限:ID=" + sourceTask.getId() );
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
}
}
if (check) {
try {
new BatchOperationPersistService().addOperation(
BatchOperationProcessService.OPT_OBJ_TASK,
BatchOperationProcessService.OPT_TYPE_PERMISSION, parentTask.getId(), parentTask.getId(), "刷新文档权限:ID=" + parentTask.getId() );
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
}
}
if( ListTools.isNotEmpty( dynamics ) ) {
wo.setDynamics( WoDynamic.copier.copy( dynamics ) );
}
// 更新缓存
ApplicationCache.notify( Task.class );
ApplicationCache.notify( TaskList.class );
ApplicationCache.notify( TaskView.class );
ApplicationCache.notify( Review.class );
ApplicationCache.notify( TaskGroup.class );
ApplicationCache.notify( Dynamic.class );
result.setData( wo );
return result;
}
public static class Wo extends WoId {
@FieldDescribe("操作引起的动态内容")
List<ActionSave.WoDynamic> dynamics = new ArrayList<>();
public List<ActionSave.WoDynamic> getDynamics() {
return dynamics;
}
public void setDynamics(List<ActionSave.WoDynamic> dynamics) {
this.dynamics = dynamics;
}
}
public static class WoDynamic extends Dynamic{
private static final long serialVersionUID = -5076990764713538973L;
public static WrapCopier<Dynamic, ActionSave.WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, ActionSave.WoDynamic.class, null, JpaObject.FieldsInvisible);
private Long rank = 0L;
public Long getRank() {
return rank;
}
public void setRank(Long rank) {
this.rank = rank;
}
}
}
\ No newline at end of file
......@@ -91,6 +91,26 @@ public class TaskAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "将指定的工作转换为子工作.", action = ActionTransformAsSubTask.class)
@GET
@Path("transform/{tid}/parent/{pid}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void transformAsSubTask(@Suspended final AsyncResponse asyncResponse,
@Context HttpServletRequest request,
@JaxrsParameterDescribe("指定任务ID") @PathParam("tid") String tid,
@JaxrsParameterDescribe("上级任务ID") @PathParam("pid") String pid) {
ActionResult<ActionTransformAsSubTask.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionTransformAsSubTask().execute( request, effectivePerson, tid, pid );
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "查询我的项目首页中工作任务视图信息.", action = ActionStatisticMyTaskViews.class)
@GET
@Path("statitic/group/{projectId}")
......
package com.x.teamwork.assemble.control.jaxrs.task;
import com.x.base.core.project.exception.PromptException;
class TaskTransformException extends PromptException {
private static final long serialVersionUID = 1859164370743532895L;
TaskTransformException(Throwable e ) {
super("系统在转换工作任务为子任务时发生异常。" , e );
}
TaskTransformException(Throwable e, String message ) {
super("系统在转换工作任务为子任务时发生异常。Message:" + message, e );
}
TaskTransformException(String message ) {
super("系统在转换工作任务为子任务时发生异常。Message:" + message );
}
}
......@@ -82,7 +82,6 @@ public class DynamicPersistService {
/**
* 保存项目创建或者更新动态信息
* @param old_object
* @param object
* @param effectivePerson
* @param content
......@@ -132,9 +131,7 @@ public class DynamicPersistService {
* 保存项目扩展信息保存操作动态信息
* @param object_old
* @param object
* @param optType
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -179,8 +176,8 @@ public class DynamicPersistService {
/**
* 保存动态信息
* @param object_old
* @param object
* @param optType
* @param effectivePerson
* @param content
* @return
......@@ -230,7 +227,6 @@ public class DynamicPersistService {
* @param object_old
* @param object_new
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -259,12 +255,54 @@ public class DynamicPersistService {
}
/**
* 保存动态信息
* @param dynamic
* 保存转换子工作的动态信息
* @param subTask
* @param parentTask
* @param effectivePerson
* @return
* @throws Exception
*/
public List<Dynamic> subTaskTransformDynamic( Task subTask, Task parentTask, EffectivePerson effectivePerson ) throws Exception {
if ( subTask == null) {
throw new Exception("sourceTask is null.");
}
if ( parentTask == null) {
throw new Exception("parentTask is null.");
}
if ( effectivePerson == null ) {
throw new Exception("effectivePerson is null.");
}
List<Dynamic> result = new ArrayList<>();
List<Dynamic> dynamics = null;
//记录一个添加子任务转换的动态信息
result.add(dynamicService.getTaskTransformDynamic( parentTask, subTask, effectivePerson));
//记录一个为上级任务添加子任务的动态信息
result.add(dynamicService.getTaskSplitDynamic( parentTask, subTask, effectivePerson));
try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
if( ListTools.isNotEmpty( result )) {
for( Dynamic dynamic : result ) {
//持久化工作操作动态
dynamicService.save( emc, dynamic, "" );
}
}
} catch (Exception e) {
throw e;
}
return result;
}
/**
* 保存项目工作组信息动态
* @param object_old
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
public Dynamic projectGroupSaveDynamic( ProjectGroup object_old, ProjectGroup object, EffectivePerson effectivePerson, String content ) throws Exception {
if ( object == null) {
throw new Exception("object is null.");
......@@ -287,7 +325,6 @@ public class DynamicPersistService {
* 保存项目组删除动态信息
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -311,7 +348,6 @@ public class DynamicPersistService {
* 保存工作任务删除动态信息
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -338,7 +374,6 @@ public class DynamicPersistService {
* @param addManagers
* @param removeManagers
* @param effectivePerson
* @param content
* @throws Exception
*/
public List<Dynamic> taskManagerUpdateDynamic(Task task, List<String> addManagers, List<String> removeManagers, EffectivePerson effectivePerson ) throws Exception {
......@@ -421,7 +456,6 @@ public class DynamicPersistService {
* @param addParticipants
* @param removeParticipants
* @param effectivePerson
* @param content
* @throws Exception
*/
public List<Dynamic> taskParticipantsUpdateDynamic(Task task, List<String> addParticipants, List<String> removeParticipants, EffectivePerson effectivePerson ) throws Exception {
......@@ -570,7 +604,6 @@ public class DynamicPersistService {
* 保存工作任务评论删除动态信息
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......
......@@ -103,8 +103,6 @@ class DynamicService {
* @param maxCount
* @param orderField
* @param orderType
* @param projectIds
* @param taskIds
* @return
* @throws Exception
*/
......@@ -116,7 +114,7 @@ class DynamicService {
/**
* 向数据库持久化动态信息
* @param emc
* @param dynamic
* @param object
* @return
* @throws Exception
*/
......@@ -480,7 +478,6 @@ class DynamicService {
* 保存和根据项目组信息操作动态
* @param object_old
* @param object
* @param optType
* @param effectivePerson
* @return
*/
......@@ -734,7 +731,7 @@ class DynamicService {
/**
* 更新工作任务管理者信息操作动态
* @param task
* @param object
* @param addManagers
* @param removeManagers
* @param effectivePerson
......@@ -768,7 +765,7 @@ class DynamicService {
/**
* 更新工作任务参与者操作动态
* @param task
* @param object
* @param addParticipants
* @param removeParticipants
* @param effectivePerson
......@@ -805,12 +802,23 @@ class DynamicService {
String title = "工作任务分解";
String viewUrl = task.getId();
String optType = "SPLIT";
String description = effectivePerson.getName() +"为工作添加了一个子任务:" + task.getName();
String description = effectivePerson.getName() +"为工作添加了一个子任务:[" + task.getName() + "]";
Dynamic dynamic = composeNewDynamic( objectType, title, description, viewUrl, optType, parentTask, effectivePerson, false );
dynamic.setTarget( parentTask.getExecutor() );
return dynamic;
}
public Dynamic getTaskTransformDynamic(Task parentTask, Task task, EffectivePerson effectivePerson) {
String objectType = "TASK";
String title = "转换为子工作";
String viewUrl = task.getId();
String optType = "TRANSFORM";
String description = effectivePerson.getName() +"将工作转换为工作[" +parentTask.getName() + "]的一个子任务。";
Dynamic dynamic = composeNewDynamic( objectType, title, description, viewUrl, optType, task, effectivePerson, false );
dynamic.setTarget( task.getExecutor() );
return dynamic;
}
public Dynamic subTaskDeleteDynamic(Task parentTask, Task task, EffectivePerson effectivePerson) {
String objectType = "TASK";
String title = "删除下级工作";
......@@ -888,7 +896,7 @@ class DynamicService {
/**
* 工作任务附件上传操作动态信息
* @param attachment
* @param object
* @param effectivePerson
* @return
*/
......@@ -903,7 +911,7 @@ class DynamicService {
/**
* 工作任务附件下载操作动态信息
* @param attachment
* @param object
* @param effectivePerson
* @return
*/
......@@ -918,7 +926,7 @@ class DynamicService {
/**
* 工作任务附件删除操作动态信息
* @param attachment
* @param object
* @param effectivePerson
* @return
*/
......
......@@ -191,6 +191,33 @@ public class TaskPersistService {
}
}
/**
* 更新任务的上级任务ID信息
* @param taskId
* @param parentId
* @param effectivePerson
* @throws Exception
*/
public void updateParentId( String taskId, String parentId, EffectivePerson effectivePerson) throws Exception {
if( StringUtils.isEmpty( taskId )) {
throw new Exception("taskId can not empty in update parentId.");
}
try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Task task = emc.find( taskId, Task.class );
if( task != null ){
task.setParent( parentId );
}
emc.beginTransaction( Task.class );
emc.check( task, CheckPersistType.all );
emc.commit();
} catch (Exception e) {
throw e;
}
}
/**
* 查询用户是否拥有创建工作任务的权限
* @param effectivePerson
......
......@@ -217,7 +217,9 @@ public class TaskQueryService {
for( TaskListRele rele : taskListReles ) {
task = emc.find( rele.getTaskId(), Task.class );
//只查询自己负责的任务
if( personName.equalsIgnoreCase( task.getExecutor() )) {
if( personName.equalsIgnoreCase( task.getExecutor() ) ||
( task.getParticipantList() !=null && task.getParticipantList().contains( personName ))
) {
task.setOrder( rele.getOrder() );
resultList.add( task );
}
......@@ -252,7 +254,9 @@ public class TaskQueryService {
if( ListTools.isNotEmpty( taskListTmp )) {
for( Task _task : taskListTmp ) {
//只查询自己负责的任务
if( personName.equalsIgnoreCase( _task.getExecutor() )) {
if( personName.equalsIgnoreCase( _task.getExecutor() )||
( _task.getParticipantList() !=null && _task.getParticipantList().contains( personName )))
{
resultList.add( _task );
}
}
......@@ -266,7 +270,6 @@ public class TaskQueryService {
/**
* 在人员的可见范围之类,根据指定的工作任务ID,查询子任务列表
* @param project
* @param taskId
* @param effectivePerson
* @return
......
......@@ -7790,6 +7790,46 @@
}
]
},
{
"name": "transformAsSubTask",
"className": "com.x.teamwork.assemble.control.jaxrs.task.ActionTransformAsSubTask",
"description": "将指定的工作转换为子工作.",
"type": "GET",
"path": "jaxrs/task/transform/{tid}/parent/{pid}",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [
{
"name": "tid",
"type": "String",
"description": "指定任务ID"
},
{
"name": "pid",
"type": "String",
"description": "上级任务ID"
}
],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "dynamics",
"type": "List\u003cWoDynamic\u003e",
"isCollection": true,
"description": "操作引起的动态内容"
},
{
"name": "id",
"type": "String",
"isCollection": false,
"description": "id"
}
]
},
{
"name": "updateManager",
"className": "com.x.teamwork.assemble.control.jaxrs.task.ActionManagerUpdate",
......
......@@ -713,7 +713,7 @@ public class ActionSave extends BaseAction {
}
public static class Wo extends WoId {
public static class Wo extends WoId {
@FieldDescribe("操作引起的动态内容")
List<WoDynamic> dynamics = new ArrayList<>();
......
......@@ -91,6 +91,26 @@ public class TaskAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "将指定的工作转换为子工作.", action = ActionTransformAsSubTask.class)
@GET
@Path("transform/{tid}/parent/{pid}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void transformAsSubTask(@Suspended final AsyncResponse asyncResponse,
@Context HttpServletRequest request,
@JaxrsParameterDescribe("指定任务ID") @PathParam("tid") String tid,
@JaxrsParameterDescribe("上级任务ID") @PathParam("pid") String pid) {
ActionResult<ActionTransformAsSubTask.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionTransformAsSubTask().execute( request, effectivePerson, tid, pid );
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "查询我的项目首页中工作任务视图信息.", action = ActionStatisticMyTaskViews.class)
@GET
@Path("statitic/group/{projectId}")
......
......@@ -82,7 +82,6 @@ public class DynamicPersistService {
/**
* 保存项目创建或者更新动态信息
* @param old_object
* @param object
* @param effectivePerson
* @param content
......@@ -132,9 +131,7 @@ public class DynamicPersistService {
* 保存项目扩展信息保存操作动态信息
* @param object_old
* @param object
* @param optType
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -179,8 +176,8 @@ public class DynamicPersistService {
/**
* 保存动态信息
* @param object_old
* @param object
* @param optType
* @param effectivePerson
* @param content
* @return
......@@ -230,7 +227,6 @@ public class DynamicPersistService {
* @param object_old
* @param object_new
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -259,12 +255,54 @@ public class DynamicPersistService {
}
/**
* 保存动态信息
* @param dynamic
* 保存转换子工作的动态信息
* @param subTask
* @param parentTask
* @param effectivePerson
* @return
* @throws Exception
*/
public List<Dynamic> subTaskTransformDynamic( Task subTask, Task parentTask, EffectivePerson effectivePerson ) throws Exception {
if ( subTask == null) {
throw new Exception("sourceTask is null.");
}
if ( parentTask == null) {
throw new Exception("parentTask is null.");
}
if ( effectivePerson == null ) {
throw new Exception("effectivePerson is null.");
}
List<Dynamic> result = new ArrayList<>();
List<Dynamic> dynamics = null;
//记录一个添加子任务转换的动态信息
result.add(dynamicService.getTaskTransformDynamic( parentTask, subTask, effectivePerson));
//记录一个为上级任务添加子任务的动态信息
result.add(dynamicService.getTaskSplitDynamic( parentTask, subTask, effectivePerson));
try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
if( ListTools.isNotEmpty( result )) {
for( Dynamic dynamic : result ) {
//持久化工作操作动态
dynamicService.save( emc, dynamic, "" );
}
}
} catch (Exception e) {
throw e;
}
return result;
}
/**
* 保存项目工作组信息动态
* @param object_old
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
public Dynamic projectGroupSaveDynamic( ProjectGroup object_old, ProjectGroup object, EffectivePerson effectivePerson, String content ) throws Exception {
if ( object == null) {
throw new Exception("object is null.");
......@@ -287,7 +325,6 @@ public class DynamicPersistService {
* 保存项目组删除动态信息
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -311,7 +348,6 @@ public class DynamicPersistService {
* 保存工作任务删除动态信息
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......@@ -338,7 +374,6 @@ public class DynamicPersistService {
* @param addManagers
* @param removeManagers
* @param effectivePerson
* @param content
* @throws Exception
*/
public List<Dynamic> taskManagerUpdateDynamic(Task task, List<String> addManagers, List<String> removeManagers, EffectivePerson effectivePerson ) throws Exception {
......@@ -421,7 +456,6 @@ public class DynamicPersistService {
* @param addParticipants
* @param removeParticipants
* @param effectivePerson
* @param content
* @throws Exception
*/
public List<Dynamic> taskParticipantsUpdateDynamic(Task task, List<String> addParticipants, List<String> removeParticipants, EffectivePerson effectivePerson ) throws Exception {
......@@ -570,7 +604,6 @@ public class DynamicPersistService {
* 保存工作任务评论删除动态信息
* @param object
* @param effectivePerson
* @param content
* @return
* @throws Exception
*/
......
......@@ -103,8 +103,6 @@ class DynamicService {
* @param maxCount
* @param orderField
* @param orderType
* @param projectIds
* @param taskIds
* @return
* @throws Exception
*/
......@@ -116,7 +114,7 @@ class DynamicService {
/**
* 向数据库持久化动态信息
* @param emc
* @param dynamic
* @param object
* @return
* @throws Exception
*/
......@@ -480,7 +478,6 @@ class DynamicService {
* 保存和根据项目组信息操作动态
* @param object_old
* @param object
* @param optType
* @param effectivePerson
* @return
*/
......@@ -734,7 +731,7 @@ class DynamicService {
/**
* 更新工作任务管理者信息操作动态
* @param task
* @param object
* @param addManagers
* @param removeManagers
* @param effectivePerson
......@@ -768,7 +765,7 @@ class DynamicService {
/**
* 更新工作任务参与者操作动态
* @param task
* @param object
* @param addParticipants
* @param removeParticipants
* @param effectivePerson
......@@ -805,12 +802,23 @@ class DynamicService {
String title = "工作任务分解";
String viewUrl = task.getId();
String optType = "SPLIT";
String description = effectivePerson.getName() +"为工作添加了一个子任务:" + task.getName();
String description = effectivePerson.getName() +"为工作添加了一个子任务:[" + task.getName() + "]";
Dynamic dynamic = composeNewDynamic( objectType, title, description, viewUrl, optType, parentTask, effectivePerson, false );
dynamic.setTarget( parentTask.getExecutor() );
return dynamic;
}
public Dynamic getTaskTransformDynamic(Task parentTask, Task task, EffectivePerson effectivePerson) {
String objectType = "TASK";
String title = "转换为子工作";
String viewUrl = task.getId();
String optType = "TRANSFORM";
String description = effectivePerson.getName() +"将工作转换为工作[" +parentTask.getName() + "]的一个子任务。";
Dynamic dynamic = composeNewDynamic( objectType, title, description, viewUrl, optType, task, effectivePerson, false );
dynamic.setTarget( task.getExecutor() );
return dynamic;
}
public Dynamic subTaskDeleteDynamic(Task parentTask, Task task, EffectivePerson effectivePerson) {
String objectType = "TASK";
String title = "删除下级工作";
......@@ -888,7 +896,7 @@ class DynamicService {
/**
* 工作任务附件上传操作动态信息
* @param attachment
* @param object
* @param effectivePerson
* @return
*/
......@@ -903,7 +911,7 @@ class DynamicService {
/**
* 工作任务附件下载操作动态信息
* @param attachment
* @param object
* @param effectivePerson
* @return
*/
......@@ -918,7 +926,7 @@ class DynamicService {
/**
* 工作任务附件删除操作动态信息
* @param attachment
* @param object
* @param effectivePerson
* @return
*/
......
......@@ -191,6 +191,33 @@ public class TaskPersistService {
}
}
/**
* 更新任务的上级任务ID信息
* @param taskId
* @param parentId
* @param effectivePerson
* @throws Exception
*/
public void updateParentId( String taskId, String parentId, EffectivePerson effectivePerson) throws Exception {
if( StringUtils.isEmpty( taskId )) {
throw new Exception("taskId can not empty in update parentId.");
}
try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Task task = emc.find( taskId, Task.class );
if( task != null ){
task.setParent( parentId );
}
emc.beginTransaction( Task.class );
emc.check( task, CheckPersistType.all );
emc.commit();
} catch (Exception e) {
throw e;
}
}
/**
* 查询用户是否拥有创建工作任务的权限
* @param effectivePerson
......
......@@ -217,7 +217,9 @@ public class TaskQueryService {
for( TaskListRele rele : taskListReles ) {
task = emc.find( rele.getTaskId(), Task.class );
//只查询自己负责的任务
if( personName.equalsIgnoreCase( task.getExecutor() )) {
if( personName.equalsIgnoreCase( task.getExecutor() ) ||
( task.getParticipantList() !=null && task.getParticipantList().contains( personName ))
) {
task.setOrder( rele.getOrder() );
resultList.add( task );
}
......@@ -252,7 +254,9 @@ public class TaskQueryService {
if( ListTools.isNotEmpty( taskListTmp )) {
for( Task _task : taskListTmp ) {
//只查询自己负责的任务
if( personName.equalsIgnoreCase( _task.getExecutor() )) {
if( personName.equalsIgnoreCase( _task.getExecutor() )||
( _task.getParticipantList() !=null && _task.getParticipantList().contains( personName )))
{
resultList.add( _task );
}
}
......@@ -266,7 +270,6 @@ public class TaskQueryService {
/**
* 在人员的可见范围之类,根据指定的工作任务ID,查询子任务列表
* @param project
* @param taskId
* @param effectivePerson
* @return
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册