ImportUnitFormExcel.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  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 Config = {
  11. interfaceUrl : "http://ahpp.zoneland.net:20030/x_program_center/jaxrs/invoke/unitAsync/execute",
  12. localPath : File.separator + "data" + File.separator + "ImportUnitFromExcel" + File.separator,
  13. recordLocalPath : File.separator+'data'+ File.separator + "ImportUnitFromExcelRecord" + File.separator
  14. };
  15. var Utils = {
  16. parseResp : function( resp ){
  17. if( !resp || resp === null ){
  18. return {
  19. "type": "error",
  20. message : "服务响应是null,需要管理员查看后台日志"
  21. }
  22. }else{
  23. var json = JSON.parse( resp.toString() );
  24. return json;
  25. }
  26. },
  27. getFailText : function( json ){
  28. //{
  29. // "type": "error",
  30. // "message": "手机号错误:15268803358, 手机号已有值重复.",
  31. // "date": "2018-08-05 02:51:35",
  32. // "spent": 5,
  33. // "size": -1,
  34. // "count": 0,
  35. // "position": 0,
  36. // "prompt": "com.x.organization.assemble.control.jaxrs.person.ExceptionMobileDuplicate"
  37. //}
  38. var text;
  39. if( json.message ){
  40. text = json.message + ( json.prompt ? "("+json.prompt + ")" : "" );
  41. }else if( json.prompt ){
  42. text = json.prompt;
  43. }else{
  44. text = "未知异常";
  45. }
  46. print(text);
  47. return text;
  48. }
  49. };
  50. function getFileList(){
  51. var path = Config.localPath;
  52. var file = new File(path );
  53. var ArrayList = Java.type('java.util.ArrayList');
  54. var wjList = new ArrayList();
  55. if (file.exists()) {
  56. var fileList = file.listFiles();
  57. for (var i = 0; i < fileList.length; i++) {
  58. if (fileList[i].isFile()) {//判断是否为文件
  59. print( fileList[i].getName() );
  60. var name = fileList[i].getName().split(".");
  61. if( name[ name.length - 1 ].equals("xls") ){
  62. wjList.add(fileList[i]);
  63. }
  64. }
  65. }
  66. }else{
  67. print("目录不存在:"+path);
  68. }
  69. return wjList;
  70. }
  71. function importExcel( file ) {
  72. var FileInputStream = Java.type('java.io.FileInputStream');
  73. // var InputStreamReader = Java.type('java.io.InputStreamReader');
  74. //var BufferedReader = Java.type('java.io.BufferedReader');
  75. //var FileReader = Java.type('java.io.FileReader');
  76. var errorMsg = "";
  77. var inStream = null;
  78. try {
  79. //inStream = new InputStreamReader(new FileInputStream(file), "GBK");
  80. inStream = new FileInputStream(file);
  81. var workBook = null;
  82. try {
  83. var fileName = file.getName();
  84. if (fileName.endsWith(".xls")) { // 97-03
  85. var HSSFWorkbook = Java.type('org.apache.poi.hssf.usermodel.HSSFWorkbook');
  86. workBook = new HSSFWorkbook(inStream);
  87. } else if (fileName.endsWith(".xlsx")) { // 2007
  88. var XSSFWorkbook = Java.type('org.apache.poi.hssf.usermodel.XSSFWorkbook');
  89. workBook = new XSSFWorkbook(inStream);
  90. } else {
  91. errorMsg = "不支持的文件类型!";
  92. print(errorMsg);
  93. return false;
  94. }
  95. } catch ( e) {
  96. errorMsg = "解析Excel文件出错!";
  97. print(errorMsg);
  98. e.printStackTrace();
  99. return false;
  100. } finally {
  101. inStream.close();
  102. }
  103. if( errorMsg.length === 0 ) {
  104. var sheets = null !== workBook ? workBook.getNumberOfSheets() : 0;
  105. var sheet = workBook.getSheetAt(0); // 读取第一个sheet
  106. var rows = sheet.getPhysicalNumberOfRows(); // 获得行数
  107. if (rows > 1) { // 第一行默认为标题
  108. // sheet.getMargin(HSSFSheet.TopMargin);
  109. for (var j = 1; j < rows; j++) {
  110. print("正在执行导入第"+j+"行");
  111. var row = sheet.getRow(j);
  112. var cells = row.getLastCellNum();// 获得列数
  113. if (cells > 0) {
  114. errorMsg = importRow( row , cells);
  115. if( errorMsg !== "" )return false;
  116. }
  117. }
  118. } else {
  119. errorMsg = "EXCEL没有数据,请确定。";
  120. }
  121. }
  122. if( errorMsg.length() > 0 ) {
  123. print("错误消息:" + errorMsg);
  124. return false;
  125. }else {
  126. print( file.getName()+"导入成功!");
  127. return true;
  128. }
  129. } catch (ex) {
  130. ex.printStackTrace();
  131. return false;
  132. }
  133. }
  134. var Cell = Java.type("org.apache.poi.ss.usermodel.Cell");
  135. function importRow( row, cells ){
  136. var json = {
  137. "action" : "add",
  138. "attributeList" : []
  139. };
  140. print( "cells = " + cells );
  141. for (var k = 0; k < cells; k++) {
  142. var value = "";
  143. var cell = row.getCell(k);
  144. if( cell !== null ) {
  145. cell.setCellType(Cell.CELL_TYPE_STRING); // 全部置成String类型的单元格
  146. value = cell.getStringCellValue().trim();
  147. }
  148. var flag = true;
  149. switch( k ) {
  150. case 1:
  151. if( value.substr(0, 2) != "00" ){
  152. value = "00"+value;
  153. }
  154. json.unique = value;
  155. //json.shortName = value;
  156. break;
  157. case 4 :
  158. json.typeList = [value.toLowerCase()];
  159. break;
  160. case 5:
  161. json.name = value;
  162. break;
  163. case 6:
  164. var attr = {
  165. name:"displayName",
  166. value: value
  167. };
  168. json.attributeList.push(attr);
  169. break;
  170. case 7:
  171. json.description = value;
  172. break;
  173. case 9:
  174. json.orderNumber = value;
  175. break;
  176. case 10:
  177. if( value !== "0" ){
  178. if( value.substr(0, 2) != "00" ){
  179. value = "00"+value;
  180. }
  181. json.superior = value;
  182. }
  183. break;
  184. case 12:
  185. if( value.toLowerCase() !== "active" )flag = false;
  186. break;
  187. case 18:
  188. var attr = {
  189. name:"postalcode",
  190. value: value
  191. };
  192. json.attributeList.push(attr);
  193. break;
  194. }
  195. if( !flag )return "";
  196. }
  197. if( !json.unique || json.unique == "0")return "";
  198. return sendRequest( json );
  199. }
  200. function sendRequest( body ){
  201. var errorText = "";
  202. try{
  203. if( typeof( body ) == "string" )body = JSON.parse(bodyStr);
  204. body.saveFlag = "no";
  205. var resp = com.x.base.core.project.connection.CipherConnectionAction.post(false,Config.interfaceUrl,JSON.stringify(body));
  206. // print("resend person resp="+resp);
  207. var response = Utils.parseResp( resp );
  208. // print("resend person response="+JSON.stringify(response));
  209. if( response.type && response.type == "success" && response.data && response.data.value && response.data.value.result && response.data.value.result == "success" ){
  210. }else{
  211. errorText = Utils.getFailText( response );
  212. }
  213. }catch(e){
  214. errorText= e.printStackTrace();
  215. }finally{
  216. print("resend person errorText="+errorText);
  217. return errorText;
  218. }
  219. }
  220. function init(){
  221. var fileList = getFileList();
  222. for(var i = 0; i<fileList.size(); i++){
  223. try{
  224. var file = fileList.get(i);
  225. if( importExcel( file ) ){
  226. print( "正在修改文件目录:"+file.getName() );
  227. var newFilePath = Config.recordLocalPath + file.getName();
  228. if (file.renameTo(new File( newFilePath ))) {
  229. //println("File is moved successful!");
  230. print( "文件移动到了:"+newFilePath );
  231. } else {
  232. print( file.getName() + " is failed to move!");
  233. }
  234. }
  235. }catch( e ){
  236. e.printStackTrace();
  237. }
  238. }
  239. }
  240. init();