@steedos/service-metadata-objects 2.2.47 → 2.2.50-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  import { SteedosFieldFormulaTypeConfig, SteedosQuotedByFieldFormulasTypeConfig } from './type';
2
+ import { JsonMap } from '@salesforce/ts-types';
2
3
  export declare const getFieldFormulaConfigs: () => Array<SteedosFieldFormulaTypeConfig>;
3
4
  export declare const getFieldFormulaConfig: (_id: string) => SteedosFieldFormulaTypeConfig;
4
5
  /**
@@ -14,8 +15,14 @@ export declare const getObjectFieldFormulaConfigs: (objectName: string, fieldNam
14
15
  * @param objectName
15
16
  * @param fieldNames
16
17
  * @param escapeConfigs 要跳过的字段公式
18
+ * @param options.onlyForOwn 要跳过其他对象上的字段公式,只检测当前对象上的字段公式,
19
+ * 新建记录的时候传入true可以提高性能,避免不必要的公式计算
20
+ * 见issue: a公式字段,其中应用了b公式字段,记录保存后a字段没计算,编辑后再保存字段计算 #2946
21
+ * @param options.withoutCurrent 要跳过当前对象上配置的所有字段公式,只检测其他对象上的字段公式,
22
+ * 删除记录的时候传入true可以解决因为记录被删除doc为null运行公式报错的问题,同时避免不必要的公式计算
23
+ * 见issue: 删除包含公式字段的记录时报错 #3427
17
24
  */
18
- export declare const getObjectQuotedByFieldFormulaConfigs: (objectName: string, fieldNames?: Array<string>, escapeConfigs?: Array<SteedosFieldFormulaTypeConfig> | Array<string>) => SteedosQuotedByFieldFormulasTypeConfig;
25
+ export declare const getObjectQuotedByFieldFormulaConfigs: (objectName: string, fieldNames?: Array<string>, escapeConfigs?: Array<SteedosFieldFormulaTypeConfig> | Array<string>, options?: JsonMap) => SteedosQuotedByFieldFormulasTypeConfig;
19
26
  /**
20
27
  * 获取参数config在哪些字段公式中被引用
21
28
  * @param config
@@ -44,8 +44,15 @@ exports.getObjectFieldFormulaConfigs = getObjectFieldFormulaConfigs;
44
44
  * @param objectName
45
45
  * @param fieldNames
46
46
  * @param escapeConfigs 要跳过的字段公式
47
+ * @param options.onlyForOwn 要跳过其他对象上的字段公式,只检测当前对象上的字段公式,
48
+ * 新建记录的时候传入true可以提高性能,避免不必要的公式计算
49
+ * 见issue: a公式字段,其中应用了b公式字段,记录保存后a字段没计算,编辑后再保存字段计算 #2946
50
+ * @param options.withoutCurrent 要跳过当前对象上配置的所有字段公式,只检测其他对象上的字段公式,
51
+ * 删除记录的时候传入true可以解决因为记录被删除doc为null运行公式报错的问题,同时避免不必要的公式计算
52
+ * 见issue: 删除包含公式字段的记录时报错 #3427
47
53
  */
