Browse Source

后端发布版本 8.2.10

钱盾发布版本 8.2.37
main
wangshaoping 3 days ago
parent
commit
88889534b7
  1. 1
      erm.frontend/.npmrc
  2. 4
      erm.frontend/package.json
  3. 2
      erm.frontend/src/boostrap.ts
  4. 8
      gradle.properties
  5. 1
      io.sc.engine.mv.frontend/.npmrc
  6. 4
      io.sc.engine.mv.frontend/package.json
  7. 2
      io.sc.engine.mv.frontend/src/boostrap.ts
  8. 1
      io.sc.engine.rule.frontend/.npmrc
  9. 4
      io.sc.engine.rule.frontend/package.json
  10. 2
      io.sc.engine.rule.frontend/src/boostrap.ts
  11. 1
      io.sc.engine.st.frontend/.npmrc
  12. 4
      io.sc.engine.st.frontend/package.json
  13. 2
      io.sc.engine.st.frontend/src/boostrap.ts
  14. 2
      io.sc.platform.core.frontend/package.json
  15. 2
      io.sc.platform.core.frontend/src/boostrap.ts
  16. 1
      io.sc.platform.core.frontend/template-project/.npmrc
  17. 4
      io.sc.platform.core.frontend/template-project/package.json
  18. 2
      io.sc.platform.core.frontend/template-project/src/boostrap.ts
  19. 112
      io.sc.platform.core.frontend/template-project/src/views/likm/Grid.vue
  20. 79
      io.sc.platform.core.frontend/template-project/src/views/likm/QuasarGrid.vue
  21. 26
      io.sc.platform.core.frontend/template-project/src/views/likm/TreeGrid.vue
  22. 146
      io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/AutoCompletionManager.ts
  23. 2
      io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/code-mirror.vue
  24. 1
      io.sc.platform.developer.doc/.npmrc
  25. 4
      io.sc.platform.developer.doc/package.json
  26. 1
      io.sc.platform.developer.frontend/.npmrc
  27. 4
      io.sc.platform.developer.frontend/package.json
  28. 2
      io.sc.platform.developer.frontend/src/boostrap.ts
  29. 8
      io.sc.platform.gradle/templates/pgp/setup/gradle.properties
  30. 1
      io.sc.platform.jdbc.liquibase/build.gradle
  31. 41
      io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/importer/LiquibaseDataCsvImporter.java
  32. 4
      io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvImportTaskChange.java
  33. 21
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/util/SqlTypeUtil.java
  34. 1
      io.sc.platform.lcdp.frontend/.npmrc
  35. 4
      io.sc.platform.lcdp.frontend/package.json
  36. 2
      io.sc.platform.lcdp.frontend/src/boostrap.ts
  37. 1
      io.sc.platform.license.keygen.frontend/.npmrc
  38. 4
      io.sc.platform.license.keygen.frontend/package.json
  39. 2
      io.sc.platform.license.keygen.frontend/src/boostrap.ts
  40. 1
      io.sc.platform.mvc.frontend/.npmrc
  41. 4
      io.sc.platform.mvc.frontend/package.json
  42. 2
      io.sc.platform.mvc.frontend/src/boostrap.ts
  43. 2
      io.sc.platform.orm.mybatis/build.gradle
  44. 2
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java
  45. 1
      io.sc.platform.scheduler.manager.frontend/.npmrc
  46. 4
      io.sc.platform.scheduler.manager.frontend/package.json
  47. 2
      io.sc.platform.scheduler.manager.frontend/src/boostrap.ts
  48. 1
      io.sc.platform.system.frontend/.npmrc
  49. 4
      io.sc.platform.system.frontend/package.json
  50. 2
      io.sc.platform.system.frontend/src/boostrap.ts
  51. 1
      io.sc.platform.ws.cxf/gradle.properties
  52. 1
      io.sc.standard.frontend/.npmrc
  53. 4
      io.sc.standard.frontend/package.json
  54. 2
      io.sc.standard.frontend/src/boostrap.ts
  55. 1
      io.sc.website/.npmrc
  56. 4
      io.sc.website/package.json

