Utils.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. var _self = this;
  2. var applications = this.Action.applications; //流程事件中
  3. //var applications = resources.getContext().applications(); //代理和接口中
  4. var Utils = {
  5. getKeyEqualObjFromArray : function( sourceArray, sourceKey, value ){
  6. for( var i=0; i<sourceArray.length; i++ ){
  7. if( sourceArray[i][sourceKey] === value ){
  8. return sourceArray[i];
  9. }
  10. }
  11. return null;
  12. },
  13. parseResp : function( resp ){
  14. if( !resp || resp === null ){
  15. return {
  16. "type": "error",
  17. message : "服务响应是null"
  18. }
  19. }else{
  20. var json = JSON.parse( resp.toString() );
  21. return json;
  22. }
  23. },
  24. getFailText : function( json ){
  25. //{
  26. // "type": "error",
  27. // "message": "手机号错误:15268803358, 手机号已有值重复.",
  28. // "date": "2018-08-05 02:51:35",
  29. // "spent": 5,
  30. // "size": -1,
  31. // "count": 0,
  32. // "position": 0,
  33. // "prompt": "com.x.organization.assemble.control.jaxrs.person.ExceptionMobileDuplicate"
  34. //}
  35. var text;
  36. if( json.message ){
  37. text = json.message + ( json.prompt ? "("+json.prompt + ")" : "" );
  38. }else if( json.prompt ){
  39. text = json.prompt;
  40. }else{
  41. text = "未知异常";
  42. }
  43. print(text);
  44. return text;
  45. },
  46. processError : function( e, text ){
  47. e.printStackTrace();
  48. var errorText = text + " " + e.name + ": " + e.message;
  49. print(errorText);
  50. return errorText;
  51. },
  52. arrayIndexOf : function( array, target ){
  53. for( var i=0; i<array.length; i++ ){
  54. if( array[i] == target )return i;
  55. }
  56. return -1;
  57. },
  58. objectClone : function (obj) {
  59. if (null == obj || "object" != typeof obj) return obj;
  60. if ( typeof obj.length==='number'){ //数组
  61. var copy = [];
  62. for (var i = 0, len = obj.length; i < len; ++i) {
  63. copy[i] = Utils.objectClone(obj[i]);
  64. }
  65. return copy;
  66. }else{
  67. var copy = {};
  68. for (var attr in obj) {
  69. copy[attr] = Utils.objectClone(obj[attr]);
  70. }
  71. return copy;
  72. }
  73. },
  74. typeOf : function( item ){
  75. if (item === null) return 'null';
  76. if( !item ){
  77. return typeof item;
  78. }
  79. if (item.$family != null) return item.$family();
  80. if (item.constructor == Array) return 'array';
  81. if (item.nodeName){
  82. if (item.nodeType == 1) return 'element';
  83. if (item.nodeType == 3) return (/\S/).test(item.nodeValue) ? 'textnode' : 'whitespace';
  84. } else if (typeof item.length == 'number'){
  85. if (item.callee) return 'arguments';
  86. //if ('item' in item) return 'collection';
  87. }
  88. return typeof item;
  89. //if( obj === null )return "null";
  90. //if( "object" !== typeof obj )return typeof obj;
  91. //return typeof obj.length==='number' ? 'array' : 'object';
  92. }
  93. };
  94. var Org = {
  95. getUserFlag : function( json ){
  96. return json.flag || json.distinguishedName || json.unique || json.employee || json.mobile || json.id;
  97. },
  98. getSuperUnitByUnitByLevel : function(unit, level){
  99. var unitList = _self.org.listSupUnit(unit, true);
  100. var result;
  101. if(unitList){
  102. unitList.each( function(u){
  103. if( u.level == level ){
  104. result = u.distinguishedName
  105. }
  106. })
  107. }
  108. return result;
  109. },
  110. getSuperUnitByIdentityByLevel : function( identity, level ){
  111. var unitList = _self.org.listAllSupUnitWithIdentity( identity );
  112. var result;
  113. if(unitList){
  114. unitList.each( function(u){
  115. if( u.level == level ){
  116. result = u.distinguishedName
  117. }
  118. })
  119. }
  120. return result;
  121. },
  122. getSuperObjectUnitByIdentityByLevel : function( identity, level ){
  123. var unitList = _self.org.listAllSupUnitWithIdentity( identity );
  124. var result;
  125. if(unitList){
  126. unitList.each( function(u){
  127. if( u.level == level ){
  128. result = u;
  129. }
  130. })
  131. }
  132. return result;
  133. }
  134. };
  135. var Calendar = {
  136. getLastMonth : function( date ) {
  137. var Date = Java.type("java.util.Date");
  138. if( !date ){
  139. date = new Date();
  140. }
  141. var sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
  142. var array = sdf.format( date ).split("-");
  143. var date_lastMonth = sdf.parse( array[0] + "-" + array[1] + "-" + "01");
  144. var Calendar = Java.type("java.util.Calendar");
  145. var c = Calendar.getInstance();
  146. c.setTime(date_lastMonth);
  147. c.add(Calendar.MONTH, -1);
  148. return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1);
  149. }
  150. };
  151. var CMSPathData = {
  152. get : function( id, pathList ){
  153. var o = applications.getQuery('x_cms_assemble_control', CMSPathData.getUri(id, pathList) );
  154. var json = Utils.parseResp( o );
  155. return json.data;
  156. }.bind(this),
  157. create : function( id, pathList, data ){
  158. var o = applications.postQuery('x_cms_assemble_control', CMSPathData.getUri(id, pathList), JSON.stringify(data) );
  159. var json = Utils.parseResp( o );
  160. return json.data;
  161. }.bind(this),
  162. update : function( id, pathList, data ){
  163. var o = applications.putQuery('x_cms_assemble_control', CMSPathData.getUri(id, pathList), JSON.stringify(data) );
  164. var json = Utils.parseResp( o );
  165. return json.data;
  166. },
  167. delete : function( id, pathList ){
  168. var o = applications.deleteQuery('x_cms_assemble_control', CMSPathData.getUri(id, pathList) );
  169. var json = Utils.parseResp( o );
  170. return json.data;
  171. },
  172. getUri : function( id, pathList ){
  173. var uri = "data/document/"+id;
  174. if( pathList && Utils.typeOf(pathList) === "array" && pathList.length > 0 ){
  175. for( var i=0 ;i< pathList.length; i++ ){
  176. uri = uri + "/" + encodeURIComponent( pathList[i] );
  177. }
  178. }
  179. return uri;
  180. }
  181. };
  182. (function(context) {
  183. 'use strict';
  184. var Timer = Java.type('java.util.Timer');
  185. var Phaser = Java.type('java.util.concurrent.Phaser');
  186. var timer = new Timer('jsEventLoop', false);
  187. var phaser = new Phaser();
  188. var timeoutStack = 0;
  189. function pushTimeout() {
  190. timeoutStack++;
  191. }
  192. function popTimeout() {
  193. timeoutStack--;
  194. if (timeoutStack > 0) {
  195. return;
  196. }
  197. timer.cancel();
  198. phaser.forceTermination();
  199. }
  200. var onTaskFinished = function() {
  201. phaser.arriveAndDeregister();
  202. };
  203. context.setTimeout = function(fn, millis /* [, args...] */) {
  204. var args = [].slice.call(arguments, 2, arguments.length);
  205. var phase = phaser.register();
  206. var canceled = false;
  207. timer.schedule(function() {
  208. if (canceled) {
  209. return;
  210. }
  211. try {
  212. fn.apply(context, args);
  213. } catch (e) {
  214. print(e);
  215. } finally {
  216. onTaskFinished();
  217. popTimeout();
  218. }
  219. }, millis);
  220. pushTimeout();
  221. return function() {
  222. onTaskFinished();
  223. canceled = true;
  224. popTimeout();
  225. };
  226. };
  227. context.clearTimeout = function(cancel) {
  228. cancel();
  229. };
  230. context.setInterval = function(fn, delay /* [, args...] */) {
  231. var args = [].slice.call(arguments, 2, arguments.length);
  232. var cancel = null;
  233. var loop = function() {
  234. cancel = context.setTimeout(loop, delay);
  235. fn.apply(context, args);
  236. };
  237. cancel = context.setTimeout(loop, delay);
  238. return function() {
  239. cancel();
  240. };
  241. };
  242. context.clearInterval = function(cancel) {
  243. cancel();
  244. };
  245. })(this);