48
- const getObjectQuotedByFieldFormulaConfigs = (objectName, fieldNames, escapeConfigs) => {
54
+ const getObjectQuotedByFieldFormulaConfigs = (objectName, fieldNames, escapeConfigs, options) => {
55
+ const { onlyForOwn, withoutCurrent } = options || {};
49
56
  const configs = (0, exports.getFieldFormulaConfigs)();
50
57
  let configsOnCurrentObject = [];
51
58
  let configsOnOtherObjects = [];
@@ -58,24 +65,29 @@ const getObjectQuotedByFieldFormulaConfigs = (objectName, fieldNames, escapeConf
58
65
  }
59
66
  let isQuoting = (0, util_1.isFieldFormulaConfigQuotingObjectAndFields)(config, objectName, fieldNames);
60
67
  if (isQuoting) {
61
- let isOwn = config.object_name === objectName;
62
- if (isOwn) {
68
+ let isCurrent = config.object_name === objectName;
69
+ let isOwn = isCurrent;
70
+ if (isCurrent) {
63
71
  // 要进一步确定其引用关系中有引用自身才算是引用自身的公式字段
64
72
  isOwn = !!config.quotes.find((quote) => {
65
73
  return quote.is_own;
66
74
  });
67
75
  }
68
76
  if (isOwn) {
69
- configsOnCurrentObject.push(config);
77
+ if (!(withoutCurrent && isCurrent)) {
78
+ configsOnCurrentObject.push(config);
79
+ }
70
80
  }
71
- else {
72
- configsOnOtherObjects.push(config);
81
+ else if (!onlyForOwn) {
82
+ if (!(withoutCurrent && isCurrent)) {
83
+ configsOnOtherObjects.push(config);
84
+ }
73
85
  }
74
86
  }
75
87
  });
76
88
  // 当前对象上的字段一定要做排序
77
89
  const ownConfigs = (0, util_1.sortFieldFormulaConfigs)(configsOnCurrentObject);
78
- const otherConfigs = configsOnOtherObjects;
90
+ const otherConfigs = configsOnOtherObjects; //注意otherConfigs其实也包括当前对象上的公式字段,只是不包含引用自身字段的公式字段
79
91
  const allConfigs = ownConfigs.concat(otherConfigs);
80
92
  return { ownConfigs, otherConfigs, allConfigs };
81
93
  };
@@ -1 +1 @@
1
- {"version":3,"file":"field_formula.js","sourceRoot":"","sources":["../../src/formula/field_formula.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field_formula.js","sourceRoot":"","sources":["../../src/formula/field_formula.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-metadata-objects",
3
- "version": "2.2.47",
3
+ "version": "2.2.50-beta.4",
4
4
  "description": "",
5
5
  "main": "lib/objects.service.js",
6
6
  "scripts": {
@@ -20,8 +20,8 @@
20
20
  "author": "",
21
21
  "license": "MIT",
22
22
  "dependencies": {
23
- "@steedos/formula": "2.2.47",
24
- "@steedos/metadata-registrar": "2.2.47",
23
+ "@steedos/formula": "2.2.50-beta.4",
24
+ "@steedos/metadata-registrar": "2.2.50-beta.4",
25
25
  "dotenv-flow": "^3.1.0",
26
26
  "ioredis": "^4.22.0",
27
27
  "lodash": "^4.17.21",
@@ -42,5 +42,5 @@
42
42
  "publishConfig": {
43
43
  "access": "public"
44
44
  },
45
- "gitHead": "d36c2021b7eeca48bee5406cd81490fd0cd8a78e"
45
+ "gitHead": "0c6faf339fdc44dd0c5580c3f0fa2cfe8afacdb1"
46
46
  }
@@ -2,6 +2,7 @@
2
2
  import { SteedosFieldFormulaTypeConfig, SteedosQuotedByFieldFormulasTypeConfig } from './type';
3
3
  import { sortFieldFormulaConfigs, isFieldFormulaConfigQuotingObjectAndFields } from './util';
4
4
  import _ = require('lodash');
5
+ import { JsonMap } from '@salesforce/ts-types';
5
6
 
6
7
  // export const addFieldFormulaConfig = (config: SteedosFieldFormulaTypeConfig) => {
7
8
  // addConfig('field_formula', config);
@@ -46,8 +47,15 @@ export const getObjectFieldFormulaConfigs = (objectName: string, fieldName?: str
46
47
  * @param objectName
47
48
  * @param fieldNames
48
49
  * @param escapeConfigs 要跳过的字段公式
50
+ * @param options.onlyForOwn 要跳过其他对象上的字段公式,只检测当前对象上的字段公式,
51
+ * 新建记录的时候传入true可以提高性能,避免不必要的公式计算
52
+ * 见issue: a公式字段,其中应用了b公式字段,记录保存后a字段没计算,编辑后再保存字段计算 #2946
53
+ * @param options.withoutCurrent 要跳过当前对象上配置的所有字段公式,只检测其他对象上的字段公式,
54
+ * 删除记录的时候传入true可以解决因为记录被删除doc为null运行公式报错的问题,同时避免不必要的公式计算
55
+ * 见issue: 删除包含公式字段的记录时报错 #3427
49
56
  */
50
- export const getObjectQuotedByFieldFormulaConfigs = (objectName: string, fieldNames?: Array<string>, escapeConfigs?: Array<SteedosFieldFormulaTypeConfig> | Array<string>): SteedosQuotedByFieldFormulasTypeConfig => {
57
+ export const getObjectQuotedByFieldFormulaConfigs = (objectName: string, fieldNames?: Array<string>, escapeConfigs?: Array<SteedosFieldFormulaTypeConfig> | Array<string>, options?: JsonMap): SteedosQuotedByFieldFormulasTypeConfig => {
58
+ const { onlyForOwn, withoutCurrent } = options || {};
51
59
  const configs = getFieldFormulaConfigs();
52
60
  let configsOnCurrentObject = [];
53
61
  let configsOnOtherObjects = [];
@@ -60,24 +68,29 @@ export const getObjectQuotedByFieldFormulaConfigs = (objectName: string, fieldNa
60
68
  }
61
69
  let isQuoting = isFieldFormulaConfigQuotingObjectAndFields(config, objectName, fieldNames);
62
70
  if (isQuoting) {
63
- let isOwn = config.object_name === objectName;
64
- if (isOwn) {
71
+ let isCurrent = config.object_name === objectName;
72
+ let isOwn = isCurrent;
73
+ if (isCurrent) {
65
74
  // 要进一步确定其引用关系中有引用自身才算是引用自身的公式字段
66
75
  isOwn = !!config.quotes.find((quote) => {
67
76
  return quote.is_own;
68
77
  });
69
78
  }
70
79
  if (isOwn) {
71
- configsOnCurrentObject.push(config);
80
+ if(!(withoutCurrent && isCurrent)){
81
+ configsOnCurrentObject.push(config);
82
+ }
72
83
  }
73
- else {
74
- configsOnOtherObjects.push(config);
84
+ else if (!onlyForOwn) {
85
+ if(!(withoutCurrent && isCurrent)){
86
+ configsOnOtherObjects.push(config);
87
+ }
75
88
  }
76
89
  }
77
90
  });
78
91
  // 当前对象上的字段一定要做排序
79
92
  const ownConfigs = sortFieldFormulaConfigs(configsOnCurrentObject);
80
- const otherConfigs = configsOnOtherObjects;
93
+ const otherConfigs = configsOnOtherObjects; //注意otherConfigs其实也包括当前对象上的公式字段,只是不包含引用自身字段的公式字段
81
94
  const allConfigs = ownConfigs.concat(otherConfigs);
82
95
  return { ownConfigs, otherConfigs, allConfigs }
83
96
  }