Browse Source

基础框架发布: 8.2.24

1) 更新 liquibase 文件名
  2)jpa, 构建查询条件时如果字段名在实体类中不存在报错的 bug

前端核心发布: 8.2.28
main
wangshaoping 2 months ago
parent
commit
a83f939ba3
  1. 5
      app.platform/src/main/java/app/platform/Application.java
  2. 442
      app.platform/src/main/resources/public/logo-shrcb.svg
  3. BIN
      app.platform/src/main/resources/public/logo.png
  4. 6
      cips.frontend/package.json
  5. 6
      erm.frontend/package.json
  6. 2
      gradle.properties
  7. 6
      io.sc.engine.mv.frontend/package.json
  8. 2
      io.sc.engine.mv/src/main/resources/META-INF/platform/plugins/liquibase.json
  9. 0
      io.sc.engine.mv/src/main/resources/liquibase/io.sc.engine.mv_8.0.0_20221020__Model_Validate_Database_Schema_DDL.xml
  10. 6
      io.sc.engine.rule.frontend/package.json
  11. 4
      io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/liquibase.json
  12. 0
      io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Data.xml
  13. 0
      io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Schema_DDL.xml
  14. 6
      io.sc.engine.st.frontend/package.json
  15. 4
      io.sc.engine.st/src/main/resources/META-INF/platform/plugins/liquibase.json
  16. 0
      io.sc.engine.st/src/main/resources/liquibase/io.sc.engine.st_1.0.0_20221020__ST_Data.xml
  17. 0
      io.sc.engine.st/src/main/resources/liquibase/io.sc.engine.st_8.0.0_20221020__Stress_Test_Database_Schema_DDL.xml
  18. 6
      io.sc.platform.ai.frontend/package.json
  19. 2
      io.sc.platform.attachment/src/main/resources/META-INF/platform/plugins/liquibase.json
  20. 0
      io.sc.platform.attachment/src/main/resources/liquibase/io.sc.platform.attachment_8.0.0_20220606__Attachment_Database_Schema_DDL.xml
  21. 2
      io.sc.platform.core.frontend/package.json
  22. 8
      io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue
  23. 6
      io.sc.platform.core.frontend/template-project/package.json
  24. 3
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties
  25. 3
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
  26. 3
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
  27. 6
      io.sc.platform.developer.doc/package.json
  28. 6
      io.sc.platform.developer.frontend/package.json
  29. 6
      io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/liquibase.json
  30. 0
      io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Flowable(6.8.0)_Database_Schema_DDL.xml
  31. 0
      io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process_Manager_Data.xml
  32. 0
      io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process_Manager_Database_Schema_DDL.xml
  33. 6
      io.sc.platform.lcdp.frontend/package.json
  34. 8
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/service/impl/ConfigureServiceImpl.java
  35. 2
      io.sc.platform.lcdp/src/main/resources/META-INF/platform/plugins/liquibase.json
  36. 0
      io.sc.platform.lcdp/src/main/resources/liquibase/io.sc.platform.lcdp_8.0.0_20220606__LowCode_Developer_Database_Schema_DDL.xml
  37. 6
      io.sc.platform.license.keygen.frontend/package.json
  38. 2
      io.sc.platform.license.keygen/src/main/resources/META-INF/platform/plugins/liquibase.json
  39. 0
      io.sc.platform.license.keygen/src/main/resources/liquibase/io.sc.platform.license.keygen_8.0.0_20220606__License_Keygen_Database_Schema_DDL.xml
  40. 6
      io.sc.platform.mvc.frontend/package.json
  41. 9
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/BetweenInclusive.java
  42. 9
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Contains.java
  43. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/ContainsField.java
  44. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/EndWith.java
  45. 9
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Equals.java
  46. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/EqualsField.java
  47. 17
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterOrEquals.java
  48. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterOrEqualsField.java
  49. 17
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterThan.java
  50. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterThanField.java
  51. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IContains.java
  52. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IContainsField.java
  53. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IEndWith.java
  54. 9
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IEquals.java
  55. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IEqualsField.java
  56. 9
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/InSet.java
  57. 15
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IsBlank.java
  58. 15
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IsNotNull.java
  59. 15
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IsNull.java
  60. 17
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessOrEquals.java
  61. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessOrEqualsField.java
  62. 17
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessThan.java
  63. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessThanField.java
  64. 15
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotBlank.java
  65. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotContains.java
  66. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotContainsField.java
  67. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotEndWith.java
  68. 9
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotEquals.java
  69. 19
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotEqualsField.java
  70. 15
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotInSet.java
  71. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotStartWith.java
  72. 11
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/StartWith.java
  73. 6
      io.sc.platform.scheduler.manager.frontend/package.json
  74. 2
      io.sc.platform.scheduler.manager/src/main/resources/META-INF/platform/plugins/liquibase.json
  75. 0
      io.sc.platform.scheduler.manager/src/main/resources/liquibase/io.sc.platform.scheduler.manager_8.0.0_20220606__Scheduler_Database_Schema_DDL.xml
  76. 4
      io.sc.platform.security/src/main/resources/META-INF/platform/plugins/liquibase.json
  77. 24
      io.sc.platform.security/src/main/resources/META-INF/platform/plugins/parameters.json
  78. 2
      io.sc.platform.security/src/main/resources/io/sc/platform/security/i18n/parameters.properties
  79. 2
      io.sc.platform.security/src/main/resources/io/sc/platform/security/i18n/parameters_tw_CN.properties
  80. 2
      io.sc.platform.security/src/main/resources/io/sc/platform/security/i18n/parameters_zh_CN.properties
  81. 0
      io.sc.platform.security/src/main/resources/liquibase/io.sc.platform.security_8.0.0_20220606__Security_Data.xml
  82. 0
      io.sc.platform.security/src/main/resources/liquibase/io.sc.platform.security_8.0.0_20220606__Security_Database_Schema_DDL.xml
  83. 79
      io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/shortcutmenu/ShortcutMenuVo.java
  84. 6
      io.sc.platform.system.frontend/package.json
  85. 2
      io.sc.platform.system.frontend/src/components/index.ts
  86. 6
      io.sc.platform.system.frontend/src/i18n/messages.json
  87. 6
      io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json
  88. 6
      io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json
  89. 130
      io.sc.platform.system.frontend/src/routes/routes.json
  90. 19
      io.sc.platform.system/src/main/java/io/sc/platform/system/initializer/ParameterInitializer.java
  91. 14
      io.sc.platform.system/src/main/java/io/sc/platform/system/menu/controller/MenuWebController.java
  92. 6
      io.sc.platform.system/src/main/java/io/sc/platform/system/menu/jpa/repository/MenuRepository.java
  93. 18
      io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java
  94. 38
      io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java
  95. 20
      io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/controller/ShortcutMenuWebController.java
  96. 108
      io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/jpa/entity/ShortcutMenuEntity.java
  97. 10
      io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/jpa/repository/ShortcutMenuRepository.java
  98. 10
      io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/service/ShortcutMenuService.java
  99. 77
      io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/service/impl/ShortcutMenuServiceImpl.java
  100. 3
      io.sc.platform.system/src/main/resources/META-INF/platform/plugins/components.json

5
app.platform/src/main/java/app/platform/Application.java

@ -2,9 +2,14 @@ package app.platform;
import io.sc.platform.core.ApplicationLauncher; import io.sc.platform.core.ApplicationLauncher;
import io.sc.platform.core.PlatformSpringBootServletInitializer; import io.sc.platform.core.PlatformSpringBootServletInitializer;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.orm.service.support.criteria.Criteria;
import io.sc.platform.orm.service.support.criteria.impl.GreaterOrEquals;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.WebApplicationInitializer; import org.springframework.web.WebApplicationInitializer;
import java.util.List;
/** /**
* 应用程序入口 * 应用程序入口
*/ */

442
app.platform/src/main/resources/public/logo-shrcb.svg

