diff --git a/com.actionsoft.apps.coe.pal.datamigration/lib/com.actionsoft.apps.coe.pal.datamigration.jar b/com.actionsoft.apps.coe.pal.datamigration/lib/com.actionsoft.apps.coe.pal.datamigration.jar index 2db9a531..279724b8 100644 Binary files a/com.actionsoft.apps.coe.pal.datamigration/lib/com.actionsoft.apps.coe.pal.datamigration.jar and b/com.actionsoft.apps.coe.pal.datamigration/lib/com.actionsoft.apps.coe.pal.datamigration.jar differ diff --git a/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordLogUtil.java b/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordLogUtil.java index 5311e8bd..d79e8d21 100644 --- a/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordLogUtil.java +++ b/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordLogUtil.java @@ -3,6 +3,7 @@ package com.actionsoft.apps.coe.pal.datamigration.util; import com.actionsoft.apps.coe.pal.datamigration.aris.constant.ArisConstant; import com.actionsoft.apps.coe.pal.datamigration.constant.Constant; import com.actionsoft.apps.coe.pal.datamigration.log.cache.LogRealTimeCountCache; +import com.actionsoft.apps.coe.pal.datamigration.log.dao.LogDao; import com.actionsoft.apps.coe.pal.datamigration.log.model.LogModel; import com.actionsoft.apps.resource.plugin.profile.DCPluginProfile; import com.actionsoft.bpms.server.UserContext; @@ -31,7 +32,7 @@ public class WordLogUtil { public WordLogUtil(UserContext _uc){ this.uc = _uc; logId = UUIDGener.getUUID();// 记录缓存 - String fileValue = "AttrtibuteImported-" + new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()) + "=" + _uc.getUID(); + String fileValue = "AttrtibuteImported-" + new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()) + "--" + _uc.getUID(); // 创建dc目录 DCPluginProfile dcProfile = DCProfileManager.getDCProfile(Constant.APP_ID, Constant.UPFILE); DCContext dc = new DCContext(_uc, dcProfile, Constant.APP_ID, "log", fileValue); @@ -142,6 +143,32 @@ public class WordLogUtil { } + /** + * 更新日志(日志操作行为,非具体日志信息) + * @param id + * @param endDate 结束时间 + * @param resultType 结果状态 + * @param mainInfo 主要信息 + * @return + */ + public int updateLog(Timestamp endDate, int resultType, String mainInfo) { + return new LogDao().update(logId, endDate, resultType, mainInfo); + } + + public String takeTime(long startTime,long endTime) { + long time = endTime - startTime; + String timeMsg = ""; + if (time > 1000 * 60) { + timeMsg = "[" + (time / 1000 / 60) + "]分钟"; + } else if (time > 1000) { + timeMsg = "[" + (time / 1000) + "]秒"; + } else { + timeMsg = "[" + time + "]毫秒"; + } + return timeMsg; + } + + diff --git a/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordUtil.java b/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordUtil.java index 555225f4..37c08395 100644 --- a/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordUtil.java +++ b/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/util/WordUtil.java @@ -12,6 +12,7 @@ import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.*; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.util.*; @@ -72,64 +73,56 @@ public class WordUtil { public WordUtil() { } - public boolean analysisWordTable(String filePath){ - try { - HWPFDocument doc = new HWPFDocument(new FileInputStream(filePath)); - Range range = doc.getRange(); - - for (int i =0;i(this.fileNo)); - } - - //获取文件名称 - if (this.isTitle(paragraph)){ - this.fileName += text.trim(); - } - - if (this.isOldVersion){ - //旧版本文档 - AnalysisStrategyContext strategyContext = new AnalysisStrategyContext(); - if (this.isTitle(paragraph)){ - //文件标题下解析后续table - AnalysisStrategy titleField = strategyContext.getStrategy("VerticalFeild"); - Map> analysis = titleField.analysis(doc, i); - fileFieldMap.putAll(analysis); - } - WordAttribute wordAttribute = oldWordAttributeMap.get(text.trim()); - if (null == wordAttribute){ - continue; - } - AnalysisStrategy strategy = strategyContext.getStrategy(wordAttribute.getType()); - Map> analysis = strategy.analysis(doc, i); - fileFieldMap.putAll(analysis); - }else { - WordAttribute wordAttribute = wordAttributeMap.get(text.trim()); - if (null == wordAttribute){ - continue; - } - AnalysisStrategy strategy = new AnalysisStrategyContext().getStrategy(wordAttribute.getType()); - Map> analysis = strategy.analysis(doc,i); - fileFieldMap.putAll(analysis); - } + public void analysisWordTable(String filePath) throws IOException ,RuntimeException { + HWPFDocument doc = new HWPFDocument(new FileInputStream(filePath)); + Range range = doc.getRange(); + for (int i =0;i(this.fileNo)); + } - return true; + //获取文件名称 + if (this.isTitle(paragraph)){ + this.fileName += text.trim(); + } + + if (this.isOldVersion){ + //旧版本文档 + AnalysisStrategyContext strategyContext = new AnalysisStrategyContext(); + if (this.isTitle(paragraph)){ + //文件标题下解析后续table + AnalysisStrategy titleField = strategyContext.getStrategy("VerticalFeild"); + Map> analysis = titleField.analysis(doc, i); + fileFieldMap.putAll(analysis); + } + WordAttribute wordAttribute = oldWordAttributeMap.get(text.trim()); + if (null == wordAttribute){ + continue; + } + AnalysisStrategy strategy = strategyContext.getStrategy(wordAttribute.getType()); + Map> analysis = strategy.analysis(doc, i); + fileFieldMap.putAll(analysis); + }else { + WordAttribute wordAttribute = wordAttributeMap.get(text.trim()); + if (null == wordAttribute){ + continue; + } + AnalysisStrategy strategy = new AnalysisStrategyContext().getStrategy(wordAttribute.getType()); + Map> analysis = strategy.analysis(doc,i); + fileFieldMap.putAll(analysis); + } + + } } private String getFileNo(String text){ diff --git a/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/web/DataMigrationWeb.java b/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/web/DataMigrationWeb.java index f62de77b..3385c90a 100644 --- a/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/web/DataMigrationWeb.java +++ b/com.actionsoft.apps.coe.pal.datamigration/src/com/actionsoft/apps/coe/pal/datamigration/web/DataMigrationWeb.java @@ -140,8 +140,8 @@ public class DataMigrationWeb extends ActionWeb { String fileName = ""; for (int i = 0; i < fileArr.length; i++) { File file = fileArr[i]; - fileName = StringUtils.isEmpty(fileName) ? fileName + file.getName() : ","+ fileName + file.getName(); - if (i>=3){ + fileName = StringUtils.isEmpty(fileName) ? fileName + file.getName() : fileName + ","+ file.getName(); + if (i>=2){ fileName += "等"; break; } @@ -169,21 +169,32 @@ public class DataMigrationWeb extends ActionWeb { return ResponseObject.newErrResponse("资产库不存在或已停用").toString(); } - new Thread(new Runnable() { - @Override - public void run() { - for (File file : fileArr) { - wordLogUtil.appendAllLog("\n[信息]流程属性Word文件:" + file.getName()); - wordLogUtil.appendAllLog("[信息]流程属性Word文件路径:"+ file.getPath()); - wordLogUtil.appendAllLog("-----------流程属性Word文件 Begin " + UtilDate.datetimeFormat(startTime)); - ResponseObject res = new DataMigrationWeb().analysisWord(wsId, file.getPath(), wordLogUtil); - if (res.isErr()){ - wordLogUtil.appendAllAndErrorLog(Constant.LOG_ERROR + "word文件--"+file.getName()+" 解析异常:"+res.getMsg()+" 中断解析\n"); - } - if (res.isOk()){ - wordLogUtil.appendAllAndInfoLog(Constant.LOG_END+ "word文件--"+file.getName()+" :"+res.getMsg()+"\n"); - } + new Thread(()->{ + int success = 0; + int error = 0; + for (File file : fileArr) { + wordLogUtil.appendAllLog("\n[信息]流程属性Word文件:" + file.getName()); + wordLogUtil.appendAllLog("[信息]流程属性Word文件路径:"+ file.getPath()); + wordLogUtil.appendAllLog("-----------流程属性Word文件 Begin " + UtilDate.datetimeFormat(startTime)); + ResponseObject res = new DataMigrationWeb().analysisWord(wsId, file.getPath(), wordLogUtil); + if (res.isErr()){ + error++; + wordLogUtil.appendAllAndErrorLog(Constant.LOG_ERROR + "word文件--"+file.getName()+" 解析异常:"+res.getMsg()+" ,中断解析\n"); } + if (res.isOk()){ + success++; + wordLogUtil.appendAllAndInfoLog(Constant.LOG_END+ "word文件--"+file.getName()+" :"+res.getMsg()+"\n"); + } + } + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + if (success > 0){ + String resultMsg = "批量导入成功:总耗时" + wordLogUtil.takeTime(startTime.getTime(),endTime.getTime()) + ",总计文档["+fileArr.length+"]条,导入成功[" + success + "]条,导入失败[" + error + "]条"; + wordLogUtil.updateLog(new Timestamp(System.currentTimeMillis()), Constant.LOG_RESULT_StATUS_SUCCESS, resultMsg); + wordLogUtil.appendAllAndInfoLog(resultMsg); + }else { + String resultMsg = "批量导入失败:总耗时" + wordLogUtil.takeTime(startTime.getTime(),endTime.getTime()) + ",总计文档["+fileArr.length+"]条,导入成功[" + success + "]条,导入失败[" + error + "]条"; + wordLogUtil.updateLog(new Timestamp(System.currentTimeMillis()), Constant.LOG_RESULT_StATUS_ERROR, resultMsg); + wordLogUtil.appendAllAndInfoLog(resultMsg); } }).start(); @@ -418,9 +429,12 @@ public class DataMigrationWeb extends ActionWeb { private ResponseObject analysisWord(String wsId,String filePath,WordLogUtil logUtil){ //解析Word文档 WordUtil wordUtil = new WordUtil(); - boolean analysisFlag = wordUtil.analysisWordTable(filePath); - if (!analysisFlag) { - return ResponseObject.newErrResponse("文件解析异常"); + try { + wordUtil.analysisWordTable(filePath); + } catch (IOException e) { + return ResponseObject.newErrResponse("word 文件解析异常: "+e.getMessage()); + } catch (RuntimeException e){ + return ResponseObject.newErrResponse("word 文件解析异常: "+e.getMessage()); } //获取解析后的文件名称,同名策略匹配pal寻找对应文件