addChannelTask.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. /*
  2. * resources.getEntityManagerContainer() // 实体管理容器.
  3. * resources.getContext() //上下文根.
  4. * resources.getOrganization() //组织访问接口.
  5. * requestText //请求内容.
  6. * request //请求对象.
  7. */
  8. print("运行渠道任务工单任务同步实时接口");
  9. var File = Java.type('java.io.File');
  10. var Root_Dir_Record = "D:"+File.separator+'FTPFile'+ File.separator + "ChannelTaskRecorder" + File.separator ;
  11. var recordFile = null;
  12. var workcompletedid = "";
  13. var pw = null;
  14. function createRecordFile(){
  15. var Date = Java.type( "java.util.Date" );
  16. var now = new Date();
  17. var recordPath = Root_Dir_Record +
  18. new java.text.SimpleDateFormat("yyyy").format(now) + File.separator +
  19. new java.text.SimpleDateFormat("MM").format(now) + File.separator +
  20. new java.text.SimpleDateFormat("dd").format(now) + File.separator + "Add";
  21. var recordDir = new File(recordPath);
  22. if (!recordDir.exists()) {
  23. if(!recordDir.mkdirs()){
  24. print( "创建记录文件夹失败:"+ recordPath );
  25. recordDir = null;
  26. }
  27. }
  28. if( recordDir !== null ){
  29. var recordFilePath = recordPath + File.separator + workcompletedid + ".txt";
  30. recordFile = new File(recordFilePath);
  31. if (recordFile.exists()) { // 如果已存在,删除旧文件
  32. recordFile.delete();
  33. }
  34. if(!recordFile.createNewFile()){
  35. print("不能记录文件:"+recordFilePath);
  36. recordFile = null;
  37. }else{
  38. print("创建记录文件:"+recordFilePath);
  39. }
  40. }
  41. }
  42. function printRecorder( text ){
  43. print(text);
  44. if( recordFile == null )createRecordFile();
  45. if( recordFile == null )return;
  46. if( pw == null )pw = new java.io.PrintWriter(recordFile, "GBK");
  47. pw.print( text );
  48. pw.write(0x0d);
  49. pw.write(0x0a);
  50. }
  51. function getPureText( str ){
  52. if( str === null )return str;
  53. if( str.substr( 0 , 1 ) === "\"" ){
  54. str = str.substr( 1, str.length - 1 );
  55. }
  56. if( str.substr( str.length - 1 , 1 ) === "\"" ){
  57. str = str.substr( 0, str.length - 1 );
  58. }
  59. return str;
  60. }
  61. function getWorkCompleteIds(){
  62. var ArrayList = Java.type('java.util.ArrayList');
  63. var idList = new ArrayList();
  64. var filterList = {"filterList": [{
  65. "logic":"and",
  66. "path": "interfaceStatus",
  67. "title": "接口状态",
  68. "comparison":"equals",
  69. "comparisonTitle":"等于",
  70. "value": "detailDone",
  71. "formatType":"textValue"
  72. }]};
  73. var json = resources.getWebservicesClient().jaxrsPut('x_query_assemble_surface', "view/flag/workCompletedByBranch/query/channelTask/execute", JSON.stringify( filterList ) );
  74. var obj = json.getAsJsonObject();
  75. var grid = obj.get("grid");
  76. if( grid ){
  77. var workData = grid.getAsJsonArray();
  78. var iter = workData.iterator();
  79. while(iter.hasNext()) {
  80. //如果存在,则调用next实现迭代
  81. var data = iter.next(); //把Object型强转成int型
  82. if( data && data != null ){
  83. var d = data.get("data");
  84. if( d && d!=null ){
  85. var workCompletedId = d.get("workCompletedId");
  86. if( workCompletedId && workCompletedId != null ){
  87. workCompletedId = getPureText(workCompletedId.toString());
  88. idList.add( workCompletedId )
  89. }
  90. }
  91. }
  92. }
  93. }
  94. return idList;
  95. }
  96. //function getWorkCompleteId(){
  97. // var filterList = {"filterList": [{
  98. // "logic":"and",
  99. // "path": "interfaceStatus",
  100. // "title": "接口状态",
  101. // "comparison":"equals",
  102. // "comparisonTitle":"等于",
  103. // "value": "detailDone",
  104. // "formatType":"textValue"
  105. // }]};
  106. // var json = resources.getWebservicesClient().jaxrsPut('x_query_assemble_surface', "view/flag/workCompletedByBranch/query/channelTask/execute", JSON.stringify( filterList ) );
  107. //
  108. // var obj = json.getAsJsonObject();
  109. // var grid = obj.get("grid");
  110. // if( grid ){
  111. // var workData = grid.getAsJsonArray();
  112. // if( workData.size() > 0 ){
  113. // var data = workData.get(0);
  114. // if( data && data != null ){
  115. // var d = data.get("data");
  116. // if( d && d!=null ){
  117. // var workCompletedId = d.get("workCompletedId");
  118. // if( workCompletedId && workCompletedId != null ){
  119. // workCompletedId = getPureText(workCompletedId.toString());
  120. // return workCompletedId;
  121. // }
  122. // }
  123. // }
  124. // }
  125. // }
  126. // return null;
  127. //}
  128. function getIdo(){
  129. var Random = Java.type("java.util.Random");
  130. var random = new Random();
  131. var result="";
  132. for (var i=0; i< 14; i++){
  133. result += random.nextInt(10);
  134. }
  135. return result;
  136. }
  137. function getXml( data ){
  138. var Date = Java.type( "java.util.Date" );
  139. var now = new Date();
  140. var nowStr = new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(now);
  141. var xml = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';
  142. xml += '<xml>';
  143. xml += '<head>';
  144. xml += '<sign>';
  145. xml += '<service_name>addChannelTask</service_name>';
  146. xml += '<Trans_ido>'+ getIdo() +'</Trans_ido>';
  147. xml += '</sign>';
  148. xml += '</head>';
  149. xml += '<body>';
  150. xml += '<msg>';
  151. xml += '<Task_id>'+ ( data.provinceWorkId || data.cityWorkId || data.countyWorkId || data.branchWorkId ) +'</Task_id>';
  152. xml += '<Sub_task_id>'+data.branchWorkId+'</Sub_task_id>';
  153. xml += '<Task_name>'+data.subject+'</Task_name>';
  154. xml += '<Region_code>'+ data.cityBSSId +'</Region_code>';
  155. xml += '<Group_id>' + data.branchBSSId + '</Group_id>';
  156. xml += '<Task_type>'+data.taskType+'</Task_type>';
  157. xml += '<Task_target></Task_target>';
  158. xml += '<Task_dev_num>'+ data.numberCount +'</Task_dev_num>';
  159. xml += '<prize>'+ (data.reward_branch || data.reward_county || data.reward_city || data.reward) +'</prize>';
  160. xml += '<File_Name>'+ data.File_Name +'</File_Name>';
  161. xml += '<Eff_date>'+ data.taskStartDate.replace(/-/g,'') +'000000</Eff_date>';
  162. xml += '<Exp_date>'+ data.taskEndDate.replace(/-/g,'') +'235959</Exp_date>';
  163. xml += '<Send_time>'+ nowStr +'</Send_time>';
  164. xml += '</msg>';
  165. xml += '</body>';
  166. xml += '</xml>';
  167. printRecorder("请求xml="+xml);
  168. return xml;
  169. }
  170. function sendData( xml ) {
  171. var addr = 'http://130.30.6.38:12007/adapter';
  172. var ArrayList = Java.type('java.util.ArrayList');
  173. var heads = new ArrayList();
  174. var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair');
  175. //var p1 = new NameValuePair('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
  176. var p1 = new NameValuePair('Content-Type', 'text/xml; charset=utf-8');
  177. heads.add(p1);
  178. //var parameters = '&data=' + encodeURIComponent(xml);
  179. var HttpConnectionClass = Java.type('com.x.base.core.project.connection.HttpConnection');
  180. var resp = HttpConnectionClass.postAsString(addr, heads, xml);
  181. //print(resp);
  182. return resp;
  183. }
  184. function getText(root, tag){
  185. var list = root.getElementsByTagName(tag);
  186. if( list == null )return null;
  187. var node = list.item(0);
  188. if( node == null )return null;
  189. return node.getTextContent();
  190. }
  191. function setWorkFlag( workCompletedId, json ){
  192. if( json.Response_code === "0000" ){
  193. resources.getWebservicesClient().jaxrsPut('x_processplatform_assemble_surface', "data/workcompleted/"+workCompletedId+"/interfaceStatus", "syncDone" );
  194. }else{
  195. resources.getWebservicesClient().jaxrsPut('x_processplatform_assemble_surface', "data/workcompleted/"+workCompletedId+"/interfaceStatus2", "syncError" );
  196. }
  197. if( json.Response_desc ){
  198. resources.getWebservicesClient().jaxrsPut('x_processplatform_assemble_surface', "data/workcompleted/"+workCompletedId+"/interfaceResponseDesc", json.Response_desc );
  199. }
  200. printRecorder( "workCompletedId为"+workCompletedId+"的工单设置标志位成功" );
  201. }
  202. function parseResp( xmlStr ){
  203. // var resp = '<?xml version="1.0" encoding="UTF-8"?>';
  204. // resp+='<head>';
  205. // resp+= '<sign>';
  206. // resp+= '<service_name>addChannelTask</service_name>';
  207. // resp+= '<Trans_ido></Trans_ido>';
  208. // resp+= '</sign>';
  209. // resp+='</head>';
  210. // resp+='<body>';
  211. // resp+= '<msg>';
  212. // resp+= '<Response_code>0000</Response_code>';
  213. // resp+= '<Response_desc>success</Response_desc>';
  214. // resp+= '</msg>';
  215. // resp+='</body>';
  216. // printRecorder( "BSS端返回" + resp );
  217. // var title = resp.substr( 0, resp.indexOf('?>')+2 );
  218. // var root = resp.substr( resp.indexOf('?>')+2, resp.length );
  219. // var xmlStr = title + "<root>" + root + "</root>";
  220. //printRecorder( "xmlStr="+xmlStr );
  221. var DocumentBuilderFactory = Java.type('javax.xml.parsers.DocumentBuilderFactory');
  222. var StringReader = Java.type('java.io.StringReader');
  223. var InputSource = Java.type('org.xml.sax.InputSource');
  224. var dbf = DocumentBuilderFactory.newInstance();
  225. var db = dbf.newDocumentBuilder();
  226. var sr = new StringReader(xmlStr);
  227. var is = new InputSource(sr);
  228. var document = db.parse(is);
  229. var root = document.getDocumentElement();
  230. var Response_code = getText(root,"Response_code");
  231. var Response_desc = getText(root,"Response_desc");
  232. printRecorder( "Response_code=" + Response_code );
  233. printRecorder( "Response_desc=" + Response_desc );
  234. return {
  235. "Response_code" : Response_code,
  236. "Response_desc" : Response_desc
  237. }
  238. }
  239. function init(){
  240. var idList = getWorkCompleteIds();
  241. print( "idList="+idList );
  242. if( idList.size() === 0 ){
  243. print("未找到需要同步的工单");
  244. }
  245. for(var i = 0; i<idList.size(); i++){
  246. try{
  247. var id = idList.get(i);
  248. workcompletedid = id;
  249. printRecorder("处理工单,workCompletedId="+id );
  250. var workData = resources.getWebservicesClient().jaxrsGet( "x_processplatform_assemble_surface", "data/workcompleted/"+id );
  251. //printRecorder("workData="+workData);
  252. var data = JSON.parse( workData.toString() );
  253. var xml = getXml( data );
  254. var resp = sendData( xml );
  255. printRecorder( "BSS端返回 " + resp );
  256. var json = parseResp( resp );
  257. setWorkFlag( id, json );
  258. printRecorder( "workCompletedId为"+id+"的工单同步结束" );
  259. printRecorder( "文件URL:/x_desktop/work.html?workcompletedid="+id );
  260. if( pw !==null ){
  261. pw.close();
  262. pw = null
  263. }
  264. if( recordFile != null ){
  265. recordFile = null
  266. }
  267. }catch(e){
  268. e.printStackTrace();
  269. }
  270. }
  271. }
  272. //function init(){
  273. // var id = getWorkCompleteId();
  274. // workcompletedid = id;
  275. // if( id === null ){
  276. // print("未找到需要同步的工单")
  277. // }else{
  278. // printRecorder("找到工单,workCompletedId="+id );
  279. //
  280. // var workData = resources.getWebservicesClient().jaxrsGet( "x_processplatform_assemble_surface", "data/workcompleted/"+id );
  281. // //printRecorder("workData="+workData);
  282. //
  283. // var data = JSON.parse( workData.toString() );
  284. // var xml = getXml( data );
  285. // var resp = sendData( xml );
  286. // printRecorder( "BSS端返回 " + resp );
  287. // var json = parseResp( resp );
  288. // setWorkFlag( id, json );
  289. // printRecorder( "workCompletedId为"+id+"的工单同步结束" );
  290. // printRecorder( "文件URL:/x_desktop/work.html?workcompletedid="+id );
  291. // if( pw !==null )pw.close();
  292. // }
  293. //}
  294. init();