@ -0,0 +1,442 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="330"
height="45"
viewBox="0 0 87.312507 11.906249"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath855">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-516.96141,-424.39691)"
id="path855" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath857">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-518.72131,-391.63731)"
id="path857" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath859">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-500.66911,-410.98801)"
id="path859" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath861">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-530.98662,-419.27301)"
id="path861" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath863">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-550.84531,-409.75681)"
id="path863" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath865">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-579.37941,-407.79691)"
id="path865" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath867">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-602.59522,-403.20541)"
id="path867" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath869">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
id="path869" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath871">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
id="path871" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath873">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
id="path873" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath875">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-408.81141,-398.29541)"
id="path875" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath877">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-434.02561,-398.55491)"
id="path877" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath879">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-441.21701,-407.94111)"
id="path879" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath881">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-466.00061,-398.24321)"
id="path881" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath883">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-479.11831,-409.10921)"
id="path883" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath855-7">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-516.96141,-424.39691)"
id="path855-9" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath857-0">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-518.72131,-391.63731)"
id="path857-2" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath859-3">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-500.66911,-410.98801)"
id="path859-9" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath861-9">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-530.98662,-419.27301)"
id="path861-7" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath863-0">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-550.84531,-409.75681)"
id="path863-3" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath865-9">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-579.37941,-407.79691)"
id="path865-8" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath867-6">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-602.59522,-403.20541)"
id="path867-5" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath869-7">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
id="path869-6" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath871-2">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
id="path871-7" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath873-0">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
id="path873-3" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath875-9">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-408.81141,-398.29541)"
id="path875-9" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath877-9">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-434.02561,-398.55491)"
id="path877-1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath879-7">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-441.21701,-407.94111)"
id="path879-2" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath881-3">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-466.00061,-398.24321)"
id="path881-6" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath883-5">
<path
d="M 0,612.283 H 858.898 V 0 H 0 Z"
transform="translate(-479.11831,-409.10921)"
id="path883-5" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath31">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-364.02571,-633.03882)"
id="path31" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath33">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-368.41801,-637.42052)"
id="path33" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath35">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-356.18591,-628.76061)"
id="path35" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath37">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-352.58731,-701.97282)"
id="path37" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath39">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-354.31431,-703.03962)"
id="path39" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath41">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-373.26981,-700.11352)"
id="path41" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath43">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-354.75821,-704.27782)"
id="path43" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath45">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-317.71781,-672.87732)"
id="path45" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath47">
<path
d="M 0,871.818 H 583.579 V 0 H 0 Z"
transform="translate(-386.17571,-691.58511)"
id="path47" />
</clipPath>
</defs>
<path
id="path862"
d="m 0,0 v -8.963 h 9.425 v -2.026 h -19.533 v 2.026 h 7.884 V 8.258 H 0 V 2.048 H 7.994 V 0 Z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,47.447472,5.4773033)"
clip-path="url(#clipPath863-0)" />
<path
id="path864"
d="m 0,0 0.132,3.149 h -4.58 C -4.36,3.09 -4.228,2.987 -4.052,2.841 -3.054,2.121 -2.356,1.585 -1.96,1.233 L -2.951,0 Z m -0.33,-4.911 c 0.058,0.734 0.132,1.776 0.22,3.127 h -4.801 c 1.175,-0.836 2.055,-1.497 2.643,-1.982 L -3.215,-4.911 Z M -7.443,3.149 -7.796,0 h 4.669 C -3.832,0.602 -4.72,1.292 -5.792,2.07 l 0.837,1.079 z m -0.573,-4.933 -0.352,-3.127 h 4.756 c -0.954,0.778 -1.827,1.446 -2.62,2.004 l 0.903,1.123 z m 11.76,0 H 1.85 C 1.762,-3.135 1.688,-4.177 1.63,-4.911 H 3.347 V -6.716 H 1.497 L 1.475,-7.003 C 1.387,-8.075 1.13,-8.823 0.705,-9.249 0.279,-9.675 -0.44,-9.895 -1.454,-9.91 c -1.247,-0.029 -2.393,0.03 -3.435,0.176 l -0.396,1.85 c 1.145,-0.162 2.209,-0.235 3.193,-0.22 0.543,0 0.925,0.106 1.145,0.319 0.22,0.213 0.36,0.569 0.418,1.069 h -9.953 l 0.528,4.932 h -1.563 V 0 h 1.761 l 0.441,3.876 -0.859,-1.013 -1.387,1.453 c 0.792,0.896 1.545,1.894 2.257,2.995 0.712,1.101 1.288,2.158 1.729,3.171 L -5.682,9.998 C -5.858,9.587 -6.078,9.117 -6.342,8.588 H 3.171 V 6.738 H -7.377 C -7.671,6.239 -8.053,5.652 -8.522,4.977 H 2.136 C 2.092,3.318 2.026,1.659 1.938,0 h 1.806 z m -15.57,7.091 c -0.851,0.705 -2.165,1.718 -3.941,3.039 l 1.189,1.564 c 0.66,-0.47 1.629,-1.212 2.906,-2.224 l 0.948,-0.727 z m -4.47,-14.446 c 0.235,0.617 0.69,1.93 1.365,3.942 0.676,2.011 1.087,3.281 1.234,3.809 l 1.871,-0.638 c -0.338,-1.013 -0.763,-2.309 -1.277,-3.887 -0.514,-1.578 -0.932,-2.881 -1.255,-3.909 z m 0.749,14.116 1.123,-0.859 c 1.306,-0.954 2.253,-1.681 2.841,-2.18 l -1.145,-1.696 c -0.544,0.47 -1.216,1.024 -2.015,1.663 -0.801,0.638 -1.45,1.134 -1.949,1.486 z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,56.323136,6.0869395)"
clip-path="url(#clipPath865-9)" />
<path
id="path866"
d="M 0,0 C 1.079,-0.786 2.338,-1.508 3.777,-2.169 L 2.433,-4.151 C 0.642,-3.182 -0.859,-2.18 -2.07,-1.145 -3.281,-0.11 -4.305,1.064 -5.142,2.378 -5.979,3.692 -6.706,5.259 -7.322,7.08 -7.924,5.949 -8.658,4.885 -9.524,3.887 v -6.276 l 4.756,1.938 0.397,-2.137 c -2.452,-0.836 -4.397,-1.577 -5.836,-2.224 l -1.321,-0.639 -0.947,1.916 c 0.352,0.221 0.591,0.441 0.715,0.661 0.125,0.22 0.188,0.485 0.188,0.793 V 1.817 C -12.879,0.672 -14.325,-0.4 -15.91,-1.398 l -1.146,1.982 c 2.467,1.526 4.397,3.071 5.792,4.635 1.395,1.564 2.408,3.322 3.039,5.274 h -4.889 V 7.388 h -2.004 v 5.043 h 7.4 c 0.176,0.969 0.293,1.842 0.352,2.621 l 2.334,-0.221 c -0.074,-0.748 -0.198,-1.548 -0.374,-2.4 H 2.301 V 7.851 H 0.319 v 2.642 H -5.913 C -6.001,10.17 -6.075,9.935 -6.133,9.788 -5.619,7.718 -4.907,5.905 -3.997,4.349 -2.426,5.45 -1.09,6.536 0.011,7.608 L 1.398,5.847 C -0.114,4.628 -1.523,3.564 -2.83,2.654 -2.022,1.67 -1.079,0.785 0,0"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,63.544524,7.5151485)"
clip-path="url(#clipPath867-6)" />
<path
id="path868"
d="m 620.922,404.406 h -4.647 v -2.246 h 4.647 z m -0.506,7.509 c 0.323,0.749 0.624,1.505 0.903,2.268 h -5.528 c 0.411,-1.145 0.661,-1.901 0.749,-2.268 z m 2.312,-11.517 h -8.258 v 5.461 l -1.211,-0.969 -1.101,1.432 c 0.734,0.513 1.497,1.108 2.29,1.783 0.793,0.675 1.431,1.27 1.916,1.784 l 1.277,-1.189 c -0.602,-0.632 -1.541,-1.483 -2.819,-2.555 h 7.708 c -1.542,1.38 -2.488,2.217 -2.841,2.511 l 1.255,1.255 c 0.265,-0.206 0.962,-0.8 2.092,-1.784 1.131,-0.984 1.799,-1.578 2.004,-1.783 l -1.211,-1.432 c -0.162,0.176 -0.528,0.529 -1.101,1.057 z m 5.682,13.785 h -4.955 c -0.118,-0.367 -0.404,-1.123 -0.859,-2.268 h 4.558 V 400.75 c 0,-0.763 -0.095,-1.336 -0.286,-1.718 -0.191,-0.381 -0.503,-0.642 -0.936,-0.781 -0.433,-0.14 -1.053,-0.21 -1.861,-0.21 -0.44,0 -1.042,0.03 -1.805,0.088 l -0.375,1.74 c 0.69,-0.088 1.454,-0.132 2.29,-0.132 0.382,0 0.654,0.11 0.815,0.33 0.162,0.221 0.243,0.587 0.243,1.102 v 8.984 h -13.213 v -12.112 h -1.894 v 13.874 h 4.36 c -0.147,0.514 -0.396,1.27 -0.749,2.268 h -4.954 v 1.85 h 8.742 c -0.367,0.822 -0.639,1.395 -0.815,1.718 l 2.136,0.462 c 0.265,-0.484 0.609,-1.211 1.035,-2.18 h 8.523 z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,-123.89562,132.93413)"
clip-path="url(#clipPath869-7)" />
<path
id="path870"
d="m 647.915,411.232 h -6.518 v -2.246 h 6.518 z m 0,4.03 h -6.518 v -2.29 h 6.518 z m 3.413,-15.239 -1.211,-1.717 c -1.336,0.763 -2.452,1.548 -3.347,2.356 -0.896,0.807 -1.652,1.736 -2.269,2.786 -0.616,1.049 -1.137,2.308 -1.563,3.776 h -1.542 v -6.628 l 3.172,1.497 0.396,-1.959 c -1.615,-0.661 -2.922,-1.226 -3.92,-1.696 l -1.365,-0.683 -0.969,1.784 c 0.323,0.161 0.532,0.308 0.627,0.44 0.096,0.132 0.144,0.338 0.144,0.617 v 16.472 h 10.284 v -9.844 h -4.955 c 0.352,-1.16 0.785,-2.143 1.299,-2.95 1.057,0.689 2.217,1.577 3.48,2.664 l 1.123,-1.431 c -1.337,-1.058 -2.533,-1.916 -3.59,-2.577 0.969,-1.072 2.371,-2.041 4.206,-2.907 m -15.547,17.794 c -0.323,-0.984 -0.624,-1.777 -0.903,-2.379 h 3.612 v -1.849 h -4.493 c -0.426,-0.793 -0.881,-1.527 -1.365,-2.203 h 5.329 v -1.783 h -2.224 v -2.511 h 2.642 v -1.828 h -2.642 v -3.985 l 2.356,1.541 0.397,-1.894 c -0.955,-0.558 -1.938,-1.182 -2.951,-1.872 -0.514,-0.337 -0.947,-0.646 -1.3,-0.925 l -1.123,1.63 c 0.294,0.249 0.496,0.455 0.606,0.617 0.11,0.161 0.165,0.366 0.165,0.616 v 4.272 h -2.598 v 1.828 h 2.598 v 2.511 h -1.674 v 1.189 l -0.11,-0.154 -1.277,1.497 c 1.262,1.659 2.268,3.656 3.017,5.99 z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,-123.89562,132.93413)"
clip-path="url(#clipPath871-2)" />
<path
id="path872"
d="m 662.73,416.826 h 10.46 v -1.982 h -10.46 z m 11.363,-6.276 v -2.004 h -3.436 v -7.444 c 0,-1.072 -0.231,-1.835 -0.693,-2.29 -0.463,-0.455 -1.237,-0.697 -2.324,-0.726 h -0.682 c -0.896,0 -1.674,0.036 -2.334,0.11 l -0.419,2.092 c 1.072,-0.147 2.041,-0.221 2.907,-0.221 0.543,0 0.91,0.114 1.101,0.342 0.191,0.227 0.286,0.656 0.286,1.288 v 6.849 h -6.628 v 2.004 z m -12.971,6.122 c -0.734,-0.925 -1.651,-1.924 -2.753,-2.995 -1.101,-1.072 -2.15,-1.99 -3.149,-2.753 l -1.101,1.916 c 0.852,0.601 1.791,1.402 2.819,2.4 1.027,0.999 1.894,1.938 2.599,2.819 z m 0.022,-5.462 c -0.558,-0.852 -1.255,-1.761 -2.092,-2.73 v -10.505 h -2.048 v 8.258 c -0.837,-0.851 -1.63,-1.6 -2.378,-2.246 l -0.881,1.938 c 1.057,0.939 2.117,2.004 3.182,3.193 1.064,1.189 1.934,2.298 2.61,3.325 z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,-123.89562,132.93413)"
clip-path="url(#clipPath873-0)" />
<path
id="path874"
d="M 0,0 C -2.906,0 -5.317,0.943 -7.585,2.969 L -7.76,3.125 -6.175,5 -5.99,4.833 c 1.97,-1.781 3.728,-2.507 6.068,-2.507 2.242,0 3.808,1.17 3.808,2.847 v 0.052 c 0,1.5 -0.701,2.409 -4.533,3.217 -3.777,0.821 -6.292,2.067 -6.292,5.479 v 0.052 c 0,3.013 2.613,5.2 6.212,5.2 2.587,0 4.542,-0.684 6.537,-2.286 L 5.992,16.74 4.507,14.77 4.312,14.929 c -1.605,1.308 -3.223,1.918 -5.091,1.918 -2.135,0 -3.626,-1.107 -3.626,-2.692 v -0.052 c 0,-1.511 0.733,-2.436 4.741,-3.294 C 4.618,9.875 6.445,8.268 6.445,5.433 V 5.381 C 6.445,2.213 3.795,0 0,0"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,3.2671354,9.0424265)"
clip-path="url(#clipPath875-9)" />
<path
id="path876"
d="M 0,0 H -2.533 V 8.177 H -12.538 V 0 h -2.533 v 18.654 h 2.533 V 10.58 h 10.005 v 8.074 H 0 Z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,11.110135,8.9617075)"
clip-path="url(#clipPath877-9)" />
<path
id="path878"
d="M 0,0 H 5.34 C 8.032,0 9.771,1.373 9.771,3.497 V 3.549 C 9.771,5.672 8.165,6.89 5.366,6.89 H 0 Z m 13.221,-9.386 h -3.122 l -5.27,7.06 H 0 v -7.06 H -2.533 V 9.267 H 5.522 C 7.745,9.267 9.64,8.597 10.858,7.38 11.807,6.43 12.33,5.097 12.33,3.627 V 3.575 c 0,-2.766 -1.767,-4.782 -4.751,-5.456 z"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,13.347058,6.0420841)"
clip-path="url(#clipPath879-7)" />
<path
id="path880"
d="m 0,0 c -5.332,0 -9.353,4.121 -9.353,9.587 v 0.052 c 0,5.404 4.143,9.638 9.431,9.638 3.627,0 5.629,-1.417 7.252,-2.947 l 0.174,-0.165 -1.73,-1.859 -0.177,0.167 c -1.792,1.701 -3.45,2.426 -5.545,2.426 -3.873,0 -6.794,-3.099 -6.794,-7.209 V 9.639 c 0,-4.072 2.984,-7.261 6.794,-7.261 2.511,0 4.094,1.021 5.7,2.555 L 5.921,5.094 7.61,3.437 7.44,3.265 C 5.847,1.65 3.718,0 0,0"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,21.056114,9.0586635)"
clip-path="url(#clipPath881-3)" />
<path
id="path882"
d="M 0,0 H 5.132 C 7.598,0 9.07,1.123 9.07,3.004 v 0.052 c 0,1.702 -1.414,2.718 -3.782,2.718 H 0 Z m 0,-8.229 h 5.859 c 2.644,0 4.223,1.123 4.223,3.004 v 0.052 c 0,1.853 -1.629,2.874 -4.586,2.874 H 0 Z m 5.807,-2.325 H -2.507 V 8.099 h 7.976 c 2.092,0 3.793,-0.58 4.919,-1.678 0.825,-0.853 1.241,-1.888 1.241,-3.08 V 3.289 c 0,-2.239 -1.252,-3.482 -2.488,-4.162 2.323,-0.853 3.501,-2.341 3.501,-4.43 v -0.052 c 0,-3.207 -2.619,-5.199 -6.835,-5.199"
style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.31105481,0,0,-0.31105481,25.136444,5.6787407)"
clip-path="url(#clipPath883-5)" />
<path
id="path30"
d="m 0,0 c -2.966,-2.456 -5.494,-3.804 -5.545,-3.856 -0.088,-0.088 -0.158,-0.192 -0.209,-0.303 0.051,0.111 0.121,0.215 0.209,0.303 0.051,0.052 2.579,1.4 5.545,3.856"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,38.259853,10.233542)"
clip-path="url(#clipPath31)" />
<path
id="path32"
d="M 0,0 C -0.728,-0.906 -1.504,-1.743 -2.295,-2.507 -3,-3.189 -3.708,-3.815 -4.392,-4.382 -3.708,-3.815 -3,-3.189 -2.294,-2.507 -1.504,-1.743 -0.728,-0.906 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,38.834141,9.6606383)"
clip-path="url(#clipPath33)" />
<path
id="path34"
d="m 0,0 c 0.081,0.692 0.391,1.342 0.868,1.824 0.195,0.199 0.356,0.293 0.599,0.435 3.261,1.902 5.65,3.949 7.081,5.332 2.129,2.058 4.706,5.247 5.747,9.305 -4.641,-2.942 -10.291,-4.345 -16.152,-3.568 -1.984,0.264 -3.879,0.762 -5.664,1.463 -0.67,0.263 -1.435,0.065 -1.925,-0.462 l -7.49,-8.063 C -17.735,5.406 -17.508,4.012 -16.469,3.464 -11.557,0.869 -5.984,-0.711 0.036,-0.921 -0.018,-0.62 -0.035,-0.31 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,37.234805,10.792915)"
clip-path="url(#clipPath35)" />
<path
id="path36"
d="M 0,0 C 0.227,0.148 0.431,0.278 0.624,0.399 0.431,0.278 0.227,0.148 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,36.76429,1.2204778)"
clip-path="url(#clipPath37)" />
<path
id="path38"
d="M 0,0 C 0.118,0.069 0.184,0.107 0.192,0.115 0.184,0.107 0.118,0.069 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,36.990095,1.0809946)"
clip-path="url(#clipPath39)" />
<path
id="path40"
d="m 0,0 c -4.912,2.595 -10.485,4.174 -16.505,4.385 0.054,-0.302 0.071,-0.612 0.036,-0.921 -0.081,-0.693 -0.391,-1.342 -0.868,-1.824 -0.195,-0.199 -0.356,-0.293 -0.6,-0.435 -3.26,-1.902 -5.649,-3.949 -7.08,-5.332 -1.945,-1.881 -4.261,-4.706 -5.442,-8.274 4.583,2.6 10.115,3.297 15.847,2.536 1.984,-0.263 3.879,-0.761 5.664,-1.462 0.67,-0.263 1.435,-0.066 1.925,0.462 l 7.489,8.063 C 1.266,-1.942 1.039,-0.549 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,39.46851,1.46358)"
clip-path="url(#clipPath41)" />
<path
id="path42"
d="M 0,0 C -0.025,0.081 -0.047,0.163 -0.091,0.236 -0.047,0.163 -0.025,0.081 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,37.048134,0.91910153)"
clip-path="url(#clipPath43)" />
<path
id="path44"
d="m 0,0 c -2.125,-12.056 1.623,-23.698 9.093,-32.125 1.031,-0.859 2.569,-0.831 3.53,0.165 l 7.921,8.191 10.303,10.654 c 1.266,1.31 2.344,3.515 1.04,4.786 -7.964,7.762 -10.147,14.687 -9.45,20.449 0.624,5.149 3.546,9.371 6.708,12.427 3.765,3.639 7.581,5.667 7.643,5.731 0.175,0.177 0.28,0.412 0.309,0.655 0.027,0.242 -0.021,0.492 -0.148,0.703 C 18.865,31.267 3.168,17.973 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,32.205132,5.0246905)"
clip-path="url(#clipPath45)" />
<path
id="path46"
d="m 0,0 c -1.031,0.86 -2.568,0.831 -3.53,-0.164 l -7.921,-8.191 -10.303,-10.655 c -1.266,-1.31 -2.344,-3.515 -1.04,-4.786 7.964,-7.761 10.147,-14.686 9.45,-20.449 -0.623,-5.149 -3.546,-9.37 -6.708,-12.427 -3.765,-3.639 -7.58,-5.666 -7.643,-5.73 -0.175,-0.177 -0.28,-0.413 -0.308,-0.656 -0.028,-0.242 0.02,-0.491 0.147,-0.703 18.084,0.37 33.782,13.664 36.949,31.636 C 11.218,-20.068 7.47,-8.426 0,0"
style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(0.13074919,0,0,-0.13074919,41.155947,2.5786616)"
clip-path="url(#clipPath47)" />
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

