chenjianhua 11 hodín pred
rodič
commit
32685420cb

+ 14 - 6
service-base/src/main/java/com/simuwang/base/common/util/ValuationBusinessUtils.java

@@ -59,11 +59,17 @@ public class ValuationBusinessUtils {
             try {
                 workbook = is2007ExcelFile ? new XSSFWorkbook(inputStream) : new HSSFWorkbook(inputStream);
             } catch (Exception e) {
+                try{
+                    workbook = is2007ExcelFile ? new HSSFWorkbook(inputStream): new XSSFWorkbook(inputStream);
+                }catch (Exception ex){
+                    log.error(ERROR_MSG_NOT_EXCEL_FILE, ex);
+                }
                 log.error("excel first parse error: {}", ExceptionUtil.stacktraceToString(e));
             }
 
             // 非Excel,恶意篡改扩展名
             if (null == workbook) {
+                log.error("解析文件失败,文件格式错误,文件路径为:"+file.getAbsolutePath());
                 error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_EXCEL_FILE);
                 error.setExcelName(valuationNeedParseParam.getOriginFileName());
                 preInfo.setError(error);
@@ -282,12 +288,14 @@ public class ValuationBusinessUtils {
                     }
                     // 校验数值
                     if (excelEntity.isNumerical() && isNotNumber(cellValue)) {
-                        error = preInfo.new Error();
-                        // 注意,row,cell均从0开始
-                        error.setRowNum(rowNum + 1).setCellNum(cellIndex + 1).setMsg(ERROR_MSG_NOT_NUMBER + ":" + cellValue);
-                        error.setExcelName(preInfo.getExcelOriginName());
-                        preInfo.setError(error);
-                        return;
+                        log.error("数值型单元格,存在非数值型数据:"+cellValue+"================================");
+                        cellValue="";
+//                        error = preInfo.new Error();
+//                        // 注意,row,cell均从0开始
+//                        error.setRowNum(rowNum + 1).setCellNum(cellIndex + 1).setMsg(ERROR_MSG_NOT_NUMBER + ":" + cellValue);
+//                        error.setExcelName(preInfo.getExcelOriginName());
+//                        preInfo.setError(error);
+//                        return;
                     }
 
                     List<Method> methodList = getMethods(instance.getClass());

+ 6 - 1
service-base/src/main/java/com/simuwang/base/common/util/ValuationTableParseUtil.java

@@ -168,7 +168,12 @@ public final class ValuationTableParseUtil {
         if (StringUtils.isNotEmpty(subjectName)) {
             if (subjectName.startsWith("-") || Character.isDigit(subjectName.toCharArray()[0])) {
                 //如果科目名称是数字
-                data.setSecuritiesAmount(BigDecimalUtils.toBigDecimal((subjectName.replace("%", "").replace(",", ""))));
+                try{
+                    subjectName = subjectName.trim().replaceAll(" ", "");
+                    data.setSecuritiesAmount(BigDecimalUtils.toBigDecimal((subjectName.replace("%", "").replace(",", ""))));
+                }catch (Exception e){
+                    log.error("数据转换失败:"+subjectName+"===="+e.getMessage(),e);
+                }
                 data.setSecuritiesName(data.getSubjectCode());
             } else {
                 data.setSecuritiesName(data.getSubjectCode() + subjectName);

+ 3 - 3
service-daq/src/main/java/com/simuwang/daq/service/ValuationParseService.java

@@ -210,9 +210,9 @@ public class ValuationParseService {
                 if (StrUtil.isNotBlank(registerNumber) && !ValuationDataUtils.hasChinese(registerNumber, false) && registerNumber.trim().matches("^[a-zA-z].*")) {
                     info.setRegisterNumber(registerNumber);
                 }
-                if (StrUtil.isNotBlank(registerNumber) && !ValuationDataUtils.hasChinese(registerNumber, false)) {
-                    info.setRegisterNumber(registerNumber);
-                }
+//                if (StrUtil.isNotBlank(registerNumber) && !ValuationDataUtils.hasChinese(registerNumber, false) && !registerNumber.contains("-") && !registerNumber.contains(".")) {
+//                    info.setRegisterNumber(registerNumber);
+//                }
                 if (content.contains("估值表") || content.contains("专用表")) {
                     String originRegisterNumber = info.getRegisterNumber();
                     String originFundName = info.getFundName();