1
erm.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

4
erm.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "erm.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
erm.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

8
gradle.properties

@ -39,9 +39,9 @@ application_version=1.0.0
# platform
######################################gra#####################
platform_group=io.sc
platform_version=8.2.9
platform_plugin_version=8.2.9
platform_core_frontend_version=8.2.34
platform_version=8.2.10
platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.37
###########################################################
# dependencies version
@ -71,7 +71,7 @@ jjwt_version=0.9.1
jxls_jexcel_version=1.0.7
jxls_poi_version=1.0.15
jxls_version=2.4.6
mybatis_version=3.5.10
mybatis_version=3.0.4
nimbusds_version=9.22
opencsv_version=5.7.1
oshi_version=6.6.1

1
io.sc.engine.mv.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.mv.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.engine.mv.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.engine.rule.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.rule.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.engine.rule.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.engine.st.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.engine.st.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.engine.st.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

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

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

2
io.sc.platform.core.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import App from './App.vue';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.platform.core.frontend/template-project/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.34",
"version": "8.2.37",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@ -110,7 +110,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.core.frontend/template-project/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

112
io.sc.platform.core.frontend/template-project/src/views/likm/Grid.vue

@ -1,70 +1,76 @@
<template>
<div class="h-full">
<w-grid
ref="gridRef"
title="示例列表"
:data-url="Environment.apiContextPath('/api/system/application')"
db-click-operation="testAdd"
selected-mode="cell"
:cell-selected="true"
:toolbar-actions="[
'add',
:title="$t('menu.developer.springboot.bean')"
:checkbox-selection="false"
:fetch-data-url="Environment.apiContextPath('/api/developer/springboot/beans')"
:pageable="false"
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']"
group-mode="alone"
group-by-field="scope"
:columns="[
{ width: 500, name: 'name', label: $t('name') },
{ width: 400, name: 'type', label: $t('className'), format: Formater.simpleClassName() },
{
extend: 'add',
name: 'testAdd',
click: (args) => {
const cell = args.grid.getSelectedCell();
console.info('cell=========', args);
width: 100,
name: 'scope',
label: $t('scope'),
sortable: false,
format: (val) => {
if (val === 'singleton') {
return '测试';
} else if (val === 'prototype') {
return '测试2';
}
return val;
},
},
[
'remove',
]"
:viewer="{
panel: {
columnNum: 2,
labelWidth: 200,
valueWidth: '100%',
fields: [
{ width: 100, name: 'name', label: $t('name') },
{ width: 100, name: 'context', label: $t('context') },
{
extend: 'edit',
name: 'testEdit',
click: (args) => {
console.info('testEdit======', args);
width: 100,
name: 'scope',
label: $t('scope'),
},
{ width: 100, name: 'type', label: $t('className'), format: Formater.none() },
{ width: 100, name: 'resource', label: $t('resource') },
{
width: 100,
name: 'aliases',
label: $t('aliases'),
format: (aliases) => {
aliases = aliases || [];
let result = '';
for (const aliase of aliases) {
result += aliase + '<br/>';
}
return result;
},
},
],
'query',
]"
:query-form-cols-num="12"
:query-form-fields="[{ colSpan: 3, name: 'code', label: '编码', type: 'w-text' }]"
:columns="[
{ name: 'code', label: '编码', type: 'w-text' },
{ name: 'name', label: '名称', type: 'w-text' },
{
name: 'enable',
label: '状态',
format: Formater.enableTag(),
width: 100,
name: 'dependencies',
label: $t('dependencies'),
format: (dependencies) => {
dependencies = dependencies || [];
let result = '';
for (const dependency of dependencies) {
result += dependency + '<br/>';
}
return result;
},
{ name: 'lastModifier', label: '最后修改人', align: 'center' },
{ name: 'lastModifyDate', label: '最后修改日期', align: 'center' },
]"
:editor="{
dialog: {
width: '80%',
height: '80%',
},
form: {
colsNum: 2,
fields: [
{ name: 'code', label: '编码', type: 'w-text' },
{ name: 'name', label: '名称', type: 'w-text' },
],
},
}"
@row-click="rowClick"
>
</w-grid>
</div>
></w-grid>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { Environment, Formater } from '@/platform';
const gridRef = ref();
const rowClick = () => {};
import { Environment, Formater, $t } from '@/platform';
</script>

79
io.sc.platform.core.frontend/template-project/src/views/likm/QuasarGrid.vue

@ -1,69 +1,50 @@
<template>
<div class="q-pa-md">
<q-table v-model:selected="selected" title="Treats" row-key="name" selection="multiple" :rows="rows" :columns="columns">
<template #body="scope">
<q-tr ref="trRef" class="selected" :props="scope">
<q-td class="text-center" style="padding: 0; width: 50px">
<q-checkbox v-model="scope.row['selected']" flat @update:model-value="updateTicked($event, scope.row)" />
</q-td>
<q-td v-for="col in scope.cols" :key="col.name" :props="scope">
<GridFormat :value="col.value"></GridFormat>
</q-td>
</q-tr>
</template>
</q-table>
<q-table
v-model:selected="selected"
title="bean"
row-key="name"
selection="multiple"
:rows="rows"
:columns="columns"
:pagination="{
rowsPerPage: 0,
}"
></q-table>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { Tools } from '@/platform';
import GridFormat from './GridForamt.vue';
import { ref, onMounted } from 'vue';
import { Tools, axios, Environment } from '@/platform';
const selected = ref([]);
const updateTicked = (event, row) => {
row['selected'] = !row['selected'];
};
const columns = [
{
name: 'name',
required: true,
label: 'Dessert (100g serving)',
label: '名称',
field: 'field',
align: 'left',
field: (row) => row.name,
sortable: true,
},
{ name: 'calories', align: 'center', label: 'Calories', field: 'calories', sortable: true },
{
name: 'fat',
label: 'Fat (g)',
field: 'fat',
sortable: true,
format: (val, row) => {
console.info('format.val====', val);
return val;
},
name: 'type',
label: '类型',
field: 'type',
align: 'left',
},
{ name: 'carbs', label: 'Carbs (g)', field: 'carbs' },
{ name: 'protein', label: 'Protein (g)', field: 'protein' },
{ name: 'sodium', label: 'Sodium (mg)', field: 'sodium' },
{ name: 'calcium', label: 'Calcium (%)', field: 'calcium', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) },
{ name: 'iron', label: 'Iron (%)', field: 'iron', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) },
];
const rows = [
{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
protein: 4.0,
sodium: 87,
calcium: '14%',
iron: '1%',
selected: false,
name: 'scope',
label: '作用域',
field: 'scope',
align: 'left',
},
];
const rows = ref([]);
onMounted(async () => {
const data = await axios.get(Environment.apiContextPath('/api/developer/springboot/beans'));
rows.value = data.data;
});
</script>

