@steedos/standard-process-approval 2.3.2-beta.6 → 2.3.2-beta.8

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.
@@ -41,6 +41,10 @@ fields:
41
41
  label: Notification
42
42
  help:
43
43
  description:
44
+ workflow_outbound_messages_actions:
45
+ label: Outbound Message
46
+ help:
47
+ description:
44
48
  description:
45
49
  label:
46
50
  help:
@@ -41,6 +41,10 @@ fields:
41
41
  label: 工作流通知
42
42
  help:
43
43
  description:
44
+ workflow_outbound_messages_actions:
45
+ label: 出站消息
46
+ help:
47
+ description:
44
48
  description:
45
49
  label: 描述
46
50
  help:
@@ -2,4 +2,5 @@ name: user_to_send_as
2
2
  label: 发送方用户
3
3
  type: lookup
4
4
  reference_to: users
5
- sort_no: 60
5
+ sort_no: 60
6
+ hidden: true
@@ -71,6 +71,22 @@ fields:
71
71
  return "object_name eq '" + dependValues.object_name + "'";
72
72
  }
73
73
  }
74
+ workflow_outbound_messages_actions:
75
+ type: lookup
76
+ group: Immediate Actions
77
+ multiple: true
78
+ label: 出站消息
79
+ is_wide: true
80
+ reference_to: workflow_outbound_messages
81
+ reference_to_field: name
82
+ depend_on:
83
+ - object_name
84
+ filtersFunction: !!js/function |
85
+ function (filters, dependValues) {
86
+ if(dependValues && dependValues.object_name){
87
+ return "object_name eq '" + dependValues.object_name + "'";
88
+ }
89
+ }
74
90
  # boolean_filter: # TODO 暂不支持
75
91
  # type: text
76
92
  # criteria: # TODO 暂不支持
