فهرست منبع

Merge branch 'develop' into 'master'

Develop

See merge request o2oa/o2oa!3098
胡起 4 سال پیش
والد
کامیت
ff2462c3c5
100فایلهای تغییر یافته به همراه5417 افزوده شده و 882 حذف شده
  1. 193 1
      gulpfile.js
  2. 54 0
      o2server/configSample/mock.json
  3. 7 1
      o2server/configSample/mq.json
  4. 2 3
      o2server/configSample/web.json
  5. 29 29
      o2server/pom.xml
  6. 1 1
      o2server/x_attendance_assemble_control/pom.xml
  7. 11 3
      o2server/x_attendance_assemble_control/src/main/webapp/jest/describe.js
  8. 1 1
      o2server/x_attendance_core_entity/pom.xml
  9. 1 1
      o2server/x_base_core_project/pom.xml
  10. 38 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java
  11. 5 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/entity/JsonProperties.java
  12. 0 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/AppStyle.java
  13. 8 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ApplicationServer.java
  14. 14 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Config.java
  15. 33 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/MQActive.java
  16. 13 1
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ProcessPlatform.java
  17. 100 5
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServers.java
  18. 8 3
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/gson/DoubleDeserializer.java
  19. 8 3
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/gson/FloatDeserializer.java
  20. 4 8
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/BaseTools.java
  21. 58 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/MD5Tool.java
  22. 5 4
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_cms_assemble_control.java
  23. 9 4
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_query_assemble_surface.java
  24. 1 1
      o2server/x_bbs_assemble_control/pom.xml
  25. 11 3
      o2server/x_bbs_assemble_control/src/main/webapp/jest/describe.js
  26. 1 1
      o2server/x_bbs_core_entity/pom.xml
  27. 1 1
      o2server/x_calendar_assemble_control/pom.xml
  28. 11 3
      o2server/x_calendar_assemble_control/src/main/webapp/jest/describe.js
  29. 1 1
      o2server/x_calendar_core_entity/pom.xml
  30. 5 1
      o2server/x_cms_assemble_control/pom.xml
  31. 35 15
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/Business.java
  32. 2 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java
  33. 40 30
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/CategoryInfoFactory.java
  34. 10 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/FormFactory.java
  35. 15 5
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/ScriptFactory.java
  36. 21 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/portal/PortalFactory.java
  37. 17 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/portal/ScriptFactory.java
  38. 21 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/process/ProcessFactory.java
  39. 17 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/process/ScriptFactory.java
  40. 366 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appdict/AppDictAction.java
  41. 37 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appdictdesign/AppDictDesignAction.java
  42. 108 24
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appinfo/AppInfoAction.java
  43. 26 4
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appinfo/AppInfoAnonymousAction.java
  44. 168 37
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/categoryinfo/CategoryInfoAction.java
  45. 44 21
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/categoryinfo/CategoryInfoAnonymousAction.java
  46. 99 20
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/comment/DocumentCommentInfoAction.java
  47. 405 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/data/DataAction.java
  48. 14 14
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishAndNotify.java
  49. 27 26
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishByWorkFlow.java
  50. 69 35
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishContent.java
  51. 36 40
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistSaveDocument.java
  52. 90 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistViewRecord.java
  53. 279 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAction.java
  54. 333 63
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAction2.java
  55. 60 16
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAnonymousAction.java
  56. 69 3
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentCipherAction.java
  57. 31 16
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentViewRecordAction.java
  58. 38 2
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/file/FileAction.java
  59. 219 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionFileUploadWithUrl.java
  60. 92 36
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/FileInfoAction.java
  61. 56 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/ActionSave.java
  62. 230 5
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/BaseAction.java
  63. 182 19
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/FormAction.java
  64. 76 2
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/FormAnonymousAction.java
  65. 134 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2Get.java
  66. 134 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2GetMobile.java
  67. 192 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2LookupDoc.java
  68. 194 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2LookupDocMobile.java
  69. 92 25
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/input/InputAction.java
  70. 20 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/output/OutputAction.java
  71. 32 8
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryview/QueryViewAction.java
  72. 85 13
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryviewdesign/QueryViewDesignAction.java
  73. 36 0
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/script/ScriptAction.java
  74. 36 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/templateform/TemplateFormAction.java
  75. 65 24
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/view/ViewAction.java
  76. 20 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewcategory/ViewCategoryAction.java
  77. 59 17
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewfieldconfig/ViewFieldConfigAction.java
  78. 53 53
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/queue/QueueSendDocumentNotify.java
  79. 95 29
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentViewRecordServiceAdv.java
  80. 11 3
      o2server/x_cms_assemble_control/src/main/webapp/jest/describe.js
  81. 1 1
      o2server/x_cms_core_entity/pom.xml
  82. 57 1
      o2server/x_cms_core_entity/src/main/java/com/x/cms/core/entity/element/Form.java
  83. 57 0
      o2server/x_cms_core_entity/src/main/java/com/x/cms/core/entity/element/FormProperties.java
  84. 1 1
      o2server/x_cms_core_express/pom.xml
  85. 1 1
      o2server/x_component_assemble_control/pom.xml
  86. 11 3
      o2server/x_component_assemble_control/src/main/webapp/jest/describe.js
  87. 1 1
      o2server/x_component_core_entity/pom.xml
  88. 1 1
      o2server/x_console/pom.xml
  89. 9 60
      o2server/x_console/src/main/java/com/x/server/console/NodeAgent.java
  90. 9 8
      o2server/x_console/src/main/java/com/x/server/console/action/DumpData.java
  91. 1 1
      o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java
  92. 7 96
      o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java
  93. 1 1
      o2server/x_file_assemble_control/pom.xml
  94. 11 3
      o2server/x_file_assemble_control/src/main/webapp/jest/describe.js
  95. 1 1
      o2server/x_file_core_entity/pom.xml
  96. 1 1
      o2server/x_general_assemble_control/pom.xml
  97. 11 3
      o2server/x_general_assemble_control/src/main/webapp/jest/describe.js
  98. 1 1
      o2server/x_general_core_entity/pom.xml
  99. 1 1
      o2server/x_hotpic_assemble_control/pom.xml
  100. 11 3
      o2server/x_hotpic_assemble_control/src/main/webapp/jest/describe.js

+ 193 - 1
gulpfile.js

@@ -506,6 +506,101 @@ function build_concat_xform(){
         .pipe(gulp.dest(dest))
 }
 
+function build_concat_cms_xform(){
+    let processPath = "x_component_process_Xform";
+    let path = "x_component_cms_Xform";
+    var src = [
+        'o2web/source/o2_core/o2/widget/AttachmentController.js',
+        // 'source/o2_core/o2/xScript/CMSEnvironment.js',
+        'o2web/source/o2_core/o2/xScript/CMSMacro.js',
+        'o2web/source/o2_core/o2/widget/Tab.js',
+        'o2web/source/o2_core/o2/widget/O2Identity.js',
+        'o2web/source/' + processPath + '/Form.js',
+        'o2web/source/' + processPath + '/$Module.js',
+        'o2web/source/' + processPath + '/$Input.js',
+        'o2web/source/' + processPath + '/Div.js',
+        //'source/' + processPath + '/Combox.js',
+        'o2web/source/' + processPath + '/DatagridMobile.js',
+        'o2web/source/' + processPath + '/DatagridPC.js',
+        'o2web/source/' + processPath + '/Textfield.js',
+        //'source/' + processPath + '/Personfield.js',
+        'o2web/source/' + processPath + '/Button.js',
+        //'source/' + processPath + '/ViewSelector.js',
+        'o2web/source/' + processPath + '/Org.js',
+        // 'source/' + processPath + '/*.js',
+        'o2web/source/' + processPath + '/Actionbar.js',
+        //'source/' + processPath + '/Address.js',
+        'o2web/source/' + processPath + '/Attachment.js',
+        'o2web/source/' + processPath + '/Calendar.js',
+        'o2web/source/' + processPath + '/Checkbox.js',
+        'o2web/source/' + processPath + '/Datagrid.js',
+        'o2web/source/' + processPath + '/Htmleditor.js',
+        //'source/' + processPath + '/Iframe.js',
+        'o2web/source/' + processPath + '/Label.js',
+        'o2web/source/' + processPath + '/Number.js',
+        'o2web/source/' + processPath + '/Common.js',
+        'o2web/source/' + processPath + '/Image.js',
+        'o2web/source/' + processPath + '/ImageClipper.js',
+        'o2web/source/' + processPath + '/Html.js',
+        'o2web/source/' + processPath + '/Radio.js',
+        'o2web/source/' + processPath + '/Select.js',
+        //'source/' + processPath + '/Stat.js',
+        //'source/' + processPath + '/Statement.js',
+        //'source/' + processPath + '/StatementSelector.js',
+        //'source/' + processPath + '/Subform.js',
+        'o2web/source/' + processPath + '/Tab.js',
+        'o2web/source/' + processPath + '/Table.js',
+        'o2web/source/' + processPath + '/Textarea.js',
+        //'source/' + processPath + '/Tree.js',
+        //'source/' + processPath + '/View.js',
+        // 'source/x_component_process_Work/Processor.js',
+        // '!source/' + processPath + '/Office.js'
+
+
+        'o2web/source/o2_core/o2/widget/SimpleToolbar.js',
+        'o2web/source/' + path + '/ModuleImplements.js',
+        'o2web/source/' + path + '/Package.js',
+        'o2web/source/' + path + '/Form.js',
+        //'source/' + path + '/widget/Comment.js',
+        'o2web/source/' + path + '/widget/Log.js',
+        'o2web/source/' + path + '/Org.js',
+        'o2web/source/' + path + '/Author.js',
+        'o2web/source/' + path + '/Reader.js',
+        'o2web/source/' + path + '/Textfield.js',
+        'o2web/source/' + path + '/Actionbar.js',
+        'o2web/source/' + path + '/Attachment.js',
+        'o2web/source/' + path + '/Button.js',
+        'o2web/source/' + path + '/Calendar.js',
+        'o2web/source/' + path + '/Checkbox.js',
+        'o2web/source/' + path + '/Datagrid.js',
+        'o2web/source/' + path + '/Htmleditor.js',
+        'o2web/source/' + path + '/ImageClipper.js',
+        'o2web/source/' + path + '/Label.js',
+        'o2web/source/' + path + '/Number.js',
+        'o2web/source/' + path + '/Radio.js',
+        'o2web/source/' + path + '/Select.js',
+        'o2web/source/' + path + '/Tab.js',
+        'o2web/source/' + path + '/Table.js',
+        'o2web/source/' + path + '/Textarea.js'
+        //'source/' + path + '/Personfield.js',
+        //'source/' + path + '/Readerfield.js',
+        //'source/' + path + '/Authorfield.js',
+        //'source/' + path + '/Orgfield.js',
+        // 'source/' + path + '/*.js',
+        // '!source/' + path + '/Office.js'
+    ];
+    var dest = 'target/o2server/servers/webServer/'+path+'/';
+    return gulp.src(src)
+        .pipe(sourceMap.init())
+        .pipe(concat('$all.js'))
+        .pipe(gulp.dest(dest))
+        .pipe(concat('$all.min.js'))
+        .pipe(uglify())
+        //.pipe(rename({ extname: '.min.js' }))
+        .pipe(sourceMap.write(""))
+        .pipe(gulp.dest(dest))
+}
+
 function build_bundle(){
     let path = "o2_core";
     var src = [
@@ -790,14 +885,109 @@ function build_concat_baseportal_body() {
         .pipe(gulp.dest(dest));
 }
 
+
+function build_concat_basedocument_style(){
+    return gulp.src([
+        "o2web/source/x_component_cms_Document/$Main/default/css.wcss",
+        "o2web/source/x_component_cms_Xform/$Form/default/css.wcss",
+        "o2web/source/o2_core/o2/widget/$AttachmentController/default/css.wcss"
+    ])
+        .pipe(concat_Style())
+        .pipe(concat('js/base_document_style_temp.js'))
+        .pipe(gulp.dest('o2web/source/x_desktop/'));
+}
+
+function build_concat_basedocument_action(){
+    return gulp.src([
+        "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.json",
+        "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.json",
+        "o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.json",
+        "o2web/source/o2_core/o2/xAction/services/x_program_center.json",
+        "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.json"
+    ])
+        .pipe(concat_Actions())
+        .pipe(concat('js/base_document_actions_temp.js'))
+        .pipe(gulp.dest('o2web/source/x_desktop/'));
+}
+
+function build_concat_basedocument_clean(cb) {
+    var dest = [
+        'o2web/source/x_desktop/js/base_document_actions_temp.js',
+        'o2web/source/x_desktop/js/base_document_style_temp.js'
+    ];
+    return del(dest, cb);
+}
+
+function build_concat_basedocument_body() {
+    var src = [
+        'o2web/source/x_desktop/js/base_concat_head.js',
+        'o2web/source/o2_core/o2/lp/'+(options.lp || 'zh-cn')+'.js',
+
+        'o2web/source/x_desktop/js/base_document_style_temp.js',
+
+        'o2web/source/o2_core/o2/widget/Common.js',
+        'o2web/source/o2_core/o2/widget/Dialog.js',
+        'o2web/source/o2_core/o2/widget/UUID.js',
+        'o2web/source/o2_core/o2/widget/Menu.js',
+        'o2web/source/o2_core/o2/widget/Mask.js',
+        'o2web/source/o2_core/o2/xDesktop/Common.js',
+        'o2web/source/o2_core/o2/xDesktop/Actions/RestActions.js',
+        'o2web/source/o2_core/o2/xAction/RestActions.js',
+        'o2web/source/o2_core/o2/xDesktop/Access.js',
+        'o2web/source/o2_core/o2/xDesktop/Dialog.js',
+        'o2web/source/o2_core/o2/xDesktop/Menu.js',
+        'o2web/source/o2_core/o2/xDesktop/UserData.js',
+        'o2web/source/x_component_Template/MPopupForm.js',
+        'o2web/source/o2_core/o2/xDesktop/Authentication.js',
+        'o2web/source/o2_core/o2/xDesktop/Window.js',
+
+        'o2web/source/x_component_Common/Main.js',
+
+        'o2web/source/x_component_cms_Document/lp/'+(options.lp || 'zh-cn')+'.js',
+        'o2web/source/x_component_process_Xform/lp/'+(options.lp || 'zh-cn')+'.js',
+        'o2web/source/x_component_Selector/lp/'+(options.lp || 'zh-cn')+'.js',
+        'o2web/source/x_component_cms_Xform/lp/'+(options.lp || 'zh-cn')+'.js',
+
+        'o2web/source/x_component_cms_Document/Main.js',
+
+        'o2web/source/x_component_Selector/package.js',
+
+        'o2web/source/o2_core/o2/xScript/Actions/UnitActions.js',
+        'o2web/source/o2_core/o2/xScript/Actions/CMSScriptActions.js',
+        'o2web/source/o2_core/o2/xScript/CMSEnvironment.js',
+
+        'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.js',
+        'o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.js',
+        'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.js',
+        'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.js',
+
+        'o2web/source/x_desktop/js/base_document_actions_temp.js',
+
+        'o2web/source/x_desktop/js/base.js',
+        'o2web/source/x_desktop/js/base_loader.js'
+    ];
+    var dest = 'target/o2server/servers/webServer/x_desktop/js/';
+    return gulp.src(src)
+        .pipe(sourceMap.init())
+        .pipe(concat('base_document.js'))
+        .pipe(gulp.dest(dest))
+        .pipe(concat('base_document.min.js'))
+        .pipe(uglify())
+        //.pipe(rename({ extname: '.min.js' }))
+        .pipe(sourceMap.write(""))
+        .pipe(gulp.dest(dest));
+}
+
 exports.build_concat = gulp.parallel(
     build_concat_o2,
     build_concat_base,
     build_concat_desktop,
     build_concat_xform,
+    build_concat_cms_xform,
     build_bundle,
     gulp.series(build_concat_basework_style, build_concat_basework_action, build_concat_basework_body,build_concat_basework_clean),
-    gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean)
+    gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean),
+    gulp.series(build_concat_basedocument_style, build_concat_basedocument_action, build_concat_basedocument_body,build_concat_basedocument_clean)
 );
 
 function getGitV(){
@@ -953,8 +1143,10 @@ exports.build_web = gulp.series(
         build_concat_base,
         build_concat_desktop,
         build_concat_xform,
+        build_concat_cms_xform,
         gulp.series(build_concat_basework_style, build_concat_basework_action, build_concat_basework_body,build_concat_basework_clean),
         gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean),
+        gulp.series(build_concat_basedocument_style, build_concat_basedocument_action, build_concat_basedocument_body,build_concat_basedocument_clean),
         build_bundle
     ),
     build_web_v_html,

+ 54 - 0
o2server/configSample/mock.json

@@ -0,0 +1,54 @@
+{
+  "mock": {
+    "x_processplatform_assemble_surface": {
+      "put": {
+        "to": "post",
+        "append": "mockputtopost"
+      },
+      "delete": {
+        "to": "get",
+        "append": "mockdeletetoget"
+      }
+    },
+    "x_cms_assemble_control": {
+      "put": {
+        "to": "post",
+        "append": "mockputtopost"
+      },
+      "delete": {
+        "to": "get",
+        "append": "mockdeletetoget"
+      }
+    },
+    "x_query_assemble_surface": {
+      "put": {
+        "to": "post",
+        "append": "mockputtopost"
+      },
+      "delete": {
+        "to": "get",
+        "append": "mockdeletetoget"
+      }
+    },
+    "x_organization_assemble_authentication": {
+      "put": {
+        "to": "post",
+        "append": "mockputtopost"
+      },
+      "delete": {
+        "to": "get",
+        "append": "mockdeletetoget"
+      }
+    },
+    "x_organization_assemble_personal": {
+      "put": {
+        "to": "post",
+        "append": "mockputtopost"
+      },
+      "delete": {
+        "to": "get",
+        "append": "mockdeletetoget"
+      }
+    }
+  }
+}

+ 7 - 1
o2server/configSample/mq.json

@@ -23,8 +23,14 @@
   "activeMQ":{
 	   "url":"tcp://127.0.0.1:61616",
 	   "queueName":"queue-test",
+	   "keyStore":"C:/Users/wwx/client.ks",
+	   "trustStore":"C:/Users/wwx/client.ts",
+	   "keyStorePassword":"password",
 	   "###url": "服务地址,端口默认61616.###",
-	   "###queueName": "要创建的消息名称###"
+	   "###queueName": "要创建的消息名称###",
+	   "###keyStore": "密钥文件存储路径###",
+	   "###trustStore": "证书文件存储路径###",
+	   "###keyStorePassword": "密钥密码###"
   },
   "###enable": "是否启用.###",
   "###mq": "消息服务类型.###"

+ 2 - 3
o2server/configSample/web.json

@@ -1,4 +1,3 @@
 {
-  "mock": {},
-  "###mock": "使用Post模拟Put,Get模拟Delete的模块.###"
-}
+  "###web": "web端使用到的全局参数配置,没有特定业务含义,满足json格式即可.###"
+}

+ 29 - 29
o2server/pom.xml

@@ -4,7 +4,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>o2oa</groupId>
 	<artifactId>o2server</artifactId>
-	<version>5.4</version>
+	<version>6.0</version>
 	<packaging>pom</packaging>
 	<properties>
 		<maven.compiler.source>1.8</maven.compiler.source>
@@ -869,142 +869,142 @@
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_base_core_project</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_attendance_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_bbs_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_calendar_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_cms_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_cms_core_express</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_component_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_file_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_general_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_hotpic_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_meeting_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_message_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_mind_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_organization_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_jpush_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_organization_core_express</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_portal_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_processplatform_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_processplatform_core_express</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_query_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_query_core_express</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_report_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_strategydeploy_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_strategydeploy_assemble_control</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_program_center</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_program_center_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_teamwork_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>o2oa</groupId>
 				<artifactId>x_workschedu_core_entity</artifactId>
-				<version>5.4</version>
+				<version>6.0</version>
 			</dependency>
 			<dependency>
 				<groupId>net.lingala.zip4j</groupId>

+ 1 - 1
o2server/x_attendance_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_attendance_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_attendance_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_attendance_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_attendance_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 1 - 1
o2server/x_base_core_project/pom.xml

@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_base_core_project</artifactId>
 	<packaging>jar</packaging>

+ 38 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java

@@ -542,6 +542,18 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return new ArrayList<T>(query.getResultList());
 	}
 
+	public <T extends JpaObject> List<T> listEqualAndLessThanOrEqualTo(Class<T> cls, String attribute, Object value,
+			String otherAttribute, Object otherValue) throws Exception {
+		EntityManager em = this.get(cls);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<T> cq = cb.createQuery(cls);
+		Root<T> root = cq.from(cls);
+		Predicate p = cb.equal(root.get(attribute), value);
+		p = cb.and(p, cb.lessThanOrEqualTo(root.get(otherAttribute), (Comparable) otherValue));
+		List<T> os = em.createQuery(cq.select(root).where(p)).getResultList();
+		return new ArrayList<>(os);
+	}
+
 	public <T extends JpaObject, W extends Object> List<T> listBetweenAndEqual(Class<T> cls, String attribute,
 			Object start, Object end, String equalAttribute, Object equalValue) throws Exception {
 		EntityManager em = this.get(cls);
@@ -598,6 +610,16 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return list;
 	}
 
+	public <T extends JpaObject> Optional<T> first(Class<T> cls) throws Exception {
+		EntityManager em = this.get(cls);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<T> cq = cb.createQuery(cls);
+		Root<T> root = cq.from(cls);
+		cq.select(root);
+		List<T> os = em.createQuery(cq).setMaxResults(1).getResultList();
+		return os.isEmpty() ? Optional.empty() : Optional.of(os.get(0));
+	}
+
 	public <T extends JpaObject> T firstEqual(Class<T> cls, String attribute, Object value) throws Exception {
 		EntityManager em = this.get(cls);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -1688,6 +1710,22 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return list;
 	}
 