26
io.sc.platform.core.frontend/template-project/src/views/likm/TreeGrid.vue

@ -3,10 +3,11 @@
<w-grid
ref="gridRef"
title="树形表格示例"
:data-url="Environment.apiContextPath('api/system/menu')"
:fetch-data-url="Environment.apiContextPath('api/system/menu/allMenus')"
:tree="true"
db-click-operation="expand"
draggable="local"
dnd-mode="server"
:columns="[
{
name: 'name',
@ -36,17 +37,18 @@
{ name: 'type', label: '菜单类型' },
{ name: 'order', label: '排序号' },
]"
:toolbar-actions="['expand']"
@row-click="
(args) => {
console.info('args1=======', args);
}
"
@row-db-click="
(args) => {
console.info('args2=======', args);
}
"
:editor="{
form: {
fields: [
{
label: '名称',
name: 'name',
type: 'w-text',
},
],
},
}"
:toolbar-actions="['refresh', 'addTop', 'addChild', 'expand']"
></w-grid>
</div>
</template>

146
io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/AutoCompletionManager.ts

@ -1,5 +1,67 @@
import { axios, Tools } from '@/platform';
class ParameterMapping {
/**
*
*/
static #Boost = {
//指标类型
INTERFACE: 100, //接口
INDICATOR: 100 - 1, //指标
// 参数类型
CONSTANT: 100, //常量
IN: 100 - 1, //输入
IN_OPTION: 100 - 1, //输入(选项)
IN_SUB_OUT: 100 - 1, //输入(子模型输出)
INTERMEDIATE: 100 - 2, //中间值
OUT: 100 - 2, //输出
// 元数据类型
ENUM: 0, //枚举
UD_JAVA_CLASS: 200 - 1, //自定义Java类
};
/**
*
* @param type
* @returns
*/
public static getPlaceholderPrefix(type: string) {
if (type === 'ENUM') {
return '#';
} else {
return '$';
}
}
/**
* ,
* @param type
* @returns
*/
public static getBoost(type: string) {
return ParameterMapping.#Boost[type];
}
/**
*
* @param type
* @returns
*/
public static getAutoCompletionType(type: string) {
if (type === 'ENUM') {
return 'enum';
} else if (type === 'CONSTANT') {
return 'constant';
} else if (type === 'INDICATOR' || type === 'INTERMEDIATE' || type === 'OUT') {
return 'variable';
} else {
return 'interface';
}
}
}
class AutoCompletionManager {
parameters: any;
valueTypes: any;
@ -101,13 +163,20 @@ class AutoCompletionManager {
}
public getParameterOptions(): any {
const cache = {};
const options: any[] = [];
Object.values(this.parameters).forEach((parameter: any) => {
const option = this.getOptionItem(parameter);
if (option) {
if (!cache[option.label]) {
cache[option.label] = option;
options.push(option);
}
}
});
for (const option of options) {
option.boost = ParameterMapping.getBoost(option.category);
}
return options;
}
@ -116,15 +185,13 @@ class AutoCompletionManager {
if (!Tools.isNill(valueType)) {
const version = valueType.version ? valueType.name + '(V' + valueType.version + ')' : valueType.name;
const info = parameter.valueTypeIsList ? 'List<' + version + '>' : version;
if (parameter.type === 'parameter') {
if (parameter.valueTypeIsList) {
return { label: parameter.name, type: 'variable', apply: '${' + parameter.name + '}[0]', info: info };
} else {
return { label: parameter.name, type: 'variable', apply: '${' + parameter.name + '}', info: info };
}
} else if (parameter.type === 'enum') {
return { label: parameter.name, type: 'enum', apply: '#{' + parameter.name + '}', info: info };
}
return {
category: parameter.type,
type: ParameterMapping.getAutoCompletionType(parameter.type),
label: parameter.name,
apply: ParameterMapping.getPlaceholderPrefix(parameter.type) + '{' + parameter.name + '}' + (parameter.valueTypeIsList ? '[0]' : ''),
info: info,
};
}
return null;
}
@ -137,7 +204,8 @@ class AutoCompletionManager {
};
}
public autoCompletionProperties(to: any, matchedText?: any): any {
public autoCompletionProperties(to: any, matchedText?: any, subText?: string): any {
console.log(matchedText, subText);
const matchedTextReverse = Tools.reverseString(matchedText);
const regReverse = /(\.(\](.+?)\[)?\}(.+?)\{[$#])+/g; //匹配 '.]n[}xxx{$#' 模式
// -- -- --- -- -- --- ----
@ -151,72 +219,56 @@ class AutoCompletionManager {
if (Tools.isUndefinedOrNull(parameterName)) {
return null;
}
/*
const enumRegReverse = /(\.(\](.+?)\[)?\}(.+?)\{#)+/g; //匹配 '.]n[}xxx{#' 模式
// -- -- --- -- -- --- ----
// . ] n [ } xxx {#
let matcheds: any = matchedTextReverse.match(enumRegReverse);
if (Tools.isUndefinedOrNull(matcheds) || matcheds.length <= 0) {
const regReverse = /(\.(\](.+?)\[)?\}(.+?)\{\$)+/g; //匹配 '.]n[}xxx{$' 模式
// -- -- --- -- -- --- ----
// . ] n [ } xxx {$
matcheds = matchedTextReverse.match(regReverse);
if (Tools.isUndefinedOrNull(matcheds) || matcheds.length <= 0) {
return null;
}
}
const matched = Tools.reverseString(matcheds[0]);
let parameterName = matched.replace(/#\{(.+?)\}(\[(.+?)\])?/g, '$1');
// ---- --- -- -- --- --
// $ { xxx } [ n ]
if (Tools.isUndefinedOrNull(parameterName)) {
parameterName = matched.replace(/\$\{(.+?)\}(\[(.+?)\])?/g, '$1');
if (Tools.isUndefinedOrNull(parameterName)) {
return null;
}
}
*/
const options = this.getOptions(parameterName);
if (Tools.isUndefinedOrNull(options)) {
return null;
}
let filteredOptions: any[] = [];
if (!Tools.isUndefinedOrNull(subText)) {
options.forEach((item: any) => {
if (item.label.indexOf(subText) > -1) {
filteredOptions.push(item);
}
});
} else {
filteredOptions = options;
}
return {
from: to,
options: options,
options: filteredOptions,
validFor: /^(.*)?$/,
};
}
public doAutoCompletion(context: any): any {
console.log('>>>>');
const beforeMatched = context.matchBefore(/(.+?)/g);
console.log(beforeMatched);
if (Tools.isUndefinedOrNull(beforeMatched)) {
return null;
}
const beforeText = beforeMatched.text || '';
if (beforeText.endsWith('.')) {
//匹配属性
return this.autoCompletionProperties(beforeMatched.to, beforeText);
} else if (beforeText.endsWith(' ')) {
if (beforeText.endsWith(' ')) {
//匹配参数
return this.autoCompletionParameters(beforeMatched.to);
} else if (beforeText.endsWith('.')) {
//匹配所有属性
return this.autoCompletionProperties(beforeMatched.to, beforeText);
} else {
return null;
//匹配部分属性
const lastIndexOf = beforeText.lastIndexOf('.');
if (lastIndexOf > -1) {
return this.autoCompletionProperties(beforeMatched.to, beforeText.substring(0, lastIndexOf + 1), beforeText.substring(lastIndexOf + 1));
}
}
}
public load(url: string) {
axios.get(url).then((response) => {
axios.get(url).then((response: any) => {
this.setParameters(response.data?.parameters);
this.setValueTypes(response.data?.valueTypes);
});
}
public autoCompletion(): any {
console.log('????');
return (context: any) => {
return this.doAutoCompletion(context);
};

2
io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/code-mirror.vue

@ -30,7 +30,7 @@ const click = () => {
const autoCompletionManager = new AutoCompletionManager();
const userDefinedFunctionsManager = new UserDefinedFunctionsManager();
autoCompletionManager.load(Environment.apiContextPath('/api/re/common/parameterAndValueType/findByParameterId/34e7391f-ba76-4e14-b152-ae0da917fd20'));
autoCompletionManager.load(Environment.apiContextPath('/api/re/common/parameterAndValueType/findByParameterId/069d4b6d-1972-4953-aa47-2ae3a4d41f4a'));
userDefinedFunctionsManager.load();
console.log(Tools.escapeHtml('<xml>&</xml>'));

1
io.sc.platform.developer.doc/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.doc",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"main": "index.js",
"scripts": {
@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15"
},
"dependencies": {
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"vue": "3.5.13",
"vue-i18n": "11.0.1"

1
io.sc.platform.developer.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.developer.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

8
io.sc.platform.gradle/templates/pgp/setup/gradle.properties

@ -39,9 +39,9 @@ application_version=1.0.0
# platform
######################################gra#####################
platform_group=io.sc
platform_version=8.2.9
platform_plugin_version=8.2.9
platform_core_frontend_version=8.2.34
platform_version=8.2.10
platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.37
###########################################################
# dependencies version
@ -71,7 +71,7 @@ jjwt_version=0.9.1
jxls_jexcel_version=1.0.7
jxls_poi_version=1.0.15
jxls_version=2.4.6
mybatis_version=3.5.10
mybatis_version=3.0.4
nimbusds_version=9.22
opencsv_version=5.7.1
oshi_version=6.6.1

1
io.sc.platform.jdbc.liquibase/build.gradle

@ -1,5 +1,6 @@
dependencies {
api(
project(":io.sc.platform.csv"),
project(":io.sc.platform.jdbc"),
"org.liquibase:liquibase-core",

41
io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/importer/LiquibaseDataCsvImporter.java

@ -1,37 +1,20 @@
package io.sc.platform.jdbc.liquibase.importer;
import io.sc.platform.core.DirectoryManager;
import io.sc.platform.core.Environment;
import io.sc.platform.core.enums.ProgressStatus;
import io.sc.platform.core.support.ProgressInfo;
import io.sc.platform.core.util.*;
import io.sc.platform.jdbc.exporter.DataExporter;
import io.sc.platform.jdbc.exporter.support.DataExportConfigure;
import io.sc.platform.jdbc.exporter.support.DataImportConfigure;
import io.sc.platform.jdbc.exporter.support.ExportTable;
import io.sc.platform.jdbc.importer.DataImporter;
import io.sc.platform.jdbc.liquibase.exporter.support.ParentChildRecord;
import io.sc.platform.jdbc.liquibase.task.CsvImportTaskChange;
import io.sc.platform.jdbc.meta.MetaDataLoader;
import io.sc.platform.jdbc.meta.support.Column;
import io.sc.platform.jdbc.meta.support.Table;
import io.sc.platform.jdbc.util.SqlTypeUtil;
import liquibase.database.jvm.JdbcConnection;
import liquibase.repackaged.com.opencsv.CSVReader;
import liquibase.repackaged.com.opencsv.CSVReaderBuilder;
import liquibase.repackaged.com.opencsv.CSVWriterBuilder;
import liquibase.repackaged.com.opencsv.ICSVWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.sql.DataSource;
import java.io.*;
import java.sql.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.*;
import java.util.stream.Collectors;
import java.util.List;
import java.util.Locale;
public class LiquibaseDataCsvImporter implements DataImporter {
@Override
@ -52,20 +35,4 @@ public class LiquibaseDataCsvImporter implements DataImporter {
jdbcConnection.close();
}
}
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
File file =new File("/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.jdbc.liquibase/src/main/resources/sys_rpt_excel_tpl.csv");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Environment.DEFAULT_CHARSET_NAME));
CSVReader csvReader = new CSVReaderBuilder(bufferedReader).build();
Iterator<String[]> iterator = csvReader.iterator();
while(iterator.hasNext()){
String[] data =iterator.next();
//System.out.println(data[i]);
//TypeConvertor.getValue(data[i],Timestamp.class,null);
System.out.println(data[4]);
//System.out.println(Arrays.toString(data));
}
}
}

4
io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvImportTaskChange.java

@ -1,5 +1,7 @@
package io.sc.platform.jdbc.liquibase.task;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import io.sc.platform.core.Environment;
import io.sc.platform.jdbc.meta.support.Column;
import io.sc.platform.jdbc.meta.support.Table;
@ -14,8 +16,6 @@ import liquibase.database.jvm.JdbcConnection;
import liquibase.exception.CustomChangeException;
import liquibase.exception.SetupException;
import liquibase.exception.ValidationErrors;
import liquibase.repackaged.com.opencsv.CSVReader;
import liquibase.repackaged.com.opencsv.CSVReaderBuilder;
import liquibase.resource.ResourceAccessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

21
io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/util/SqlTypeUtil.java

@ -1,23 +1,12 @@
package io.sc.platform.jdbc.util;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLXML;
import java.sql.Time;
import java.sql.Timestamp;
import java.sql.Types;
import java.sql.*;
import java.text.ParseException;
import java.util.Base64;
import javax.xml.bind.DatatypeConverter;
import org.springframework.util.StringUtils;
/**
* JDBC 字段类型和 java 类之间的转换
*/
@ -166,10 +155,10 @@ public class SqlTypeUtil {
case Types.BINARY:
case Types.VARBINARY:
case Types.LONGVARBINARY:
return DatatypeConverter.parseBase64Binary(value);
return Base64.getDecoder().decode(value);
case Types.BLOB:
Blob blob =connection.createBlob();
byte[] bytes =DatatypeConverter.parseBase64Binary(value);
byte[] bytes =Base64.getDecoder().decode(value);
blob.setBytes(1,bytes);
return blob;
case Types.CLOB:

1
io.sc.platform.lcdp.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.lcdp.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.lcdp.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.platform.license.keygen.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.license.keygen.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.license.keygen.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.platform.mvc.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.mvc.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.mvc.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

2
io.sc.platform.orm.mybatis/build.gradle

@ -1,6 +1,6 @@
dependencies {
api(
project(":io.sc.platform.orm"),
"org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.2",
"org.mybatis.spring.boot:mybatis-spring-boot-starter:${mybatis_version}",
)
}

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java

@ -1,5 +1,6 @@
package io.sc.platform.orm.service.impl;
import com.beust.jcommander.internal.Lists;
import io.sc.platform.core.Environment;
import io.sc.platform.orm.entity.CorporationAuditorEntity;
import io.sc.platform.orm.entity.DesensitizedEntity;
@ -14,6 +15,7 @@ import io.sc.platform.orm.service.support.criteria.impl.Equals;
import io.sc.platform.orm.service.support.criteria.impl.IContains;
import io.sc.platform.orm.service.support.criteria.impl.IsNull;
import io.sc.platform.security.util.SecurityUtil;
import io.sc.platform.util.CollectionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.convert.ConversionService;

1
io.sc.platform.scheduler.manager.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.scheduler.manager.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.scheduler.manager.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.platform.system.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

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

@ -1,6 +1,6 @@
{
"name": "io.sc.platform.system.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -110,7 +110,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.platform.system.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.platform.ws.cxf/gradle.properties

@ -1 +0,0 @@
cxf_version=3.2.7

1
io.sc.standard.frontend/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

4
io.sc.standard.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.standard.frontend",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"private": false,
"keywords": [],
@ -111,7 +111,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
"platform-core": "8.2.34",
"platform-core": "8.2.37",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",

2
io.sc.standard.frontend/src/boostrap.ts

@ -18,7 +18,7 @@ import 'tailwindcss/utilities.css';
// 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack MF 的 shared 功能
// 只有在主前端项目中编写如下的 remoteComponentLoader 函数才能实现 webpack Module Federation 的 shared 功能
ComponentManager.setRemoteComponentLoader((moduleName: string, componentName: string): any => {
return async () => {
await __webpack_init_sharing__('default');

1
io.sc.website/.npmrc

@ -1,6 +1,5 @@
# npm 仓库地址, 在 npm install 时使用
registry=http://nexus.sc.io:8000/repository/npm-public/
#registry=https://registry.npm.taobao.org/
# 用户邮箱
email=

4
io.sc.website/package.json

@ -1,6 +1,6 @@
{
"name": "io.sc.website",
"version": "8.2.9",
"version": "8.2.10",
"description": "",
"main": "index.js",
"scripts": {
@ -28,6 +28,6 @@
},
"dependencies": {
"vue": "3.5.13",
"platform-core": "8.2.34"
"platform-core": "8.2.37"
}
}
Loading…
Cancel
Save