BIN
app.platform/src/main/resources/public/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

6
cips.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "cips.frontend", "name": "cips.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

6
erm.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "erm.frontend", "name": "erm.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

2
gradle.properties

@ -39,7 +39,7 @@ application_version=1.0.0
platform_group=io.sc platform_group=io.sc
platform_version=8.2.25 platform_version=8.2.25
platform_plugin_version=8.2.10 platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.86 platform_core_frontend_version=8.2.89
########################################################### ###########################################################
# dependencies version # dependencies version

6
io.sc.engine.mv.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.mv.frontend", "name": "io.sc.engine.mv.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

2
io.sc.engine.mv/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -16,7 +16,7 @@
"order" : 12000, "order" : 12000,
"description":"模型验证工具", "description":"模型验证工具",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.engine.mv_8.0.0_20221020__Model Validate Database Schema DDL.xml" "classpath:/liquibase/io.sc.engine.mv_8.0.0_20221020__Model_Validate_Database_Schema_DDL.xml"
] ]
} }
] ]

0
io.sc.engine.mv/src/main/resources/liquibase/io.sc.engine.mv_8.0.0_20221020__Model Validate Database Schema DDL.xml → io.sc.engine.mv/src/main/resources/liquibase/io.sc.engine.mv_8.0.0_20221020__Model_Validate_Database_Schema_DDL.xml

6
io.sc.engine.rule.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.rule.frontend", "name": "io.sc.engine.rule.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

4
io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,8 +4,8 @@
"order" : 11000, "order" : 11000,
"description":"决策引擎表结构", "description":"决策引擎表结构",
"locations":[ "locations":[
"classpath:/liquibase/RE_1.0.0_20220515__Rule Engine Database Schema DDL.xml", "classpath:/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Schema_DDL.xml",
"classpath:/liquibase/RE_1.0.0_20220515__Rule Engine Database Data.xml" "classpath:/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Data.xml"
] ]
} }
] ]

0
io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule Engine Database Data.xml → io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Data.xml

0
io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule Engine Database Schema DDL.xml → io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Schema_DDL.xml

6
io.sc.engine.st.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.st.frontend", "name": "io.sc.engine.st.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

4
io.sc.engine.st/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -16,8 +16,8 @@
"order" : 12000, "order" : 12000,
"description":"压力测试", "description":"压力测试",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.engine.st_8.0.0_20221020__Stress Test Database Schema DDL.xml", "classpath:/liquibase/io.sc.engine.st_8.0.0_20221020__Stress_Test_Database_Schema_DDL.xml",
"classpath:/liquibase/io.sc.engine.st_1.0.0_20221020__ST Data.xml" "classpath:/liquibase/io.sc.engine.st_1.0.0_20221020__ST_Data.xml"
] ]
} }
] ]

0
io.sc.engine.st/src/main/resources/liquibase/io.sc.engine.st_1.0.0_20221020__ST Data.xml → io.sc.engine.st/src/main/resources/liquibase/io.sc.engine.st_1.0.0_20221020__ST_Data.xml

0
io.sc.engine.st/src/main/resources/liquibase/io.sc.engine.st_8.0.0_20221020__Stress Test Database Schema DDL.xml → io.sc.engine.st/src/main/resources/liquibase/io.sc.engine.st_8.0.0_20221020__Stress_Test_Database_Schema_DDL.xml

