Explorar o código

Merge branch 'feature/draft' into 'develop'

增加Draft部分的代码

See merge request o2oa/o2oa!240
o2null %!s(int64=5) %!d(string=hai) anos
pai
achega
509699e873
Modificáronse 100 ficheiros con 1120 adicións e 16894 borrados
  1. 3 0
      .gitignore
  2. 1 1
      o2server/configSample/processPlatform.json
  3. 5 0
      o2server/pom.xml
  4. 28 3
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/ProcessFactory.java
  5. 2 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/ActionApplication.java
  6. 10 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/DraftJaxrsFilter.java
  7. 113 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionCreate.java
  8. 42 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionDelete.java
  9. 131 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionDraw.java
  10. 73 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionEdit.java
  11. 95 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionGet.java
  12. 39 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListMyPaging.java
  13. 43 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListNext.java
  14. 43 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListPrev.java
  15. 71 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionStart.java
  16. 80 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/BaseAction.java
  17. 184 18
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/DraftAction.java
  18. 12 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ExceptionDecideCreatorIdentity.java
  19. 12 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ExceptionNoneForm.java
  20. 12 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ExceptionNoneIdentity.java
  21. 0 223
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/process/ActionListWithPersonWithApplication.java
  22. 1 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCreate.java
  23. 12 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ExceptionDecideCreatorIdentity.java
  24. 5 6
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Data.java
  25. 1 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Draft.java
  26. 10 0
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/DraftProperties.java
  27. 53 0
      o2server/x_processplatform_core_express/src/main/java/com/x/processplatform/core/express/assemble/surface/jaxrs/work/ActionCreateWi.java
  28. 20 16
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/test/ActionTest1.java
  29. 18 0
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/test/TestAction.java
  30. 1 1
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/AeiObjects.java
  31. 0 10385
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/describe.json
  32. 0 841
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/common/date/DateOperation.java
  33. 0 24
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/AbstractFactory.java
  34. 0 33
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/ApplicationServletContextListener.java
  35. 0 249
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/Business.java
  36. 0 51
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/ThisApplication.java
  37. 0 77
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/AttachmentFactory.java
  38. 0 52
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/BatchOperationFactory.java
  39. 0 118
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ChatFactory.java
  40. 0 94
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/DynamicFactory.java
  41. 0 115
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectExtFieldReleFactory.java
  42. 0 264
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectFactory.java
  43. 0 92
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectGroupFactory.java
  44. 0 129
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectGroupReleFactory.java
  45. 0 206
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ReviewFactory.java
  46. 0 80
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/SystemConfigFactory.java
  47. 0 166
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskFactory.java
  48. 0 138
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskGroupFactory.java
  49. 0 139
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskGroupReleFactory.java
  50. 0 406
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskListFactory.java
  51. 0 124
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskTagFactory.java
  52. 0 122
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskViewFactory.java
  53. 0 41
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/ActionApplication.java
  54. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/JaxrsCipherManagerFilter.java
  55. 0 22
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/JaxrsManagerUserFilter.java
  56. 0 129
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionDelete.java
  57. 0 104
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionDownload.java
  58. 0 105
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionDownloadStream.java
  59. 0 63
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionGet.java
  60. 0 72
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionListWithProject.java
  61. 0 72
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionListWithTask.java
  62. 0 185
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionProjectAttachmentUpload.java
  63. 0 183
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionTaskAttachmentUpload.java
  64. 0 193
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/AttachmentAction.java
  65. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/AttachmentNotExistsException.java
  66. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/AttachmentQueryByIdException.java
  67. 0 25
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/BaseAction.java
  68. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentDelete.java
  69. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentIdEmpty.java
  70. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentNotExists.java
  71. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentQueryById.java
  72. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionEmptyExtension.java
  73. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionProjectIdEmpty.java
  74. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionProjectNotExists.java
  75. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionQueryProjectById.java
  76. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionTaskIdEmpty.java
  77. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionTaskNotExists.java
  78. 0 218
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionCreate.java
  79. 0 119
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionDelete.java
  80. 0 70
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionGet.java
  81. 0 58
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionGetContent.java
  82. 0 92
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionListNextWithFilter.java
  83. 0 28
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/BaseAction.java
  84. 0 137
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatAction.java
  85. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatContentEmptyException.java
  86. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatFlagForQueryEmptyException.java
  87. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatIDEmptyException.java
  88. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatNotExistsException.java
  89. 0 20
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatPersistException.java
  90. 0 20
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatQueryException.java
  91. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/TaskIDEmptyException.java
  92. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/TaskNotExistsException.java
  93. 0 131
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/WrapInQueryChat.java
  94. 0 81
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionGet.java
  95. 0 66
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionGetWithCode.java
  96. 0 46
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionIsManager.java
  97. 0 58
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionListAll.java
  98. 0 102
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionSave.java
  99. 0 22
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/BaseAction.java
  100. 0 12
      o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ExceptionConfigCodeEmpty.java

+ 3 - 0
.gitignore

@@ -152,6 +152,9 @@ typings/
 **/.factorypath
 **/.vscode/
 
+**/pmd.xml
+**/pmd.html
+**/cpd.html
 
 *.swp
 

+ 1 - 1
o2server/configSample/processPlatform.json

@@ -31,7 +31,7 @@
     "thresholdDays": 730.0,
     "###enable": "是否启用###",
     "###cron": "定时cron表达式###",
-    "###thresholdDays": "期限,已完成工作结束间隔指定时间进行merge,默认两年后进行merge###"
+    "###thresholdDays": "期限,已完成工作结束间隔指定时间进行combine,默认两年后进行combine###"
   },
   "deleteDraft": {
     "enable": false,

+ 5 - 0
o2server/pom.xml

@@ -397,6 +397,11 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jxr-plugin</artifactId>
+				<version>2.3</version>
+			</plugin>
 		</plugins>
 	</build>
 	<dependencyManagement>

+ 28 - 3
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/ProcessFactory.java

@@ -11,8 +11,6 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
-import org.apache.commons.lang3.StringUtils;
-
 import com.x.base.core.project.cache.ApplicationCache;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.organization.OrganizationDefinition;
@@ -22,6 +20,9 @@ import com.x.processplatform.core.entity.element.Application;
 import com.x.processplatform.core.entity.element.Process;
 import com.x.processplatform.core.entity.element.Process_;
 
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
+
 import net.sf.ehcache.Element;
 
 public class ProcessFactory extends ElementFactory {
@@ -110,7 +111,7 @@ public class ProcessFactory extends ElementFactory {
 	}
 
 	private Process pickObject(String flag) throws Exception {
-		Process o = this.business().entityManagerContainer().flag(flag, Process.class );
+		Process o = this.business().entityManagerContainer().flag(flag, Process.class);
 		if (o != null) {
 			this.entityManagerContainer().get(Process.class).detach(o);
 		}
@@ -193,6 +194,30 @@ public class ProcessFactory extends ElementFactory {
 		return list;
 	}
 
+	/* 获取用户可启动的流程,如果applicationId 为空则取到所有可启动流程 */
+	public boolean startable(EffectivePerson effectivePerson, List<String> identities, List<String> units,
+			Process process) throws Exception {
+		if (effectivePerson.isManager()
+				|| (BooleanUtils.isTrue(this.business().organization().person().hasRole(effectivePerson,
+						OrganizationDefinition.Manager, OrganizationDefinition.ProcessPlatformManager)))) {
+			return true;
+		}
+		if (ListTools.isEmpty(process.getStartableIdentityList())
+				&& ListTools.isEmpty(process.getStartableUnitList())) {
+			return true;
+		}
+		if (ListTools.isNotEmpty(process.getStartableIdentityList())
+				&& ListTools.containsAny(identities, process.getStartableIdentityList())) {
+			return true;
+		} else {
+			if (ListTools.isNotEmpty(process.getStartableUnitList())
+					&& ListTools.containsAny(units, process.getStartableUnitList())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
 	public List<String> listControlableProcess(EffectivePerson effectivePerson, Application application)
 			throws Exception {
 		Business business = this.business();

+ 2 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/ActionApplication.java

@@ -11,6 +11,7 @@ import com.x.processplatform.assemble.surface.jaxrs.attachment.AttachmentAction;
 import com.x.processplatform.assemble.surface.jaxrs.control.ControlAction;
 import com.x.processplatform.assemble.surface.jaxrs.data.DataAction;
 import com.x.processplatform.assemble.surface.jaxrs.documentversion.DocumentVersionAction;
+import com.x.processplatform.assemble.surface.jaxrs.draft.DraftAction;
 import com.x.processplatform.assemble.surface.jaxrs.file.FileAction;
 import com.x.processplatform.assemble.surface.jaxrs.form.FormAction;
 import com.x.processplatform.assemble.surface.jaxrs.job.JobAction;
@@ -59,6 +60,7 @@ public class ActionApplication extends AbstractActionApplication {
 		classes.add(DocumentVersionAction.class);
 		classes.add(RecordAction.class);
 		classes.add(ServiceAction.class);
+		classes.add(DraftAction.class);
 		return classes;
 	}
 }

+ 10 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/DraftJaxrsFilter.java

@@ -0,0 +1,10 @@
+package com.x.processplatform.assemble.surface.jaxrs;
+
+import javax.servlet.annotation.WebFilter;
+
+import com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter;
+
+@WebFilter(urlPatterns = "/jaxrs/draft/*", asyncSupported = true)
+public class DraftJaxrsFilter extends CipherManagerUserJaxrsFilter {
+
+}

+ 113 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionCreate.java

@@ -0,0 +1,113 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import java.util.List;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.annotation.CheckPersistType;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.gson.GsonPropertyObject;
+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.processplatform.assemble.surface.Business;
+import com.x.processplatform.core.entity.content.Data;
+import com.x.processplatform.core.entity.content.Draft;
+import com.x.processplatform.core.entity.content.Work;
+import com.x.processplatform.core.entity.element.Application;
+import com.x.processplatform.core.entity.element.Process;
+
+class ActionCreate extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+			Business business = new Business(emc);
+			String identity = this.decideCreatorIdentity(business, effectivePerson, wi.getIdentity());
+			String unit = business.organization().unit().getWithIdentity(identity);
+			String person = business.organization().person().getWithIdentity(identity);
+			List<String> identities = business.organization().identity().listWithPerson(person);
+			List<String> units = business.organization().unit().listWithPerson(person);
+			List<String> roles = business.organization().role().listWithPerson(person);
+			Application application = business.application().pick(wi.getWork().getApplication());
+			if (null == application) {
+				throw new ExceptionEntityNotExist(wi.getWork().getApplication(), Application.class);
+			}
+			Process process = business.process().pick(wi.getWork().getProcess());
+			if (null == process) {
+				throw new ExceptionEntityNotExist(wi.getWork().getProcess(), Process.class);
+			}
+			if (!business.application().allowRead(effectivePerson, roles, identities, units, application)) {
+				throw new ExceptionAccessDenied(effectivePerson, application);
+			}
+			if (!business.process().startable(effectivePerson, identities, units, process)) {
+				throw new ExceptionAccessDenied(effectivePerson, process);
+			}
+			Draft draft = new Draft();
+			emc.beginTransaction(Draft.class);
+			draft.setApplication(application.getId());
+			draft.setApplicationAlias(application.getAlias());
+			draft.setApplicationName(application.getName());
+			draft.setProcess(process.getId());
+			draft.setProcessAlias(process.getAlias());
+			draft.setProcessName(process.getName());
+			draft.setPerson(person);
+			draft.setIdentity(identity);
+			draft.setUnit(unit);
+			draft.setTitle(wi.getWork().getTitle());
+			draft.getProperties().setData(wi.getData());
+			emc.persist(draft,CheckPersistType.all);
+			emc.commit();
+			Wo wo = new Wo();
+			wo.setId(draft.getId());
+			result.setData(wo);
+			return result;
+		}
+	}
+
+	public static class Wi extends GsonPropertyObject {
+
+		@FieldDescribe("数据")
+		private Data data;
+
+		@FieldDescribe("工作")
+		private Work work;
+
+		@FieldDescribe("身份")
+		private String identity;
+
+		public Data getData() {
+			return data;
+		}
+
+		public void setData(Data data) {
+			this.data = data;
+		}
+
+		public Work getWork() {
+			return work;
+		}
+
+		public void setWork(Work work) {
+			this.work = work;
+		}
+
+		public String getIdentity() {
+			return identity;
+		}
+
+		public void setIdentity(String identity) {
+			this.identity = identity;
+		}
+
+	}
+
+	public static class Wo extends WoId {
+
+	}
+
+}

+ 42 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionDelete.java

@@ -0,0 +1,42 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.annotation.CheckRemoveType;
+import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+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.processplatform.assemble.surface.Business;
+import com.x.processplatform.core.entity.content.Draft;
+
+class ActionDelete extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Business business = new Business(emc);
+			Draft draft = emc.find(id, Draft.class);
+			if (null == draft) {
+				throw new ExceptionEntityNotExist(id, Draft.class);
+			}
+			if ((!effectivePerson.isPerson(draft.getPerson())) && (!business
+					.canManageApplicationOrProcess(effectivePerson, draft.getApplication(), draft.getProcess()))) {
+				throw new ExceptionAccessDenied(effectivePerson, draft);
+			}
+			emc.beginTransaction(Draft.class);
+			emc.remove(draft, CheckRemoveType.all);
+			emc.commit();
+			Wo wo = new Wo();
+			wo.setId(draft.getId());
+			result.setData(wo);
+			return result;
+		}
+	}
+
+	public static class Wo extends WoId {
+
+	}
+
+}

+ 131 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionDraw.java

@@ -0,0 +1,131 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import java.util.List;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+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.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.tools.ListTools;
+import com.x.cms.core.entity.content.Data;
+import com.x.processplatform.assemble.surface.Business;
+import com.x.processplatform.core.entity.content.Work;
+import com.x.processplatform.core.entity.element.Application;
+import com.x.processplatform.core.entity.element.Process;
+
+import org.apache.commons.lang3.StringUtils;
+
+class ActionDraw extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String processFlag, JsonElement jsonElement)
+			throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			ActionResult<Wo> result = new ActionResult<>();
+			Business business = new Business(emc);
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+			String identity = this.decideCreatorIdentity(business, effectivePerson, wi.getIdentity());
+			String person = business.organization().person().getWithIdentity(identity);
+			String unit = business.organization().unit().getWithIdentity(identity);
+			Process process = business.process().pick(processFlag);
+			if (null == process) {
+				throw new ExceptionEntityNotExist(processFlag);
+			}
+			Application application = business.application().pick(process.getApplication());
+			List<String> roles = business.organization().role().listWithPerson(effectivePerson);
+			List<String> identities = business.organization().identity().listWithPerson(effectivePerson);
+			List<String> units = business.organization().unit().listWithPersonSupNested(effectivePerson);
+			if (!business.application().allowRead(effectivePerson, roles, identities, units, application)) {
+				throw new ExceptionAccessDenied(effectivePerson, application);
+			}
+			Work work = this.mockWork(application, process, person, identity, unit, wi.getTitle());
+			String form = this.findForm(business, process);
+			if (StringUtils.isEmpty(form)) {
+				throw new ExceptionNoneForm();
+			}
+			work.setForm(form);
+			Wo wo = new Wo();
+			wo.setWork(WoWork.copier.copy(work));
+			wo.setData(wi.getData());
+			result.setData(wo);
+			return result;
+		}
+	}
+
+	public static class Wi extends GsonPropertyObject {
+
+		@FieldDescribe("标题.")
+		private String title;
+
+		@FieldDescribe("启动人员身份.")
+		private String identity;
+
+		@FieldDescribe("工作数据.")
+		private Data data;
+
+		public String getIdentity() {
+			return identity;
+		}
+
+		public void setIdentity(String identity) {
+			this.identity = identity;
+		}
+
+		public String getTitle() {
+			return title;
+		}
+
+		public void setTitle(String title) {
+			this.title = title;
+		}
+
+		public Data getData() {
+			return data;
+		}
+
+		public void setData(Data data) {
+			this.data = data;
+		}
+
+	}
+
+	public static class Wo extends GsonPropertyObject {
+
+		private WoWork work;
+
+		private Data data = new Data();
+
+		public WoWork getWork() {
+			return work;
+		}
+
+		public void setWork(WoWork work) {
+			this.work = work;
+		}
+
+		public Data getData() {
+			return data;
+		}
+
+		public void setData(Data data) {
+			this.data = data;
+		}
+
+	}
+
+	public static class WoWork extends Work {
+
+		private static final long serialVersionUID = 1573047112378070272L;
+		static WrapCopier<Work, WoWork> copier = WrapCopierFactory.wo(Work.class, WoWork.class, null,
+				ListTools.toList(JpaObject.FieldsInvisible));
+
+	}
+
+}

+ 73 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionEdit.java

@@ -0,0 +1,73 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.annotation.CheckPersistType;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.gson.GsonPropertyObject;
+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.processplatform.core.entity.content.Data;
+import com.x.processplatform.core.entity.content.Draft;
+import com.x.processplatform.core.entity.content.Work;
+
+class ActionEdit extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+			Draft draft = emc.find(id, Draft.class);
+			if (null == draft) {
+				throw new ExceptionEntityNotExist(id, Draft.class);
+			}
+			if (effectivePerson.isNotPerson(draft.getPerson())) {
+				throw new ExceptionAccessDenied(effectivePerson, draft);
+			}
+			emc.beginTransaction(Draft.class);
+			draft.setTitle(wi.getWork().getTitle());
+			draft.getProperties().setData(wi.getData());
+			emc.check(draft, CheckPersistType.all);
+			emc.commit();
+			Wo wo = new Wo();
+			wo.setId(draft.getId());
+			result.setData(wo);
+			return result;
+		}
+	}
+
+	public static class Wi extends GsonPropertyObject {
+
+		@FieldDescribe("数据")
+		private Data data;
+
+		@FieldDescribe("工作")
+		private Work work;
+
+		public Data getData() {
+			return data;
+		}
+
+		public void setData(Data data) {
+			this.data = data;
+		}
+
+		public Work getWork() {
+			return work;
+		}
+
+		public void setWork(Work work) {
+			this.work = work;
+		}
+
+	}
+
+	public static class Wo extends WoId {
+
+	}
+
+}

+ 95 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionGet.java

@@ -0,0 +1,95 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+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.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.tools.ListTools;
+import com.x.processplatform.assemble.surface.Business;
+import com.x.processplatform.core.entity.content.Data;
+import com.x.processplatform.core.entity.content.Draft;
+import com.x.processplatform.core.entity.content.Work;
+import com.x.processplatform.core.entity.element.Application;
+import com.x.processplatform.core.entity.element.Process;
+
+import org.apache.commons.lang3.StringUtils;
+
+class ActionGet extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Business business = new Business(emc);
+			Draft draft = emc.find(id, Draft.class);
+			if (null == draft) {
+				throw new ExceptionEntityNotExist(id, Draft.class);
+			}
+			if ((!effectivePerson.isPerson(draft.getPerson())) && (!business
+					.canManageApplicationOrProcess(effectivePerson, draft.getApplication(), draft.getProcess()))) {
+				throw new ExceptionAccessDenied(effectivePerson, draft);
+			}
+			Application application = business.application().pick(draft.getApplication());
+			if (null == application) {
+				throw new ExceptionEntityNotExist(draft.getApplication(), Application.class);
+			}
+			Process process = business.process().pick(draft.getProcess());
+			if (null == process) {
+				throw new ExceptionEntityNotExist(draft.getProcess(), Process.class);
+			}
+			Wo wo = new Wo();
+
+			wo.setData(draft.getProperties().getData());
+			Work work = this.mockWork(application, process, draft.getPerson(), draft.getIdentity(), draft.getUnit(),
+					draft.getTitle());
+			String form = this.findForm(business, process);
+			if (StringUtils.isEmpty(form)) {
+				throw new ExceptionNoneForm();
+			}
+			work.setForm(form);
+			wo.setWork(WoWork.copier.copy(work));
+
+			result.setData(wo);
+			return result;
+		}
+	}
+
+	public static class Wo extends GsonPropertyObject {
+
+		@FieldDescribe("数据")
+		private Data data;
+
+		@FieldDescribe("工作")
+		private WoWork work;
+
+		public Data getData() {
+			return data;
+		}
+
+		public void setData(Data data) {
+			this.data = data;
+		}
+
+		public WoWork getWork() {
+			return work;
+		}
+
+		public void setWork(WoWork work) {
+			this.work = work;
+		}
+
+	}
+
+	public static class WoWork extends Work {
+		private static final long serialVersionUID = 1573047112378070272L;
+		static WrapCopier<Work, WoWork> copier = WrapCopierFactory.wo(Work.class, WoWork.class, null,
+				ListTools.toList(JpaObject.FieldsInvisible));
+	}
+
+}

+ 39 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListMyPaging.java

@@ -0,0 +1,39 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import java.util.List;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.JpaObject;
+import com.x.base.core.project.bean.WrapCopier;
+import com.x.base.core.project.bean.WrapCopierFactory;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.processplatform.core.entity.content.Draft;
+
+class ActionListMyPaging extends BaseAction {
+
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, Integer page, Integer size, JsonElement jsonElement)
+			throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			ActionResult<List<Wo>> result = new ActionResult<>();
+			List<Wo> wos = emc.fetchEqualDescPaging(Draft.class, Wo.copier, Draft.person_FIELDNAME,
+					effectivePerson.getDistinguishedName(), page, size, JpaObject.sequence_FIELDNAME);
+			result.setData(wos);
+			result.setCount(
+					emc.countEqual(Draft.class, Draft.person_FIELDNAME, effectivePerson.getDistinguishedName()));
+			return result;
+		}
+	}
+
+	public static class Wo extends Draft {
+
+		private static final long serialVersionUID = 2279846765261247910L;
+
+		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class,
+				JpaObject.singularAttributeField(Draft.class, true, true), null);
+
+	}
+
+}

+ 43 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListNext.java

@@ -0,0 +1,43 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import java.util.List;
+
+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.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.jaxrs.EqualsTerms;
+import com.x.processplatform.core.entity.content.Draft;
+
+class ActionListNext extends BaseAction {
+
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count) throws Exception {
+		EqualsTerms equals = new EqualsTerms();
+		equals.put(Draft.person_FIELDNAME, effectivePerson.getDistinguishedName());
+		return this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, equals, null, null, null, null,
+				null, null, null, true, DESC);
+	}
+
+	public static class Wo extends Draft {
+
+		private static final long serialVersionUID = 2279846765261247910L;
+
+		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class, null,
+				JpaObject.FieldsInvisible);
+
+		@FieldDescribe("排序号")
+		private Long rank;
+
+		public Long getRank() {
+			return rank;
+		}
+
+		public void setRank(Long rank) {
+			this.rank = rank;
+		}
+
+	}
+
+}

+ 43 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListPrev.java

@@ -0,0 +1,43 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import java.util.List;
+
+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.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.jaxrs.EqualsTerms;
+import com.x.processplatform.core.entity.content.Draft;
+
+class ActionListPrev extends BaseAction {
+
+	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String id, Integer count) throws Exception {
+		EqualsTerms equals = new EqualsTerms();
+		equals.put(Draft.person_FIELDNAME, effectivePerson.getDistinguishedName());
+		return this.standardListPrev(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, equals, null, null, null, null,
+				null, null, null, true, DESC);
+	}
+
+	public static class Wo extends Draft {
+
+		private static final long serialVersionUID = 2279846765261247910L;
+
+		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class, null,
+				JpaObject.FieldsInvisible);
+
+		@FieldDescribe("排序号")
+		private Long rank;
+
+		public Long getRank() {
+			return rank;
+		}
+
+		public void setRank(Long rank) {
+			this.rank = rank;
+		}
+
+	}
+
+}

+ 71 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionStart.java

@@ -0,0 +1,71 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.annotation.CheckRemoveType;
+import com.x.base.core.project.Applications;
+import com.x.base.core.project.x_processplatform_assemble_surface;
+import com.x.base.core.project.exception.ExceptionAccessDenied;
+import com.x.base.core.project.exception.ExceptionEntityNotExist;
+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.processplatform.assemble.surface.Business;
+import com.x.processplatform.assemble.surface.ThisApplication;
+import com.x.processplatform.core.entity.content.Draft;
+import com.x.processplatform.core.entity.element.Application;
+import com.x.processplatform.core.entity.element.Process;
+import com.x.processplatform.core.express.assemble.surface.jaxrs.work.ActionCreateWi;
+
+class ActionStart extends BaseAction {
+
+	ActionResult<JsonElement> execute(EffectivePerson effectivePerson, String id) throws Exception {
+		ActionResult<JsonElement> result = new ActionResult<>();
+		Process process = null;
+		Draft draft = null;
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Business business = new Business(emc);
+			draft = emc.find(id, Draft.class);
+			if (null == draft) {
+				throw new ExceptionEntityNotExist(id, Draft.class);
+			}
+			if ((!effectivePerson.isPerson(draft.getPerson())) && (!business
+					.canManageApplicationOrProcess(effectivePerson, draft.getApplication(), draft.getProcess()))) {
+				throw new ExceptionAccessDenied(effectivePerson, draft);
+			}
+			Application application = business.application().pick(draft.getApplication());
+			if (null == application) {
+				throw new ExceptionEntityNotExist(draft.getApplication(), Application.class);
+			}
+			process = business.process().pick(draft.getProcess());
+			if (null == process) {
+				throw new ExceptionEntityNotExist(draft.getProcess(), Process.class);
+			}
+
+		}
+		ActionCreateWi req = new ActionCreateWi();
+
+		req.setData(XGsonBuilder.instance().toJsonTree(draft.getProperties().getData()));
+		req.setIdentity(draft.getIdentity());
+		req.setLatest(false);
+		req.setTitle(draft.getTitle());
+
+		// 创建工作
+		JsonElement jsonElement = ThisApplication.context().applications()
+				.postQuery(x_processplatform_assemble_surface.class,
+						Applications.joinQueryUri("work", "process", process.getId()), req, process.getId())
+				.getData();
+
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			draft = emc.find(id, Draft.class);
+			emc.beginTransaction(Draft.class);
+			emc.remove(draft, CheckRemoveType.all);
+			emc.commit();
+		}
+
+		result.setData(jsonElement);
+		return result;
+	}
+
+}

+ 80 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/BaseAction.java

@@ -1,7 +1,87 @@
 package com.x.processplatform.assemble.surface.jaxrs.draft;
 
+import java.util.List;
+
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.http.TokenType;
 import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+import com.x.base.core.project.tools.ListTools;
+import com.x.processplatform.assemble.surface.Business;
+import com.x.processplatform.core.entity.content.Work;
+import com.x.processplatform.core.entity.element.Activity;
+import com.x.processplatform.core.entity.element.Application;
+import com.x.processplatform.core.entity.element.Begin;
+import com.x.processplatform.core.entity.element.Process;
+import com.x.processplatform.core.entity.element.Route;
+
+import org.apache.commons.lang3.StringUtils;
 
 abstract class BaseAction extends StandardJaxrsAction {
+    protected String decideCreatorIdentity(Business business, EffectivePerson effectivePerson, String identityValue)
+            throws Exception {
+        if (TokenType.cipher.equals(effectivePerson.getTokenType())) {
+            String identity = business.organization().identity().get(identityValue);
+            if (StringUtils.isEmpty(identity)) {
+                throw new ExceptionDecideCreatorIdentity();
+            } else {
+                return identity;
+            }
+        }
+        if (StringUtils.isEmpty(identityValue)) {
+            List<String> list = business.organization().identity()
+                    .listWithPerson(effectivePerson.getDistinguishedName());
+            if (list.isEmpty()) {
+                throw new ExceptionDecideCreatorIdentity();
+            } else {
+                return list.get(0);
+            }
+        }
+        List<String> identities = business.organization().identity()
+                .listWithPerson(effectivePerson.getDistinguishedName());
+        if (ListTools.isEmpty(identities)) {
+            throw new ExceptionNoneIdentity(effectivePerson.getDistinguishedName());
+        }
+        if (identities.size() == 1) {
+            return identities.get(0);
+        }
+        /* 有多个身份需要逐一判断是否包含. */
+        for (String o : identities) {
+            if (StringUtils.equals(o, identityValue)) {
+                return o;
+            }
+        }
+        throw new ExceptionDecideCreatorIdentity();
+    }
+
+    protected Work mockWork(Application application, Process process, String person, String identity, String unit,
+            String title) {
+        Work work = new Work();
+        work.setApplication(application.getId());
+        work.setApplicationAlias(application.getAlias());
+        work.setApplicationName(application.getName());
+        work.setProcess(process.getId());
+        work.setProcessAlias(process.getAlias());
+        work.setProcessName(process.getName());
+        work.setCreatorIdentity(identity);
+        work.setCreatorPerson(person);
+        work.setCreatorUnit(unit);
+        work.setTitle(title);
+        return work;
+    }
+
+    protected String findForm(Business business, Process process) throws Exception {
+		String id = null;
+		Begin begin = business.begin().getWithProcess(process);
+		id = begin.getForm();
+		if (StringUtils.isEmpty(id)) {
+			Route route = business.route().pick(begin.getRoute());
+			Activity activity = business.getActivity(route.getActivity(), route.getActivityType());
+			id = activity.getForm();
+		}
+		if (StringUtils.isEmpty(id)) {
+			throw new ExceptionNoneForm();
+		}
+		return id;
+	}
 
 }

+ 184 - 18
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/DraftAction.java

@@ -1,8 +1,29 @@
 package com.x.processplatform.assemble.surface.jaxrs.draft;
 
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.container.AsyncResponse;
+import javax.ws.rs.container.Suspended;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
 
+import com.google.gson.JsonElement;
 import com.x.base.core.project.annotation.JaxrsDescribe;
+import com.x.base.core.project.annotation.JaxrsMethodDescribe;
+import com.x.base.core.project.annotation.JaxrsParameterDescribe;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.http.HttpMediaType;
+import com.x.base.core.project.jaxrs.ResponseFactory;
 import com.x.base.core.project.jaxrs.StandardJaxrsAction;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