+	public <T extends JpaObject> List<T> listSequenceAfter(Class<T> clz, Integer count, String sequence)
+			throws Exception {
+		EntityManager em = this.get(clz);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<T> cq = cb.createQuery(clz);
+		Root<T> root = cq.from(clz);
+		Predicate p = cb.conjunction();
+		if (StringUtils.isNotEmpty(sequence)) {
+			p = cb.greaterThan(root.get(JpaObject.sequence_FIELDNAME), sequence);
+		}
+		cq.select(root).where(p).orderBy(cb.asc(root.get(JpaObject.sequence_FIELDNAME)));
+		List<T> os = em.createQuery(cq).setMaxResults((count != null && count > 0) ? count : 100).getResultList();
+		List<T> list = new ArrayList<>(os);
+		return list;
+	}
+
 	/* 仅在单一数据库可用 */
 	public <T extends JpaObject> List<T> fetchDescPaging(Class<T> clz, Predicate predicate, Integer page, Integer count,
 			String orderAttribute) throws Exception {

+ 5 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/entity/JsonProperties.java

@@ -6,6 +6,11 @@ import com.x.base.core.project.gson.GsonPropertyObject;
 
 public abstract class JsonProperties extends GsonPropertyObject {
 
+	private static final long serialVersionUID = -5074100033957236455L;
+
+	// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
+	// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
+	// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
 	public boolean equals(Object o) {
 		if (null == o) {
 			return false;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/AppStyle.java


+ 8 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ApplicationServer.java

@@ -22,6 +22,7 @@ public class ApplicationServer extends ConfigObject {
 	private static final Integer DEFAULT_MAXFORMCONTENT = 20;
 	private static final Boolean DEFAULT_EXPOSEJEST = true;
 	private static final Boolean DEFAULT_PERSISTENTCONNECTIONSENABLE = true;
+	private static final Integer DEFAULT_MAXTHREAD = 500;
 
 	public ApplicationServer() {
 		this.enable = true;
@@ -40,6 +41,7 @@ public class ApplicationServer extends ConfigObject {
 		this.maxFormContent = DEFAULT_MAXFORMCONTENT;
 		this.exposeJest = DEFAULT_EXPOSEJEST;
 		this.persistentConnectionsEnable = DEFAULT_PERSISTENTCONNECTIONSENABLE;
+		this.maxThread = DEFAULT_MAXTHREAD;
 	}
 
 	@FieldDescribe("是否启用")
@@ -72,6 +74,8 @@ public class ApplicationServer extends ConfigObject {
 	private Integer maxFormContent;
 	@FieldDescribe("暴露jest接口.")
 	private Boolean exposeJest;
+	@FieldDescribe("最大http线程数.")
+	private Integer maxThread;
 
 	@FieldDescribe("是否启用长连接,默认true.")
 	private Boolean persistentConnectionsEnable;
@@ -240,4 +244,8 @@ public class ApplicationServer extends ConfigObject {
 		this.excludes = excludes;
 	}
 
+	public Integer getMaxThread() {
+		return (null == this.maxThread || this.maxThread < 1) ? DEFAULT_MAXTHREAD : this.maxThread;
+	}
+
 }

+ 14 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Config.java

@@ -81,6 +81,7 @@ public class Config {
 	public static final String PATH_CONFIG_COMPONENTS = "config/components.json";
 	public static final String PATH_CONFIG_EMAIL = "config/email.json";
 	public static final String PATH_CONFIG_WEB = "config/web.json";
+	public static final String PATH_CONFIG_MOCK = "config/mock.json";
 
 	public static final String DIR_COMMONS = "commons";
 	public static final String DIR_COMMONS_TESS4J_TESSDATA = "commons/tess4j/tessdata";
@@ -1176,6 +1177,19 @@ public class Config {
 		return instance().web;
 	}
 
+	public JsonObject mock;
+
+	public static synchronized JsonObject mock() throws Exception {
+		if (null == instance().mock) {
+			JsonObject obj = BaseTools.readConfigObject(PATH_CONFIG_MOCK, JsonObject.class);
+			if (null == obj) {
+				obj = new JsonObject();
+			}
+			instance().mock = obj;
+		}
+		return instance().mock;
+	}
+
 	public Map<String, JsonObject> customConfig = new HashMap<>();
 
 	public static synchronized JsonObject customConfig(String configName) throws Exception {

+ 33 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/MQActive.java

@@ -22,6 +22,15 @@ public class MQActive extends ConfigObject {
 	@FieldDescribe("消息队列名")
 	private String queueName;
 	
+	@FieldDescribe("密钥文件存储路径")
+	private String keyStore;
+	
+	@FieldDescribe("证书文件存储路径")
+	private String trustStore;
+	
+	@FieldDescribe("密钥密码")
+	private String keyStorePassword;
+	
 	public static MQActive defaultInstance() {
 		return new MQActive();
 	}
@@ -50,6 +59,30 @@ public class MQActive extends ConfigObject {
 	public void setQueueName(String queueName) {
 		this.queueName = queueName;
 	}
+
+	public String getKeyStore() {
+		return keyStore;
+	}
+
+	public void setKeyStore(String keyStore) {
+		this.keyStore = keyStore;
+	}
+
+	public String getTrustStore() {
+		return trustStore;
+	}
+
+	public void setTrustStore(String trustStore) {
+		this.trustStore = trustStore;
+	}
+
+	public String getKeyStorePassword() {
+		return keyStorePassword;
+	}
+
+	public void setKeyStorePassword(String keyStorePassword) {
+		this.keyStorePassword = keyStorePassword;
+	}
 	
 
 	

+ 13 - 1
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ProcessPlatform.java

@@ -53,6 +53,8 @@ public class ProcessPlatform extends ConfigObject {
 
 	public static final Boolean DEFAULT_PROCESSINGSIGNALPERSISTENABLE = false;
 
+	public static final Integer DEFAULT_ASYNCHRONOUSTIMEOUT = 60;
+
 	public static ProcessPlatform defaultInstance() {
 		return new ProcessPlatform();
 	}
@@ -75,6 +77,7 @@ public class ProcessPlatform extends ConfigObject {
 		this.deleteDraft = new DeleteDraft();
 		this.passExpired = new PassExpired();
 		this.processingSignalPersistEnable = DEFAULT_PROCESSINGSIGNALPERSISTENABLE;
+		this.asynchronousTimeout = DEFAULT_ASYNCHRONOUSTIMEOUT;
 		this.attachmentConfig = new AttachmentConfig();
 	}
 
@@ -174,6 +177,15 @@ public class ProcessPlatform extends ConfigObject {
 	@FieldDescribe("流程附件上传限制大小或者类型.")
 	private AttachmentConfig attachmentConfig;
 
+	@FieldDescribe("异步超时.")
+	private Integer asynchronousTimeout;
+
+	public Integer getAsynchronousTimeout() {
+		if ((asynchronousTimeout == null) || (asynchronousTimeout < 1)) {
+			this.asynchronousTimeout = DEFAULT_ASYNCHRONOUSTIMEOUT;
+		}
+		return asynchronousTimeout;
+	}
 
 	public Boolean getProcessingSignalPersistEnable() {
 		if (processingSignalPersistEnable == null) {
@@ -451,7 +463,7 @@ public class ProcessPlatform extends ConfigObject {
 
 		public static final Boolean DEFAULT_ENABLE = false;
 
-		public static final Integer DEFAULT_THRESHOLDMINUTES = 60 * 24 * 60;
+		public static final Integer DEFAULT_THRESHOLDMINUTES = 60 * 24 * 10;
 
 		@FieldDescribe("是否启用")
 		private Boolean enable = DEFAULT_ENABLE;

+ 100 - 5
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServers.java

@@ -1,21 +1,28 @@
 package com.x.base.core.project.config;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Random;
+import java.io.File;
+import java.util.*;
 import java.util.concurrent.ConcurrentSkipListMap;
 
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.x.base.core.project.gson.XGsonBuilder;
+import com.x.base.core.project.tools.DefaultCharset;
+import com.x.base.core.project.tools.Host;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.ObjectUtils;
 
 import com.x.base.core.project.tools.ListTools;
+import org.apache.commons.lang3.StringUtils;
 
 public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
 
 	private static final long serialVersionUID = -706102090064680898L;
 
+	private static final String MAP_LOGINPAGE = "loginPage";
+
 	public WebServers() {
 		super();
 	}
@@ -66,4 +73,92 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
 		});
 	}
 
+	public static void updateWebServerConfigJson() throws Exception {
+		File dir = new File(Config.base(), "servers/webServer/x_desktop/res/config");
+		FileUtils.forceMkdir(dir);
+		File file = new File(dir, "config.json");
+
+		Gson gson = XGsonBuilder.instance();
+
+		LinkedHashMap<String, Object> map = new LinkedHashMap<>();
+		/** 覆盖掉配置的参数 */
+		com.x.base.core.project.config.CenterServer centerServerConfig = Config.nodes().centerServers().first()
+				.getValue();
+		map.putAll(centerServerConfig.getConfig());
+		List<Map<String, String>> centers = new ArrayList<>();
+		map.put("center", centers);
+		/** 写入center地址 */
+		Map<String, String> center = new HashMap<String, String>();
+		center = new HashMap<String, String>();
+		center.put("host", "");
+		center.put("port", centerServerConfig.getPort().toString());
+		centers.add(center);
+		if (!Objects.equals(centerServerConfig.getProxyPort(), centerServerConfig.getPort())) {
+			center = new HashMap<String, String>();
+			center.put("host", "");
+			center.put("port", centerServerConfig.getProxyPort().toString());
+			centers.add(center);
+		}
+		String host = Config.nodes().primaryCenterNode();
+		if (!Host.isRollback(host)) {
+			center = new HashMap<String, String>();
+			center.put("host", host);
+			center.put("port", centerServerConfig.getPort().toString());
+			centers.add(center);
+		}
+		/** 写入proxy地址 */
+		if (StringUtils.isNotEmpty(centerServerConfig.getProxyHost())) {
+			center = new HashMap<String, String>();
+			center.put("host", centerServerConfig.getProxyHost());
+			center.put("port", centerServerConfig.getProxyPort().toString());
+			centers.add(center);
+		}
+
+		/** 写入systemName */
+		map.put("footer", Config.collect().getFooter());
+		map.put("title", Config.collect().getTitle());
+		map.put("appUrl", Config.collect().getAppUrl());
+		/***/
+		if (centerServerConfig.getSslEnable()) {
+			map.put("app_protocol", "https:");
+		} else {
+			map.put("app_protocol", "http:");
+		}
+		/* 上面的无效 */
+		map.put("app_protocol", "auto");
+		if ((null != Config.portal().getLoginPage())
+				&& (BooleanUtils.isTrue(Config.portal().getLoginPage().getEnable()))) {
+			map.put(MAP_LOGINPAGE, Config.portal().getLoginPage());
+		} else if ((null != Config.person().getLoginPage())
+				&& (BooleanUtils.isTrue(Config.person().getLoginPage().getEnable()))) {
+			map.put(MAP_LOGINPAGE, Config.person().getLoginPage());
+		} else {
+			map.put(MAP_LOGINPAGE, Config.portal().getLoginPage());
+		}
+		map.put("indexPage", Config.portal().getIndexPage());
+		map.put("webSocketEnable", Config.communicate().wsEnable());
+		map.put("urlMapping", Config.portal().getUrlMapping());
+
+		/* 密码规则 */
+		map.put("passwordRegex", Config.person().getPasswordRegex());
+		map.put("passwordRegexHint", Config.person().getPasswordRegexHint());
+
+		/* RSA */
+		File publicKeyFile = new File(Config.base(), "config/public.key");
+		if (publicKeyFile.exists() && publicKeyFile.isFile()) {
+			String publicKey = FileUtils.readFileToString(publicKeyFile, "utf-8");
+			byte[] publicKeyB = org.apache.commons.codec.binary.Base64.decodeBase64(publicKey);
+			publicKey = new String(Base64.encodeBase64(publicKeyB));
+			map.put("publicKey", publicKey);
+		}
+
+		for (Entry<String, JsonElement> en : Config.web().entrySet()) {
+			map.put(en.getKey(), en.getValue());
+		}
+		for (Entry<String, JsonElement> en : Config.mock().entrySet()) {
+			map.put(en.getKey(), en.getValue());
+		}
+		FileUtils.writeStringToFile(file, gson.toJson(map), DefaultCharset.charset);
+	}
+
 }

+ 8 - 3
o2server/x_base_core_project/src/main/java/com/x/base/core/project/gson/DoubleDeserializer.java

@@ -15,8 +15,13 @@ public class DoubleDeserializer implements JsonDeserializer<Double> {
 	@Override
 	public Double deserialize(JsonElement json, Type type, JsonDeserializationContext context)
 			throws JsonParseException {
-		Number num = NumberUtils.createNumber(StringUtils.trimToNull(json.getAsString()));
-		return (num == null) ? null : num.doubleValue();
+		/*Number num = NumberUtils.createNumber(StringUtils.trimToNull(json.getAsString()));
+		return (num == null) ? null : num.doubleValue();*/
+		if(StringUtils.isBlank(json.getAsString())){
+			return null;
+		}else{
+			return Double.parseDouble(StringUtils.trim(json.getAsString()));
+		}
 	}
 
-}
+}

+ 8 - 3
o2server/x_base_core_project/src/main/java/com/x/base/core/project/gson/FloatDeserializer.java

@@ -15,8 +15,13 @@ public class FloatDeserializer implements JsonDeserializer<Float> {
 	@Override
 	public Float deserialize(JsonElement json, Type type, JsonDeserializationContext context)
 			throws JsonParseException {
-		Number num = NumberUtils.createNumber(StringUtils.trimToNull(json.getAsString()));
-		return (num == null) ? null : num.floatValue();
+		/*Number num = NumberUtils.createNumber(StringUtils.trimToNull(json.getAsString()));
+		return (num == null) ? null : num.floatValue();*/
+		if(StringUtils.isBlank(json.getAsString())){
+			return null;
+		}else{
+			return Float.parseFloat(StringUtils.trim(json.getAsString()));
+		}
 	}
 
-}
+}

+ 4 - 8
o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/BaseTools.java

@@ -145,16 +145,12 @@ public class BaseTools {
 	public  static boolean executeSyncFile(String syncFilePath) throws Exception {
 
 		boolean Syncflag = false;
-		String localip = getIpAddress();
 		Nodes nodes = Config.nodes();
 		//同步config文件
 		if(Config.nodes().centerServers().first().getValue().getConfigApiEnable()) {
 			for (String node : nodes.keySet()) {
-				//其他服务器
-				if (!node.equalsIgnoreCase(localip)) {
-					if (nodes.get(node).getApplication().getEnable() || nodes.get(node).getCenter().getEnable()) {
-						Syncflag = executeSyncFile(syncFilePath, node, nodes.get(node).nodeAgentPort());
-					}
+				if (nodes.get(node).getApplication().getEnable() || nodes.get(node).getCenter().getEnable()) {
+					Syncflag = executeSyncFile(syncFilePath, node, nodes.get(node).nodeAgentPort());
 				}
 			}
 		}
@@ -172,7 +168,7 @@ public class BaseTools {
 			fileInputStream= new FileInputStream(syncFile);
 
 			socket.setKeepAlive(true);
-			socket.setSoTimeout(5000);
+			socket.setSoTimeout(2000);
 			DataOutputStream dos = null;
 			DataInputStream dis  = null;
 			try {
@@ -236,4 +232,4 @@ public class BaseTools {
 		}
 		return "";
 	}
-}
+}

+ 58 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/MD5Tool.java

@@ -0,0 +1,58 @@
+package com.x.base.core.project.tools;
+import org.apache.commons.lang3.StringUtils;
+
+import java.security.NoSuchAlgorithmException;
+
+
+/**
+ * @author louguodong
+ *
+ */
+public class MD5Tool {
+
+    public static String getMD5(byte[] source) {
+        String s = null;
+        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };// 用来将字节转换成16进制表示的字符
+        try {
+            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
+            md.update(source);
+            byte tmp[] = md.digest();// MD5 的计算结果是一个 128 位的长整数,
+            // 用字节表示就是 16 个字节
+            char str[] = new char[16 * 2];// 每个字节用 16 进制表示的话,使用两个字符, 所以表示成 16
+            // 进制需要 32 个字符
+            int k = 0;// 表示转换结果中对应的字符位置
+            for (int i = 0; i < 16; i++) {// 从第一个字节开始,对 MD5 的每一个字节// 转换成 16
+                // 进制字符的转换
+                byte byte0 = tmp[i];// 取第 i 个字节
+                str[k++] = hexDigits[byte0 >>> 4 & 0xf];// 取字节中高 4 位的数字转换,// >>>
+                // 为逻辑右移,将符号位一起右移
+                str[k++] = hexDigits[byte0 & 0xf];// 取字节中低 4 位的数字转换
+
+            }
+            s = new String(str);// 换后的结果转换为字符串
+
+        } catch (NoSuchAlgorithmException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return s;
+    }
+
+    public static String getMD5Str(String source) {
+        if (StringUtils.isNotEmpty(source)) {
+            return getMD5(source.getBytes());
+        } else {
+            return "";
+        }
+    }
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        // TODO Auto-generated method stub
+        String test = MD5Tool.getMD5("1qaz2wsx".getBytes());
+        System.out.println(test);
+    }
+
+}

+ 5 - 4
o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_cms_assemble_control.java

@@ -17,9 +17,10 @@ import com.x.base.core.project.annotation.ModuleType;
 		"com.x.processplatform.core.entity.content.Attachment", "com.x.query.core.entity.Item",
 		"com.x.query.core.entity.View", "com.x.cms.core.entity.ReadRemind", "com.x.cms.core.entity.DocumentCommend",
 		"com.x.cms.core.entity.DocumentCommentInfo", "com.x.cms.core.entity.CmsBatchOperation", "com.x.cms.core.entity.Review",
-		"com.x.cms.core.entity.DocumentCommentContent", "com.x.cms.core.entity.DocumentCommentCommend"}, storageTypes = {
-				StorageType.cms, StorageType.processPlatform }, storeJars = { "x_processplatform_core_entity",
-						"x_organization_core_entity", "x_organization_core_express", "x_cms_core_entity","x_cms_core_express",
-						"x_query_core_entity", "x_query_core_express" })
+		"com.x.cms.core.entity.DocumentCommentContent", "com.x.cms.core.entity.DocumentCommentCommend", "com.x.portal.core.entity.Script"
+		, "com.x.processplatform.core.entity.element.Script"}, storageTypes = {
+		StorageType.cms, StorageType.processPlatform }, storeJars = { "x_processplatform_core_entity",
+		"x_organization_core_entity", "x_organization_core_express", "x_cms_core_entity","x_cms_core_express",
+		"x_query_core_entity", "x_query_core_express", "x_portal_core_entity"  })
 public class x_cms_assemble_control extends Deployable {
 }

+ 9 - 4
o2server/x_base_core_project/src/main/java/com/x/base/core/project/x_query_assemble_surface.java

@@ -19,10 +19,15 @@ import com.x.base.core.project.annotation.ModuleType;
 		"com.x.processplatform.core.entity.content.WorkCompleted","com.x.processplatform.core.entity.element.Process",
 		"com.x.processplatform.core.entity.content.Attachment", "com.x.cms.core.entity.Document",
 		"com.x.cms.core.entity.Review", "com.x.cms.core.entity.AppInfo", "com.x.cms.core.entity.CategoryInfo",
+		"com.x.cms.core.entity.Document", "com.x.cms.core.entity.DocumentViewRecord","com.x.cms.core.entity.DocumentCommentInfo",
+		"com.x.cms.core.entity.element.File", "com.x.cms.core.entity.FileInfo",
+		"com.x.cms.core.entity.DocumentCommentContent", "com.x.cms.core.entity.DocumentCommentCommend",
 		"com.x.organization.core.entity.Person", "com.x.organization.core.entity.Unit", "com.x.organization.core.entity.Group",
-		"com.x.query.dynamic.entity.*" }, storageTypes = { StorageType.processPlatform, StorageType.cms }, storeJars = {
-				"x_query_core_entity", "x_organization_core_entity", "x_organization_core_express",
-				"x_processplatform_core_entity", "x_cms_core_entity",
-				"x_query_core_express" }, dynamicJars = { "x_query_dynamic_entity" })
+		"com.x.organization.core.entity.Role", "com.x.organization.core.entity.Identity",
+		"com.x.query.dynamic.entity.*", "com.x.general.core.entity.GeneralFile"},
+		storageTypes = { StorageType.processPlatform, StorageType.cms, StorageType.general}, storeJars = {
+		"x_query_core_entity", "x_organization_core_entity", "x_organization_core_express",
+		"x_processplatform_core_entity", "x_cms_core_entity",
+		"x_query_core_express", "x_general_core_entity" }, dynamicJars = { "x_query_dynamic_entity" })
 public class x_query_assemble_surface extends Deployable {
 }

+ 1 - 1
o2server/x_bbs_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_bbs_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_bbs_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_bbs_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_bbs_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 1 - 1
o2server/x_calendar_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_calendar_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_calendar_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_calendar_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_calendar_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 5 - 1
o2server/x_cms_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_cms_assemble_control</artifactId>
 	<packaging>war</packaging>
@@ -44,6 +44,10 @@
 			<groupId>o2oa</groupId>
 			<artifactId>x_processplatform_core_entity</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>o2oa</groupId>
+			<artifactId>x_portal_core_entity</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>o2oa</groupId>
 			<artifactId>x_general_core_entity</artifactId>

+ 35 - 15
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/Business.java

@@ -6,6 +6,8 @@ import com.x.base.core.project.organization.OrganizationDefinition;
 import com.x.base.core.project.tools.ListTools;
 import com.x.cms.assemble.control.factory.*;
 import com.x.cms.assemble.control.factory.element.QueryViewFactory;
+import com.x.cms.assemble.control.factory.portal.PortalFactory;
+import com.x.cms.assemble.control.factory.process.ProcessFactory;
 import com.x.cms.core.entity.AppInfo;
 import com.x.organization.core.express.Organization;
 import org.apache.commons.lang3.StringUtils;
@@ -66,63 +68,63 @@ public class Business {
 		}
 		return documentCommentCommendFactory;
 	}
-	
+
 	public ReviewFactory reviewFactory() throws Exception {
 		if (null == this.reviewFactory) {
 			this.reviewFactory = new ReviewFactory(this);
 		}
 		return reviewFactory;
 	}
-	
+
 	public CmsBatchOperationFactory cmsBatchOperationFactory() throws Exception {
 		if (null == this.cmsBatchOperationFactory) {
 			this.cmsBatchOperationFactory = new CmsBatchOperationFactory(this);
 		}
 		return cmsBatchOperationFactory;
 	}
-	
+
 	public DocumentCommentInfoFactory documentCommentInfoFactory() throws Exception {
 		if (null == this.documentCommentInfoFactory) {
 			this.documentCommentInfoFactory = new DocumentCommentInfoFactory(this);
 		}
 		return documentCommentInfoFactory;
 	}
-	
+
 	public DocumentCommendFactory documentCommendFactory() throws Exception {
 		if (null == this.documentCommendFactory) {
 			this.documentCommendFactory = new DocumentCommendFactory(this);
 		}
 		return documentCommendFactory;
 	}
-	
+
 	public FileFactory fileFactory() throws Exception {
 		if (null == this.fileFactory) {
 			this.fileFactory = new FileFactory(this);
 		}
 		return fileFactory;
 	}
-	
+
 	public FormFieldFactory formFieldFactory() throws Exception {
 		if (null == this.formFieldFactory) {
 			this.formFieldFactory = new FormFieldFactory(this);
 		}
 		return formFieldFactory;
 	}
-	
+
 	public ItemFactory itemFactory() throws Exception {
 		if (null == this.itemFactory) {
 			this.itemFactory = new ItemFactory(this);
 		}
 		return itemFactory;
 	}
-	
+
 	public CategoryExtFactory categoryExtFactory() throws Exception {
 		if (null == this.categoryExtFactory) {
 			this.categoryExtFactory = new CategoryExtFactory(this);
 		}
 		return categoryExtFactory;
 	}
-	
+
 	public Organization organization() throws Exception {
 		if (null == this.organization) {
 			this.organization = new Organization(ThisApplication.context());
@@ -144,7 +146,7 @@ public class Business {
 		return documentViewRecordFactory;
 	}
 
-	
+
 
 	public QueryViewFactory queryViewFactory() throws Exception {
 		if (null == this.queryViewFactory) {
@@ -236,7 +238,7 @@ public class Business {
 		}
 		return fileInfoFactory;
 	}
-	
+
 	public LogFactory getLogFactory() throws Exception {
 		if (null == this.logFactory) {
 			this.logFactory = new LogFactory(this);
@@ -244,6 +246,24 @@ public class Business {
 		return logFactory;
 	}
 
+	private ProcessFactory process;
+
+	public ProcessFactory process() throws Exception {
+		if (null == this.process) {
+			this.process = new ProcessFactory(this);
+		}
+		return process;
+	}
+
+	private PortalFactory portal;
+
+	public PortalFactory portal() throws Exception {
+		if (null == this.portal) {
+			this.portal = new PortalFactory(this);
+		}
+		return portal;
+	}
+
 	public boolean isHasPlatformRole( String personName, String roleName) throws Exception {
 		if ( StringUtils.isEmpty( personName ) ) {
 			throw new Exception("personName is null!");
@@ -262,7 +282,7 @@ public class Business {
 		}
 		return false;
 	}
-	
+
 	/**
 	 * 判断用户是否管理员权限
 	 * 1、person.isManager()
@@ -339,7 +359,7 @@ public class Business {
 						OrganizationDefinition.CMSManager)) {
 			return true;
 		}
-		
+
 		//判断effectivePerson是不是该栏目的管理者:涉及 个人,组织和群组
 		List<String> unitNameList= this.organization().unit().listWithPersonSupNested( effectivePerson.getDistinguishedName() );
 		List<String> groupNameList = new ArrayList<String>();
@@ -353,14 +373,14 @@ public class Business {
 				return true;
 			}
 		}
-		
+
 		if( ListTools.isNotEmpty( appInfo.getManageableGroupList() ) && ListTools.isNotEmpty( groupNameList )) {
 			groupNameList.retainAll( appInfo.getManageableGroupList()  );
 			if( ListTools.isNotEmpty( groupNameList )) {
 				return true;
 			}
 		}
-		
+
 		if( ListTools.isNotEmpty( appInfo.getManageableUnitList() )&& ListTools.isNotEmpty( unitNameList )) {
 			unitNameList.retainAll( appInfo.getManageableUnitList()  );
 			if( ListTools.isNotEmpty( unitNameList )) {

+ 2 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java

@@ -42,7 +42,7 @@ public class ThisApplication {
 	// 执行数据库中的批处理操作
 	public static final QueueBatchOperation queueBatchOperation = new QueueBatchOperation();
 	// Document发布时,向所有阅读者推送通知
-	public static final QueueSendDocumentNotify queueSendDocumentNotify = new QueueSendDocumentNotify();
+	public static QueueSendDocumentNotify queueSendDocumentNotify = new QueueSendDocumentNotify();
 	private static final ConcurrentHashMap<String, DataImportStatus> importStatus = new ConcurrentHashMap<>();
 
 	public static Context context() {
@@ -58,6 +58,7 @@ public class ThisApplication {
 		context().startQueue(queueDataRowImport);
 		context().startQueue(queueDocumentUpdate);
 		context().startQueue(queueDocumentViewCountUpdate);
+		queueSendDocumentNotify.initFixedThreadPool(3);
 		context().startQueue(queueSendDocumentNotify);
 
 		// 每天凌晨2点执行一次

+ 40 - 30
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/CategoryInfoFactory.java

@@ -1,5 +1,6 @@
 package com.x.cms.assemble.control.factory;
 
+import com.x.base.core.project.exception.ExceptionWhen;
 import com.x.base.core.project.tools.ListTools;
 import com.x.cms.assemble.control.AbstractFactory;
 import com.x.cms.assemble.control.Business;
@@ -18,20 +19,29 @@ import java.util.List;
 
 /**
  * 分类信息基础功能服务类
- * 
+ *
  * @author O2LEE
  */
-public class CategoryInfoFactory extends AbstractFactory {
+public class CategoryInfoFactory extends ElementFactory {
 
 	public CategoryInfoFactory(Business business) throws Exception {
 		super(business);
 	}
 
+	public CategoryInfo pick(String flag) throws Exception {
+		return this.pick(flag, ExceptionWhen.none);
+	}
+
+	@Deprecated
+	public CategoryInfo pick(String flag, ExceptionWhen exceptionWhen) throws Exception {
+		return this.pick(flag, CategoryInfo.class);
+	}
+
 	//@MethodDescribe("获取指定Id的CategoryInfo分类信息对象")
 	public CategoryInfo get( String id ) throws Exception {
 		return this.entityManagerContainer().find( id, CategoryInfo.class );
 	}
-	
+
 	//@MethodDescribe("列示全部的CategoryInfo分类信息列表")
 	@SuppressWarnings("unused")
 	public List<CategoryInfo> listAll() throws Exception {
@@ -41,7 +51,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		Root<CategoryInfo> root = cq.from( CategoryInfo.class );
 		return em.createQuery(cq).getResultList();
 	}
-	
+
 	//@MethodDescribe("列示全部的CategoryInfo分类信息列表")
 	public List<String> listAllIds() throws Exception {
 		EntityManager em = this.entityManagerContainer().get( CategoryInfo.class );
@@ -51,7 +61,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		cq.select(root.get(CategoryInfo_.id));
 		return em.createQuery(cq).getResultList();
 	}
-	
+
 	//@MethodDescribe("列示指定Id的CategoryInfo分类信息列表")
 //	public List<CategoryInfo> list(List<String> ids) throws Exception {
 //		EntityManager em = this.entityManagerContainer().get( CategoryInfo.class );
@@ -61,7 +71,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 //		Predicate p = root.get( CategoryInfo_.id).in(ids);
 //		return em.createQuery(cq.where(p)).getResultList();
 //	}
-	
+
 	//@MethodDescribe("根据应用ID列示所有的CategoryInfo分类信息列表")
 	public List<String> listByAppId( String appId ) throws Exception {
 		EntityManager em = this.entityManagerContainer().get( CategoryInfo.class );
@@ -105,7 +115,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 
 		return em.createQuery( cq.where(p) ).setMaxResults(maxCount).getResultList();
 	}
-	
+
 	public List<CategoryInfo> listCategoryByAppId( String appId, String documentType, Integer maxCount ) throws Exception {
 		EntityManager em = this.entityManagerContainer().get( CategoryInfo.class );
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -117,7 +127,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		}
 		return em.createQuery( cq.where(p) ).setMaxResults(maxCount).getResultList();
 	}
-	
+
 	//@MethodDescribe("根据应用ID列示所有的CategoryInfo分类信息数量")
 	public Long countByAppId( String appId, String documentType ) throws Exception {
 		EntityManager em = this.entityManagerContainer().get(CategoryInfo.class);
@@ -131,7 +141,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		cq.select(cb.count(root));
 		return em.createQuery(cq.where(p)).getSingleResult();
 	}
-	
+
 	//@MethodDescribe("根据分类ID列示所有下级CategoryInfo分类信息列表")
 	public List<String> listByParentId( String categoryId ) throws Exception {
 		EntityManager em = this.entityManagerContainer().get( CategoryInfo.class );
@@ -160,7 +170,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		cq.select(root.get( CategoryInfo_.id));
 		return em.createQuery(cq.where(p)).setMaxResults(200).getResultList();
 	}
-	
+
 	public List<String> listMyCategoryWithAppId( List<String> myCategoryIds, String documentType, String appId ) throws Exception {
 		EntityManager em = this.entityManagerContainer().get( CategoryInfo.class );
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -189,7 +199,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		Predicate p = root.get( CategoryInfo_.categoryAlias ).in( categoryAlias );
 		return em.createQuery(cq.where( p )).getResultList();
 	}
-	
+
 	public List<CategoryInfo> listByAliases(List<String> categoryAlias) throws Exception {
 		if(ListTools.isEmpty( categoryAlias )) {
 			return null;
@@ -212,7 +222,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 	 * @param inCategoryIds  - 栏目ID的最大范围
 	 * @param excludCategoryIds - 需要排除的栏目ID
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public List<String> listPublishableCategoryInfoIdsWithPermission(String personName, List<String> unitNames,
 			List<String> groupNames, List<String> inAppInfoIds, List<String> inCategoryIds,
@@ -221,7 +231,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<CategoryInfo> root = cq.from(CategoryInfo.class);
-		
+
 		Predicate p = null;
 		Predicate p_filter = null;
 		//限定栏目范围
@@ -243,12 +253,12 @@ public class CategoryInfoFactory extends AbstractFactory {
 			}else {
 				p_filter = cb.and( p_filter, cb.not( root.get( CategoryInfo_.id ).in( excludCategoryIds )));
 			}
-		}		
+		}
 		Predicate p_permission = null;
 		if( StringUtils.isNotEmpty( personName )) {
 			//可以管理的栏目,肯定可以发布信息
-			p_permission = cb.isMember( personName, root.get( CategoryInfo_.manageablePersonList ));	
-			p_permission = cb.or( p_permission, cb.isMember( personName, root.get( CategoryInfo_.publishablePersonList )));			
+			p_permission = cb.isMember( personName, root.get( CategoryInfo_.manageablePersonList ));
+			p_permission = cb.or( p_permission, cb.isMember( personName, root.get( CategoryInfo_.publishablePersonList )));
 		}
 		if( ListTools.isNotEmpty( unitNames )) {
 			if( p_permission == null  ) {
@@ -264,7 +274,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 				p_permission = cb.or( p_permission,  root.get( CategoryInfo_.publishableGroupList).in(groupNames));
 			}
 		}
-		
+
 		//使用新的条件将两个条件组合起来
 		if( p_filter != null ) {
 			p = p_filter;
@@ -295,7 +305,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 	 * @param inCategoryIds  - 栏目ID的最大范围
 	 * @param excludCategoryIds - 需要排除的栏目ID
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public List<String> listViewableCategoryInfoIdsWithPermission(String personName, List<String> unitNames, List<String> groupNames,
 			List<String> inAppInfoIds, List<String> inCategoryIds, List<String> excludCategoryIds,
@@ -304,7 +314,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<CategoryInfo> root = cq.from(CategoryInfo.class);
-		
+
 		Predicate p = null;
 		Predicate p_filter = null;
 		//限定栏目范围
@@ -318,7 +328,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 			}else {
 				p_filter = cb.and( p_filter, root.get( CategoryInfo_.id ).in( inCategoryIds ));
 			}
-		}		
+		}
 		//排除指定的ID列表
 		if( ListTools.isNotEmpty( excludCategoryIds )) {
 			if( p_filter == null ) {
@@ -327,11 +337,11 @@ public class CategoryInfoFactory extends AbstractFactory {
 				p_filter = cb.and( p_filter, cb.not( root.get( CategoryInfo_.id ).in( excludCategoryIds )));
 			}
 		}
-		
+
 		Predicate p_permission = null;
 		if( StringUtils.isNotEmpty( personName )) {
 			//可以管理的栏目,肯定可以发布信息
-			p_permission = cb.isMember( personName, root.get( CategoryInfo_.manageablePersonList ));	
+			p_permission = cb.isMember( personName, root.get( CategoryInfo_.manageablePersonList ));
 			p_permission = cb.or( p_permission, cb.isMember( personName, root.get( CategoryInfo_.publishablePersonList )));
 		}
 		if( ListTools.isNotEmpty( unitNames )) {
@@ -352,7 +362,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 				p_permission = cb.or( p_permission,  root.get( CategoryInfo_.viewableGroupList).in(groupNames));
 			}
 		}
-		
+
 		//使用新的条件将两个条件组合起来
 		if( p_filter != null ) {
 			p = p_filter;
@@ -379,7 +389,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 	 * @param inCategoryIds
 	 * @param excludCategoryIds
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public List<String> listAllPeoplePublishableCategoryInfoIds(List<String> inAppInfoIds, List<String> inCategoryIds,
 			List<String> excludCategoryIds, String documentType, Integer maxCount ) throws Exception {
@@ -403,14 +413,14 @@ public class CategoryInfoFactory extends AbstractFactory {
 		}
 		return em.createQuery(cq.where( p )).setMaxResults(maxCount).getResultList();
 	}
-	
+
 	/**
 	 * 查询所有用户都可以发布的分类ID列表(检测allPeopleView和allPeoplePublish)
 	 * @param inAppInfoIds
 	 * @param inCategoryIds
 	 * @param excludCategoryIds
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public List<String> listAllPeopleViewableCategoryInfoIds(List<String> inAppInfoIds, List<String> inCategoryIds, List<String> excludCategoryIds,
 			String documentType, Integer maxCount ) throws Exception {
@@ -419,10 +429,10 @@ public class CategoryInfoFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<CategoryInfo> root = cq.from(CategoryInfo.class);
 		cq.select(root.get(CategoryInfo_.id));
-		
+
 		Predicate p_all = cb.isTrue( root.get( CategoryInfo_.allPeopleView ) );
 		p_all = cb.or( p_all,  cb.isTrue( root.get( CategoryInfo_.allPeoplePublish )));
-		
+
 		Predicate p = root.get( CategoryInfo_.id ).isNotNull();
 		if( ListTools.isNotEmpty( inAppInfoIds )) {
 			p = cb.and( p,  root.get( CategoryInfo_.appId ).in( inAppInfoIds ) );
@@ -455,7 +465,7 @@ public class CategoryInfoFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<CategoryInfo> root = cq.from(CategoryInfo.class);
-		
+
 		Predicate p = cb.isMember( personName, root.get( CategoryInfo_.manageablePersonList ));
 		if( ListTools.isNotEmpty( inAppInfoIds )) {
 			p = cb.and( p, root.get( CategoryInfo_.appId ).in( inAppInfoIds ) );
@@ -472,4 +482,4 @@ public class CategoryInfoFactory extends AbstractFactory {
 		}
 		return em.createQuery( cq.where( p ) ).setMaxResults(maxCount).getResultList();
 	}
-}
+}

+ 10 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/FormFactory.java

@@ -22,12 +22,21 @@ import java.util.List;
  *
  * @author O2LEE
  */
-public class FormFactory extends AbstractFactory {
+public class FormFactory extends ElementFactory {
 
 	public FormFactory( Business business ) throws Exception {
 		super(business);
 	}
 
+	public Form pick(String flag) throws Exception {
+		return this.pick(flag, ExceptionWhen.none);
+	}
+
+	@Deprecated
+	public Form pick(String flag, ExceptionWhen exceptionWhen) throws Exception {
+		return this.pick(flag, Form.class);
+	}
+
 	/**
 	 * @param id
 	 * @return Form

+ 15 - 5
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/ScriptFactory.java

@@ -11,6 +11,7 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
 import com.x.base.core.project.cache.ApplicationCache;
+import com.x.base.core.project.exception.ExceptionWhen;
 import com.x.cms.assemble.control.AbstractFactory;
 import com.x.cms.assemble.control.Business;
 import com.x.cms.core.entity.element.Script;
@@ -20,12 +21,21 @@ import net.sf.ehcache.Ehcache;
 import net.sf.ehcache.Element;
 
 
-public class ScriptFactory extends AbstractFactory {
+public class ScriptFactory extends ElementFactory {
 
 	public ScriptFactory(Business business) throws Exception {
 		super(business);
 	}
 
+	public Script pick(String flag) throws Exception {
+		return this.pick(flag, ExceptionWhen.none);
+	}
+
+	@Deprecated
+	public Script pick(String flag, ExceptionWhen exceptionWhen) throws Exception {
+		return this.pick(flag, Script.class);
+	}
+
 //    public List<Script> list( List<String> ids ) throws Exception {
 //        EntityManager em = this.entityManagerContainer().get(Script.class);
 //        CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -44,7 +54,7 @@ public class ScriptFactory extends AbstractFactory {
 		cq.select(root.get(Script_.id)).where(p);
 		return em.createQuery(cq).getResultList();
 	}
-	
+
 	public List<Script> listScriptWithApp(String appId) throws Exception {
 		EntityManager em = this.entityManagerContainer().get(Script.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -66,7 +76,7 @@ public class ScriptFactory extends AbstractFactory {
 		List<String> list = em.createQuery(cq).setMaxResults(1).getResultList();
 		return list.isEmpty() ? null : list.get(0);
 	}
-	
+
 	@SuppressWarnings("unchecked")
 	public List<Script> listScriptNestedWithAppInfoWithUniqueName( String appId, String uniqueName ) throws Exception {
 		List<Script> list = new ArrayList<>();
@@ -100,7 +110,7 @@ public class ScriptFactory extends AbstractFactory {
 			throw new Exception("listScriptNestedWithAppInfoWithUniqueName error.", e);
 		}
 	}
-	
+
 	public Script getScriptWithAppInfoWithUniqueName( String appId, String uniqueName ) throws Exception {
 		Script script = null;
 		try {
@@ -129,4 +139,4 @@ public class ScriptFactory extends AbstractFactory {
 			throw new Exception("getScriptWithAppInfoWithUniqueName error.", e);
 		}
 	}
-}
+}

+ 21 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/portal/PortalFactory.java

@@ -0,0 +1,21 @@
+package com.x.cms.assemble.control.factory.portal;
+
+import com.x.cms.assemble.control.AbstractFactory;
+import com.x.cms.assemble.control.Business;
+
+public class PortalFactory extends AbstractFactory {
+
+	public PortalFactory(Business abstractBusiness) throws Exception {
+		super(abstractBusiness);
+	}
+
+	private ScriptFactory script;
+
+	public ScriptFactory script() throws Exception {
+		if (null == this.script) {
+			this.script = new ScriptFactory(this.business());
+		}
+		return script;
+	}
+
+}

+ 17 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/portal/ScriptFactory.java

@@ -0,0 +1,17 @@
+package com.x.cms.assemble.control.factory.portal;
+
+import com.x.cms.assemble.control.Business;
+import com.x.cms.assemble.control.factory.ElementFactory;
+import com.x.portal.core.entity.Script;
+
+public class ScriptFactory extends ElementFactory {
+
+	public ScriptFactory(Business abstractBusiness) throws Exception {
+		super(abstractBusiness);
+	}
+
+	public Script pick(String flag) throws Exception {
+		return this.pick(flag, Script.class);
+	}
+
+}

+ 21 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/process/ProcessFactory.java

@@ -0,0 +1,21 @@
+package com.x.cms.assemble.control.factory.process;
+
+import com.x.cms.assemble.control.AbstractFactory;
+import com.x.cms.assemble.control.Business;
+
+public class ProcessFactory extends AbstractFactory {
+
+	public ProcessFactory(Business abstractBusiness) throws Exception {
+		super(abstractBusiness);
+	}
+
+	private ScriptFactory script;
+
+	public ScriptFactory script() throws Exception {
+		if (null == this.script) {
+			this.script = new ScriptFactory(this.business());
+		}
+		return script;
+	}
+
+}

+ 17 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/process/ScriptFactory.java

@@ -0,0 +1,17 @@
+package com.x.cms.assemble.control.factory.process;
+
+import com.x.cms.assemble.control.Business;
+import com.x.cms.assemble.control.factory.ElementFactory;
+import com.x.processplatform.core.entity.element.Script;
+
+public class ScriptFactory extends ElementFactory {
+
+	public ScriptFactory(Business abstractBusiness) throws Exception {
+		super(abstractBusiness);
+	}
+
+	public Script pick(String flag) throws Exception {
+		return this.pick(flag, Script.class);
+	}
+
+}

+ 366 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appdict/AppDictAction.java

@@ -74,6 +74,25 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新数据字典以及数据 MockPutToPost.", action = ActionUpdate.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					   @JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+					   @JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag, WrapInAppDict wrapIn) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdate().execute(effectivePerson, appDictFlag, appInfoFlag, wrapIn);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取AppInfo的数据字典列表.", action = ActionListWithAppInfo.class)
 	@GET
 	@Path("list/appInfo/{appInfoFlag}")
@@ -369,6 +388,29 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据 MockPutToPost.", action = ActionUpdateDataPath2.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/data/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateDataPath2MockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2, JsonElement jsonElement) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateDataPath2().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据.", action = ActionUpdateDataPath3.class)
 	@PUT
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/data")
@@ -393,6 +435,30 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据 MockPutToPost.", action = ActionUpdateDataPath3.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/data/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateDataPath3MockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3, JsonElement jsonElement) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateDataPath3().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据.", action = ActionUpdateDataPath4.class)
 	@PUT
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/data")
@@ -418,6 +484,31 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据 MockPutToPost.", action = ActionUpdateDataPath4.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/data/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateDataPath4MockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4, JsonElement jsonElement) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateDataPath4().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据.", action = ActionUpdateDataPath5.class)
 	@PUT
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/data")
@@ -444,6 +535,32 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据 MockPutToPost.", action = ActionUpdateDataPath5.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/data/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateDataPath5MockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+								@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5, JsonElement jsonElement) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateDataPath5().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, path5, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据.", action = ActionUpdateDataPath6.class)
 	@PUT
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/data")
@@ -471,6 +588,33 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据 MockPutToPost.", action = ActionUpdateDataPath6.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/data/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateDataPath6MockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+								@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+								@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6, JsonElement jsonElement) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateDataPath6().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, path5, path6, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据.", action = ActionUpdateDataPath7.class)
 	@PUT
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}/data")
@@ -499,6 +643,34 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典和路径更新AppInfo下的数据字典局部数据 MockPutToPost.", action = ActionUpdateDataPath7.class)
+	@POST
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}/data/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateDataPath7MockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+								@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+								@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6,
+								@JaxrsParameterDescribe("7级路径") @PathParam("path7") String path7, JsonElement jsonElement) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateDataPath7().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, path5, path6, path7, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径添加AppInfo下的新的局部数据.", action = ActionCreateDataPath0.class)
 	@POST
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/data")
@@ -714,6 +886,26 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据 MockDeleteToGet.", action = ActionDeleteDataPath0.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath0MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath0().execute(appDictFlag, appInfoFlag, path0);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath1.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/data")
@@ -735,6 +927,27 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据 MockDeleteToGet.", action = ActionDeleteDataPath1.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath1MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath1().execute(appDictFlag, appInfoFlag, path0, path1);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath2.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/data")
@@ -757,6 +970,28 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath2.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath2MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath2().execute(appDictFlag, appInfoFlag, path0, path1, path2);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath3.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/data")
@@ -781,6 +1016,30 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath3.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath3MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath3().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath4.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/data")
@@ -806,6 +1065,31 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath4.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath4MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath4().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath5.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/data")
@@ -832,6 +1116,32 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath5.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath5MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+								@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath5().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, path5);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath6.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/data")
@@ -859,6 +1169,33 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath6.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath6MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+								@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+								@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath6().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, path5, path6);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath7.class)
 	@DELETE
 	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}/data")
@@ -887,4 +1224,32 @@ public class AppDictAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+	@JaxrsMethodDescribe(value = "根据字典ID和路径删除AppInfo下的数据字典局部数据.", action = ActionDeleteDataPath7.class)
+	@GET
+	@Path("{appDictFlag}/appInfo/{appInfoFlag}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}/data/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteDataPath7MockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("数据字典标识") @PathParam("appDictFlag") String appDictFlag,
+								@JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+								@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+								@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+								@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+								@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+								@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+								@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+								@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6,
+								@JaxrsParameterDescribe("7级路径") @PathParam("path7") String path7) {
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteDataPath7().execute(appDictFlag, appInfoFlag, path0, path1, path2,
+					path3, path4, path5, path6, path7);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+}

+ 37 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appdictdesign/AppDictDesignAction.java

@@ -102,6 +102,24 @@ public class AppDictDesignAction extends BaseAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新数据字典以及数据.", action = ActionEdit.class)
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void putMockPutToPost( @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 = ActionDelete.class)
 	@DELETE
 	@Path("{id}")
@@ -120,6 +138,24 @@ public class AppDictDesignAction extends BaseAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "删除指定的数据字典以及数据字典数据.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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));
+	}
+
 	@JaxrsMethodDescribe(value = "分页列示数据字典对象.", action = ActionListPaging.class)
 	@POST
 	@Path("list/paging/{page}/size/{size}")
@@ -139,4 +175,4 @@ public class AppDictDesignAction extends BaseAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+}

+ 108 - 24
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appinfo/AppInfoAction.java

@@ -54,7 +54,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void delete( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	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<>();
@@ -69,6 +69,26 @@ public class AppInfoAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据ID删除指定的栏目信息(如果栏目下仍存在分类信息,则不可删除)。", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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<>();
+			Exception exception = new ExceptionAppInfoProcess(e, "根据ID删除CMS应用信息对象发生未知异常,ID:" + id);
+			result.error(exception);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取栏目访问控制信息.", action = ActionQueryGetControl.class)
 	@GET
 	@Path("{id}/control")
@@ -90,13 +110,13 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据栏目ID删除指定栏目内所有的信息文档。", action = ActionEraseDocumentWithAppInfo.class)
 	@DELETE
 	@Path("erase/app/{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void eraseWithAppId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void eraseWithAppId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("栏目ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<ActionEraseDocumentWithAppInfo.Wo> result = new ActionResult<>();
@@ -111,12 +131,32 @@ public class AppInfoAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据栏目ID删除指定栏目内所有的信息文档。", action = ActionEraseDocumentWithAppInfo.class)
+	@GET
+	@Path("erase/app/{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void eraseWithAppIdMockDeleteToGet( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("栏目ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionEraseDocumentWithAppInfo.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionEraseDocumentWithAppInfo().execute(request, id, effectivePerson );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionAppInfoProcess(e, "根据栏目ID删除所有的信息文档发生未知异常,ID:" + id);
+			result.error(exception);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据标识获取信息栏目信息对象.", action = ActionGet.class)
 	@GET
 	@Path("{flag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("栏目ID") @PathParam("flag") String flag) {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<BaseAction.Wo> result = new ActionResult<>();
@@ -170,7 +210,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限查看的所有信息栏目信息列表.", action = ActionListWhatICanViewArticle.class)
 	@GET
 	@Path("list/user/view")
@@ -190,7 +230,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限查看的所有信息栏目信息列表.", action = ActionListWhatICanViewData.class)
 	@GET
 	@Path("list/user/view/data")
@@ -210,7 +250,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限查看的所有信息栏目信息列表.", action = ActionListWhatICanViewData_WithAppType.class)
 	@GET
 	@Path("list/user/view/data/type/{appType}")
@@ -231,7 +271,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限查看的所有栏目信息列表.", action = ActionListWhatICanViewAllDocType_WithAppType.class)
 	@GET
 	@Path("list/user/view/all/type/{appType}")
@@ -252,7 +292,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限查看的所有栏目信息列表.", action = ActionListWhatICanViewAllDocType.class)
 	@GET
 	@Path("list/user/view/all")
@@ -292,7 +332,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限发布的所有信息栏目信息列表.", action = ActionListWhatICanPublish_WithAppType.class)
 	@GET
 	@Path("list/user/publish/type/{appType}")
@@ -313,7 +353,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限发布的所有信息栏目信息列表.", action = ActionGetPublishableAppInfo.class)
 	@GET
 	@Path("get/user/publish/{appId}")
@@ -354,7 +394,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取所有可管理的栏目分类信息列表.", action = ActionListAllManageableAppType.class)
 	@GET
 	@Path("list/appType/manager")
@@ -374,7 +414,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限管理的所有信息栏目信息列表.", action = ActionListWhatICanManage.class)
 	@GET
 	@Path("list/manage")
@@ -394,7 +434,7 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据栏目类别名称获取用户有权限管理的所有信息栏目信息列表.", action = ActionListWhatICanManage_WithAppType.class)
 	@GET
 	@Path("list/manage/type/{appType}")
@@ -440,9 +480,9 @@ public class AppInfoAction extends StandardJaxrsAction {
 	@Path("filter/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,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<List<ActionListNextWithFilter.Wo>> result = new ActionResult<>();
@@ -457,14 +497,36 @@ public class AppInfoAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息栏目信息,下一页.", action = ActionListNextWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionListNextWithFilter.Wo>> result = new ActionResult<>();
+		try {
+			result = new ActionListNextWithFilter().execute(request, effectivePerson, id, count, jsonElement );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionAppInfoProcess(e, "查询栏目信息对象时发生异常");
+			result.error(exception);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息栏目信息,上一页.", action = ActionListPrevWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/prev/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPrevWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void listPrevWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<List<ActionListPrevWithFilter.Wo>> result = new ActionResult<>();
@@ -478,14 +540,36 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息栏目信息,上一页.", action = ActionListPrevWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/prev/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPrevWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionListPrevWithFilter.Wo>> result = new ActionResult<>();
+		try {
+			result = new ActionListPrevWithFilter().execute(request, effectivePerson, id, count, jsonElement);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionAppInfoProcess(e, "查询栏目信息对象时发生异常");
+			result.error(exception);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "上传或者替换栏目的图标内容,可以指定压缩大小	.", action = ActionAppIconUpload.class)
 	@POST
 	@Path("{appId}/icon/size/{size}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void changeIcon(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
+	public void changeIcon(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
 			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
 			@JaxrsParameterDescribe("最大宽度") @PathParam("size") Integer size,
 			@FormDataParam(FILE_FIELD) final byte[] bytes,
@@ -500,4 +584,4 @@ public class AppInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 26 - 4
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appinfo/AppInfoAnonymousAction.java

@@ -50,9 +50,9 @@ public class AppInfoAnonymousAction extends StandardJaxrsAction {
 	@Path("filter/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,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<List<ActionListNextWithFilterAnonymous.Wo>> result = new ActionResult<>();
@@ -66,4 +66,26 @@ public class AppInfoAnonymousAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息栏目信息,下一页.", action = ActionListNextWithFilterAnonymous.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionListNextWithFilterAnonymous.Wo>> result = new ActionResult<>();
+		try {
+			result = new ActionListNextWithFilterAnonymous().execute(request, effectivePerson, id, count, jsonElement );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionAppInfoProcess(e, "查询栏目信息对象时发生异常");
+			result.error(exception);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 168 - 37
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/categoryinfo/CategoryInfoAction.java

@@ -26,7 +26,7 @@ import java.util.List;
 public class CategoryInfoAction extends StandardJaxrsAction{
 
 	private static  Logger logger = LoggerFactory.getLogger( CategoryInfoAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "创建或者更新信息分类信息对象.", action = ActionSave.class)
 	@POST
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@@ -47,13 +47,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "为分类绑定导入数据的列表ID.", action = ActionSaveImportView.class)
 	@PUT
 	@Path("bind/{categoryId}/view")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void bindImportView( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void bindImportView( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("分类ID") @PathParam("categoryId") String categoryId,
 			 JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
@@ -68,7 +68,28 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "为分类绑定导入数据的列表ID.", action = ActionSaveImportView.class)
+	@POST
+	@Path("bind/{categoryId}/view/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void bindImportViewMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("分类ID") @PathParam("categoryId") String categoryId,
+								JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionSaveImportView.Wo> result = null;
+		try {
+			result = new ActionSaveImportView().execute( request, effectivePerson, categoryId, jsonElement );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionCategoryInfoProcess( e, "为分类绑定导入数据的列表ID时发生异常。categoryId:"+ categoryId );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "创建或者更新分类扩展信息对象.", action = ActionSaveExtContent.class)
 	@POST
 	@Path("extContent")
@@ -90,13 +111,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		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, 
+	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<>();
@@ -110,13 +131,33 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "根据ID删除信息分类信息对象.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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, id, effectivePerson );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionCategoryInfoProcess( e, "分类信息在删除时发生异常。ID:" + id );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据分类ID删除所有的信息文档.", action = ActionEraseDocumentWithCategory.class)
 	@DELETE
 	@Path("erase/category/{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void eraseWithCategory( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void eraseWithCategory( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("分类ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<ActionEraseDocumentWithCategory.Wo> result = new ActionResult<>();
@@ -130,14 +171,34 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "根据分类ID删除所有的信息文档.", action = ActionEraseDocumentWithCategory.class)
+	@GET
+	@Path("erase/category/{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void eraseWithCategoryMockDeleteToGet( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								   @JaxrsParameterDescribe("分类ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionEraseDocumentWithCategory.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionEraseDocumentWithCategory().execute(request, id, effectivePerson );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionCategoryInfoProcess(e, "根据分类ID删除所有的信息文档发生未知异常,ID:" + id);
+			result.error(exception);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取用户有查看访问文章信息的所有分类列表.", action = ActionListWhatICanView_Article.class)
 	@GET
 	@Path("list/view/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewableCategoryInfo_Article( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewableCategoryInfo_Article( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanView_Article.Wo>> result = new ActionResult<>();
 		try {
@@ -150,14 +211,14 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有查看访问数据信息的所有分类列表.", action = ActionListWhatICanView_Data.class)
 	@GET
 	@Path("list/view/app/{appId}/data")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewableCategoryInfo_Data( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewableCategoryInfo_Data( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanView_Data.Wo>> result = new ActionResult<>();
 		try {
@@ -170,14 +231,14 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有查看访问信息的所有分类列表.", action = ActionListWhatICanView_AllType.class)
 	@GET
 	@Path("list/view/app/{appId}/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewableCategoryInfo_AllType( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewableCategoryInfo_AllType( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanView_AllType.Wo>> result = new ActionResult<>();
 		try {
@@ -190,14 +251,14 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限发布信息的所有分类列表.", action = ActionListWhatICanPublish.class)
 	@GET
 	@Path("list/publish/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPublishableCategoryInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listPublishableCategoryInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanPublish.Wo>> result = new ActionResult<>();
 		try {
@@ -210,13 +271,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限访问信息的所有分类列表.", action = ActionListAll.class)
 	@GET
 	@Path("list/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listAllCategoryInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {		
+	public void listAllCategoryInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListAll.Wo>> result = null;
 		try {
@@ -229,13 +290,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据分类标识Flag获取分类信息对象.", action = ActionGet.class)
 	@GET
 	@Path("{flag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("分类标识") @PathParam("flag") String flag) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionGet.Wo> result = null;
@@ -271,13 +332,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据分类别名获取分类信息对象.", action = ActionGet.class)
 	@GET
 	@Path("alias/{alias}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void getByAlias( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void getByAlias( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("分类别名") @PathParam("alias") String alias ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionGetByAlias.Wo> result = null;
@@ -291,16 +352,16 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息分类,下一页.", action = ActionListNextWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/next/{count}/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
-			@JaxrsParameterDescribe("栏目ID")  @PathParam("appId") String appId, 
+	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+			@JaxrsParameterDescribe("栏目ID")  @PathParam("appId") String appId,
 			JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListNextWithFilter.Wo>> result = null;
@@ -315,15 +376,38 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息分类,下一页.", action = ActionListNextWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/app/{appId}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									@JaxrsParameterDescribe("栏目ID")  @PathParam("appId") String appId,
+									JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionListNextWithFilter.Wo>> result = null;
+		try {
+			result = new ActionListNextWithFilter().execute( request, effectivePerson, id, count, jsonElement);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionCategoryInfoProcess( e, "列示根据过滤条件的信息分类时发生异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息分类,上一页.", action = ActionListPrevWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/prev/{count}/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPrevWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") Integer appId, 
+	public void listPrevWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") Integer appId,
 			JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListPrevWithFilter.Wo>> result = null;
@@ -338,6 +422,29 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息分类,上一页.", action = ActionListPrevWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/prev/{count}/app/{appId}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPrevWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									@JaxrsParameterDescribe("栏目ID") @PathParam("appId") Integer appId,
+									JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionListPrevWithFilter.Wo>> result = null;
+		try {
+			result = new ActionListPrevWithFilter().execute( request, effectivePerson, id, count, jsonElement);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionCategoryInfoProcess( e, "列示根据过滤条件的信息分类时发生异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的分类列表.", action = ActionQueryListWithFilterPaging.class)
 	@PUT
 	@Path("filter/list/{page}/size/{size}")
@@ -361,5 +468,29 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
-}
+
+	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的分类列表.", action = ActionQueryListWithFilterPaging.class)
+	@POST
+	@Path("filter/list/{page}/size/{size}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listWithFilterPagingMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+											@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListWithFilterPaging.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListWithFilterPaging().execute( request, page, size, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+}

+ 44 - 21
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/categoryinfo/CategoryInfoAnonymousAction.java

@@ -26,13 +26,13 @@ import java.util.List;
 public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 
 	private static  Logger logger = LoggerFactory.getLogger( CategoryInfoAnonymousAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "根据Flag获取分类信息对象.", action = ActionGetAnonymous.class)
 	@GET
 	@Path("{flag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("栏目标识") @PathParam("flag") String flag) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionGetAnonymous.Wo> result = null;
@@ -46,16 +46,16 @@ public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息分类,下一页.", action = ActionListNextWithFilterAnonymous.class)
 	@PUT
 	@Path("filter/list/{id}/next/{count}/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
-			@JaxrsParameterDescribe("栏目ID")  @PathParam("appId") String appId, 
+	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+			@JaxrsParameterDescribe("栏目ID")  @PathParam("appId") String appId,
 			JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListNextWithFilterAnonymous.Wo>> result = null;
@@ -69,14 +69,37 @@ public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示根据过滤条件的信息分类,下一页.", action = ActionListNextWithFilterAnonymous.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/app/{appId}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									@JaxrsParameterDescribe("栏目ID")  @PathParam("appId") String appId,
+									JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionListNextWithFilterAnonymous.Wo>> result = null;
+		try {
+			result = new ActionListNextWithFilterAnonymous().execute( request, effectivePerson, id, count, jsonElement);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionCategoryInfoProcess( e, "列示根据过滤条件的信息分类时发生异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取用户有查看访问文章信息的所有分类列表.", action = ActionListWhatICanView_Article.class)
 	@GET
 	@Path("list/view/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewableCategoryInfo_Article( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewableCategoryInfo_Article( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanView_Article.Wo>> result = new ActionResult<>();
 		try {
@@ -89,14 +112,14 @@ public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有查看访问数据信息的所有分类列表.", action = ActionListWhatICanView_Data.class)
 	@GET
 	@Path("list/view/app/{appId}/data")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewableCategoryInfo_Data( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewableCategoryInfo_Data( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanView_Data.Wo>> result = new ActionResult<>();
 		try {
@@ -109,14 +132,14 @@ public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有查看访问信息的所有分类列表.", action = ActionListWhatICanView_AllType.class)
 	@GET
 	@Path("list/view/app/{appId}/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewableCategoryInfo_AllType( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewableCategoryInfo_AllType( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanView_AllType.Wo>> result = new ActionResult<>();
 		try {
@@ -129,14 +152,14 @@ public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取用户有权限发布信息的所有分类列表.", action = ActionListWhatICanPublish.class)
 	@GET
 	@Path("list/publish/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPublishableCategoryInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listPublishableCategoryInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListWhatICanPublish.Wo>> result = new ActionResult<>();
 		try {
@@ -148,5 +171,5 @@ public class CategoryInfoAnonymousAction extends StandardJaxrsAction{
 			logger.error( e, effectivePerson, request, null);
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}	
-}
+	}
+}

+ 99 - 20
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/comment/DocumentCommentInfoAction.java

@@ -44,15 +44,15 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示评论信息,按页码分页.", action = ActionListPageWithFilter.class)
 	@PUT
 	@Path("list/{page}/size/{size}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void listPageWithFilter(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "page" ) Integer page, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "size" ) Integer size, 
+			@JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "page" ) Integer page,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "size" ) Integer size,
 			@JaxrsParameterDescribe("查询过滤条件") JsonElement jsonElement ) {
 		ActionResult<List<ActionListPageWithFilter.Wo>> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
@@ -64,15 +64,35 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示评论信息,按页码分页.", action = ActionListPageWithFilter.class)
+	@POST
+	@Path("list/{page}/size/{size}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPageWithFilterMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								   @JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "page" ) Integer page,
+								   @JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "size" ) Integer size,
+								   @JaxrsParameterDescribe("查询过滤条件") JsonElement jsonElement ) {
+		ActionResult<List<ActionListPageWithFilter.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionListPageWithFilter().execute(request, effectivePerson, page, size, jsonElement );
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示评论信息,上一页.", action = ActionListPrevWithFilter.class)
 	@PUT
 	@Path("list/{id}/prev/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void listPrevWithFilter(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-			@JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "id" ) String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "count" ) Integer count, 
+			@JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "id" ) String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "count" ) Integer count,
 			@JaxrsParameterDescribe("查询过滤条件") JsonElement jsonElement ) {
 		ActionResult<List<ActionListPrevWithFilter.Wo>> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
@@ -84,15 +104,35 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示评论信息,上一页.", action = ActionListPrevWithFilter.class)
+	@POST
+	@Path("list/{id}/prev/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPrevWithFilterMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								   @JaxrsParameterDescribe("最后一条信息数据的ID") @PathParam( "id" ) String id,
+								   @JaxrsParameterDescribe("每页显示的条目数量") @PathParam( "count" ) Integer count,
+								   @JaxrsParameterDescribe("查询过滤条件") JsonElement jsonElement ) {
+		ActionResult<List<ActionListPrevWithFilter.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionListPrevWithFilter().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 = 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("最后一条信息数据的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);
@@ -104,13 +144,33 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示评论信息,下一页.", action = ActionListNextWithFilter.class)
+	@POST
+	@Path("list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost(@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 = ActionSave.class)
 	@POST
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void save(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
+	public void save(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
 			@JaxrsParameterDescribe("需要保存的评论信息") JsonElement jsonElement ) {
 		ActionResult<ActionSave.Wo> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
@@ -122,14 +182,14 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		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, 
+	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);
@@ -141,13 +201,32 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "根据标识删除评论信息.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet(@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));
+	}
+
 	@JaxrsMethodDescribe(value = "文档评论点赞.", action = ActionPersistCommend.class)
 	@GET
 	@Path("{id}/commend")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_commend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void persist_commend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("评论ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistCommend.Wo> result = new ActionResult<>();
@@ -163,13 +242,13 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "取消文档评论点赞.", action = ActionPersistUnCommend.class)
 	@GET
 	@Path("{id}/uncommend")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_unCommend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void persist_unCommend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("评论ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistUnCommend.Wo> result = new ActionResult<>();
@@ -185,4 +264,4 @@ public class DocumentCommentInfoAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 405 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/data/DataAction.java

@@ -251,6 +251,24 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocument.class)
+	@POST
+	@Path("document/{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								   @JaxrsParameterDescribe("文档ID") @PathParam("id") String id, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocument.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocument().execute(effectivePerson, id, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath0.class)
 	@PUT
 	@Path("document/{id}/{path0}")
@@ -270,6 +288,25 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath0.class)
+	@POST
+	@Path("document/{id}/{path0}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath0MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath0.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath0().execute(effectivePerson, id, path0, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath1.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}")
@@ -290,6 +327,26 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath1.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath1MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath1.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath1().execute(effectivePerson, id, path0, path1, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath2.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}/{path2}")
@@ -311,6 +368,27 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath2.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/{path2}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath2MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath2.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath2().execute(effectivePerson, id, path0, path1, path2, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath3.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}")
@@ -334,6 +412,29 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath3.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath3MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath3.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath3().execute(effectivePerson, id, path0, path1, path2, path3,
+					jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath4.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}")
@@ -358,6 +459,30 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath4.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath4MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath4.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath4().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath5.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}")
@@ -383,6 +508,31 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath5.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath5MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+											@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath5.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath5().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					path5, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath6.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}")
@@ -409,6 +559,32 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath6.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath6MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+											@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+											@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath6.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath6().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					path5, path6, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath7.class)
 	@PUT
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}")
@@ -436,6 +612,33 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新指定Document的Data数据.", action = ActionUpdateWithDocumentPath7.class)
+	@POST
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateWithDocumentWithPath7MockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+											@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+											@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6,
+											@JaxrsParameterDescribe("7级路径") @PathParam("path7") String path7, JsonElement jsonElement) {
+		ActionResult<ActionUpdateWithDocumentPath7.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdateWithDocumentPath7().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					path5, path6, path7, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document添加局部data数据.", action = ActionCreateWithDocument.class)
 	@POST
 	@Path("document/{id}")
@@ -657,6 +860,24 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocument.class)
+	@GET
+	@Path("document/{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentMockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								   @JaxrsParameterDescribe("文档ID") @PathParam("id") String id) {
+		ActionResult<ActionDeleteWithDocument.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocument().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath0.class)
 	@DELETE
 	@Path("document/{id}/{path0}")
@@ -676,6 +897,25 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath0.class)
+	@GET
+	@Path("document/{id}/{path0}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath0MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0) {
+		ActionResult<ActionDeleteWithDocumentPath0.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath0().execute(effectivePerson, id, path0);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath1.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}")
@@ -696,6 +936,26 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath1.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath1MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1) {
+		ActionResult<ActionDeleteWithDocumentPath1.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath1().execute(effectivePerson, id, path0, path1);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath2.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}/{path2}")
@@ -717,6 +977,27 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath2.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/{path2}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath2MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2) {
+		ActionResult<ActionDeleteWithDocumentPath2.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath2().execute(effectivePerson, id, path0, path1, path2);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath3.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}")
@@ -739,6 +1020,28 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath3.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath3MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3) {
+		ActionResult<ActionDeleteWithDocumentPath3.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath3().execute(effectivePerson, id, path0, path1, path2, path3);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath4.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}")
@@ -762,6 +1065,29 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath4.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath4MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4) {
+		ActionResult<ActionDeleteWithDocumentPath4.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath4().execute(effectivePerson, id, path0, path1, path2, path3, path4);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath5.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}")
@@ -787,6 +1113,31 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath5.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath5MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+											@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5) {
+		ActionResult<ActionDeleteWithDocumentPath5.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath5().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					path5);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath6.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}")
@@ -813,6 +1164,32 @@ public class DataAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath6.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath6MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+											@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+											@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6) {
+		ActionResult<ActionDeleteWithDocumentPath6.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath6().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					path5, path6);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath7.class)
 	@DELETE
 	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}")
@@ -839,4 +1216,31 @@ public class DataAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "对指定的document删除局部data数据.", action = ActionDeleteWithDocumentPath7.class)
+	@GET
+	@Path("document/{id}/{path0}/{path1}/{path2}/{path3}/{path4}/{path5}/{path6}/{path7}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteWithDocumentWithPath7MockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+											@JaxrsParameterDescribe("0级路径") @PathParam("path0") String path0,
+											@JaxrsParameterDescribe("1级路径") @PathParam("path1") String path1,
+											@JaxrsParameterDescribe("2级路径") @PathParam("path2") String path2,
+											@JaxrsParameterDescribe("3级路径") @PathParam("path3") String path3,
+											@JaxrsParameterDescribe("4级路径") @PathParam("path4") String path4,
+											@JaxrsParameterDescribe("5级路径") @PathParam("path5") String path5,
+											@JaxrsParameterDescribe("6级路径") @PathParam("path6") String path6,
+											@JaxrsParameterDescribe("7级路径") @PathParam("path7") String path7) {
+		ActionResult<ActionDeleteWithDocumentPath7.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDeleteWithDocumentPath7().execute(effectivePerson, id, path0, path1, path2, path3, path4,
+					path5, path6, path7);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 14 - 14
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishAndNotify.java

@@ -69,20 +69,20 @@ public class ActionPersistPublishAndNotify extends BaseAction {
 				modifyDocStatus( id, "published", effectivePerson.getDistinguishedName() );
 				document.setDocStatus("published");
 				document.setPublishTime(new Date());
-				
+
 				document = documentPersistService.refreshDocInfoData( document );
-				
+
 				Wo wo = new Wo();
 				wo.setId( document.getId() );
 				result.setData( wo );
-				
+
 				//检查是否需要删除热点图片
 				try {
 					ThisApplication.queueDocumentUpdate.send( document );
 				} catch ( Exception e1 ) {
 					e1.printStackTrace();
 				}
-				
+
 			} catch (Exception e) {
 				Exception exception = new ExceptionDocumentInfoProcess(e, "系统将文档状态修改为发布状态时发生异常。Id:" + id);
 				result.error(exception);
@@ -186,7 +186,7 @@ public class ActionPersistPublishAndNotify extends BaseAction {
 				logger.error(e, effectivePerson, request, null);
 			}
 		}
-		
+
 		//判断是否需要发送通知消息
 		if (check) {
 			try {
@@ -204,7 +204,7 @@ public class ActionPersistPublishAndNotify extends BaseAction {
 //					}
 					if( categoryInfo.getSendNotify() ){
 						logger.info("try to add notify object to queue for document:" + document.getTitle() );
-						ThisApplication.queueSendDocumentNotify.send( document );
+						ThisApplication.queueSendDocumentNotify.send( document.getId() );
 					}
 				}
 			} catch (Exception e) {
@@ -221,21 +221,21 @@ public class ActionPersistPublishAndNotify extends BaseAction {
 	}
 
 	public static class Wi {
-		
+
 		public static WrapCopier<Wi, Document> copier = WrapCopierFactory.wi( Wi.class, Document.class, null, JpaObject.FieldsUnmodify );
-		
+
 		@FieldDescribe( "文档读者." )
 		private List<PermissionInfo> readerList = null;
-		
+
 		@FieldDescribe( "文档编辑者." )
 		private List<PermissionInfo> authorList = null;
-		
+
 		@FieldDescribe( "图片列表." )
 		private List<String> cloudPictures = null;
-		
+
 		@FieldDescribe( "不修改权限(跳过权限设置,保留原来的设置)." )
 		private Boolean skipPermission  = false;
-		
+
 		public Boolean getSkipPermission() {
 			return skipPermission;
 		}
@@ -269,8 +269,8 @@ public class ActionPersistPublishAndNotify extends BaseAction {
 		}
 
 	}
-	
+
 	public static class Wo extends WoId {
 
 	}
-}
+}

+ 27 - 26
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishByWorkFlow.java

@@ -211,10 +211,11 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 
 		if (check) {
 			try {
-				JsonElement docData = XGsonBuilder.instance().toJsonTree(wi.getDocData(), Map.class);
 				wi.setDocStatus("published");
-				wi.setPublishTime(new Date());
-				document = documentPersistService.save(wi, docData);
+				if(wi.getPublishTime()==null) {
+					wi.setPublishTime(new Date());
+				}
+				document = documentPersistService.save(wi, wi.getDocData());
 			} catch (Exception e) {
 				check = false;
 				Exception exception = new ExceptionDocumentInfoProcess(e, "系统在创建文档信息时发生异常!");
@@ -375,14 +376,14 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 			}
 		}
 
-		//判断是否需要发送通知消息
-		if (check) {
+		//判断是否需要发送通知消息 后端业务接口不需要发送消息
+		/*if (check) {
 			try {
 				Boolean notify = false;
 				if( categoryInfo.getSendNotify() == null ) {
 					if( StringUtils.equals("信息", categoryInfo.getDocumentType()) ) {
 						notify = true;
-					}						
+					}
 				}else {
 					if( categoryInfo.getSendNotify() ) {
 						notify = true;
@@ -390,7 +391,7 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 				}
 				if( notify ){
 					logger.info("try to add notify object to queue for document:" + document.getTitle() );
-					ThisApplication.queueSendDocumentNotify.send( document );
+					ThisApplication.queueSendDocumentNotify.send( document.getId() );
 				}
 			} catch (Exception e) {
 				check = false;
@@ -398,7 +399,7 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 				result.error( exception );
 				logger.error( e, effectivePerson, request, null);
 			}
-		}
+		}*/
 
 		CacheManager.notify(Document.class);
 		return result;
@@ -439,43 +440,43 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 	}
 
 	public static class Wi extends Document {
-		
+
 		private static final long serialVersionUID = -5076990764713538973L;
-		
+
 		public static List<String> Excludes = new ArrayList<String>(JpaObject.FieldsUnmodify);
-		
+
 		public static WrapCopier<Wi, Document> copier = WrapCopierFactory.wi( Wi.class, Document.class, null, JpaObject.FieldsUnmodify);
 
 		@FieldDescribe( "文档操作者身份." )
 		private String identity = null;
-		
+
 		@FieldDescribe( "数据的路径列表." )
 		private String[] dataPaths = null;
-		
+
 		@FieldDescribe( "启动流程的JobId." )
 		private String wf_jobId = null;
-		
+
 		@FieldDescribe( "启动流程的WorkId." )
 		private String wf_workId = null;
-		
+
 		@FieldDescribe( "启动流程的附件列表." )
-		private String[] wf_attachmentIds = null;	
-		
+		private String[] wf_attachmentIds = null;
+
 		@FieldDescribe( "文档数据." )
-		private Map<?, ?> docData = null;
-		
+		private JsonElement docData = null;
+
 		@FieldDescribe( "文档读者." )
 		private List<PermissionInfo> readerList = null;
 
 		@FieldDescribe( "文档编辑者." )
 		private List<PermissionInfo> authorList = null;
-		
+
 		@FieldDescribe( "图片列表." )
 		private List<String> cloudPictures = null;
-		
+
 		@FieldDescribe( "不修改权限(跳过权限设置,保留原来的设置)." )
-		private Boolean skipPermission  = false;	
-		
+		private Boolean skipPermission  = false;
+
 		public Boolean getSkipPermission() {
 			return skipPermission;
 		}
@@ -519,11 +520,11 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 			this.dataPaths = dataPaths;
 		}
 
-		public Map<?, ?> getDocData() {
+		public JsonElement getDocData() {
 			return docData;
 		}
 
-		public void setDocData(Map<?, ?> docData) {
+		public void setDocData(JsonElement docData) {
 			this.docData = docData;
 		}
 
@@ -564,4 +565,4 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 	public static class Wo extends WoId {
 
 	}
-}
+}

+ 69 - 35
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishContent.java

@@ -201,7 +201,7 @@ public class ActionPersistPublishContent extends BaseAction {
 						wi.setCreatorIdentity( userManagerService.getMajorIdentityWithPerson( wi.getCreatorPerson() ) );
 					}
 				}
-				
+
 				if ( !StringUtils.equals(  "cipher", wi.getCreatorIdentity() ) && !StringUtils.equals(  "xadmin", wi.getCreatorIdentity() )) {
 					//说明是实际的用户,并不使用cipher和xadmin代替
 					if (StringUtils.isNotEmpty( wi.getCreatorIdentity() )) {
@@ -227,12 +227,11 @@ public class ActionPersistPublishContent extends BaseAction {
 
 		if (check) {
 			try {
-				JsonElement docData = XGsonBuilder.instance().toJsonTree(wi.getDocData(), Map.class);
 				wi.setDocStatus("published");
 				if( wi.getPublishTime() == null ) { wi.setPublishTime(new Date()); }
 				document =  wi.copier.copy(wi);
 				document.setId( wi.getId() );
-				document = documentPersistService.save( document, docData );
+				document = documentPersistService.save( document, wi.getDocData() );
 			} catch (Exception e) {
 				check = false;
 				Exception exception = new ExceptionDocumentInfoProcess(e, "系统在创建文档信息时发生异常!");
@@ -283,8 +282,44 @@ public class ActionPersistPublishContent extends BaseAction {
 			}
 		}
 
+		//从CMS其他文档中复制所有的附件到CMS
+		if (check) {
+			if ( wi.getCms_attachmentIds() != null && wi.getCms_attachmentIds().length > 0 ) {
+				FileInfo fileInfo = null;
+				FileInfo copyFileInfo = null;
+				StorageMapping mapping_attachment = null;
+				StorageMapping mapping_fileInfo = null;
+				byte[] attachment_content = null;
+				for (String attachmentId : wi.getCms_attachmentIds()) {
+					try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+						document = emc.find(document.getId(), Document.class, ExceptionWhen.not_found);
+						copyFileInfo = emc.find(attachmentId, FileInfo.class, ExceptionWhen.not_found);
+						if (copyFileInfo != null) {
+							emc.beginTransaction(FileInfo.class);
+							emc.beginTransaction(Document.class);
+
+							mapping_attachment = ThisApplication.context().storageMappings().get(FileInfo.class, copyFileInfo.getStorage());
+							attachment_content = copyFileInfo.readContent(mapping_attachment);
+
+							mapping_fileInfo = ThisApplication.context().storageMappings().random(FileInfo.class);
+							fileInfo = concreteFileInfo(effectivePerson.getDistinguishedName(), document, mapping_fileInfo, copyFileInfo.getName(), copyFileInfo.getSite());
+							fileInfo.saveContent(mapping_fileInfo, attachment_content, copyFileInfo.getName());
+							fileInfo.setName(copyFileInfo.getName());
+							emc.check(document, CheckPersistType.all);
+							emc.persist(fileInfo, CheckPersistType.all);
+
+							emc.commit();
+						}
+					} catch (Throwable th) {
+						th.printStackTrace();
+						result.error(th);
+					}
+				}
+			}
+		}
+
 		if (check) {
-			try {				
+			try {
 				Wo wo = new Wo();
 				wo.setId( document.getId() );
 				result.setData( wo );
@@ -397,7 +432,7 @@ public class ActionPersistPublishContent extends BaseAction {
 				if( categoryInfo.getSendNotify() == null ) {
 					if( StringUtils.equals("信息", categoryInfo.getDocumentType()) ) {
 						notify = true;
-					}						
+					}
 				}else {
 					if( categoryInfo.getSendNotify() ) {
 						notify = true;
@@ -405,7 +440,7 @@ public class ActionPersistPublishContent extends BaseAction {
 				}
 				if( notify ){
 					logger.debug("try to add notify object to queue for document:" + document.getTitle() );
-					ThisApplication.queueSendDocumentNotify.send( document );
+					ThisApplication.queueSendDocumentNotify.send( document.getId() );
 				}
 			} catch (Exception e) {
 				check = false;
@@ -454,40 +489,43 @@ public class ActionPersistPublishContent extends BaseAction {
 	}
 
 	public static class Wi {
-		
+
 		public static WrapCopier<Wi, Document> copier = WrapCopierFactory.wi( Wi.class, Document.class, null, null);
 
 		private String id = null;
 
 		@FieldDescribe( "文档操作者身份" )
 		private String identity = null;
-		
+
 //		@FieldDescribe( "数据的路径列表." )
 //		private String[] dataPaths = null;
-		
+
 		@FieldDescribe( "启动流程的JobId." )
 		private String wf_jobId = null;
-		
+
 		@FieldDescribe( "启动流程的WorkId." )
 		private String wf_workId = null;
-		
+
 		@FieldDescribe( "启动流程的附件列表." )
-		private String[] wf_attachmentIds = null;	
-		
+		private String[] wf_attachmentIds = null;
+
+		@FieldDescribe( "内容管理其他文档的附件列表,非必填" )
+		private String[] cms_attachmentIds = null;
+
 		@FieldDescribe( "文档数据JSON对象." )
-		private Map<?, ?> docData = null;
-		
+		private JsonElement docData = null;
+
 		@FieldDescribe( "文档读者,Json数组,权限对象需要包含四个属性:<br/>permission权限类别:读者|阅读|作者|管理,  <br/>permissionObjectType使用者类别:所有人|组织|人员|群组, <br/>permissionObjectCode使用者编码:所有人|组织编码|人员UID|群组编码, <br/>permissionObjectName使用者名称:所有人|组织名称|人员名称|群组名称" )
 		private List<PermissionInfo> readerList = null;
-		
+
 		@FieldDescribe( "文档编辑者, ,Json数组,权限对象需要包含四个属性:<br/>permission权限类别:读者|阅读|作者|管理,  <br/>permissionObjectType使用者类别:所有人|组织|人员|群组, <br/>permissionObjectCode使用者编码:所有人|组织编码|人员UID|群组编码, <br/>permissionObjectName使用者名称:所有人|组织名称|人员名称|群组名称" )
 		private List<PermissionInfo> authorList = null;
-		
+
 		private List<String> cloudPictures = null;
-		
+
 		@FieldDescribe( "不修改权限(跳过权限设置,保留原来的设置), True|False." )
 		private Boolean skipPermission  = false;
-		
+
 		@FieldDescribe("文档摘要,70字以内")
 		private String summary;
 
@@ -538,7 +576,7 @@ public class ActionPersistPublishContent extends BaseAction {
 		private Long commendCount = 0L;
 
 		private Long commentCount = 0L;
-		
+
 		private Date publishTime;
 
 		private Date modifyTime;
@@ -974,22 +1012,11 @@ public class ActionPersistPublishContent extends BaseAction {
 			this.readerList = readerList;
 		}
 
-//		public String[] getDataPaths() {
-//			if( dataPaths != null && dataPaths.length == 1 && dataPaths[0].equals("null")){
-//				return null;
-//			}
-//			return dataPaths;
-//		}
-//
-//		public void setDataPaths(String[] dataPaths) {
-//			this.dataPaths = dataPaths;
-//		}
-
-		public Map<?, ?> getDocData() {
+		public JsonElement getDocData() {
 			return docData;
 		}
 
-		public void setDocData(Map<?, ?> docData) {
+		public void setDocData(JsonElement docData) {
 			this.docData = docData;
 		}
 
@@ -1033,9 +1060,16 @@ public class ActionPersistPublishContent extends BaseAction {
 			this.authorList = authorList;
 		}
 
+		public String[] getCms_attachmentIds() {
+			return cms_attachmentIds;
+		}
+
+		public void setCms_attachmentIds(String[] cms_attachmentIds) {
+			this.cms_attachmentIds = cms_attachmentIds;
+		}
 	}
-	
+
 	public static class Wo extends WoId {
 
 	}
-}
+}

+ 36 - 40
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistSaveDocument.java

@@ -50,15 +50,15 @@ public class ActionPersistSaveDocument extends BaseAction {
 		try {
 			wi = this.convertToWrapIn( jsonElement, Wi.class );
 			document = Wi.copier.copy(wi);
-			document.setId( wi.getId() ); //继承传入的ID			
-			identity = wi.getIdentity();	
+			document.setId( wi.getId() ); //继承传入的ID
+			identity = wi.getIdentity();
 		} catch (Exception e ) {
 			check = false;
 			Exception exception = new ExceptionDocumentInfoProcess( e, "系统在将JSON信息转换为对象时发生异常。");
 			result.error( exception );
 			logger.error( e, effectivePerson, request, null);
 		}
-		
+
 		if (check) {
 			if( !"xadmin".equals( effectivePerson.getDistinguishedName() )) {
 				try {
@@ -166,15 +166,15 @@ public class ActionPersistSaveDocument extends BaseAction {
 
 		if (check) {
 			//补充部分信息
-//			document.setCategoryId(categoryInfo.getId());	
-			document.setAppId(appInfo.getId());					
-			document.setDocumentType( categoryInfo.getDocumentType() );	
+//			document.setCategoryId(categoryInfo.getId());
+			document.setAppId(appInfo.getId());
+			document.setDocumentType( categoryInfo.getDocumentType() );
 			document.setAppAlias( appInfo.getAppAlias());
 			document.setAppName(appInfo.getAppName());
 			document.setCategoryName(categoryInfo.getCategoryName());
 			document.setCategoryAlias(categoryInfo.getCategoryAlias());
 			document.setDocumentType( categoryInfo.getDocumentType() );
-			
+
 			if( !"信息".equals(document.getDocumentType()) && !"数据".equals( document.getDocumentType() )) {
 				document.setDocumentType( "信息" );
 			}
@@ -184,8 +184,8 @@ public class ActionPersistSaveDocument extends BaseAction {
 			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 				if( StringUtils.isNotEmpty( identity )) {
 					document.setCreatorIdentity( identity );
-				}				
-				
+				}
+
 				if (StringUtils.isEmpty( document.getCreatorIdentity() )) {
 					if( "cipher".equalsIgnoreCase( effectivePerson.getDistinguishedName() )) {
 						document.setCreatorIdentity("cipher");
@@ -202,7 +202,7 @@ public class ActionPersistSaveDocument extends BaseAction {
 						document.setCreatorIdentity(userManagerService.getMajorIdentityWithPerson( effectivePerson.getDistinguishedName()) );
 					}
 				}
-				
+
 				if ( !StringUtils.equals(  "cipher", document.getCreatorIdentity() ) && !StringUtils.equals(  "xadmin", document.getCreatorIdentity() )) {
 					//说明是指定的发布者,并不使用cipher和xadmin代替
 					if (StringUtils.isNotEmpty( document.getCreatorIdentity() )) {
@@ -219,7 +219,7 @@ public class ActionPersistSaveDocument extends BaseAction {
 				result.error(th);
 			}
 		}
-		
+
 //		if (check) {
 //			if ( StringUtils.isNotEmpty(identity)) {
 //				document.setCreatorIdentity( identity );
@@ -267,11 +267,7 @@ public class ActionPersistSaveDocument extends BaseAction {
 
 		if (check) {
 			try {
-				JsonElement dataJson = null;
-				if( wi.getDocData() != null ) {
-					dataJson = XGsonBuilder.instance().toJsonTree( wi.getDocData() );
-				}
-				document = documentPersistService.save( document, dataJson );
+				document = documentPersistService.save( document, wi.getDocData() );
 				CacheManager.notify(Document.class);
 
 				Wo wo = new Wo();
@@ -291,7 +287,7 @@ public class ActionPersistSaveDocument extends BaseAction {
 				logger.error(e, effectivePerson, request, null);
 			}
 		}
-		
+
 		// 处理文档的云文档图片信息
 		if (check) {
 			try {
@@ -363,7 +359,7 @@ public class ActionPersistSaveDocument extends BaseAction {
 				}
 			}
 		}
-		
+
 		if (check) {
 			try {//将读者以及作者信息持久化到数据库中
 				document = documentPersistService.refreshDocumentPermission( document.getId(), wi.getReaderList(), wi.getAuthorList() );
@@ -378,16 +374,16 @@ public class ActionPersistSaveDocument extends BaseAction {
 	}
 
 	public static class Wi{
-		
+
 		@FieldDescribe("ID,非必填,更新时必填写,不然就是新增文档")
 		private String id;
-		
+
 		@FieldDescribe("文档标题,<font style='color:red'>必填</font>")
 		private String title;
 
 		@FieldDescribe("分类ID,<font style='color:red'>必填</font>")
 		private String categoryId;
-		
+
 		@FieldDescribe( "文档操作者身份,如果不传入则取登录者信息。" )
 		private String identity = null;
 
@@ -396,42 +392,42 @@ public class ActionPersistSaveDocument extends BaseAction {
 
 		@FieldDescribe("文档状态: published | draft | checking | error,非必填,默认为draft")
 		private String docStatus = "draft";
-		
+
 		@FieldDescribe("文档发布时间")
 		private Date publishTime;
 
 		@FieldDescribe("首页图片列表,非必填")
-		private List<String> pictureList = null;		
-		
+		private List<String> pictureList = null;
+
 		@FieldDescribe( "数据的路径列表,非必填" )
 		private String[] dataPaths = null;
-		
+
 		@FieldDescribe( "启动流程的JobId,非必填" )
 		private String wf_jobId = null;
-		
+
 		@FieldDescribe( "启动流程的WorkId,非必填" )
 		private String wf_workId = null;
-		
+
 		@FieldDescribe( "启动流程的附件列表,非必填" )
-		private String[] wf_attachmentIds = null;	
-		
+		private String[] wf_attachmentIds = null;
+
 		@FieldDescribe( "文档数据,非必填" )
-		private Map<?, ?> docData = null;
-		
+		private JsonElement docData = null;
+
 		@FieldDescribe( "文档读者,非必填:{'permission':'读者', 'permissionObjectType':'组织', 'permissionObjectCode':'组织全称', 'permissionObjectName':'组织全称'}" )
 		private List<PermissionInfo> readerList = null;
-		
+
 		@FieldDescribe( "文档编辑者,非必填:{'permission':'读者', 'permissionObjectType':'组织', 'permissionObjectCode':'组织全称', 'permissionObjectName':'组织全称'}" )
 		private List<PermissionInfo> authorList = null;
-		
+
 		@FieldDescribe( "图片列表,非必填" )
 		private List<String> cloudPictures = null;
-		
+
 		@FieldDescribe( "不修改权限(跳过权限设置,保留原来的设置),非必填" )
-		private Boolean skipPermission  = false;	
+		private Boolean skipPermission  = false;
 
 		public static WrapCopier<Wi, Document> copier = WrapCopierFactory.wi( Wi.class, Document.class, null, JpaObject.FieldsUnmodifyExcludeId);
-		
+
 		public String getId() {
 			return id;
 		}
@@ -487,7 +483,7 @@ public class ActionPersistSaveDocument extends BaseAction {
 		public void setIdentity(String identity) {
 			this.identity = identity;
 		}
-		
+
 		public List<PermissionInfo> getReaderList() {
 			return readerList;
 		}
@@ -515,11 +511,11 @@ public class ActionPersistSaveDocument extends BaseAction {
 			this.dataPaths = dataPaths;
 		}
 
-		public Map<?, ?> getDocData() {
+		public JsonElement getDocData() {
 			return docData;
 		}
 
-		public void setDocData(Map<?, ?> docData) {
+		public void setDocData(JsonElement docData) {
 			this.docData = docData;
 		}
 
@@ -575,4 +571,4 @@ public class ActionPersistSaveDocument extends BaseAction {
 	public static class Wo extends WoId {
 
 	}
-}
+}

+ 90 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistViewRecord.java

@@ -0,0 +1,90 @@
+package com.x.cms.assemble.control.jaxrs.document;
+
+import com.google.gson.JsonElement;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.annotation.FieldTypeDescribe;
+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.WrapBoolean;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.organization.Person;
+import com.x.base.core.project.tools.DateTools;
+import com.x.base.core.project.tools.ListTools;
+import com.x.cms.core.entity.Document;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+public class ActionPersistViewRecord extends BaseAction {
+
+	private static  Logger logger = LoggerFactory.getLogger(ActionPersistViewRecord.class);
+
+	protected ActionResult<Wo> execute(HttpServletRequest request, String id, JsonElement jsonElement, EffectivePerson effectivePerson) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+
+		Document document  = documentQueryService.get(id);
+		if (null == document) {
+			throw new ExceptionDocumentNotExists(id);
+		}
+
+		Wi wi = this.convertToWrapIn(jsonElement, Wi.class );
+		if(ListTools.isNotEmpty(wi.getRecordList())){
+			for (ViewRecordWi viewRecordWi : wi.getRecordList()){
+				Person person = this.userManagerService.getPerson(viewRecordWi.getPerson());
+				if (person != null) {
+					documentViewRecordServiceAdv.addViewRecord(id, person.getDistinguishedName(), DateTools.parse(viewRecordWi.getViewTime()));
+				}
+			}
+		}
+		Wo wo = new Wo();
+		wo.setValue(true);
+
+		return result;
+	}
+
+	public static class Wo extends WrapBoolean {
+
+	}
+
+	public static class Wi extends GsonPropertyObject {
+		@FieldDescribe("阅读记录列表")
+		@FieldTypeDescribe(fieldType = "class", fieldTypeName = "Module", fieldValue = "{\"person\": \"阅读人员\", \"viewTime\": \"阅读时间(格式:2020-08-08)\"}")
+		private List<ViewRecordWi> recordList;
+
+		public List<ViewRecordWi> getRecordList() {
+			return recordList;
+		}
+
+		public void setRecordList(List<ViewRecordWi> recordList) {
+			this.recordList = recordList;
+		}
+	}
+
+	public static class ViewRecordWi extends GsonPropertyObject {
+
+		@FieldDescribe("阅读人员")
+		private String person;
+		@FieldDescribe("阅读时间(格式:2020-08-08)")
+		private String viewTime;
+
+		public String getPerson() {
+			return person;
+		}
+
+		public void setPerson(String person) {
+			this.person = person;
+		}
+
+		public String getViewTime() {
+			return viewTime;
+		}
+
+		public void setViewTime(String viewTime) {
+			this.viewTime = viewTime;
+		}
+	}
+
+
+}

+ 279 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAction.java

@@ -53,6 +53,30 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "变更指定文档的分类信息.", action = ActionPersistChangeCategory.class)
+	@POST
+	@Path("category/change/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_changeCategoryMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+									   @Context HttpServletRequest request, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistChangeCategory.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionPersistChangeCategory().execute(request, jsonElement, effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "指修改指定文档的数据。", action = ActionPersistBatchModifyData.class)
 	@PUT
 	@Path("batch/data/modify")
@@ -75,6 +99,28 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "指修改指定文档的数据。", action = ActionPersistBatchModifyData.class)
+	@POST
+	@Path("batch/data/modify/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_batchDataModifyMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+										@Context HttpServletRequest request, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistBatchModifyData.Wo> result = new ActionResult<>();
+		Boolean check = true;
+		if (check) {
+			try {
+				result = new ActionPersistBatchModifyData().execute(request, jsonElement, effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据导入批次号查询导入状态信息.", action = ActionQueryImportStatusWithName.class)
 	@GET
 	@Path("batch/{batchName}/status")
@@ -213,6 +259,29 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "查询符合过滤条件的已发布的信息数量.", action = ActionQueryCountWithFilter.class)
+	@POST
+	@Path("filter/count/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_countDocumentWithFilterMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											  @Context HttpServletRequest request, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionQueryCountWithFilter.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionQueryCountWithFilter().execute(request, jsonElement, effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据ID删除信息发布文档信息.", action = ActionPersistDeleteDocument.class)
 	@DELETE
 	@Path("{id}")
@@ -232,6 +301,25 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据ID删除信息发布文档信息.", action = ActionPersistDeleteDocument.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_deleteMockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							   @JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistDeleteDocument.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionPersistDeleteDocument().execute(request, id, effectivePerson);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			result.error(e);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据批次号删除信息发布文档信息.", action = ActionPersistDeleteWithBatch.class)
 	@DELETE
 	@Path("batch/{batchId}")
@@ -252,6 +340,26 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据批次号删除信息发布文档信息.", action = ActionPersistDeleteWithBatch.class)
+	@GET
+	@Path("batch/{batchId}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_deleteWithBatchNameMockDeleteToGet(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request,
+											@JaxrsParameterDescribe("信息文档ID") @PathParam("batchId") String batchId) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistDeleteWithBatch.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionPersistDeleteWithBatch().execute(request, batchId, effectivePerson);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			result.error(e);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据ID归档信息发布文档信息.", action = ActionPersistArchive.class)
 	@GET
 	@Path("achive/{id}")
@@ -296,6 +404,31 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据文档ID正式发布文档,并且使用Message通知所有的阅读者。", action = ActionPersistPublishAndNotify.class)
+	@POST
+	@Path("publish/{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_publishAndNotifyMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+										 @Context HttpServletRequest request, @JaxrsParameterDescribe("文档ID") @PathParam("id") String id,
+										 JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistPublishAndNotify.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionPersistPublishAndNotify().execute(request, id, effectivePerson, jsonElement);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "直接发布信息内容,创建新的信息发布文档并且直接发布.", action = ActionPersistPublishContent.class)
 	@PUT
 	@Path("publish/content")
@@ -321,6 +454,31 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "直接发布信息内容,创建新的信息发布文档并且直接发布.", action = ActionPersistPublishContent.class)
+	@POST
+	@Path("publish/content/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_publishContentMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+									   @Context HttpServletRequest request, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistPublishContent.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			System.out.println("please wait, system try to publish content......");
+			try {
+				result = new ActionPersistPublishContent().execute(request, jsonElement, effectivePerson);
+				System.out.println("system publish content successful!");
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据ID取消信息内容发布状态,修改为草稿.", action = ActionPersistPublishCancel.class)
 	@PUT
 	@Path("publish/{id}/cancel")
@@ -340,6 +498,25 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据ID取消信息内容发布状态,修改为草稿.", action = ActionPersistPublishCancel.class)
+	@POST
+	@Path("publish/{id}/cancel/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_publishCancelMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									  @JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<ActionPersistPublishCancel.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionPersistPublishCancel().execute(request, id, effectivePerson);
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			result.error(e);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 下一页.", action = ActionQueryListNextWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/next/{count}")
@@ -365,6 +542,31 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 下一页.", action = ActionQueryListNextWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listNextWithFilterMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+										 @Context HttpServletRequest request,
+										 @JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+										 @JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionQueryListNextWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionQueryListNextWithFilter().execute(request, id, count, jsonElement, effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 上一页.", action = ActionQueryListPrevWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/prev/{count}")
@@ -390,6 +592,31 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 上一页.", action = ActionQueryListPrevWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/prev/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listPrevWithFilterMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+										 @Context HttpServletRequest request,
+										 @JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+										 @JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionQueryListPrevWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionQueryListPrevWithFilter().execute(request, id, count, jsonElement, effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的草稿信息内容, 下一页.", action = ActionQueryListDraftNextWithFilter.class)
 	@PUT
 	@Path("draft/list/{id}/next/{count}")
@@ -416,6 +643,32 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的草稿信息内容, 下一页.", action = ActionQueryListDraftNextWithFilter.class)
+	@POST
+	@Path("draft/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listDraftNextWithFilterMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+											  @Context HttpServletRequest request,
+											  @JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+											  @JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionQueryListDraftNextWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionQueryListDraftNextWithFilter().execute(request, id, count, jsonElement,
+						effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据信息发布文档ID查询文档第一张图片信息列表.", action = ActionQueryGetFirstPicture.class)
 	@GET
 	@Path("pictures/{id}/first")
@@ -619,6 +872,31 @@ public class DocumentAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的已发布的信息内容.", action = ActionQueryListWithFilterPaging.class)
+	@POST
+	@Path("filter/list/{page}/size/{size}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listWithFilterPagingMockPutToPost(@Suspended final AsyncResponse asyncResponse,
+										   @Context HttpServletRequest request, @JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+										   @JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		ActionResult<List<ActionQueryListWithFilterPaging.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if (check) {
+			try {
+				result = new ActionQueryListWithFilterPaging().execute(request, page, size, jsonElement,
+						effectivePerson);
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error(e);
+				logger.error(e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取文件访问控制信息.", action = ActionQueryGetControl.class)
 	@GET
 	@Path("{id}/control")
@@ -728,4 +1006,4 @@ public class DocumentAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 333 - 63
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAction2.java

@@ -38,7 +38,30 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistChangeCategory.Wo> result = new ActionResult<>();
 		Boolean check = true;
-		
+
+		if( check ){
+			try {
+				result = new ActionPersistChangeCategory().execute( request, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "变更指定文档的分类信息.", action = ActionPersistChangeCategory.class)
+	@POST
+	@Path("category/change/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_changeCategoryMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistChangeCategory.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
 		if( check ){
 			try {
 				result = new ActionPersistChangeCategory().execute( request, jsonElement, effectivePerson );
@@ -48,10 +71,10 @@ public class DocumentAction2 extends StandardJaxrsAction{
 				logger.error( e, effectivePerson, request, null);
 			}
 		}
-		
+
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "指修改指定文档的数据。", action = ActionPersistBatchModifyData.class)
 	@PUT
 	@Path("batch/data/modify")
@@ -72,13 +95,34 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "指修改指定文档的数据。", action = ActionPersistBatchModifyData.class)
+	@POST
+	@Path("batch/data/modify/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_batchDataModifyMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistBatchModifyData.Wo> result = new ActionResult<>();
+		Boolean check = true;
+		if( check ){
+			try {
+				result = new ActionPersistBatchModifyData().execute( request, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据导入批次号查询导入状态信息.", action = ActionQueryImportStatusWithName.class)
 	@GET
 	@Path("batch/{batchName}/status")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_checkImportStatus( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_checkImportStatus( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("导入批次号") @PathParam("batchName") String batchName) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<DataImportStatus> result = new ActionResult<>();
@@ -91,7 +135,7 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "查询所有的导入状态信息.", action = ActionQueryAllImportStatus.class)
 	@GET
 	@Path("batch/status")
@@ -109,13 +153,13 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID获取信息发布文档信息对象详细信息,包括附件列表,数据信息.", action = ActionQueryGetDocument.class)
 	@GET
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryGetDocument.Wo> result = new ActionResult<>();
@@ -128,7 +172,7 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示文档对象可供排序和展示使用的列名.", action = ActionQueryListDocumentFields.class)
 	@GET
 	@Path("document/fields")
@@ -146,14 +190,14 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
-	
+
+
 	@JaxrsMethodDescribe(value = "根据ID访问信息发布文档信息对象详细信息,包括附件列表,数据信息.", action = ActionQueryViewDocument.class)
 	@GET
 	@Path("{id}/view")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_view( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_view( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryViewDocument.Wo> result = new ActionResult<>();
@@ -166,13 +210,13 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID获取信息发布文档信息被访问次数.", action = ActionQueryCountViewTimes.class)
 	@GET
 	@Path("{id}/view/count")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_getViewCount( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_getViewCount( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryCountViewTimes.Wo> result = new ActionResult<>();
@@ -185,7 +229,7 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "查询符合过滤条件的已发布的信息数量.", action = ActionQueryCountWithFilter.class)
 	@PUT
 	@Path("filter/count")
@@ -207,14 +251,55 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "查询符合过滤条件的已发布的信息数量.", action = ActionQueryCountWithFilter.class)
+	@POST
+	@Path("filter/count/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_countDocumentWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionQueryCountWithFilter.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryCountWithFilter().execute( request,  jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据ID删除信息发布文档信息.", action = ActionPersistDeleteDocument.class)
 	@DELETE
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_delete( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {		
+	public void persist_delete( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistDeleteDocument.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionPersistDeleteDocument().execute( request, id, effectivePerson );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "根据ID删除信息发布文档信息.", action = ActionPersistDeleteDocument.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_deleteMockDeleteToGet( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+								@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistDeleteDocument.Wo> result = new ActionResult<>();
 		try {
@@ -226,14 +311,33 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据批次号删除信息发布文档信息.", action = ActionPersistDeleteWithBatch.class)
 	@DELETE
 	@Path("batch/{batchId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_deleteWithBatchName( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("信息文档ID") @PathParam("batchId") String batchId) {		
+	public void persist_deleteWithBatchName( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("信息文档ID") @PathParam("batchId") String batchId) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistDeleteWithBatch.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionPersistDeleteWithBatch().execute( request, batchId, effectivePerson );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "根据批次号删除信息发布文档信息.", action = ActionPersistDeleteWithBatch.class)
+	@GET
+	@Path("batch/{batchId}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_deleteWithBatchNameMockDeleteToGet( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											 @JaxrsParameterDescribe("信息文档ID") @PathParam("batchId") String batchId) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistDeleteWithBatch.Wo> result = new ActionResult<>();
 		try {
@@ -245,14 +349,14 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID归档信息发布文档信息.", action = ActionPersistArchive.class)
 	@GET
 	@Path("achive/{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_achive( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {		
+	public void persist_achive( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistArchive.Wo> result = new ActionResult<>();
 		try {
@@ -264,14 +368,38 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据文档ID正式发布文档,并且使用Message通知所有的阅读者。", action = ActionPersistPublishAndNotify.class)
 	@PUT
 	@Path("publish/{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_publishAndNotify( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("文档ID") @PathParam("id") String id, JsonElement jsonElement ) {		
+	public void persist_publishAndNotify( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("文档ID") @PathParam("id") String id, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistPublishAndNotify.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionPersistPublishAndNotify().execute( request, id, effectivePerson, jsonElement );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "根据文档ID正式发布文档,并且使用Message通知所有的阅读者。", action = ActionPersistPublishAndNotify.class)
+	@POST
+	@Path("publish/{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_publishAndNotifyMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+										  @JaxrsParameterDescribe("文档ID") @PathParam("id") String id, JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistPublishAndNotify.Wo> result = new ActionResult<>();
 		Boolean check = true;
@@ -285,20 +413,44 @@ public class DocumentAction2 extends StandardJaxrsAction{
 				logger.error( e, effectivePerson, request, null);
 			}
 		}
-		
+
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "直接发布信息内容,创建新的信息发布文档并且直接发布.", action = ActionPersistPublishContent.class)
 	@PUT
 	@Path("publish/content")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_publishContent( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {		
+	public void persist_publishContent( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistPublishContent.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			System.out.println( "please wait, system try to publish content......" );
+			try {
+				result = new ActionPersistPublishContent().execute( request, jsonElement, effectivePerson );
+				System.out.println( "system publish content successful!" );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "直接发布信息内容,创建新的信息发布文档并且直接发布.", action = ActionPersistPublishContent.class)
+	@POST
+	@Path("publish/content/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_publishContentMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistPublishContent.Wo> result = new ActionResult<>();
 		Boolean check = true;
-		
+
 		if( check ){
 			System.out.println( "please wait, system try to publish content......" );
 			try {
@@ -312,14 +464,33 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID取消信息内容发布状态,修改为草稿.", action = ActionPersistPublishCancel.class)
 	@PUT
 	@Path("publish/{id}/cancel")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_publishCancel( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {		
+	public void persist_publishCancel( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistPublishCancel.Wo> result = new ActionResult<>();
+		try {
+			result = new ActionPersistPublishCancel().execute( request, id, effectivePerson );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "根据ID取消信息内容发布状态,修改为草稿.", action = ActionPersistPublishCancel.class)
+	@POST
+	@Path("publish/{id}/cancel/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_publishCancelMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									   @JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistPublishCancel.Wo> result = new ActionResult<>();
 		try {
@@ -331,15 +502,15 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 下一页.", action = ActionQueryListNextWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/next/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void query_listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListNextWithFilter.Wo>> result = new ActionResult<>();
@@ -357,6 +528,31 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 下一页.", action = ActionQueryListNextWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+										  @JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+										  @JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+										  JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListNextWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListNextWithFilter().execute( request, id, count, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 上一页.", action = ActionQueryListPrevWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/prev/{count}")
@@ -381,15 +577,40 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 上一页.", action = ActionQueryListPrevWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/prev/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listPrevWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+										  @JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+										  @JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+										  JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListPrevWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListPrevWithFilter().execute( request, id, count, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的草稿信息内容, 下一页.", action = ActionQueryListDraftNextWithFilter.class)
 	@PUT
 	@Path("draft/list/{id}/next/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_listDraftNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void query_listDraftNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListDraftNextWithFilter.Wo>> result = new ActionResult<>();
@@ -407,12 +628,37 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的草稿信息内容, 下一页.", action = ActionQueryListDraftNextWithFilter.class)
+	@POST
+	@Path("draft/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listDraftNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											   @JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+											   @JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+											   JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListDraftNextWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListDraftNextWithFilter().execute( request, id, count, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据信息发布文档ID查询文档第一张图片信息列表.", action = ActionQueryGetFirstPicture.class)
 	@GET
 	@Path("pictures/{id}/first")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_listFirstPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_listFirstPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryGetFirstPicture.Wo> result = new ActionResult<>();
@@ -434,7 +680,7 @@ public class DocumentAction2 extends StandardJaxrsAction{
 	@Path("pictures/{id}/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_listAllPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_listAllPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListAllPictures.Wo>> result = new ActionResult<>();
@@ -450,15 +696,15 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "从Excel文件导入文档数据.", action = ActionPersistImportDataExcel.class)
 	@POST
 	@Path("import/category/{categoryId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void persist_importDocumentFormExcel(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("分类ID") @PathParam("categoryId") String categoryId, 
+	public void persist_importDocumentFormExcel(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
+			@JaxrsParameterDescribe("分类ID") @PathParam("categoryId") String categoryId,
 			@JaxrsParameterDescribe("作为参数的JSON字符串") @FormDataParam("json_data") String json_data,
 			@FormDataParam(FILE_FIELD) final byte[] bytes,
 			@FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition) {
@@ -481,7 +727,7 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistSaveDocument.Wo> result = new ActionResult<>();
 		Boolean check = true;
-		
+
 		if( check ){
 			try {
 				result = new ActionPersistSaveDocument().execute( request, jsonElement, effectivePerson );
@@ -491,16 +737,16 @@ public class DocumentAction2 extends StandardJaxrsAction{
 				logger.error( e, effectivePerson, request, null);
 			}
 		}
-		
+
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "文档点赞.", action = ActionPersistCommend.class)
 	@GET
 	@Path("{id}/commend")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_commend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void persist_commend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistCommend.Wo> result = new ActionResult<>();
@@ -516,13 +762,13 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "取消文档点赞.", action = ActionPersistUnCommend.class)
 	@GET
 	@Path("{id}/uncommend")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_unCommend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void persist_unCommend( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistUnCommend.Wo> result = new ActionResult<>();
@@ -538,13 +784,13 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "文档置顶.", action = ActionPersistTopDocument.class)
 	@GET
 	@Path("{id}/top")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_top( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void persist_top( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistTopDocument.Wo> result = new ActionResult<>();
@@ -560,13 +806,13 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "取消文档置顶.", action = ActionPersistUnTopDocument.class)
 	@GET
 	@Path("{id}/unTop")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void persist_unTop( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void persist_unTop( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionPersistUnTopDocument.Wo> result = new ActionResult<>();
@@ -606,13 +852,37 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的已发布的信息内容.", action = ActionQueryListWithFilterPaging.class)
+	@POST
+	@Path("filter/list/{page}/size/{size}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listWithFilterPagingMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+											@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListWithFilterPaging.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListWithFilterPaging().execute( request, page, size, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取文件访问控制信息.", action = ActionQueryGetControl.class)
 	@GET
 	@Path("{id}/control")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_getControl( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_getControl( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryGetControl.Wo> result = new ActionResult<>();
@@ -628,13 +898,13 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取文件可见范围内的所有人员.", action = ActionQueryListVisiblePersons.class)
 	@GET
 	@Path("{id}/persons")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void query_getVisiblePersons( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void query_getVisiblePersons( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryListVisiblePersons.Wo> result = new ActionResult<>();
@@ -715,4 +985,4 @@ public class DocumentAction2 extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 60 - 16
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentAnonymousAction.java

@@ -3,12 +3,7 @@ package com.x.cms.assemble.control.jaxrs.document;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
 import javax.ws.rs.container.AsyncResponse;
 import javax.ws.rs.container.Suspended;
 import javax.ws.rs.core.Context;
@@ -29,15 +24,15 @@ import com.x.base.core.project.logger.LoggerFactory;
 @Path("anonymous/document")
 @JaxrsDescribe("信息发布信息文档管理")
 public class DocumentAnonymousAction extends StandardJaxrsAction{
-	
+
 	private static  Logger logger = LoggerFactory.getLogger( DocumentAnonymousAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "根据ID访问信息发布文档信息对象详细信息,包括附件列表,数据信息.", action = ActionQueryViewDocument.class)
 	@GET
 	@Path("{id}/view")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void view( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void view( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryViewDocument.Wo> result = new ActionResult<>();
@@ -50,15 +45,15 @@ public class DocumentAnonymousAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 下一页.", action = ActionQueryListNextWithFilter.class)
 	@PUT
 	@Path("filter/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,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListNextWithFilter.Wo>> result = new ActionResult<>();
@@ -76,12 +71,37 @@ public class DocumentAnonymousAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "列示符合过滤条件的已发布的信息内容, 下一页.", action = ActionQueryListNextWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListNextWithFilter.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListNextWithFilter().execute( request, id, count, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据信息发布文档ID查询文档第一张图片信息列表.", action = ActionQueryGetFirstPicture.class)
 	@GET
 	@Path("pictures/{id}/first")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listFirstPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void listFirstPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionQueryGetFirstPicture.Wo> result = new ActionResult<>();
@@ -103,7 +123,7 @@ public class DocumentAnonymousAction extends StandardJaxrsAction{
 	@Path("pictures/{id}/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listAllPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void listAllPictures( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListAllPictures.Wo>> result = new ActionResult<>();
@@ -144,4 +164,28 @@ public class DocumentAnonymousAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的已发布的信息内容.", action = ActionQueryListWithFilterPaging.class)
+	@POST
+	@Path("filter/list/{page}/size/{size}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listWithFilterPagingMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+											@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListWithFilterPaging.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListWithFilterPaging().execute( request, page, size, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+}

+ 69 - 3
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentCipherAction.java

@@ -24,9 +24,9 @@ import java.util.List;
 @Path("document/cipher")
 @JaxrsDescribe("信息发布信息文档管理(Cipher)")
 public class DocumentCipherAction extends StandardJaxrsAction{
-	
+
 	private static  Logger logger = LoggerFactory.getLogger( DocumentCipherAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "直接发布文档信息.", action = ActionPersistPublishByWorkFlow.class)
 	@PUT
 	@Path("publish/content")
@@ -49,6 +49,28 @@ public class DocumentCipherAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "直接发布文档信息.", action = ActionPersistPublishByWorkFlow.class)
+	@POST
+	@Path("publish/content/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void publishContentByWorkFlowMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistPublishByWorkFlow.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionPersistPublishByWorkFlow().execute( request, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的已发布的信息内容(管理员和Ciper使用).", action = ActionQueryListWithFilterPagingAdmin.class)
 	@PUT
 	@Path("filter/list/{page}/size/{size}")
@@ -73,6 +95,30 @@ public class DocumentCipherAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "分页查询符合过滤条件的已发布的信息内容(管理员和Ciper使用).", action = ActionQueryListWithFilterPagingAdmin.class)
+	@POST
+	@Path("filter/list/{page}/size/{size}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void query_listWithFilterPagingMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
+											@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionQueryListWithFilterPagingAdmin.Wo>> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionQueryListWithFilterPagingAdmin().execute( request, page, size, jsonElement, effectivePerson );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "查询某用户是否有阅读文档的权限.", action = ActionQueryPermissionReadDocument.class)
 	@GET
 	@Path("{id}/permission/read/person/{person}")
@@ -96,4 +142,24 @@ public class DocumentCipherAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "添加文档的阅读记录.", action = ActionPersistViewRecord.class)
+	@POST
+	@Path("{id}/persist/view/record")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void persist_documentViewRecord( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+											@JaxrsParameterDescribe("文档ID") @PathParam("id") String id, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionPersistViewRecord.Wo> result = new ActionResult<>();
+
+		try {
+			result = new ActionPersistViewRecord().execute( request, id, jsonElement, effectivePerson );
+		} catch (Exception e) {
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 31 - 16
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/DocumentViewRecordAction.java

@@ -3,12 +3,7 @@ package com.x.cms.assemble.control.jaxrs.document;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
 import javax.ws.rs.container.AsyncResponse;
 import javax.ws.rs.container.Suspended;
 import javax.ws.rs.core.Context;
@@ -29,17 +24,17 @@ import com.x.base.core.project.logger.LoggerFactory;
 @Path("viewrecord")
 @JaxrsDescribe("信息访问日志管理")
 public class DocumentViewRecordAction extends StandardJaxrsAction{
-	
+
 	private static  Logger logger = LoggerFactory.getLogger( DocumentViewRecordAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "根据文档ID获取该文档的访问用户记录信息,按时间倒序,前50条.", action = ActionQueryListViewRecordByFilterNext.class)
 	@GET
 	@Path("document/{docId}/filter/list/{id}/next/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listByDocumentFilterNext( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("信息文档ID") @PathParam("docId") String docId, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
+	public void listByDocumentFilterNext( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("信息文档ID") @PathParam("docId") String docId,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
 			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListViewRecordByFilterNext.Wo>> result = null;
@@ -59,7 +54,7 @@ public class DocumentViewRecordAction extends StandardJaxrsAction{
 	@Path( "person/{name}" )
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listByPerson( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void listByPerson( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("用户姓名") @PathParam("name") String name ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionQueryListViewRecordByPerson.Wo>> result = null;
@@ -73,13 +68,13 @@ public class DocumentViewRecordAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "从指定的文档ID列表中判断未读过的文档ID列表.", action = ActionQueryListUnReadDocIds.class)
 	@PUT
 	@Path( "unread" )
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listUnReadIds( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void listUnReadIds( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult< ActionQueryListUnReadDocIds.Wo> result = null;
@@ -93,5 +88,25 @@ public class DocumentViewRecordAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
-}
+
+	@JaxrsMethodDescribe(value = "从指定的文档ID列表中判断未读过的文档ID列表.", action = ActionQueryListUnReadDocIds.class)
+	@POST
+	@Path( "unread/mockputtopost" )
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listUnReadIdsMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							   JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult< ActionQueryListUnReadDocIds.Wo> result = null;
+		try {
+			result = new ActionQueryListUnReadDocIds().execute( request, effectivePerson, jsonElement );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionServiceLogic( e,"系统从指定的文档ID列表中判断未读过的文档ID列表时发生未知异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+}

+ 38 - 2
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/file/FileAction.java

@@ -119,6 +119,24 @@ public class FileAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新文件.", action = ActionEdit.class)
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateMockPutToPost(@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 = ActionDelete.class)
 	@DELETE
 	@Path("{flag}")
@@ -137,6 +155,24 @@ public class FileAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "删除文件.", action = ActionDelete.class)
+	@GET
+	@Path("{flag}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					   @JaxrsParameterDescribe("标识") @PathParam("flag") String flag) {
+		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDelete().execute(effectivePerson, flag);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据应用列示文件.", action = ActionListWithApp.class)
 	@GET
 	@Path("list/appInfo/{appInfoFlag}")
@@ -263,5 +299,5 @@ public class FileAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
-}
+
+}

+ 219 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionFileUploadWithUrl.java

@@ -0,0 +1,219 @@
+package com.x.cms.assemble.control.jaxrs.fileinfo;
+
+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.project.annotation.AuditLog;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.cache.CacheManager;
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.config.StorageMapping;
+import com.x.base.core.project.connection.CipherConnectionAction;
+import com.x.base.core.project.exception.ExceptionEntityFieldEmpty;
+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.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.organization.Person;
+import com.x.base.core.project.tools.ExtractTextTools;
+import com.x.cms.assemble.control.Business;
+import com.x.cms.assemble.control.ThisApplication;
+import com.x.cms.core.entity.Document;
+import com.x.cms.core.entity.FileInfo;
+import com.x.processplatform.core.entity.content.Attachment;
+import com.x.processplatform.core.entity.content.Work;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.tika.Tika;
+
+import java.util.Date;
+import java.util.UUID;
+
+public class ActionFileUploadWithUrl extends BaseAction {
+
+	private static Logger logger = LoggerFactory.getLogger(ActionFileUploadWithUrl.class);
+
+	@AuditLog(operation = "上传附件")
+	protected ActionResult<Wo> execute(EffectivePerson effectivePerson,
+										JsonElement jsonElement) throws Exception {
+		logger.debug("ActionFileUploadWithUrl receive:{}.", jsonElement.toString());
+		ActionResult<Wo> result = new ActionResult<>();
+
+		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
+		if(StringUtils.isEmpty(wi.getDocId())){
+			throw new ExceptionEntityFieldEmpty(Work.class, wi.getDocId());
+		}
+		if(StringUtils.isEmpty(wi.getFileName())){
+			throw new ExceptionEntityFieldEmpty(Attachment.class, wi.getFileName());
+		}
+		if(StringUtils.isEmpty(wi.getFileUrl())){
+			throw new ExceptionEntityFieldEmpty(Attachment.class, wi.getFileUrl());
+		}
+		if(StringUtils.isEmpty(wi.getSite())){
+			throw new ExceptionEntityFieldEmpty(Attachment.class, wi.getSite());
+		}
+		String person = effectivePerson.getDistinguishedName();
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Business business = new Business(emc);
+			if(StringUtils.isNotEmpty(wi.getPerson()) && business.isManager(effectivePerson)){
+				Person p = business.organization().person().getObject(wi.getPerson());
+				if(p!=null){
+					person = p.getDistinguishedName();
+				}
+			}
+		}
+
+		Document document = documentQueryService.get( wi.getDocId() );
+		if (null == document) {
+			throw new ExceptionDocumentNotExists(wi.getDocId());
+		}
+
+		StorageMapping mapping = ThisApplication.context().storageMappings().random( FileInfo.class );
+		FileInfo attachment = this.concreteAttachment( mapping, document, wi.getFileName(), person, wi.getSite() );
+		byte[] bytes = CipherConnectionAction.getBinary(false, wi.getFileUrl());
+		if(bytes==null || bytes.length==0){
+			throw new Exception("can not down file from url!");
+		}
+
+		attachment.setType((new Tika()).detect(bytes, wi.getFileName()));
+		logger.debug("filename:{}, file type:{}.", attachment.getName(), attachment.getType());
+		if (Config.query().getExtractImage() && ExtractTextTools.supportImage(attachment.getName()) && ExtractTextTools.available(bytes)) {
+			attachment.setText(ExtractTextTools.image(bytes));
+			logger.debug("filename:{}, file type:{}, text:{}.", attachment.getName(), attachment.getType(),
+					attachment.getText());
+		}
+
+		attachment.saveContent(mapping, bytes, wi.getFileName());
+		attachment = fileInfoServiceAdv.saveAttachment( wi.getDocId(), attachment );
+
+		CacheManager.notify( FileInfo.class );
+		CacheManager.notify( Document.class );
+
+		Wo wo = new Wo();
+		wo.setId( attachment.getId() );
+		result.setData(wo);
+
+		return result;
+	}
+
+	private FileInfo concreteAttachment(StorageMapping mapping, Document document, String name, String person, String site) throws Exception {
+		FileInfo attachment = new FileInfo();
+		String fileName = UUID.randomUUID().toString();
+		String extension = FilenameUtils.getExtension( name );
+		if ( StringUtils.isNotEmpty(extension)) {
+			fileName = fileName + "." + extension;
+		}else{
+			throw new ExceptionEmptyExtension(name);
+		}
+		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.setAppId( document.getAppId() );
+		attachment.setCategoryId( document.getCategoryId() );
+		attachment.setDocumentId( document.getId() );
+		attachment.setCreatorUid(person);
+		attachment.setSite( site );
+		attachment.setFileHost( "" );
+		attachment.setFileType("ATTACHMENT");
+		attachment.setFileExtType( getExtType( extension ) );
+		attachment.setFilePath( "" );
+		return attachment;
+	}
+
+	private String getExtType( String ext ){
+		String type = "OTHER";
+		if( "jpg".equalsIgnoreCase( ext ) ){ type = "PICTURE";
+		} else if("jpeg".equalsIgnoreCase( ext ) ){ type = "PICTURE";
+		} else if("png".equalsIgnoreCase( ext ) ){ type = "PICTURE";
+		} else if("tif".equalsIgnoreCase( ext ) ){ type = "PICTURE";
+		} else if("bmp".equalsIgnoreCase( ext ) ){ type = "PICTURE";
+		} else if("gif".equalsIgnoreCase( ext ) ){ type = "PICTURE";
+		} else if("xls".equalsIgnoreCase( ext ) ){ type = "EXCLE";
+		} else if("xlsx".equalsIgnoreCase( ext ) ){ type = "EXCLE";
+		} else if("doc".equalsIgnoreCase( ext ) ){ type = "WORD";
+		} else if("docx".equalsIgnoreCase( ext ) ){ type = "WORD";
+		} else if("ppt".equalsIgnoreCase( ext ) ){ type = "PPT";
+		} else if("pptx".equalsIgnoreCase( ext ) ){ type = "PPT";
+		} else if("zip".equalsIgnoreCase( ext ) ){ type = "ZIP";
+		} else if("rar".equalsIgnoreCase( ext ) ){ type = "ZIP";
+		} else if("txt".equalsIgnoreCase( ext ) ){ type = "TXT";
+		} else if("pdf".equalsIgnoreCase( ext ) ){ type = "PDF";
+		}
+		return type;
+	}
+
+	public static class Wi extends GsonPropertyObject {
+
+		private static final long serialVersionUID = 5113558862906097036L;
+
+		@FieldDescribe("*内容管理文档id.")
+		private String docId;
+
+		@FieldDescribe("*文件名称,带扩展名的文件名.")
+		private String fileName;
+
+		@FieldDescribe("*附件来源url地址.")
+		private String fileUrl;
+
+		@FieldDescribe("*附件分类.")
+		private String site;
+
+		@FieldDescribe("上传人员(仅对管理员生效).")
+		private String person;
+
+		public String getDocId() {
+			return docId;
+		}
+
+		public void setDocId(String docId) {
+			this.docId = docId;
+		}
+
+		public String getFileName() {
+			return fileName;
+		}
+
+		public void setFileName(String fileName) {
+			this.fileName = fileName;
+		}
+
+		public String getFileUrl() {
+			return fileUrl;
+		}
+
+		public void setFileUrl(String fileUrl) {
+			this.fileUrl = fileUrl;
+		}
+
+		public String getPerson() {
+			return person;
+		}
+
+		public void setPerson(String person) {
+			this.person = person;
+		}
+
+		public String getSite() {
+			return site;
+		}
+
+		public void setSite(String site) {
+			this.site = site;
+		}
+	}
+
+	public static class Wo extends WoId {
+
+	}
+}

+ 92 - 36
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/FileInfoAction.java

@@ -28,13 +28,13 @@ import java.util.List;
 public class FileInfoAction extends StandardJaxrsAction{
 
 	private static  Logger logger = LoggerFactory.getLogger( FileInfoAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "获取全部的文件或者附件列表.", action = ActionListAll.class)
 	@GET
 	@Path( "list/all" )
 	@Produces( HttpMediaType.APPLICATION_JSON_UTF_8 )
 	@Consumes( MediaType.APPLICATION_JSON )
-	public void listAllFileInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {		
+	public void listAllFileInfo( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListAll.Wo>> result = new ActionResult<>();
 		try {
@@ -46,14 +46,14 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取指定文档的全部附件信息列表.", action = ActionListByDocId.class)
 	@GET
 	@Path("list/document/{documentId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listFileInfoByDocumentId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("信息文档ID") @PathParam("documentId")String documentId ) {		
+	public void listFileInfoByDocumentId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("信息文档ID") @PathParam("documentId")String documentId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListByDocId.Wo>> result = new ActionResult<>();
 		try {
@@ -65,14 +65,14 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID获取fileInfo对象.", action = ActionGet.class)
 	@GET
 	@Path("{id}/document/{documentId}")
 	@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, 
+	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("附件信息ID") @PathParam("id") String id,
 			@JaxrsParameterDescribe("信息文档ID") @PathParam("documentId") String documentId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionGet.Wo> result = new ActionResult<>();
@@ -85,13 +85,13 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID删除FileInfo应用信息对象.", 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, 
+	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<>();
@@ -104,14 +104,33 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "根据ID删除FileInfo应用信息对象.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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<>();
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "将图片附件转为base64编码.", action = ActionImageToBase64.class)
 	@GET
 	@Path("{id}/binary/base64/{size}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void imageToBase64( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("附件信息ID") @PathParam("id") String id, 
+	public void imageToBase64( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("附件信息ID") @PathParam("id") String id,
 			@JaxrsParameterDescribe("最大宽高") @PathParam("size") String size ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<WrapOutString> result = new ActionResult<>();
@@ -124,13 +143,13 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "根据ID下载指定附件", action = ActionFileDownload.class)
 	@GET
 	@Path("download/document/{id}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void attachmentDownLoad(@Suspended final AsyncResponse asyncResponse,
-			@Context HttpServletRequest request, 
+			@Context HttpServletRequest request,
 			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
 		ActionResult<ActionFileDownload.Wo> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
@@ -147,8 +166,8 @@ public class FileInfoAction extends StandardJaxrsAction{
 	@GET
 	@Path("download/document/{id}/stream")
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void attachmentDownloadStream(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
+	public void attachmentDownloadStream(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
 			@JaxrsParameterDescribe("附件标识") @PathParam("id") String id) {
 		ActionResult<ActionFileDownloadStream.Wo> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
@@ -160,7 +179,7 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "更新附件访问权限.", action = ActionFileEdit.class)
 	@PUT
 	@Path("edit/{id}/doc/{docId}")
@@ -179,15 +198,34 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "更新附件访问权限.", action = ActionFileEdit.class)
+	@POST
+	@Path("edit/{id}/doc/{docId}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void editPermissionMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							   @JaxrsParameterDescribe("附件ID") @PathParam("id") String id,
+							   @JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId, JsonElement jsonElement) {
+		ActionResult<ActionFileEdit.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionFileEdit().execute( request, effectivePerson, id, docId, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "为文档信息上传附件.", action = ActionFileUpload.class)
 	@POST
 	@Path("upload/document/{docId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void attachmentUpload(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId, 
+	public void attachmentUpload(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
+			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId,
 			@JaxrsParameterDescribe("位置") @FormDataParam("site") String site,
 			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
 			@FormDataParam(FILE_FIELD) final byte[] bytes,
@@ -202,16 +240,16 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "为文档信息替换附件.", action = ActionFileUpdate.class)
 	@POST
 	@Path("update/document/{docId}/attachment/{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void attachmentUpdate(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId, 
-			@JaxrsParameterDescribe("附件ID") @PathParam("id") String id, 
+	public void attachmentUpdate(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
+			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId,
+			@JaxrsParameterDescribe("附件ID") @PathParam("id") String id,
 			@JaxrsParameterDescribe("位置") @FormDataParam("site") String site,
 			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
 			@FormDataParam(FILE_FIELD) final byte[] bytes,
@@ -231,9 +269,9 @@ public class FileInfoAction extends StandardJaxrsAction{
 	@Path("upload/document/{docId}/callback/{callback}")
 	@Produces(HttpMediaType.TEXT_HTML_UTF_8)
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void attachmentUploadCallback(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId, 
+	public void attachmentUploadCallback(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
+			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId,
 			@JaxrsParameterDescribe("回调函数名") @PathParam("callback") String callback,
 			@JaxrsParameterDescribe("位置") @FormDataParam("site") String site,
 			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
@@ -249,16 +287,16 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "为文档信息上传附件(带回调).", action = ActionFileUpdateCallback.class)
 	@POST
 	@Path("update/document/{docId}/attachment/{id}/callback/{callback}")
 	@Produces(HttpMediaType.TEXT_HTML_UTF_8)
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
-	public void attachmentUpdateCallback(@Suspended final AsyncResponse asyncResponse, 
-			@Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId, 
-			@JaxrsParameterDescribe("附件ID") @PathParam("id") String id, 
+	public void attachmentUpdateCallback(@Suspended final AsyncResponse asyncResponse,
+			@Context HttpServletRequest request,
+			@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId,
+			@JaxrsParameterDescribe("附件ID") @PathParam("id") String id,
 			@JaxrsParameterDescribe("回调函数名") @PathParam("callback") String callback,
 			@JaxrsParameterDescribe("位置") @FormDataParam("site") String site,
 			@JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
@@ -274,4 +312,22 @@ public class FileInfoAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "文档上传附件", action = ActionFileUploadWithUrl.class)
+	@POST
+	@Path("upload/with/url")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void uploadWithUrl(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							  JsonElement jsonElement) {
+		ActionResult<ActionFileUploadWithUrl.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionFileUploadWithUrl().execute(effectivePerson, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 56 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/ActionSave.java

@@ -6,6 +6,7 @@ import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.entity.annotation.CheckPersistType;
 import com.x.base.core.project.annotation.AuditLog;
+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;
@@ -24,7 +25,9 @@ import com.x.cms.core.entity.element.ViewFieldConfig;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 public class ActionSave extends BaseAction {
 
@@ -65,6 +68,10 @@ public class ActionSave extends BaseAction {
 						form.setId(wi.getId());
 					}
 					emc.beginTransaction(Form.class);
+					form.getProperties().setRelatedFormList(wi.getRelatedFormList());
+					form.getProperties().setMobileRelatedFormList(wi.getMobileRelatedFormList());
+					form.getProperties().setRelatedScriptMap(wi.getRelatedScriptMap());
+					form.getProperties().setMobileRelatedScriptMap(wi.getMobileRelatedScriptMap());
 					emc.persist(form, CheckPersistType.all);
 					emc.commit();
 					logService.log(emc, effectivePerson.getDistinguishedName(), form.getName(), form.getAppId(), "", "",
@@ -76,6 +83,10 @@ public class ActionSave extends BaseAction {
 				} else {
 					Wi.copier.copy(wi, form);
 					emc.beginTransaction(Form.class);
+					form.getProperties().setRelatedFormList(wi.getRelatedFormList());
+					form.getProperties().setMobileRelatedFormList(wi.getMobileRelatedFormList());
+					form.getProperties().setRelatedScriptMap(wi.getRelatedScriptMap());
+					form.getProperties().setMobileRelatedScriptMap(wi.getMobileRelatedScriptMap());
 					emc.check(form, CheckPersistType.all);
 					emc.commit();
 
@@ -110,5 +121,49 @@ public class ActionSave extends BaseAction {
 
 		public static WrapCopier<Wi, Form> copier = WrapCopierFactory.wi(Wi.class, Form.class, null,
 				JpaObject.FieldsUnmodify);
+
+		@FieldDescribe("关联表单")
+		private List<String> relatedFormList = new ArrayList<>();
+
+		@FieldDescribe("移动端关联表单")
+		private List<String> mobileRelatedFormList = new ArrayList<>();
+
+		@FieldDescribe("关联脚本.")
+		private Map<String, String> relatedScriptMap = new LinkedHashMap<>();
+
+		@FieldDescribe("移动端关联脚本.")
+		private Map<String, String> mobileRelatedScriptMap = new LinkedHashMap<>();
+
+		public List<String> getRelatedFormList() {
+			return relatedFormList;
+		}
+
+		public void setRelatedFormList(List<String> relatedFormList) {
+			this.relatedFormList = relatedFormList;
+		}
+
+		public List<String> getMobileRelatedFormList() {
+			return mobileRelatedFormList;
+		}
+
+		public void setMobileRelatedFormList(List<String> mobileRelatedFormList) {
+			this.mobileRelatedFormList = mobileRelatedFormList;
+		}
+
+		public Map<String, String> getRelatedScriptMap() {
+			return relatedScriptMap;
+		}
+
+		public void setRelatedScriptMap(Map<String, String> relatedScriptMap) {
+			this.relatedScriptMap = relatedScriptMap;
+		}
+
+		public Map<String, String> getMobileRelatedScriptMap() {
+			return mobileRelatedScriptMap;
+		}
+
+		public void setMobileRelatedScriptMap(Map<String, String> mobileRelatedScriptMap) {
+			this.mobileRelatedScriptMap = mobileRelatedScriptMap;
+		}
 	}
-}
+}

+ 230 - 5
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/BaseAction.java

@@ -1,16 +1,241 @@
 package com.x.cms.assemble.control.jaxrs.form;
 
 import com.x.base.core.project.cache.Cache;
+import com.x.base.core.project.gson.GsonPropertyObject;
 import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+import com.x.base.core.project.jaxrs.WoMaxAgeFastETag;
+import com.x.cms.assemble.control.Business;
 import com.x.cms.assemble.control.service.LogService;
-import com.x.cms.core.entity.element.Form;
-import com.x.cms.core.entity.element.View;
-import com.x.cms.core.entity.element.ViewCategory;
-import com.x.cms.core.entity.element.ViewFieldConfig;
+import com.x.cms.core.entity.element.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 public class BaseAction extends StandardJaxrsAction {
 
-	protected Cache.CacheCategory cacheCategory = new Cache.CacheCategory(Form.class, View.class, ViewFieldConfig.class, ViewCategory.class);
+	protected Cache.CacheCategory cacheCategory = new Cache.CacheCategory(Form.class, View.class, ViewFieldConfig.class, ViewCategory.class,
+			Script.class, com.x.processplatform.core.entity.element.Script.class, com.x.portal.core.entity.Script.class);
 
 	protected LogService logService = new LogService();
+
+	protected static final String FORM_OPEN_MODE_READ = "read";
+
+	protected List<String> convertScriptToCacheTag(Business business, Map<String, String> map) throws Exception {
+		List<String> list = new ArrayList<>();
+		for (Map.Entry<String, String> entry : map.entrySet()) {
+			switch (entry.getValue()) {
+				case RelatedScript.TYPE_PROCESS_PLATFORM:
+					com.x.processplatform.core.entity.element.Script pp = business.process().script().pick(entry.getKey());
+					if (null != pp) {
+						list.add(pp.getId() + pp.getUpdateTime().getTime());
+					}
+					break;
+				case RelatedScript.TYPE_CMS:
+					Script cms = business.getScriptFactory().pick(entry.getKey());
+					if (null != cms) {
+						list.add(cms.getId() + cms.getUpdateTime().getTime());
+					}
+					break;
+				case RelatedScript.TYPE_PORTAL:
+					com.x.portal.core.entity.Script p = business.portal().script().pick(entry.getKey());
+					if (null != p) {
+						list.add(p.getId() + p.getUpdateTime().getTime());
+					}
+					break;
+				default:
+					break;
+			}
+		}
+		return list;
+	}
+
+	public static class AbstractWo extends WoMaxAgeFastETag {
+
+		private static final long serialVersionUID = 4473155051937494454L;
+
+		private RelatedForm form;
+
+		private Map<String, RelatedForm> relatedFormMap = new HashMap<>();
+
+		private Map<String, RelatedScript> relatedScriptMap = new HashMap<>();
+
+		public RelatedForm getForm() {
+			return form;
+		}
+
+		public void setForm(RelatedForm form) {
+			this.form = form;
+		}
+
+		public Map<String, RelatedScript> getRelatedScriptMap() {
+			return relatedScriptMap;
+		}
+
+		public void setRelatedScriptMap(Map<String, RelatedScript> relatedScriptMap) {
+			this.relatedScriptMap = relatedScriptMap;
+		}
+
+		public Map<String, RelatedForm> getRelatedFormMap() {
+			return relatedFormMap;
+		}
+
+		public void setRelatedFormMap(Map<String, RelatedForm> relatedFormMap) {
+			this.relatedFormMap = relatedFormMap;
+		}
+	}
+
+	public static class RelatedForm extends GsonPropertyObject {
+
+		private static final long serialVersionUID = 3099673570508709007L;
+
+		public RelatedForm() {
+		}
+
+		public RelatedForm(Form form, String data) {
+			this.id = form.getId();
+			this.alias = form.getAlias();
+			this.name = form.getName();
+			this.description = form.getDescription();
+			this.appId = form.getAppId();
+			this.hasMobile = form.getHasMobile();
+			this.data = data;
+		}
+
+		private String id;
+		private String alias;
+		private String name;
+		private String description;
+		private String appId;
+		private Boolean hasMobile;
+		private String data;
+
+		public String getAppId() {
+			return appId;
+		}
+
+		public void setAppId(String appId) {
+			this.appId = appId;
+		}
+
+		public Boolean getHasMobile() {
+			return hasMobile;
+		}
+
+		public void setHasMobile(Boolean hasMobile) {
+			this.hasMobile = hasMobile;
+		}
+
+		public String getAlias() {
+			return alias;
+		}
+
+		public void setAlias(String alias) {
+			this.alias = alias;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			this.name = name;
+		}
+
+		public String getId() {
+			return id;
+		}
+
+		public void setId(String id) {
+			this.id = id;
+		}
+
+		public String getData() {
+			return data;
+		}
+
+		public void setData(String data) {
+			this.data = data;
+		}
+
+		public String getDescription() {
+			return description;
+		}
+
+		public void setDescription(String description) {
+			this.description = description;
+		}
+	}
+
+	public static class RelatedScript extends GsonPropertyObject {
+
+		private static final long serialVersionUID = -4465416667636529080L;
+
+		public static final String TYPE_PROCESS_PLATFORM = "processPlatform";
+		public static final String TYPE_CMS = "cms";
+		public static final String TYPE_PORTAL = "portal";
+
+		public RelatedScript() {
+		}
+
+		public RelatedScript(String id, String name, String alias, String text, String type) {
+			this.id = id;
+			this.alias = alias;
+			this.name = name;
+			this.text = text;
+			this.type = type;
+		}
+
+		private String type;
+
+		private String id;
+
+		private String alias;
+
+		private String name;
+
+		private String text;
+
+		public String getId() {
+			return id;
+		}
+
+		public void setId(String id) {
+			this.id = id;
+		}
+
+		public String getAlias() {
+			return alias;
+		}
+
+		public void setAlias(String alias) {
+			this.alias = alias;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public void setName(String name) {
+			this.name = name;
+		}
+
+		public String getType() {
+			return type;
+		}
+
+		public void setType(String type) {
+			this.type = type;
+		}
+
+		public String getText() {
+			return text;
+		}
+
+		public void setText(String text) {
+			this.text = text;
+		}
+
+	}
 }

+ 182 - 19
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/FormAction.java

@@ -39,7 +39,7 @@ public class FormAction extends StandardJaxrsAction {
 			Exception exception = new ExceptionServiceLogic( e, "系统在查询所有CMS表单时发生异常。" );
 			result.error( exception );
 			logger.error( e, effectivePerson, request, null);
-		}		
+		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
@@ -48,7 +48,7 @@ public class FormAction extends StandardJaxrsAction {
 	@Path("list/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listFormByAppId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void listFormByAppId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListByApp.Wo>> result = new ActionResult<>();
@@ -68,7 +68,7 @@ public class FormAction extends StandardJaxrsAction {
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	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<>();
@@ -101,7 +101,7 @@ public class FormAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "保存表单信息对象.", action = ActionSave.class)
 	@POST
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@@ -110,7 +110,7 @@ public class FormAction extends StandardJaxrsAction {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionSave.Wo> result = new ActionResult<>();
 		Boolean check = true;
-		
+
 		if( check ){
 			try {
 				result = new ActionSave().execute( request, effectivePerson, null, jsonElement );
@@ -128,7 +128,7 @@ public class FormAction extends StandardJaxrsAction {
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void put( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void put( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("表单ID") @PathParam("id") String id, JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionSave.Wo> result = new ActionResult<>();
@@ -146,12 +146,35 @@ public class FormAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新表单信息对象.", action = ActionSave.class)
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void putMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					 @JaxrsParameterDescribe("表单ID") @PathParam("id") String id, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionSave.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionSave().execute( request, effectivePerson, id, jsonElement );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				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, 
+	public void delete( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("表单ID") @PathParam("id") String id) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<WrapOutId> result = new ActionResult<>();
@@ -166,15 +189,35 @@ public class FormAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "根据ID删除表单信息对象.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						@JaxrsParameterDescribe("表单ID") @PathParam("id") String id) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<WrapOutId> result = new ActionResult<>();
+		try {
+			result = new ActionDelete().execute( request, effectivePerson, id );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionServiceLogic( e, "系统在根据ID删除表单时发生异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示满足过滤条件的表单信息,下一页.", action = ActionListNextWithFilter.class)
 	@PUT
 	@Path("filter/list/{id}/next/{count}/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId, 
+	public void listNextWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListNextWithFilter.Wo>> result = new ActionResult<>();
@@ -185,7 +228,30 @@ public class FormAction extends StandardJaxrsAction {
 			Exception exception = new ExceptionServiceLogic( e, "系统在查询所有CMS表单时发生异常。" );
 			result.error( exception );
 			logger.error( e, effectivePerson, request, null);
-		}		
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "列示满足过滤条件的表单信息,下一页.", action = ActionListNextWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/next/{count}/app/{appId}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listNextWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
+									JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionListNextWithFilter.Wo>> result = new ActionResult<>();
+		try {
+			result = new ActionListNextWithFilter().execute( request, effectivePerson, id, count, appId, jsonElement );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionServiceLogic( e, "系统在查询所有CMS表单时发生异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
@@ -194,10 +260,10 @@ public class FormAction extends StandardJaxrsAction {
 	@Path("filter/list/{id}/prev/{count}/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listPrevWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId, 
+	public void listPrevWithFilter( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListPrevWithFilter.Wo>> result = new ActionResult<>();
@@ -208,10 +274,33 @@ public class FormAction extends StandardJaxrsAction {
 			Exception exception = new ExceptionServiceLogic( e, "系统在查询所有CMS表单时发生异常。" );
 			result.error( exception );
 			logger.error( e, effectivePerson, request, null);
-		}		
+		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "列示满足过滤条件的表单信息,上一页.", action = ActionListPrevWithFilter.class)
+	@POST
+	@Path("filter/list/{id}/prev/{count}/app/{appId}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listPrevWithFilterMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+									@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
+									@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count,
+									@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
+									JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<List<ActionListPrevWithFilter.Wo>> result = new ActionResult<>();
+		try {
+			result = new ActionListPrevWithFilter().execute( request, effectivePerson, id, count, appId, jsonElement );
+		} catch (Exception e) {
+			result = new ActionResult<>();
+			Exception exception = new ExceptionServiceLogic( e, "系统在查询所有CMS表单时发生异常。" );
+			result.error( exception );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "根据指定的栏目获取栏目下所有表单包含的字段字段信息.", action = ActionListFormFieldWithAppInfo.class)
 	@GET
 	@Path("list/formfield/appInfo/{appId}")
@@ -248,4 +337,78 @@ public class FormAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "查询表单,如果有表单那么返回表单id,如果表单不存在那么返回分类的默认Form.", action = V2LookupDoc.class)
+	@GET
+	@Path("v2/lookup/document/{docId}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2LookupDoc(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request,
+											@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId) {
+		ActionResult<V2LookupDoc.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2LookupDoc().execute(effectivePerson, docId);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "查询表单,如果有表单那么返回表单id,如果表单不存在返回分类的默认FormMobile.", action = V2LookupDocMobile.class)
+	@GET
+	@Path("v2/lookup/document/{docId}/mobile")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2LookupDocMobile(@Suspended final AsyncResponse asyncResponse,
+												  @Context HttpServletRequest request,
+												  @JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId) {
+		ActionResult<V2LookupDocMobile.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2LookupDocMobile().execute(effectivePerson, docId);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "获取表单.", action = V2Get.class)
+	@GET
+	@Path("v2/{id}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2Get(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					  @JaxrsParameterDescribe("标识") @PathParam("id") String id) {
+		ActionResult<V2Get.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2Get().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "获取表单Mobile.", action = V2GetMobile.class)
+	@GET
+	@Path("v2/{id}/mobile")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2GetMobile(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							@JaxrsParameterDescribe("标识") @PathParam("id") String id) {
+		ActionResult<V2GetMobile.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2GetMobile().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 76 - 2
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/FormAnonymousAction.java

@@ -33,7 +33,7 @@ public class FormAnonymousAction extends StandardJaxrsAction {
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	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<>();
@@ -47,4 +47,78 @@ public class FormAnonymousAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "查询表单,如果有表单那么返回表单id,如果表单不存在那么返回分类的默认Form.", action = V2LookupDoc.class)
+	@GET
+	@Path("v2/lookup/document/{docId}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2LookupDoc(@Suspended final AsyncResponse asyncResponse,
+											@Context HttpServletRequest request,
+											@JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId) {
+		ActionResult<V2LookupDoc.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2LookupDoc().execute(effectivePerson, docId);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "查询表单,如果有表单那么返回表单id,如果表单不存在返回分类的默认FormMobile.", action = V2LookupDocMobile.class)
+	@GET
+	@Path("v2/lookup/document/{docId}/mobile")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2LookupDocMobile(@Suspended final AsyncResponse asyncResponse,
+												  @Context HttpServletRequest request,
+												  @JaxrsParameterDescribe("文档ID") @PathParam("docId") String docId) {
+		ActionResult<V2LookupDocMobile.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2LookupDocMobile().execute(effectivePerson, docId);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "获取表单.", action = V2Get.class)
+	@GET
+	@Path("v2/{id}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2Get(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					  @JaxrsParameterDescribe("标识") @PathParam("id") String id) {
+		ActionResult<V2Get.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2Get().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "获取表单Mobile.", action = V2GetMobile.class)
+	@GET
+	@Path("v2/{id}/mobile")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void V2GetMobile(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							@JaxrsParameterDescribe("标识") @PathParam("id") String id) {
+		ActionResult<V2GetMobile.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new V2GetMobile().execute(effectivePerson, id);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 134 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2Get.java

@@ -0,0 +1,134 @@
+package com.x.cms.assemble.control.jaxrs.form;
+
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.project.cache.Cache.CacheKey;
+import com.x.base.core.project.cache.CacheManager;
+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.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ListTools;
+import com.x.cms.assemble.control.Business;
+import com.x.cms.core.entity.element.Form;
+import com.x.cms.core.entity.element.FormProperties;
+import com.x.cms.core.entity.element.Script;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.TreeMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+
+class V2Get extends BaseAction {
+
+	private static Logger logger = LoggerFactory.getLogger(V2Get.class);
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		CacheKey cacheKey = new CacheKey(this.getClass(), id);
+		Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
+		if (optional.isPresent()) {
+			result.setData((Wo) optional.get());
+		} else {
+			Form form = null;
+			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+				Business business = new Business(emc);
+				form = business.getFormFactory().pick(id);
+			}
+			if (null == form) {
+				throw new ExceptionEntityNotExist(id, Form.class);
+			}
+			Wo wo = new Wo();
+			final FormProperties properties = form.getProperties();
+			wo.setFastETag(form.getId() + form.getUpdateTime().getTime());
+			wo.setForm(new RelatedForm(form, form.getDataOrMobileData()));
+			CompletableFuture<Map<String, RelatedForm>> getRelatedFormFuture = this.getRelatedFormFuture(properties);
+			CompletableFuture<Map<String, RelatedScript>> getRelatedScriptFuture = this
+					.getRelatedScriptFuture(properties);
+			wo.setRelatedFormMap(getRelatedFormFuture.get(10, TimeUnit.SECONDS));
+			wo.setRelatedScriptMap(getRelatedScriptFuture.get(10, TimeUnit.SECONDS));
+			wo.setMaxAge(3600 * 24);
+			CacheManager.put(cacheCategory, cacheKey, wo);
+			result.setData(wo);
+		}
+		return result;
+	}
+
+	private CompletableFuture<Map<String, RelatedForm>> getRelatedFormFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			Map<String, RelatedForm> map = new TreeMap<>();
+			if (ListTools.isNotEmpty(properties.getRelatedFormList())) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business bus = new Business(emc);
+					Form f;
+					for (String id : properties.getRelatedFormList()) {
+						f = bus.getFormFactory().pick(id);
+						if (null != f) {
+							map.put(id, new RelatedForm(f, f.getDataOrMobileData()));
+						}
+					}
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return map;
+		});
+	}
+
+	private CompletableFuture<Map<String, RelatedScript>> getRelatedScriptFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			Map<String, RelatedScript> map = new TreeMap<>();
+			if ((null != properties.getRelatedScriptMap()) && (properties.getRelatedScriptMap().size() > 0)) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business business = new Business(emc);
+					map = convertScript(business, properties);
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return map;
+		});
+	}
+
+	private Map<String, RelatedScript> convertScript(Business bus, FormProperties properties) throws Exception {
+		Map<String, RelatedScript> map = new TreeMap<>();
+		for (Entry<String, String> entry : properties.getRelatedScriptMap().entrySet()) {
+			switch (entry.getValue()) {
+				case RelatedScript.TYPE_PROCESS_PLATFORM:
+					com.x.processplatform.core.entity.element.Script pp = bus.process().script().pick(entry.getKey());
+					if (null != pp) {
+						map.put(entry.getKey(),
+								new RelatedScript(pp.getId(), pp.getName(), pp.getAlias(), pp.getText(), entry.getValue()));
+					}
+					break;
+				case RelatedScript.TYPE_CMS:
+					Script cms = bus.getScriptFactory().pick(entry.getKey());
+					if (null != cms) {
+						map.put(entry.getKey(), new RelatedScript(cms.getId(), cms.getName(), cms.getAlias(), cms.getText(),
+								entry.getValue()));
+					}
+					break;
+				case RelatedScript.TYPE_PORTAL:
+					com.x.portal.core.entity.Script p = bus.portal().script().pick(entry.getKey());
+					if (null != p) {
+						map.put(entry.getKey(),
+								new RelatedScript(p.getId(), p.getName(), p.getAlias(), p.getText(), entry.getValue()));
+					}
+					break;
+				default:
+					break;
+			}
+		}
+		return map;
+	}
+
+	public static class Wo extends AbstractWo {
+
+		private static final long serialVersionUID = 3540820372721279101L;
+
+	}
+
+}

+ 134 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2GetMobile.java

@@ -0,0 +1,134 @@
+package com.x.cms.assemble.control.jaxrs.form;
+
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.project.cache.Cache.CacheKey;
+import com.x.base.core.project.cache.CacheManager;
+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.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ListTools;
+import com.x.cms.assemble.control.Business;
+import com.x.cms.core.entity.element.Form;
+import com.x.cms.core.entity.element.FormProperties;
+import com.x.cms.core.entity.element.Script;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.TreeMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+
+class V2GetMobile extends BaseAction {
+
+	private static Logger logger = LoggerFactory.getLogger(V2GetMobile.class);
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		CacheKey cacheKey = new CacheKey(this.getClass(), id);
+		Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
+		if (optional.isPresent()) {
+			result.setData((Wo) optional.get());
+		} else {
+			Form form = null;
+			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+				Business business = new Business(emc);
+				form = business.getFormFactory().pick(id);
+			}
+			if (null == form) {
+				throw new ExceptionEntityNotExist(id, Form.class);
+			}
+			Wo wo = new Wo();
+			final FormProperties properties = form.getProperties();
+			wo.setFastETag(form.getId() + form.getUpdateTime().getTime());
+			wo.setForm(new RelatedForm(form, form.getMobileDataOrData()));
+			CompletableFuture<Map<String, RelatedForm>> getRelatedFormFuture = this.getRelatedFormFuture(properties);
+			CompletableFuture<Map<String, RelatedScript>> getRelatedScriptFuture = this
+					.getRelatedScriptFuture(properties);
+			wo.setRelatedFormMap(getRelatedFormFuture.get(10, TimeUnit.SECONDS));
+			wo.setRelatedScriptMap(getRelatedScriptFuture.get(10, TimeUnit.SECONDS));
+			wo.setMaxAge(3600 * 24);
+			CacheManager.put(cacheCategory, cacheKey, wo);
+			result.setData(wo);
+		}
+		return result;
+	}
+
+	private CompletableFuture<Map<String, RelatedForm>> getRelatedFormFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			Map<String, RelatedForm> map = new TreeMap<>();
+			if (ListTools.isNotEmpty(properties.getMobileRelatedFormList())) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business bus = new Business(emc);
+					Form f;
+					for (String id : properties.getMobileRelatedFormList()) {
+						f = bus.getFormFactory().pick(id);
+						if (null != f) {
+							map.put(id, new RelatedForm(f, f.getMobileDataOrData()));
+						}
+					}
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return map;
+		});
+	}
+
+	private CompletableFuture<Map<String, RelatedScript>> getRelatedScriptFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			Map<String, RelatedScript> map = new TreeMap<>();
+			if ((null != properties.getMobileRelatedScriptMap()) && (properties.getMobileRelatedScriptMap().size() > 0)) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business business = new Business(emc);
+					map = convertScript(business, properties);
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return map;
+		});
+	}
+
+	private Map<String, RelatedScript> convertScript(Business bus, FormProperties properties) throws Exception {
+		Map<String, RelatedScript> map = new TreeMap<>();
+		for (Entry<String, String> entry : properties.getMobileRelatedScriptMap().entrySet()) {
+			switch (entry.getValue()) {
+				case RelatedScript.TYPE_PROCESS_PLATFORM:
+					com.x.processplatform.core.entity.element.Script pp = bus.process().script().pick(entry.getKey());
+					if (null != pp) {
+						map.put(entry.getKey(),
+								new RelatedScript(pp.getId(), pp.getName(), pp.getAlias(), pp.getText(), entry.getValue()));
+					}
+					break;
+				case RelatedScript.TYPE_CMS:
+					Script cms = bus.getScriptFactory().pick(entry.getKey());
+					if (null != cms) {
+						map.put(entry.getKey(), new RelatedScript(cms.getId(), cms.getName(), cms.getAlias(), cms.getText(),
+								entry.getValue()));
+					}
+					break;
+				case RelatedScript.TYPE_PORTAL:
+					com.x.portal.core.entity.Script p = bus.portal().script().pick(entry.getKey());
+					if (null != p) {
+						map.put(entry.getKey(),
+								new RelatedScript(p.getId(), p.getName(), p.getAlias(), p.getText(), entry.getValue()));
+					}
+					break;
+				default:
+					break;
+			}
+		}
+		return map;
+	}
+
+	public static class Wo extends AbstractWo {
+
+		private static final long serialVersionUID = 3540820372721279101L;
+
+	}
+
+}

+ 192 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2LookupDoc.java

@@ -0,0 +1,192 @@
+package com.x.cms.assemble.control.jaxrs.form;
+
+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.cache.Cache.CacheKey;
+import com.x.base.core.project.cache.CacheManager;
+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.cms.assemble.control.Business;
+import com.x.cms.core.entity.CategoryInfo;
+import com.x.cms.core.entity.Document;
+import com.x.cms.core.entity.element.Form;
+import com.x.cms.core.entity.element.FormProperties;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import java.util.zip.CRC32;
+
+class V2LookupDoc extends BaseAction {
+
+	private static Logger logger = LoggerFactory.getLogger(V2LookupDoc.class);
+
+	private Form form = null;
+	private Form readForm = null;
+	private Wo wo = new Wo();
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String docId) throws Exception {
+
+		ActionResult<Wo> result = new ActionResult<>();
+
+		this.getDocForm(docId);
+		String formId = "";
+		String readFormId = "";
+		if (null != this.form) {
+			formId = form.getId();
+			this.wo.setFormId(formId);
+		}
+		if (null != this.readForm) {
+			readFormId = readForm.getId();
+			this.wo.setReadFormId(readFormId);
+		}
+		if(StringUtils.isNotEmpty(formId) || StringUtils.isNotEmpty(readFormId)){
+			CacheKey cacheKey = new CacheKey(this.getClass(), formId, readFormId);
+			Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
+			if (optional.isPresent()) {
+				this.wo = (Wo) optional.get();
+			} else {
+				List<String> list = new ArrayList<>();
+				if (null != this.form) {
+					CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.form.getProperties());
+					CompletableFuture<List<String>> relatedScriptFuture = this
+							.relatedScriptFuture(this.form.getProperties());
+					list.add(this.form.getId() + this.form.getUpdateTime().getTime());
+					list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
+					list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
+				}
+				if (null != this.readForm && !formId.equals(readFormId)) {
+					CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.readForm.getProperties());
+					CompletableFuture<List<String>> relatedScriptFuture = this
+							.relatedScriptFuture(this.readForm.getProperties());
+					list.add(this.readForm.getId() + this.readForm.getUpdateTime().getTime());
+					list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
+					list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
+				}
+				list = list.stream().sorted().collect(Collectors.toList());
+				CRC32 crc = new CRC32();
+				crc.update(StringUtils.join(list, "#").getBytes());
+				this.wo.setCacheTag(crc.getValue() + "");
+				CacheManager.put(cacheCategory, cacheKey, wo);
+			}
+		}
+		result.setData(wo);
+		return result;
+	}
+
+	private void getDocForm(String docId) throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Business business = new Business(emc);
+			Document document = emc.fetch(docId, Document.class, ListTools.toList(JpaObject.id_FIELDNAME, Document.form_FIELDNAME,
+					Document.readFormId_FIELDNAME, Document.categoryId_FIELDNAME));
+			if (null != document) {
+				String formId = document.getForm();
+				String readFormId = document.getReadFormId();
+				if(StringUtils.isNotBlank(formId)) {
+					this.form = business.getFormFactory().pick(formId);
+				}
+				if (null == this.form) {
+					CategoryInfo categoryInfo = business.getCategoryInfoFactory().pick(document.getCategoryId());
+					if (null != categoryInfo) {
+						formId = categoryInfo.getFormId();
+						this.form = business.getFormFactory().pick(formId);
+					}
+				}
+				if(StringUtils.isNotBlank(readFormId)) {
+					if(readFormId.equals(formId)){
+						this.readForm = this.form;
+					}else {
+						this.readForm = business.getFormFactory().pick(formId);
+					}
+				}
+				if (null == this.readForm) {
+					CategoryInfo categoryInfo = business.getCategoryInfoFactory().pick(document.getCategoryId());
+					if (null != categoryInfo) {
+						readFormId = categoryInfo.getReadFormId();
+						this.readForm = business.getFormFactory().pick(readFormId);
+					}
+				}
+			}
+		}
+	}
+
+	private CompletableFuture<List<String>> relatedFormFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			List<String> list = new ArrayList<>();
+			if (ListTools.isNotEmpty(properties.getRelatedFormList())) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Form f;
+					for (String id : properties.getRelatedFormList()) {
+						f = emc.fetch(id, Form.class, ListTools.toList(JpaObject.id_FIELDNAME, JpaObject.updateTime_FIELDNAME));
+						if (null != f) {
+							list.add(f.getId() + f.getUpdateTime().getTime());
+						}
+					}
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return list;
+		});
+	}
+
+	private CompletableFuture<List<String>> relatedScriptFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			List<String> list = new ArrayList<>();
+			if ((null != properties.getRelatedScriptMap()) && (properties.getRelatedScriptMap().size() > 0)) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business business = new Business(emc);
+					list = convertScriptToCacheTag(business, properties.getRelatedScriptMap());
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return list;
+		});
+	}
+
+	public static class Wo extends AbstractWo {
+
+		private static final long serialVersionUID = -4090679604631097945L;
+
+		private String formId;
+
+		private String readFormId;
+
+		private String cacheTag;
+
+		public String getFormId() {
+			return formId;
+		}
+
+		public void setFormId(String formId) {
+			this.formId = formId;
+		}
+
+		public String getReadFormId() {
+			return readFormId;
+		}
+
+		public void setReadFormId(String readFormId) {
+			this.readFormId = readFormId;
+		}
+
+		public String getCacheTag() {
+			return cacheTag;
+		}
+
+		public void setCacheTag(String cacheTag) {
+			this.cacheTag = cacheTag;
+		}
+
+	}
+
+}

+ 194 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/V2LookupDocMobile.java

@@ -0,0 +1,194 @@
+package com.x.cms.assemble.control.jaxrs.form;
+
+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.cache.Cache.CacheKey;
+import com.x.base.core.project.cache.CacheManager;
+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.cms.assemble.control.Business;
+import com.x.cms.core.entity.CategoryInfo;
+import com.x.cms.core.entity.Document;
+import com.x.cms.core.entity.element.Form;
+import com.x.cms.core.entity.element.FormProperties;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import java.util.zip.CRC32;
+
+class V2LookupDocMobile extends BaseAction {
+
+	private static Logger logger = LoggerFactory.getLogger(V2LookupDocMobile.class);
+
+	private Form form = null;
+	private Form readForm = null;
+	private Wo wo = new Wo();
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String docId) throws Exception {
+
+		ActionResult<Wo> result = new ActionResult<>();
+
+		this.getDocForm(docId);
+
+		String formId = "";
+		String readFormId = "";
+		if (null != this.form) {
+			formId = form.getId();
+			this.wo.setFormId(formId);
+		}
+		if (null != this.readForm) {
+			readFormId = readForm.getId();
+			this.wo.setReadFormId(readFormId);
+		}
+		if(StringUtils.isNotEmpty(formId) || StringUtils.isNotEmpty(readFormId)){
+			CacheKey cacheKey = new CacheKey(this.getClass(), formId, readFormId);
+			Optional<?> optional = CacheManager.get(cacheCategory, cacheKey);
+			if (optional.isPresent()) {
+				this.wo = (Wo) optional.get();
+			} else {
+				List<String> list = new ArrayList<>();
+				if (null != this.form) {
+					CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.form.getProperties());
+					CompletableFuture<List<String>> relatedScriptFuture = this
+							.relatedScriptFuture(this.form.getProperties());
+					list.add(this.form.getId() + this.form.getUpdateTime().getTime());
+					list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
+					list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
+				}
+				if (null != this.readForm && !formId.equals(readFormId)) {
+					CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.readForm.getProperties());
+					CompletableFuture<List<String>> relatedScriptFuture = this
+							.relatedScriptFuture(this.readForm.getProperties());
+					list.add(this.readForm.getId() + this.readForm.getUpdateTime().getTime());
+					list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
+					list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
+				}
+				list = list.stream().sorted().collect(Collectors.toList());
+				CRC32 crc = new CRC32();
+				crc.update(StringUtils.join(list, "#").getBytes());
+				this.wo.setCacheTag(crc.getValue() + "");
+				CacheManager.put(cacheCategory, cacheKey, wo);
+			}
+		}
+		result.setData(wo);
+		return result;
+	}
+
+	private void getDocForm(String docId) throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			Business business = new Business(emc);
+			Document document = emc.fetch(docId, Document.class, ListTools.toList(JpaObject.id_FIELDNAME, Document.form_FIELDNAME,
+					Document.readFormId_FIELDNAME, Document.categoryId_FIELDNAME));
+			if (null != document) {
+				String formId = document.getForm();
+				String readFormId = document.getReadFormId();
+				if(StringUtils.isNotBlank(formId)) {
+					this.form = business.getFormFactory().pick(formId);
+				}
+				if (null == this.form) {
+					CategoryInfo categoryInfo = business.getCategoryInfoFactory().pick(document.getCategoryId());
+					if (null != categoryInfo) {
+						formId = categoryInfo.getFormId();
+						this.form = business.getFormFactory().pick(formId);
+					}
+				}
+				if(StringUtils.isNotBlank(readFormId)) {
+					if(readFormId.equals(formId)){
+						this.readForm = this.form;
+					}else {
+						this.readForm = business.getFormFactory().pick(formId);
+					}
+				}
+				if (null == this.readForm) {
+					CategoryInfo categoryInfo = business.getCategoryInfoFactory().pick(document.getCategoryId());
+					if (null != categoryInfo) {
+						readFormId = categoryInfo.getReadFormId();
+						this.readForm = business.getFormFactory().pick(readFormId);
+					}
+				}
+			}
+		}
+	}
+
+	private CompletableFuture<List<String>> relatedFormFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			List<String> list = new ArrayList<>();
+			if (ListTools.isNotEmpty(properties.getMobileRelatedFormList())) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business business = new Business(emc);
+					Form f;
+					for (String id : properties.getMobileRelatedFormList()) {
+						f = emc.fetch(id, Form.class, ListTools.toList(JpaObject.id_FIELDNAME, JpaObject.updateTime_FIELDNAME));
+						if (null != f) {
+							list.add(f.getId() + f.getUpdateTime().getTime());
+						}
+					}
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return list;
+		});
+	}
+
+	private CompletableFuture<List<String>> relatedScriptFuture(FormProperties properties) {
+		return CompletableFuture.supplyAsync(() -> {
+			List<String> list = new ArrayList<>();
+			if ((null != properties.getMobileRelatedScriptMap()) && (properties.getMobileRelatedScriptMap().size() > 0)) {
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					Business business = new Business(emc);
+					list = convertScriptToCacheTag(business, properties.getMobileRelatedScriptMap());
+				} catch (Exception e) {
+					logger.error(e);
+				}
+			}
+			return list;
+		});
+	}
+
+	public static class Wo extends AbstractWo {
+
+		private static final long serialVersionUID = -955543425744298907L;
+
+		private String formId;
+
+		private String readFormId;
+
+		private String cacheTag;
+
+		public String getFormId() {
+			return formId;
+		}
+
+		public void setFormId(String formId) {
+			this.formId = formId;
+		}
+
+		public String getReadFormId() {
+			return readFormId;
+		}
+
+		public void setReadFormId(String readFormId) {
+			this.readFormId = readFormId;
+		}
+
+		public String getCacheTag() {
+			return cacheTag;
+		}
+
+		public void setCacheTag(String cacheTag) {
+			this.cacheTag = cacheTag;
+		}
+
+	}
+
+}

+ 92 - 25
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/input/InputAction.java

@@ -3,10 +3,7 @@ package com.x.cms.assemble.control.jaxrs.input;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
 import javax.ws.rs.container.AsyncResponse;
 import javax.ws.rs.container.Suspended;
 import javax.ws.rs.core.Context;
@@ -29,26 +26,6 @@ public class InputAction extends StandardJaxrsAction {
 
 	private static Logger logger = LoggerFactory.getLogger(InputAction.class);
 
-	// @JaxrsMethodDescribe(value = "对比数据.", action = ActionCompare.class)
-	// @POST
-	// @Consumes(MediaType.MULTIPART_FORM_DATA)
-	// @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	// public void upload(@Suspended final AsyncResponse asyncResponse, @Context
-	// HttpServletRequest request,
-	// @FormDataParam(FILE_FIELD) final byte[] bytes,
-	// @JaxrsParameterDescribe(".xapp文件") @FormDataParam(FILE_FIELD) final
-	// FormDataContentDisposition disposition) {
-	// ActionResult<ActionUpload.Wo> result = new ActionResult<>();
-	// EffectivePerson effectivePerson = this.effectivePerson(request);
-	// try {
-	// result = new ActionUpload().execute(effectivePerson, bytes, disposition);
-	// } catch (Exception e) {
-	// logger.error(e, effectivePerson, request, null);
-	// result.error(e);
-	// }
-	// asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	// }
-
 	@JaxrsMethodDescribe(value = "上传对比数据内容.", action = ActionCompare.class)
 	@PUT
 	@Path("compare")
@@ -67,6 +44,24 @@ public class InputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "上传对比数据内容.", action = ActionCompare.class)
+	@POST
+	@Path("compare/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void compareMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						JsonElement jsonElement) {
+		ActionResult<ActionCompare.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionCompare().execute(effectivePerson, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "准备覆盖栏目.", action = ActionPrepareCover.class)
 	@PUT
 	@Path("prepare/cover")
@@ -85,6 +80,24 @@ public class InputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "准备覆盖栏目.", action = ActionPrepareCover.class)
+	@POST
+	@Path("prepare/cover/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void prepareCoverMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							 JsonElement jsonElement) {
+		ActionResult<List<ActionPrepareCover.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionPrepareCover().execute(effectivePerson, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "覆盖栏目.", action = ActionCover.class)
 	@PUT
 	@Path("cover")
@@ -103,6 +116,24 @@ public class InputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "覆盖栏目.", action = ActionCover.class)
+	@POST
+	@Path("cover/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void coverMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					  JsonElement jsonElement) {
+		ActionResult<ActionCover.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionCover().execute(effectivePerson, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "准备创建栏目.", action = ActionPrepareCreate.class)
 	@PUT
 	@Path("prepare/create")
@@ -121,6 +152,24 @@ public class InputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "准备创建栏目.", action = ActionPrepareCreate.class)
+	@POST
+	@Path("prepare/create/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void prepareCreateMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+							  JsonElement jsonElement) {
+		ActionResult<List<ActionPrepareCreate.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionPrepareCreate().execute(effectivePerson, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "创建栏目.", action = ActionCreate.class)
 	@PUT
 	@Path("create")
@@ -139,4 +188,22 @@ public class InputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+	@JaxrsMethodDescribe(value = "创建栏目.", action = ActionCreate.class)
+	@POST
+	@Path("create/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void createMockPutToPost(@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));
+	}
+
+}

+ 20 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/output/OutputAction.java

@@ -47,6 +47,25 @@ public class OutputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "选择栏目结构.", action = ActionSelect.class)
+	@POST
+	@Path("{appInfoFlag}/select/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void selectMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					   @JaxrsParameterDescribe("栏目标识") @PathParam("appInfoFlag") String appInfoFlag,
+					   JsonElement jsonElement) {
+		ActionResult<ActionSelect.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionSelect().execute(effectivePerson, appInfoFlag, jsonElement);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, jsonElement);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "查看所有栏目.", action = ActionList.class)
 	@GET
 	@Path("list")
@@ -64,4 +83,4 @@ public class OutputAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+}

+ 32 - 8
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryview/QueryViewAction.java

@@ -39,7 +39,7 @@ public class QueryViewAction extends BaseAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "列示指定栏目中所有当前用户可见的数据视图信息.", action = ActionList.class)
 	@GET
 	@Path("list/application/flag/{applicationFlag}")
@@ -62,7 +62,7 @@ public class QueryViewAction extends BaseAction {
 	@Path("flag/{flag}/application/flag/{applicationFlag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void flag( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void flag( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("数据视图信息标识") @PathParam("flag") String flag ) {
 		ActionResult<ActionFlag.Wo> result = new ActionResult<>();
 		try {
@@ -74,20 +74,44 @@ public class QueryViewAction extends BaseAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "执行指定栏目中指定数据视图查询.", action = ActionExecute.class)
 	@PUT
 	@Path("flag/{flag}/application/flag/{appId}/execute")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void execute( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("数据视图信息标识") @PathParam("flag") String flag, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId, 
+	public void execute( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("数据视图信息标识") @PathParam("flag") String flag,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
 			JsonElement jsonElement) {
 		ActionResult<Query> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		Boolean check = true;
-		
+
+		if( check ){
+			try {
+				result = new ActionExecute().execute( request, effectivePerson, flag, appId, jsonElement);
+			} catch (Throwable th) {
+				th.printStackTrace();
+				result.error(th);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "执行指定栏目中指定数据视图查询.", action = ActionExecute.class)
+	@POST
+	@Path("flag/{flag}/application/flag/{appId}/execute/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void executeMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						 @JaxrsParameterDescribe("数据视图信息标识") @PathParam("flag") String flag,
+						 @JaxrsParameterDescribe("栏目ID") @PathParam("appId") String appId,
+						 JsonElement jsonElement) {
+		ActionResult<Query> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		Boolean check = true;
+
 		if( check ){
 			try {
 				result = new ActionExecute().execute( request, effectivePerson, flag, appId, jsonElement);
@@ -99,4 +123,4 @@ public class QueryViewAction extends BaseAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+}

+ 85 - 13
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryviewdesign/QueryViewDesignAction.java

@@ -28,8 +28,8 @@ public class QueryViewDesignAction extends BaseAction {
 	@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("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
+	public void listNext( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
 			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count
 			) {
 		ActionResult<List<ActionListNext.Wo>> result = new ActionResult<>();
@@ -47,8 +47,8 @@ public class QueryViewDesignAction extends BaseAction {
 	@Path("list/{id}/prev/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void standardListPrev( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id, 
+	public void standardListPrev( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("最后一条信息ID,如果是第一页,则可以用(0)代替") @PathParam("id") String id,
 			@JaxrsParameterDescribe("每页显示的条目数量") @PathParam("count") Integer count
 			) {
 		ActionResult<List<ActionListPrev.Wo>> result = new ActionResult<>();
@@ -66,7 +66,7 @@ public class QueryViewDesignAction extends BaseAction {
 	@Path("flag/{flag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void flag( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void flag( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("视图信息标识")  @PathParam("flag") String flag) {
 		ActionResult<ActionFlag.Wo> result = new ActionResult<>();
 		try {
@@ -84,7 +84,7 @@ public class QueryViewDesignAction extends BaseAction {
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("视图信息ID") @PathParam("id") String id) {
 		ActionResult<ActionGet.Wo> result = new ActionResult<>();
 		try {
@@ -114,7 +114,7 @@ public class QueryViewDesignAction extends BaseAction {
 				result.error(th);
 			}
 		}
-		
+
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
@@ -123,8 +123,8 @@ public class QueryViewDesignAction extends BaseAction {
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void update( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("视图信息ID") @PathParam("id") String id, 
+	public void update( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("视图信息ID") @PathParam("id") String id,
 			JsonElement jsonElement) {
 		ActionResult<ActionUpdate.Wo> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
@@ -141,12 +141,35 @@ public class QueryViewDesignAction extends BaseAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe( value = "更新数据视图设计信息.", action = ActionUpdate.class )
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void updateMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						@JaxrsParameterDescribe("视图信息ID") @PathParam("id") String id,
+						JsonElement jsonElement) {
+		ActionResult<ActionUpdate.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		Boolean check = true;
+
+		if( check ){
+			try {
+				result = new ActionUpdate().execute(effectivePerson, id, jsonElement );
+			} catch (Throwable th) {
+				th.printStackTrace();
+				result.error(th);
+			}
+		}
+		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, 
+	public void delete( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("视图信息ID") @PathParam("id") String id) {
 		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
 		try {
@@ -159,6 +182,24 @@ public class QueryViewDesignAction extends BaseAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe( value = "删除数据视图设计信息.", action = ActionDelete.class )
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						@JaxrsParameterDescribe("视图信息ID") @PathParam("id") String id) {
+		ActionResult<ActionDelete.Wo> result = new ActionResult<>();
+		try {
+			EffectivePerson effectivePerson = this.effectivePerson(request);
+			result = new ActionDelete().execute( effectivePerson, id );
+		} catch (Throwable th) {
+			th.printStackTrace();
+			result.error(th);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe( value = "根据应用列示视图设计信息.", action = ActionListWithApplication.class )
 	@GET
 	@Path("list/application/{applicationId}")
@@ -182,13 +223,44 @@ public class QueryViewDesignAction extends BaseAction {
 	@Path("flag/{flag}/simulate")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void simulate( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void simulate( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("视图信息标识")@PathParam("flag") String flag, JsonElement jsonElement ) {
 		ActionResult<Query> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		WrapInQueryViewExecute wrapIn = null;
 		Boolean check = true;
-		
+
+		try {
+			wrapIn = this.convertToWrapIn( jsonElement, WrapInQueryViewExecute.class );
+		} catch (Exception e ) {
+			check = false;
+			Exception exception = new ExceptionWrapInConvert( e, jsonElement );
+			result.error( exception );
+			e.printStackTrace();
+		}
+		if( check ){
+			try {
+				result = new ActionSimulate().execute(effectivePerson, flag, wrapIn);
+			} catch (Throwable th) {
+				th.printStackTrace();
+				result.error(th);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe( value = "模拟执行视图设计信息.", action = ActionSimulate.class )
+	@POST
+	@Path("flag/{flag}/simulate/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void simulateMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+						  @JaxrsParameterDescribe("视图信息标识")@PathParam("flag") String flag, JsonElement jsonElement ) {
+		ActionResult<Query> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		WrapInQueryViewExecute wrapIn = null;
+		Boolean check = true;
+
 		try {
 			wrapIn = this.convertToWrapIn( jsonElement, WrapInQueryViewExecute.class );
 		} catch (Exception e ) {
@@ -207,4 +279,4 @@ public class QueryViewDesignAction extends BaseAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 36 - 0
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/script/ScriptAction.java

@@ -87,6 +87,24 @@ public class ScriptAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "更新脚本信息.", action = ActionUpdate.class)
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void putMockPutToPost(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					@JaxrsParameterDescribe("脚本信息ID") @PathParam("id") String id, JsonElement jsonElement) {
+		ActionResult<ActionUpdate.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionUpdate().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 = ActionDelete.class)
 	@DELETE
 	@Path("{id}")
@@ -105,6 +123,24 @@ public class ScriptAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "删除脚本信息.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					   @JaxrsParameterDescribe("脚本信息ID") @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));
+	}
+
 	@JaxrsMethodDescribe(value = "列示指定栏目中的所有脚本.", action = ActionListWithApplication.class)
 	@GET
 	@Path("list/app/{flag}")

+ 36 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/templateform/TemplateFormAction.java

@@ -88,6 +88,23 @@ public class TemplateFormAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "按表单模板分类名称列示模版表单.", action = ActionListWithCategory.class)
+	@POST
+	@Path("list/category/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void listWithCategoryMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement) {
+		ActionResult<List<ActionListWithCategory.Wo>> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionListWithCategory().execute(effectivePerson, 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}")
@@ -139,4 +156,22 @@ public class TemplateFormAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-}
+	@JaxrsMethodDescribe(value = "删除模版表单.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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));
+	}
+
+}

+ 65 - 24
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/view/ViewAction.java

@@ -33,15 +33,15 @@ import com.x.base.core.project.logger.LoggerFactory;
 @Path("view")
 @JaxrsDescribe("信息列表管理")
 public class ViewAction extends StandardJaxrsAction{
-	
+
 	private static  Logger logger = LoggerFactory.getLogger( ViewAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "获取全部的信息列表.", action = ActionListAll.class)
 	@GET
 	@Path("list/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listAllView( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {		
+	public void listAllView( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListAll.Wo>> result = new ActionResult<>();
 		try {
@@ -53,14 +53,14 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取指定栏目ID的全部信息列表.", action = ActionListByApp.class)
 	@GET
 	@Path("list/app/{appId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewByAppId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {		
+	public void listViewByAppId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("栏目ID") @PathParam("appId")String appId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListByApp.Wo>> result = new ActionResult<>();
 		try {
@@ -72,14 +72,14 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取指定表单ID的全部信息列表.", action = ActionListByForm.class)
 	@GET
 	@Path("list/form/{formId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewByFormId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("表单ID") @PathParam("formId")String formId ) {		
+	public void listViewByFormId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("表单ID") @PathParam("formId")String formId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListByForm.Wo>> result = new ActionResult<>();
 		try {
@@ -91,14 +91,14 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取指定分类的全部视图信息列表.", action = ActionListByCategory.class)
 	@GET
 	@Path("list/category/{categoryId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewByCategoryId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("分类ID") @PathParam("categoryId")String categoryId ) {		
+	public void listViewByCategoryId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("分类ID") @PathParam("categoryId")String categoryId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListByCategory.Wo>> result = new ActionResult<>();
 		try {
@@ -110,13 +110,13 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		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, 
+	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<>();
@@ -129,7 +129,7 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "创建列表信息.", action = ActionSave.class)
 	@POST
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@@ -149,13 +149,13 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "更新信息列表.", action = ActionSave.class)
 	@PUT
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void put( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void put( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("列表ID") @PathParam("id") String id, JsonElement jsonElement ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionSave.Wo> result = new ActionResult<>();
@@ -171,13 +171,35 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "更新信息列表.", action = ActionSave.class)
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void putMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					 @JaxrsParameterDescribe("列表ID") @PathParam("id") String id, JsonElement jsonElement ) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionSave.Wo> result = new ActionResult<>();
+		Boolean check = true;
+		if( check ){
+			try {
+				result = new ActionSave().execute( request, effectivePerson, jsonElement );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				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, 
+	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<>();
@@ -190,15 +212,34 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
+	@JaxrsMethodDescribe(value = "根据ID删除信息对象.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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<>();
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "列示符合条件的视图数据列表,下一页.", action = ActionListNextPageViewData.class)
 	@POST
 	@Path("viewdata/list/{id}/next/{count}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void nextPageViewDataList( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("上一页最后一条ID") @PathParam("id") String id, 
-			@JaxrsParameterDescribe("每页条目数量") @PathParam("count") Integer count, 
+	public void nextPageViewDataList( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("上一页最后一条ID") @PathParam("id") String id,
+			@JaxrsParameterDescribe("每页条目数量") @PathParam("count") Integer count,
 			JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListNextPageViewData.Wo>> result = new ActionResult<>();
@@ -214,4 +255,4 @@ public class ViewAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+}

+ 20 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewcategory/ViewCategoryAction.java

@@ -147,4 +147,23 @@ public class ViewCategoryAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-}
+
+	@JaxrsMethodDescribe(value = "根据ID删除列表信息对象.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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<>();
+			result.error(e);
+			logger.error(e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+}

+ 59 - 17
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewfieldconfig/ViewFieldConfigAction.java

@@ -32,15 +32,15 @@ import com.x.base.core.project.logger.LoggerFactory;
 @Path("viewfieldconfig")
 @JaxrsDescribe("列表列信息配置")
 public class ViewFieldConfigAction extends StandardJaxrsAction{
-	
+
 	private static  Logger logger = LoggerFactory.getLogger( ViewFieldConfigAction.class );
-	
+
 	@JaxrsMethodDescribe(value = "获取全部的展示列配置信息列表.", action = ActionListAll.class)
 	@GET
 	@Path("list/all")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listAllView( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {		
+	public void listAllView( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListAll.Wo>> result = new ActionResult<>();
 		try {
@@ -52,14 +52,14 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
+
 	@JaxrsMethodDescribe(value = "获取指定列表的全部展示列配置信息列表.", action = ActionListByViewId.class)
 	@GET
 	@Path("list/view/{viewId}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void listViewFieldConfigByViewId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("列表ID") @PathParam("viewId")String viewId ) {		
+	public void listViewFieldConfigByViewId( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("列表ID") @PathParam("viewId")String viewId ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<List<ActionListByViewId.Wo>> result = new ActionResult<>();
 		try {
@@ -71,13 +71,13 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 		}
 		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, 
+	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<>();
@@ -97,9 +97,9 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void post( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
-		ActionResult<ActionSave.Wo> result = new ActionResult<>();		
+		ActionResult<ActionSave.Wo> result = new ActionResult<>();
 		Boolean check = true;
-		
+
 		if( check ){
 			try {
 				result = new ActionSave().execute( request, effectivePerson, null, jsonElement );
@@ -109,7 +109,7 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 				logger.error( e, effectivePerson, request, null);
 			}
 		}
-		
+
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
@@ -118,12 +118,35 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 	@Path("{id}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
-	public void put( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
+	public void put( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			@JaxrsParameterDescribe("列配置ID") @PathParam("id") String id, JsonElement jsonElement) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionSave.Wo> result = new ActionResult<>();
 		Boolean check = true;
-		
+
+		if( check ){
+			try {
+				result = new ActionSave().execute( request, effectivePerson, id, jsonElement );
+			} catch (Exception e) {
+				result = new ActionResult<>();
+				result.error( e );
+				logger.error( e, effectivePerson, request, null);
+			}
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "更新列表列信息配置对象.", action = ActionSave.class)
+	@POST
+	@Path("{id}/mockputtopost")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void putMockPutToPost( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+					 @JaxrsParameterDescribe("列配置ID") @PathParam("id") String id, JsonElement jsonElement) {
+		EffectivePerson effectivePerson = this.effectivePerson( request );
+		ActionResult<ActionSave.Wo> result = new ActionResult<>();
+		Boolean check = true;
+
 		if( check ){
 			try {
 				result = new ActionSave().execute( request, effectivePerson, id, jsonElement );
@@ -135,13 +158,13 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 		}
 		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, 
+	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<>();
@@ -154,5 +177,24 @@ public class ViewFieldConfigAction extends StandardJaxrsAction{
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
-	
-}
+
+	@JaxrsMethodDescribe(value = "根据ID删除列表列信息配置对象.", action = ActionDelete.class)
+	@GET
+	@Path("{id}/mockdeletetoget")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void deleteMockDeleteToGet( @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<>();
+			result.error( e );
+			logger.error( e, effectivePerson, request, null);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+}

+ 53 - 53
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/queue/QueueSendDocumentNotify.java

@@ -25,72 +25,72 @@ import java.util.List;
 /**
  * Document正式发布后,向所有的阅读者推送消息通知
  */
-public class QueueSendDocumentNotify extends AbstractQueue<Document> {
-	
+public class QueueSendDocumentNotify extends AbstractQueue<String> {
+
 	private static  Logger logger = LoggerFactory.getLogger( QueueSendDocumentNotify.class );
 	private UserManagerService userManagerService = new UserManagerService();
 
-	public void execute( Document document ) throws Exception {
-		logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>QueueSendDocumentNotify:" + document.getTitle() );
-		if( document == null ) {
+	public void execute( String documentId ) throws Exception {
+		logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>start QueueSendDocumentNotify:" + documentId );
+		if( StringUtils.isEmpty(documentId) ) {
 			logger.debug("can not send publish notify , document is NULL!" );
 			return;
 		}
-		if( !StringUtils.equalsIgnoreCase( "信息" , document.getDocumentType()) ) {
-			logger.debug("can not send publish notify , document is not '信息'!" );
-			return;
-		}
-		logger.debug("send publish notify for new document:" + document.getTitle() );
+		List<String> persons = null;
+		Document document = null;
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			AppInfo appInfo = emc.find( document.getAppId(), AppInfo.class );
-			CategoryInfo category = emc.find( document.getCategoryId(), CategoryInfo.class );
-
-			if( appInfo != null && category != null ) {
-				ReviewService reviewService = new ReviewService();
-				List<String> persons = reviewService.listPermissionPersons( appInfo, category, document );
-				if( ListTools.isNotEmpty( persons )) {
-					//有可能是*, 一般是所有的人员标识列表
-					if( persons.contains( "*" )) {
-						String topUnitName = document.getCreatorTopUnitName();
-						logger.debug(">>>>>document.getCreatorTopUnitName()=" + topUnitName );
-						if( StringUtils.equalsAnyIgnoreCase("cipher",topUnitName ) || StringUtils.equalsAnyIgnoreCase("xadmin", topUnitName) ){
-							//取发起人所有顶层组织
-							if( !StringUtils.equalsAnyIgnoreCase("cipher",document.getCreatorIdentity() ) &&
-								!StringUtils.equalsAnyIgnoreCase("xadmin",document.getCreatorIdentity() )){
-								topUnitName = userManagerService.getTopUnitNameByIdentity(document.getCreatorIdentity());
-							}else if(!StringUtils.equalsAnyIgnoreCase("cipher",document.getCreatorPerson() ) &&
-									!StringUtils.equalsAnyIgnoreCase("xadmin",document.getCreatorPerson() )){
-								topUnitName = userManagerService.getTopUnitNameWithPerson(document.getCreatorPerson());
+			document = emc.find(documentId, Document.class);
+			if(document !=null && StringUtils.equals( "信息" , document.getDocumentType())) {
+				logger.debug("send publish notify for new document:" + document.getTitle() );
+				AppInfo appInfo = emc.find(document.getAppId(), AppInfo.class);
+				CategoryInfo category = emc.find(document.getCategoryId(), CategoryInfo.class);
+
+				if (appInfo != null && category != null) {
+					ReviewService reviewService = new ReviewService();
+					persons = reviewService.listPermissionPersons(appInfo, category, document);
+					if (ListTools.isNotEmpty(persons)) {
+						//有可能是*, 一般是所有的人员标识列表
+						if (persons.contains("*")) {
+							String topUnitName = document.getCreatorTopUnitName();
+							logger.debug(">>>>>document.getCreatorTopUnitName()=" + topUnitName);
+							if (StringUtils.equalsAnyIgnoreCase("cipher", topUnitName) || StringUtils.equalsAnyIgnoreCase("xadmin", topUnitName)) {
+								//取发起人所有顶层组织
+								if (!StringUtils.equalsAnyIgnoreCase("cipher", document.getCreatorIdentity()) &&
+										!StringUtils.equalsAnyIgnoreCase("xadmin", document.getCreatorIdentity())) {
+									topUnitName = userManagerService.getTopUnitNameByIdentity(document.getCreatorIdentity());
+								} else if (!StringUtils.equalsAnyIgnoreCase("cipher", document.getCreatorPerson()) &&
+										!StringUtils.equalsAnyIgnoreCase("xadmin", document.getCreatorPerson())) {
+									topUnitName = userManagerService.getTopUnitNameWithPerson(document.getCreatorPerson());
+								}
+							}
+							if (StringUtils.isNotEmpty(topUnitName)) {
+								//取顶层组织的所有人
+								persons = listPersonWithUnit(topUnitName);
+							} else {
+								persons = new ArrayList<>();
 							}
-						}
-						if( StringUtils.isNotEmpty( topUnitName )){
-							//取顶层组织的所有人
-							persons = listPersonWithUnit( topUnitName );
-						}else{
-							persons = new ArrayList<>();
 						}
 					}
+				} else {
+					logger.debug("can not send publish notify for document, category or  appinfo not exists! ID: " + document.getId());
 				}
-				if( ListTools.isNotEmpty( persons )) {
-					//去一下重复
-			        HashSet<String> set = new HashSet<String>( persons );
-			        persons.clear();
-			        persons.addAll(set);
-			        
-					MessageWo wo = MessageWo.copier.copy(document);
-					for( String person : persons ) {
-						if( !StringUtils.equals( "*", person  )) {
-							MessageFactory.cms_publish(person, wo);
-						}
-					}
-					logger.debug("cms send total count:" + persons.size()  );
+			}
+		}
+		if( ListTools.isNotEmpty( persons )) {
+			//去一下重复
+			HashSet<String> set = new HashSet<String>( persons );
+			persons.clear();
+			persons.addAll(set);
+
+			MessageWo wo = MessageWo.copier.copy(document);
+			for( String person : persons ) {
+				if( !StringUtils.equals( "*", person  )) {
+					MessageFactory.cms_publish(person, wo);
 				}
-				logger.debug("cms send publish notify for new document completed! " );
-				//}
-			}else{
-				logger.debug("can not send publish notify for document, category or  appinfo not exists! ID: " + document.getId() );
 			}
+			logger.debug(documentId +" cms send total count:" + persons.size()  );
 		}
+		logger.debug(documentId + " QueueSendDocumentNotify cms send publish notify for new document completed! " );
 	}
 
 	/**
@@ -108,7 +108,7 @@ public class QueueSendDocumentNotify extends AbstractQueue<Document> {
 		}
 		return persons;
 	}
-	
+
 	public static class MessageWo{
 
 		public static List<String> Excludes = new ArrayList<String>();

+ 95 - 29
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentViewRecordServiceAdv.java

@@ -21,14 +21,14 @@ import java.util.List;
 /**
  * 对文档访问记录信息进行管理的服务类(高级)
  * 高级服务器可以利用Service完成事务控制
- * 
+ *
  * @author O2LEE
  */
 public class DocumentViewRecordServiceAdv {
-	
+
 	private UserManagerService userManagerService = new UserManagerService();
 	private DocumentViewRecordService documentViewRecordService = new DocumentViewRecordService();
-	
+
 	public List<DocumentViewRecord> list( List<String> ids ) throws Exception {
 		try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
 			return documentViewRecordService.list( emc, ids );
@@ -44,7 +44,7 @@ public class DocumentViewRecordServiceAdv {
 			throw e;
 		}
 	}
-	
+
 	public List<String> listByPerson( String personName, Integer maxCount ) throws Exception {
 		try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
 			List<String> ids =  documentViewRecordService.listByPerson( emc, personName, maxCount );
@@ -56,7 +56,7 @@ public class DocumentViewRecordServiceAdv {
 			throw e;
 		}
 	}
-	
+
 	public List<String> listDocIdsByPerson( String personName, Integer maxCount ) throws Exception {
 		try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
 			List<String> ids =  documentViewRecordService.listDocIdsByPerson( emc, personName, maxCount );
@@ -68,7 +68,7 @@ public class DocumentViewRecordServiceAdv {
 			throw e;
 		}
 	}
-	
+
 	public void deleteByDocument( String docId ) throws Exception {
 		try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
 			documentViewRecordService.deleteByDocument( emc, docId );
@@ -79,8 +79,8 @@ public class DocumentViewRecordServiceAdv {
 
 	/**
 	 * TODO:记录访问日志,一个用户一篇文档只保留一条记录,更新访问次数和最后访问时间
-	 * 
-	 * @param document
+	 *
+	 * @param docId
 	 * @param personName
 	 * @throws Exception
 	 */
@@ -93,14 +93,14 @@ public class DocumentViewRecordServiceAdv {
 		try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
 			business = new Business( emc );
 			emc.beginTransaction( DocumentViewRecord.class );
-			
+
 			ids = business.documentViewRecordFactory().listByDocAndPerson( docId, personName );
 			document = emc.find( docId, Document.class );
-			
+
 			if( document == null ) {
 				throw new Exception("document not exists!ID:" + docId );
 			}
-			
+
 			if( ListTools.isNotEmpty( ids )){
 				int i = 0;
 				for( String id : ids ){
@@ -112,7 +112,7 @@ public class DocumentViewRecordServiceAdv {
 							documentViewRecord.setViewCount( 1 );
 						}
 						documentViewRecord.setViewCount( documentViewRecord.getViewCount() + 1 );
-						emc.check( documentViewRecord, CheckPersistType.all ); 
+						emc.check( documentViewRecord, CheckPersistType.all );
 					}else{
 						//删除多余的日志数据
 						emc.remove( documentViewRecord, CheckRemoveType.all );
@@ -132,23 +132,89 @@ public class DocumentViewRecordServiceAdv {
 					documentViewRecord.setViewCount( 1 );
 					documentViewRecord.setViewerTopUnitName( userManagerService.getTopUnitNameWithPerson( personName ));
 					documentViewRecord.setViewerUnitName( userManagerService.getUnitNameWithPerson( personName ));
-					emc.persist( documentViewRecord, CheckPersistType.all ); 
+					emc.persist( documentViewRecord, CheckPersistType.all );
+				}
+			}
+			emc.commit();
+
+			emc.beginTransaction( Document.class );
+			viewCount = business.documentViewRecordFactory().sumWithDocmentId( docId );
+			document.setViewCount( viewCount );
+			emc.check( document, CheckPersistType.all );
+			emc.commit();
+
+		} catch ( Exception e ) {
+			throw e;
+		}
+		return viewCount;
+	}
+
+	public Long addViewRecord( String docId, String personName, Date viewTime) throws Exception {
+		DocumentViewRecord documentViewRecord = null;
+		Document document = null;
+		Business business = null;
+		Long viewCount = 0L;
+		List<String> ids = null;
+		try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
+			business = new Business( emc );
+			emc.beginTransaction( DocumentViewRecord.class );
+
+			ids = business.documentViewRecordFactory().listByDocAndPerson( docId, personName );
+			document = emc.find( docId, Document.class );
+
+			if( document == null ) {
+				throw new Exception("document not exists!ID:" + docId );
+			}
+
+			if( ListTools.isNotEmpty( ids )){
+				int i = 0;
+				for( String id : ids ){
+					i++;
+					documentViewRecord = emc.find( id, DocumentViewRecord.class );
+					if( i == 1 ){
+						documentViewRecord.setLastViewTime(viewTime);
+						if( documentViewRecord.getViewCount() == null || documentViewRecord.getViewCount() == 0 ){
+							documentViewRecord.setViewCount( 1 );
+						}
+						documentViewRecord.setViewCount( documentViewRecord.getViewCount() + 1 );
+						emc.check( documentViewRecord, CheckPersistType.all );
+					}else{
+						//删除多余的日志数据
+						emc.remove( documentViewRecord, CheckRemoveType.all );
+					}
+				}
+			}else{
+				if( document != null ){
+					documentViewRecord = new DocumentViewRecord();
+					documentViewRecord.setCreateTime(viewTime);
+					documentViewRecord.setAppId( document.getAppId() );
+					documentViewRecord.setCategoryId( document.getCategoryId() );
+					documentViewRecord.setDocumentId( document.getId() );
+					documentViewRecord.setViewerName( personName );
+					documentViewRecord.setAppName( document.getAppName() );
+					documentViewRecord.setCategoryName( document.getCategoryName() );
+					documentViewRecord.setTitle( document.getTitle() );
+					documentViewRecord.setLastViewTime(viewTime);
+					documentViewRecord.setViewCount( 1 );
+					documentViewRecord.setViewerTopUnitName( userManagerService.getTopUnitNameWithPerson( personName ));
+					documentViewRecord.setViewerUnitName( userManagerService.getUnitNameWithPerson( personName ));
+					emc.persist( documentViewRecord, CheckPersistType.all );
 				}
 			}
 			emc.commit();
-			
+
 			emc.beginTransaction( Document.class );
 			viewCount = business.documentViewRecordFactory().sumWithDocmentId( docId );
 			document.setViewCount( viewCount );
-			emc.check( document, CheckPersistType.all ); 
+			emc.check( document, CheckPersistType.all );
 			emc.commit();
-			
+
 		} catch ( Exception e ) {
 			throw e;
-		}		
+		}
 		return viewCount;
 	}
-	
+
 	public List<DocumentViewRecord> listNextWithDocIds( String id, String docId, Integer count, String order) throws Exception {
 		if( docId == null ){
 			throw new Exception("docId is null!");
@@ -162,7 +228,7 @@ public class DocumentViewRecordServiceAdv {
 			throw e;
 		}
 	}
-	
+
 	public Long countWithDocIds( String docId ) throws Exception {
 		if( docId == null ){
 			throw new Exception("docId is null!");
@@ -173,12 +239,12 @@ public class DocumentViewRecordServiceAdv {
 			throw e;
 		}
 	}
-	
+
 	/**
 	 * 对文档访问日志信息进行清理
 	 * @param stay_yeanumr_viewRecord 日志保留年份
 	 * @param stay_count_viewRecord 日志保留条目数
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public void clean( Integer stay_yeanumr_viewRecord, Integer stay_count_viewRecord ) throws Exception {
 		//先按时间清理
@@ -188,8 +254,8 @@ public class DocumentViewRecordServiceAdv {
 
 	/**
 	 * 按最大保留条目数进行清理
-	 * @param stay_count_operationLog
-	 * @throws Exception 
+	 * @param stay_count_viewRecord
+	 * @throws Exception
 	 */
 	private void cleanWithMaxCount(Integer stay_count_viewRecord ) throws Exception {
 		Business business = null;
@@ -218,8 +284,8 @@ public class DocumentViewRecordServiceAdv {
 
 	/**
 	 * 按保留年份对日志进行清理
-	 * @param stay_yearnum_operationLog
-	 * @throws Exception 
+	 * @param stay_yeanumr_viewRecord
+	 * @throws Exception
 	 */
 	private void cleanWithStayYearNumber( Integer stay_yeanumr_viewRecord ) throws Exception {
 		if( stay_yeanumr_viewRecord == null ) {
@@ -230,12 +296,12 @@ public class DocumentViewRecordServiceAdv {
 		Date limitDate = DateOperation.getDateFromString( ( year-4 ) + "-01-01 00:00:00");
 		cleanWithDate( limitDate );
 	}
-	
-	
+
+
 	/**
 	 * 按保留年份对日志进行清理
 	 * @param overTime
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	private void cleanWithDate( Date overTime ) throws Exception {
 		if( overTime == null ) {
@@ -267,7 +333,7 @@ public class DocumentViewRecordServiceAdv {
 	 * @param ids
 	 * @param effectivePerson
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public List<String> listReadDocId( List<String> ids, EffectivePerson effectivePerson ) throws Exception {
 		if( ListTools.isEmpty(  ids ) ) {

+ 11 - 3
o2server/x_cms_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_cms_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_cms_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 57 - 1
o2server/x_cms_core_entity/src/main/java/com/x/cms/core/entity/element/Form.java

@@ -12,6 +12,7 @@ import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.openjpa.persistence.Persistent;
 import org.apache.openjpa.persistence.jdbc.Index;
 
 import com.x.base.core.entity.AbstractPersistenceProperties;
@@ -23,6 +24,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.cms.core.entity.AppInfo;
 import com.x.cms.core.entity.PersistenceProperties;
+import org.apache.openjpa.persistence.jdbc.Strategy;
 
 @Entity
 @ContainerEntity(dumpSize = 5, type = ContainerEntity.Type.content, reference = ContainerEntity.Reference.strong)
@@ -53,6 +55,39 @@ public class Form extends SliceJpaObject {
 		this.editor = StringUtils.trimToEmpty(this.editor);
 	}
 
+	public Form() {
+		this.properties = new FormProperties();
+	}
+
+	public FormProperties getProperties() {
+		if (null == this.properties) {
+			this.properties = new FormProperties();
+		}
+		return this.properties;
+	}
+
+	public void setProperties(FormProperties properties) {
+		this.properties = properties;
+	}
+
+	public String getDataOrMobileData() {
+		if (StringUtils.isNotEmpty(this.getData())) {
+			return this.getData();
+		} else if (StringUtils.isNotEmpty(this.getMobileData())) {
+			return this.getMobileData();
+		}
+		return null;
+	}
+
+	public String getMobileDataOrData() {
+		if (StringUtils.isNotEmpty(this.getMobileData())) {
+			return this.getMobileData();
+		} else if (StringUtils.isNotEmpty(this.getData())) {
+			return this.getData();
+		}
+		return null;
+	}
+
 	/* 以上为 JpaObject 默认字段 */
 
 	/* 更新运行方法 */
@@ -67,6 +102,7 @@ public class Form extends SliceJpaObject {
 	@FieldDescribe("表单别名.")
 	@Column(length = AbstractPersistenceProperties.processPlatform_name_length, name = ColumnNamePrefix
 			+ alias_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + alias_FIELDNAME)
 	private String alias;
 
 	public static final String description_FIELDNAME = "description";
@@ -103,6 +139,19 @@ public class Form extends SliceJpaObject {
 	@Column(length = JpaObject.length_10M, name = ColumnNamePrefix + mobileData_FIELDNAME)
 	private String mobileData;
 
+	public static final String hasMobile_FIELDNAME = "hasMobile";
+	@FieldDescribe("是否有移动端内容.")
+	@Column(name = ColumnNamePrefix + hasMobile_FIELDNAME)
+	private Boolean hasMobile;
+
+	public static final String properties_FIELDNAME = "properties";
+	@FieldDescribe("属性对象存储字段.")
+	@Persistent(fetch = FetchType.EAGER)
+	@Strategy(JsonPropertiesValueHandler)
+	@Column(length = JpaObject.length_10M, name = ColumnNamePrefix + properties_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private FormProperties properties;
+
 	public String getName() {
 		return name;
 	}
@@ -159,4 +208,11 @@ public class Form extends SliceJpaObject {
 		this.alias = alias;
 	}
 
-}
+	public Boolean getHasMobile() {
+		return hasMobile;
+	}
+
+	public void setHasMobile(Boolean hasMobile) {
+		this.hasMobile = hasMobile;
+	}
+}

+ 57 - 0
o2server/x_cms_core_entity/src/main/java/com/x/cms/core/entity/element/FormProperties.java

@@ -0,0 +1,57 @@
+package com.x.cms.core.entity.element;
+
+import com.x.base.core.entity.JsonProperties;
+import com.x.base.core.project.annotation.FieldDescribe;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class FormProperties extends JsonProperties {
+
+	@FieldDescribe("关联表单.")
+	private List<String> relatedFormList = new ArrayList<String>();
+
+	@FieldDescribe("移动端关联表单.")
+	private List<String> mobileRelatedFormList = new ArrayList<String>();
+
+	@FieldDescribe("关联脚本.")
+	private Map<String, String> relatedScriptMap = new LinkedHashMap<String, String>();
+
+	@FieldDescribe("移动端关联脚本.")
+	private Map<String, String> mobileRelatedScriptMap = new LinkedHashMap<String, String>();
+
+	public List<String> getRelatedFormList() {
+		return this.relatedFormList == null ? new ArrayList<String>() : this.relatedFormList;
+	}
+
+	public List<String> getMobileRelatedFormList() {
+		return this.mobileRelatedFormList == null ? new ArrayList<String>() : this.mobileRelatedFormList;
+	}
+
+	public Map<String, String> getRelatedScriptMap() {
+		return this.relatedScriptMap == null ? new LinkedHashMap<String, String>() : this.relatedScriptMap;
+	}
+
+	public Map<String, String> getMobileRelatedScriptMap() {
+		return this.mobileRelatedScriptMap == null ? new LinkedHashMap<String, String>() : this.mobileRelatedScriptMap;
+	}
+
+	public void setRelatedFormList(List<String> relatedFormList) {
+		this.relatedFormList = relatedFormList;
+	}
+
+	public void setMobileRelatedFormList(List<String> mobileRelatedFormList) {
+		this.mobileRelatedFormList = mobileRelatedFormList;
+	}
+
+	public void setRelatedScriptMap(Map<String, String> relatedScriptMap) {
+		this.relatedScriptMap = relatedScriptMap;
+	}
+
+	public void setMobileRelatedScriptMap(Map<String, String> mobileRelatedScriptMap) {
+		this.mobileRelatedScriptMap = mobileRelatedScriptMap;
+	}
+
+}

+ 1 - 1
o2server/x_cms_core_express/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_cms_core_express</artifactId>
 	<packaging>jar</packaging>

+ 1 - 1
o2server/x_component_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_component_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_component_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_component_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_component_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 1 - 1
o2server/x_console/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_console</artifactId>
 	<packaging>jar</packaging>

+ 9 - 60
o2server/x_console/src/main/java/com/x/server/console/NodeAgent.java

@@ -23,6 +23,7 @@ import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathFactory;
 
+import com.x.base.core.project.config.WebServers;
 import com.x.base.core.project.tools.*;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
@@ -133,6 +134,12 @@ public class NodeAgent extends Thread {
 								fos.flush();
 							}
 							fos.close();
+							Config.flush();
+							if(syncFilePath.indexOf("web.json") > -1 || syncFilePath.indexOf("collect.json") > -1
+									|| syncFilePath.indexOf("portal.json") > -1 || syncFilePath.indexOf("person.json") > -1){
+								// 更新web服务配置信息
+								WebServers.updateWebServerConfigJson();
+							}
 							logger.info("同步完成");
 							continue;
 
@@ -480,65 +487,7 @@ public class NodeAgent extends Thread {
 	private void storeJar(String simpleName, byte[] bytes) throws Exception {
 		File jar = new File(Config.dir_store_jars(true), simpleName + ".jar");
 		FileUtils.writeByteArrayToFile(jar, bytes, false);
-		List<ClassInfo> classInfos = this.listModuleDependencyWith(simpleName);
-		List<String> contextPaths = new ArrayList<>();
-		for (ClassInfo info : classInfos) {
-			contextPaths.add("/" + info.getSimpleName());
-		}
-
-		if (Servers.applicationServerIsRunning()) {
-			GzipHandler gzipHandler = (GzipHandler) Servers.applicationServer.getHandler();
-			HandlerList hanlderList = (HandlerList) gzipHandler.getHandler();
-			for (Handler handler : hanlderList.getHandlers()) {
-				if (QuickStartWebApp.class.isAssignableFrom(handler.getClass())) {
-					QuickStartWebApp app = (QuickStartWebApp) handler;
-					if (contextPaths.contains(app.getContextPath())) {
-						logger.print("{} need restart because {} redeployed.", app.getDisplayName(), simpleName);
-						app.stop();
-					}
-				}
-			}
-		}
-		if (Servers.centerServerIsRunning()) {
-			GzipHandler gzipHandler = (GzipHandler) Servers.centerServer.getHandler();
-			HandlerList hanlderList = (HandlerList) gzipHandler.getHandler();
-			for (Handler handler : hanlderList.getHandlers()) {
-				if (QuickStartWebApp.class.isAssignableFrom(handler.getClass())) {
-					QuickStartWebApp app = (QuickStartWebApp) handler;
-					if (contextPaths.contains(app.getContextPath())) {
-						logger.print("{} need restart because {} redeployed.", app.getDisplayName(), simpleName);
-						app.stop();
-					}
-				}
-			}
-		}
 
-		if (Servers.applicationServerIsRunning()) {
-			GzipHandler gzipHandler = (GzipHandler) Servers.applicationServer.getHandler();
-			HandlerList hanlderList = (HandlerList) gzipHandler.getHandler();
-			for (Handler handler : hanlderList.getHandlers()) {
-				if (QuickStartWebApp.class.isAssignableFrom(handler.getClass())) {
-					QuickStartWebApp app = (QuickStartWebApp) handler;
-					if (contextPaths.contains(app.getContextPath())) {
-						logger.print("{} need restart because {} redeployed.", app.getDisplayName(), simpleName);
-						app.start();
-					}
-				}
-			}
-		}
-		if (Servers.centerServerIsRunning()) {
-			GzipHandler gzipHandler = (GzipHandler) Servers.centerServer.getHandler();
-			HandlerList hanlderList = (HandlerList) gzipHandler.getHandler();
-			for (Handler handler : hanlderList.getHandlers()) {
-				if (QuickStartWebApp.class.isAssignableFrom(handler.getClass())) {
-					QuickStartWebApp app = (QuickStartWebApp) handler;
-					if (contextPaths.contains(app.getContextPath())) {
-						logger.print("{} need restart because {} redeployed.", app.getDisplayName(), simpleName);
-						app.start();
-					}
-				}
-			}
-		}
 	}
 
 	private boolean customWarUninstall(String simpleName) throws Exception {
@@ -638,11 +587,11 @@ public class NodeAgent extends Thread {
 	private void customJar(String simpleName, byte[] bytes, boolean rebootApp) throws Exception {
 		File jar = new File(Config.dir_custom_jars(true), simpleName + ".jar");
 		FileUtils.writeByteArrayToFile(jar, bytes, false);
-		if (rebootApp) {
+		/*if (rebootApp) {
 			Servers.stopApplicationServer();
 			Thread.sleep(3000);
 			Servers.startApplicationServer();
-		}
+		}*/
 	}
 
 	private void customZip(String simpleName, byte[] bytes, boolean rebootApp) throws Exception {

+ 9 - 8
o2server/x_console/src/main/java/com/x/server/console/action/DumpData.java

@@ -138,13 +138,14 @@ public class DumpData {
 			List<String> list = new ArrayList<>();
 			if (StringUtils.equals(Config.dumpRestoreData().getMode(), DumpRestoreData.TYPE_FULL)) {
 				list.addAll((List<String>) Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES));
-				return list;
-			}
-			for (String str : (List<String>) Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES)) {
-				Class<?> cls = Thread.currentThread().getContextClassLoader().loadClass(str);
-				ContainerEntity containerEntity = cls.getAnnotation(ContainerEntity.class);
-				if (Objects.equals(containerEntity.reference(), Reference.strong)) {
-					list.add(str);
+				//return list;
+			}else {
+				for (String str : (List<String>) Config.resource(Config.RESOURCE_CONTAINERENTITYNAMES)) {
+					Class<?> cls = Thread.currentThread().getContextClassLoader().loadClass(str);
+					ContainerEntity containerEntity = cls.getAnnotation(ContainerEntity.class);
+					if (Objects.equals(containerEntity.reference(), Reference.strong)) {
+						list.add(str);
+					}
 				}
 			}
 			return ListTools.includesExcludesWildcard(list, Config.dumpRestoreData().getIncludes(),
@@ -229,4 +230,4 @@ public class DumpData {
 			}
 		}
 	}
-}
+}

+ 1 - 1
o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java

@@ -123,7 +123,7 @@ public class ApplicationServerTools extends JettySeverTools {
 
 		QueuedThreadPool threadPool = new QueuedThreadPool();
 		threadPool.setMinThreads(APPLICATIONSERVER_THREAD_POOL_SIZE_MIN);
-		threadPool.setMaxThreads(APPLICATIONSERVER_THREAD_POOL_SIZE_MAX);
+		threadPool.setMaxThreads(applicationServer.getMaxThread());
 		Server server = new Server(threadPool);
 		server.setAttribute("maxFormContentSize", applicationServer.getMaxFormContent() * 1024 * 1024);
 

+ 7 - 96
o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java

@@ -4,19 +4,13 @@ import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.ArrayList;
 import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Objects;
 import java.util.stream.Stream;
 
 import javax.servlet.DispatcherType;
 
-import org.apache.commons.codec.binary.Base64;
+import com.x.base.core.project.config.WebServers;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.BooleanUtils;
@@ -31,8 +25,6 @@ import org.eclipse.jetty.webapp.WebAppContext;
 
 import com.alibaba.druid.support.http.StatViewServlet;
 import com.alibaba.druid.support.http.WebStatFilter;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
 import com.x.base.core.project.x_program_center;
 import com.x.base.core.project.config.Config;
 import com.x.base.core.project.config.WebServer;
@@ -40,7 +32,6 @@ import com.x.base.core.project.gson.XGsonBuilder;
 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.base.core.project.tools.Host;
 import com.x.server.console.server.JettySeverTools;
 
 public class WebServerTools extends JettySeverTools {
@@ -54,8 +45,8 @@ public class WebServerTools extends JettySeverTools {
 
 	public static Server start(WebServer webServer) throws Exception {
 
-		// 更新x_desktop的center指向
-		updateCenterConfigJson();
+		// 更新web服务配置信息
+		WebServers.updateWebServerConfigJson();
 		// 更新 favicon.ico
 		updateFavicon();
 		// 创建index.html
@@ -131,6 +122,8 @@ public class WebServerTools extends JettySeverTools {
 	private static void proxyCenter(WebAppContext context) throws Exception {
 		ServletHolder proxyHolder = new ServletHolder(Proxy.class);
 		proxyHolder.setInitParameter("port", Config.currentNode().getCenter().getPort() + "");
+		proxyHolder.setInitParameter("idleTimeout", "60000");
+		proxyHolder.setInitParameter("timeout", "120000");
 		context.addServlet(proxyHolder, "/" + x_program_center.class.getSimpleName() + "/*");
 	}
 
@@ -142,6 +135,8 @@ public class WebServerTools extends JettySeverTools {
 						try {
 							ServletHolder proxyHolder = new ServletHolder(Proxy.class);
 							proxyHolder.setInitParameter("port", Config.currentNode().getApplication().getPort() + "");
+							proxyHolder.setInitParameter("idleTimeout", "60000");
+							proxyHolder.setInitParameter("timeout", "120000");
 							context.addServlet(proxyHolder, "/" + o + "/*");
 						} catch (Exception e) {
 							logger.error(e);
@@ -172,90 +167,6 @@ public class WebServerTools extends JettySeverTools {
 
 	}
 
-	private static void updateCenterConfigJson() throws Exception {
-		File dir = new File(Config.base(), "servers/webServer/x_desktop/res/config");
-		FileUtils.forceMkdir(dir);
-		File file = new File(dir, "config.json");
-
-		Gson gson = XGsonBuilder.instance();
-
-		LinkedHashMap<String, Object> map = new LinkedHashMap<>();
-		/** 覆盖掉配置的参数 */
-		com.x.base.core.project.config.CenterServer centerServerConfig = Config.nodes().centerServers().first()
-				.getValue();
-		map.putAll(centerServerConfig.getConfig());
-		List<Map<String, String>> centers = new ArrayList<>();
-		map.put("center", centers);
-		/** 写入center地址 */
-		Map<String, String> center = new HashMap<String, String>();
-		center = new HashMap<String, String>();
-		center.put("host", "");
-		center.put("port", centerServerConfig.getPort().toString());
-		centers.add(center);
-		if (!Objects.equals(centerServerConfig.getProxyPort(), centerServerConfig.getPort())) {
-			center = new HashMap<String, String>();
-			center.put("host", "");
-			center.put("port", centerServerConfig.getProxyPort().toString());
-			centers.add(center);
-		}
-		String host = Config.nodes().primaryCenterNode();
-		if (!Host.isRollback(host)) {
-			center = new HashMap<String, String>();
-			center.put("host", host);
-			center.put("port", centerServerConfig.getPort().toString());
-			centers.add(center);
-		}
-		/** 写入proxy地址 */
-		if (StringUtils.isNotEmpty(centerServerConfig.getProxyHost())) {
-			center = new HashMap<String, String>();
-			center.put("host", centerServerConfig.getProxyHost());
-			center.put("port", centerServerConfig.getProxyPort().toString());
-			centers.add(center);
-		}
-
-		/** 写入systemName */
-		map.put("footer", Config.collect().getFooter());
-		map.put("title", Config.collect().getTitle());
-		map.put("appUrl", Config.collect().getAppUrl());
-		/***/
-		if (centerServerConfig.getSslEnable()) {
-			map.put("app_protocol", "https:");
-		} else {
-			map.put("app_protocol", "http:");
-		}
-		/* 上面的无效 */
-		map.put("app_protocol", "auto");
-		if ((null != Config.portal().getLoginPage())
-				&& (BooleanUtils.isTrue(Config.portal().getLoginPage().getEnable()))) {
-			map.put(MAP_LOGINPAGE, Config.portal().getLoginPage());
-		} else if ((null != Config.person().getLoginPage())
-				&& (BooleanUtils.isTrue(Config.person().getLoginPage().getEnable()))) {
-			map.put(MAP_LOGINPAGE, Config.person().getLoginPage());
-		} else {
-			map.put(MAP_LOGINPAGE, Config.portal().getLoginPage());
-		}
-		map.put("indexPage", Config.portal().getIndexPage());
-		map.put("webSocketEnable", Config.communicate().wsEnable());
-		map.put("urlMapping", Config.portal().getUrlMapping());
-
-		/* 密码规则 */
-		map.put("passwordRegex", Config.person().getPasswordRegex());
-		map.put("passwordRegexHint", Config.person().getPasswordRegexHint());
-
-		/* RSA */
-		File publicKeyFile = new File(Config.base(), "config/public.key");
-		if (publicKeyFile.exists() && publicKeyFile.isFile()) {
-			String publicKey = FileUtils.readFileToString(publicKeyFile, "utf-8");
-			byte[] publicKeyB = Base64.decodeBase64(publicKey);
-			publicKey = new String(Base64.encodeBase64(publicKeyB));
-			map.put("publicKey", publicKey);
-		}
-		for (Entry<String, JsonElement> en : Config.web().entrySet()) {
-			map.put(en.getKey(), en.getValue());
-		}
-		FileUtils.writeStringToFile(file, gson.toJson(map), DefaultCharset.charset);
-	}
-
 	private static void createIndexPage() throws Exception {
 		if (null != Config.nodes().webServers()) {
 			StringBuffer buffer = new StringBuffer();

+ 1 - 1
o2server/x_file_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_file_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_file_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_file_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_file_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 1 - 1
o2server/x_general_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_general_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_general_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

+ 1 - 1
o2server/x_general_core_entity/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_general_core_entity</artifactId>
 	<packaging>jar</packaging>

+ 1 - 1
o2server/x_hotpic_assemble_control/pom.xml

@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>o2oa</groupId>
 		<artifactId>o2server</artifactId>
-		<version>5.4</version>
+		<version>6.0</version>
 	</parent>
 	<artifactId>x_hotpic_assemble_control</artifactId>
 	<packaging>war</packaging>

+ 11 - 3
o2server/x_hotpic_assemble_control/src/main/webapp/jest/describe.js

@@ -670,10 +670,12 @@ Describe.createSampleCommon= function(m,className) {
 				
 	}else{
 			var formData = "var formData = new FormData();" + "\n";
+			var hasFile = false;
 			if (m.formParameters && m.formParameters.length > 0) {
 				$.each(m.formParameters, function(pi, p) {
 					if (p.type == "File") {
-					formData += '      formData.append("'+p.name+'", $("input[type=file]")[0].files[0]);' +  "\n";
+					formData += '      formData.append("'+p.name+'", $("input[type=file]").files[0]);' +  "\n";
+					hasFile = true;
 					} else {
 					formData += '      formData.append("'+p.name+'", "参数值'+pi+'");' +  "\n";
 					}
@@ -683,8 +685,14 @@ Describe.createSampleCommon= function(m,className) {
 		 strSample += "var action = this.Actions.load(\"" + root + "\");\n";
 		 //strSample += "action."+m.name+ "(//平台封装好的方法\n";
 		 strSample += "       action."+ className + "."+m.name+ "(//平台封装好的方法\n";
-		 strSample += "      "+parameter  +",//uri的参数\n";
-		 strSample +=  "      formData"+",//from参数\n";
+		  // strSample += "      "+parameter  +",//uri的参数\n";
+		  if(parameter!=""){
+	        strSample += "      " + parameter  +",//uri的参数\n";
+	       }
+		  strSample +=  "      formData"+",//from参数\n";
+		 if(hasFile == true){
+		    strSample +=  '      $("input[type=file]").files[0])'+",//file参数\n";	 
+		 }
 		 strSample +=  "function( json ){ //服务调用成功的回调函数, json为服务传回的数据\n";
 		 strSample +=  "      data = json.data; //为变量data赋值\n";
 		 strSample +=  "}.bind(this),\n";

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است