6
io.sc.platform.ai.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.ai.frontend", "name": "io.sc.platform.ai.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

2
io.sc.platform.attachment/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,7 +4,7 @@
"order" : 200, "order" : 200,
"description":"附件管理", "description":"附件管理",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.platform.attachment_8.0.0_20220606__Attachment Database Schema DDL.xml" "classpath:/liquibase/io.sc.platform.attachment_8.0.0_20220606__Attachment_Database_Schema_DDL.xml"
] ]
} }
] ]

0
io.sc.platform.attachment/src/main/resources/liquibase/io.sc.platform.attachment_8.0.0_20220606__Attachment Database Schema DDL.xml → io.sc.platform.attachment/src/main/resources/liquibase/io.sc.platform.attachment_8.0.0_20220606__Attachment_Database_Schema_DDL.xml

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.86", "version": "8.2.89",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件", "//main": "库的主文件",
"main": "dist/platform-core.js", "main": "dist/platform-core.js",

8
io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue

@ -20,9 +20,7 @@
/> />
<!-- application name--> <!-- application name-->
<div v-if="gc.theme.topper.showTitle" class="px-3 text-2xl ellipsis" :style="{ color: gc.theme.topper.titleColor }"> <div v-if="gc.theme.topper.showTitle" class="px-3 text-2xl ellipsis" :style="{ color: gc.theme.topper.titleColor }" v-html="$t('application.title')"></div>
{{ $t('application.title') }}
</div>
<!-- space --> <!-- space -->
<q-space /> <q-space />
@ -204,9 +202,9 @@
</q-list> </q-list>
</q-menu> </q-menu>
</q-item> </q-item>
<q-item v-close-popup clickable :to="{ name: 'route.system.theme' }"> <q-item v-close-popup clickable :to="{ name: 'route.system.settings' }">
<q-item-section> <q-item-section>
<q-item-label><q-icon name="bi-palette" left size="20px"></q-icon>{{ t('theme') }}</q-item-label> <q-item-label><q-icon name="bi-palette" left size="20px"></q-icon>{{ t('settings') }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-separator inset spaced /> <q-separator inset spaced />

6
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.86", "version": "8.2.89",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -121,4 +121,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

3
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties

@ -263,4 +263,5 @@ migration=Migration
view=View view=View
before=Before before=Before
send=Send send=Send
required=Required required=Required
settings=Settings

3
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties

@ -263,4 +263,5 @@ migration=\u9077\u79FB
view=\u67E5\u770B view=\u67E5\u770B
before=\u4EE5\u524D before=\u4EE5\u524D
send=\u767C\u9001 send=\u767C\u9001
required=\u5FC5\u9700 required=\u5FC5\u9700
settings=\u8A2D\u7F6E

3
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties

@ -263,4 +263,5 @@ migration=\u8FC1\u79FB
view=\u67E5\u770B view=\u67E5\u770B
before=\u4EE5\u524D before=\u4EE5\u524D
send=\u53D1\u9001 send=\u53D1\u9001
required=\u5FC5\u9700 required=\u5FC5\u9700
settings=\u8BBE\u7F6E

6
io.sc.platform.developer.doc/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.developer.doc", "name": "io.sc.platform.developer.doc",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -28,9 +28,9 @@
"vuepress": "2.0.0-rc.15" "vuepress": "2.0.0-rc.15"
}, },
"dependencies": { "dependencies": {
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"vue": "3.5.13", "vue": "3.5.13",
"vue-i18n": "11.0.1" "vue-i18n": "11.0.1"
} }
} }

6
io.sc.platform.developer.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.developer.frontend", "name": "io.sc.platform.developer.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

6
io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,9 +4,9 @@
"order" : 400, "order" : 400,
"description":"工作流", "description":"工作流",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.platform.flowable_8.0.0_20220606__Flowable(6.8.0) Database Schema DDL.xml", "classpath:/liquibase/io.sc.platform.flowable_8.0.0_20220606__Flowable(6.8.0)_Database_Schema_DDL.xml",
"classpath:/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Database Schema DDL.xml", "classpath:/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process_Manager_Database_Schema_DDL.xml",
"classpath:/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Data.xml" "classpath:/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process_Manager_Data.xml"
] ]
} }
] ]

0
io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Flowable(6.8.0) Database Schema DDL.xml → io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Flowable(6.8.0)_Database_Schema_DDL.xml

0
io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Data.xml → io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process_Manager_Data.xml

0
io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process Manager Database Schema DDL.xml → io.sc.platform.flowable/src/main/resources/liquibase/io.sc.platform.flowable_8.0.0_20220606__Process_Manager_Database_Schema_DDL.xml

6
io.sc.platform.lcdp.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.lcdp.frontend", "name": "io.sc.platform.lcdp.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

8
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/service/impl/ConfigureServiceImpl.java

@ -57,13 +57,19 @@ public class ConfigureServiceImpl extends DaoServiceImpl<ConfigureEntity, String
Map<String,String> parameters =systemParameterService.getParameters(new String[]{ Map<String,String> parameters =systemParameterService.getParameters(new String[]{
"parameter.system.homePage", "parameter.system.homePage",
"parameter.system.notifierTaskNavigateFrontendRoutePath" "parameter.system.notifierTaskNavigateFrontendRoutePath",
"parameter.system.login.encodePassword"
}); });
String homePage =parameters.get("parameter.system.homePage"); String homePage =parameters.get("parameter.system.homePage");
if(StringUtils.hasText(homePage)) { if(StringUtils.hasText(homePage)) {
configure.getSetting().setHomePage(homePage); configure.getSetting().setHomePage(homePage);
} }
String encodePassword =parameters.get("parameter.system.login.encodePassword");
if(StringUtils.hasText(encodePassword)) {
configure.getTheme().getLogin().setEncodePassword(Boolean.valueOf(encodePassword));
}
String notifierTaskNavigateFrontendRoutePath =parameters.get("parameter.system.notifierTaskNavigateFrontendRoutePath"); String notifierTaskNavigateFrontendRoutePath =parameters.get("parameter.system.notifierTaskNavigateFrontendRoutePath");
if(StringUtils.hasText(notifierTaskNavigateFrontendRoutePath)) { if(StringUtils.hasText(notifierTaskNavigateFrontendRoutePath)) {
configure.getSetting().setNotifierTaskNavigateFrontendRoutePath(notifierTaskNavigateFrontendRoutePath); configure.getSetting().setNotifierTaskNavigateFrontendRoutePath(notifierTaskNavigateFrontendRoutePath);

2
io.sc.platform.lcdp/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,7 +4,7 @@
"order" : 300, "order" : 300,
"description":"低代码平台", "description":"低代码平台",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.platform.lcdp_8.0.0_20220606__LowCode Developer Database Schema DDL.xml", "classpath:/liquibase/io.sc.platform.lcdp_8.0.0_20220606__LowCode_Developer_Database_Schema_DDL.xml",
"classpath:/liquibase/io.sc.platform.lcdp_Form_DDL.xml", "classpath:/liquibase/io.sc.platform.lcdp_Form_DDL.xml",
"classpath:/liquibase/io.sc.platform.lcdp_Excel_Template_DDL.xml" "classpath:/liquibase/io.sc.platform.lcdp_Excel_Template_DDL.xml"
] ]

0
io.sc.platform.lcdp/src/main/resources/liquibase/io.sc.platform.lcdp_8.0.0_20220606__LowCode Developer Database Schema DDL.xml → io.sc.platform.lcdp/src/main/resources/liquibase/io.sc.platform.lcdp_8.0.0_20220606__LowCode_Developer_Database_Schema_DDL.xml

6
io.sc.platform.license.keygen.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.license.keygen.frontend", "name": "io.sc.platform.license.keygen.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

2
io.sc.platform.license.keygen/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,7 +4,7 @@
"order" : 0, "order" : 0,
"description":"License 管理", "description":"License 管理",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.platform.license.keygen_8.0.0_20220606__License Keygen Database Schema DDL.xml" "classpath:/liquibase/io.sc.platform.license.keygen_8.0.0_20220606__License_Keygen_Database_Schema_DDL.xml"
] ]
} }
] ]

0
io.sc.platform.license.keygen/src/main/resources/liquibase/io.sc.platform.license.keygen_8.0.0_20220606__License Keygen Database Schema DDL.xml → io.sc.platform.license.keygen/src/main/resources/liquibase/io.sc.platform.license.keygen_8.0.0_20220606__License_Keygen_Database_Schema_DDL.xml

6
io.sc.platform.mvc.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.mvc.frontend", "name": "io.sc.platform.mvc.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

9
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/BetweenInclusive.java

