diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java index a3fdd787..53043a1e 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java @@ -68,9 +68,9 @@ public class exportWkExcel { @ApiOperation(value = "|SarFileSplitItemsEO|导入") @PostMapping(value = "/importData") - public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + public ResponseMessage importSplitItemsZip(@RequestParam(value = "importFileId", required = false) String importFileId) throws Exception { StringBuilder stringBuilder=new StringBuilder(); - List res=exportService.delWithWkData(file,stringBuilder); + List res=exportService.delWithWkData(importFileId,stringBuilder); if(null==res){ return Result.error("-1","","请严格按照模板上传文件"); }else if (stringBuilder.toString().length()>0){ diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java index cec1c948..4bde425f 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java @@ -7,6 +7,6 @@ import java.util.List; public interface IExportService { - List delWithWkData(MultipartFile file ,StringBuilder stringBuilder) throws Exception; + List delWithWkData(String importFileId ,StringBuilder stringBuilder) throws Exception; } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java index ec192cf0..f4a3f745 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java @@ -1,5 +1,7 @@ package com.adc.da.slrs.processModel.service.impl; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; import com.adc.da.slrs.processModel.entity.importExcelDTO; import com.adc.da.slrs.processModel.service.IExportService; import com.adc.da.slrs.processModel.utils.DateUtil; @@ -15,9 +17,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -38,87 +42,108 @@ public class IExportServiceImpl implements IExportService { private TsUserServiceImpl tsUserService; + @Autowired + private IAttFileEOService attFileEOService; + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @Override - public List delWithWkData(MultipartFile file ,StringBuilder stringBuilder) throws Exception { + public List delWithWkData(String importFileId ,StringBuilder stringBuilder) throws Exception { -// //获取数据字典数据 + AttFileEO fileInfo = attFileEOService.getFileInfo(importFileId); + if(fileInfo!=null){ + //文件 + String importFilePath = filePath+fileInfo.getFilePath()+fileInfo.getFileName(); + File importFile = new File(importFilePath); + if(!importFile.exists()){ + return null; + } + // //获取数据字典数据 // Map dicTypeEO = dicTypeEOService.getDicTypeListCode(); - //获取机构数据 - QueryWrapper wrapper=new QueryWrapper<>(); - wrapper.select("id","name"); - List tsInstitutions=tsInstitutionService.list(wrapper); - //获取人员数据 - QueryWrapper tsUserQueryWrapper=new QueryWrapper<>(); - tsUserQueryWrapper.select("ACCOUNT","UNAME"); - tsUserQueryWrapper.eq("VALID_FLAG","0"); - List tsUsers=tsUserService.list(tsUserQueryWrapper); + //获取机构数据 + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.select("id","name"); + List tsInstitutions=tsInstitutionService.list(wrapper); + //获取人员数据 + QueryWrapper tsUserQueryWrapper=new QueryWrapper<>(); + tsUserQueryWrapper.select("ACCOUNT","UNAME"); + tsUserQueryWrapper.eq("VALID_FLAG","0"); + List tsUsers=tsUserService.list(tsUserQueryWrapper); - //获取institution工具集合 - Map tsInstitutionMap=new HashMap<>(); - tsInstitutions.forEach(tsInstitution -> { - tsInstitutionMap.put(tsInstitution.getName(),tsInstitution.getId()); - }); - //获取user工具集合 - Map tsUserMap=new HashMap<>(); - tsUsers.forEach(tsUser -> { - tsUserMap.put(tsUser.getAccount(),tsUser.getUname()); - }); - List res= ExcelImportUtilByWk.readExcelpublic(importExcelDTO.class,file,stringBuilder); - if (null!=res) { - DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); - int i = 1; - for (importExcelDTO importExcelDTO : res) { - if (null != importExcelDTO.getWgLeader() && !"".equals(importExcelDTO.getWgLeader())) { - importExcelDTO.setWgLeaderName(tsUserMap.get(importExcelDTO.getWgLeader())+"("+importExcelDTO.getWgLeader()+")"); - if (null == tsUserMap.get(importExcelDTO.getWgLeader())) { - stringBuilder.append("第" + i + "行第7列工作组组长填写不符合格式要求请检查;"); + //获取institution工具集合 + Map tsInstitutionMap=new HashMap<>(); + tsInstitutions.forEach(tsInstitution -> { + tsInstitutionMap.put(tsInstitution.getName(),tsInstitution.getId()); + }); + //获取user工具集合 + Map tsUserMap=new HashMap<>(); + tsUsers.forEach(tsUser -> { + tsUserMap.put(tsUser.getAccount(),tsUser.getUname()); + }); + List res= ExcelImportUtilByWk.readExcelpublic(importExcelDTO.class,importFile,stringBuilder); + if (null!=res) { + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i = 1; + for (importExcelDTO importExcelDTO : res) { + if (null != importExcelDTO.getWgLeader() && !"".equals(importExcelDTO.getWgLeader())) { + importExcelDTO.setWgLeaderName(tsUserMap.get(importExcelDTO.getWgLeader())+"("+importExcelDTO.getWgLeader()+")"); + if (null == tsUserMap.get(importExcelDTO.getWgLeader())) { + stringBuilder.append("第" + i + "行第7列工作组组长填写不符合格式要求请检查;"); + } } - } - if (null != importExcelDTO.getUnitName() && !"".equals(importExcelDTO.getUnitName())) { - importExcelDTO.setUnit(tsInstitutionMap.get(importExcelDTO.getUnitName())); - if (null == tsInstitutionMap.get(importExcelDTO.getUnitName())) { - stringBuilder.append("第" + i + "行第4列起草责任单位填写不符合格式要求请检查;"); + if (null != importExcelDTO.getUnitName() && !"".equals(importExcelDTO.getUnitName())) { + importExcelDTO.setUnit(tsInstitutionMap.get(importExcelDTO.getUnitName())); + if (null == tsInstitutionMap.get(importExcelDTO.getUnitName())) { + stringBuilder.append("第" + i + "行第4列起草责任单位填写不符合格式要求请检查;"); + } } - } - if (null != importExcelDTO.getDrafter() && !"".equals(importExcelDTO.getDrafter())) { - importExcelDTO.setDrafterName(tsUserMap.get(importExcelDTO.getDrafter())+"("+importExcelDTO.getDrafter()+")"); - if (null == tsUserMap.get(importExcelDTO.getDrafter())) { - stringBuilder.append("第" + i + "行第5列起草人填写不符合格式要求请检查;"); + if (null != importExcelDTO.getDrafter() && !"".equals(importExcelDTO.getDrafter())) { + importExcelDTO.setDrafterName(tsUserMap.get(importExcelDTO.getDrafter())+"("+importExcelDTO.getDrafter()+")"); + if (null == tsUserMap.get(importExcelDTO.getDrafter())) { + stringBuilder.append("第" + i + "行第5列起草人填写不符合格式要求请检查;"); + } } - } - if (null != importExcelDTO.getResPerson() && !"".equals(importExcelDTO.getResPerson())) { - importExcelDTO.setResPersonName(tsUserMap.get(importExcelDTO.getResPerson())+"("+importExcelDTO.getResPerson()+")"); - if (null == tsUserMap.get(importExcelDTO.getResPerson())) { - stringBuilder.append("第" + i + "行第6列评审责任人填写不符合格式要求请检查;"); + if (null != importExcelDTO.getResPerson() && !"".equals(importExcelDTO.getResPerson())) { + importExcelDTO.setResPersonName(tsUserMap.get(importExcelDTO.getResPerson())+"("+importExcelDTO.getResPerson()+")"); + if (null == tsUserMap.get(importExcelDTO.getResPerson())) { + stringBuilder.append("第" + i + "行第6列评审责任人填写不符合格式要求请检查;"); + } } - } - try { - if (null != importExcelDTO.getEndTime() && !"".equals(importExcelDTO.getEndTime())) { - importExcelDTO.setEndTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getEndTime())))); + try { + if (null != importExcelDTO.getEndTime() && !"".equals(importExcelDTO.getEndTime())) { + importExcelDTO.setEndTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getEndTime())))); + } + } catch (Exception e) { + stringBuilder.append("第" + i + "行第10列立项完成时间填写不符合格式要求请检查;"); } - } catch (Exception e) { - stringBuilder.append("第" + i + "行第10列立项完成时间填写不符合格式要求请检查;"); - } - try { - if (null != importExcelDTO.getReleaseTime() && !"".equals(importExcelDTO.getReleaseTime())) { - importExcelDTO.setReleaseTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getReleaseTime())))); + try { + if (null != importExcelDTO.getReleaseTime() && !"".equals(importExcelDTO.getReleaseTime())) { + importExcelDTO.setReleaseTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getReleaseTime())))); + } + } catch (Exception e) { + stringBuilder.append("第" + i + "行第9列计划标准发布时间填写不符合格式要求请检查;"); } - } catch (Exception e) { - stringBuilder.append("第" + i + "行第9列计划标准发布时间填写不符合格式要求请检查;"); - } - try { - if (null != importExcelDTO.getDraftTime() && !"".equals(importExcelDTO.getDraftTime())) { - importExcelDTO.setDraftTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getDraftTime())))); + try { + if (null != importExcelDTO.getDraftTime() && !"".equals(importExcelDTO.getDraftTime())) { + importExcelDTO.setDraftTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getDraftTime())))); + } + } catch (Exception e) { + stringBuilder.append("第" + i + "行第8列计划初稿完成日期填写不符合格式要求请检查;"); } - } catch (Exception e) { - stringBuilder.append("第" + i + "行第8列计划初稿完成日期填写不符合格式要求请检查;"); + i++; } - i++; + + return res; + }else { + return null; } - - return res; - }else { + }else{ return null; } + + + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/ExcelImportUtilByWk.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/ExcelImportUtilByWk.java index 19517039..54d8b8fe 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/ExcelImportUtilByWk.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/ExcelImportUtilByWk.java @@ -15,6 +15,8 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; @@ -146,6 +148,123 @@ public class ExcelImportUtilByWk { } } + /** + * 读取Excel文件内容 + * @param file 上传的Excel文件 + * @return 读取结果列表,读取失败时返回null + */ + public static List readExcelpublic(Class tClass, File file, StringBuilder stringBuilder) { + + Workbook workbook = null; + InputStream is = null; + try { + // 获取Excel后缀名 + String fileName = file.getName(); + if (fileName == null || fileName.isEmpty() || fileName.lastIndexOf(".") < 0) { + log.warn("解析Excel失败,因为获取到的Excel文件名非法!"); + return null; + } + String fileType = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); + is = new FileInputStream(file); + // 获取Excel工作簿 + workbook = getWorkbook(is, fileType); + + //不同需求条件下可以 在此处修改 来获取不同的对象 + List resultDataList = new ArrayList<>(); + + // 解析sheet + for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { + Sheet sheet = workbook.getSheetAt(sheetNum); + if(!"hidden".equals(sheet.getSheetName())) { + // 校验sheet是否合法 + if (sheet == null) { + continue; + } + + // 获取第一行数据 + int firstRowNum = sheet.getFirstRowNum(); + Row firstRow = sheet.getRow(firstRowNum); + if (null == firstRow) { + log.warn("解析Excel失败,在第一行没有读取到任何数据!"); + } + + // 解析每一行的数据,构造数据对象 + int rowStart = firstRowNum + 1; + int rowEnd = sheet.getPhysicalNumberOfRows(); + + Map map=new HashMap<>(); + Map mapExcel=new HashMap<>(); + Field[] fields=tClass.getDeclaredFields(); + for (Field field:fields) { + field.setAccessible(true); + Excel excel=field.getAnnotation(Excel.class); + if (null!=excel) { + map.put(Integer.valueOf(excel.orderNum()), field); + mapExcel.put(Integer.valueOf(excel.orderNum()), excel); + } + } + Row headRow=sheet.getRow(firstRowNum); + for (int j=0;j