@@ -0,0 +1,236 @@
1
+ const _ = require("underscore");
2
+ const util = require('@steedos/standard-objects').util;
3
+ const objectql = require("@steedos/objectql");
4
+ const InternalData = require('@steedos/standard-objects').internalData;
5
+
6
+ const getInternalOutboundMessages = function(sourceOutboundMessages, filters){
7
+ let dbOutboundMessages = Creator.getCollection("workflow_outbound_messages").find(filters, {fields:{_id:1, name:1}}).fetch();
8
+ let messages = [];
9
+
10
+ if(!filters.is_system){
11
+ _.forEach(sourceOutboundMessages, function(doc){
12
+ if(!_.find(dbOutboundMessages, function(p){
13
+ return p.name === doc.name
14
+ })){
15
+ messages.push(doc);
16
+ }
17
+ })
18
+ }
19
+ return messages;
20
+ }
21
+
22
+ module.exports = {
23
+ beforeInsert: async function () {
24
+ await util.checkAPIName(this.object_name, 'name', this.doc.name, undefined, [['is_system','!=', true]]);
25
+ },
26
+ beforeUpdate: async function () {
27
+ if (_.has(this.doc, 'name')) {
28
+ await util.checkAPIName(this.object_name, 'name', this.doc.name, this.id, [['is_system','!=', true]]);
29
+ }
30
+ },
31
+ afterFind: async function(){
32
+ let filters = InternalData.parserFilters(this.query.filters)
33
+ let messages = [];
34
+ if(filters.name && filters.name.$in){
35
+ for(let _name of filters.name.$in){
36
+ let message = objectql.getWorkflowOutboundMessage(_name);
37
+ if(message){
38
+ messages.push(message);
39
+ }
40
+ }
41
+ }else if(filters._id && !filters._id.$ne){
42
+ let message = objectql.getWorkflowOutboundMessage(filters._id);
43
+ if(message){
44
+ messages.push(message);
45
+ }
46
+ }else if(filters.object_name){
47
+ messages = objectql.getObjectOutboundMessages(filters.object_name);
48
+ delete filters.object_name;
49
+ }else{
50
+ messages = objectql.getAllWorkflowOutboundMessages();
51
+ }
52
+
53
+ if(filters._id && filters._id.$ne){
54
+ if(!_.isArray(filters._id.$ne)){
55
+ filters._id.$ne = [filters._id.$ne]
56
+ }
57
+ for(let neid of filters._id.$ne){
58
+ messages = _.filter(messages, function(item){
59
+ return item._id !== neid
60
+ })
61
+ }
62
+ }
63
+
64
+ messages = getInternalOutboundMessages(messages, filters);
65
+
66
+ if(messages && messages.length>0){
67
+ this.data.values = this.data.values.concat(messages)
68
+ }
69
+ },
70
+ afterAggregate: async function(){
71
+ let filters = InternalData.parserFilters(this.query.filters)
72
+ let messages = [];
73
+ if(filters._id && filters._id.$in){
74
+ for(let id of filters._id.$in){
75
+ let message = objectql.getWorkflowOutboundMessage(id);
76
+ if(message){
77
+ messages.push(message);
78
+ }
79
+ }
80
+ }else if(filters._id && !filters._id.$ne){
81
+ let message = objectql.getWorkflowOutboundMessage(filters._id);
82
+ if(message){
83
+ messages.push(message);
84
+ }
85
+ }else if(filters.object_name){
86
+ messages = objectql.getObjectOutboundMessages(filters.object_name);
87
+ delete filters.object_name;
88
+ }else{
89
+ messages = objectql.getAllWorkflowOutboundMessages();
90
+ }
91
+
92
+ if(filters._id && filters._id.$ne){
93
+ if(!_.isArray(filters._id.$ne)){
94
+ filters._id.$ne = [filters._id.$ne]
95
+ }
96
+ for(let neid of filters._id.$ne){
97
+ messages = _.filter(messages, function(item){
98
+ return item._id !== neid
99
+ })
100
+ }
101
+ }
102
+ },
103
+ afterFind: async function(){
104
+ let filters = InternalData.parserFilters(this.query.filters)
105
+ let messages = [];
106
+ if(filters.name && filters.name.$in){
107
+ for(let _name of filters.name.$in){
108
+ let message = objectql.getWorkflowOutboundMessage(_name);
109
+ if(message){
110
+ messages.push(message);
111
+ }
112
+ }
113
+ }else if(filters._id && !filters._id.$ne){
114
+ let message = objectql.getWorkflowOutboundMessage(filters._id);
115
+ if(message){
116
+ messages.push(message);
117
+ }
118
+ }else if(filters.object_name){
119
+ messages = objectql.getObjectWorkflowOutboundMessages(filters.object_name);
120
+ delete filters.object_name;
121
+ }else{
122
+ messages = objectql.getAllWorkflowOutboundMessages();
123
+ }
124
+
125
+ if(filters._id && filters._id.$ne){
126
+ if(!_.isArray(filters._id.$ne)){
127
+ filters._id.$ne = [filters._id.$ne]
128
+ }
129
+ for(let neid of filters._id.$ne){
130
+ messages = _.filter(messages, function(item){
131
+ return item._id !== neid
132
+ })
133
+ }
134
+ }
135
+
136
+ messages = getInternalOutboundMessages(messages, filters);
137
+
138
+ if(messages && messages.length>0){
139
+ this.data.values = this.data.values.concat(messages)
140
+ }
141
+ },
142
+ afterAggregate: async function(){
143
+ let filters = InternalData.parserFilters(this.query.filters)
144
+ let messages = [];
145
+ if(filters._id && filters._id.$in){
146
+ for(let id of filters._id.$in){
147
+ let message = objectql.getWorkflowOutboundMessage(id);
148
+ if(message){
149
+ messages.push(message);
150
+ }
151
+ }
152
+ }else if(filters._id && !filters._id.$ne){
153
+ let message = objectql.getWorkflowOutboundMessage(filters._id);
154
+ if(message){
155
+ messages.push(message);
156
+ }
157
+ }else if(filters.object_name){
158
+ messages = objectql.getObjectOutboundMessages(filters.object_name);
159
+ delete filters.object_name;
160
+ }else{
161
+ messages = objectql.getAllWorkflowOutboundMessages();
162
+ }
163
+
164
+ if(filters._id && filters._id.$ne){
165
+ if(!_.isArray(filters._id.$ne)){
166
+ filters._id.$ne = [filters._id.$ne]
167
+ }
168
+ for(let neid of filters._id.$ne){
169
+ messages = _.filter(messages, function(item){
170
+ return item._id !== neid
171
+ })
172
+ }
173
+ }
174
+
175
+ messages = getInternalOutboundMessages(messages, filters);
176
+
177
+ if(messages && messages.length>0){
178
+ this.data.values = this.data.values.concat(messages)
179
+ }
180
+ },
181
+ afterCount: async function(){
182
+ let filters = InternalData.parserFilters(this.query.filters)
183
+ let messages = [];
184
+ if(filters._id && filters._id.$in){
185
+ for(let id of filters._id.$in){
186
+ let message = objectql.getWorkflowOutboundMessage(id);
187
+ if(message){
188
+ messages.push(message);
189
+ }
190
+ }
191
+ }else if(filters._id && !filters._id.$ne){
192
+ let message = objectql.getWorkflowOutboundMessage(filters._id);
193
+ if(message){
194
+ messages.push(message);
195
+ }
196
+ }else if(filters.object_name){
197
+ messages = objectql.getObjectWorkflowOutboundMessages(filters.object_name);
198
+ delete filters.object_name;
199
+ }else{
200
+ messages = objectql.getAllWorkflowOutboundMessages();
201
+ }
202
+
203
+ if(filters._id && filters._id.$ne){
204
+ if(!_.isArray(filters._id.$ne)){
205
+ filters._id.$ne = [filters._id.$ne]
206
+ }
207
+ for(let neid of filters._id.$ne){
208
+ messages = _.filter(messages, function(item){
209
+ return item._id !== neid
210
+ })
211
+ }
212
+ }
213
+
214
+ messages = getInternalOutboundMessages(messages, filters);
215
+
216
+ if(messages && messages.length>0){
217
+ this.data.values = this.data.values + messages.length
218
+ }
219
+ },
220
+ afterFindOne: async function(){
221
+ if(_.isEmpty(this.data.values)){
222
+ let id = this.id
223
+
224
+ let dbNotification = Creator.getCollection("workflow_outbound_messages").find({name: id}).fetch();
225
+ if(dbNotification && dbNotification.length > 0){
226
+ this.data.values = dbNotification[0];
227
+ return;
228
+ }
229
+
230
+ let message = objectql.getWorkflowOutboundMessage(id);
231
+ if(message){
232
+ this.data.values = message;
233
+ }
234
+ }
235
+ },
236
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/standard-process-approval",
3
- "version": "2.3.2-beta.6",
3
+ "version": "2.3.2-beta.8",
4
4
  "main": "package.service.js",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -12,5 +12,5 @@
12
12
  "description": "steedos package",
13
13
  "repository": {},
14
14
  "license": "MIT",
15
- "gitHead": "0b66bfd50fc63d938aa75817d93853460e060074"
15
+ "gitHead": "3842d837373ece532af6b8399db8998be29018a0"
16
16
  }