@ -15,7 +15,14 @@ public class BetweenInclusive<E> extends Between<E> {
if(!StringUtils.hasText(start) && !StringUtils.hasText(end)){ if(!StringUtils.hasText(start) && !StringUtils.hasText(end)){
throw new IllegalArgumentException("[" + operator + "] need a [start] or [end] value"); throw new IllegalArgumentException("[" + operator + "] need a [start] or [end] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(Comparable.class.isAssignableFrom(clazz)){ if(Comparable.class.isAssignableFrom(clazz)){
if(StringUtils.hasText(start) && StringUtils.hasText(end)) { if(StringUtils.hasText(start) && StringUtils.hasText(end)) {

9
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Contains.java

@ -18,9 +18,16 @@ public class Contains<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =root.get(fieldName).getJavaType(); Class<?> clazz =root.get(fieldName).getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.like(path, "%" + value + "%"); return builder.like(path, "%" + value + "%");
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/ContainsField.java

@ -17,8 +17,23 @@ public class ContainsField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.like(path, path2); return builder.like(path, path2);
} }

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/EndWith.java

@ -17,9 +17,16 @@ public class EndWith<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.like(path, "%" + value); return builder.like(path, "%" + value);
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

9
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Equals.java

@ -19,7 +19,14 @@ public class Equals<E> extends Criteria<E> {
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
PathInformation pi =getPathInformation(root); PathInformation pi =getPathInformation(root);
Path path =root.get(pi.getAttributeName()); Path path =null;
try {
path = root.get(pi.getAttributeName());
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
if(pi.isSingularReference()){ if(pi.isSingularReference()){
Object v =conversionService.convert(value, pi.getReferenceAttributeJavaType()); Object v =conversionService.convert(value, pi.getReferenceAttributeJavaType());
if(v!=null){ if(v!=null){

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/EqualsField.java

@ -18,8 +18,23 @@ public class EqualsField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.equal(path, path2); return builder.equal(path, path2);
} }

17
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterOrEquals.java

@ -18,7 +18,14 @@ public class GreaterOrEquals<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(Comparable.class.isAssignableFrom(clazz)){ if(Comparable.class.isAssignableFrom(clazz)){
return builder.greaterThanOrEqualTo(path,(Comparable)conversionService.convert(value, clazz)); return builder.greaterThanOrEqualTo(path,(Comparable)conversionService.convert(value, clazz));
@ -31,4 +38,12 @@ public class GreaterOrEquals<E> extends Criteria<E> {
public Condition getCondition(Map<String, Class<?>> typeMapping) { public Condition getCondition(Map<String, Class<?>> typeMapping) {
throw new OperatorTypeNotSupportedException(); throw new OperatorTypeNotSupportedException();
} }
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
} }

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterOrEqualsField.java

@ -18,8 +18,23 @@ public class GreaterOrEqualsField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.greaterThanOrEqualTo(path, path2); return builder.greaterThanOrEqualTo(path, path2);
} }

17
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterThan.java

@ -18,7 +18,14 @@ public class GreaterThan<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(Comparable.class.isAssignableFrom(clazz)){ if(Comparable.class.isAssignableFrom(clazz)){
return builder.greaterThan(path,(Comparable)conversionService.convert(value, clazz)); return builder.greaterThan(path,(Comparable)conversionService.convert(value, clazz));
@ -44,4 +51,12 @@ public class GreaterThan<E> extends Criteria<E> {
condition.getParameters().put(name.substring(1),pValue); condition.getParameters().put(name.substring(1),pValue);
return condition; return condition;
} }
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
} }

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/GreaterThanField.java

@ -18,8 +18,23 @@ public class GreaterThanField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.greaterThan(path, path2); return builder.greaterThan(path, path2);
} }

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IContains.java

@ -17,9 +17,16 @@ public class IContains<E> extends Contains<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.like(builder.lower(path),"%" + value.toLowerCase() + "%"); return builder.like(builder.lower(path),"%" + value.toLowerCase() + "%");
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IContainsField.java

@ -16,8 +16,23 @@ public class IContainsField<E> extends ContainsField<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.like(builder.lower(path), builder.lower(path2)); return builder.like(builder.lower(path), builder.lower(path2));
} }

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IEndWith.java

@ -16,9 +16,16 @@ public class IEndWith<E> extends EndWith<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.like(builder.lower(path), "%" + value.toLowerCase()); return builder.like(builder.lower(path), "%" + value.toLowerCase());
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

9
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IEquals.java

@ -15,7 +15,14 @@ public class IEquals<E> extends Equals<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(String.class.isAssignableFrom(clazz)){ if(String.class.isAssignableFrom(clazz)){
return builder.equal(builder.lower(path),conversionService.convert(value, String.class).toLowerCase()); return builder.equal(builder.lower(path),conversionService.convert(value, String.class).toLowerCase());

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IEqualsField.java

@ -16,8 +16,23 @@ public class IEqualsField<E> extends EqualsField<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.equal(builder.lower(path), builder.lower(path2)); return builder.equal(builder.lower(path), builder.lower(path2));
} }

9
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/InSet.java

@ -21,7 +21,14 @@ public class InSet<E> extends Criteria<E> {
throw new IllegalArgumentException("[" + operator + "] need a [start] or [end] value"); throw new IllegalArgumentException("[" + operator + "] need a [start] or [end] value");
} }
PathInformation pi =getPathInformation(root); PathInformation pi =getPathInformation(root);
Path path =root.get(pi.getAttributeName()); Path path =null;
try {
path = root.get(pi.getAttributeName());
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
if(pi.isSingularReference()){ if(pi.isSingularReference()){
Object[] values =convert(pi.getReferenceAttributeJavaType()); Object[] values =convert(pi.getReferenceAttributeJavaType());
if(values!=null){ if(values!=null){

15
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IsBlank.java

@ -5,17 +5,22 @@ import io.sc.platform.orm.service.support.OperatorTypeNotSupportedException;
import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.Criteria;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.*;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.Map; import java.util.Map;
public class IsBlank<E> extends Criteria<E> { public class IsBlank<E> extends Criteria<E> {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) { public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.isEmpty(root.get(fieldName)); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.isEmpty(path);
} }
@Override @Override

15
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IsNotNull.java

@ -5,17 +5,22 @@ import io.sc.platform.orm.service.support.OperatorTypeNotSupportedException;
import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.Criteria;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.*;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.Map; import java.util.Map;
public class IsNotNull<E> extends Criteria<E> { public class IsNotNull<E> extends Criteria<E> {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) { public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return root.get(fieldName).isNotNull(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return path.isNotNull();
} }
@Override @Override

15
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/IsNull.java

@ -5,17 +5,22 @@ import io.sc.platform.orm.service.support.OperatorTypeNotSupportedException;
import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.Criteria;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.*;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.Map; import java.util.Map;
public class IsNull<E> extends Criteria<E> { public class IsNull<E> extends Criteria<E> {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) { public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return root.get(fieldName).isNull(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return path.isNull();
} }
@Override @Override

17
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessOrEquals.java

@ -18,7 +18,14 @@ public class LessOrEquals<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(Comparable.class.isAssignableFrom(clazz)){ if(Comparable.class.isAssignableFrom(clazz)){
return builder.lessThanOrEqualTo(path,(Comparable)conversionService.convert(value, clazz)); return builder.lessThanOrEqualTo(path,(Comparable)conversionService.convert(value, clazz));
@ -31,4 +38,12 @@ public class LessOrEquals<E> extends Criteria<E> {
public Condition getCondition(Map<String, Class<?>> typeMapping) { public Condition getCondition(Map<String, Class<?>> typeMapping) {
throw new OperatorTypeNotSupportedException(); throw new OperatorTypeNotSupportedException();
} }
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
} }

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessOrEqualsField.java

@ -18,8 +18,23 @@ public class LessOrEqualsField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.lessThanOrEqualTo(path, path2); return builder.lessThanOrEqualTo(path, path2);
} }

17
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessThan.java

@ -18,7 +18,14 @@ public class LessThan<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(Comparable.class.isAssignableFrom(clazz)){ if(Comparable.class.isAssignableFrom(clazz)){
return builder.lessThan(path,(Comparable)conversionService.convert(value, clazz)); return builder.lessThan(path,(Comparable)conversionService.convert(value, clazz));
@ -31,4 +38,12 @@ public class LessThan<E> extends Criteria<E> {
public Condition getCondition(Map<String, Class<?>> typeMapping) { public Condition getCondition(Map<String, Class<?>> typeMapping) {
throw new OperatorTypeNotSupportedException(); throw new OperatorTypeNotSupportedException();
} }
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
} }

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/LessThanField.java

@ -18,8 +18,23 @@ public class LessThanField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.lessThan(path, path2); return builder.lessThan(path, path2);
} }

15
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotBlank.java

@ -5,17 +5,22 @@ import io.sc.platform.orm.service.support.OperatorTypeNotSupportedException;
import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.Criteria;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.*;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.Map; import java.util.Map;
public class NotBlank<E> extends Criteria<E> { public class NotBlank<E> extends Criteria<E> {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) { public Predicate getPredicate(Root<E> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.isNotEmpty(root.get(fieldName)); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.isNotEmpty(path);
} }
@Override @Override

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotContains.java

@ -18,9 +18,16 @@ public class NotContains<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.notLike(path, "%" + value + "%"); return builder.notLike(path, "%" + value + "%");
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotContainsField.java

@ -18,8 +18,23 @@ public class NotContainsField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.notLike(path, path2); return builder.notLike(path, path2);
} }

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotEndWith.java

@ -18,9 +18,16 @@ public class NotEndWith<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.notLike(path, "%" + value); return builder.notLike(path, "%" + value);
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

9
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotEquals.java

@ -18,7 +18,14 @@ public class NotEquals<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path path =root.get(fieldName); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType(); Class<?> clazz =path.getJavaType();
if(Comparable.class.isAssignableFrom(clazz)){ if(Comparable.class.isAssignableFrom(clazz)){
return builder.notEqual(path,(Comparable)conversionService.convert(value, clazz)); return builder.notEqual(path,(Comparable)conversionService.convert(value, clazz));

19
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotEqualsField.java

@ -18,8 +18,23 @@ public class NotEqualsField<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Path<String> path =root.get(fieldName); Path path =null;
Path<String> path2 =root.get(value); try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Path path2 =null;
try {
path2 = root.get(value);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return builder.notEqual(path, path2); return builder.notEqual(path, path2);
} }

15
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotInSet.java

@ -5,10 +5,7 @@ import io.sc.platform.orm.service.support.OperatorTypeNotSupportedException;
import io.sc.platform.orm.service.support.criteria.Criteria; import io.sc.platform.orm.service.support.criteria.Criteria;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.*;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.Map; import java.util.Map;
public class NotInSet<E> extends Criteria<E> { public class NotInSet<E> extends Criteria<E> {
@ -20,7 +17,15 @@ public class NotInSet<E> extends Criteria<E> {
if(value==null || value.length<=0){ if(value==null || value.length<=0){
throw new IllegalArgumentException("[" + operator + "] need a [start] or [end] value"); throw new IllegalArgumentException("[" + operator + "] need a [start] or [end] value");
} }
return root.get(fieldName).in((Object[])value).not(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
return path.in((Object[])value).not();
} }
@Override @Override

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/NotStartWith.java

@ -18,9 +18,16 @@ public class NotStartWith<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.like(path, value + "%").not(); return builder.like(path, value + "%").not();
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

11
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/StartWith.java

@ -18,9 +18,16 @@ public class StartWith<E> extends Criteria<E> {
if(!StringUtils.hasText(value)){ if(!StringUtils.hasText(value)){
throw new IllegalArgumentException("[" + operator + "] need a [value] value"); throw new IllegalArgumentException("[" + operator + "] need a [value] value");
} }
Class<?> clazz =root.get(fieldName).getJavaType(); Path path =null;
try {
path = root.get(fieldName);
} catch (IllegalArgumentException e) { // if attribute of the given name does not otherwise exist
return null;
} catch (IllegalStateException e){ // if invoked on a path that corresponds to a basic type
throw e;
}
Class<?> clazz =path.getJavaType();
if(String.class.equals(clazz)) { if(String.class.equals(clazz)) {
Path<String> path =root.get(fieldName);
return builder.like(path, value + "%"); return builder.like(path, value + "%");
}else{ }else{
throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName()); throw new OperatorTypeNotSupportedException("[" + operator + "] only support the field with java.lang.String type, field [" + fieldName + "]'s type is " + clazz.getName());

6
io.sc.platform.scheduler.manager.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.scheduler.manager.frontend", "name": "io.sc.platform.scheduler.manager.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -123,4 +123,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

2
io.sc.platform.scheduler.manager/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,7 +4,7 @@
"order" : 1000, "order" : 1000,
"description":"XXL JOB 相关表", "description":"XXL JOB 相关表",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.platform.scheduler.manager_8.0.0_20220606__Scheduler Database Schema DDL.xml" "classpath:/liquibase/io.sc.platform.scheduler.manager_8.0.0_20220606__Scheduler_Database_Schema_DDL.xml"
] ]
} }
] ]

0
io.sc.platform.scheduler.manager/src/main/resources/liquibase/io.sc.platform.scheduler.manager_8.0.0_20220606__Scheduler Database Schema DDL.xml → io.sc.platform.scheduler.manager/src/main/resources/liquibase/io.sc.platform.scheduler.manager_8.0.0_20220606__Scheduler_Database_Schema_DDL.xml

4
io.sc.platform.security/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -4,8 +4,8 @@
"order" : 100, "order" : 100,
"description":"授权与认证", "description":"授权与认证",
"locations":[ "locations":[
"classpath:/liquibase/io.sc.platform.security_8.0.0_20220606__Security Database Schema DDL.xml", "classpath:/liquibase/io.sc.platform.security_8.0.0_20220606__Security_Database_Schema_DDL.xml",
"classpath:/liquibase/io.sc.platform.security_8.0.0_20220606__Security Data.xml" "classpath:/liquibase/io.sc.platform.security_8.0.0_20220606__Security_Data.xml"
] ]
} }
] ]