@@ -13,23 +34,168 @@ public class DraftAction extends StandardJaxrsAction {
 
 	private static Logger logger = LoggerFactory.getLogger(DraftAction.class);
 
-	// @JaxrsMethodDescribe(value = "列示指定工作或已完成工作的版式文件历史版本.", action = ActionListWithWorkOrWorkCompleted.class)
-	// @GET
-	// @Path("list/workorworkcompleted/{workOrWorkCompleted}")
-	// @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	// @Consumes(MediaType.APPLICATION_JSON)
-	// public void listWithWorkOrWorkCompleted(@Suspended final AsyncResponse asyncResponse,
-	// 		@Context HttpServletRequest request,
-	// 		@JaxrsParameterDescribe("标识") @PathParam("workOrWorkCompleted") String workOrWorkCompleted) {
-	// 	ActionResult<List<ActionListWithWorkOrWorkCompleted.Wo>> result = new ActionResult<>();
-	// 	EffectivePerson effectivePerson = this.effectivePerson(request);
-	// 	try {
-	// 		result = new ActionListWithWorkOrWorkCompleted().execute(effectivePerson, workOrWorkCompleted);
-	// 	} catch (Exception e) {
-	// 		logger.error(e, effectivePerson, request, null);
-	// 		result.error(e);
-	// 	}
-	// 	asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	// }
+	@POST
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Path("process/{processFlag}")
+	@JaxrsMethodDescribe(value = "拟稿.", action = ActionDraw.class)
+	public void draw(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("流程标识") @PathParam("processFlag") String processFlag, JsonElement jsonElement) {
+		ActionResult<ActionDraw.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDraw().execute(effectivePerson, processFlag, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "获取草稿.", action = ActionGet.class)
+	@GET
+	@Path("{id}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void get(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("草稿标识") @PathParam("id") String id) {
+		ActionResult<ActionGet.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionGet().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "删除草稿.", action = ActionDelete.class)
+	@DELETE
+	@Path("{id}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void delete(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("草稿标识") @PathParam("id") String id) {
+		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDelete().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@POST
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@JaxrsMethodDescribe(value = "创建草稿.", action = ActionCreate.class)
+	public void create(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			JsonElement jsonElement) {
+		ActionResult<ActionCreate.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionCreate().execute(effectivePerson, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@PUT
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Path("{id}")
+	@JaxrsMethodDescribe(value = "编辑草稿.", action = ActionEdit.class)
+	public void edit(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("工作标识") @PathParam("id") String id, JsonElement jsonElement) {
+		ActionResult<ActionEdit.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionEdit().execute(effectivePerson, id, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "列示当前用户创建的草稿,分页.", action = ActionListMyPaging.class)
+	@POST
+	@Path("list/my/paging/{page}/size/{size}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listMyPaging(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+			@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		ActionResult<List<ActionListMyPaging.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionListMyPaging().execute(effectivePerson, page, size, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "列示当前用户的草稿对象,下一页.", action = ActionListNext.class)
+	@GET
+	@Path("list/{id}/next/{count}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNext(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("草稿标识") @PathParam("id") String id,
+			@JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
+		ActionResult<List<ActionListNext.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionListNext().execute(effectivePerson, id, count);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "列示当前用户的草稿对象,上一页.", action = ActionListPrev.class)
+	@GET
+	@Path("list/{id}/prev/{count}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPrev(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("草稿标识") @PathParam("id") String id,
+			@JaxrsParameterDescribe("数量") @PathParam("count") Integer count) {
+		ActionResult<List<ActionListPrev.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionListPrev().execute(effectivePerson, id, count);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "启动工作.", action = ActionStart.class)
+	@GET
+	@Path("{id}/start")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void start(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("草稿标识") @PathParam("id") String id) {
+		ActionResult<JsonElement> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionStart().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
 
 }

+ 12 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ExceptionDecideCreatorIdentity.java

@@ -0,0 +1,12 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionDecideCreatorIdentity extends PromptException {
+
+	private static final long serialVersionUID = -3439770681867963457L;
+
+	ExceptionDecideCreatorIdentity() {
+		super("识别身份错误.");
+	}
+}

+ 12 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ExceptionNoneForm.java

@@ -0,0 +1,12 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionNoneForm extends PromptException {
+
+	private static final long serialVersionUID = 1040883405179987063L;
+
+	ExceptionNoneForm() {
+		super("无法找到表单.");
+	}
+}

+ 12 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ExceptionNoneIdentity.java

@@ -0,0 +1,12 @@
+package com.x.processplatform.assemble.surface.jaxrs.draft;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionNoneIdentity extends PromptException {
+
+	private static final long serialVersionUID = 1040883405179987063L;
+
+	ExceptionNoneIdentity(String person) {
+		super("无法识别用户身份: {}.", person);
+	}
+}

+ 0 - 223
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/process/ActionListWithPersonWithApplication.java

@@ -52,228 +52,5 @@ class ActionListWithPersonWithApplication extends BaseAction {
 
 		static WrapCopier<Process, Wo> copier = WrapCopierFactory.wo(Process.class, Wo.class, null,
 				JpaObject.FieldsInvisible);
-
-//		private List<WrapOutAgent> agentList;
-//		private WrapOutBegin begin;
-//		private List<WrapOutCancel> cancelList;
-//		private List<WrapOutChoice> choiceList;
-//		private List<WrapOutDelay> delayList;
-//		private List<WrapOutEmbed> embedList;
-//		private List<WrapOutEnd> endList;
-//		private List<WrapOutInvoke> invokeList;
-//		private List<WrapOutManual> manualList;
-//		private List<WrapOutMerge> mergeList;
-//		private List<WrapOutMessage> messageList;
-//		private List<WrapOutRoute> routeList;
-//		private List<WrapOutParallel> parallelList;
-//		private List<WrapOutService> serviceList;
-//		private List<WrapOutSplit> splitList;
-//
-//		public List<WrapOutAgent> getAgentList() {
-//			return agentList;
-//		}
-//
-//		public void setAgentList(List<WrapOutAgent> agentList) {
-//			this.agentList = agentList;
-//		}
-//
-//		public WrapOutBegin getBegin() {
-//			return begin;
-//		}
-//
-//		public void setBegin(WrapOutBegin begin) {
-//			this.begin = begin;
-//		}
-//
-//		public List<WrapOutCancel> getCancelList() {
-//			return cancelList;
-//		}
-//
-//		public void setCancelList(List<WrapOutCancel> cancelList) {
-//			this.cancelList = cancelList;
-//		}
-//
-//		public List<WrapOutChoice> getChoiceList() {
-//			return choiceList;
-//		}
-//
-//		public void setChoiceList(List<WrapOutChoice> choiceList) {
-//			this.choiceList = choiceList;
-//		}
-//
-//		public List<WrapOutDelay> getDelayList() {
-//			return delayList;
-//		}
-//
-//		public void setDelayList(List<WrapOutDelay> delayList) {
-//			this.delayList = delayList;
-//		}
-//
-//		public List<WrapOutEmbed> getEmbedList() {
-//			return embedList;
-//		}
-//
-//		public void setEmbedList(List<WrapOutEmbed> embedList) {
-//			this.embedList = embedList;
-//		}
-//
-//		public List<WrapOutEnd> getEndList() {
-//			return endList;
-//		}
-//
-//		public void setEndList(List<WrapOutEnd> endList) {
-//			this.endList = endList;
-//		}
-//
-//		public List<WrapOutInvoke> getInvokeList() {
-//			return invokeList;
-//		}
-//
-//		public void setInvokeList(List<WrapOutInvoke> invokeList) {
-//			this.invokeList = invokeList;
-//		}
-//
-//		public List<WrapOutManual> getManualList() {
-//			return manualList;
-//		}
-//
-//		public void setManualList(List<WrapOutManual> manualList) {
-//			this.manualList = manualList;
-//		}
-//
-//		public List<WrapOutMerge> getMergeList() {
-//			return mergeList;
-//		}
-//
-//		public void setMergeList(List<WrapOutMerge> mergeList) {
-//			this.mergeList = mergeList;
-//		}
-//
-//		public List<WrapOutMessage> getMessageList() {
-//			return messageList;
-//		}
-//
-//		public void setMessageList(List<WrapOutMessage> messageList) {
-//			this.messageList = messageList;
-//		}
-//
-//		public List<WrapOutRoute> getRouteList() {
-//			return routeList;
-//		}
-//
-//		public void setRouteList(List<WrapOutRoute> routeList) {
-//			this.routeList = routeList;
-//		}
-//
-//		public List<WrapOutParallel> getParallelList() {
-//			return parallelList;
-//		}
-//
-//		public void setParallelList(List<WrapOutParallel> parallelList) {
-//			this.parallelList = parallelList;
-//		}
-//
-//		public List<WrapOutService> getServiceList() {
-//			return serviceList;
-//		}
-//
-//		public void setServiceList(List<WrapOutService> serviceList) {
-//			this.serviceList = serviceList;
-//		}
-//
-//		public List<WrapOutSplit> getSplitList() {
-//			return splitList;
-//		}
-//
-//		public void setSplitList(List<WrapOutSplit> splitList) {
-//			this.splitList = splitList;
-//		}
-
 	}
-
-//	public static class WrapOutAgent extends Agent {
-//
-//		private static final long serialVersionUID = 797206511536423164L;
-//
-//	}
-//
-//	public class WrapOutBegin extends Begin {
-//
-//		private static final long serialVersionUID = 2446418422019675597L;
-//	}
-//
-//	public class WrapOutCancel extends Cancel {
-//
-//		private static final long serialVersionUID = 813182162888838666L;
-//	}
-//
-//	public class WrapOutChoice extends Choice {
-//
-//		private static final long serialVersionUID = -1907168588535775375L;
-//	}
-//
-//	public class WrapOutDelay extends Delay {
-//
-//		private static final long serialVersionUID = 2184569713152663503L;
-//
-//	}
-//
-//	public class WrapOutEmbed extends Embed {
-//
-//		private static final long serialVersionUID = 298602065524433660L;
-//
-//	}
-//
-//	public class WrapOutEnd extends End {
-//		private static final long serialVersionUID = 7675857316009459984L;
-//	}
-//
-//	public class WrapOutInvoke extends Invoke {
-//
-//		private static final long serialVersionUID = -6918382714118518231L;
-//
-//	}
-//
-//	public class WrapOutManual extends Manual {
-//
-//		private static final long serialVersionUID = -5145199730047767525L;
-//
-//	}
-//
-//	public class WrapOutMerge extends Merge {
-//
-//		private static final long serialVersionUID = 5007599746571282452L;
-//
-//	}
-//
-//	public class WrapOutMessage extends Message {
-//
-//		private static final long serialVersionUID = -2833187584269867692L;
-//
-//	}
-//
-//	public class WrapOutParallel extends Parallel {
-//
-//		private static final long serialVersionUID = 3452734679516289443L;
-//
-//	}
-//
-//	public class WrapOutService extends Service {
-//
-//		private static final long serialVersionUID = -8322044803022612130L;
-//
-//	}
-//
-//	public class WrapOutSplit extends Split {
-//
-//		private static final long serialVersionUID = 2746872526189840000L;
-//
-//	}
-//
-//	public class WrapOutRoute extends Route {
-//
-//		private static final long serialVersionUID = 4309969270030957709L;
-//
-//	}
-
 }

+ 1 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCreate.java

@@ -360,7 +360,7 @@ class ActionCreate extends BaseAction {
 				return list.get(0);
 			}
 		}
-		throw new Exception("decideCreatorIdentity error:" + wi.toString());
+		throw new ExceptionDecideCreatorIdentity();
 	}
 
 	private void referenceTask(Business business, Wo wo) throws Exception {

+ 12 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ExceptionDecideCreatorIdentity.java

@@ -0,0 +1,12 @@
+package com.x.processplatform.assemble.surface.jaxrs.work;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionDecideCreatorIdentity extends PromptException {
+
+	private static final long serialVersionUID = -3439770681867963457L;
+
+	ExceptionDecideCreatorIdentity() {
+		super("识别身份错误.");
+	}
+}

+ 5 - 6
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Data.java

@@ -1,16 +1,10 @@
 package com.x.processplatform.core.entity.content;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.collections4.map.ListOrderedMap;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.x.base.core.entity.JpaObject;
@@ -20,6 +14,11 @@ import com.x.base.core.project.gson.GsonPropertyObject;
 import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.tools.ListTools;
 
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.collections4.map.ListOrderedMap;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+
 public class Data extends ListOrderedMap<String, Object> {
 
 	public static final String WORK_PROPERTY = "$work";

+ 1 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Draft.java

@@ -55,7 +55,7 @@ public class Draft extends SliceJpaObject {
 
 	/* 更新运行方法 */
 	public void onPersist() throws Exception {
-
+		// do nothing
 	}
 
 	public void setTitle(String title) {
@@ -84,15 +84,6 @@ public class Draft extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String title;
 
-	public static final String startTime_FIELDNAME = "startTime";
-	@FieldDescribe("开始时间.")
-	@Temporal(TemporalType.TIMESTAMP)
-	/* 开始时间不能为空,如果为空排序可能出错 */
-	@Column(name = ColumnNamePrefix + startTime_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + startTime_FIELDNAME)
-	@CheckPersist(allowEmpty = false)
-	private Date startTime;
-
 	public static final String application_FIELDNAME = "application";
 	@FieldDescribe("应用.")
 	@Column(length = JpaObject.length_id, name = ColumnNamePrefix + application_FIELDNAME)
@@ -184,14 +175,6 @@ public class Draft extends SliceJpaObject {
 		this.identity = identity;
 	}
 
-	public Date getStartTime() {
-		return startTime;
-	}
-
-	public void setStartTime(Date startTime) {
-		this.startTime = startTime;
-	}
-
 	public String getApplication() {
 		return application;
 	}

+ 10 - 0
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/DraftProperties.java

@@ -4,4 +4,14 @@ import com.x.base.core.entity.JsonProperties;
 
 public class DraftProperties extends JsonProperties {
 
+    private Data data = new Data();
+
+    public Data getData() {
+        return data;
+    }
+
+    public void setData(Data data) {
+        this.data = data;
+    }
+
 }

+ 53 - 0
o2server/x_processplatform_core_express/src/main/java/com/x/processplatform/core/express/assemble/surface/jaxrs/work/ActionCreateWi.java

@@ -0,0 +1,53 @@
+package com.x.processplatform.core.express.assemble.surface.jaxrs.work;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.gson.GsonPropertyObject;
+
+public class ActionCreateWi extends GsonPropertyObject {
+
+    @FieldDescribe("直接打开指定人员已经有的草稿,草稿判断:工作没有已办,只有一条此人的待办.")
+    private Boolean latest;
+
+    @FieldDescribe("标题.")
+    private String title;
+
+    @FieldDescribe("启动人员身份.")
+    private String identity;
+
+    @FieldDescribe("工作数据.")
+    private JsonElement data;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
+    public JsonElement getData() {
+        return data;
+    }
+
+    public void setData(JsonElement data) {
+        this.data = data;
+    }
+
+    public Boolean getLatest() {
+        return latest;
+    }
+
+    public void setLatest(Boolean latest) {
+        this.latest = latest;
+    }
+
+}

+ 20 - 16
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/test/ActionTest1.java

@@ -1,32 +1,36 @@
 package com.x.processplatform.service.processing.jaxrs.test;
 
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import java.util.concurrent.Callable;
+
+import com.x.base.core.project.Applications;
+import com.x.base.core.project.x_processplatform_service_processing;
+import com.x.base.core.project.executor.ProcessPlatformExecutorFactory;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WrapBoolean;
-import com.x.processplatform.core.entity.content.Work;
+import com.x.processplatform.service.processing.ThisApplication;
 
 class ActionTest1 extends BaseAction {
 
+	private String unique = "111";
+
 	ActionResult<Wo> execute(EffectivePerson effectivePerson) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			String id = "0cf6f6fd-072a-4b63-957c-ee85d6a95b9f";
-			Work work = emc.find(id, Work.class);
-			emc.beginTransaction(Work.class);
-			try (EntityManagerContainer emc2 = EntityManagerContainerFactory.instance().create()) {
-				emc2.beginTransaction(Work.class);
-				Work work2 = emc2.find(id, Work.class);
-				emc2.commit();
-			}
-			emc.commit();
-			return result;
-		}
+		ActionResult<Wo> result = new ActionResult<>();
+		CallableAction action = new CallableAction();
+		ProcessPlatformExecutorFactory.get(unique).submit(action).get();
+		return result;
 	}
 
 	public static class Wo extends WrapBoolean {
 
 	}
 
+	public class CallableAction implements Callable<String> {
+		public String call() throws Exception {
+			ThisApplication.context().applications().getQuery(x_processplatform_service_processing.class,
+					Applications.joinQueryUri("test", "test1"), unique);
+			return "";
+		}
+	};
+
 }

+ 18 - 0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/test/TestAction.java

@@ -161,4 +161,22 @@ public class TestAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
+
+
+	@JaxrsMethodDescribe(value = "test1.", action = ActionTest1.class)
+	@GET
+	@Path("test1")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void test1(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
+		ActionResult<ActionTest1.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionTest1().execute(effectivePerson);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
 }

+ 1 - 1
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/AeiObjects.java

@@ -269,7 +269,7 @@ public class AeiObjects extends GsonPropertyObject {
 	public List<Route> getRoutes() throws Exception {
 		if (null == this.routes) {
 			this.routes = this.business.element().listRouteWithActvity(work.getActivity(),
-					this.activity.getActivityType());
+					work.getActivityType());
 		}
 		return this.routes;
 	}

+ 0 - 10385
o2server/x_teamwork_assemble_control/src/main/webapp/describe/describe.json

@@ -1,10385 +0,0 @@
-{
-  "jaxrs": [
-    {
-      "name": "AttachmentAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.attachment.AttachmentAction",
-      "description": "工作任务附件信息管理服务",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionDelete",
-          "description": "根据ID删除附件信息对象",
-          "type": "DELETE",
-          "path": "jaxrs/attachment/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "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": "downLoad",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionDownload",
-          "description": "根据ID下载指定附件",
-          "type": "GET",
-          "path": "jaxrs/attachment/download/{id}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "downloadStream",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionDownloadStream",
-          "description": "下载指定附件,设定是否使用stream输出",
-          "type": "GET",
-          "path": "jaxrs/attachment/download/{id}/stream/{stream}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件信息ID"
-            },
-            {
-              "name": "stream",
-              "type": "Boolean",
-              "description": "用.APPLICATION_OCTET_STREAM头输出"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "contentDisposition",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明"
-            },
-            {
-              "name": "contentType",
-              "type": "String",
-              "isCollection": false,
-              "description": "类型"
-            },
-            {
-              "name": "bytes",
-              "type": "byte[]",
-              "isCollection": false,
-              "description": "字节内容."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionGet",
-          "description": "根据ID获取附件信息对象",
-          "type": "GET",
-          "path": "jaxrs/attachment/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "附件信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联的存储名称."
-            },
-            {
-              "name": "site",
-              "type": "String",
-              "isCollection": false,
-              "description": "附件框分类."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件真实名称"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "isCollection": false,
-              "description": "服务器上编码后的文件名,为了方便辨识带扩展名"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属项目ID"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属工作任务ID"
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类别:云文件(CLOUD) | 附件(ATTACHMENT)"
-            },
-            {
-              "name": "bundleObjType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件宿主类别:PROJECT | TASK"
-            },
-            {
-              "name": "fileHost",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件存储主机名"
-            },
-            {
-              "name": "filePath",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件存储路径"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件说明"
-            },
-            {
-              "name": "creatorUid",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者UID"
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名"
-            },
-            {
-              "name": "seqNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listByProjectId",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionListWithProject",
-          "description": "根据项目ID获取工作附件信息列表",
-          "type": "GET",
-          "path": "jaxrs/attachment/list/project/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联的存储名称."
-            },
-            {
-              "name": "site",
-              "type": "String",
-              "isCollection": false,
-              "description": "附件框分类."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件真实名称"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "isCollection": false,
-              "description": "服务器上编码后的文件名,为了方便辨识带扩展名"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属项目ID"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属工作任务ID"
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类别:云文件(CLOUD) | 附件(ATTACHMENT)"
-            },
-            {
-              "name": "bundleObjType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件宿主类别:PROJECT | TASK"
-            },
-            {
-              "name": "fileHost",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件存储主机名"
-            },
-            {
-              "name": "filePath",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件存储路径"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件说明"
-            },
-            {
-              "name": "creatorUid",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者UID"
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名"
-            },
-            {
-              "name": "seqNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listByTaskId",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionListWithTask",
-          "description": "根据工作ID获取工作附件信息列表",
-          "type": "GET",
-          "path": "jaxrs/attachment/list/task/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "lastUpdateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "最后更新时间"
-            },
-            {
-              "name": "storage",
-              "type": "String",
-              "isCollection": false,
-              "description": "关联的存储名称."
-            },
-            {
-              "name": "site",
-              "type": "String",
-              "isCollection": false,
-              "description": "附件框分类."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件真实名称"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "isCollection": false,
-              "description": "服务器上编码后的文件名,为了方便辨识带扩展名"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属项目ID"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件所属工作任务ID"
-            },
-            {
-              "name": "fileType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件类别:云文件(CLOUD) | 附件(ATTACHMENT)"
-            },
-            {
-              "name": "bundleObjType",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件宿主类别:PROJECT | TASK"
-            },
-            {
-              "name": "fileHost",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件存储主机名"
-            },
-            {
-              "name": "filePath",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件存储路径"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "文件说明"
-            },
-            {
-              "name": "creatorUid",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者UID"
-            },
-            {
-              "name": "extension",
-              "type": "String",
-              "isCollection": false,
-              "description": "扩展名"
-            },
-            {
-              "name": "seqNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "length",
-              "type": "Long",
-              "isCollection": false,
-              "description": "文件大小."
-            },
-            {
-              "name": "deepPath",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否使用更深的路径."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "projectAttachmentUpload",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionProjectAttachmentUpload",
-          "description": "上传项目信息附件.",
-          "type": "POST",
-          "path": "jaxrs/attachment/upload/project/{id}/site/{site}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "项目信息ID"
-            },
-            {
-              "name": "site",
-              "type": "String",
-              "description": "位置"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": ""
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "taskAttachmentUpload",
-          "className": "com.x.teamwork.assemble.control.jaxrs.attachment.ActionTaskAttachmentUpload",
-          "description": "为工作信息上传附件.",
-          "type": "POST",
-          "path": "jaxrs/attachment/upload/task/{id}/site/{site}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作任务ID"
-            },
-            {
-              "name": "site",
-              "type": "String",
-              "description": "位置"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": ""
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "CacheAction",
-      "className": "com.x.base.core.project.jaxrs.cache.CacheAction",
-      "description": "缓存操作",
-      "methods": [
-        {
-          "name": "configFlush",
-          "className": "com.x.base.core.project.jaxrs.cache.ActionConfigFlush",
-          "description": "接收config flush 信号.",
-          "type": "GET",
-          "path": "jaxrs/cache/config/flush",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "receive",
-          "className": "com.x.base.core.project.jaxrs.cache.ActionReceive",
-          "description": "接收Cache刷新信息.",
-          "type": "PUT",
-          "path": "jaxrs/cache",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "nodeName",
-              "type": "String",
-              "isCollection": false,
-              "description": "节点名",
-              "isBaseType": true
-            },
-            {
-              "name": "className",
-              "type": "String",
-              "isCollection": false,
-              "description": "类名",
-              "isBaseType": true
-            },
-            {
-              "name": "keys",
-              "type": "List\u003cObject\u003e",
-              "isCollection": true,
-              "description": "关键字",
-              "isBaseType": false
-            }
-          ],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "ChatAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.chat.ChatAction",
-      "description": "工作评论流信息管理",
-      "methods": [
-        {
-          "name": "create",
-          "className": "com.x.teamwork.assemble.control.jaxrs.chat.ActionCreate",
-          "description": "创建一个工作交流信息.",
-          "type": "POST",
-          "path": "jaxrs/chat",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "content",
-              "type": "String",
-              "isCollection": false,
-              "description": "交流内容,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "sender",
-              "type": "String",
-              "isCollection": false,
-              "description": "发送者,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者,非必填",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.chat.ActionDelete",
-          "description": "根据标识删除工作交流信息.",
-          "type": "DELETE",
-          "path": "jaxrs/chat/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.chat.ActionGet",
-          "description": "根据ID获取评论信息",
-          "type": "GET",
-          "path": "jaxrs/chat/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "评论信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID"
-            },
-            {
-              "name": "projectTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目标题"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID"
-            },
-            {
-              "name": "taskTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作标题"
-            },
-            {
-              "name": "sender",
-              "type": "String",
-              "isCollection": false,
-              "description": "发送者"
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者"
-            },
-            {
-              "name": "content",
-              "type": "String",
-              "isCollection": false,
-              "description": "交流内容,小于70个汉字"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是LOB数据"
-            },
-            {
-              "name": "isFile",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是发送的文件"
-            },
-            {
-              "name": "fileId",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "发送的文件ID,存储到file应用的文件ID"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "getContent",
-          "className": "com.x.teamwork.assemble.control.jaxrs.chat.ActionGetContent",
-          "description": "根据ID获取评论信息文字内容",
-          "type": "GET",
-          "path": "jaxrs/chat/{id}/content",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "评论信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "text",
-              "type": "String",
-              "isCollection": false,
-              "description": "text"
-            }
-          ]
-        },
-        {
-          "name": "listNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.chat.ActionListNextWithFilter",
-          "description": "列示评论信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/chat/list/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID,非必填,过滤条件",
-              "isBaseType": true
-            },
-            {
-              "name": "taskTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作标题,非必填,过滤条件",
-              "isBaseType": true
-            },
-            {
-              "name": "sender",
-              "type": "String",
-              "isCollection": false,
-              "description": "发送者,非必填,过滤条件",
-              "isBaseType": true
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者,非必填,过滤条件",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID"
-            },
-            {
-              "name": "projectTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目标题"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID"
-            },
-            {
-              "name": "taskTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作标题"
-            },
-            {
-              "name": "sender",
-              "type": "String",
-              "isCollection": false,
-              "description": "发送者"
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者"
-            },
-            {
-              "name": "content",
-              "type": "String",
-              "isCollection": false,
-              "description": "交流内容,小于70个汉字"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是LOB数据"
-            },
-            {
-              "name": "isFile",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是发送的文件"
-            },
-            {
-              "name": "fileId",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "发送的文件ID,存储到file应用的文件ID"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "DynamicAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.dynamic.DynamicAction",
-      "description": "工作动态信息管理",
-      "methods": [
-        {
-          "name": "listNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.dynamic.ActionListNextWithFilter",
-          "description": "根据过滤条件列示工作动态信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/dynamic/list/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作任务ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "objectType",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的对象类型:PROJECT、TASK、TASKGROUP、TASKLIST、TASKVIEW、CHAT等,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "bundle",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目、工作或者工作组、列表、视图等对象的ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "optType",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的操作类别,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "optType",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作类别:Create|Modify|Delete|Other"
-            },
-            {
-              "name": "objectType",
-              "type": "String",
-              "isCollection": false,
-              "description": "动态对象类别:Project|Task|TaskGroup|TaskView|Config|Chat|Other"
-            },
-            {
-              "name": "bundle",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作对象ID"
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "动态对象标题"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID"
-            },
-            {
-              "name": "projectTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目标题"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID"
-            },
-            {
-              "name": "taskTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作标题"
-            },
-            {
-              "name": "dateTimeStr",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作时间"
-            },
-            {
-              "name": "optTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "操作时间"
-            },
-            {
-              "name": "operator",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作者名称"
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者姓名"
-            },
-            {
-              "name": "content",
-              "type": "String",
-              "isCollection": false,
-              "description": "内容"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "viewUrl",
-              "type": "String",
-              "isCollection": false,
-              "description": "访问链接"
-            },
-            {
-              "name": "personal",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是关于用户个人操作比如工作任务组,项目组,工作列表"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextWithProject",
-          "className": "com.x.teamwork.assemble.control.jaxrs.dynamic.ActionListNextWithProject",
-          "description": "根据项目列示工作动态信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/dynamic/list/{id}/next/{count}/project/{projectId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作任务ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "objectType",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的对象类型:PROJECT、TASK、TASKGROUP、TASKLIST、TASKVIEW、CHAT等,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "bundle",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目、工作或者工作组、列表、视图等对象的ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "optType",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的操作类别,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "optType",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作类别:Create|Modify|Delete|Other"
-            },
-            {
-              "name": "objectType",
-              "type": "String",
-              "isCollection": false,
-              "description": "动态对象类别:Project|Task|TaskGroup|TaskView|Config|Chat|Other"
-            },
-            {
-              "name": "bundle",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作对象ID"
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "动态对象标题"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID"
-            },
-            {
-              "name": "projectTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目标题"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID"
-            },
-            {
-              "name": "taskTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作标题"
-            },
-            {
-              "name": "dateTimeStr",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作时间"
-            },
-            {
-              "name": "optTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "操作时间"
-            },
-            {
-              "name": "operator",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作者名称"
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者姓名"
-            },
-            {
-              "name": "content",
-              "type": "String",
-              "isCollection": false,
-              "description": "内容"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "viewUrl",
-              "type": "String",
-              "isCollection": false,
-              "description": "访问链接"
-            },
-            {
-              "name": "personal",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是关于用户个人操作比如工作任务组,项目组,工作列表"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextWithTask",
-          "className": "com.x.teamwork.assemble.control.jaxrs.dynamic.ActionListNextWithTask",
-          "description": "根据工作任务列示工作动态信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/dynamic/list/{id}/next/{count}/task/{taskId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "description": "工作任务ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作任务ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "objectType",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的对象类型:PROJECT、TASK、TASKGROUP、TASKLIST、TASKVIEW、CHAT等,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "bundle",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目、工作或者工作组、列表、视图等对象的ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "optType",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的操作类别,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "optType",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作类别:Create|Modify|Delete|Other"
-            },
-            {
-              "name": "objectType",
-              "type": "String",
-              "isCollection": false,
-              "description": "动态对象类别:Project|Task|TaskGroup|TaskView|Config|Chat|Other"
-            },
-            {
-              "name": "bundle",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作对象ID"
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "动态对象标题"
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID"
-            },
-            {
-              "name": "projectTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目标题"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属工作ID"
-            },
-            {
-              "name": "taskTitle",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作标题"
-            },
-            {
-              "name": "dateTimeStr",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作时间"
-            },
-            {
-              "name": "optTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "操作时间"
-            },
-            {
-              "name": "operator",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作者名称"
-            },
-            {
-              "name": "target",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标者姓名"
-            },
-            {
-              "name": "content",
-              "type": "String",
-              "isCollection": false,
-              "description": "内容"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "viewUrl",
-              "type": "String",
-              "isCollection": false,
-              "description": "访问链接"
-            },
-            {
-              "name": "personal",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否是关于用户个人操作比如工作任务组,项目组,工作列表"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "EchoAction",
-      "className": "com.x.base.core.project.jaxrs.echo.EchoAction",
-      "description": "响应",
-      "methods": [
-        {
-          "name": "get",
-          "className": "com.x.base.core.project.jaxrs.echo.ActionGet",
-          "description": "获取应答.",
-          "type": "GET",
-          "path": "jaxrs/echo",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "servletContextName",
-              "type": "String",
-              "isCollection": false,
-              "description": "上下文根"
-            },
-            {
-              "name": "serverTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "服务器时间"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "FireScheduleAction",
-      "className": "com.x.base.core.project.jaxrs.fireschedule.FireScheduleAction",
-      "description": "触发任务",
-      "methods": [
-        {
-          "name": "execute",
-          "className": "com.x.base.core.project.jaxrs.fireschedule.ActionExecute",
-          "description": "接受x_program_center发送过来的运行schedule.",
-          "type": "GET",
-          "path": "jaxrs/fireschedule/classname/{className}",
-          "contentType": "application/json",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "className",
-              "type": "String",
-              "description": "运行类"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "LoggerAction",
-      "className": "com.x.base.core.project.jaxrs.logger.LoggerAction",
-      "description": "日志操作",
-      "methods": [
-        {
-          "name": "debug",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionDebug",
-          "description": "设置日志级别为DEBUG.",
-          "type": "GET",
-          "path": "jaxrs/logger/debug",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionGet",
-          "description": "获取当前日志级别.",
-          "type": "GET",
-          "path": "jaxrs/logger",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "String",
-              "isCollection": false,
-              "description": "字符串值"
-            }
-          ]
-        },
-        {
-          "name": "info",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionInfo",
-          "description": "设置日志级别为INFO",
-          "type": "GET",
-          "path": "jaxrs/logger/info",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "trace",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionTrace",
-          "description": "设置日志级别为TRACE.",
-          "type": "GET",
-          "path": "jaxrs/logger/trace",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        },
-        {
-          "name": "warn",
-          "className": "com.x.base.core.project.jaxrs.logger.ActionWarn",
-          "description": "设置日志级别为WARN",
-          "type": "GET",
-          "path": "jaxrs/logger/warn",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "ProjectAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.project.ProjectAction",
-      "description": "项目信息管理",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionDelete",
-          "description": "根据标识删除项目信息.",
-          "type": "DELETE",
-          "path": "jaxrs/project/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionGet",
-          "description": "根据ID查询项目信息.",
-          "type": "GET",
-          "path": "jaxrs/project/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listArchiveNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListArchiveNextWithFilter",
-          "description": "列示已归档项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/archive/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listCompletedNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListCompletedNextWithFilter",
-          "description": "列示已完成项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/completed/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listMyNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListMyNextWithFilter",
-          "description": "列示我负责的项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/my/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextInGroupWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListNextInGroupWithFilter",
-          "description": "列示指定项目组中的项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/{id}/next/{count}/group/{groupId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            },
-            {
-              "name": "groupId",
-              "type": "String",
-              "description": "项目组ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListNextWithFilter",
-          "description": "列示项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNoGroupNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListNoGroupNextWithFilter",
-          "description": "列示未分类项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/groupness/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listPageInGroupWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListPageInGroupWithFilter",
-          "description": "列示指定项目组中的项目信息,按页码分页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/{page}/size/{size}/group/{groupId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "page",
-              "type": "Integer",
-              "description": "当前页码"
-            },
-            {
-              "name": "size",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            },
-            {
-              "name": "groupId",
-              "type": "String",
-              "description": "项目组ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listPageWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListPageWithFilter",
-          "description": "列示项目信息,按页码分页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/{page}/size/{size}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "page",
-              "type": "Integer",
-              "description": "当前页码"
-            },
-            {
-              "name": "size",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listRecycleNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListRecycleNextWithFilter",
-          "description": "列示回收站项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/recycle/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listStarNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionListStarNextWithFilter",
-          "description": "列示标星项目信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/project/list/star/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填, 默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目类型,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "archive",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经归档,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人:单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "group",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目分组标识:单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "star",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否标星"
-            },
-            {
-              "name": "control",
-              "type": "WrapOutControl",
-              "isCollection": false,
-              "description": "项目控件权限"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M)"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cProjectGroup\u003e",
-              "isCollection": true,
-              "description": "项目组列表"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目"
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "总体进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "groupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分组个数,未分组为0"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经完成"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人"
-            },
-            {
-              "name": "starPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标星人员"
-            },
-            {
-              "name": "participantPersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员"
-            },
-            {
-              "name": "participantIdentityList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与人员身份"
-            },
-            {
-              "name": "participantUnitList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与组织"
-            },
-            {
-              "name": "participantGroupList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与群组"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionSave",
-          "description": "创建或者更新一个项目信息.",
-          "type": "POST",
-          "path": "jaxrs/project",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目名称,必填",
-              "isBaseType": true
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "type",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目类型:普通项目 | 软件项目,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(1M),非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "项目所属的项目组,可多值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "star",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionStar",
-          "description": "根据ID给项目标星.",
-          "type": "GET",
-          "path": "jaxrs/project/star/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "statiticMyProject",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionStatisticMyProjects",
-          "description": "查询我的项目统计信息.",
-          "type": "GET",
-          "path": "jaxrs/project/statitic/my",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "allCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "starCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "myCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "unGroupCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "completedCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "archiveCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "deleteCount",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "所有项目数量"
-            },
-            {
-              "name": "groups",
-              "type": "List\u003cWoGroup\u003e",
-              "isCollection": true,
-              "description": "所有分组信息"
-            }
-          ]
-        },
-        {
-          "name": "statiticMyProjectGroup",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionStatisticMyProjectsGroups",
-          "description": "查询我的项目组统计信息.",
-          "type": "GET",
-          "path": "jaxrs/project/statitic/group",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "groups",
-              "type": "List\u003cWoGroup\u003e",
-              "isCollection": true,
-              "description": "所有分组信息"
-            }
-          ]
-        },
-        {
-          "name": "unStar",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionUnStar",
-          "description": "根据ID取消项目标星.",
-          "type": "GET",
-          "path": "jaxrs/project/unstar/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "updateIcon",
-          "className": "com.x.teamwork.assemble.control.jaxrs.project.ActionUpdateIcon",
-          "description": "更新一个项目图标信息.",
-          "type": "PUT",
-          "path": "jaxrs/project/{id}/icon",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标文件ID",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "ProjectExtFieldReleAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ProjectExtFieldReleAction",
-      "description": "项目扩展属性关联信息管理",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ActionDelete",
-          "description": "根据标识删除项目扩展属性关联信息.",
-          "type": "DELETE",
-          "path": "jaxrs/extfield/relevance/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ActionGet",
-          "description": "根据指定ID查询项目扩展属性关联信息.",
-          "type": "GET",
-          "path": "jaxrs/extfield/rele/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "关联信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成(必填)."
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目ID(必填)"
-            },
-            {
-              "name": "extFieldName",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用列名(必填)"
-            },
-            {
-              "name": "displayName",
-              "type": "String",
-              "isCollection": false,
-              "description": "显示属性名称(必填)"
-            },
-            {
-              "name": "displayType",
-              "type": "String",
-              "isCollection": false,
-              "description": "显示方式:TEXT|SELECT|MUTISELECT|RICHTEXT|DATE|DATETIME|PERSON|IDENTITY|UNIT|GROUP|(必填)"
-            },
-            {
-              "name": "optionsData",
-              "type": "String",
-              "isCollection": false,
-              "description": "选择荐的备选数据,数据Json, displayType\u003dSELECT|MUTISELECT时必须填写,否则无选择项"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号(非必填)"
-            },
-            {
-              "name": "nullable",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否允许为空(非必填)"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(非必填)"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "getNextUseableFieldName",
-          "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ActionGetNextUseableExtFieldName",
-          "description": "根据项目ID,需要的扩展属性类别获取下一个可用的属性名称.",
-          "type": "GET",
-          "path": "jaxrs/extfield/next/field/{projectId}/{fieldType}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            },
-            {
-              "name": "fieldType",
-              "type": "String",
-              "description": "属性类别:TEXT|SELECT|MUTISELECT|RICHTEXT|DATE|DATETIME|PERSON|IDENTITY|UNIT|GROUP|"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": []
-        },
-        {
-          "name": "listAllUseableFields",
-          "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ActionListAllExtFields",
-          "description": "查询所有项目扩展属性信息.",
-          "type": "GET",
-          "path": "jaxrs/extfield/list/fields/all",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": []
-        },
-        {
-          "name": "listFieldsWithProject",
-          "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ActionListWithProject",
-          "description": "查询用户创建的所有项目扩展属性关联信息列表.",
-          "type": "GET",
-          "path": "jaxrs/extfield/list/{projectId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成(必填)."
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目ID(必填)"
-            },
-            {
-              "name": "extFieldName",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用列名(必填)"
-            },
-            {
-              "name": "displayName",
-              "type": "String",
-              "isCollection": false,
-              "description": "显示属性名称(必填)"
-            },
-            {
-              "name": "displayType",
-              "type": "String",
-              "isCollection": false,
-              "description": "显示方式:TEXT|SELECT|MUTISELECT|RICHTEXT|DATE|DATETIME|PERSON|IDENTITY|UNIT|GROUP|(必填)"
-            },
-            {
-              "name": "optionsData",
-              "type": "String",
-              "isCollection": false,
-              "description": "选择荐的备选数据,数据Json, displayType\u003dSELECT|MUTISELECT时必须填写,否则无选择项"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号(非必填)"
-            },
-            {
-              "name": "nullable",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否允许为空(非必填)"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(非必填)"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.extfield.ActionSave",
-          "description": "创建或者更新一个项目扩展属性关联信息.",
-          "type": "POST",
-          "path": "jaxrs/extfield/relevance",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "ID,为空时为新建",
-              "isBaseType": true
-            },
-            {
-              "name": "projectId",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目ID(必填)",
-              "isBaseType": true
-            },
-            {
-              "name": "displayName",
-              "type": "String",
-              "isCollection": false,
-              "description": "显示属性名称(必填)",
-              "isBaseType": true
-            },
-            {
-              "name": "displayType",
-              "type": "String",
-              "isCollection": false,
-              "description": "显示方式:TEXT|RADIO|CHECKBOX|SELECT|MUTISELECT|RICHTEXT(必填)",
-              "isBaseType": true
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(非必填)",
-              "isBaseType": true
-            },
-            {
-              "name": "optionsData",
-              "type": "String",
-              "isCollection": false,
-              "description": "选择荐的备选数据,数据Json, displayType\u003dRADIO|CHECKBOX|SELECT|MUTISELECT时必须填写,否则无选择项",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "ProjectGroupAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.projectgroup.ProjectGroupAction",
-      "description": "项目组信息管理",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.projectgroup.ActionDelete",
-          "description": "根据标识删除项目组信息.",
-          "type": "DELETE",
-          "path": "jaxrs/project_group/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.projectgroup.ActionGet",
-          "description": "根据ID查询项目组信息.",
-          "type": "GET",
-          "path": "jaxrs/project_group/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "项目组ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目组名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listGroups",
-          "className": "com.x.teamwork.assemble.control.jaxrs.projectgroup.ActionList",
-          "description": "查询用户创建的所有项目组信息列表.",
-          "type": "GET",
-          "path": "jaxrs/project_group/list/my",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目组名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithIds",
-          "className": "com.x.teamwork.assemble.control.jaxrs.projectgroup.ActionListWithFilter",
-          "description": "根据ID列表查询项目组信息列表.",
-          "type": "PUT",
-          "path": "jaxrs/project_group",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "ids",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "项目组ID列表",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目组名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.projectgroup.ActionSave",
-          "description": "创建或者更新一个项目组信息.",
-          "type": "POST",
-          "path": "jaxrs/project_group",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息",
-              "isBaseType": true
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标icon Base64编码后的文本.",
-              "isBaseType": true
-            },
-            {
-              "name": "iconColor",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标主色调.",
-              "isBaseType": true
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "项目组名称",
-              "isBaseType": true
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号",
-              "isBaseType": true
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。",
-              "isBaseType": true
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者",
-              "isBaseType": true
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位.",
-              "isBaseType": true
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中.",
-              "isBaseType": true
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中.",
-              "isBaseType": true
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "SysResourceAction",
-      "className": "com.x.base.core.project.jaxrs.sysresource.SysResourceAction",
-      "description": "系统资源",
-      "methods": [
-        {
-          "name": "listResource",
-          "className": "com.x.base.core.project.jaxrs.sysresource.ActionListResource",
-          "description": "获取静态资源信息.",
-          "type": "GET",
-          "path": "jaxrs/sysresource/filePath/{filePath}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "filePath",
-              "type": "String",
-              "description": "查找路径(根路径:(0))"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": []
-        },
-        {
-          "name": "uploadResource",
-          "className": "com.x.base.core.project.jaxrs.sysresource.ActionUploadResource",
-          "description": "上传静态资源(仅上传到当前服务器)",
-          "type": "POST",
-          "path": "jaxrs/sysresource/upload/resource/as/new/{asNew}",
-          "contentType": "multipart/form-data",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": true,
-          "pathParameters": [
-            {
-              "name": "asNew",
-              "type": "Boolean",
-              "description": "覆盖类型:true删除原文件然后上传,false覆盖原文件"
-            }
-          ],
-          "formParameters": [
-            {
-              "name": "file",
-              "type": "File",
-              "description": "上传文件"
-            },
-            {
-              "name": "fileName",
-              "type": "String",
-              "description": "附件名称"
-            },
-            {
-              "name": "filePath",
-              "type": "String",
-              "description": "附件存放目录(可以为空)"
-            }
-          ],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "value",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "布尔值."
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "SystemConfigAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.config.SystemConfigAction",
-      "description": "系统设置信息管理服务",
-      "methods": [
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.config.ActionGet",
-          "description": "根据ID获取系统配置信息",
-          "type": "GET",
-          "path": "jaxrs/config/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "系统配置信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "configCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置编码"
-            },
-            {
-              "name": "configName",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置名称"
-            },
-            {
-              "name": "configValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置内容"
-            },
-            {
-              "name": "valueType",
-              "type": "String",
-              "isCollection": false,
-              "description": "值类型: select | identity | number | date | text"
-            },
-            {
-              "name": "selectContent",
-              "type": "String",
-              "isCollection": false,
-              "description": "可选值,和select配合使用,以‘|’号分隔"
-            },
-            {
-              "name": "isMultiple",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否可以多值"
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否富文本、长文本"
-            },
-            {
-              "name": "orderNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "getWithCode",
-          "className": "com.x.teamwork.assemble.control.jaxrs.config.ActionGetWithCode",
-          "description": "根据Code获取系统配置信息",
-          "type": "GET",
-          "path": "jaxrs/config/code/{code}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "code",
-              "type": "String",
-              "description": "系统配置信息编码"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "configCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置编码"
-            },
-            {
-              "name": "configName",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置名称"
-            },
-            {
-              "name": "configValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置内容"
-            },
-            {
-              "name": "valueType",
-              "type": "String",
-              "isCollection": false,
-              "description": "值类型: select | identity | number | date | text"
-            },
-            {
-              "name": "selectContent",
-              "type": "String",
-              "isCollection": false,
-              "description": "可选值,和select配合使用,以‘|’号分隔"
-            },
-            {
-              "name": "isMultiple",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否可以多值"
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否富文本、长文本"
-            },
-            {
-              "name": "orderNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "isManager",
-          "className": "com.x.teamwork.assemble.control.jaxrs.config.ActionIsManager",
-          "description": "判断当前用户是否有管理员权限",
-          "type": "GET",
-          "path": "jaxrs/config/ismanager",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "configCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置编码"
-            },
-            {
-              "name": "configName",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置名称"
-            },
-            {
-              "name": "configValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置内容"
-            },
-            {
-              "name": "valueType",
-              "type": "String",
-              "isCollection": false,
-              "description": "值类型: select | identity | number | date | text"
-            },
-            {
-              "name": "selectContent",
-              "type": "String",
-              "isCollection": false,
-              "description": "可选值,和select配合使用,以‘|’号分隔"
-            },
-            {
-              "name": "isMultiple",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否可以多值"
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否富文本、长文本"
-            },
-            {
-              "name": "orderNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listAllSystemConfig",
-          "className": "com.x.teamwork.assemble.control.jaxrs.config.ActionListAll",
-          "description": "获取所有系统配置信息列表",
-          "type": "GET",
-          "path": "jaxrs/config/list/all",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "configCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置编码"
-            },
-            {
-              "name": "configName",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置名称"
-            },
-            {
-              "name": "configValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置内容"
-            },
-            {
-              "name": "valueType",
-              "type": "String",
-              "isCollection": false,
-              "description": "值类型: select | identity | number | date | text"
-            },
-            {
-              "name": "selectContent",
-              "type": "String",
-              "isCollection": false,
-              "description": "可选值,和select配合使用,以‘|’号分隔"
-            },
-            {
-              "name": "isMultiple",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否可以多值"
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否富文本、长文本"
-            },
-            {
-              "name": "orderNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明"
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.config.ActionSave",
-          "description": "新建或者更新系统配置信息",
-          "type": "POST",
-          "path": "jaxrs/config",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "configCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置编码",
-              "isBaseType": true
-            },
-            {
-              "name": "configName",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置名称",
-              "isBaseType": true
-            },
-            {
-              "name": "configValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "配置内容",
-              "isBaseType": true
-            },
-            {
-              "name": "valueType",
-              "type": "String",
-              "isCollection": false,
-              "description": "值类型: select | identity | number | date | text",
-              "isBaseType": true
-            },
-            {
-              "name": "selectContent",
-              "type": "String",
-              "isCollection": false,
-              "description": "可选值,和select配合使用,以‘|’号分隔",
-              "isBaseType": true
-            },
-            {
-              "name": "isMultiple",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否可以多值",
-              "isBaseType": true
-            },
-            {
-              "name": "isLob",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否富文本、长文本",
-              "isBaseType": true
-            },
-            {
-              "name": "orderNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号",
-              "isBaseType": true
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "备注说明",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "TaskAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.task.TaskAction",
-      "description": "工作任务信息管理",
-      "methods": [
-        {
-          "name": "archive",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionArchive",
-          "description": "根据ID归档指定工作任务.",
-          "type": "GET",
-          "path": "jaxrs/task/archive/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionDelete",
-          "description": "根据标识删除工作任务信息.",
-          "type": "DELETE",
-          "path": "jaxrs/task/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionGet",
-          "description": "根据ID查询工作任务信息.",
-          "type": "GET",
-          "path": "jaxrs/task/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "detail",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作内容(128K)"
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明详细信息(10M)"
-            },
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签(列表)"
-            },
-            {
-              "name": "extFieldConfigs",
-              "type": "List\u003cWoExtFieldRele\u003e",
-              "isCollection": true,
-              "description": "所属项目的扩展列设定(配置列表)"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listAllTaskWithTaskListId",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionListWithTaskList",
-          "description": "列示指定项目的指定工作列表内的工作任务信息(只要可见的都显示出来).",
-          "type": "GET",
-          "path": "jaxrs/task/list/project/{projectId}/tasklist/{taskListId}/all",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            },
-            {
-              "name": "taskListId",
-              "type": "String",
-              "description": "工作任务列表ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listMyTaskWithTaskListId",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionListMyTaskWithTaskList",
-          "description": "列示指定项目的指定工作列表内我负责的工作任务信息.",
-          "type": "GET",
-          "path": "jaxrs/task/list/project/{projectId}/tasklist/{taskListId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            },
-            {
-              "name": "taskListId",
-              "type": "String",
-              "description": "工作任务列表ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionListNextWithFilter",
-          "description": "列示工作任务信息,下一页.",
-          "type": "PUT",
-          "path": "jaxrs/task/list/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目ID,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "parentId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的上级工作任务ID,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "tag",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作标签:自定义标签,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通-normal | 紧急-urgent | 特急-extraurgent,单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作状态:草稿- draft  | 执行中- processing | 已完成- completed | 已归档- archived,单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,true|false,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "overtime",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已超时,true|false,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,true|false,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者或者负责人,单值,非必填",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listPageWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionListPageWithFilter",
-          "description": "列示工作任务信息,按页码分页.",
-          "type": "PUT",
-          "path": "jaxrs/task/list/{page}/size/{size}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "page",
-              "type": "Integer",
-              "description": "最后一条信息数据的ID"
-            },
-            {
-              "name": "size",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "title",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的项目ID,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "parentId",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的上级工作任务ID,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "tag",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作标签:自定义标签,单值,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通-normal | 紧急-urgent | 特急-extraurgent,单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的工作状态:草稿- draft  | 执行中- processing | 已完成- completed | 已归档- archived,单值,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "completed",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已完成,true|false,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "overtime",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已超时,true|false,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "deleted",
-              "type": "String",
-              "isCollection": false,
-              "description": "是否已经删除,true|false,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者或者负责人,单值,非必填",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listSubTaskWithTaskId",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionListSubTaskWithTaskId",
-          "description": "列示用户可见的指定任务的下级任务信息列表.",
-          "type": "GET",
-          "path": "jaxrs/task/list/sub/{taskId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "description": "工作任务ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionSave",
-          "description": "创建或者更新一个工作任务信息.",
-          "type": "POST",
-          "path": "jaxrs/task",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,非必填,自动生成.",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID,非必填.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字),\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字),非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:processing | completed,非必填,默认processing",
-              "isBaseType": true
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作优先级:普通 | 紧急 | 特急 ,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份,非必填,若有则以identity为准",
-              "isBaseType": true
-            },
-            {
-              "name": "detail",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作内容(128K),非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息(10M),非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "taskGroupId",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务组ID,非必填,与taskListIds必须填写一种",
-              "isBaseType": true
-            },
-            {
-              "name": "taskListIds",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "任务默认归类的任务列表ID,非必填,与taskGroupId必须填写一种",
-              "isBaseType": true
-            },
-            {
-              "name": "taskTagIds",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务标签ID列表,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务管理者,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_1",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性1(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_2",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性2(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_3",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性3(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_4",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性4(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_5",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性5(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_6",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性6(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_7",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性7(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_8",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用属性8(最大长度:255)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_1_lob",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用长文本1(最大长度:10M)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_2_lob",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用长文本2(最大长度:10M)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_3_lob",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用长文本3(最大长度:10M)",
-              "isBaseType": true
-            },
-            {
-              "name": "memoString_4_lob",
-              "type": "String",
-              "isCollection": false,
-              "description": "备用长文本4(最大长度:10M)",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "statiticMyProject",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionStatisticMyTasks",
-          "description": "查询我的项目首页中工作任务组和视图信息.",
-          "type": "GET",
-          "path": "jaxrs/task/statitic/{projectId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "groups",
-              "type": "List\u003cWoTaskGroup\u003e",
-              "isCollection": true,
-              "description": "工作任务分组"
-            },
-            {
-              "name": "views",
-              "type": "List\u003cWoTaskView\u003e",
-              "isCollection": true,
-              "description": "工作任务视图"
-            }
-          ]
-        },
-        {
-          "name": "statiticMyProjectGroup",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionStatisticMyTaskViews",
-          "description": "查询我的项目首页中工作任务视图信息.",
-          "type": "GET",
-          "path": "jaxrs/task/statitic/group/{projectId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "views",
-              "type": "List\u003cWoTaskView\u003e",
-              "isCollection": true,
-              "description": "工作任务视图"
-            }
-          ]
-        },
-        {
-          "name": "updateManager",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionManagerUpdate",
-          "description": "为工作任务信息添加新的管理者.",
-          "type": "PUT",
-          "path": "jaxrs/task/manager/{id}/update",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作任务信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者标识列表",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "updateParticipant",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionParticipantUpdate",
-          "description": "为工作任务信息添加新的参与者.",
-          "type": "PUT",
-          "path": "jaxrs/task/participant/{id}/update",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作任务信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "参与者标识列表:可能是个人,可能是身份,也可能是组织和群组",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "updateSingleProperty",
-          "className": "com.x.teamwork.assemble.control.jaxrs.task.ActionUpdateSingleProperty",
-          "description": "更新一个工作任务指定的单个属性信息内容.",
-          "type": "PUT",
-          "path": "jaxrs/task/{id}/property",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作任务信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "property",
-              "type": "String",
-              "isCollection": false,
-              "description": "需要修改的属性标识,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e。",
-              "isBaseType": true
-            },
-            {
-              "name": "mainValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "属性的主要值,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "secondaryValue",
-              "type": "String",
-              "isCollection": false,
-              "description": "属性次要值,如果工作任务时间中的结束时间,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "dataType",
-              "type": "String",
-              "isCollection": false,
-              "description": "值的类别Number|Text|RichText,默认Text,如果是RichText, secondaryValue需要填写去除标签的文字内容(\u003c70字),会记录到动态内容",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "TaskGroupAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.taskgroup.TaskGroupAction",
-      "description": "工作任务组信息管理",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskgroup.ActionDelete",
-          "description": "根据标识删除工作任务组信息.",
-          "type": "DELETE",
-          "path": "jaxrs/task_group/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskgroup.ActionGet",
-          "description": "根据ID查询工作任务组信息.",
-          "type": "GET",
-          "path": "jaxrs/task_group/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作任务组ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务分组名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "taskTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "任务总数"
-            },
-            {
-              "name": "completedTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "已完成数量"
-            },
-            {
-              "name": "overtimeTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "超时数量"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "分组描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listGroups",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskgroup.ActionList",
-          "description": "查询用户在指定项目中所有的工作任务组信息列表.",
-          "type": "GET",
-          "path": "jaxrs/task_group/list/{project}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "project",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务分组名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "taskTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "任务总数"
-            },
-            {
-              "name": "completedTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "已完成数量"
-            },
-            {
-              "name": "overtimeTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "超时数量"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "分组描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithIds",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskgroup.ActionListWithFilter",
-          "description": "根据ID列表查询工作任务组信息列表.",
-          "type": "PUT",
-          "path": "jaxrs/task_group",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "ids",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务组ID列表",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务分组名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "taskTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "任务总数"
-            },
-            {
-              "name": "completedTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "已完成数量"
-            },
-            {
-              "name": "overtimeTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "超时数量"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "分组描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskgroup.ActionSave",
-          "description": "创建或者更新一个工作任务组信息.",
-          "type": "POST",
-          "path": "jaxrs/task_group",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "description",
-              "type": "String",
-              "isCollection": false,
-              "description": "说明信息",
-              "isBaseType": true
-            },
-            {
-              "name": "icon",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标icon Base64编码后的文本.",
-              "isBaseType": true
-            },
-            {
-              "name": "iconColor",
-              "type": "String",
-              "isCollection": false,
-              "description": "图标主色调.",
-              "isBaseType": true
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成.",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID.",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务分组名称",
-              "isBaseType": true
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号",
-              "isBaseType": true
-            },
-            {
-              "name": "taskTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "任务总数",
-              "isBaseType": true
-            },
-            {
-              "name": "completedTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "已完成数量",
-              "isBaseType": true
-            },
-            {
-              "name": "overtimeTotal",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "超时数量",
-              "isBaseType": true
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "分组描述",
-              "isBaseType": true
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。",
-              "isBaseType": true
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者",
-              "isBaseType": true
-            },
-            {
-              "name": "distributeFactor",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "分布式存储标识位.",
-              "isBaseType": true
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中.",
-              "isBaseType": true
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中.",
-              "isBaseType": true
-            },
-            {
-              "name": "sequence",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表序号,由创建时间以及ID组成.在保存时自动生成,索引创建在约束中.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "TaskListAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.list.TaskListAction",
-      "description": "任务列表管理",
-      "methods": [
-        {
-          "name": "addTask2ListWithBehindTask",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionAddTask2ListWithBehindTask",
-          "description": "将一个工作任务添加到指定的列表中.",
-          "type": "PUT",
-          "path": "jaxrs/task_list/add2list/{listId}/behindTask",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "listId",
-              "type": "String",
-              "description": "工作任务列表ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "需要添加到的列表里的工作任务ID",
-              "isBaseType": true
-            },
-            {
-              "name": "behindTaskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "在列表里后面的一个工作任务ID,如果没有,可以为空",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标工作任务列表ID"
-            },
-            {
-              "name": "message",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作结果相关的消息"
-            }
-          ]
-        },
-        {
-          "name": "addTask2ListWithOrderNumber",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionAddTask2ListWithOrderNumber",
-          "description": "将一个工作任务添加到指定的列表中.",
-          "type": "PUT",
-          "path": "jaxrs/task_list/add2list/{listId}/order",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "listId",
-              "type": "String",
-              "description": "工作任务列表ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "需要添加到的列表里的工作任务ID",
-              "isBaseType": true
-            },
-            {
-              "name": "orderNumber",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作任务在列表里的排序位置,如果是最后一个,可以为空",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "目标工作任务列表ID"
-            },
-            {
-              "name": "message",
-              "type": "String",
-              "isCollection": false,
-              "description": "操作结果相关的消息"
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionDelete",
-          "description": "删除工作任务列表信息.",
-          "type": "DELETE",
-          "path": "jaxrs/task_list/delete/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionGet",
-          "description": "根据ID查询工作任务列表信息.",
-          "type": "GET",
-          "path": "jaxrs/task_list/taskgroup/{taskGroupId}/tasklist/{taskListId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskGroupId",
-              "type": "String",
-              "description": "工作任务分组ID"
-            },
-            {
-              "name": "taskListId",
-              "type": "String",
-              "description": "工作任务列表ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "taskCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "工作任务数量."
-            },
-            {
-              "name": "control",
-              "type": "Control",
-              "isCollection": false,
-              "description": "工作任务列表操作权限."
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "taskGroup",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属任务分组."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务列表(泳道)名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithTaskGroup",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionListWithTaskGroup",
-          "description": "根据工作任务组查询工作列表信息列表.",
-          "type": "GET",
-          "path": "jaxrs/task_list/list/taskgroup/{taskgroup}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskgroup",
-              "type": "String",
-              "description": "工作任务组ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "taskCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "工作任务数量."
-            },
-            {
-              "name": "control",
-              "type": "Control",
-              "isCollection": false,
-              "description": "工作任务列表操作权限."
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "taskGroup",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属任务分组."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务列表(泳道)名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithTaskGroupWithTask",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionListWithTaskGroupWithTask",
-          "description": "根据工作任务组查询工作列表信息列表.",
-          "type": "GET",
-          "path": "jaxrs/task_list/list/taskgroup/{taskgroup}/{withTask}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskgroup",
-              "type": "String",
-              "description": "工作任务组ID"
-            },
-            {
-              "name": "withTask",
-              "type": "Boolean",
-              "description": "是否包含工作列表"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "taskCount",
-              "type": "Long",
-              "isCollection": false,
-              "description": "工作任务数量."
-            },
-            {
-              "name": "control",
-              "type": "Control",
-              "isCollection": false,
-              "description": "工作任务列表操作权限."
-            },
-            {
-              "name": "tasks",
-              "type": "List\u003cWoTask\u003e",
-              "isCollection": true,
-              "description": "工作任务信息集合."
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "taskGroup",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属任务分组."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务列表(泳道)名称"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "refreshTaskList",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionRefreshTaskList",
-          "description": "重新指定列表中所有的任务(删除原来的关联,添加新的关联).",
-          "type": "PUT",
-          "path": "jaxrs/task_list/tasklist/refresh",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "工作任务列表ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "taskIds",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "需要添加到的列表里的工作任务ID",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "removeTaskFromList",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionRemoveTaskFromList",
-          "description": "将一个工作任务从指定的列表中移除.",
-          "type": "DELETE",
-          "path": "jaxrs/task_list/remove/{listId}/task/{taskId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "listId",
-              "type": "String",
-              "description": "工作任务列表ID"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "description": "工作任务ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.list.ActionSave",
-          "description": "创建或者更新一个工作任务列表信息.",
-          "type": "POST",
-          "path": "jaxrs/task_list",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表ID,新建时为空.",
-              "isBaseType": true
-            },
-            {
-              "name": "taskGroup",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属任务分组(必填).",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务列表名称(必填)",
-              "isBaseType": true
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号",
-              "isBaseType": true
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "TaskTagAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.TaskTagAction",
-      "description": "工作任务标签信息管理",
-      "methods": [
-        {
-          "name": "addTagRele",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionAddTagRele",
-          "description": "为工作任务添加标签.",
-          "type": "GET",
-          "path": "jaxrs/task_tag/rele/{taskId}/{tagId}/add",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "description": "工作任务ID"
-            },
-            {
-              "name": "tagId",
-              "type": "String",
-              "description": "标签ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "tagId",
-              "type": "String",
-              "isCollection": false,
-              "description": "标签ID"
-            },
-            {
-              "name": "taskId",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务ID"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者。"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionDelete",
-          "description": "根据标识删除工作任务标签信息.",
-          "type": "DELETE",
-          "path": "jaxrs/task_tag/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionGet",
-          "description": "根据ID查询工作任务标签信息.",
-          "type": "GET",
-          "path": "jaxrs/task_tag/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "标识"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "tag",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务标签"
-            },
-            {
-              "name": "tagColor",
-              "type": "String",
-              "isCollection": false,
-              "description": "标签颜色"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithProject",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionListWithProject",
-          "description": "查询用户对在项目里添加的所有标签信息列表.",
-          "type": "GET",
-          "path": "jaxrs/task_tag/list/project/{projectId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "tag",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务标签"
-            },
-            {
-              "name": "tagColor",
-              "type": "String",
-              "isCollection": false,
-              "description": "标签颜色"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listWithTask",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionListWithTask",
-          "description": "查询用户对工作任务添加的标签信息列表.",
-          "type": "GET",
-          "path": "jaxrs/task_tag/list/task/{taskId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "description": "工作任务ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "tag",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务标签"
-            },
-            {
-              "name": "tagColor",
-              "type": "String",
-              "isCollection": false,
-              "description": "标签颜色"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "removeTagRele",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionRemoveTagRele",
-          "description": "为工作任务删除标签.",
-          "type": "GET",
-          "path": "jaxrs/task_tag/rele/{taskId}/{tagId}/remove",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "taskId",
-              "type": "String",
-              "description": "工作任务ID"
-            },
-            {
-              "name": "tagId",
-              "type": "String",
-              "description": "标签ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "idList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "标识符."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.tasktag.ActionCreate",
-          "description": "创建或者更新一个标签信息.",
-          "type": "POST",
-          "path": "jaxrs/task_tag",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "可以为空,系统自动生成,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e。",
-              "isBaseType": true
-            },
-            {
-              "name": "tag",
-              "type": "String",
-              "isCollection": false,
-              "description": "标签文字,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            },
-            {
-              "name": "tagColor",
-              "type": "String",
-              "isCollection": false,
-              "description": "标签颜色,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "dynamics",
-              "type": "List\u003cWoDynamic\u003e",
-              "isCollection": true,
-              "description": "操作引起的动态内容"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "TaskViewAction",
-      "className": "com.x.teamwork.assemble.control.jaxrs.taskview.TaskViewAction",
-      "description": "工作任务视图信息管理",
-      "methods": [
-        {
-          "name": "delete",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionDelete",
-          "description": "根据指定的ID删除工作任务视图信息。",
-          "type": "DELETE",
-          "path": "jaxrs/task_view/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "视图信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        },
-        {
-          "name": "executeNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionExecuteWithFilterNext",
-          "description": "计算并展示指定工作任务视图中工作任务信息列表, 瀑布分页。",
-          "type": "PUT",
-          "path": "jaxrs/task_view/execute/view/{viewId}/flag/{flag}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "上一页最后一条信息数据的ID,第一页就填写\u0027(0)\u0027"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            },
-            {
-              "name": "viewId",
-              "type": "String",
-              "description": "视图ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "key",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "executePageWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionExecuteWithFilterInPage",
-          "description": "计算并展示指定工作任务视图中的工作任务信息列表,按页码分页.",
-          "type": "PUT",
-          "path": "jaxrs/task_view/execute/view/{viewId}/page/{pageNum}/{pageSize}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "pageNum",
-              "type": "Integer",
-              "description": "需要展现的页码"
-            },
-            {
-              "name": "pageSize",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            },
-            {
-              "name": "viewId",
-              "type": "String",
-              "description": "视图ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "key",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于搜索的标题,单值,非必填.",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "tags",
-              "type": "List\u003cWoTaskTag\u003e",
-              "isCollection": true,
-              "description": "任务标签"
-            },
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "projectName",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目名称."
-            },
-            {
-              "name": "parent",
-              "type": "String",
-              "isCollection": false,
-              "description": "父级工作任务ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务名称(40字)"
-            },
-            {
-              "name": "summay",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作任务概括(80字)"
-            },
-            {
-              "name": "startTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "endTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "工作开始时间"
-            },
-            {
-              "name": "priority",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作等级:普通 | 紧急 | 特急"
-            },
-            {
-              "name": "workStatus",
-              "type": "String",
-              "isCollection": false,
-              "description": "工作状态:执行中- processing | 已完成- completed | 已归档- archived"
-            },
-            {
-              "name": "completed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已完成"
-            },
-            {
-              "name": "claimed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已认领"
-            },
-            {
-              "name": "overtime",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已超时"
-            },
-            {
-              "name": "remindRelevance",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "提醒关联任务"
-            },
-            {
-              "name": "deleted",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经删除"
-            },
-            {
-              "name": "archive",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否已经归档"
-            },
-            {
-              "name": "reviewed",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "是否检查过review信息"
-            },
-            {
-              "name": "progress",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "工作进度:记录4位数,显示的时候除以100"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "executor",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者和负责人"
-            },
-            {
-              "name": "executorIdentity",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人身份"
-            },
-            {
-              "name": "executorUnit",
-              "type": "String",
-              "isCollection": false,
-              "description": "执行者|负责人所属组织"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "participantList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "工作任务参与者"
-            },
-            {
-              "name": "manageablePersonList",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "管理者"
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "get",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionGet",
-          "description": "根据指定的ID查询工作任务视图信息。",
-          "type": "GET",
-          "path": "jaxrs/task_view/{id}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "视图信息ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图名称"
-            },
-            {
-              "name": "executeCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图执行代号,系统视图使用,自定义视图不使用"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "workCompleted",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "筛选条件_是否已完成:-1-全部, 1-是,0-否."
-            },
-            {
-              "name": "workOverTime",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "筛选条件_是否已超时:-1-全部, 1-是,0-否."
-            },
-            {
-              "name": "isExcutor",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "筛选条件_查询负责的项目,如果为false,则为所有参与的项目范围"
-            },
-            {
-              "name": "choosePriority",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选条件_筛选优先级:普通、紧急、特急"
-            },
-            {
-              "name": "chooseWorkTag",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选条件_筛选标签:自定义标签名"
-            },
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "筛选条件_用于排列的属性,非必填,默认为createTime."
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "筛选条件_排序方式:DESC | ASC,非必填,默认为DESC."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listMyTaskWithTaskListId",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionListMyTaskView",
-          "description": "列示指定项目中用户所有的工作任务视图信息。",
-          "type": "GET",
-          "path": "jaxrs/task_view/list/project/{projectId}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "projectId",
-              "type": "String",
-              "description": "项目ID"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图名称"
-            },
-            {
-              "name": "executeCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图执行代号,系统视图使用,自定义视图不使用"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "workCompleted",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "筛选条件_是否已完成:-1-全部, 1-是,0-否."
-            },
-            {
-              "name": "workOverTime",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "筛选条件_是否已超时:-1-全部, 1-是,0-否."
-            },
-            {
-              "name": "isExcutor",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "筛选条件_查询负责的项目,如果为false,则为所有参与的项目范围"
-            },
-            {
-              "name": "choosePriority",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选条件_筛选优先级:普通、紧急、特急"
-            },
-            {
-              "name": "chooseWorkTag",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选条件_筛选标签:自定义标签名"
-            },
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "筛选条件_用于排列的属性,非必填,默认为createTime."
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "筛选条件_排序方式:DESC | ASC,非必填,默认为DESC."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "listNextWithFilter",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionListNextWithFilter",
-          "description": "根据条件列示用户可见的工作任务视图信息,分页展示。",
-          "type": "PUT",
-          "path": "jaxrs/task_view/list/{id}/next/{count}",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [
-            {
-              "name": "id",
-              "type": "String",
-              "description": "上一页最后一条信息数据的ID,第一页就填写\u0027(0)\u0027"
-            },
-            {
-              "name": "count",
-              "type": "Integer",
-              "description": "每页显示的条目数量"
-            }
-          ],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "ids",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选ID列表,非必填",
-              "isBaseType": true
-            },
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "用于排列的属性,非必填,默认为createTime.",
-              "isBaseType": true
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "排序方式:DESC | ASC,非必填,默认为DESC.",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图名称,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者@P,非必填。",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "数据库主键,自动生成."
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID."
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图名称"
-            },
-            {
-              "name": "executeCode",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图执行代号,系统视图使用,自定义视图不使用"
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述"
-            },
-            {
-              "name": "creatorPerson",
-              "type": "String",
-              "isCollection": false,
-              "description": "创建者,可能为System,如果由系统创建。"
-            },
-            {
-              "name": "owner",
-              "type": "String",
-              "isCollection": false,
-              "description": "拥有者"
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号"
-            },
-            {
-              "name": "workCompleted",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "筛选条件_是否已完成:-1-全部, 1-是,0-否."
-            },
-            {
-              "name": "workOverTime",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "筛选条件_是否已超时:-1-全部, 1-是,0-否."
-            },
-            {
-              "name": "isExcutor",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "筛选条件_查询负责的项目,如果为false,则为所有参与的项目范围"
-            },
-            {
-              "name": "choosePriority",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选条件_筛选优先级:普通、紧急、特急"
-            },
-            {
-              "name": "chooseWorkTag",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选条件_筛选标签:自定义标签名"
-            },
-            {
-              "name": "orderField",
-              "type": "String",
-              "isCollection": false,
-              "description": "筛选条件_用于排列的属性,非必填,默认为createTime."
-            },
-            {
-              "name": "orderType",
-              "type": "String",
-              "isCollection": false,
-              "description": "筛选条件_排序方式:DESC | ASC,非必填,默认为DESC."
-            },
-            {
-              "name": "createTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "创建时间,自动生成,索引创建在约束中."
-            },
-            {
-              "name": "updateTime",
-              "type": "Date",
-              "isCollection": false,
-              "description": "修改时间,自动生成,索引创建在约束中."
-            }
-          ]
-        },
-        {
-          "name": "save",
-          "className": "com.x.teamwork.assemble.control.jaxrs.taskview.ActionSave",
-          "description": "创建一个新的视图信息或者更新一个已存在的视图信息。",
-          "type": "POST",
-          "path": "jaxrs/task_view",
-          "contentType": "application/json",
-          "resultContentType": "application/json; charset\u003dUTF-8",
-          "useJsonElementParameter": false,
-          "useStringParameter": false,
-          "pathParameters": [],
-          "formParameters": [],
-          "queryParameters": [],
-          "ins": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "可以为空,系统自动生成,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "project",
-              "type": "String",
-              "isCollection": false,
-              "description": "所属项目ID,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e。",
-              "isBaseType": true
-            },
-            {
-              "name": "name",
-              "type": "String",
-              "isCollection": false,
-              "description": "任务视图名称,\u003cfont style\u003d\u0027color:red\u0027\u003e必填\u003c/font\u003e。",
-              "isBaseType": true
-            },
-            {
-              "name": "workCompleted",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "是否已完成:-1-全部(默认), 1-是,0-否,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "workOverTime",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "是否已超时:-1-全部(默认), 1-是,0-否,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "isExcutor",
-              "type": "Boolean",
-              "isCollection": false,
-              "description": "查询负责的项目,true(默认)|false。如果为false,则为所有参与的项目范围",
-              "isBaseType": true
-            },
-            {
-              "name": "choosePriority",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选优先级:普通|紧急|特急,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "chooseWorkTag",
-              "type": "List\u003cString\u003e",
-              "isCollection": true,
-              "description": "筛选标签:自定义标签ID列表,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "order",
-              "type": "Integer",
-              "isCollection": false,
-              "description": "排序号,非必填。",
-              "isBaseType": true
-            },
-            {
-              "name": "memo",
-              "type": "String",
-              "isCollection": false,
-              "description": "列表描述,非必填。",
-              "isBaseType": true
-            }
-          ],
-          "outs": [
-            {
-              "name": "id",
-              "type": "String",
-              "isCollection": false,
-              "description": "id"
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}

+ 0 - 841
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/common/date/DateOperation.java

@@ -1,841 +0,0 @@
-package com.x.teamwork.assemble.common.date;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
-public class DateOperation {
-	
-	/**
-	 * 根据样式得到格式化对象SimpleDateFormat
-	 * @param date
-	 * @param style
-	 * @return
-	 */
-	public static String getDate(Date date, String style) {
-		SimpleDateFormat format = new SimpleDateFormat(style);
-		return format.format(date);
-	}
-
-	/**
-	 * 得到某日期的日期部分
-	 * 
-	 * @param date
-	 * @return yyyy-MM-dd
-	 */
-	public static String getDate(Date date) {
-		return format1.format(date);
-	}
-
-	/**
-	 * 得到某日期的时间部分
-	 * 
-	 * @param date
-	 * @return HH:mm:ss
-	 */
-	public static  String getTime(Date date) {
-		return format2.format(date);
-	}
-
-	public static  Date getDateFromString(String dateString, String style) throws Exception{
-		Date date = null;
-		if(style==null||"".equals(style.trim())){
-			date = format1.parse(dateString);
-		}else if( "yyyy-MM-dd HH:mm:ss".equalsIgnoreCase(style.trim())){
-			date = format3.parse(dateString);
-		}else if( "yyyy-MM-dd HH:mm".equalsIgnoreCase(style.trim())){
-			date = format3_2.parse(dateString);
-		}else if( "yyyy/MM/dd HH:mm:ss".equalsIgnoreCase(style.trim())){
-			date = format3_1.parse(dateString);
-		}else if( "yyyy/MM/dd".equalsIgnoreCase(style.trim())){
-			date = format4.parse(dateString);
-		}else if( "yyyy-MM-dd".equalsIgnoreCase(style.trim())){
-			date = format1.parse(dateString);
-		}else if( "yyyyMMdd".equalsIgnoreCase(style.trim())){
-			date = format5.parse(dateString);
-		}else if( "yyyyMMddHHmmss".equalsIgnoreCase(style.trim())){
-			date = format7.parse(dateString);
-		}else if( "HH:mm:ss".equalsIgnoreCase(style.trim())){
-			date = format2.parse(dateString);
-		}else if( "HH:mm".equalsIgnoreCase(style.trim())){
-			date = format2_1.parse(dateString);
-		}else{
-			throw new Exception( "对不起,您输入的日期style系统无法识别,请检查您的参数输入!" );
-		}
-		return date;
-	}
-	
-	/**
-	 * 将字符串转换为日期格式
-	 * 会尝试多种格式转换,转换成功后返回结果
-	 * @param dateString
-	 * @return
-	 * @throws Exception
-	 */
-	public static  Date getDateFromString( String dateString ) throws Exception{
-		Date date = null;
-		try{
-			date = getDateFromString( dateString, "yyyy-MM-dd HH:mm:ss" );
-			return date;
-		}catch(Exception e){}
-
-		try{
-			date = getDateFromString( dateString, "yyyy-MM-dd HH:mm" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "yyyy/MM/dd HH:mm:ss" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "yyyy-MM-dd" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "yyyy/MM/dd" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "yyyyMMdd" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "yyyyMMddHHmmss" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "HH:mm:ss" );
-			return date;
-		}catch(Exception e){}
-		
-		try{
-			date = getDateFromString( dateString, "HH:mm" );
-			return date;
-		}catch(Exception e){}
-		
-		throw new Exception( "the style of date has error, date:" + dateString );
-	}
-	
-	
-	public static  String getDateStringFromDate(Date date, String style) throws Exception{
-		String dateString = null;
-		if(style==null||"".equals(style.trim())){
-			dateString = format1.format(date);
-		}else if( "yyyy-MM-dd HH:mm:ss".equalsIgnoreCase(style.trim())){
-			dateString = format3.format(date);
-		}else if( "yyyy/MM/dd HH:mm:ss".equalsIgnoreCase(style.trim())){
-			dateString = format3_1.format(date);
-		}else if( "yyyy/MM/dd".equalsIgnoreCase(style.trim())){
-			dateString = format4.format(date);
-		}else if( "yyyy-MM-dd".equalsIgnoreCase(style.trim())){
-			dateString = format1.format(date);
-		}else if( "yyyyMMdd".equalsIgnoreCase(style.trim())){
-			dateString = format5.format(date);
-		}else if( "yyyyMMddHHmmss".equalsIgnoreCase(style.trim())){
-			dateString = format7.format(date);
-		}else if( "HH:mm:ss".equalsIgnoreCase(style.trim())){
-			dateString = format2.format(date);
-		}else{
-			throw new Exception( "对不起,您输入的日期style系统无法识别,请检查您的参数输入!style=" + style);
-		}
-		return dateString;
-	}
-	
-	/**
-	 * 得到某日期加上或减去天数后的日期,day为负数时减去
-	 * 
-	 * @param date
-	 * @param month
-	 * @return "yyyy-MM-dd"
-	 * @throws Exception 
-	 */
-	public static  String getDayAdd(String dateString, int day, String style) throws Exception {
-		Date date = getDateFromString(dateString, style);
-		return getDayAdd(date, day);
-	}
-	
-	/**
-	 * 得到某日期加上或减去天数后的日期,day为负数时减去
-	 * 
-	 * @param date
-	 * @param month
-	 * @return "yyyy-MM-dd"
-	 */
-	public static  String getDayAdd(Date date, int day) {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(date);
-		calendar.add(Calendar.DATE, day);
-		return format1.format(calendar.getTime());
-	}
-
-	/**
-	 * 得到某日期加上或减去月份后的日期,month为负数时减去
-	 * 
-	 * @param date
-	 * @param month
-	 * @return "yyyy-MM-dd"
-	 */
-	public static  String getMonthAdd(Date date, int month) {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(date);
-		calendar.add(Calendar.MONTH, month);
-		return format1.format(calendar.getTime());
-	}
-	
-	/**
-	 * 得到某日期加上或减去分钟后的日期,min为负数时减去
-	 * 
-	 * @param date
-	 * @param month
-	 * @return "yyyy-MM-dd HH:mi:ss"
-	 */
-	public static  String getMinutesAdd(Date date, int min) {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(date);
-		calendar.add(Calendar.MINUTE, min);
-		return format3.format(calendar.getTime());
-	}
-	/**
-	 * 得到某日期的日
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 */
-	public static  String getDay(Date date) {
-		try{
-			return format10.format(date);
-		}catch(Exception e){
-			return "0";
-		}
-	}
-	public static int getDayNumber(Date date) {
-		String result = null;
-		try{
-			result = format10.format(date);
-		}catch(Exception e){
-			result = "0";
-		}
-		return Integer.parseInt(result);
-	}
-	/**
-	 * 得到某日期的月份
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 */
-	public static  String getMonth(Date date) {
-		try{
-			return format9.format(date);
-		}catch(Exception e){
-			return "0";
-		}
-	}
-	public static int getMonthNumber(Date date) {
-		String result = null;
-		try{
-			result = format9.format(date);
-		}catch(Exception e){
-			result = "0";
-		}
-		return Integer.parseInt(result);
-	}
-
-	/**
-	 * 得到某日期的年份
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 */
-	public static  String getYear(Date date) {
-		try{
-			return format8.format(date);
-		}catch(Exception e){
-			return "0";
-		}
-	}
-	public static int getYearNumber(Date date) {
-		String result = null;
-		try{
-			result = format8.format(date);
-		}catch(Exception e){
-			result = "0";
-		}
-		return Integer.parseInt(result);
-	}
-	/**
-	 * 得到某日期的小时
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 */
-	public static  String getHour(Date date) {
-		try{
-			return format11.format(date);
-		}catch(Exception e){
-			return "0";
-		}
-	}
-	/**
-	 * 得到某日期的分钟
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 */
-	public static  String getMinites(Date date) {
-		return format12.format(date);
-	}
-	/**
-	 * 得到某日期的秒
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 */
-	public static  String getSeconds(Date date) {
-		return format13.format(date);
-	}
-	/**
-	 * 得到某年有多少天
-	 * 
-	 * @param String
-	 *            date "yyyy-MM-dd"
-	 * @return
-	 * @throws ParseException
-	 */
-	@SuppressWarnings("static-access")
-	public static  int getDaysForYear(String date) throws ParseException {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(format1.parse(date));
-		return calendar.get(calendar.DAY_OF_YEAR);
-	}
-
-	/**
-	 * 得到某年有多少天
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 * @throws ParseException
-	 */
-	@SuppressWarnings("static-access")
-	public static  int getDaysForYear(Date date) throws ParseException {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(date);
-		return calendar.get(calendar.DAY_OF_YEAR);
-	}
-
-	/**
-	 * 得到某年有多少天
-	 * 
-	 * @param String
-	 *            year "yyyy"
-	 * @return
-	 * @throws ParseException
-	 */
-	@SuppressWarnings("static-access")
-	public static  int getDaysForYear_YYYY(String year) throws ParseException {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(format8.parse(year));
-		return calendar.get(calendar.DAY_OF_YEAR);
-	}
-
-	/**
-	 * 得到某月有多少天
-	 * 
-	 * @param String
-	 *            date "yyyy-MM-dd"
-	 * @return
-	 * @throws ParseException
-	 */
-	public static  int getDaysForMonth(String date) throws ParseException {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(format1.parse(date));
-		return calendar.getActualMaximum( Calendar.DAY_OF_MONTH);
-	}
-
-	/**
-	 * 得到某月有多少天
-	 * 
-	 * @param String
-	 *            date "yyyy-MM"
-	 * @return
-	 * @throws ParseException
-	 */
-	@SuppressWarnings("static-access")
-	public static  int getDaysForMonth_MM(String date) throws ParseException {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(format14.parse(date));
-		return calendar.get(calendar.DAY_OF_MONTH);
-	}
-
-	/**
-	 * 得到某月有多少天
-	 * 
-	 * @param Date
-	 *            date
-	 * @return
-	 * @throws ParseException
-	 */
-	public static  int getDaysForMonth(Date date) throws ParseException {
-		Calendar calendar = Calendar.getInstance();
-		calendar.setTime(date);
-		return calendar.get(Calendar.DAY_OF_MONTH);
-	}
-
-	/**
-	 * 得到当前的日期
-	 * 
-	 * @return
-	 */
-	public static  String getNowDate() {
-		return format1.format(new Date());
-	}
-
-	/**
-	 * 得到当前的时间
-	 * 
-	 * @return
-	 */
-	public static  String getNowTime() {
-		return format2.format(new Date());
-	}
-	/**
-	 * 得到当前的时间
-	 * yyyyMMddHHmmss
-	 * @return
-	 */
-	public static  String getNowTimeChar() {
-		return format7.format(new Date());
-	}
-	/**
-	 * 得到当前的时间
-	 * yyyy-MM-dd HH:mm:ss
-	 * @return
-	 */
-	public static  String getNowDateTime() {
-		return format3.format(new Date());
-	}
-	/**
-	 * 得到两个时间之前的分差
-	 * @param date1 yyyy-MM-dd HH:mm:ss
-	 * @param date2 yyyy-MM-dd HH:mm:ss
-	 * @return
-	 * @throws Exception 
-	 */
-	public static  long getDeff(String date1,String date2) throws Exception {
-		long dayNumber = 0;
-		// 1小时=60分钟=3600秒=3600000
-		long mins = 60L * 1000L;
-		// long day= 24L * 60L * 60L * 1000L;计算天数之差
-		SimpleDateFormat df = null;
-		if(date1.length() == 19){
-			df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
-		}else if(date1.length() == 10){
-			df = new SimpleDateFormat( "yyyy-MM-dd" );
-		}else if(date1.length() == 8){
-			df = new SimpleDateFormat( "HH:mm:ss" );
-		}else{
-			df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
-		}
-		try {
-			java.util.Date d1 = df.parse(date1);
-			java.util.Date d2 = df.parse(date2);
-			dayNumber = (d2.getTime() - d1.getTime()) / mins;
-		} catch (Exception e) {
-			throw e;
-		}
-		return dayNumber;
-	}
-	/**
-	 * 得到两个时间之前的分差
-	 * @param date1 yyyy-MM-dd HH:mm:ss
-	 * @param date2 yyyy-MM-dd HH:mm:ss
-	 * @return
-	 */
-	public static long getDeff(Date date1,Date date2) {
-		long dayNumber = 0;
-		// 1小时=60分钟=3600秒=3600000
-		long mins = 60L * 1000L;
-		// long day= 24L * 60L * 60L * 1000L;计算天数之差
-		try {
-			dayNumber = (date2.getTime() - date1.getTime()) / mins;
-		} catch (Exception e) {
-			throw e;
-		}
-		return dayNumber;
-	}
-	/**
-	 * 
-	 * 日期格式转换
-	 * 从YYYY-MM-DD转换到YYYYMMDD
-	 * @param date
-	 * @throws ParseException 
-	 */
-	public static  String changeDateFormat(String dateString) throws ParseException{
-		Date date;
-		String reslut = null;
-		try {
-			if( "".equals(dateString)){
-				dateString="0000-00-00";
-			}
-			date = format1.parse(dateString);
-			reslut = format5.format(date);
-		} catch (ParseException e) {
-			try {
-				date = format1.parse( "0000-00-00" );
-			} catch (ParseException e1) {
-				throw e1;
-			}
-			throw e;
-		}
-		
-		return reslut;
-	}
-	
-	/** 格式 yyyy-MM-dd */
-	public static  final SimpleDateFormat format1 = new SimpleDateFormat( "yyyy-MM-dd" );
-	/** 格式 HH:mm:ss */
-	public static  final SimpleDateFormat format2 = new SimpleDateFormat( "HH:mm:ss" );
-	public static  final SimpleDateFormat format2_1 = new SimpleDateFormat( "HH:mm" );
-	/** 格式 yyyy-MM-dd HH:mm:ss */
-	public static  final SimpleDateFormat format3 = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
-	public static  final SimpleDateFormat format3_2 = new SimpleDateFormat( "yyyy-MM-dd HH:mm" );
-	public static  final SimpleDateFormat format3_1 = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );
-	/** 格式 yyyy/MM/dd */
-	public static  final SimpleDateFormat format4 = new SimpleDateFormat( "yyyy/MM/dd" );
-	/** 格式 yyyyMMdd */
-	public static  final SimpleDateFormat format5 = new SimpleDateFormat( "yyyyMMdd" );
-	/** 格式 HHmmss */
-	public static  final SimpleDateFormat format6 = new SimpleDateFormat( "HHmmss" );
-	/** 格式 yyyyMMddHHmmss */
-	public static  final SimpleDateFormat format7 = new SimpleDateFormat( "yyyyMMddHHmmss" );
-	/** 格式 yyyy */
-	public static  final SimpleDateFormat format8 = new SimpleDateFormat( "yyyy" );
-	/** 格式 MM */
-	public static  final SimpleDateFormat format9 = new SimpleDateFormat( "MM" );
-	/** 格式 dd */
-	public static  final SimpleDateFormat format10 = new SimpleDateFormat( "dd" );
-	/** 格式 HH */
-	public static  final SimpleDateFormat format11 = new SimpleDateFormat( "HH" );
-	/** 格式 mm */
-	public static  final SimpleDateFormat format12 = new SimpleDateFormat( "mm" );
-	/** 格式 ss */
-	public static  final SimpleDateFormat format13 = new SimpleDateFormat( "ss" );
-	/** 格式 ss */
-	public static  final SimpleDateFormat format14 = new SimpleDateFormat( "yyyy-MM" );
-	
-	
-	public static  String getStartOfWeek(String dateString) throws Exception{
-		SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd" );
-		try {
-			Date date = format.parse(dateString);
-			Calendar cal = Calendar.getInstance();
-			cal.setTime(date);
-			cal.setFirstDayOfWeek(Calendar.MONDAY);
-			int tmp = cal.get(Calendar.DAY_OF_WEEK) - 1;
-			if (0 == tmp) {
-				tmp = 7;
-			}
-			cal.add(Calendar.DATE, -(tmp-1));
-			return getDateStringFromDate(cal.getTime(), "yyyy-MM-dd" ) + " 00:00:00";
-		} catch (ParseException e) {
-			throw e;
-		} catch (Exception e) {
-			throw e;
-		}
-	}
-	
-	public static  String getEndOfWeek(String dateString) throws Exception{
-		try {
-			Date date = getDateFromString(getStartOfWeek(dateString), "yyyy-MM-dd HH:mm:ss" );
-			Calendar cal = Calendar.getInstance();
-			cal.setTime(date);
-			cal.setFirstDayOfWeek(Calendar.MONDAY);
-			cal.add(Calendar.DATE, 6);
-			return getDateStringFromDate(cal.getTime(), "yyyy-MM-dd" ) + " 23:59:59";
-		} catch (ParseException e) {
-			throw e;
-		} catch (Exception e) {
-			throw e;
-		}
-	}
-	
-	
-	
-	/**
-	 * 将时间格式转换为 **月**日**时**分的格式
-	 * @param dateString
-	 * @param style
-	 * @return
-	 * @throws Exception
-	 */
-	public static String getDateCNString( String dateString, String style ) throws Exception{
-		StringBuffer ch_date_string = new StringBuffer();
-		Date _date = null;
-		try{
-			_date = getDateFromString( dateString, style );
-		}catch(Exception e){
-			throw e;
-		}
-		if(_date == null ){
-			_date = new Date();
-		}
-		String year = getYear( _date );
-		String month = getMonth( _date );
-		String day = getDay( _date );
-		String hour = getHour( _date );
-		String min = getMinites( _date );
-		ch_date_string.append( year );
-		ch_date_string.append( "年" );
-		ch_date_string.append( month );
-		ch_date_string.append( "月" );
-		ch_date_string.append( day );
-		ch_date_string.append( "日" );
-		ch_date_string.append( hour );
-		ch_date_string.append( "时" );
-		ch_date_string.append( min );
-		ch_date_string.append( "分" );		
-		return ch_date_string.toString();
-	}
-	
-	/**
-	 * 将时间格式转换为 **月**日**时**分**秒 的格式
-	 * @param dateString
-	 * @param style
-	 * @return
-	 * @throws Exception
-	 */
-	public static String getDateCNString2( String dateString, String style ) throws Exception{
-		StringBuffer ch_date_string = new StringBuffer();
-		Date _date = null;
-		try{
-			_date = getDateFromString( dateString, style );
-		}catch(Exception e){
-			throw e;
-		}
-		if(_date == null ){
-			_date = new Date();
-		}
-		String year = getYear( _date );
-		String month = getMonth( _date );
-		String day = getDay( _date );
-		String hour = getHour( _date );
-		String min = getMinites( _date );
-		String sec = getSeconds( _date );
-		ch_date_string.append( year );
-		ch_date_string.append( "年" );
-		ch_date_string.append( month );
-		ch_date_string.append( "月" );
-		ch_date_string.append( day );
-		ch_date_string.append( "日" );
-		ch_date_string.append( hour );
-		ch_date_string.append( "时" );
-		ch_date_string.append( min );
-		ch_date_string.append( "分" );
-		ch_date_string.append( sec );
-		ch_date_string.append( "秒" );
-		return ch_date_string.toString();
-	}
-	
-	/**
-	 * 获取日期在一年中的周数
-	 * 结果从1开始
-	 * @param dateString yyyy-mm-dd
-	 * @return
-	 * @throws Exception 
-	 */
-	public static  int getWeekNumOfYear( String dateString ) throws Exception{
-		try {
-			Date date = getDateFromString( dateString , "yyyy-MM-dd" );
-			Calendar cal = Calendar.getInstance();
-			cal.setTime(date);
-			cal.setFirstDayOfWeek(2);//设置每周的第一天是星期一
-			return cal.get( Calendar.WEEK_OF_YEAR );
-		} catch (ParseException e) {
-			throw e;
-		} catch (Exception e) {
-			throw e;
-		}
-	}
-	
-	/**
-	 * 获取日期在一年中的周数
-	 * 结果从1开始
-	 * @param dateString yyyy-mm-dd
-	 * @return
-	 */
-	public static  int getWeekNumOfYear( Date date ){
-		try {
-			Calendar cal = Calendar.getInstance();
-			cal.setTime(date);
-			cal.setFirstDayOfWeek(2);//设置每周的第一天是星期一
-			return cal.get( Calendar.WEEK_OF_YEAR );
-		} catch (Exception e) {
-			throw e;
-		}
-	}
-	
-	/**
-	 * 判断是否周末
-	 * @param recordDate
-	 * @return
-	 */
-	public static boolean isWeekend(Date date) {
-		Calendar cal = Calendar.getInstance();
-	    cal.setTime( date );
-	    if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
-	       return true;
-	    }
-		return false;
-	}
-	
-	public static long getMinutes( Date date1, Date data2){
-		 long l=data2.getTime()-date1.getTime();
-		 long min=((l/(60*1000)));
-		 return min;
-	}
-
-	/**
-	 * 根据提供的年份月份,获取当月所有的日期字符串:yyyy-mm-dd
-	 * @param s_year
-	 * @param _month
-	 * @return
-	 */
-	public static List<String> getDateStringFormMonth(String s_year, String _month) {
-		List<String> result = new ArrayList<String>();
-		Calendar cal = Calendar.getInstance();
-		int year = 0;
-		int month = 0;
-		int days = 0;
-		try{
-			year = Integer.parseInt( s_year );
-		}catch(Exception e){
-			e.printStackTrace();
-		}
-		try{
-			month = Integer.parseInt( _month );
-		}catch(Exception e){
-			e.printStackTrace();
-		}
-		cal.set(year, month-1, 1);
-		days = cal.getActualMaximum(Calendar.DATE);
-		for( int i =1; i<= days ; i++){
-			result.add( s_year + "-" + (month<10?"0"+month:month) + "-" + (i<10?"0"+i:i));
-		}
-		return result;
-	}
-	
-	/**
-	 * 根据提供的两个时间之间所有的日期字符串:yyyy-mm-dd
-	 * @param startDate
-	 * @param endDate
-	 * @return
-	 * @throws Exception 
-	 */
-	public static List<String> listDateStringBetweenDate( Date startDate, Date endDate ) throws Exception {		
-		List<String> result = new ArrayList<String>();
-		Calendar cal = Calendar.getInstance();
-		startDate = getDateFromString( getDateStringFromDate( startDate, "yyyy-MM-dd" ) );
-		endDate = getDateFromString( getDateStringFromDate( endDate, "yyyy-MM-dd" ) + " 23:59:59" );	
-		cal.setTime( startDate );
-		while( cal.getTime().before(endDate)){
-			//logger.debug( getDateStringFromDate( cal.getTime(), "yyyy-MM-dd" ) );
-			result.add( getDateStringFromDate( cal.getTime(), "yyyy-MM-dd" ));
-			cal.add(Calendar.DATE, 1);
-		}
-		return result;
-	}
-	
-	/**
-	 * 获取日期所在月份的第一天
-	 * @param recordDate
-	 * @return
-	 * @throws Exception 
-	 */
-	public static Date getFirstDateInMonth(Date recordDate) throws Exception {
-		String year = format8.format(recordDate);
-		String month = format9.format(recordDate);
-		return getDateFromString( year + "-" + month + "-01" );
-	}
-	
-	/**
-	 * 获取日期所在月份的第一天
-	 * @param recordDate yyyy-MM-dd
-	 * @return
-	 * @throws Exception 
-	 */
-	public static String getFirstDateStringInMonth(Date recordDate) throws Exception {
-		String year = format8.format(recordDate);
-		String month = format9.format(recordDate);
-		return year + "-" + month + "-01";
-	}
-	
-	/**
-	 * 获取当月的最后一日
-	 * @param date
-	 * @return
-	 */
-	public static Date getLastDayOfMonth(Date date) {  
-        Calendar calendar = convert(date);  
-        calendar.set(Calendar.DATE, calendar.getMaximum(Calendar.DATE));  
-        return calendar.getTime();  
-    }  
-	/** 
-     * 将日期转换为日历 
-     * @param date 日期 
-     * @return 日历 
-     */  
-    private static Calendar convert(Date date) {  
-        Calendar calendar = Calendar.getInstance();  
-        calendar.setTime(date);  
-        return calendar;  
-    }  
-	/**
-	 * 获取日期所在月份的第一天
-	 * @param recordDate
-	 * @return
-	 * @throws Exception 
-	 */
-	public static Date getLastDateInMonth(Date recordDate) throws Exception {
-		Date lastDate = getLastDayOfMonth(recordDate);
-		return getDateFromString( getDateStringFromDate( lastDate, "yyyy-MM-dd" ) );
-	}
-	
-	/**
-	 * 获取日期所在月份的第一天
-	 * @param recordDate yyyy-MM-dd
-	 * @return
-	 * @throws Exception 
-	 */
-	public static String getLastDateStringInMonth(Date recordDate) throws Exception {
-		Date lastDate = getLastDayOfMonth(recordDate);
-		return getDateStringFromDate( lastDate, "yyyy-MM-dd" );
-	}
-
-	/**
-	 * 获取今天开始的时间
-	 * @return
-	 */
-	public static Date getTodayStartTime() {
-		String todayDateTime = getNowDate() + " 00:00:00";
-		try {
-			return getDateFromString( todayDateTime );
-		} catch (Exception e) {
-			return new Date();
-		}
-	}
-}

+ 0 - 24
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/AbstractFactory.java

@@ -1,24 +0,0 @@
-package com.x.teamwork.assemble.control;
-
-import com.x.base.core.container.EntityManagerContainer;
-
-public abstract class AbstractFactory {
-
-	private Business business;
-
-	public AbstractFactory( Business business ) throws Exception {
-		try {
-			if ( null == business ) {
-				throw new Exception( "business can not be null.  " );
-			}
-			this.business = business;
-		} catch ( Exception e ) {
-			throw new Exception( "can not instantiating factory." );
-		}
-	}
-
-	public EntityManagerContainer entityManagerContainer() throws Exception {
-		return this.business.entityManagerContainer();
-	}
-
-}

+ 0 - 33
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/ApplicationServletContextListener.java

@@ -1,33 +0,0 @@
-package com.x.teamwork.assemble.control;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-import javax.servlet.annotation.WebListener;
-
-import com.x.base.core.project.Context;
-
-@WebListener
-public class ApplicationServletContextListener implements ServletContextListener {
-
-	@Override
-	public void contextInitialized(ServletContextEvent servletContextEvent) {
-		try {
-			ThisApplication.context = Context.concrete(servletContextEvent);
-			ThisApplication.init();
-			ThisApplication.context().regist();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	public void contextDestroyed(ServletContextEvent servletContextEvent) {
-		try {
-			ThisApplication.destroy();
-			ThisApplication.context.destrory(servletContextEvent);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}

+ 0 - 249
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/Business.java

@@ -1,249 +0,0 @@
-package com.x.teamwork.assemble.control;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.organization.core.express.Organization;
-import com.x.teamwork.assemble.control.factory.AttachmentFactory;
-import com.x.teamwork.assemble.control.factory.BatchOperationFactory;
-import com.x.teamwork.assemble.control.factory.ChatFactory;
-import com.x.teamwork.assemble.control.factory.DynamicFactory;
-import com.x.teamwork.assemble.control.factory.ProjectExtFieldReleFactory;
-import com.x.teamwork.assemble.control.factory.ProjectFactory;
-import com.x.teamwork.assemble.control.factory.ProjectGroupFactory;
-import com.x.teamwork.assemble.control.factory.ProjectGroupReleFactory;
-import com.x.teamwork.assemble.control.factory.ReviewFactory;
-import com.x.teamwork.assemble.control.factory.SystemConfigFactory;
-import com.x.teamwork.assemble.control.factory.TaskFactory;
-import com.x.teamwork.assemble.control.factory.TaskGroupFactory;
-import com.x.teamwork.assemble.control.factory.TaskGroupReleFactory;
-import com.x.teamwork.assemble.control.factory.TaskListFactory;
-import com.x.teamwork.assemble.control.factory.TaskTagFactory;
-import com.x.teamwork.assemble.control.factory.TaskViewFactory;
-
-public class Business {
-
-	private EntityManagerContainer emc;
-	
-	public Business(EntityManagerContainer emc) throws Exception {
-		this.emc = emc;
-	}
-	public EntityManagerContainer entityManagerContainer() {
-		return this.emc;
-	}
-	
-	private Organization organization;
-	private ProjectFactory projectFactory;
-	private TaskFactory taskFactory;
-	private DynamicFactory dynamicFactory;
-	private SystemConfigFactory systemConfigFactory;
-	private ProjectGroupFactory projectGroupFactory;
-	private ProjectGroupReleFactory projectGroupReleFactory;
-	private TaskListFactory taskListFactory;
-	private ChatFactory chatFactory;
-	private TaskGroupFactory taskGroupFactory;
-	private TaskGroupReleFactory taskGroupReleFactory;
-	private TaskViewFactory taskViewFactory;
-	private ProjectExtFieldReleFactory projectExtFieldReleFactory;
-	private ReviewFactory reviewFactory;
-	private BatchOperationFactory batchOperationFactory;
-	private TaskTagFactory taskTagFactory;	
-	private AttachmentFactory attachmentFactory;	
-	
-	public Organization organization() throws Exception {
-		if (null == this.organization) {
-			this.organization = new Organization(ThisApplication.context());
-		}
-		return organization;
-	}
-	
-	/**
-	 * 获取附件信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public AttachmentFactory attachmentFactory() throws Exception {
-		if (null == this.attachmentFactory) {
-			this.attachmentFactory = new AttachmentFactory( this );
-		}
-		return attachmentFactory;
-	}
-	
-	/**
-	 * 获取工作任务标签数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskTagFactory taskTagFactory() throws Exception {
-		if (null == this.taskTagFactory) {
-			this.taskTagFactory = new TaskTagFactory( this );
-		}
-		return taskTagFactory;
-	}
-	
-	/**
-	 * 获取批处理任务数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public BatchOperationFactory batchOperationFactory() throws Exception {
-		if (null == this.batchOperationFactory) {
-			this.batchOperationFactory = new BatchOperationFactory( this );
-		}
-		return batchOperationFactory;
-	}
-	
-	/**
-	 * 获取Review信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public ReviewFactory reviewFactory() throws Exception {
-		if (null == this.reviewFactory) {
-			this.reviewFactory = new ReviewFactory( this );
-		}
-		return reviewFactory;
-	}
-	
-	/**
-	 * 获取项目扩展属性关联信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectExtFieldReleFactory projectExtFieldReleFactory() throws Exception {
-		if (null == this.projectExtFieldReleFactory) {
-			this.projectExtFieldReleFactory = new ProjectExtFieldReleFactory( this );
-		}
-		return projectExtFieldReleFactory;
-	}
-	
-	/**
-	 * 获取任务视图数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskViewFactory taskViewFactory() throws Exception {
-		if (null == this.taskViewFactory) {
-			this.taskViewFactory = new TaskViewFactory( this );
-		}
-		return taskViewFactory;
-	}
-	
-	/**
-	 * 获取工作任务组关联信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskGroupReleFactory taskGroupReleFactory() throws Exception {
-		if (null == this.taskGroupReleFactory) {
-			this.taskGroupReleFactory = new TaskGroupReleFactory( this );
-		}
-		return taskGroupReleFactory;
-	}
-	
-	/**
-	 * 获取工作任务组数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskGroupFactory taskGroupFactory() throws Exception {
-		if (null == this.taskGroupFactory) {
-			this.taskGroupFactory = new TaskGroupFactory( this );
-		}
-		return taskGroupFactory;
-	}
-	
-	/**
-	 * 获取工作交流数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public ChatFactory chatFactory() throws Exception {
-		if (null == this.chatFactory) {
-			this.chatFactory = new ChatFactory( this );
-		}
-		return chatFactory;
-	}
-	
-	/**
-	 * 获取工作任务列表数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskListFactory taskListFactory() throws Exception {
-		if (null == this.taskListFactory) {
-			this.taskListFactory = new TaskListFactory( this );
-		}
-		return taskListFactory;
-	}
-	
-	/**
-	 * 获取项目组数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectGroupFactory projectGroupFactory() throws Exception {
-		if (null == this.projectGroupFactory) {
-			this.projectGroupFactory = new ProjectGroupFactory( this );
-		}
-		return projectGroupFactory;
-	}
-	
-	/**
-	 * 获取项目与项目组关联信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectGroupReleFactory projectGroupReleFactory() throws Exception {
-		if (null == this.projectGroupReleFactory) {
-			this.projectGroupReleFactory = new ProjectGroupReleFactory( this );
-		}
-		return projectGroupReleFactory;
-	}
-	
-	/**
-	 * 获取系统配置信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public SystemConfigFactory systemConfigFactory() throws Exception {
-		if (null == this.systemConfigFactory) {
-			this.systemConfigFactory = new SystemConfigFactory( this );
-		}
-		return systemConfigFactory;
-	}
-	
-	/**
-	 * 获取工作任务信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskFactory taskFactory() throws Exception {
-		if (null == this.taskFactory) {
-			this.taskFactory = new TaskFactory( this );
-		}
-		return taskFactory;
-	}
-	
-	/**
-	 * 获取项目信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectFactory projectFactory() throws Exception {
-		if (null == this.projectFactory) {
-			this.projectFactory = new ProjectFactory( this );
-		}
-		return projectFactory;
-	}
-	
-	/**
-	 * 获取动态信息数据库访问类
-	 * @return
-	 * @throws Exception
-	 */
-	public DynamicFactory dynamicFactory() throws Exception {
-		if (null == this.dynamicFactory) {
-			this.dynamicFactory = new DynamicFactory( this );
-		}
-		return dynamicFactory;
-	}
-}

+ 0 - 51
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/ThisApplication.java

@@ -1,51 +0,0 @@
-package com.x.teamwork.assemble.control;
-
-import com.x.base.core.project.Context;
-import com.x.base.core.project.message.MessageConnector;
-import com.x.teamwork.assemble.control.queue.QueueBatchOperation;
-import com.x.teamwork.assemble.control.service.SystemConfigPersistService;
-import com.x.teamwork.assemble.control.timertask.Timertask_BatchOperationTask;
-import com.x.teamwork.assemble.control.timertask.Timertask_CheckAllTaskOverTime;
-import com.x.teamwork.assemble.control.timertask.Timertask_RefreshAllTaskReview;
-
-public class ThisApplication {
-	
-	protected static Context context;
-	public static QueueBatchOperation queueBatchOperation;
-	
-	public static Context context() {
-		return context;
-	}
-
-	public static void init() {
-		try {
-			//执行消息操作
-			queueBatchOperation = new QueueBatchOperation();
-
-			MessageConnector.start(context());
-
-			context().startQueue( queueBatchOperation );
-
-			new SystemConfigPersistService().initSystemConfig();
-
-			//每隔5分钟检查是否有未完成的批处理工作需要完成以及是否有未review的task需要核对权限信息
-			context.schedule( Timertask_BatchOperationTask.class, "0 */2 * * * ?" );
-			
-			//每天凌晨把所有项目的所有工作任务的权限和review信息核对一次
-			context.schedule( Timertask_RefreshAllTaskReview.class, "0 0 2 * * ?" );
-			
-			//每30分钟核对一次所有的工作任务,判断工作任务是否已经超时
-			context.schedule( Timertask_CheckAllTaskOverTime.class, "0 0/30 * * * ?" );
-			
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public static void destroy() {
-		try {
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-}

+ 0 - 77
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/AttachmentFactory.java

@@ -1,77 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.tools.ListTools;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.Attachment;
-import com.x.teamwork.core.entity.Attachment_;
-
-public class AttachmentFactory extends AbstractFactory {
-
-	public AttachmentFactory(Business business) throws Exception {
-		super(business);
-	}
-	
-	public Attachment get( String id ) throws Exception {
-		return this.entityManagerContainer().find(id, Attachment.class, ExceptionWhen.none);
-	}
-
-	public List<String> listAll() throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Attachment> root = cq.from( Attachment.class);
-		cq.select(root.get(Attachment_.id));
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<Attachment> list(List<String> ids) throws Exception {
-		if( ListTools.isEmpty( ids ) ){
-			return new ArrayList<Attachment>();
-		}
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Attachment> cq = cb.createQuery(Attachment.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = root.get(Attachment_.id).in(ids);
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<Attachment> listAttachmentWithProject(String project) throws Exception {
-		if( StringUtils.isEmpty( project ) ){
-			return new ArrayList<Attachment>();
-		}
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Attachment> cq = cb.createQuery(Attachment.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.equal( root.get(Attachment_.projectId), project );
-		p = cb.and( p, cb.equal( root.get(Attachment_.bundleObjType ), "PROJECT"));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<Attachment> listAttachmentWithTask(String taskId ) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			return new ArrayList<Attachment>();
-		}
-		EntityManager em = this.entityManagerContainer().get(Attachment.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Attachment> cq = cb.createQuery(Attachment.class);
-		Root<Attachment> root = cq.from(Attachment.class);
-		Predicate p = cb.equal( root.get(Attachment_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get(Attachment_.bundleObjType ), "TASK"));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-}

+ 0 - 52
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/BatchOperationFactory.java

@@ -1,52 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.BatchOperation;
-import com.x.teamwork.core.entity.BatchOperation_;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.List;
-
-/**
- * 批处理操作信息记录,比如需要级联删除大量的工作重新计算权限等
- */
-public class BatchOperationFactory extends AbstractFactory {
-
-	public BatchOperationFactory(Business business) throws Exception {
-		super(business);
-	}
-
-	public List<BatchOperation> list( List<String> ids ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( BatchOperation.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<BatchOperation> cq = cb.createQuery( BatchOperation.class );
-		Root<BatchOperation> root = cq.from( BatchOperation.class );
-		Predicate p = root.get( BatchOperation_.id).in( ids );
-		cq.orderBy( cb.asc( root.get( BatchOperation.createTime_FIELDNAME ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<BatchOperation> list(Integer maxCount) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( BatchOperation.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<BatchOperation> cq = cb.createQuery( BatchOperation.class );
-		Root<BatchOperation> root = cq.from( BatchOperation.class );
-		cq.orderBy( cb.asc( root.get( BatchOperation.createTime_FIELDNAME ) ) );
-		return em.createQuery(cq).setMaxResults(maxCount).getResultList();
-	}
-	
-	public List<BatchOperation> listNotRun(Integer maxCount) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( BatchOperation.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<BatchOperation> cq = cb.createQuery( BatchOperation.class );
-		Root<BatchOperation> root = cq.from( BatchOperation.class );
-		Predicate p = cb.isFalse( root.get( BatchOperation_.isRunning ) );
-		cq.orderBy( cb.asc( root.get( BatchOperation.createTime_FIELDNAME ) ) );
-		return em.createQuery(cq.where(p)).setMaxResults(maxCount).getResultList();
-	}
-}

+ 0 - 118
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ChatFactory.java

@@ -1,118 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Order;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.Chat;
-import com.x.teamwork.core.entity.ChatContent;
-import com.x.teamwork.core.entity.Chat_;
-import com.x.teamwork.core.entity.tools.CriteriaBuilderTools;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-
-
-public class ChatFactory extends AbstractFactory {
-
-	public ChatFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的Chat实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public Chat get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, Chat.class, ExceptionWhen.none );
-	}
-
-	/**
-	 * 根据ChatId获取LOB内容
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public ChatContent getContent(String id) throws Exception {
-		return this.entityManagerContainer().find( id, ChatContent.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 根据ChatId获取LOB内容
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public String getContentString(String id) throws Exception {
-		ChatContent  content = this.entityManagerContainer().find( id, ChatContent.class, ExceptionWhen.none );
-		if( content != null ) {
-			return content.getContent();
-		}
-		return null;
-	}
-	
-	/**
-	 * 根据条件查询符合条件的Chat数量
-	 * @param personName
-	 * @param unitNames
-	 * @param groupNames
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public Long countWithFilter( QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Chat.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Chat> root = cq.from(Chat.class);
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Chat_.class, cb, null, root, queryFilter );
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-	
-	/**
-	 * 根据条件查询符合条件的项目信息ID(查询前N条内存分页支持)
-	 * @param personName
-	 * @param unitNames
-	 * @param groupNames
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Chat> listWithFilter( Integer maxCount, String orderField, String orderType, QueryFilter queryFilter ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Chat.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Chat> cq = cb.createQuery(Chat.class);
-		Root<Chat> root = cq.from(Chat.class);
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Chat_.class, cb, null, root, queryFilter );		
-		
-		Order orderWithField = CriteriaBuilderTools.getOrder(cb, root, Chat_.class, orderField, orderType);
-		if( orderWithField != null ){
-			cq.orderBy( orderWithField );
-		}
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-	
-	/**
-	 * 根据条件查询符合条件的项目信息ID(根据sequnce分页支持)
-	 * @param maxCount
-	 * @param sequenceFieldValue
-	 * @param orderField
-	 * @param orderType
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Chat> listWithFilter( Integer maxCount, Object sequenceFieldValue, String orderField, String orderType, QueryFilter queryFilter ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Chat.class );
-		return CriteriaBuilderTools.listNextWithCondition( em, Chat.class, Chat_.class, maxCount, queryFilter, sequenceFieldValue, orderField, orderType );
-	}
-}

+ 0 - 94
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/DynamicFactory.java

@@ -1,94 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Order;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.Dynamic;
-import com.x.teamwork.core.entity.DynamicDetail;
-import com.x.teamwork.core.entity.Dynamic_;
-import com.x.teamwork.core.entity.tools.CriteriaBuilderTools;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-
-
-public class DynamicFactory extends AbstractFactory {
-
-	public DynamicFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的Dynamic实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public Dynamic get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, Dynamic.class, ExceptionWhen.none );
-	}
-
-	public DynamicDetail getDetail(String flag) throws Exception {
-		return this.entityManagerContainer().find( flag, DynamicDetail.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 根据过滤条件查询符合要求的项目信息数量
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public Long countWithFilter( QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Dynamic.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Dynamic> root = cq.from(Dynamic.class);
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Dynamic_.class, cb, null, root, queryFilter );
-		cq.select(cb.count(root));
-		return em.createQuery(cq.where(p)).getSingleResult();
-	}
-	
-	/**
-	 * 根据条件查询符合条件的项目信息ID(查询前N条内存分页支持)
-	 * @param maxCount
-	 * @param orderField
-	 * @param orderType
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Dynamic> listWithFilter( Integer maxCount, String orderField, String orderType, QueryFilter queryFilter ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Dynamic.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Dynamic> cq = cb.createQuery(Dynamic.class);
-		Root<Dynamic> root = cq.from(Dynamic.class);
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Dynamic_.class, cb, null, root, queryFilter );		
-		
-		Order orderWithField = CriteriaBuilderTools.getOrder(cb, root, Dynamic_.class, orderField, orderType);
-		if( orderWithField != null ){
-			cq.orderBy( orderWithField );
-		}
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-	
-	/**
-	 * 根据条件查询符合条件的项目信息ID(根据sequnce分页支持)
-	 * @param maxCount
-	 * @param sequenceFieldValue
-	 * @param orderField
-	 * @param orderType
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Dynamic> listWithFilter( Integer maxCount, Object sequenceFieldValue, String orderField, String orderType, QueryFilter queryFilter ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Dynamic.class );
-		return CriteriaBuilderTools.listNextWithCondition( em, Dynamic.class, Dynamic_.class, maxCount, queryFilter, sequenceFieldValue, orderField, orderType );
-	}
-}

+ 0 - 115
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectExtFieldReleFactory.java

@@ -1,115 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.ProjectExtFieldRele;
-import com.x.teamwork.core.entity.ProjectExtFieldRele_;
-
-
-public class ProjectExtFieldReleFactory extends AbstractFactory {
-
-	public ProjectExtFieldReleFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的ProjectExtFieldRele实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectExtFieldRele get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, ProjectExtFieldRele.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的ProjectExtFieldRele实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectExtFieldRele> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<ProjectExtFieldRele>();
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectExtFieldRele> cq = cb.createQuery(ProjectExtFieldRele.class);
-		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
-		Predicate p = root.get(ProjectExtFieldRele_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( ProjectExtFieldRele_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据项目ID列示项目扩展属性ID信息列表
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectExtFieldRele> listFieldReleObjByProject( String project ) throws Exception {
-		if( StringUtils.isEmpty( project ) ){
-			throw new Exception("project can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectExtFieldRele> cq = cb.createQuery(ProjectExtFieldRele.class);
-		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
-		Predicate p = cb.equal( root.get(ProjectExtFieldRele_.projectId), project );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据项目ID列示项目扩展属性ID信息列表
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listFieldReleIdsByProject( String project ) throws Exception {
-		if( StringUtils.isEmpty( project ) ){
-			throw new Exception("project can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
-		Predicate p = cb.equal( root.get(ProjectExtFieldRele_.projectId), project );
-		cq.select( root.get(ProjectExtFieldRele_.projectId) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据扩展属性名以及项目ID获取一组关联信息
-	 * @param fieldName
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectExtFieldRele> listWithFieldNameAndProject( String fieldName, String project ) throws Exception {
-		if( StringUtils.isEmpty( fieldName ) ){
-			throw new Exception("fieldName can not be empty!");
-		}
-		if( StringUtils.isEmpty( project ) ){
-			throw new Exception("project can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectExtFieldRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectExtFieldRele> cq = cb.createQuery(ProjectExtFieldRele.class);
-		Root<ProjectExtFieldRele> root = cq.from(ProjectExtFieldRele.class);
-		Predicate p = cb.equal( root.get(ProjectExtFieldRele_.extFieldName), fieldName );
-		p = cb.and( p,  cb.equal( root.get(ProjectExtFieldRele_.projectId), project ));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-}

+ 0 - 264
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectFactory.java

@@ -1,264 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Order;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.tools.ListTools;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.Dynamic_;
-import com.x.teamwork.core.entity.Project;
-import com.x.teamwork.core.entity.ProjectDetail;
-import com.x.teamwork.core.entity.Project_;
-import com.x.teamwork.core.entity.tools.CriteriaBuilderTools;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-
-
-public class ProjectFactory extends AbstractFactory {
-
-	public ProjectFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的Project实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public Project get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, Project.class, ExceptionWhen.none );
-	}
-	
-	public ProjectDetail getDetail(String id) throws Exception {
-		return this.entityManagerContainer().find( id, ProjectDetail.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的Project实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Project> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<Project>();
-		}
-		EntityManager em = this.entityManagerContainer().get(Project.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Project> cq = cb.createQuery(Project.class);
-		Root<Project> root = cq.from(Project.class);
-		Predicate p = root.get(Project_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( Project_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listAllProjectIds() throws Exception {
-		EntityManager em = this.entityManagerContainer().get(Project.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Project> root = cq.from(Project.class);
-		cq.select( root.get( Project_.id) );
-		return em.createQuery(cq ).getResultList();
-	}	
-	
-	/**
-	 * 根据条件查询符合条件的项目信息数量
-	 * @param personName
-	 * @param unitNames
-	 * @param groupNames
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public Long countWithFilter( String personName, List<String> identityNames, List<String> unitNames, List<String> groupNames, QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Project.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Project> root = cq.from(Project.class);
-		Predicate p_permission = null;
-
-		if( StringUtils.isNotEmpty( personName )) {
-			//可以管理的栏目,肯定可以发布信息
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.participantPersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.creatorPerson ), personName ) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.executor ), personName ) );
-		}
-		
-		if( ListTools.isNotEmpty( identityNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantIdentityList).in(identityNames));
-		}
-		if( ListTools.isNotEmpty( unitNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantUnitList).in(unitNames));
-		}
-		if( ListTools.isNotEmpty( groupNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantGroupList).in(groupNames));
-		}
-		
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Project_.class, cb, p_permission, root, queryFilter );
-		cq.select(cb.count(root)).where(p);
-		Long count =  em.createQuery(cq).getSingleResult();
-		return count;
-	}
-	
-	/**
-	 *  根据条件查询符合条件的项目信息ID
-	 * @param maxCount
-	 * @param orderField
-	 * @param orderType
-	 * @param personName
-	 * @param identityNames
-	 * @param unitNames
-	 * @param groupNames
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Project> listWithFilter( Integer maxCount, String orderField, String orderType, String personName, List<String> identityNames, List<String> unitNames, List<String> groupNames, QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Project.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Project> cq = cb.createQuery(Project.class);
-		Root<Project> root = cq.from(Project.class);
-		Predicate p_permission = null;
-		
-		if( StringUtils.isNotEmpty( personName )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.participantPersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.creatorPerson ), personName ) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.executor ), personName ) );
-		}
-		
-		if( ListTools.isNotEmpty( identityNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantIdentityList).in(identityNames));
-		}
-		if( ListTools.isNotEmpty( unitNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantUnitList).in(unitNames));
-		}
-		if( ListTools.isNotEmpty( groupNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantGroupList).in(groupNames));
-		}
-		
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Project_.class, cb, p_permission, root, queryFilter );
-
-		Order orderWithField = CriteriaBuilderTools.getOrder(cb, root, Project_.class, orderField, orderType);
-		if( orderWithField != null ){
-			cq.orderBy( orderWithField );
-		}
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-	
-	/**
-	 * 根据条件查询符合条件的项目信息ID,根据上一条的sequnce查询指定数量的信息
-	 * @param maxCount
-	 * @param sequenceFieldValue
-	 * @param orderField
-	 * @param orderType
-	 * @param personName
-	 * @param identityNames
-	 * @param unitNames
-	 * @param groupNames
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Project> listWithFilter( Integer maxCount, Object sequenceFieldValue, String orderField, String orderType, String personName, List<String> identityNames, List<String> unitNames, List<String> groupNames, QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Project.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Project> cq = cb.createQuery(Project.class);
-		Root<Project> root = cq.from(Project.class);
-		Predicate p_permission = null;
-		
-		if( StringUtils.isNotEmpty( personName )) {
-			//可以管理的栏目,肯定可以发布信息
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.participantPersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.creatorPerson ), personName ) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.executor ), personName ) );
-		}
-		
-		if( ListTools.isNotEmpty( identityNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantIdentityList).in(identityNames));
-		}
-		if( ListTools.isNotEmpty( unitNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantUnitList).in(unitNames));
-		}
-		if( ListTools.isNotEmpty( groupNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantGroupList).in(groupNames));
-		}
-		
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Project_.class, cb, p_permission, root, queryFilter );
-		
-		if( sequenceFieldValue != null && StringUtils.isNotEmpty( sequenceFieldValue.toString() )) {
-			Predicate p_seq = cb.isNotNull( root.get( Dynamic_.sequence ) );
-			if( "desc".equalsIgnoreCase( orderType )){
-				p_seq = cb.and( p_seq, cb.lessThan( root.get( Project_.sequence ), sequenceFieldValue.toString() ));
-			}else{
-				p_seq = cb.and( p_seq, cb.greaterThan( root.get( Project_.sequence ), sequenceFieldValue.toString() ));
-			}
-			p = cb.and( p, p_seq);
-		}		
-		
-		Order orderWithField = CriteriaBuilderTools.getOrder( cb, root, Project_.class, orderField, orderType );
-		if( orderWithField != null ){
-			cq.orderBy( orderWithField );
-		}
-		System.out.println(">>>SQL:" + em.createQuery(cq.where(p)).setMaxResults( maxCount).toString() );
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-	
-	/**
-	 * 根据条件查询所有符合条件的项目信息ID,项目信息不会很多 ,所以直接查询出来
-	 * @param maxCount
-	 * @param sequenceFieldValue
-	 * @param orderField
-	 * @param orderType
-	 * @param personName
-	 * @param identityNames
-	 * @param unitNames
-	 * @param groupNames
-	 * @param queryFilter
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listAllViewableProjectIds( Integer maxCount, String personName, List<String> identityNames, List<String> unitNames, List<String> groupNames, QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Project.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Project> root = cq.from(Project.class);
-		Predicate p_permission = null;
-		
-		if( StringUtils.isNotEmpty( personName )) {
-			//可以管理的栏目,肯定可以发布信息
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.participantPersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.creatorPerson ), personName ) );
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.executor ), personName ) );
-		}
-		if( ListTools.isNotEmpty( identityNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantIdentityList).in(identityNames));
-		}
-		if( ListTools.isNotEmpty( unitNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantUnitList).in(unitNames));
-		}
-		if( ListTools.isNotEmpty( groupNames )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission,  root.get( Project_.participantGroupList).in(groupNames));
-		}
-		
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Project_.class, cb, p_permission, root, queryFilter );
-		cq.distinct(true).select( root.get(Project_.id) );
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-
-	
-}

+ 0 - 92
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectGroupFactory.java

@@ -1,92 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.ProjectGroup;
-import com.x.teamwork.core.entity.ProjectGroup_;
-
-
-public class ProjectGroupFactory extends AbstractFactory {
-
-	public ProjectGroupFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的ProjectGroup实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectGroup get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, ProjectGroup.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的ProjectGroup实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectGroup> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<ProjectGroup>();
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectGroup> cq = cb.createQuery(ProjectGroup.class);
-		Root<ProjectGroup> root = cq.from(ProjectGroup.class);
-		Predicate p = root.get(ProjectGroup_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( ProjectGroup_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据用户列示ProjectGroup实体信息列表
-	 * @param person
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByPerson( String person ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<ProjectGroup> root = cq.from(ProjectGroup.class);
-		Predicate p = cb.equal( root.get(ProjectGroup_.owner), person );
-		cq.select( root.get(ProjectGroup_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据用户列示ProjectGroup实体信息列表
-	 * @param person
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectGroup> listGroupByPerson( String person ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectGroup> cq = cb.createQuery(ProjectGroup.class);
-		Root<ProjectGroup> root = cq.from(ProjectGroup.class);
-		Predicate p = cb.equal( root.get(ProjectGroup_.owner), person );
-		return em.createQuery(cq.where(p)).getResultList();
-	}	
-}

+ 0 - 129
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ProjectGroupReleFactory.java

@@ -1,129 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.ProjectGroupRele;
-import com.x.teamwork.core.entity.ProjectGroupRele_;
-
-
-public class ProjectGroupReleFactory extends AbstractFactory {
-
-	public ProjectGroupReleFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的ProjectGroupRele实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public ProjectGroupRele get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, ProjectGroupRele.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的ProjectGroupRele实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectGroupRele> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<ProjectGroupRele>();
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectGroupRele> cq = cb.createQuery(ProjectGroupRele.class);
-		Root<ProjectGroupRele> root = cq.from(ProjectGroupRele.class);
-		Predicate p = root.get(ProjectGroupRele_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( ProjectGroupRele_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据项目组ID列示项目ID信息列表
-	 * @param group
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listProjectIdByGroup( String group ) throws Exception {
-		if( StringUtils.isEmpty( group ) ){
-			throw new Exception("group can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<ProjectGroupRele> root = cq.from(ProjectGroupRele.class);
-		Predicate p = cb.equal( root.get(ProjectGroupRele_.groupId), group );
-		cq.select( root.get(ProjectGroupRele_.projectId) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据项目组ID列示关联信息ID列表
-	 * @param group
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByGroup( String group ) throws Exception {
-		if( StringUtils.isEmpty( group ) ){
-			throw new Exception("group can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<ProjectGroupRele> root = cq.from(ProjectGroupRele.class);
-		Predicate p = cb.equal( root.get(ProjectGroupRele_.groupId), group );
-		cq.select( root.get(ProjectGroupRele_.id) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据项目组ID以及项目ID获取一个关联信息
-	 * @param group
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<ProjectGroupRele> listWithGroupAndProject( String group, String project ) throws Exception {
-		if( StringUtils.isEmpty( group ) ){
-			throw new Exception("group can not be empty!");
-		}
-		if( StringUtils.isEmpty( project ) ){
-			throw new Exception("project can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectGroupRele> cq = cb.createQuery(ProjectGroupRele.class);
-		Root<ProjectGroupRele> root = cq.from(ProjectGroupRele.class);
-		Predicate p = cb.equal( root.get(ProjectGroupRele_.groupId), group );
-		p = cb.and( p,  cb.equal( root.get(ProjectGroupRele_.projectId), project ));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<ProjectGroupRele> listReleWithProject(String projectId) throws Exception {
-		if( StringUtils.isEmpty( projectId ) ){
-			throw new Exception("projectId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(ProjectGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<ProjectGroupRele> cq = cb.createQuery(ProjectGroupRele.class);
-		Root<ProjectGroupRele> root = cq.from(ProjectGroupRele.class);
-		Predicate p = cb.equal( root.get(ProjectGroupRele_.projectId), projectId );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-}

+ 0 - 206
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/ReviewFactory.java

@@ -1,206 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Order;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.tools.ListTools;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.Review;
-import com.x.teamwork.core.entity.Review_;
-import com.x.teamwork.core.entity.tools.CriteriaBuilderTools;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-/**
- * 工作任务权限控制信息服务类
- */
-public class ReviewFactory extends AbstractFactory {
-	
-	public ReviewFactory( Business business) throws Exception {
-		super(business);
-	}
-	
-	public List<String> listReviewByTask( String taskId,  Integer maxCount ) throws Exception {
-		if( maxCount == null ) {
-			maxCount = 1000;
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery( String.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal(root.get( Review_.taskId ), taskId );
-		cq.select( root.get( Review_.id) ).where(p);
-		return em.createQuery( cq ).setMaxResults(maxCount).getResultList();
-	}
-	
-	public List<String> listTaskIdsWithPersonAndProject(String person, String project ) throws Exception {
-		if( StringUtils.isEmpty( person ) ) {
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery( String.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal( root.get( Review_.permissionObj ), person );
-		p = cb.and( p, cb.equal( root.get( Review_.project ), project ));
-		cq.select(root.get( Review_.taskId)).where(p);
-		return em.createQuery( cq ).getResultList();
-	}
-	
-	public List<String> listTaskIdsWithPersonAndProject( String project, String person,  Integer maxCount ) throws Exception {
-		if( maxCount == null ) {
-			maxCount = 1000;
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery( String.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal(root.get( Review_.project ), project );
-		p = cb.and( p, cb.equal(root.get( Review_.permissionObj ), person ));
-		cq.select( root.get( Review_.taskId) ).where(p);
-		return em.createQuery( cq ).setMaxResults(maxCount).getResultList();
-	}
-	
-	public List<String> listPermissionByTask( String taskId, Integer maxCount ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery( String.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal(root.get( Review_.taskId ), taskId );
-		cq.select(root.get( Review_.permissionObj )).where(p);
-		return em.createQuery( cq ).setMaxResults(maxCount).getResultList();
-	}	
-	
-	public List<String> listIdsByTaskAndPerson(String taskId, String person) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ) {
-			throw new Exception("task id can not be empty!");
-		}
-		if( StringUtils.isEmpty( person ) ) {
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery( String.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal(root.get( Review_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get( Review_.permissionObj ), person));
-		cq.select(root.get( Review_.id)).where(p);
-		return em.createQuery( cq ).getResultList();
-	}
-	
-	public List<Review> listByTaskAndPerson(String taskId, String person) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ) {
-			throw new Exception("task id can not be empty!");
-		}
-		if( StringUtils.isEmpty( person ) ) {
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Review> cq = cb.createQuery( Review.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal(root.get( Review_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get( Review_.permissionObj ), person));
-		return em.createQuery( cq.where(p) ).getResultList();
-	}
-
-	public Long countByTask(String taskId) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ) {
-			throw new Exception("task id can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Review> root = cq.from(Review.class);
-		Predicate p = cb.equal( root.get(Review_.taskId), taskId );
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-	
-	public Long countWithFilter(String personName, QueryFilter queryFilter) throws Exception {
-		if( StringUtils.isEmpty( personName ) ) {
-			return 0L;
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Review> root = cq.from(Review.class);
-		Predicate p_permission = cb.equal( root.get(Review_.permissionObj), personName );
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Review_.class, cb, p_permission, root, queryFilter );
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-
-	public List<Review> listWithFilter( Integer maxCount, String orderField, String orderType, String personName, QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Review> cq = cb.createQuery(Review.class);
-		Root<Review> root = cq.from(Review.class);
-		Predicate p_permission = null;		
-		if( StringUtils.isNotEmpty( personName )) {
-			p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Review_.permissionObj ), personName ));
-		}
-		
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( Review_.class, cb, p_permission, root, queryFilter );
-		
-		//排序,添加排序列,默认使用sequence
-		List<Order> orders = new ArrayList<>();
-		Order orderWithField = CriteriaBuilderTools.getOrder( cb, root, Review_.class, orderField, orderType );
-		if( orderWithField != null ){
-			orders.add( orderWithField );
-		}
-		
-		if( !Review.taskSequence_FIELDNAME.equalsIgnoreCase( orderField )) {
-			//如果是其他的列,很可能排序值不唯一,所以使用多一列排序列来确定每次查询的顺序
-			orderWithField = CriteriaBuilderTools.getOrder( cb, root, Review_.class, Review.id_FIELDNAME, orderType );
-			if( orderWithField != null ){
-				orders.add( orderWithField );
-			}
-		}		
-		if( ListTools.isNotEmpty(  orders )){
-			cq.orderBy( orders );
-		}
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-
-	public List<String> checkTaskIdsWithPermission(List<String> taskIds, String personName) throws Exception {
-		if( ListTools.isEmpty( taskIds ) ) {
-			throw new Exception("taskIds can not be empty!");
-		}
-		if( StringUtils.isEmpty( personName ) ) {
-			throw new Exception("personName can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery( String.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal( root.get( Review_.permissionObj ), personName );
-		p = cb.and( p, root.get( Review_.taskId ).in( taskIds ));
-		cq.select(root.get( Review_.taskId)).where(p);
-		return em.createQuery( cq ).getResultList();
-	}
-
-	public List<Review> listTaskWithPersonAndParentId(String person, String taskId) throws Exception {
-		if( StringUtils.isEmpty( person ) ) {
-			throw new Exception("person can not be empty!");
-		}
-		if( StringUtils.isEmpty( taskId ) ) {
-			throw new Exception("taskId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( Review.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Review> cq = cb.createQuery( Review.class );
-		Root<Review> root = cq.from( Review.class );
-		Predicate p = cb.equal( root.get( Review_.permissionObj ), person );
-		p = cb.and( p, cb.equal( root.get( Review_.parent ), taskId ));
-		return em.createQuery( cq.where(p) ).getResultList();
-	}
-}

+ 0 - 80
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/SystemConfigFactory.java

@@ -1,80 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.SystemConfig;
-import com.x.teamwork.core.entity.SystemConfig_;
-
-public class SystemConfigFactory extends AbstractFactory {
-	
-	public SystemConfigFactory( Business business) throws Exception {
-		super(business);
-	}
-
-	public SystemConfig get( String id ) throws Exception {
-		return this.entityManagerContainer().find(id, SystemConfig.class, ExceptionWhen.none);
-	}
-
-	public List<SystemConfig> listAll() throws Exception {
-		EntityManager em = this.entityManagerContainer().get(SystemConfig.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<SystemConfig> cq = cb.createQuery(SystemConfig.class);
-		@SuppressWarnings("unused")
-		Root<SystemConfig> root = cq.from( SystemConfig.class);
-		return em.createQuery(cq).getResultList();
-	}
-
-	public List<SystemConfig> list(List<String> ids) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<SystemConfig>();
-		}
-		EntityManager em = this.entityManagerContainer().get(SystemConfig.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<SystemConfig> cq = cb.createQuery(SystemConfig.class);
-		Root<SystemConfig> root = cq.from(SystemConfig.class);
-		Predicate p = root.get( SystemConfig_.id).in(ids);
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listIdsByCode(String code) throws Exception {
-		if( code == null || code.isEmpty() ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(SystemConfig.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<SystemConfig> root = cq.from(SystemConfig.class);
-		Predicate p = cb.equal(root.get(SystemConfig_.configCode),  code);
-		cq.select(root.get(SystemConfig_.id));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public SystemConfig getWithConfigCode( String configCode ) throws Exception {
-		if( configCode == null || configCode.isEmpty() ){
-			return null;
-		}
-		SystemConfig attendanceSetting = null;
-		List<SystemConfig> settingList = null;
-		EntityManager em = this.entityManagerContainer().get(SystemConfig.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<SystemConfig> cq = cb.createQuery(SystemConfig.class);
-		Root<SystemConfig> root = cq.from(SystemConfig.class);
-		Predicate p = cb.equal(root.get( SystemConfig_.configCode ),  configCode );
-		settingList = em.createQuery(cq.where(p)).getResultList();
-		if( settingList != null && settingList.size() > 0 ){
-			attendanceSetting = settingList.get(0);
-		}
-		return attendanceSetting;
-	}
-	
-}

+ 0 - 166
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskFactory.java

@@ -1,166 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.Task;
-import com.x.teamwork.core.entity.TaskDetail;
-import com.x.teamwork.core.entity.Task_;
-
-
-public class TaskFactory extends AbstractFactory {
-
-	public TaskFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的Task实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public Task get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, Task.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 获取指定Id的TaskDetail实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskDetail getDetail( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, TaskDetail.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的Task实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Task> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<Task>();
-		}
-		EntityManager em = this.entityManagerContainer().get(Task.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Task> cq = cb.createQuery(Task.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = root.get(Task_.id).in(ids);
-		cq.orderBy( cb.asc( root.get( Task_.createTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据类别列示Task实体ID信息列表
-	 * @param application
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByProject( String projectId ) throws Exception {
-		if( StringUtils.isEmpty( projectId ) ){
-			throw new Exception("projectId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(Task.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = cb.equal( root.get(Task_.project), projectId );
-		cq.select( root.get(Task_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 查询未review的工作任务信息
-	 * @param maxCount
-	 * @return
-	 * @throws Exception
-	 */
-	public List<Task> listUnReviewTask(int maxCount) throws Exception {
-		if( maxCount == 0  ){
-			maxCount = 100;
-		}
-		EntityManager em = this.entityManagerContainer().get(Task.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Task> cq = cb.createQuery(Task.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = cb.or( cb.isNull(root.get(Task_.reviewed )), cb.isFalse( root.get(Task_.reviewed )));
-		cq.orderBy( cb.asc( root.get( Task_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	
-	/**
-	 * 根据类别列示Task实体信息列表
-	 * @param application
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByParent( String pid) throws Exception {
-		if( StringUtils.isEmpty( pid ) ){
-			throw new Exception("projectId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(Task.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = cb.equal( root.get(Task_.parent), pid );
-		cq.select( root.get(Task_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据条件查询符合条件的项目信息数量
-	 * @param projectId
-	 * @return
-	 * @throws Exception
-	 */
-	public Long countWithProject( String projectId ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( Task.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = cb.equal( root.get( Task_.project), projectId );
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-
-	public List<Task> allUnCompletedSubTasks(String taskId) throws Exception {
-		if( StringUtils.isEmpty( taskId )  ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(Task.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Task> cq = cb.createQuery(Task.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = cb.equal(  root.get( Task_.parent ), taskId );
-		p = cb.and( p, cb.isFalse( root.get(Task_.completed )));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listAllTaskIdsWithProject(String project) throws Exception {
-		if( StringUtils.isEmpty( project )  ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(Task.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<Task> root = cq.from(Task.class);
-		Predicate p = cb.equal(  root.get( Task_.project ), project );
-		cq.select( root.get(Task_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-}

+ 0 - 138
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskGroupFactory.java

@@ -1,138 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.TaskGroup;
-import com.x.teamwork.core.entity.TaskGroup_;
-
-
-public class TaskGroupFactory extends AbstractFactory {
-
-	public TaskGroupFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的TaskGroup实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskGroup get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, TaskGroup.class );
-	}
-	
-	/**
-	 * 列示指定Id的TaskGroup实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskGroup> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<TaskGroup>();
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroup> cq = cb.createQuery(TaskGroup.class);
-		Root<TaskGroup> root = cq.from(TaskGroup.class);
-		Predicate p = root.get(TaskGroup_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( TaskGroup_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据用户列示TaskGroup实体信息列表
-	 * @param person
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByPerson( String person ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskGroup> root = cq.from(TaskGroup.class);
-		Predicate p = cb.equal( root.get(TaskGroup_.owner), person );
-		cq.select( root.get(TaskGroup_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据用户列示TaskGroup实体信息列表
-	 * @param person
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskGroup> listGroupByPerson( String person ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroup> cq = cb.createQuery(TaskGroup.class);
-		Root<TaskGroup> root = cq.from(TaskGroup.class);
-		Predicate p = cb.equal( root.get(TaskGroup_.owner), person );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据用户和项目列示TaskGroup实体信息ID列表
-	 * @param person
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByPersonAndProject( String person, String project ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		if( StringUtils.isEmpty( project ) ){
-			throw new Exception("project can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskGroup> root = cq.from(TaskGroup.class);
-		Predicate p = cb.equal( root.get(TaskGroup_.owner), person );
-		p = cb.and( p, cb.equal( root.get(TaskGroup_.project), project ) );
-		cq.select( root.get(TaskGroup_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据用户和项目列示TaskGroup实体信息列表
-	 * @param person
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskGroup> listGroupByPersonAndProject( String person, String project ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		if( StringUtils.isEmpty( project ) ){
-			throw new Exception("project can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroup.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroup> cq = cb.createQuery(TaskGroup.class);
-		Root<TaskGroup> root = cq.from(TaskGroup.class);
-		Predicate p = cb.equal( root.get(TaskGroup_.owner), person );
-		p = cb.and( p, cb.equal( root.get(TaskGroup_.project), project ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-}

+ 0 - 139
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskGroupReleFactory.java

@@ -1,139 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.TaskGroupRele;
-import com.x.teamwork.core.entity.TaskGroupRele_;
-
-
-public class TaskGroupReleFactory extends AbstractFactory {
-
-	public TaskGroupReleFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的TaskGroupRele实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskGroupRele get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, TaskGroupRele.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的TaskGroupRele实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskGroupRele> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<TaskGroupRele>();
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroupRele> cq = cb.createQuery(TaskGroupRele.class);
-		Root<TaskGroupRele> root = cq.from(TaskGroupRele.class);
-		Predicate p = root.get(TaskGroupRele_.id).in(ids);
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据项目组ID列示项目ID信息列表
-	 * @param group
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listTaskIdByGroup( String group ) throws Exception {
-		if( StringUtils.isEmpty( group ) ){
-			throw new Exception("group can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskGroupRele> root = cq.from(TaskGroupRele.class);
-		Predicate p = cb.equal( root.get(TaskGroupRele_.taskGroupId), group );
-		cq.select( root.get(TaskGroupRele_.taskId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据项目组ID列示关联信息ID列表
-	 * @param group
-	 * @return
-	 * @throws Exception
-	 */
-	public List<String> listByGroup( String group ) throws Exception {
-		if( StringUtils.isEmpty( group ) ){
-			throw new Exception("group can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskGroupRele> root = cq.from(TaskGroupRele.class);
-		Predicate p = cb.equal( root.get(TaskGroupRele_.taskGroupId), group );
-		cq.select( root.get(TaskGroupRele_.id) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据项目组ID以及项目ID获取一个关联信息
-	 * @param group
-	 * @param project
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskGroupRele> listWithGroupAndTask( String group, String taskId ) throws Exception {
-		if( StringUtils.isEmpty( group ) ){
-			throw new Exception("group can not be empty!");
-		}
-		if( StringUtils.isEmpty( taskId ) ){
-			throw new Exception("taskId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroupRele> cq = cb.createQuery(TaskGroupRele.class);
-		Root<TaskGroupRele> root = cq.from(TaskGroupRele.class);
-		Predicate p = cb.equal( root.get(TaskGroupRele_.taskGroupId), group );
-		p = cb.and( p,  cb.equal( root.get(TaskGroupRele_.taskId), taskId ));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<TaskGroupRele> listTaskReleWithProject(String projectId ) throws Exception {
-		if( StringUtils.isEmpty( projectId ) ){
-			throw new Exception("projectId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroupRele> cq = cb.createQuery(TaskGroupRele.class);
-		Root<TaskGroupRele> root = cq.from(TaskGroupRele.class);
-		Predicate p = cb.equal( root.get(TaskGroupRele_.project), projectId );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<TaskGroupRele> listTaskReleWithTask(String taskId ) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			throw new Exception("taskId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskGroupRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskGroupRele> cq = cb.createQuery(TaskGroupRele.class);
-		Root<TaskGroupRele> root = cq.from(TaskGroupRele.class);
-		Predicate p = cb.equal( root.get(TaskGroupRele_.taskId), taskId );
-		return em.createQuery(cq.where(p)).getResultList();
-	}	
-}

+ 0 - 406
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskListFactory.java

@@ -1,406 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.tools.ListTools;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.TaskList;
-import com.x.teamwork.core.entity.TaskListRele;
-import com.x.teamwork.core.entity.TaskListRele_;
-import com.x.teamwork.core.entity.TaskList_;
-
-
-public class TaskListFactory extends AbstractFactory {
-
-	public TaskListFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的TaskList实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskList get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, TaskList.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的TaskList实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskList> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<TaskList>();
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskList.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskList> cq = cb.createQuery(TaskList.class);
-		Root<TaskList> root = cq.from(TaskList.class);
-		Predicate p = root.get(TaskList_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( TaskList_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 列示指定Id的TaskList实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskListRele> listRele( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<TaskListRele>();
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = root.get(TaskListRele_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( TaskListRele_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据用户和项目ID查询工作任务列表(泳道)
-	 * @param person
-	 * @param projectId
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskList> listWithPersonAndProject( String person, String projectId ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		if( StringUtils.isEmpty( projectId ) ){
-			throw new Exception("projectId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskList.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskList> cq = cb.createQuery(TaskList.class);
-		Root<TaskList> root = cq.from(TaskList.class);
-		Predicate p = cb.equal( root.get(TaskList_.owner ), person );
-		p = cb.and( p, cb.equal( root.get(TaskList_.project), projectId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据列表ID获取所有的工作任务关联ID列表
-	 * @param listId
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<String> listReleIdsWithListId(String listId ) throws Exception {
-		if( StringUtils.isEmpty( listId ) ){
-			throw new Exception("listId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskListId), listId );
-		cq.select( root.get(TaskListRele_.id ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据列表ID获取所有的工作任务关联信息列表
-	 * @param listId
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<TaskListRele> listReleWithListId( String listId ) throws Exception {
-		if( StringUtils.isEmpty( listId ) ){
-			throw new Exception("listId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskListId), listId );
-		cq.orderBy( cb.asc( root.get( TaskListRele_.order ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据任务ID和列表ID查询工作列表关联对象
-	 * @param taskId
-	 * @param listId
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<TaskListRele> listReleWithTaskAndList(String taskId, String listId) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			throw new Exception("taskId can not be empty!");
-		}
-		if( StringUtils.isEmpty( listId ) ){
-			throw new Exception("listId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId), taskId );
-		p = cb.and( p, cb.equal( root.get(TaskListRele_.taskListId), listId ));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据任务ID查询工作列表关联对象
-	 * @param taskId
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<TaskListRele> listReleWithTask(String taskId ) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			throw new Exception("taskId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId), taskId );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	/**
-	 * 根据任务ID查询工作列表关联对象
-	 * @param taskId
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<String> listGroupIdsWithTask( String taskId ) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			throw new Exception("taskId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId), taskId );
-		cq.distinct(true).select( root.get(TaskListRele_.taskGroupId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public Integer maxOrder(String listId) throws Exception {
-		if( StringUtils.isEmpty( listId ) ){
-			throw new Exception("listId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Integer> cq = cb.createQuery(Integer.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskListId), listId );		
-		cq.select( cb.max( root.get( TaskListRele_.order )));
-		Integer max = em.createQuery(cq.where(p)).getSingleResult();
-		return max == null ? 0 : max;
-	}
-
-	public List<TaskList> listWithTaskGroup(String taskGroupId) throws Exception {
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			throw new Exception("taskGroupId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskList.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskList> cq = cb.createQuery(TaskList.class);
-		Root<TaskList> root = cq.from(TaskList.class);
-		Predicate p = cb.equal( root.get(TaskList_.taskGroup ), taskGroupId );
-		cq.orderBy( cb.asc( root.get( TaskList_.order ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<String> listTaskListIdsWithTaskGroup(String taskGroupId) throws Exception {
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			throw new Exception("taskGroupId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskGroupId ), taskGroupId );
-		cq.select( root.get(TaskListRele_.taskListId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listTaskIdsWithTaskGroupId(String taskGroupId) throws Exception {
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			throw new Exception("taskGroupId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( TaskListRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskGroupId ), taskGroupId );
-		cq.distinct(true).select( root.get(TaskListRele_.taskId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<String> listTaskIdsWithTaskGroupId( List<String> taskLists ) throws Exception {
-		if( ListTools.isEmpty( taskLists ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get( TaskListRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p =  root.get(TaskListRele_.taskListId ).in( taskLists );
-		cq.distinct(true).select( root.get(TaskListRele_.taskId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public Long countTaskWithTaskListId(String taskListId) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskListRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskListId ), taskListId );
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-	
-	public List<String> listTaskIdWithTaskListId(String taskListId) throws Exception {
-		if( StringUtils.isEmpty( taskListId ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get( TaskListRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskListId ), taskListId );
-		cq.select( root.get(TaskListRele_.taskId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<String> listTaskIdWithTaskListIds( List<String> taskListIds ) throws Exception {
-		if(ListTools.isEmpty( taskListIds ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get( TaskListRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = root.get(TaskListRele_.taskListId ).in( taskListIds );
-		cq.select( root.get(TaskListRele_.taskId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<String> listTaskIdWithTaskListId( List<String> taskListId) throws Exception {
-		if( ListTools.isEmpty( taskListId ) ){
-			throw new Exception("taskListId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get( TaskListRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = root.get(TaskListRele_.taskListId ).in( taskListId );
-		cq.select( root.get(TaskListRele_.taskId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<TaskListRele> listReleWithTaskAndGroup( String taskId, String taskGroupId) throws Exception {
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			throw new Exception("taskGroupId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get(TaskListRele_.taskGroupId ) , taskGroupId));
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	public List<String> listTaskListIdWithTaskAndGroup( String taskId, String taskGroupId ) throws Exception {
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			throw new Exception("taskGroupId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get(TaskListRele_.taskGroupId ) , taskGroupId));
-		cq.select( root.get(TaskListRele_.taskListId) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<TaskListRele> listTaskListWithTask(String taskId, String taskGroupId ) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			return null;
-		}
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get(TaskListRele_.taskGroupId ), taskGroupId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listTaskListIdWithTask(String taskId, String taskGroupId ) throws Exception {
-		if( StringUtils.isEmpty( taskId ) ){
-			return null;
-		}
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskId ), taskId );
-		p = cb.and( p, cb.equal( root.get(TaskListRele_.taskGroupId ), taskGroupId ) );
-		cq.select( root.get(TaskListRele_.taskListId) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listTaskListIdsWithGroup(String taskGroupId, String person) throws Exception {
-		if( StringUtils.isEmpty( taskGroupId ) ){
-			return null;
-		}
-		if( StringUtils.isEmpty( person ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskList.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskList> root = cq.from(TaskList.class);
-		Predicate p = cb.equal( root.get( TaskList_.owner ), person );
-		p = cb.and( p, cb.equal( root.get( TaskList_.taskGroup ), taskGroupId ) );
-		cq.select( root.get(TaskList_.id) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<TaskListRele> listReleWithTaskAndListId(List<String> taskIds, String taskListId) throws Exception {
-		if( ListTools.isEmpty( taskIds ) ){
-			return null;
-		}
-		if( StringUtils.isEmpty( taskListId ) ){
-			return null;
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskListRele.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskListRele> cq = cb.createQuery(TaskListRele.class);
-		Root<TaskListRele> root = cq.from(TaskListRele.class);
-		Predicate p = cb.equal( root.get(TaskListRele_.taskListId ), taskListId );
-		p = cb.and( p, root.get(TaskListRele_.taskId ).in( taskIds ) );
-		cq.orderBy( cb.asc( root.get( TaskListRele_.order ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-}

+ 0 - 124
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskTagFactory.java

@@ -1,124 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.TaskTag;
-import com.x.teamwork.core.entity.TaskTagRele;
-import com.x.teamwork.core.entity.TaskTagRele_;
-import com.x.teamwork.core.entity.TaskTag_;
-import com.x.teamwork.core.entity.tools.CriteriaBuilderTools;
-
-
-public class TaskTagFactory extends AbstractFactory {
-
-	public TaskTagFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	public List<String> listTagIdsWithTask(String taskId, String person) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTagRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskTagRele> root = cq.from(TaskTagRele.class);
-		Predicate p = cb.equal( root.get( TaskTagRele_.taskId ), taskId );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTagRele_.owner ), person ) );
-		cq.select( root.get(TaskTagRele_.tagId) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据标签名称,项目ID,人员标识查询该标签在用户的项目标签中的标签ID,理论上只有一条记录
-	 * @param tagName
-	 * @param project
-	 * @param distinguishedName
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<String> listTagIdsWithTagNameAndProjectAndPerson(String tagName, String project, String personName) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTagRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskTag> root = cq.from(TaskTag.class);
-		Predicate p = cb.equal( root.get( TaskTag_.tag ), tagName );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTag_.owner ), personName ) );
-		if( StringUtils.isNotEmpty( project )) {
-			p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTag_.project ), project ) );
-		}
-		cq.select( root.get(TaskTag_.id) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据标签ID、任务ID和人员名称查询标签与任务的关联信息
-	 * @param tagId
-	 * @param taskId
-	 * @param personName
-	 * @return
-	 * @throws Exception 
-	 */
-	public List<String> listTagReleIdsWithTagIdAndTaskAndPerson(String tagId, String taskId, String personName) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTagRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskTagRele> root = cq.from(TaskTagRele.class);
-		Predicate p = cb.equal( root.get( TaskTagRele_.taskId ), taskId );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTagRele_.tagId ), tagId ) );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTagRele_.owner ), personName ) );
-		cq.select( root.get(TaskTagRele_.id) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<TaskTag> listWithProjectAndPerson( String project, String person ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTag.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskTag> cq = cb.createQuery(TaskTag.class);
-		Root<TaskTag> root = cq.from(TaskTag.class);
-		Predicate p = cb.equal( root.get( TaskTag_.project ), project );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTag_.owner ), person ) );
-		cq.orderBy( cb.asc( root.get( TaskTag_.createTime ) )  );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<TaskTagRele> listReleWithProjectAndPerson( String projectId, String person ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTagRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskTagRele> cq = cb.createQuery(TaskTagRele.class);
-		Root<TaskTagRele> root = cq.from(TaskTagRele.class);
-		Predicate p = cb.equal( root.get( TaskTagRele_.project ), projectId );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTagRele_.owner ), person ) );
-		cq.orderBy( cb.asc( root.get( TaskTagRele_.createTime ) )  );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public List<TaskTagRele> listReleWithTaskAndPerson( String taskId, String person ) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTagRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskTagRele> cq = cb.createQuery(TaskTagRele.class);
-		Root<TaskTagRele> root = cq.from(TaskTagRele.class);
-		Predicate p = cb.equal( root.get( TaskTagRele_.taskId ), taskId );
-		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal( root.get( TaskTagRele_.owner ), person ) );
-		cq.orderBy( cb.asc( root.get( TaskTagRele_.createTime ) )  );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	public List<String> listTaskIdsWithReleTagIds(List<String> tagIds) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskTagRele.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<String> cq = cb.createQuery(String.class);
-		Root<TaskTagRele> root = cq.from(TaskTagRele.class);
-		Predicate p = root.get( TaskTagRele_.tagId ).in( tagIds );
-		cq.select( root.get(TaskTagRele_.taskId) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-}

+ 0 - 122
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/factory/TaskViewFactory.java

@@ -1,122 +0,0 @@
-package com.x.teamwork.assemble.control.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Order;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.exception.ExceptionWhen;
-import com.x.base.core.project.tools.ListTools;
-import com.x.teamwork.assemble.control.AbstractFactory;
-import com.x.teamwork.assemble.control.Business;
-import com.x.teamwork.core.entity.TaskView;
-import com.x.teamwork.core.entity.TaskView_;
-import com.x.teamwork.core.entity.tools.CriteriaBuilderTools;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-
-
-public class TaskViewFactory extends AbstractFactory {
-
-	public TaskViewFactory( Business business ) throws Exception {
-		super(business);
-	}
-
-	/**
-	 * 获取指定Id的TaskView实体信息对象
-	 * @param id
-	 * @return
-	 * @throws Exception
-	 */
-	public TaskView get( String id ) throws Exception {
-		return this.entityManagerContainer().find( id, TaskView.class, ExceptionWhen.none );
-	}
-	
-	/**
-	 * 列示指定Id的TaskView实体信息列表
-	 * @param ids
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskView> list( List<String> ids ) throws Exception {
-		if( ids == null || ids.size() == 0 ){
-			return new ArrayList<TaskView>();
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskView.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskView> cq = cb.createQuery(TaskView.class);
-		Root<TaskView> root = cq.from(TaskView.class);
-		Predicate p = root.get(TaskView_.id).in(ids);
-		cq.orderBy( cb.desc( root.get( TaskView_.updateTime ) ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-
-	/**
-	 * 根据用户和项目ID查询工作任务列表
-	 * @param person
-	 * @param projectId
-	 * @return
-	 * @throws Exception
-	 */
-	public List<TaskView> listWithPersonAndProject( String person, String projectId ) throws Exception {
-		if( StringUtils.isEmpty( person ) ){
-			throw new Exception("person can not be empty!");
-		}
-		if( StringUtils.isEmpty( projectId ) ){
-			throw new Exception("projectId can not be empty!");
-		}
-		EntityManager em = this.entityManagerContainer().get(TaskView.class);
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskView> cq = cb.createQuery(TaskView.class);
-		Root<TaskView> root = cq.from(TaskView.class);
-		Predicate p = cb.equal( root.get(TaskView_.owner ), person );
-		p = cb.and( p, cb.equal( root.get(TaskView_.project), projectId ) );
-		return em.createQuery(cq.where(p)).getResultList();
-	}
-	
-	public Long countWithFilter( QueryFilter queryFilter) throws Exception {
-		if( queryFilter == null  ) {
-			return 0L;
-		}
-		EntityManager em = this.entityManagerContainer().get( TaskView.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = cb.createQuery(Long.class);
-		Root<TaskView> root = cq.from(TaskView.class);
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( TaskView_.class, cb, null, root, queryFilter );
-		cq.select(cb.count(root)).where(p);
-		return em.createQuery(cq).getSingleResult();
-	}
-	
-	public List<TaskView> listWithFilter( Integer maxCount, String orderField, String orderType, QueryFilter queryFilter) throws Exception {
-		EntityManager em = this.entityManagerContainer().get( TaskView.class );
-		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<TaskView> cq = cb.createQuery(TaskView.class);
-		Root<TaskView> root = cq.from(TaskView.class);
-		Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( TaskView_.class, cb, null, root, queryFilter );
-		
-		//排序,添加排序列,默认使用sequence
-		List<Order> orders = new ArrayList<>();
-		Order orderWithField = CriteriaBuilderTools.getOrder( cb, root, TaskView_.class, orderField, orderType );
-		if( orderWithField != null ){
-			orders.add( orderWithField );
-		}
-		
-		if( !TaskView.sequence_FIELDNAME.equalsIgnoreCase( orderField )) {
-			//如果是其他的列,很可能排序值不唯一,所以使用多一列排序列来确定每次查询的顺序
-			orderWithField = CriteriaBuilderTools.getOrder( cb, root, TaskView_.class, TaskView.id_FIELDNAME, orderType );
-			if( orderWithField != null ){
-				orders.add( orderWithField );
-			}
-		}		
-		if( ListTools.isNotEmpty(  orders )){
-			cq.orderBy( orders );
-		}
-		return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
-	}
-}

+ 0 - 41
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/ActionApplication.java

@@ -1,41 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs;
-
-import java.util.Set;
-
-import javax.ws.rs.ApplicationPath;
-
-import com.x.base.core.project.jaxrs.AbstractActionApplication;
-import com.x.teamwork.assemble.control.jaxrs.attachment.AttachmentAction;
-import com.x.teamwork.assemble.control.jaxrs.chat.ChatAction;
-import com.x.teamwork.assemble.control.jaxrs.config.SystemConfigAction;
-import com.x.teamwork.assemble.control.jaxrs.dynamic.DynamicAction;
-import com.x.teamwork.assemble.control.jaxrs.extfield.ProjectExtFieldReleAction;
-import com.x.teamwork.assemble.control.jaxrs.list.TaskListAction;
-import com.x.teamwork.assemble.control.jaxrs.project.ProjectAction;
-import com.x.teamwork.assemble.control.jaxrs.projectgroup.ProjectGroupAction;
-import com.x.teamwork.assemble.control.jaxrs.task.TaskAction;
-import com.x.teamwork.assemble.control.jaxrs.taskgroup.TaskGroupAction;
-import com.x.teamwork.assemble.control.jaxrs.tasktag.TaskTagAction;
-import com.x.teamwork.assemble.control.jaxrs.taskview.TaskViewAction;
-
-@ApplicationPath("jaxrs")
-public class ActionApplication extends AbstractActionApplication {
-
-	public Set<Class<?>> getClasses() {
-		
-		this.classes.add( ProjectAction.class );
-		this.classes.add( TaskAction.class );
-		this.classes.add( TaskTagAction.class );
-		this.classes.add( TaskViewAction.class );
-		this.classes.add( AttachmentAction.class );
-		this.classes.add( ProjectGroupAction.class );
-		this.classes.add( TaskGroupAction.class );
-		this.classes.add( TaskListAction.class );
-		this.classes.add( DynamicAction.class );
-		this.classes.add( ChatAction.class );
-		this.classes.add( SystemConfigAction.class );
-		this.classes.add( ProjectExtFieldReleAction.class );
-		return this.classes;
-	}
-
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/JaxrsCipherManagerFilter.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.CipherManagerJaxrsFilter;
-
-@WebFilter(urlPatterns = { 
-		"/jaxrs/cipher/*",
-		"/jaxrs/manager/*" 
-		}, asyncSupported = true)
-public class JaxrsCipherManagerFilter extends CipherManagerJaxrsFilter {
-}

+ 0 - 22
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/JaxrsManagerUserFilter.java

@@ -1,22 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs;
-
-import javax.servlet.annotation.WebFilter;
-
-import com.x.base.core.project.jaxrs.ManagerUserJaxrsFilter;
-
-@WebFilter(urlPatterns = { 		
-		"/jaxrs/project/*",
-		"/jaxrs/chat/*",
-		"/jaxrs/task/*",
-		"/jaxrs/task_tag/*",
-		"/jaxrs/task_view/*",
-		"/jaxrs/attachment/*",
-		"/jaxrs/project_group/*",
-		"/jaxrs/task_group/*",
-		"/jaxrs/task_list/*",
-		"/jaxrs/config/*",
-		"/jaxrs/extfield/*",
-		"/jaxrs/dynamic/*"
-		}, asyncSupported = true)
-public class JaxrsManagerUserFilter extends ManagerUserJaxrsFilter {
-}

+ 0 - 129
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionDelete.java

@@ -1,129 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.entity.annotation.CheckRemoveType;
-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.config.StorageMapping;
-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.teamwork.assemble.control.ThisApplication;
-import com.x.teamwork.core.entity.Attachment;
-import com.x.teamwork.core.entity.Dynamic;
-
-public class ActionDelete extends BaseAction {
-
-	private static  Logger logger = LoggerFactory.getLogger( ActionDelete.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Attachment attachment = null;
-		StorageMapping mapping = null;
-		Dynamic dynamic = null;
-		Wo wo = new Wo();
-		Boolean check = true;	
-		
-		if( StringUtils.isEmpty( id ) ){
-			check = false;
-			Exception exception = new ExceptionAttachmentIdEmpty();
-			result.error( exception );
-		}
-		
-		if( check ){
-			try{
-				attachment = attachmentQueryService.get( id );
-				if (null == attachment) {
-					check = false;
-					Exception exception = new ExceptionAttachmentNotExists( id );
-					result.error( exception );
-				}
-			}catch(Exception e){
-				check = false;
-				Exception exception = new ExceptionAttachmentQueryById( e, id );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		
-		if( check ){
-			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-				mapping = ThisApplication.context().storageMappings().get(Attachment.class, attachment.getStorage());
-				
-				attachment = emc.find( id, Attachment.class );
-				emc.beginTransaction( Attachment.class );
-				emc.remove( attachment, CheckRemoveType.all );
-				attachment.deleteContent( mapping );
-				emc.commit();
-
-				
-				
-				
-			}catch(Exception e){
-				check = false;
-				Exception exception = new ExceptionAttachmentDelete( e, attachment.getId() );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		
-		if (check) {
-			try {
-				dynamic = dynamicPersistService.deleteAttachment( attachment, effectivePerson );
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					wo.setDynamics(dynamics);
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		wo.setId( id );
-		result.setData( wo );
-		return result;
-	}
-	
-	public static class Wo extends WoId {
-		
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-	}
-	
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-}

+ 0 - 104
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionDownload.java

@@ -1,104 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-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.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.assemble.control.ThisApplication;
-import com.x.teamwork.core.entity.Attachment;
-import com.x.teamwork.core.entity.Dynamic;
-
-public class ActionDownload extends BaseAction {
-	
-	private static  Logger logger = LoggerFactory.getLogger( ActionDownload.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Attachment attachment = null;
-		Boolean check = true;
-		Wo wo = null;
-		try {
-			attachment = attachmentQueryService.get( id );
-			if( attachment == null ){
-				check = false;
-				Exception exception = new ExceptionAttachmentNotExists( id );
-				result.error( exception );
-			}
-		} catch ( Exception e ) {
-			check = false;
-			Exception exception = new ExceptionAttachmentQueryById( e, id );
-			result.error( exception );
-			logger.error( e, effectivePerson, request, null);
-		}
-		
-		if( check ) {
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class, attachment.getStorage());
-			wo = new Wo(attachment.readContent(mapping), 
-					this.contentType(false, attachment.getName()), 
-					this.contentDisposition(false, attachment.getName()));
-		}
-		
-		if (check) {
-			try {
-				Dynamic dynamic = dynamicPersistService.downloadAttachmentDynamic(attachment, effectivePerson);
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					if( wo != null ) {
-						wo.setDynamics(dynamics);
-					}
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		result.setData(wo);
-		return result;
-	}
-
-	public static class Wo extends WoFile {
-		
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-		
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-	}
-
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-}

+ 0 - 105
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionDownloadStream.java

@@ -1,105 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-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.config.StorageMapping;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoFile;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.assemble.control.ThisApplication;
-import com.x.teamwork.core.entity.Attachment;
-import com.x.teamwork.core.entity.Dynamic;
-
-public class ActionDownloadStream extends BaseAction {
-	
-	private static  Logger logger = LoggerFactory.getLogger( ActionDownloadStream.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id, Boolean stream ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Attachment attachment = null;
-		Boolean check = true;
-		Wo wo = null;
-		try {
-			attachment = attachmentQueryService.get( id );
-			if( attachment == null ){
-				check = false;
-				Exception exception = new ExceptionAttachmentNotExists( id );
-				result.error( exception );
-			}
-		} catch ( Exception e ) {
-			check = false;
-			Exception exception = new ExceptionAttachmentQueryById( e, id );
-			result.error( exception );
-			logger.error( e, effectivePerson, request, null);
-		}
-		
-		if( check ) {
-			StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class, attachment.getStorage());
-			wo = new Wo(attachment.readContent(mapping), 
-					this.contentType(stream, attachment.getName()), 
-					this.contentDisposition(stream, attachment.getName()));
-		}
-		
-		if (check) {
-			try {
-				Dynamic dynamic = dynamicPersistService.downloadAttachmentDynamic(attachment, effectivePerson);
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					if( wo != null ) {
-						wo.setDynamics(dynamics);
-					}
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		result.setData(wo);
-		return result;
-	}
-
-	public static class Wo extends WoFile {
-		
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-		
-		public Wo(byte[] bytes, String contentType, String contentDisposition) {
-			super(bytes, contentType, contentDisposition);
-		}
-	}
-
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-	
-}

+ 0 - 63
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionGet.java

@@ -1,63 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.core.entity.Attachment;
-
-public class ActionGet extends BaseAction {
-
-	private static  Logger logger = LoggerFactory.getLogger( ActionGet.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Wo wrap = null;
-		Attachment attachment = null;
-		if( StringUtils.isEmpty( id )){
-			Exception exception = new ExceptionAttachmentIdEmpty();
-			result.error( exception );
-		}else{
-			try {
-				attachment = attachmentQueryService.get( id );
-				if( attachment != null ){
-					wrap = Wo.copier.copy( attachment );
-					result.setData(wrap);
-				}else{
-					Exception exception = new ExceptionAttachmentNotExists( id );
-					result.error( exception );
-				}
-			} catch ( Exception e ) {
-				Exception exception = new ExceptionAttachmentQueryById( e, id );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-	
-	public static class Wo extends Attachment{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo( Attachment.class, Wo.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-		
-	}
-}

+ 0 - 72
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionListWithProject.java

@@ -1,72 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-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.core.entity.Attachment;
-import com.x.teamwork.core.entity.Project;
-
-public class ActionListWithProject extends BaseAction {
-
-	private static  Logger logger = LoggerFactory.getLogger( ActionListWithProject.class );
-	
-	protected ActionResult<List<Wo>> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<List<Wo>> result = new ActionResult<List<Wo>>();
-		List<Wo> wrapOutAttachmentList = null;
-		List<Attachment> attachments = null;
-		Project project = null;
-		if( StringUtils.isEmpty( id )){
-			Exception exception = new ExceptionProjectIdEmpty();
-			result.error( exception );
-		}else{
-			try {	
-				project = projectQueryService.get( id );
-				if( project != null ){
-					attachments = attachmentQueryService.listAttachmentWithProject(id );
-					if( ListTools.isNotEmpty( attachments)) {
-						wrapOutAttachmentList = Wo.copier.copy( attachments );
-					}
-				}
-			} catch (Exception e) {
-				Exception exception = new ExceptionQueryProjectById( e, id );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-			if( wrapOutAttachmentList == null ){
-				wrapOutAttachmentList = new ArrayList<Wo>();
-			}
-			result.setData( wrapOutAttachmentList );
-		}
-		return result;
-	}
-	
-	public static class Wo extends Attachment{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo( Attachment.class, Wo.class, null,JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-		
-	}
-}

+ 0 - 72
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionListWithTask.java

@@ -1,72 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-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.core.entity.Attachment;
-import com.x.teamwork.core.entity.Task;
-
-public class ActionListWithTask extends BaseAction {
-
-	private static  Logger logger = LoggerFactory.getLogger( ActionListWithTask.class );
-	
-	protected ActionResult<List<Wo>> execute( HttpServletRequest request, EffectivePerson effectivePerson, String taskId ) throws Exception {
-		ActionResult<List<Wo>> result = new ActionResult<List<Wo>>();
-		List<Wo> wrapOutAttachmentList = null;
-		List<Attachment> attachments = null;
-		Task task = null;
-		if( StringUtils.isEmpty( taskId )){
-			Exception exception = new ExceptionProjectIdEmpty();
-			result.error( exception );
-		}else{
-			try {	
-				task = taskQueryService.get( taskId );
-				if( task != null ){
-					attachments = attachmentQueryService.listAttachmentWithTask(taskId);
-					if( ListTools.isNotEmpty( attachments)) {
-						wrapOutAttachmentList = Wo.copier.copy( attachments );
-					}
-				}
-			} catch (Exception e) {
-				Exception exception = new ExceptionQueryProjectById( e, taskId );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-			if( wrapOutAttachmentList == null ){
-				wrapOutAttachmentList = new ArrayList<Wo>();
-			}
-			result.setData( wrapOutAttachmentList );
-		}
-		return result;
-	}
-	
-	public static class Wo extends Attachment{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Attachment, Wo> copier = WrapCopierFactory.wo( Attachment.class, Wo.class, null,JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-		
-	}
-}

+ 0 - 185
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionProjectAttachmentUpload.java

@@ -1,185 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-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.config.StorageMapping;
-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.DefaultCharset;
-import com.x.teamwork.assemble.control.ThisApplication;
-import com.x.teamwork.core.entity.Attachment;
-import com.x.teamwork.core.entity.Dynamic;
-import com.x.teamwork.core.entity.Project;
-
-public class ActionProjectAttachmentUpload extends BaseAction {
-	
-	private static Logger logger = LoggerFactory.getLogger(ActionProjectAttachmentUpload.class);
-
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, 
-			String projectId, String site, byte[] bytes, FormDataContentDisposition disposition) {
-		ActionResult<Wo> result = new ActionResult<>();
-		Attachment attachment = null;
-		Project project = null;
-		StorageMapping mapping = null;
-		String fileName = null;
-		Boolean check = true;		
-		Wo wo = new Wo();
-		
-		if( check ){
-			if( StringUtils.isEmpty( projectId ) ){
-				check = false;
-				Exception exception = new ExceptionProjectIdEmpty( );
-				result.error( exception );
-			}
-		}
-		
-		if( check ){//判断工作信息是否已经存在
-			try {
-				project = projectQueryService.get( projectId );
-				if (null == project) {
-					check = false;
-					Exception exception = new ExceptionProjectNotExists( projectId );
-					result.error( exception );
-				}
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-				logger.error( e, effectivePerson, request, null );
-			}
-		}
-		
-		if( check ){
-			try {
-				fileName = FilenameUtils.getName(new String(disposition.getFileName().getBytes(DefaultCharset.name_iso_8859_1), DefaultCharset.name));
-				/** 禁止不带扩展名的文件上传 */
-				if (StringUtils.isEmpty(fileName)) {
-					check = false;
-					Exception exception = new ExceptionEmptyExtension( fileName );
-					result.error( exception );
-				} 
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-			}
-		}
-		
-		if( check ){
-			try {
-				mapping = ThisApplication.context().storageMappings().random( Attachment.class );
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-				logger.warn( "系统在获取存储的时候发生异常!" );
-				logger.error( e, effectivePerson, request, null );
-			}
-		}
-		
-		if( check ){
-			try {
-				attachment = this.concreteAttachment( mapping, project, fileName, effectivePerson, site );
-				attachment.saveContent(mapping, bytes, fileName);
-				attachment = attachmentPersistService.saveAttachment( project, attachment );
-				
-				
-				wo.setId( attachment.getId() );
-				
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-				logger.warn( "系统在保存附件和更新附件数据时候发生异常!" );
-				logger.error( e, effectivePerson, request, null );
-			}
-		}
-		
-		if (check) {
-			try {
-				Dynamic dynamic = dynamicPersistService.uploadAttachmentDynamic(attachment, effectivePerson);
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					wo.setDynamics(dynamics);
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		result.setData(wo);
-		return result;
-	}
-
-	private Attachment concreteAttachment(StorageMapping mapping, Project project, String name, EffectivePerson effectivePerson, String site) throws Exception {
-		Attachment attachment = new Attachment();
-		String fileName = UUID.randomUUID().toString();
-		String extension = FilenameUtils.getExtension( name );
-		if ( StringUtils.isNotEmpty(extension)) {
-			fileName = fileName + "." + extension;
-		}else{
-			throw new Exception("file extension is empty.");
-		}
-		if( name.indexOf( "\\" ) >0 ){
-			name = StringUtils.substringAfterLast( name, "\\");
-		}
-		if( name.indexOf( "/" ) >0 ){
-			name = StringUtils.substringAfterLast( name, "/");
-		}
-		attachment.setCreateTime( new Date() );
-		attachment.setLastUpdateTime( new Date() );
-		attachment.setExtension( extension );
-		attachment.setName( name );
-		attachment.setFileName( fileName );
-		attachment.setStorage( mapping.getName() );
-		attachment.setProjectId( project.getId() );
-		attachment.setBundleObjType("PROJECT") ;
-		attachment.setCreatorUid( effectivePerson.getDistinguishedName() );
-		attachment.setSite( site );
-		attachment.setFileHost( "" );
-		attachment.setFilePath( "" );
-		return attachment;
-	}
-
-	public static class Wo extends WoId {
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-	}
-	
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-}

+ 0 - 183
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ActionTaskAttachmentUpload.java

@@ -1,183 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-
-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.config.StorageMapping;
-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.DefaultCharset;
-import com.x.teamwork.assemble.control.ThisApplication;
-import com.x.teamwork.core.entity.Attachment;
-import com.x.teamwork.core.entity.Dynamic;
-import com.x.teamwork.core.entity.Task;
-
-public class ActionTaskAttachmentUpload extends BaseAction {
-	
-	private static Logger logger = LoggerFactory.getLogger(ActionTaskAttachmentUpload.class);
-
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, 
-			String taskId, String site, byte[] bytes, FormDataContentDisposition disposition) {
-		ActionResult<Wo> result = new ActionResult<>();
-		Attachment attachment = null;
-		Task task = null;
-		StorageMapping mapping = null;
-		String fileName = null;
-		Boolean check = true;		
-		Wo wo = new Wo();
-		
-		if( check ){
-			if( StringUtils.isEmpty( taskId ) ){
-				check = false;
-				Exception exception = new ExceptionTaskIdEmpty( );
-				result.error( exception );
-			}
-		}
-		
-		if( check ){//判断工作信息是否已经存在
-			try {
-				task = taskQueryService.get( taskId );
-				if (null == task) {
-					check = false;
-					Exception exception = new ExceptionTaskNotExists( taskId );
-					result.error( exception );
-				}
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-				logger.error( e, effectivePerson, request, null );
-			}
-		}
-		
-		if( check ){
-			try {
-				fileName = FilenameUtils.getName(new String(disposition.getFileName().getBytes(DefaultCharset.name_iso_8859_1), DefaultCharset.name));
-				/** 禁止不带扩展名的文件上传 */
-				if (StringUtils.isEmpty(fileName)) {
-					check = false;
-					Exception exception = new ExceptionEmptyExtension( fileName );
-					result.error( exception );
-				} 
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-			}
-		}
-		
-		if( check ){
-			try {
-				mapping = ThisApplication.context().storageMappings().random( Attachment.class );
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-				logger.warn( "系统在获取存储的时候发生异常!" );
-				logger.error( e, effectivePerson, request, null );
-			}
-		}
-		
-		if( check ){
-			try {
-				attachment = this.concreteAttachment( mapping, task, fileName, effectivePerson, site );
-				attachment.saveContent(mapping, bytes, fileName);
-				attachment = attachmentPersistService.saveAttachment( task, attachment );
-				wo.setId( attachment.getId() );				
-			} catch (Exception e) {
-				check = false;
-				result.error( e );
-				logger.warn( "系统在保存附件和更新附件数据时候发生异常!" );
-				logger.error( e, effectivePerson, request, null );
-			}
-		}
-		
-		if (check) {
-			try {
-				Dynamic dynamic = dynamicPersistService.uploadAttachmentDynamic(attachment, effectivePerson);
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					wo.setDynamics(dynamics);
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		result.setData(wo);
-		return result;
-	}
-
-	private Attachment concreteAttachment(StorageMapping mapping, Task task, String name, EffectivePerson effectivePerson, String site) throws Exception {
-		Attachment attachment = new Attachment();
-		String fileName = UUID.randomUUID().toString();
-		String extension = FilenameUtils.getExtension( name );
-		if ( StringUtils.isNotEmpty(extension)) {
-			fileName = fileName + "." + extension;
-		}else{
-			throw new Exception("file extension is empty.");
-		}
-		if( name.indexOf( "\\" ) >0 ){
-			name = StringUtils.substringAfterLast( name, "\\");
-		}
-		if( name.indexOf( "/" ) >0 ){
-			name = StringUtils.substringAfterLast( name, "/");
-		}
-		attachment.setCreateTime( new Date() );
-		attachment.setLastUpdateTime( new Date() );
-		attachment.setExtension( extension );
-		attachment.setName( name );
-		attachment.setFileName( fileName );
-		attachment.setStorage( mapping.getName() );
-		attachment.setProjectId( task.getProject() );
-		attachment.setTaskId( task.getId() );
-		attachment.setBundleObjType("TASK") ;
-		attachment.setCreatorUid( effectivePerson.getDistinguishedName() );
-		attachment.setSite( site );
-		attachment.setFileHost( "" );
-		attachment.setFilePath( "" );
-		return attachment;
-	}
-
-	public static class Wo extends WoId {
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-	}
-	
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-}

+ 0 - 193
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/AttachmentAction.java

@@ -1,193 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.container.Suspended;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-
-import com.x.base.core.project.annotation.JaxrsDescribe;
-import com.x.base.core.project.annotation.JaxrsMethodDescribe;
-import com.x.base.core.project.annotation.JaxrsParameterDescribe;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.http.HttpMediaType;
-import com.x.base.core.project.jaxrs.ResponseFactory;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-
-@Path( "attachment" )
-@JaxrsDescribe("工作任务附件信息管理服务")
-public class AttachmentAction extends StandardJaxrsAction{
-	
-	private static  Logger logger = LoggerFactory.getLogger( AttachmentAction.class );
-
-	@JaxrsMethodDescribe(value = "根据项目ID获取工作附件信息列表", action = ActionListWithProject.class)
-	@GET
-	@Path( "list/project/{id}" )
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listByProjectId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("项目ID") @PathParam( "id" ) String id) {
-		EffectivePerson effectivePerson = this.effectivePerson( request );
-		ActionResult<List<ActionListWithProject.Wo>> result = new ActionResult<>();
-		try {
-			result = new ActionListWithProject().execute( request, effectivePerson, id );
-		} catch (Exception e) {
-			result = new ActionResult<>();
-			logger.warn( "系统根据项目ID获取项目所有附件信息过程发生异常。" );
-			logger.error( e, effectivePerson, request, null);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "根据工作ID获取工作附件信息列表", action = ActionListWithTask.class)
-	@GET
-	@Path( "list/task/{id}" )
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listByTaskId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("工作ID") @PathParam( "id" ) String id) {
-		EffectivePerson effectivePerson = this.effectivePerson( request );
-		ActionResult<List<ActionListWithTask.Wo>> result = new ActionResult<>();
-		try {
-			result = new ActionListWithTask().execute( request, effectivePerson, id );
-		} catch (Exception e) {
-			result = new ActionResult<>();
-			logger.warn( "系统根据工作ID获取工作所有附件信息过程发生异常。" );
-			logger.error( e, effectivePerson, request, null);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "根据ID删除附件信息对象", action = ActionDelete.class)
-	@DELETE
-	@Path( "{id}" )
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void delete( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("附件ID") @PathParam( "id" ) String id) {
-		EffectivePerson effectivePerson = this.effectivePerson( request );
-		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
-		try {
-			result = new ActionDelete().execute( request, effectivePerson, id );
-		} catch (Exception e) {
-			result = new ActionResult<>();
-			logger.warn( "系统根据ID删除附件信息对象过程发生异常。" );
-			logger.error( e, effectivePerson, request, null);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "根据ID获取附件信息对象", action = ActionGet.class)
-	@GET
-	@Path( "{id}" )
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("附件信息ID") @PathParam( "id" ) String id) {
-		EffectivePerson effectivePerson = this.effectivePerson( request );
-		ActionResult<ActionGet.Wo> result = new ActionResult<>();
-		try {
-			result = new ActionGet().execute( request, effectivePerson, id );
-		} catch (Exception e) {
-			result = new ActionResult<>();
-			logger.warn( "系统根据ID获取附件信息对象过程发生异常。" );
-			logger.error( e, effectivePerson, request, null);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "根据ID下载指定附件", action = ActionDownload.class)
-	@GET
-	@Path("download/{id}")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void downLoad(@Suspended final AsyncResponse asyncResponse,
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("附件信息ID") @PathParam("id") String id) {
-		ActionResult<ActionDownload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownload().execute(request, effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
-	@JaxrsMethodDescribe(value = "下载指定附件,设定是否使用stream输出", action = ActionDownloadStream.class)
-	@GET
-	@Path("download/{id}/stream/{stream}")
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void downloadStream(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("附件信息ID") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("用.APPLICATION_OCTET_STREAM头输出") @PathParam("stream") Boolean stream) {
-		ActionResult<ActionDownloadStream.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDownloadStream().execute(request, effectivePerson, id, stream);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "上传项目信息附件.", action = ActionProjectAttachmentUpload.class)
-	@POST
-	@Path("upload/project/{id}/site/{site}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void projectAttachmentUpload(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("项目信息ID") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("位置") @PathParam("site") String site, 
-			@FormDataParam(FILE_FIELD) final byte[] bytes,
-			@FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionProjectAttachmentUpload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionProjectAttachmentUpload().execute(request, effectivePerson, id, site, bytes, disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "为工作信息上传附件.", action = ActionTaskAttachmentUpload.class)
-	@POST
-	@Path("upload/task/{id}/site/{site}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void taskAttachmentUpload(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("工作任务ID") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("位置") @PathParam("site") String site, 
-			@FormDataParam(FILE_FIELD) final byte[] bytes,
-			@FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
-		ActionResult<ActionTaskAttachmentUpload.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionTaskAttachmentUpload().execute(request, effectivePerson, id, site, bytes, disposition);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/AttachmentNotExistsException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class AttachmentNotExistsException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public AttachmentNotExistsException( String id ) {
-		super("指定ID的附件信息记录不存在。ID:" + id );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/AttachmentQueryByIdException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class AttachmentQueryByIdException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public AttachmentQueryByIdException( Throwable e, String id ) {
-		super("查询指定ID的附件信息时发生异常。ID:" + id, e );
-	}
-}

+ 0 - 25
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/BaseAction.java

@@ -1,25 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.teamwork.assemble.control.service.AttachmentPersistService;
-import com.x.teamwork.assemble.control.service.AttachmentQueryService;
-import com.x.teamwork.assemble.control.service.DynamicPersistService;
-import com.x.teamwork.assemble.control.service.ProjectQueryService;
-import com.x.teamwork.assemble.control.service.TaskPersistService;
-import com.x.teamwork.assemble.control.service.TaskQueryService;
-
-public class BaseAction extends StandardJaxrsAction {		
-	
-	protected AttachmentPersistService attachmentPersistService = new AttachmentPersistService();
-	
-	protected AttachmentQueryService attachmentQueryService = new AttachmentQueryService();
-	
-	protected 	TaskQueryService taskQueryService = new TaskQueryService();
-	
-	protected 	ProjectQueryService projectQueryService = new ProjectQueryService();
-	
-	protected DynamicPersistService dynamicPersistService = new DynamicPersistService();
-	
-	protected 	TaskPersistService taskPersistService = new TaskPersistService();
-	
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentDelete.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionAttachmentDelete extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionAttachmentDelete( Throwable e, String id ) {
-		super("系统根据id删除附件信息时发生异常。ID:" + id, e );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentIdEmpty.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionAttachmentIdEmpty extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionAttachmentIdEmpty() {
-		super("id为空,无法继续进行查询操作。");
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentNotExists.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionAttachmentNotExists extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionAttachmentNotExists( String id ) {
-		super("指定id的附件信息不存在,无法继续进行操作。ID:" + id );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionAttachmentQueryById.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionAttachmentQueryById extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionAttachmentQueryById( Throwable e, String id ) {
-		super("系统根据id查询附件信息时发生异常。ID:" + id, e );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionEmptyExtension.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionEmptyExtension extends PromptException {
-
-	private static final long serialVersionUID = 4132300948670472899L;
-
-	public ExceptionEmptyExtension(String name) {
-		super("不能上传文件扩展名为空的文件: {}.", name);
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionProjectIdEmpty.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionProjectIdEmpty extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionProjectIdEmpty() {
-		super("项目id为空,无法继续进行查询操作。");
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionProjectNotExists.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionProjectNotExists extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionProjectNotExists( String id ) {
-		super("指定id的项目信息不存在,无法继续进行操作。ID:" + id );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionQueryProjectById.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionQueryProjectById extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionQueryProjectById( Throwable e, String id ) {
-		super("系统根据id查询项目信息时发生异常。ID:" + id, e );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionTaskIdEmpty.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionTaskIdEmpty extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionTaskIdEmpty() {
-		super("工作任务id为空,无法继续进行查询操作。");
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/attachment/ExceptionTaskNotExists.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.attachment;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionTaskNotExists extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionTaskNotExists( String id ) {
-		super("指定ID的工作任务信息记录不存在。ID:" + id );
-	}
-}

+ 0 - 218
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionCreate.java

@@ -1,218 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.google.gson.JsonElement;
-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.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.teamwork.assemble.control.service.MessageFactory;
-import com.x.teamwork.core.entity.Chat;
-import com.x.teamwork.core.entity.Dynamic;
-import com.x.teamwork.core.entity.Task;
-
-public class ActionCreate extends BaseAction {
-
-	private static  Logger logger = LoggerFactory.getLogger(ActionCreate.class);
-
-	protected ActionResult<Wo> execute(HttpServletRequest request, EffectivePerson effectivePerson, JsonElement jsonElement ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Chat chat = null;
-		Task task = null;
-		Wi wi = null;
-		Wo wo = new Wo();
-		Boolean check = true;
-
-		try {
-			wi = this.convertToWrapIn( jsonElement, Wi.class );
-			chat = Wi.copier.copy( wi );
-		} catch (Exception e) {
-			check = false;
-			Exception exception = new ChatPersistException(e, "系统在将JSON信息转换为对象时发生异常。JSON:" + jsonElement.toString());
-			result.error(exception);
-			logger.error(e, effectivePerson, request, null);
-		}
-		
-		if (check) {
-			if( StringUtils.isEmpty( wi.getTaskId() )) {
-				check = false;
-				Exception exception = new TaskIDEmptyException();
-				result.error(exception);
-			}
-		}		
-		if (check) {
-			if( StringUtils.isEmpty( wi.getContent() )) {
-				check = false;
-				Exception exception = new ChatContentEmptyException();
-				result.error(exception);
-			}
-		}		
-		if (check) {
-			if( StringUtils.isEmpty( wi.getSender() )) {
-				chat.setSender( effectivePerson.getDistinguishedName() );
-			}
-		}
-		
-		if (check) {
-			try {
-				task = taskQueryService.get( wi.getTaskId() );
-				if ( task == null) {
-					check = false;
-					Exception exception = new TaskNotExistsException( wi.getTaskId() );
-					result.error( exception );
-				}else {
-					chat.setProjectId( task.getProject() );
-					chat.setProjectTitle( task.getProjectName() );
-					chat.setTaskTitle( task.getName() );
-				}
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatPersistException(e, "根据ID查询工作任务信息对象时发生异常。ID:" + wi.getTaskId());
-				result.error(exception);
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		
-		if (check) {
-			try {
-				String lobContent = wi.getContent();
-				if( wi.getContent().length() > 70 ) {
-					chat.setIsLob( true );
-					chat.setContent( wi.getContent().substring(0, 70) + "...");
-				}
-				
-				chat = chatPersistService.create( effectivePerson, chat, lobContent );
-				
-				// 更新缓存
-				ApplicationCache.notify( Chat.class );
-				
-				wo.setId( chat.getId() );
-				
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatPersistException(e, "工作评论信息保存时发生异常。");
-				result.error(exception);
-				logger.error(e, effectivePerson, request, null);
-			}			
-		}
-		
-		if (check) {
-			try {
-				MessageFactory.message_to_chat( chat );
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		
-		if (check) {
-			try {
-				Dynamic dynamic = dynamicPersistService.chatPublishDynamic( chat, effectivePerson,  jsonElement.toString() );
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					if( wo != null ) {
-						wo.setDynamics(dynamics);
-					}
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		result.setData( wo );
-		return result;
-	}	
-
-	public static class Wi {
-		
-		public static WrapCopier<Wi, Chat> copier = WrapCopierFactory.wi( Wi.class, Chat.class, null, null );
-
-		@FieldDescribe("所属工作ID,<font style='color:red'>必填</font>")
-		private String taskId = null;
-		
-		@FieldDescribe("交流内容,<font style='color:red'>必填</font>" )
-		private String content = null;
-		
-		@FieldDescribe("发送者,非必填")
-		private String sender = null;
-
-		@FieldDescribe("目标者,非必填")
-		private String target = null;		
-
-		public String getTaskId() {
-			return taskId;
-		}
-
-		public void setTaskId(String taskId) {
-			this.taskId = taskId;
-		}
-
-		public String getSender() {
-			return sender;
-		}
-
-		public void setSender(String sender) {
-			this.sender = sender;
-		}
-
-		public String getTarget() {
-			return target;
-		}
-
-		public void setTarget(String target) {
-			this.target = target;
-		}
-
-		public String getContent() {
-			return content;
-		}
-
-		public void setContent(String content) {
-			this.content = content;
-		}
-	}
-
-	public static class Wo extends WoId {
-		
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-		
-	}
-	
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-	
-}

+ 0 - 119
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionDelete.java

@@ -1,119 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-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.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.teamwork.core.entity.Chat;
-import com.x.teamwork.core.entity.Dynamic;
-
-public class ActionDelete extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionDelete.class);
-
-	protected ActionResult<Wo> execute(HttpServletRequest request, EffectivePerson effectivePerson, String id) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Chat chat = null;
-		Boolean check = true;
-		Wo wo = new Wo();
-
-		if ( StringUtils.isEmpty( id ) ) {
-			check = false;
-			Exception exception = new ChatFlagForQueryEmptyException();
-			result.error( exception );
-		}
-
-		if (check) {
-			try {
-				chat = chatQueryService.get( id );
-				if ( chat == null) {
-					check = false;
-					Exception exception = new ChatNotExistsException( id );
-					result.error( exception );
-				}
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatQueryException(e, "根据指定flag查询工作交流信息对象时发生异常。ID:" + id);
-				result.error(exception);
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		
-		if (check) {
-			try {
-				chatPersistService.delete( id, effectivePerson );				
-				// 更新缓存
-				ApplicationCache.notify( Chat.class );
-				
-				wo.setId( chat.getId() );
-				
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatQueryException(e, "根据指定flag删除工作交流信息对象时发生异常。ID:" + id);
-				result.error(exception);
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		if (check) {
-			try {					
-				Dynamic dynamic = dynamicPersistService.chatDeleteDynamic( chat, effectivePerson);
-				if( dynamic != null ) {
-					List<WoDynamic> dynamics = new ArrayList<>();
-					dynamics.add( WoDynamic.copier.copy( dynamic ) );
-					if( wo != null ) {
-						wo.setDynamics(dynamics);
-					}
-				}
-			} catch (Exception e) {
-				logger.error(e, effectivePerson, request, null);
-			}	
-		}
-		result.setData( wo );
-		return result;
-	}
-
-	public static class Wo extends WoId {
-		
-		@FieldDescribe("操作引起的动态内容")
-		List<WoDynamic> dynamics = new ArrayList<>();
-
-		public List<WoDynamic> getDynamics() {
-			return dynamics;
-		}
-
-		public void setDynamics(List<WoDynamic> dynamics) {
-			this.dynamics = dynamics;
-		}
-		
-	}
-	
-	public static class WoDynamic extends Dynamic{
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static WrapCopier<Dynamic, WoDynamic> copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible);
-		
-		private Long rank = 0L;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}		
-	}
-}

+ 0 - 70
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionGet.java

@@ -1,70 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.core.entity.Chat;
-
-public class ActionGet extends BaseAction {
-	
-	private Logger logger = LoggerFactory.getLogger( ActionGet.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Wo wrap = null;
-		Chat chat = null;
-		Boolean check = true;
-		
-		if( check ){
-			if( id == null || id.isEmpty() ){
-				check = false;
-				Exception exception = new ChatIDEmptyException();
-				result.error( exception );
-			}
-		}
-
-		if( check ){
-			try {
-				chat = chatQueryService.get( id );
-				if( chat == null ) {
-					check = false;
-					Exception exception = new ChatNotExistsException(id);
-					result.error( exception );
-				}
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatQueryException( e, "系统根据ID查询指定工作评论信息时发生异常.ID:" + id );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		
-		if( check ){
-			try {
-				wrap = Wo.copier.copy( chat );
-				result.setData( wrap );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatQueryException( e, "将查询结果转换为可以输出的信息时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-
-	public static class Wo extends Chat  {
-		private static final long serialVersionUID = -5076990764713538973L;		
-		public static List<String> Excludes = new ArrayList<String>();		
-		public static WrapCopier<Chat, Wo> copier = WrapCopierFactory.wo( Chat.class, Wo.class, null,Wo.Excludes);
-	}
-
-}

+ 0 - 58
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionGetContent.java

@@ -1,58 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.jaxrs.WoText;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-
-public class ActionGetContent extends BaseAction {
-	
-	private Logger logger = LoggerFactory.getLogger( ActionGetContent.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Wo wrap = null;
-		String chatContent = null;
-		Boolean check = true;
-		
-		if( check ){
-			if( id == null || id.isEmpty() ){
-				check = false;
-				Exception exception = new ChatIDEmptyException();
-				result.error( exception );
-			}
-		}
-
-		if( check ){
-			try {
-				chatContent = chatQueryService.getContent( id );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatQueryException( e, "系统根据ID查询指定工作评论信息内容时发生异常.ID:" + id );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		
-		if( check ){
-			try {
-				wrap = new Wo();
-				wrap.setText( chatContent );
-				result.setData( wrap );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ChatQueryException( e, "将查询结果转换为可以输出的信息时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-
-	public static class Wo extends WoText  {
-	}
-
-}

+ 0 - 92
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ActionListNextWithFilter.java

@@ -1,92 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-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.core.entity.Chat;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-
-public class ActionListNextWithFilter extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(ActionListNextWithFilter.class);
-
-	protected ActionResult<List<Wo>> execute( HttpServletRequest request, EffectivePerson effectivePerson, String flag, Integer count, JsonElement jsonElement ) throws Exception {
-		ActionResult<List<Wo>> result = new ActionResult<>();
-		List<Wo> wos = new ArrayList<>();
-		Wi wrapIn = null;		
-		Boolean check = true;
-		QueryFilter  queryFilter = null;
-		
-		if ( StringUtils.isEmpty( flag ) || "(0)".equals(flag)) {
-			flag = null;
-		}
-		
-		try {
-			wrapIn = this.convertToWrapIn(jsonElement, Wi.class);
-		} catch (Exception e) {
-			check = false;
-			Exception exception = new ChatQueryException(e, "系统在将JSON信息转换为对象时发生异常。JSON:" + jsonElement.toString());
-			result.error(exception);
-			logger.error(e, effectivePerson, request, null);
-		}
-
-		if( check ) {
-			queryFilter = wrapIn.getQueryFilter();
-		}
-		
-		if( check ) {
-			try {
-				Long total = chatQueryService.countWithFilter( queryFilter );
-				List<Chat>  chatList = chatQueryService.listWithFilterNext( count, flag, wrapIn.getOrderField(), wrapIn.getOrderType(), queryFilter );
-				
-				if( ListTools.isNotEmpty( chatList )) {
-					wos = Wo.copier.copy(chatList);
-				}				
-				result.setCount( total );
-				result.setData( wos );
-			} catch (Exception e) {
-				check = false;
-				logger.warn("系统查询项目信息列表时发生异常!");
-				result.error(e);
-				logger.error(e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-	
-	public static class Wi extends WrapInQueryChat{
-	}
-	
-	public static class Wo extends Chat {
-
-		private Long rank;
-
-		public Long getRank() {
-			return rank;
-		}
-
-		public void setRank(Long rank) {
-			this.rank = rank;
-		}
-
-		private static final long serialVersionUID = -5076990764713538973L;
-
-		public static List<String> Excludes = new ArrayList<String>();
-
-		static WrapCopier<Chat, Wo> copier = WrapCopierFactory.wo( Chat.class, Wo.class, null, ListTools.toList(JpaObject.FieldsInvisible));
-
-	}
-}

+ 0 - 28
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/BaseAction.java

@@ -1,28 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.teamwork.assemble.control.service.ChatPersistService;
-import com.x.teamwork.assemble.control.service.ChatQueryService;
-import com.x.teamwork.assemble.control.service.DynamicPersistService;
-import com.x.teamwork.assemble.control.service.SystemConfigQueryService;
-import com.x.teamwork.assemble.control.service.TaskQueryService;
-import com.x.teamwork.core.entity.Chat;
-
-import net.sf.ehcache.Ehcache;
-
-public class BaseAction extends StandardJaxrsAction {
-
-	protected Ehcache chatCache = ApplicationCache.instance().getCache( Chat.class );
-	
-	protected 	ChatQueryService chatQueryService = new ChatQueryService();
-	
-	protected 	ChatPersistService chatPersistService = new ChatPersistService();
-	
-	protected 	TaskQueryService taskQueryService = new TaskQueryService();
-	
-	protected 	DynamicPersistService dynamicPersistService = new DynamicPersistService();
-	
-	protected 	SystemConfigQueryService systemConfigQueryService = new SystemConfigQueryService();
-	
-}

+ 0 - 137
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatAction.java

@@ -1,137 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.container.Suspended;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.project.annotation.JaxrsDescribe;
-import com.x.base.core.project.annotation.JaxrsMethodDescribe;
-import com.x.base.core.project.annotation.JaxrsParameterDescribe;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.http.HttpMediaType;
-import com.x.base.core.project.jaxrs.ResponseFactory;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-
-@Path("chat")
-@JaxrsDescribe("工作评论流信息管理")
-public class ChatAction extends StandardJaxrsAction {
-
-	private Logger logger = LoggerFactory.getLogger(ChatAction.class);
-	
-	@JaxrsMethodDescribe( value = "根据ID获取评论信息", action = ActionGet.class )
-	@GET
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, @JaxrsParameterDescribe("评论信息ID") @PathParam("id") String id) {
-		ActionResult<ActionGet.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		Boolean check = true;
-		if(check){
-			try {
-				result = new ActionGet().execute( request, effectivePerson, id );
-			} catch (Exception e) {
-				result = new ActionResult<>();
-				Exception exception = new ChatQueryException( e, "根据ID获取评论信息时发生异常!" );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}	
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe( value = "根据ID获取评论信息文字内容", action = ActionGetContent.class )
-	@GET
-	@Path("{id}/content")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void getContent( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, @JaxrsParameterDescribe("评论信息ID") @PathParam("id") String id) {
-		ActionResult<ActionGetContent.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		Boolean check = true;
-		if(check){
-			try {
-				result = new ActionGetContent().execute( request, effectivePerson, id );
-			} catch (Exception e) {
-				result = new ActionResult<>();
-				Exception exception = new ChatQueryException( e, "根据ID获取工作评论信息内容时发生异常!" );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}	
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "列示评论信息,下一页.", action = ActionListNextWithFilter.class)
-	@PUT
-	@Path("list/{id}/next/{count}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void listNextWithFilter(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "id" ) String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "count" ) Integer count, 
-			@JaxrsParameterDescribe("查询过滤条件") JsonElement jsonElement ) {
-		ActionResult<List<ActionListNextWithFilter.Wo>> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionListNextWithFilter().execute(request, effectivePerson, id, count, jsonElement);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "创建一个工作交流信息.", action = ActionCreate.class)
-	@POST
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void create(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("工作交流信息") JsonElement jsonElement ) {
-		ActionResult<ActionCreate.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionCreate().execute(request, effectivePerson, jsonElement);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-	
-	@JaxrsMethodDescribe(value = "根据标识删除工作交流信息.", action = ActionDelete.class)
-	@DELETE
-	@Path("{id}")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void delete(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("标识") @PathParam("id") String id ) {
-		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new ActionDelete().execute(request, effectivePerson, id);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatContentEmptyException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ChatContentEmptyException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	ChatContentEmptyException() {
-		super("工作交流内容为空。" );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatFlagForQueryEmptyException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ChatFlagForQueryEmptyException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	ChatFlagForQueryEmptyException() {
-		super("查询的工作交流信息ID为空,无法继续查询数据。" );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatIDEmptyException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ChatIDEmptyException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	ChatIDEmptyException() {
-		super("工作评论信息ID为空。" );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatNotExistsException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ChatNotExistsException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	ChatNotExistsException( String id ) {
-		super("指定ID的工作交流信息不存在。ID:" + id );
-	}
-}

+ 0 - 20
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatPersistException.java

@@ -1,20 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ChatPersistException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	ChatPersistException( Throwable e ) {
-		super("系统在保存工作交流信息时发生异常。" , e );
-	}
-	
-	ChatPersistException( Throwable e, String message ) {
-		super("系统在保存工作交流信息时发生异常。Message:" + message, e );
-	}
-	
-	ChatPersistException( String message ) {
-		super("系统在保存工作交流信息时发生异常。Message:" + message );
-	}
-}

+ 0 - 20
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/ChatQueryException.java

@@ -1,20 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ChatQueryException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	ChatQueryException( Throwable e ) {
-		super("系统在查询工作交流信息时发生异常。" , e );
-	}
-	
-	ChatQueryException( Throwable e, String message ) {
-		super("系统在查询工作交流信息时发生异常。Message:" + message, e );
-	}
-	
-	ChatQueryException( String message ) {
-		super("系统在查询工作交流信息时发生异常。Message:" + message );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/TaskIDEmptyException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class TaskIDEmptyException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	TaskIDEmptyException() {
-		super("工作任务信息ID为空。" );
-	}
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/TaskNotExistsException.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import com.x.base.core.project.exception.PromptException;
-
-class TaskNotExistsException extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	TaskNotExistsException( String id ) {
-		super("指定ID的工作任务信息不存在。ID:" + id );
-	}
-}

+ 0 - 131
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/chat/WrapInQueryChat.java

@@ -1,131 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.chat;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.teamwork.core.entity.tools.filter.QueryFilter;
-import com.x.teamwork.core.entity.tools.filter.term.EqualsTerm;
-import com.x.teamwork.core.entity.tools.filter.term.LikeTerm;
-
-public class WrapInQueryChat {
-	
-	@FieldDescribe("用于排列的属性,非必填,默认为createTime.")
-	private String orderField = "createTime";
-
-	@FieldDescribe("排序方式:DESC | ASC,非必填,默认为DESC.")
-	private String orderType = "DESC";
-
-	@FieldDescribe("所属工作ID,非必填,过滤条件")
-	private String taskId = null;
-
-	@FieldDescribe("工作标题,非必填,过滤条件")
-	private String taskTitle = null;
-
-	@FieldDescribe("发送者,非必填,过滤条件")
-	private String sender = null;
-
-	@FieldDescribe("目标者,非必填,过滤条件")
-	private String target = null;
-
-	private Long rank = 0L;
-
-	public String getOrderField() {
-		return orderField;
-	}
-
-	public void setOrderField(String orderField) {
-		this.orderField = orderField;
-	}
-
-	public String getOrderType() {
-		return orderType;
-	}
-
-	public void setOrderType(String orderType) {
-		this.orderType = orderType;
-	}
-	
-//	public String getProjectId() {
-//		return projectId;
-//	}
-//
-//	public void setProjectId(String projectId) {
-//		this.projectId = projectId;
-//	}
-//
-//	public String getProjectTitle() {
-//		return projectTitle;
-//	}
-//
-//	public void setProjectTitle(String projectTitle) {
-//		this.projectTitle = projectTitle;
-//	}
-
-	public String getTaskId() {
-		return taskId;
-	}
-
-	public void setTaskId(String taskId) {
-		this.taskId = taskId;
-	}
-
-	public String getTaskTitle() {
-		return taskTitle;
-	}
-
-	public void setTaskTitle(String taskTitle) {
-		this.taskTitle = taskTitle;
-	}
-
-	public String getSender() {
-		return sender;
-	}
-
-	public void setSender(String sender) {
-		this.sender = sender;
-	}
-
-	public String getTarget() {
-		return target;
-	}
-
-	public void setTarget(String target) {
-		this.target = target;
-	}
-
-	public Long getRank() {
-		return rank;
-	}
-
-	public void setRank(Long rank) {
-		this.rank = rank;
-	}
-
-	/**
-	 * 根据传入的查询参数,组织一个完整的QueryFilter对象
-	 * @return
-	 */
-	public QueryFilter getQueryFilter() {
-		QueryFilter queryFilter = new QueryFilter();
-		//组织查询条件对象
-//		if( StringUtils.isNotEmpty( this.getProjectTitle() )) {
-//			queryFilter.addLikeTerm( new LikeTerm( "projectTitle", this.getProjectTitle() ) );
-//		}
-		if( StringUtils.isNotEmpty( this.getTaskTitle() )) {
-			queryFilter.addLikeTerm( new LikeTerm( "taskTitle", this.getTaskTitle() ) );
-		}
-//		if( StringUtils.isNotEmpty( this.getProjectId() )) {
-//			queryFilter.addEqualsTerm( new EqualsTerm( "projectId", this.getProjectId() ) );
-//		}
-		if( StringUtils.isNotEmpty( this.getTaskId() )) {
-			queryFilter.addEqualsTerm( new EqualsTerm( "taskId", this.getTaskId() ) );
-		}
-		if( StringUtils.isNotEmpty( this.getSender())) {
-			queryFilter.addEqualsTerm( new EqualsTerm( "sender", this.getSender() ) );
-		}
-		if( StringUtils.isNotEmpty( this.getTarget() )) {
-			queryFilter.addEqualsTerm( new EqualsTerm( "target", this.getTarget() ) );
-		}
-		return queryFilter;
-	}
-}

+ 0 - 81
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionGet.java

@@ -1,81 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.core.entity.SystemConfig;
-
-public class ActionGet extends BaseAction {
-	
-	private Logger logger = LoggerFactory.getLogger( ActionGet.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String id ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Wo wrap = null;
-		SystemConfig systemConfig = null;
-		Boolean check = true;
-		
-		if( check ){
-			if( id == null || id.isEmpty() ){
-				check = false;
-				Exception exception = new ExceptionConfigIdEmpty();
-				result.error( exception );
-			}
-		}
-
-		if( check ){
-			try {
-				systemConfig = systemConfigQueryService.get( id );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "系统根据ID查询指定考勤系统配置信息时发生异常.ID:" + id );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		
-		if( check ){
-			if( systemConfig == null ) {
-				try {
-					systemConfig = systemConfigQueryService.getByCode( id );
-				} catch (Exception e) {
-					check = false;
-					Exception exception = new ExceptionConfigInfoProcess( e, "系统根据ID查询指定考勤系统配置信息时发生异常.CODE:" + id );
-					result.error( exception );
-					logger.error( e, effectivePerson, request, null);
-				}
-			}
-		}
-		
-		if( check ){
-			try {
-				wrap = Wo.copier.copy( systemConfig );
-				result.setData( wrap );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "将所有查询到的考勤配置信息对象转换为可以输出的信息时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-
-	public static class Wo extends SystemConfig  {
-		
-		private static final long serialVersionUID = -5076990764713538973L;
-		
-		public static List<String> Excludes = new ArrayList<String>();
-		
-		public static WrapCopier<SystemConfig, Wo> copier = WrapCopierFactory.wo( SystemConfig.class, Wo.class, null,Wo.Excludes);
-	}
-
-}

+ 0 - 66
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionGetWithCode.java

@@ -1,66 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.core.entity.SystemConfig;
-
-public class ActionGetWithCode extends BaseAction {
-	
-	private Logger logger = LoggerFactory.getLogger( ActionGetWithCode.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, String code ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Wo wrap = null;
-		SystemConfig systemConfig = null;
-		Boolean check = true;
-		
-		if( check ){
-			if( code == null || code.isEmpty() ){
-				check = false;
-				Exception exception = new ExceptionConfigCodeEmpty();
-				result.error( exception );
-			}
-		}
-		if( check ){
-			try {
-				systemConfig = systemConfigQueryService.getByCode( code );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "系统根据指定的编码'CODE'查询所有符合条件的考勤系统设置信息列表时发生异常.Code:" + code );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		if( check ){
-			try {
-				wrap = Wo.copier.copy( systemConfig );
-				result.setData( wrap );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "将所有查询到的考勤配置信息对象转换为可以输出的信息时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-
-	public static class Wo extends SystemConfig  {
-		
-		private static final long serialVersionUID = -5076990764713538973L;
-		
-		public static List<String> Excludes = new ArrayList<String>();
-		
-		public static WrapCopier<SystemConfig, Wo> copier = WrapCopierFactory.wo( SystemConfig.class, Wo.class, null,Wo.Excludes);
-	}
-
-}

+ 0 - 46
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionIsManager.java

@@ -1,46 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.http.WrapOutBoolean;
-import com.x.teamwork.core.entity.SystemConfig;
-
-public class ActionIsManager extends BaseAction {
-	
-	protected ActionResult<WrapOutBoolean> execute( HttpServletRequest request, EffectivePerson effectivePerson ) throws Exception {
-		ActionResult<WrapOutBoolean> result = new ActionResult<>();
-		WrapOutBoolean wo = new WrapOutBoolean();
-		Boolean hasRole = false;
-		
-		if(effectivePerson.isManager()) {
-			hasRole = true;
-		}else {
-			try {
-				hasRole = userManagerService.isHasPlatformRole(effectivePerson.getDistinguishedName(), "TeamWorkManager");
-			}catch( Exception e) {
-				e.printStackTrace();
-			}
-		}
-		
-		wo.setValue( hasRole );
-		result.setData(wo);
-		return result;
-	}
-
-	public static class Wo extends SystemConfig  {
-		
-		private static final long serialVersionUID = -5076990764713538973L;
-		
-		public static List<String> Excludes = new ArrayList<String>();
-		
-		public static WrapCopier<SystemConfig, Wo> copier = WrapCopierFactory.wo( SystemConfig.class, Wo.class, null,Wo.Excludes);
-	}
-
-}

+ 0 - 58
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionListAll.java

@@ -1,58 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.teamwork.core.entity.SystemConfig;
-
-public class ActionListAll extends BaseAction {
-	
-	private Logger logger = LoggerFactory.getLogger( ActionListAll.class );
-	
-	protected ActionResult<List<Wo>> execute( HttpServletRequest request, EffectivePerson effectivePerson ) throws Exception {
-		ActionResult<List<Wo>> result = new ActionResult<>();
-		List<Wo> wraps = null;
-		List<SystemConfig> systemConfigList = null;
-		Boolean check = true;
-		
-		if( check ){
-			try {
-				systemConfigList = systemConfigQueryService.listAll();
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "系统查询所有考勤系统设置信息列表时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		if( check ){
-			try {
-				wraps = Wo.copier.copy( systemConfigList );
-				result.setData(wraps);
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "将所有查询到的考勤配置信息对象转换为可以输出的信息时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-	
-	public static class Wo extends SystemConfig  {
-		
-		private static final long serialVersionUID = -5076990764713538973L;
-		
-		public static List<String> Excludes = new ArrayList<String>();
-		
-		public static WrapCopier<SystemConfig, Wo> copier = WrapCopierFactory.wo( SystemConfig.class, Wo.class, null,Wo.Excludes);
-	}
-}

+ 0 - 102
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ActionSave.java

@@ -1,102 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.google.gson.JsonElement;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
-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.teamwork.core.entity.SystemConfig;
-
-public class ActionSave extends BaseAction {
-	
-	private static Logger logger = LoggerFactory.getLogger( ActionSave.class );
-	
-	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, JsonElement jsonElement ) throws Exception {
-		ActionResult<Wo> result = new ActionResult<>();
-		Wi wrapIn = null;
-		SystemConfig systemConfig = new SystemConfig();
-		Boolean check = true;
-		
-		try {
-			wrapIn = this.convertToWrapIn( jsonElement, Wi.class );
-		} catch (Exception e ) {
-			check = false;
-			Exception exception = new ExceptionConfigInfoProcess( e, "Json格式错误:"+jsonElement.toString() );
-			result.error( exception );
-			logger.error( e, effectivePerson, request, null);
-		}
-		if( check ){
-			if( wrapIn.getConfigCode() == null || wrapIn.getConfigCode().isEmpty() ){
-				check = false;
-				Exception exception = new ExceptionConfigCodeEmpty();
-				result.error( exception );
-			}
-		}
-		if( check ){
-			if( wrapIn.getConfigName() == null || wrapIn.getConfigName().isEmpty() ){
-				check = false;
-				Exception exception = new ExceptionConfigNameEmpty();
-				result.error( exception );
-			}
-		}
-		if( check ){
-			try {
-				systemConfig = Wi.copier.copy( wrapIn );
-				if( wrapIn.getId() != null && !wrapIn.getId().isEmpty() ){
-					systemConfig.setId( wrapIn.getId() );
-				}
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "系统将用户传入的数据转换为考勤系统配置对象时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		if( check ){
-			try {
-				systemConfig = systemConfigPersistService.save( systemConfig );
-				result.setData( new Wo( systemConfig.getId() ) );
-			} catch (Exception e) {
-				check = false;
-				Exception exception = new ExceptionConfigInfoProcess( e, "保存考勤系统配置信息时发生异常." );
-				result.error( exception );
-				logger.error( e, effectivePerson, request, null);
-			}
-		}
-		return result;
-	}
-	
-	public static class Wi extends SystemConfig {
-		
-		private static final long serialVersionUID = -5076990764713538973L;
-		
-		public static List<String> Excludes = new ArrayList<String>(JpaObject.FieldsUnmodify);
-		
-		public static WrapCopier< Wi, SystemConfig > copier = WrapCopierFactory.wi( Wi.class, SystemConfig.class, null, Wi.Excludes );
-		
-		private String identity = null;
-
-		public String getIdentity() {
-			return identity;
-		}
-
-		public void setIdentity(String identity) {
-			this.identity = identity;
-		}
-	}
-	
-	public static class Wo extends WoId {
-		public Wo( String id ) {
-			setId( id );
-		}
-	}
-}

+ 0 - 22
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/BaseAction.java

@@ -1,22 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import com.x.base.core.project.cache.ApplicationCache;
-import com.x.base.core.project.jaxrs.StandardJaxrsAction;
-import com.x.teamwork.assemble.control.service.SystemConfigPersistService;
-import com.x.teamwork.assemble.control.service.SystemConfigQueryService;
-import com.x.teamwork.assemble.control.service.UserManagerService;
-import com.x.teamwork.core.entity.Project;
-
-import net.sf.ehcache.Ehcache;
-
-public class BaseAction extends StandardJaxrsAction{
-	
-	protected Ehcache configCache = ApplicationCache.instance().getCache( Project.class );
-	
-	protected SystemConfigQueryService systemConfigQueryService = new SystemConfigQueryService();
-	
-	protected SystemConfigPersistService systemConfigPersistService = new SystemConfigPersistService();
-	
-	protected UserManagerService userManagerService = new UserManagerService();
-
-}

+ 0 - 12
o2server/x_teamwork_assemble_control/src/main/webapp/describe/sources/com/x/teamwork/assemble/control/jaxrs/config/ExceptionConfigCodeEmpty.java

@@ -1,12 +0,0 @@
-package com.x.teamwork.assemble.control.jaxrs.config;
-
-import com.x.base.core.project.exception.PromptException;
-
-class ExceptionConfigCodeEmpty extends PromptException {
-
-	private static final long serialVersionUID = 1859164370743532895L;
-
-	public ExceptionConfigCodeEmpty() {
-		super("查询操作传入的设置编码Code为空,无法进行查询或者保存操作.");
-	}
-}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio