From 4e8bba5acbdfdc458799b6a4cb619da817a7514d Mon Sep 17 00:00:00 2001 From: gaojiabao Date: Mon, 10 Apr 2023 13:53:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=9B=9E=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java | 2 ++ .../service/impl/SarBussionessStandServiceImpl.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java index a8be5802..798cd575 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java @@ -75,6 +75,8 @@ public class SarBussStandAttrInfo extends BaseEntity { @ApiModelProperty(value = "原文件") @TableField("FBGBUSS") private String fbgbuss; + + private String fbgbussNmae; // // @TableField("SVPPS") // private String svpps; diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index bbe40c0f..ddf01dd5 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -274,6 +274,8 @@ public class SarBussionessStandServiceImpl extends ServiceImpl Date: Mon, 10 Apr 2023 14:06:05 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SarBussionessStandServiceImpl.java | 2 +- .../controller/SarStandItemsController.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index ddf01dd5..ff260176 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -4435,7 +4435,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl * 前端控制器 @@ -36,6 +54,12 @@ public class SarStandItemsController extends BaseController { @Autowired private SarStandItemsServiceImpl ServiceImpl; + @Autowired + private SarFileSplitItemsEOService sarFileSplitItemsEOService; + + @Value("${file.path}") + private String filePath; + @ApiOperation(value = "分解单查询") @GetMapping("/findAllItems") public ResponseMessage findAllItems( @RequestParam("type") String type,@RequestParam("ids") String ids){ @@ -152,4 +176,6 @@ public class SarStandItemsController extends BaseController { List ItemDto = ServiceImpl.findTermsConditions(idList); return Result.success("200",ItemDto); } + + } From f06df78deffd65f22e6c3c7cd94ee22943bb9e28 Mon Sep 17 00:00:00 2001 From: gaojiabao Date: Mon, 10 Apr 2023 14:32:01 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8D=95=E4=B8=AA=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SarFileSplitItemsEOController.java | 131 +++++++++- .../service/SarFileSplitItemsEOService.java | 3 + .../impl/SarFileSplitItemsEOServiceImpl.java | 229 ++++++++++++++++++ 3 files changed, 362 insertions(+), 1 deletion(-) diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java index d605b272..c22a637a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java @@ -85,7 +85,7 @@ public class SarFileSplitItemsEOController extends BaseController> page(SarFileSplitItemsEOPage page) throws Exception { //6-18 端哥已做修改 - sarFileSplitItemsEOService.selectByName(page.getItemsName()); + //sarFileSplitItemsEOService.selectByName(page.getItemsName()); Map map = sarFileSplitItemsEOService.getByPage(page); page.getPager().setRowCount((Integer) map.get("count")); return Result.success(getPageInfo(page.getPager(), (List) map.get("list"))); @@ -509,6 +509,7 @@ public class SarFileSplitItemsEOController extends BaseController importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file, @@ -694,4 +695,132 @@ public class SarFileSplitItemsEOController extends BaseController importSplitItemsInfoZip(@RequestParam(value = "file", required = false) MultipartFile file, + SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception { + //验证文件名是否合格 + /* 截取后缀名 */ + sarFileSplitInfoEO.setFileName(file.getOriginalFilename()); + int pos = file.getOriginalFilename().lastIndexOf("."); + String str = file.getOriginalFilename().substring(pos+1).toLowerCase(); + String filenameorg = file.getOriginalFilename().substring(0,pos); + //判断上传文件必须是zip + if (!str.equals("zip")) { + return com.adc.da.util.http.Result.error("fail", "请上传zip文件"); + } + String path = filePath + "/modal/"+filenameorg; + File saveDirectory = new File(path); + if(!saveDirectory.isDirectory()){ + saveDirectory.mkdir(); + } + FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path +"/"+ file.getOriginalFilename())); + try{ + //解压缩 + String zipEntryName = FileUnZip.unZipFiles(path +"/"+ file.getOriginalFilename(),path); + // 数据相关处理, + // 1.获取其中的Excel, + List excelfilelist = FileUnZip.readExcelFile(zipEntryName); + if(excelfilelist.size()<1){ + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", "压缩包内没有上传Excel数据"); + } else if (excelfilelist.size()>1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", "压缩包内有多个Excel数据源"); + } + File excelfile = excelfilelist.get(0); + // 导入参数设置,默认即可 + ImportParams params = new ImportParams(); + try { + String fields[] = {"条款号", "条款名称","条款内容"}; + params.setImportFields(fields); + // params.setReadSingleCell(false); + List result = new ArrayList<>(); + result = ExcelImportUtil.importExcel(excelfile, SarFileSplitItemsImportDto.class, params); + Long getExcelInfo = System.currentTimeMillis(); + //excel读取到的数据 + List datas = result; + if(datas!=null &&!datas.isEmpty()){ + try { + //获取全部sheet页中表格 + Workbook workbook = WorkbookFactory.create(new FileInputStream(excelfile)); + //XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(excelfile)); + Sheet sheet=null; + List getSheetTableList = new ArrayList(); + for (int i = 1; i < workbook.getNumberOfSheets(); i++) {//获取每个Sheet表 + sheet = workbook.getSheetAt(i); + SplitTableInfo splitTableInfo = new SplitTableInfo(); + splitTableInfo.setTableName(sheet.getSheetName()); + String tableHtml = POIReadExcelToHtml.readExcelToHtml(workbook,i,false); + splitTableInfo.setTableHtml(tableHtml); + getSheetTableList.add(splitTableInfo); + } + int i = 0 ; + List datasUpdate = new ArrayList<>(); + //2019.05.14 当读取exceL出现空行过多时,空行数为20以上时中断读取,将数据清洗为新的list + for(SarFileSplitItemsImportDto sarStandImportDto :datas){ + if(i>20){ + break; + } + //判断此行数据是否全部为空 + if(checkObjAllFieldsIsNull(sarStandImportDto)){ + i++; + //是则不读取 + continue; + } + //判断此行数据是否全部为空 + if(org.apache.commons.lang.StringUtils.isNotBlank(sarStandImportDto.getItemsNum())) { + if (sarStandImportDto.getItemsNum().contains("模板说明")) { + i++; + //是则不读取 + continue; + } + } + //添加换行 +// if(StringUtils.isBlank(sarStandImportDto.getItemsNum()) && StringUtils.isBlank(sarStandImportDto.getItemsName())) { +// if(StringUtils.isNotBlank(sarStandImportDto.getItermsConditions())){ +// sarStandImportDto.setItermsConditions("

"+sarStandImportDto.getItermsConditions()); +// } +// } + i = 0; + + datasUpdate.add(sarStandImportDto); + } + String unzipfilepath = zipEntryName; + com.adc.da.util.http.ResponseMessage message = sarFileSplitItemsEOService.importSplitItemsInfo + (datasUpdate,unzipfilepath,sarFileSplitInfoEO,getSheetTableList); + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return message; + } catch (Exception e) { + e.printStackTrace(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", e.getMessage()); + } + }else{ + + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", "没有可导入的数据,请检查!"); + } + } catch (NoSuchElementException e){ + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", "没有可导入的数据,请检查!"); + } catch (Exception e) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + } catch (Exception e) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return com.adc.da.util.http.Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java index aa3a9f2d..b19e2cac 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java @@ -50,4 +50,7 @@ public interface SarFileSplitItemsEOService { List queryByList2(SarFileSplitItemsEOPage page); void selectByName(String itemsName); + + ResponseMessage importSplitItemsInfo(List datasUpdate, String unzipfilepath, SarFileSplitInfoEO sarFileSplitInfoEO, List getSheetTableList); + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java index a135ef0f..0a39ea43 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java @@ -6,6 +6,8 @@ import com.adc.da.att.vo.AttFileVo; import com.adc.da.common.FileUnZip; import com.adc.da.common.SplitTableInfo; import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; import com.adc.da.slrs.standardSplit.dao.*; import com.adc.da.slrs.standardSplit.dto.*; import com.adc.da.slrs.standardSplit.entity.*; @@ -76,6 +78,9 @@ public class SarFileSplitItemsEOServiceImpl implements SarFileSplitItemsEOServic @Value("${elasticsearch.img}") private String elasticsearchImg;//图片拆分自调地址 + @Autowired + private SarStandItemsDao sarStandItemsDao; + @Override public Map getByPage(SarFileSplitItemsEOPage page) { @@ -872,6 +877,230 @@ public class SarFileSplitItemsEOServiceImpl implements SarFileSplitItemsEOServic sarFileSplitItemsEODao.selectByName(itemsName); } + @Override + @Transactional + public ResponseMessage importSplitItemsInfo(List list, String filepath, + SarFileSplitInfoEO sarFileSplitInfoEO, List getSheetTableList) { + //此处需要做各种验证,数据库操作 + try { + String infoId = null; + if (StringUtils.isNotBlank(sarFileSplitInfoEO.getInfoId())){ + infoId = sarFileSplitInfoEO.getInfoId(); + sarFileSplitInfoEO.setInfoId(null); + }else { + infoId = UUIDUtils.randomUUID20(); + } + Map map = validateImportDatas(list,filepath); + boolean isOk = (boolean) map.get("result"); + if (!isOk) { + //验证没有通过 + String message = (String) map.get("message"); + return Result.error("fail", message); + } + //将导入数据循环合并整理后 新增至相应表 + list = (List) map.get("resultList"); + int countSuccess = 0; + // 最终添加的数据 + List addItemsEOList = new ArrayList<>(); + int itemNum = 0; + String firstId = UUIDUtils.randomUUID20(); + String menuid = sarFileSplitInfoEO.getMenuId(); + if (null == menuid) { + SarFileSplitItemsEO firstItem = new SarFileSplitItemsEO(); + firstItem.setId(firstId); + firstItem.setItemsNum("总目录"); + firstItem.setValidFlag(0); + firstItem.setCreationTime(new Date()); + firstItem.setModifyTime(new Date()); + addItemsEOList.add(firstItem); //新的总目录家在了添加的list中 当前仅一条 + } + + for (SarFileSplitItemsImportDto importDto : list) { //遍历传入的值 + //判断此行数据是否全部为空,是则不读取 + if(checkObjAllFieldsIsNull(importDto)){ + continue; + } + SarFileSplitItemsEO sarFileSplitItemsEO = new SarFileSplitItemsEO(); + BeanUtils.copyProperties(importDto, sarFileSplitItemsEO); + sarFileSplitItemsEO.setInfoId(infoId); + List addItemValList = new ArrayList<>(); + if (addItemsEOList != null && !addItemsEOList.isEmpty()) { + SarFileSplitItemsEO oldItems = addItemsEOList.get(addItemsEOList.size()-1); + if (itemNum > 0 && sarFileSplitItemsEO.getItemsNum().equals(oldItems.getItemsNum()) + && sarFileSplitItemsEO.getItemsName().equals(oldItems.getItemsName())) { + addItemValList = oldItems.getItemValEOList(); + String itemContent = oldItems.getItermsConditions()+sarFileSplitItemsEO.getItermsConditions(); + oldItems.setItermsConditions(itemContent); + if(StringUtils.isBlank(sarFileSplitItemsEO.getItermsConditions())){ + continue; + } + String[] valArr = sarFileSplitItemsEO.getItermsConditions().split("\n"); + if (valArr != null && valArr.length > 0) { + for (int i=0;i nowfilelist = FileUnZip.readFileByFilename(filepath, valArr[i]); + if (nowfilelist != null && !nowfilelist.isEmpty()) { + AttFileVo attFileVo = attFileEOService.saveFileInfo(nowfilelist.get(0)); + if (attFileVo != null) { + isText = false; + //String path = "E:/data/slrs/file" + attFileVo.getFilePath()+attFileVo.getOldFileName(); + String pathSrc = elasticsearchImg + "/api/att/attFile/getFileInfo?fileId=" + attFileVo.getId(); + String imgCon = ""; + valEO.setType("IMG"); + valEO.setItemContent("

"+imgCon+"

"); + } + } + if (isText) { + valEO.setType("TEXT"); + valEO.setItemContent(valArr[i]); + } + addItemValList.add(valEO); + } + } + oldItems.setItemValEOList(addItemValList); + }else { + String[] valArr = sarFileSplitItemsEO.getItermsConditions().split("\n"); + if (valArr != null && valArr.length > 0) { + for (int i=0;i nowfilelist = FileUnZip.readFileByFilename(filepath, valArr[i]); + if (nowfilelist != null && !nowfilelist.isEmpty()) { + AttFileVo attFileVo = attFileEOService.saveFileInfo(nowfilelist.get(0)); + if (attFileVo != null) { + isText = false; + //String path = "E:/data/slrs/file" + attFileVo.getFilePath()+attFileVo.getOldFileName(); + String pathSrc = elasticsearchImg + "/api/att/attFile/getFileInfo?fileId=" + attFileVo.getId(); + String imgCon = ""; + valEO.setType("IMG"); + valEO.setItemContent("

"+imgCon+"

"); + } + } + if (isText) { + valEO.setType("TEXT"); + valEO.setItemContent(valArr[i]); + } + addItemValList.add(valEO); + } + } + sarFileSplitItemsEO.setItemValEOList(addItemValList); + addItemsEOList.add(sarFileSplitItemsEO); + } + } else { + String[] valArr = sarFileSplitItemsEO.getItermsConditions().split("\n"); + if (valArr != null && valArr.length > 0) { + for (int i=0;i nowfilelist = FileUnZip.readFileByFilename(filepath, valArr[i]); + if (nowfilelist != null && !nowfilelist.isEmpty()) { + AttFileVo attFileVo = attFileEOService.saveFileInfo(nowfilelist.get(0)); + if (attFileVo != null) { + isText = false; + //String path = "E:/data/slrs/file" + attFileVo.getFilePath()+attFileVo.getOldFileName(); + String pathSrc = elasticsearchImg + "/api/att/attFile/getFileInfo?fileId=" + attFileVo.getId(); + String imgCon = ""; + valEO.setType("IMG"); + valEO.setItemContent("

"+imgCon+"

"); + } + } + if (isText) { + valEO.setType("TEXT"); + valEO.setItemContent(valArr[i]); + } + addItemValList.add(valEO); + } + } + sarFileSplitItemsEO.setItemValEOList(addItemValList); + addItemsEOList.add(sarFileSplitItemsEO); + } + itemNum++; + } + + //导入拆分结果前首先新增拆分条目 + if (StringUtils.isBlank(menuid)) { + sarFileSplitInfoEO.setCreationTime(new Date()); + sarFileSplitInfoEO.setModifyTime(new Date()); + sarFileSplitInfoEO.setId(infoId); + sarFileSplitInfoEO.setValidFlag(0); + sarFileSplitInfoEO.setResult("1"); + sarFileSplitInfoEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitInfoEO.setStandId(sarFileSplitInfoEO.getStandId()); + sarFileSplitInfoEOService.insertSelective(sarFileSplitInfoEO); + } + + Map menuPidMap = new HashMap<>(); + //默认为总目录了 + if (StringUtils.isBlank(menuid)) { + menuPidMap.put("总目录", firstId); + }else{ + menuPidMap.put("总目录",menuid ); + } + for (SarFileSplitItemsEO itemsEO : addItemsEOList) { + List itemValEOList = itemsEO.getItemValEOList(); + if(itemValEOList!=null){ + String tupian = ""; + for (SarFileSplitItemsValEO data : itemValEOList){ + tupian = tupian+data.getItemContent(); + } + itemsEO.setItermsConditions(tupian); + } + String menuIdT = createItemsInfo(itemsEO,infoId,countSuccess,menuPidMap); + menuPidMap.put(itemsEO.getItemsNum(),menuIdT); + countSuccess++; + } + //加入的里面 + for (SarFileSplitItemsEO itemsEO : addItemsEOList){ + if(itemsEO.getItemsNum().equals("总目录")) { + continue; + } + SarStandItems sarStandItems = new SarStandItems(); + sarStandItems.setFileType(sarFileSplitInfoEO.getFileType()); + sarStandItems.setStandId(sarFileSplitInfoEO.getStandId()); + sarStandItems.setItemsNum(itemsEO.getItemsNum()); + sarStandItems.setItemsName(itemsEO.getItemsName()); + sarStandItems.setTermsConditions(itemsEO.getItermsConditions()); + sarStandItems.setDutyEngineer(itemsEO.getDutyEngineer()); + sarStandItems.setId(UUIDUtils.randomUUID20()); + sarStandItemsDao.insert(sarStandItems); + } + //统计成功结果需要去掉总目录这条数据 + String msg = "成功导入" + (countSuccess-1) + "条"; + return Result.success("0", msg, null); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return Result.error("导入失败"); + } + } + public void changeInfos (StringBuilder resultContent,String reaultItemId,List delMenuIds,List delIds,List resultValList) { //1.更新最终合并的条款内容 if (resultContent != null) {