24
io.sc.platform.security/src/main/resources/META-INF/platform/plugins/parameters.json

@ -1,16 +1,14 @@
[ [
/**/ /*/*/
{"id":"parameter.system","order":0}, {
/*/*/ "parentId" : "parameter.system",
{ "id" : "parameter.system.login.encodePassword",
"id" : "parameter.login.encodePassword", "code" : "parameter.system.login.encodePassword",
"parentId" : "parameter.system", "defaultValue" : "true",
"code" : "parameter.login.encodePassword", "order" : 200,
"defaultValue" : "true", "options" : {
"order" : 200, "true" : "parameter.login.encodePassword.options.true",
"options" : { "false" : "parameter.login.encodePassword.options.false"
"true" : "parameter.login.encodePassword.options.true",
"false" : "parameter.login.encodePassword.options.false"
}
} }
}
] ]

2
io.sc.platform.security/src/main/resources/io/sc/platform/security/i18n/parameters.properties

@ -1,3 +1,3 @@
parameter.login.encodePassword=Encode Password in Login Page parameter.system.login.encodePassword=Encode Password in Login Page
parameter.login.encodePassword.options.true=True parameter.login.encodePassword.options.true=True
parameter.login.encodePassword.options.false=False parameter.login.encodePassword.options.false=False

2
io.sc.platform.security/src/main/resources/io/sc/platform/security/i18n/parameters_tw_CN.properties

@ -1,3 +1,3 @@
parameter.login.encodePassword=\u767B\u9304\u9801\u9762\u5BC6\u78BC\u52A0\u5BC6 parameter.system.login.encodePassword=\u767B\u9304\u9801\u9762\u5BC6\u78BC\u52A0\u5BC6
parameter.login.encodePassword.options.true=\u662F parameter.login.encodePassword.options.true=\u662F
parameter.login.encodePassword.options.false=\u5426 parameter.login.encodePassword.options.false=\u5426

2
io.sc.platform.security/src/main/resources/io/sc/platform/security/i18n/parameters_zh_CN.properties

@ -1,3 +1,3 @@
parameter.login.encodePassword=\u767B\u5F55\u9875\u9762\u5BC6\u7801\u52A0\u5BC6 parameter.system.login.encodePassword=\u767B\u5F55\u9875\u9762\u5BC6\u7801\u52A0\u5BC6
parameter.login.encodePassword.options.true=\u662F parameter.login.encodePassword.options.true=\u662F
parameter.login.encodePassword.options.false=\u5426 parameter.login.encodePassword.options.false=\u5426

0
io.sc.platform.security/src/main/resources/liquibase/io.sc.platform.security_8.0.0_20220606__Security Data.xml → io.sc.platform.security/src/main/resources/liquibase/io.sc.platform.security_8.0.0_20220606__Security_Data.xml

0
io.sc.platform.security/src/main/resources/liquibase/io.sc.platform.security_8.0.0_20220606__Security Database Schema DDL.xml → io.sc.platform.security/src/main/resources/liquibase/io.sc.platform.security_8.0.0_20220606__Security_Database_Schema_DDL.xml

79
io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/shortcutmenu/ShortcutMenuVo.java

@ -0,0 +1,79 @@
package io.sc.platform.system.api.shortcutmenu;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.sc.platform.orm.api.vo.CorporationAuditorVo;
import java.util.Date;
public class ShortcutMenuVo extends CorporationAuditorVo {
//主键
@JsonProperty(index = 1)
private String id;
//登录名
@JsonProperty(index = 2)
private String loginName;
// 快捷菜单ID
private String menuId;
//快捷菜单代码
@JsonProperty(index = 3)
private String menuCode;
//快捷菜单名称
@JsonProperty(index = 4)
private String shortcutMenuName;
//QQ号
@JsonProperty(index = 5)
private Integer order;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getMenuId() {
return menuId;
}
public void setMenuId(String menuId) {
this.menuId = menuId;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getShortcutMenuName() {
return shortcutMenuName;
}
public void setShortcutMenuName(String shortcutMenuName) {
this.shortcutMenuName = shortcutMenuName;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}

6
io.sc.platform.system.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.system.frontend", "name": "io.sc.platform.system.frontend",
"version": "8.2.24", "version": "8.2.25",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.86", "platform-core": "8.2.89",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",
@ -121,4 +121,4 @@
"vue-router": "4.5.0", "vue-router": "4.5.0",
"xml-formatter": "3.6.3" "xml-formatter": "3.6.3"
} }
} }

2
io.sc.platform.system.frontend/src/components/index.ts

@ -2,6 +2,7 @@
* , * ,
*/ */
import component_system_Settings from '@/views/settings/Settings.vue';
import component_system_License from '@/views/license/License.vue'; import component_system_License from '@/views/license/License.vue';
import component_system_application from '@/views/application/Application.vue'; import component_system_application from '@/views/application/Application.vue';
import component_system_Corporation from '@/views/corporation/Corporation.vue'; import component_system_Corporation from '@/views/corporation/Corporation.vue';
@ -22,6 +23,7 @@ import component_system_monitor_Log from '@/views/monitor/Log.vue';
import component_system_monitor_ServerInfo from '@/views/monitor/ServerInfo.vue'; import component_system_monitor_ServerInfo from '@/views/monitor/ServerInfo.vue';
const localComponents = { const localComponents = {
'component.system.Settings': component_system_Settings,
'component.system.License': component_system_License, 'component.system.License': component_system_License,
'component.system.application': component_system_application, 'component.system.application': component_system_application,
'component.system.Corporation': component_system_Corporation, 'component.system.Corporation': component_system_Corporation,

6
io.sc.platform.system.frontend/src/i18n/messages.json

@ -198,5 +198,9 @@
"system.monitor.serverInfo.online": "Online", "system.monitor.serverInfo.online": "Online",
"system.monitor.serverInfo.serviceRequest": "Service Request" "system.monitor.serverInfo.serviceRequest": "Service Request",
"route.system.settings": "Settings",
"settings.shortcutMenus": "Shortcut Menus",
"settings.shortcutMenus.entity.shortcutMenuName": "Shortcut Menu Name"
} }

6
io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json

@ -176,5 +176,9 @@
"system.monitor.serverInfo.online": "在線用戶", "system.monitor.serverInfo.online": "在線用戶",
"system.monitor.serverInfo.serviceRequest": "服務請求" "system.monitor.serverInfo.serviceRequest": "服務請求",
"route.system.settings": "設置",
"settings.shortcutMenus": "常用菜單",
"settings.shortcutMenus.entity.shortcutMenuName": "快捷菜單名稱"
} }

6
io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json

@ -206,5 +206,9 @@
"system.monitor.serverInfo.online": "在线用户", "system.monitor.serverInfo.online": "在线用户",
"system.monitor.serverInfo.serviceRequest": "服务请求" "system.monitor.serverInfo.serviceRequest": "服务请求",
"route.system.settings": "设置",
"settings.shortcutMenus": "常用菜单",
"settings.shortcutMenus.entity.shortcutMenuName": "快捷菜单名称"
} }

130
io.sc.platform.system.frontend/src/routes/routes.json

@ -1,4 +1,18 @@
[ [
{
"force": true,
"parent": "/",
"name": "route.system.settings",
"path": "system/settings",
"priority": 0,
"module": "io.sc.platform.system.frontend",
"component": "component.system.Settings",
"componentPath": "@/views/settings/Settings.vue",
"redirect": null,
"meta": {
"permissions": ["/system/settings/**/*"]
}
},
{ {
"parent": "/", "parent": "/",
"name": "route.system.license", "name": "route.system.license",
@ -6,12 +20,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.License", "component": "component.system.License",
"componentPath":"@/views/license/License.vue", "componentPath": "@/views/license/License.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/license/**/*"]
"/system/license/**/*"
]
} }
}, },
{ {
@ -21,12 +33,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.application", "component": "component.system.application",
"componentPath":"@/views/application/Application.vue", "componentPath": "@/views/application/Application.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/application/**/*"]
"/system/application/**/*"
]
} }
}, },
{ {
@ -36,17 +46,15 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Corporation", "component": "component.system.Corporation",
"componentPath":"@/views/corporation/Corporation.vue", "componentPath": "@/views/corporation/Corporation.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/corporation/**/*"],
"/system/corporation/**/*"
],
"actions": [ "actions": [
{"name":"query", "i18nKey":"query", "permissions":[{"method": "GET", "matcher": "/api/system/corporation"}]}, { "name": "query", "i18nKey": "query", "permissions": [{ "method": "GET", "matcher": "/api/system/corporation" }] },
{"name":"add", "i18nKey":"add", "permissions":[{"method": "POST", "matcher": "/api/system/corporation"}]}, { "name": "add", "i18nKey": "add", "permissions": [{ "method": "POST", "matcher": "/api/system/corporation" }] },
{"name":"remove", "i18nKey":"remove", "permissions":[{"method": "DELETE", "matcher": "/api/system/corporation"}]}, { "name": "remove", "i18nKey": "remove", "permissions": [{ "method": "DELETE", "matcher": "/api/system/corporation" }] },
{"name":"edit", "i18nKey":"edit", "permissions":[{"method": "PUT", "matcher": "/api/system/corporation"}]} { "name": "edit", "i18nKey": "edit", "permissions": [{ "method": "PUT", "matcher": "/api/system/corporation" }] }
] ]
} }
}, },
@ -57,12 +65,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.User", "component": "component.system.User",
"componentPath":"@/views/user/User.vue", "componentPath": "@/views/user/User.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/user/**/*"]
"/system/user/**/*"
]
} }
}, },
{ {
@ -72,12 +78,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Role", "component": "component.system.Role",
"componentPath":"@/views/role/Role.vue", "componentPath": "@/views/role/Role.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/role/**/*"]
"/system/role/**/*"
]
} }
}, },
{ {
@ -87,12 +91,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Org", "component": "component.system.Org",
"componentPath":"@/views/org/Org.vue", "componentPath": "@/views/org/Org.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/org/**/*"]
"/system/org/**/*"
]
} }
}, },
{ {
@ -102,12 +104,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Department", "component": "component.system.Department",
"componentPath":"@/views/department/Department.vue", "componentPath": "@/views/department/Department.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/department/**/*"]
"/system/department/**/*"
]
} }
}, },
{ {
@ -117,12 +117,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Menu", "component": "component.system.Menu",
"componentPath":"@/views/menu/Menu.vue", "componentPath": "@/views/menu/Menu.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/menu/**/*"]
"/system/menu/**/*"
]
} }
}, },
{ {
@ -132,12 +130,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.announcementManager", "component": "component.system.announcementManager",
"componentPath":"@/views/announcement/AnnouncementManager.vue", "componentPath": "@/views/announcement/AnnouncementManager.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/announcement/**/*"]
"/system/announcement/**/*"
]
} }
}, },
{ {
@ -147,12 +143,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.NotificationManager", "component": "component.system.NotificationManager",
"componentPath":"@/views/notification/NotificationManager.vue", "componentPath": "@/views/notification/NotificationManager.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/notificationManager/**/*"]
"/system/notificationManager/**/*"
]
} }
}, },
{ {
@ -162,12 +156,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Parameter", "component": "component.system.Parameter",
"componentPath":"@/views/parameter/Parameter.vue", "componentPath": "@/views/parameter/Parameter.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/parameter/**/*"]
"/system/parameter/**/*"
]
} }
}, },
{ {
@ -177,12 +169,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Dictionary", "component": "component.system.Dictionary",
"componentPath":"@/views/dictionary/Dictionary.vue", "componentPath": "@/views/dictionary/Dictionary.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/dictionary/**/*"]
"/system/dictionary/**/*"
]
} }
}, },
{ {
@ -192,12 +182,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.Desensitizer", "component": "component.system.Desensitizer",
"componentPath":"@/views/desensitizer/Desensitizer.vue", "componentPath": "@/views/desensitizer/Desensitizer.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/desensitizer/**/*"]
"/system/desensitizer/**/*"
]
} }
}, },
{ {
@ -207,12 +195,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.I18n", "component": "component.system.I18n",
"componentPath":"@/views/i18n/I18n.vue", "componentPath": "@/views/i18n/I18n.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/i18n/**/*"]
"/system/i18n/**/*"
]
} }
}, },
{ {
@ -222,12 +208,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.datasource", "component": "component.system.datasource",
"componentPath":"@/views/datasource/Datasource.vue", "componentPath": "@/views/datasource/Datasource.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/datasource/**/*"]
"/system/datasource/**/*"
]
} }
}, },
{ {
@ -237,12 +221,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.monitor.AuditLog", "component": "component.system.monitor.AuditLog",
"componentPath":"@/views/monitor/AuditLog.vue", "componentPath": "@/views/monitor/AuditLog.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/monitor/auditlog/**/*"]
"/system/monitor/auditlog/**/*"
]
} }
}, },
{ {
@ -252,12 +234,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.monitor.Log", "component": "component.system.monitor.Log",
"componentPath":"@/views/monitor/Log.vue", "componentPath": "@/views/monitor/Log.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/monitor/log/**/*"]
"/system/monitor/log/**/*"
]
} }
}, },
{ {
@ -267,12 +247,10 @@
"priority": 0, "priority": 0,
"module": "io.sc.platform.system.frontend", "module": "io.sc.platform.system.frontend",
"component": "component.system.monitor.ServerInfo", "component": "component.system.monitor.ServerInfo",
"componentPath":"@/views/monitor/ServerInfo.vue", "componentPath": "@/views/monitor/ServerInfo.vue",
"redirect": null, "redirect": null,
"meta": { "meta": {
"permissions": [ "permissions": ["/system/monitor/serverInfo/**/*"]
"/system/monitor/serverInfo/**/*"
]
} }
} }
] ]

19
io.sc.platform.system/src/main/java/io/sc/platform/system/initializer/ParameterInitializer.java

@ -9,6 +9,7 @@ import io.sc.platform.system.parameter.jpa.entity.ParameterEntity;
import io.sc.platform.system.parameter.service.ParameterService; import io.sc.platform.system.parameter.service.ParameterService;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.StringUtils;
import java.util.*; import java.util.*;
@ -28,7 +29,7 @@ public class ParameterInitializer implements ApplicationInitializer {
@Override @Override
public synchronized boolean isInitialized() { public synchronized boolean isInitialized() {
List<Parameter> needAddedParameters =getneedAddedParameters(); List<Parameter> needAddedParameters =getNeedAddedParameters();
if(!needAddedParameters.isEmpty()){ if(!needAddedParameters.isEmpty()){
isInitialized =false; isInitialized =false;
}else { }else {
@ -44,22 +45,23 @@ public class ParameterInitializer implements ApplicationInitializer {
for(ParameterEntity entity : entities){ for(ParameterEntity entity : entities){
cache.put(entity.getCode(),entity); cache.put(entity.getCode(),entity);
} }
List<Parameter> needAddedParameters =getneedAddedParameters(); List<Parameter> needAddedParameters =getNeedAddedParameters();
try { try {
for(Parameter item : needAddedParameters){ for(Parameter item : needAddedParameters){
ParameterEntity entity =new ParameterEntity(); ParameterEntity entity =new ParameterEntity();
entity.setCode(item.getCode()); entity.setCode(StringUtils.hasText(item.getCode())?item.getCode():item.getId());
entity.setValue(item.getDefaultValue()); entity.setValue(item.getDefaultValue());
entity.setOrder(item.getOrder()); entity.setOrder(item.getOrder());
entity.setParent(cache.get(item.getParentId())); entity.setParent(cache.get(item.getParentId()));
parameterService.add(entity); ParameterEntity added =parameterService.add(entity);
cache.put(added.getCode(),added);
} }
} catch (Exception e) { } catch (Exception e) {
throw new ApplicationInitializerExecuteException(e); throw new ApplicationInitializerExecuteException(e);
} }
} }
private List<Parameter> getneedAddedParameters() { private List<Parameter> getNeedAddedParameters() {
// 插件定义的参数 // 插件定义的参数
List<Parameter> plugins =PluginManager.getInstance().getParameters(); List<Parameter> plugins =PluginManager.getInstance().getParameters();
Map<String,Parameter> cache =new HashMap<>(); Map<String,Parameter> cache =new HashMap<>();
@ -93,6 +95,13 @@ public class ParameterInitializer implements ApplicationInitializer {
for(String id : needAddedParameterIds) { for(String id : needAddedParameterIds) {
result.add(cache.get(id)); result.add(cache.get(id));
} }
Collections.sort(result, new Comparator<Parameter>() {
@Override
public int compare(Parameter o1, Parameter o2) {
return o1.getId().compareTo(o2.getId());
}
});
return result; return result;
} }
} }

14
io.sc.platform.system/src/main/java/io/sc/platform/system/menu/controller/MenuWebController.java

@ -8,6 +8,7 @@ import io.sc.platform.mvc.plugins.item.FrontEndRouteMetaAction;
import io.sc.platform.mvc.support.CascadeMany2Many; import io.sc.platform.mvc.support.CascadeMany2Many;
import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.orm.service.support.QueryResult; import io.sc.platform.orm.service.support.QueryResult;
import io.sc.platform.orm.util.EntityVoUtil;
import io.sc.platform.system.api.menu.MenuRouteActionVo; import io.sc.platform.system.api.menu.MenuRouteActionVo;
import io.sc.platform.system.api.menu.MenuRouteVo; import io.sc.platform.system.api.menu.MenuRouteVo;
import io.sc.platform.system.api.menu.MenuVo; import io.sc.platform.system.api.menu.MenuVo;
@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.security.Principal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -65,6 +67,18 @@ public class MenuWebController extends RestCrudController<MenuVo,MenuEntity,Stri
return QueryResult.emptyPage(); return QueryResult.emptyPage();
} }
@GetMapping("listAllMenusByUser")
public List<MenuVo> listAllMenusByUser(QueryParameter queryParameter,Principal principal) throws Exception{
if(StringUtils.hasText(principal.getName())){
if(queryParameter.existsCriteria()){
return EntityVoUtil.toVo(service.list(queryParameter));
}else {
return EntityVoUtil.toVo(service.getMenusByUser(principal.getName()));
}
}
return QueryResult.emptyList();
}
/** /**
* 列出所有菜单树,并且将角色所拥有的菜单列表作出标记 * 列出所有菜单树,并且将角色所拥有的菜单列表作出标记
* @param roleId 角色ID * @param roleId 角色ID

6
io.sc.platform.system/src/main/java/io/sc/platform/system/menu/jpa/repository/MenuRepository.java

@ -7,6 +7,7 @@ import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.Set;
@Repository("io.sc.platform.system.menu.jpa.repository.MenuRepository") @Repository("io.sc.platform.system.menu.jpa.repository.MenuRepository")
public interface MenuRepository extends DaoRepository<MenuEntity,String> { public interface MenuRepository extends DaoRepository<MenuEntity,String> {
@ -26,4 +27,9 @@ public interface MenuRepository extends DaoRepository<MenuEntity,String> {
@Query("select distinct menu from MenuEntity as menu left join fetch menu.children where menu.parent is null order by menu.order") @Query("select distinct menu from MenuEntity as menu left join fetch menu.children where menu.parent is null order by menu.order")
public List<MenuEntity> findMenusTree(); public List<MenuEntity> findMenusTree();
@Query("select distinct menu from MenuEntity as menu where menu.name in (:names)")
public List<MenuEntity> findByNames(@Param("names") Set<String> names);
public MenuEntity findByName(String code);
} }

18
io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java

@ -43,6 +43,15 @@ public interface MenuService extends DaoService<MenuEntity, String, MenuReposito
*/ */
public List<MenuVo> listAllMenusWithSelectedStatusByApplication(String applicationId, QueryParameter queryParameter) throws Exception; public List<MenuVo> listAllMenusWithSelectedStatusByApplication(String applicationId, QueryParameter queryParameter) throws Exception;
/**
* 列出所有菜单树,并且将用户所拥有的快捷菜单列表作出标记
* @param userId 用户ID
* @param queryParameter 查询参数
* @return 所有菜单树,并且将应用所拥有的菜单列表作出标记
* @throws Exception 违例
*/
public List<MenuVo> listAllShortcutMenusWithSelectedStatusByUser(String userId, QueryParameter queryParameter) throws Exception;
/** /**
* 查询角色所拥有的菜单 * 查询角色所拥有的菜单
* @param roleId 角色ID * @param roleId 角色ID
@ -70,6 +79,15 @@ public interface MenuService extends DaoService<MenuEntity, String, MenuReposito
*/ */
public List<MenuEntity> listMenusByApplication(String applicationId, QueryParameter queryParameter) throws Exception; public List<MenuEntity> listMenusByApplication(String applicationId, QueryParameter queryParameter) throws Exception;
/**
* 查询用户所拥有的快捷菜单
* @param userId 用户ID
* @param queryParameter 查询参数
* @return 应用所拥有的菜单
* @throws Exception 违例
*/
public List<MenuEntity> listShortcutMenusByUser(String userId, QueryParameter queryParameter) throws Exception;
/** /**
* 给菜单添加角色 * 给菜单添加角色
* @param wrapper 具有级联关系的菜单和角色多对多关系 Wrapper * @param wrapper 具有级联关系的菜单和角色多对多关系 Wrapper

38
io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java

@ -18,6 +18,7 @@ import io.sc.platform.system.menu.service.support.MenuEntityTreeBuilder;
import io.sc.platform.system.plugins.PluginManager; import io.sc.platform.system.plugins.PluginManager;
import io.sc.platform.system.plugins.item.MenuItem; import io.sc.platform.system.plugins.item.MenuItem;
import io.sc.platform.system.role.jpa.entity.RoleEntity; import io.sc.platform.system.role.jpa.entity.RoleEntity;
import io.sc.platform.system.user.jpa.entity.UserEntity;
import io.sc.platform.util.TreeBuilder; import io.sc.platform.util.TreeBuilder;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
@ -214,6 +215,31 @@ public class MenuServiceImpl extends DaoServiceImpl<MenuEntity, String, MenuRepo
return allMenus; return allMenus;
} }
@Override
public List<MenuVo> listAllShortcutMenusWithSelectedStatusByUser(String userId, QueryParameter queryParameter) throws Exception {
if(!StringUtils.hasText(userId)){
return Collections.emptyList();
}
Sort sort =queryParameter.getSort();
if(sort==null){
queryParameter.addSortBy("order");
}
List<MenuEntity> allMenuEntities = repository.findAll();
List<MenuEntity> selectedMenuEntities = listShortcutMenusByUser(userId, queryParameter);
List<MenuVo> allMenus = EntityVoUtil.toVo(allMenuEntities);
List<MenuVo> selectedMenus = EntityVoUtil.toVo(selectedMenuEntities);
Set<String> selectedMenuIds = new HashSet<>();
for (MenuVo selectedMenu : selectedMenus) {
selectedMenuIds.add(selectedMenu.getId());
}
for (MenuVo allMenu : allMenus) {
if (selectedMenuIds.contains(allMenu.getId())) {
allMenu.setTicked(true);
}
}
return allMenus;
}
@Override @Override
public List<MenuEntity> listMenusByRole(String roleId, QueryParameter queryParameter) throws Exception { public List<MenuEntity> listMenusByRole(String roleId, QueryParameter queryParameter) throws Exception {
if(StringUtils.hasText(roleId)) { if(StringUtils.hasText(roleId)) {
@ -250,6 +276,18 @@ public class MenuServiceImpl extends DaoServiceImpl<MenuEntity, String, MenuRepo
return QueryResult.emptyList(); return QueryResult.emptyList();
} }
@Override
public List<MenuEntity> listShortcutMenusByUser(String userId, QueryParameter queryParameter) throws Exception {
if(StringUtils.hasText(userId)) {
Specification<MenuEntity> specification = (root, query, criteriaBuilder) -> {
Join<UserEntity,MenuEntity> join = root.join("shortcutUsers");
return criteriaBuilder.equal(join.get("id"), userId);
};
return this.list(queryParameter,specification);
}
return QueryResult.emptyList();
}
@Override @Override
@Transactional @Transactional
public void addRoles(CascadeMany2Many<String,String> wrapper) throws Exception { public void addRoles(CascadeMany2Many<String,String> wrapper) throws Exception {

20
io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/controller/ShortcutMenuWebController.java

@ -0,0 +1,20 @@
package io.sc.platform.system.shortcutmenu.controller;
import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.system.api.shortcutmenu.ShortcutMenuVo;
import io.sc.platform.system.shortcutmenu.jpa.entity.ShortcutMenuEntity;
import io.sc.platform.system.shortcutmenu.jpa.repository.ShortcutMenuRepository;
import io.sc.platform.system.shortcutmenu.service.ShortcutMenuService;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController("io.sc.platform.system.shortcutmenu.controller.ShortcutMenuWebController")
@RequestMapping("/api/system/setttings/shortcutmenu")
public class ShortcutMenuWebController extends RestCrudController<ShortcutMenuVo, ShortcutMenuEntity, String, ShortcutMenuRepository, ShortcutMenuService> {
}

108
io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/jpa/entity/ShortcutMenuEntity.java

@ -0,0 +1,108 @@
package io.sc.platform.system.shortcutmenu.jpa.entity;
import io.sc.platform.orm.entity.CorporationAuditorEntity;
import io.sc.platform.system.api.shortcutmenu.ShortcutMenuVo;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.Size;
/**
* 用户快捷菜单实体类
*/
@Entity
@Table(name="SYS_SHORTCUT_MENU")
public class ShortcutMenuEntity extends CorporationAuditorEntity<ShortcutMenuVo> {
//主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_", length=36)
@Size(max=36)
private String id;
//登录名
@Column(name="LOGINNAME_")
private String loginName;
@Transient
private String menuId;
//菜单代码
@Column(name="MENU_CODE_")
private String menuCode;
//快捷菜单名称
@Column(name="MENU_SHORTCUT_NAME_",length=255)
@Size(max=255)
private String shortcutMenuName;
//排序
@Column(name="ORDER_",nullable=false)
protected Integer order;
public ShortcutMenuEntity() {}
@Override
public ShortcutMenuVo toVo() {
ShortcutMenuVo vo =new ShortcutMenuVo();
super.toVo(vo);
vo.setId(this.getId());
vo.setLoginName(this.getLoginName());
vo.setMenuId(this.getMenuId());
vo.setMenuCode(this.getMenuCode());
vo.setShortcutMenuName(this.getShortcutMenuName());
vo.setOrder(this.getOrder());
return vo;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getMenuId() {
return menuId;
}
public void setMenuId(String menuId) {
this.menuId = menuId;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public @Size(max = 255) String getShortcutMenuName() {
return shortcutMenuName;
}
public void setShortcutMenuName(@Size(max = 255) String shortcutMenuName) {
this.shortcutMenuName = shortcutMenuName;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}

10
io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/jpa/repository/ShortcutMenuRepository.java

@ -0,0 +1,10 @@
package io.sc.platform.system.shortcutmenu.jpa.repository;
import io.sc.platform.orm.repository.DaoRepository;
import io.sc.platform.system.shortcutmenu.jpa.entity.ShortcutMenuEntity;
import org.springframework.stereotype.Repository;
@Repository("io.sc.platform.system.shortcutmenu.jpa.repository.ShortcutMenuRepository")
public interface ShortcutMenuRepository extends DaoRepository<ShortcutMenuEntity,String> {
}

10
io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/service/ShortcutMenuService.java

@ -0,0 +1,10 @@
package io.sc.platform.system.shortcutmenu.service;
import io.sc.platform.orm.service.DaoService;
import io.sc.platform.system.api.shortcutmenu.ShortcutMenuVo;
import io.sc.platform.system.shortcutmenu.jpa.entity.ShortcutMenuEntity;
import io.sc.platform.system.shortcutmenu.jpa.repository.ShortcutMenuRepository;
import org.springframework.data.domain.Page;
public interface ShortcutMenuService extends DaoService<ShortcutMenuEntity, String, ShortcutMenuRepository> {
}

77
io.sc.platform.system/src/main/java/io/sc/platform/system/shortcutmenu/service/impl/ShortcutMenuServiceImpl.java

@ -0,0 +1,77 @@
package io.sc.platform.system.shortcutmenu.service.impl;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.security.util.SecurityUtil;
import io.sc.platform.system.api.shortcutmenu.ShortcutMenuVo;
import io.sc.platform.system.menu.jpa.entity.MenuEntity;
import io.sc.platform.system.menu.service.MenuService;
import io.sc.platform.system.shortcutmenu.jpa.entity.ShortcutMenuEntity;
import io.sc.platform.system.shortcutmenu.jpa.repository.ShortcutMenuRepository;
import io.sc.platform.system.shortcutmenu.service.ShortcutMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("io.sc.platform.system.shortcutmenu.service.impl.ShortcutMenuServiceImpl")
public class ShortcutMenuServiceImpl extends DaoServiceImpl<ShortcutMenuEntity, String, ShortcutMenuRepository> implements ShortcutMenuService {
@Autowired private MenuService menuService;
@Override
public ShortcutMenuEntity add(ShortcutMenuEntity entity) throws Exception {
if(entity!=null){
entity.setLoginName(SecurityUtil.getLoginName());
}
ShortcutMenuEntity result =super.add(entity);
updateMenuIdByName(result);
return result;
}
@Override
public ShortcutMenuEntity update(String s, ShortcutMenuEntity entity) throws Exception {
if(entity!=null){
entity.setLoginName(SecurityUtil.getLoginName());
}
ShortcutMenuEntity result =super.update(s, entity);
updateMenuIdByName(result);
return result;
}
@Override
public Page<ShortcutMenuEntity> query(QueryParameter queryParameter) throws Exception {
Page<ShortcutMenuEntity> page =super.query(queryParameter);
updateMenuIdByName(page);
return page;
}
private void updateMenuIdByName(Page<ShortcutMenuEntity> page) {
if(page==null) { return; }
List<ShortcutMenuEntity> vos =page.getContent();
if(vos==null || vos.isEmpty()) { return; }
Map<String,ShortcutMenuEntity> cache =new HashMap<>();
for(ShortcutMenuEntity vo : vos){
cache.put(vo.getMenuCode(),vo);
}
List<MenuEntity> menuEntities =menuService.getRepository().findByNames(cache.keySet());
if(menuEntities!=null && !menuEntities.isEmpty()){
for(MenuEntity entity : menuEntities){
ShortcutMenuEntity vo =cache.get(entity.getName());
if(vo!=null){
vo.setMenuId(entity.getId());
}
}
}
}
private void updateMenuIdByName(ShortcutMenuEntity entity) {
if(entity==null) { return; }
MenuEntity menuEntity =menuService.getRepository().findByName(entity.getMenuCode());
if(menuEntity!=null){
entity.setMenuId(menuEntity.getId());
}
}
}

3
io.sc.platform.system/src/main/resources/META-INF/platform/plugins/components.json

@ -62,6 +62,9 @@
"io.sc.platform.system.role.controller", "io.sc.platform.system.role.controller",
"io.sc.platform.system.role.service.impl", "io.sc.platform.system.role.service.impl",
"io.sc.platform.system.shortcutmenu.controller",
"io.sc.platform.system.shortcutmenu.service.impl",
"io.sc.platform.system.user.controller", "io.sc.platform.system.user.controller",
"io.sc.platform.system.user.service.impl" "io.sc.platform.system.user.service.impl"
], ],

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save