From 7df93dd7e9962b9bd285868e34dd318f43ecbef4 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Wed, 20 Apr 2022 20:01:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E6=B8=85=E5=8D=95--?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DummyInventoryInfoEOController.java | 15 +- .../service/IDummyInventoryInfoEOService.java | 8 + .../impl/DummyInventoryInfoEOServiceImpl.java | 777 +++++++++++++++++- 3 files changed, 792 insertions(+), 8 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java index e40be1325..e5fd702b6 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/controller/DummyInventoryInfoEOController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @@ -182,13 +183,19 @@ public class DummyInventoryInfoEOController extends JeroController importData(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, DummyInventoryInfoEO.class); + public Result importData(@RequestParam(value = "file", required = false) MultipartFile file, + DummyInventoryInfoEO dummyInventoryInfoEO) { + try { + dummyInventoryInfoEOService.importData(file,dummyInventoryInfoEO); + } catch (Exception e) { + return Result.error("导入失败"); + } + return Result.OK("导入成功"); } @ApiOperation(value = "模板下载") diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryInfoEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryInfoEOService.java index fc1bf8e1b..06741a6c7 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryInfoEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/IDummyInventoryInfoEOService.java @@ -3,6 +3,7 @@ package com.jero.modules.dummy.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.jero.modules.dummy.entity.DummyInventoryInfoEO; import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -81,4 +82,11 @@ public interface IDummyInventoryInfoEOService extends IService 2) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("压缩包中必须有且仅有一个文件夹,请重新上传"); + }else{ + throw new JeroBootException("There must be only one folder in the compressed package Please upload it again"); + } + + } + File fileNew = new File(zipEntryName); + List fileList = new ArrayList<>(); + for (File file1 : fileNew.listFiles()) { + if (file1.getName().contains(".xls") || file1.getName().contains(".xlsx")) { + fileList.add(file1); + } + } + if (fileList.size() == 0) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("压缩包根目录下没有excel作为导入数据,请重新上传"); + }else{ + throw new JeroBootException("Excel does not exist in the root directory of the compressed package Please upload it again"); + } + + } else if (fileList.size() > 1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("压缩包根目录下仅能存在一个excel为导入数据,请重新上传"); + }else{ + throw new JeroBootException("Only one Excel file can be imported in the compressed package root directory. Please upload data again"); + } + + } + + // 数据相关处理, + // 1.获取其中的Excel, + List excelfilelist = FileUnZip.readImpExcelFile(zipEntryName); + System.gc(); + if (excelfilelist.size() < 1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("压缩包内没有上传Excel数据"); + }else{ + throw new JeroBootException("No Excel data is uploaded in the compressed package"); + } + + } else if (excelfilelist.size() > 1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("压缩包内有多个Excel数据源"); + }else{ + throw new JeroBootException("There are multiple Excel data sources in the zip package"); + } + + } + List datas = new ArrayList<>(); + File excelFile = excelfilelist.get(0); + Workbook workbook = WorkbookFactory.create(excelFile); + List> dataList = new ArrayList<>(); + if (workbook != null) { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + Sheet sheet = workbook.getSheetAt(0); + if (sheet != null) { + StringBuilder headerSb = new StringBuilder(); + int rowNos = sheet.getLastRowNum();// 得到excel的总记录条数 + for (int i = 0; i <= rowNos; i++) { +// if (i == 1) { +// continue; +// } + Row row = sheet.getRow(i); + Row headerRow = sheet.getRow(i); + boolean isBlank = isRowEmpty(row); + String key = ""; + if (row != null && !isBlank) { + int columNos = headerRow.getLastCellNum();// 表头总共的列数 + Map rowList = new LinkedHashMap<>(); + for (int j = 0; j < columNos; j++) { + Cell cell = row.getCell(j); + Cell headerCell = headerRow.getCell(j); + if (cell != null) { + if (i == 0) { + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + headerSb.append(cell.getStringCellValue() + ","); + if(j == 15){ + break; + } + }else if(i == 1){ + if(j > 15){ + String flag = ""; + if(15 < j && j < 20){ + flag ="设计"; + key = flag + headerCell.getStringCellValue(); + } + if(19 < j && j < 24){ + flag ="pre"; + key = flag + headerCell.getStringCellValue(); + } + if(23 < j && j < 28){ + flag ="验证"; + key = flag + headerCell.getStringCellValue(); + + } + headerSb.append(key + ","); + } + } else { + List headList = Arrays.asList(headerSb.toString().split(",")); + String field =""; + if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType() && HSSFDateUtil.isCellDateFormatted(cell)) { + Date d = cell.getDateCellValue(); + field = fieldConvert(headList.get(j)); + rowList.put(field, df.format(d)); + } else { + field = fieldConvert(headList.get(j)); + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + String stringCellValue = cell.getStringCellValue(); + if (StringUtils.isNotBlank(stringCellValue)) { + String replace = stringCellValue.replace(",", ","); + rowList.put(field, replace); + } else { + rowList.put(field, ""); + } + } + } + } else { + if (i != 0 && i != 1) { + rowList.put(headerCell.getStringCellValue(), ""); + } + } + } + if (i != 0 && i != 1) { + dataList.add(rowList); + } + } + } + + if (dataList.size() == 0) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("请填写必填字段内容,带*的为必填"); + }else{ + throw new JeroBootException("Please fill in the required fields marked with *"); + } + + }else{ + //数据转换 JSON.parseObject(JSON.toJSONString(map), MyUser.class) + for (Map stringStringMap : dataList) { + DummyInventoryInfoEO dummyInventoryInfoEOTemp = JSON.parseObject(JSON.toJSONString(stringStringMap), DummyInventoryInfoEO.class); + dummyInventoryInfoEOTemp.setCut(dummyInventoryInfoEO.getCut()); + datas.add(dummyInventoryInfoEOTemp); + } + } + // 校验头部是否符合模板 + String substring = headerSb.toString(); + if (substring.endsWith(",") || substring.endsWith(",")){ + substring = headerSb.substring(0, headerSb.length() - 1); + } + + String excelHeader = substring.toString(); + if (!title.equals(excelHeader)) { + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + throw new JeroBootException("读取失败,请严格按照模板文件导入数据"); + }else{ + throw new JeroBootException("The data fails to be read. Import data strictly according to the template file"); + } + + } + } + } + workbook.close(); + + +// //树形数据字典 + List categoryList = sysCategoryService.list(); + //普通数据字典 + List dictItemList = sysDictItemServiceImpl.selectItemsAll(); + importDatas(datas, categoryList, dictItemList, zipEntryName,saveDirectory,dummyInventoryInfoEO.getCut()); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + + } + + private void importDatas(List dataList, + List categoryList, + List dictItemList, + String zipEntryName, + File saveDirectory, + String cut) { + int i = 2; + List msgList = new ArrayList<>(); + String value = ""; + boolean flag = true; + //编号验重 + List bussDocumentLibraryEOList = verifySerialNumber(dataList); + for (DummyInventoryInfoEO dummyInventoryInfoEO : dataList) { + i++; + String errorMsg = ""; + if(CutEnum.CN.getValue().equals(cut)){ + errorMsg = "第" + i + "行:"; + }else{ + errorMsg = i + " line:"; + } + //编号 + String serialNumber = dummyInventoryInfoEO.getSerialNumber(); + //标题 + String title = dummyInventoryInfoEO.getTitle(); + //子标题 + String subtitle = dummyInventoryInfoEO.getSubtitle(); + //对应标准 + String correspondingStandard = dummyInventoryInfoEO.getCorrespondingStandard(); + //状态 + String state = dummyInventoryInfoEO.getState(); + //认证级别 + String attestationRank = dummyInventoryInfoEO.getAttestationRank(); + //责任领域 + String dutyTerritory = dummyInventoryInfoEO.getDutyTerritory(); + + //适用范围 + String shi4Yong4Fan4Wei2 = dummyInventoryInfoEO.getShi4Yong4Fan4Wei2(); + //认证类型 + String attestationType = dummyInventoryInfoEO.getAttestationType(); + //责任领域 + //认证级别 + //实施类别 + String implementType = dummyInventoryInfoEO.getImplementType(); + //适用地区 + String region = dummyInventoryInfoEO.getRegion(); + //设计交付物类型 + String designDeliverableType = dummyInventoryInfoEO.getDesignDeliverableType(); + //设计发起人 + String designInitiator = dummyInventoryInfoEO.getDesignInitiator(); + //设计责任人 + String designDuty = dummyInventoryInfoEO.getDesignDuty(); + //pre交付物类型 + String prehomoDeliverableType = dummyInventoryInfoEO.getPrehomoDeliverableType(); + //pre发起人 + String prehomoInitiator = dummyInventoryInfoEO.getPrehomoInitiator(); + //pre责任人 + String prehomoDuty = dummyInventoryInfoEO.getPrehomoDuty(); + //确认交付物类型 + String verifyDeliverableType = dummyInventoryInfoEO.getVerifyDeliverableType(); + //确认发起人 + String verifyInitiator = dummyInventoryInfoEO.getVerifyInitiator(); + //确认责任人 + String verifyDuty = dummyInventoryInfoEO.getVerifyDuty(); + //技术领域 + String technologyTerritory = dummyInventoryInfoEO.getTechnologyTerritory(); + //新车型实施日期 + Date xin1Che1Xing2Shi2Shi1Ri4Qi1 = dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1(); + //在产车实施日期 + Date implementTime = dummyInventoryInfoEO.getImplementTime(); + //文件 + String designDeliverableTemplate = dummyInventoryInfoEO.getDesignDeliverableTemplate(); + String prehomoDeliverableTemplate = dummyInventoryInfoEO.getPrehomoDeliverableTemplate(); + String verifyDeliverableTemplate = dummyInventoryInfoEO.getVerifyDeliverableTemplate(); + + //编号(输入框必填) + flag = must(dummyInventoryInfoEO, errorMsg, msgList, serialNumber, "编号", "serial number"); + + //标题(输入框必填) + if(StringUtils.isBlank(title)){ + //必填验证 + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += "标题为必填项,不能为空"; + }else{ + errorMsg += "title this parameter is mandatory and cannot be empty"; + } + msgList.add(errorMsg); + } + //适用范围(多选不必填) + value = pullMore(dictItemList, dummyInventoryInfoEO, errorMsg, shi4Yong4Fan4Wei2,msgList,"适用范围","scope of application");; + if (StringUtils.isNotBlank(value)) { + dummyInventoryInfoEO.setShi4Yong4Fan4Wei2(value); + } + //状态(单选必填) + flag = must(dummyInventoryInfoEO, errorMsg, msgList, state, "状态", "state"); + if(flag){ + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, state, msgList, "状态", "state"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setState(value); + } + } + + //对应标准 + flag = must(dummyInventoryInfoEO, errorMsg, msgList, correspondingStandard,"对应标准","corresponding standard"); + if(flag){ + StringBuilder sb = new StringBuilder(); + for (String s : correspondingStandard.split(",")) { + List collect = bussDocumentLibraryEOList.stream() + .filter(e -> s.equals(e.getSerialNumber())).collect(Collectors.toList()); + if(collect.size() == 0){ + sb.append(s+","); + }else{ + sb.append(collect.get(0).getId()+","); + } + } + if(StringUtils.isNotBlank(sb)){ + String substring = sb.substring(0, sb.length() - 1); + dummyInventoryInfoEO.setCorrespondingStandard(substring); + } + } + + //实施类别(单选不必填) + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, implementType,msgList,"实施类别","implementation category"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setImplementType(value); + } + + //新车实施日期 xin1Che1Xing2Shi2Shi1Ri4Qi1 + flag = dateVerify(dummyInventoryInfoEO, errorMsg, xin1Che1Xing2Shi2Shi1Ri4Qi1,msgList,"新车实施日期","new car implementation date"); + if(flag){ + dummyInventoryInfoEO.setXin1Che1Xing2Shi2Shi1Ri4Qi1(xin1Che1Xing2Shi2Shi1Ri4Qi1); + } + + //在产车实施日期 implementTime + flag = dateVerify(dummyInventoryInfoEO, errorMsg, implementTime,msgList,"在产车实施日期","on the production vehicle implementation date"); + if(flag){ + dummyInventoryInfoEO.setImplementTime(implementTime); + } + //认证类型(单选不必填) + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, attestationType,msgList,"认证类型","certification type"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setAttestationType(value); + } + + //认证级别(单选必填) + flag = must(dummyInventoryInfoEO, errorMsg, msgList, attestationRank,"认证级别","certification level"); + if(flag){ + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, attestationRank,msgList,"认证级别","certification level"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setAttestationRank(value); + } + } + + //技术领域 + tree(categoryList,msgList, dummyInventoryInfoEO, errorMsg, technologyTerritory); + + //责任领域(多选必填) + flag = must(dummyInventoryInfoEO, errorMsg, msgList, dutyTerritory,"责任领域","area of responsibility"); + if(flag){ + value = pullMore(dictItemList, dummyInventoryInfoEO, errorMsg, dutyTerritory,msgList,"责任领域","area of responsibility"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setDutyTerritory(value); + } + } + + //适用地区(多选不必填) + value = pullMore(dictItemList, dummyInventoryInfoEO, errorMsg, region,msgList,"适用地区","zone of application");; + if (StringUtils.isNotBlank(value)) { + dummyInventoryInfoEO.setRegion(value); + } + //备注 + + //设计 + //交付物类型 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, designDeliverableType,msgList,"交付物类型","type of deliverables"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setDesignDeliverableType(value); + } + + //交付物模板 + value = template(zipEntryName, dummyInventoryInfoEO, errorMsg, designDeliverableTemplate,msgList,"交付物模板","deliverable template"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setDesignDeliverableTemplate(value); + } + + //发起人 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, designInitiator,msgList,"发起人","initiator"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setDesignInitiator(value); + } + + //责任人 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, designDuty,msgList,"责任人","person liable"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setDesignDuty(value); + } + + //pre + //交付物类型 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, prehomoDeliverableType,msgList,"交付物类型","type of deliverables"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setPrehomoDeliverableType(value); + } + + //交付物模板 + value = template(zipEntryName, dummyInventoryInfoEO, errorMsg, prehomoDeliverableTemplate,msgList,"交付物模板","deliverable template"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setPrehomoDeliverableTemplate(value); + } + + //发起人 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, prehomoInitiator,msgList,"发起人","initiator"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setPrehomoInitiator(value); + } + + //责任人 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, prehomoDuty,msgList,"责任人","person liable"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setPrehomoDuty(value); + } + + //确认 + //交付物类型 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, verifyDeliverableType,msgList,"交付物类型","type of deliverables"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setVerifyDeliverableType(value); + } + + //交付物模板 + value = template(zipEntryName, dummyInventoryInfoEO, errorMsg, verifyDeliverableTemplate,msgList,"交付物模板","deliverable template"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setVerifyDeliverableTemplate(value); + } + + + //发起人 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, verifyInitiator,msgList,"发起人","initiator"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setVerifyInitiator(value); + } + + //责任人 + value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, verifyDuty,msgList,"责任人","person liable"); + if(StringUtils.isNotBlank(value)){ + dummyInventoryInfoEO.setVerifyDuty(value); + } + } + + if (msgList.size() > 0) { + //返回报错信息 + String html = ""; + for (String s : msgList) { + html += s + "
"; + } + FileUnZip.deleteDir(saveDirectory); + throw new JeroBootException(html); + } else { + if (dataList.size() != 0) { + this.saveBatch(dataList); + } + } + } + + private List verifySerialNumber(List dataList) { + List correspondingStandardIdList = dataList.stream().map(DummyInventoryInfoEO::getCorrespondingStandard).collect(Collectors.toList()); + List serialNumberList = dataList.stream().map(DummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(BussDocumentLibraryEO::getId,correspondingStandardIdList); + List bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(wrapper); + + LambdaQueryWrapper wrapperTemp = new LambdaQueryWrapper<>(); + wrapperTemp.in(DummyInventoryInfoEO::getSerialNumber,serialNumberList); + List dummyInventoryInfoEOList = this.list(wrapperTemp); + if(dummyInventoryInfoEOList.size() > 0){ + if(CutEnum.CN.getValue().equals(dataList.get(0).getCut())){ + throw new JeroBootException(StringUtils.join(serialNumberList,",")+"已存在,不能重复添加"); + }else{ + throw new JeroBootException(StringUtils.join(serialNumberList,",")+" already exists and cannot be added again"); + } + } + return bussDocumentLibraryEOList; + } + + private String template(String zipEntryName, DummyInventoryInfoEO dummyInventoryInfoEO, + String errorMsg, String designDeliverableTemplate,List msgList, + String nameCn,String nameEn) { + String value = ""; + if (StringUtils.isNotBlank(designDeliverableTemplate)) { + StringBuilder sb = new StringBuilder(); + for (String fileName : designDeliverableTemplate.split(",")) { + List nowFileList = FileUnZip.readFileByFilename(zipEntryName, fileName); + if (nowFileList.size() == 0) { + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += "压缩包中没有" + fileName + "文件; "; + }else{ + errorMsg += " Not in the zip package" + fileName + "file; "; + } + msgList.add(errorMsg); + } else { + try { + FileInputStream input = new FileInputStream(nowFileList.get(0)); + MultipartFile multipartFile = + new MockMultipartFile(nowFileList.get(0).getName(), nowFileList.get(0).getName(), "text/plain", input); + //文件存入文件表 + OSSFile ossFile = iOSSFileService.uploadLocal(multipartFile, "", null,null); + if (ObjectUtils.isNotEmpty(ossFile)) { + sb.append(ossFile.getId() + ","); + } + } catch (IOException e) { + log.error("虚拟清单导入"+e.getMessage()); + } + } + } + if (StringUtils.isNotBlank(sb)) { + value = sb.substring(0, sb.length() - 1); + } + } + return value; + } + + private boolean dateVerify(DummyInventoryInfoEO dummyInventoryInfoEO, String errorMsg, + Date field,List msgList, + String nameCn,String nameEn) { + //判断格式是否正确 + boolean flag = true; + if(ObjectUtils.isNotEmpty(field)){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String format = sdf.format(field); + if (!DateUtils.isValidDate(format)) { + flag = false; + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += nameCn + "格式不正确,正确格式如:yyyy/m/d、yyyy-MM-dd、yyyy年MM月dd日"; + }else{ + errorMsg += nameEn + " Incorrect format correct format is:yyyy/m/d、yyyy-MM-dd、yyyy年MM月dd日"; + } + msgList.add(errorMsg); + } + } + return flag; + } + + private void tree(List categoryList, List msgList, DummyInventoryInfoEO dummyInventoryInfoEO, String errorMsg, String technologyTerritory) { + if(StringUtils.isNotBlank(technologyTerritory)){ + if(technologyTerritory.contains(",")){ + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += "技术领域" + " 为单选项"; + }else{ + errorMsg += " technical field" + " is multiple Choice"; + } + msgList.add(errorMsg); + }else{ + List collect = categoryList.stream().filter(e -> technologyTerritory.equals(e.getName())).collect(Collectors.toList()); + if(collect.size() == 0){ + if (CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())) { + errorMsg += "技术领域中的" + technologyTerritory + "与数据字典不匹配"; + } else { + errorMsg += " In the field of technology " + technologyTerritory + " does not match the data dictionary"; + } + msgList.add(errorMsg); + }else{ + dummyInventoryInfoEO.setTechnologyTerritory(collect.get(0).getId()); + } + } + } + } + + private String pullSingle(List dictItemList, DummyInventoryInfoEO dummyInventoryInfoEO, + String errorMsg, String value,List msgList, + String nameCn,String nameEn) { + if(StringUtils.isNotBlank(value)){ + if(value.contains(",")){ + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += nameCn + " 为单选项"; + }else{ + errorMsg += nameEn + " Is multiple Choice"; + } + msgList.add(errorMsg); + }else{ + List collect = dictItemList.stream().filter(e -> value.equals(e.getItemText())).collect(Collectors.toList()); + if (collect.size() == 0) { + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += nameCn + "中的" + value + "与数据字典不匹配"; + }else{ + errorMsg += nameEn +" "+ value + " does not match the data dictionary"; + } + msgList.add(errorMsg); + }else{ + return collect.get(0).getItemValue(); + } + } + } + return null; + } + private String pullMore(List dictItemList, DummyInventoryInfoEO dummyInventoryInfoEO, + String errorMsg, String value,List msgList, + String nameCn,String nameEn) { + List valueList = new ArrayList<>(); + if (StringUtils.isNotBlank(value)) { + List list = Arrays.asList(value.split(",")); + List collect = dictItemList.stream().filter(e -> list.contains(e.getItemText())).collect(Collectors.toList()); + if(list.size() == collect.size()){ + valueList = collect.stream().map(SysDictItem::getItemValue).collect(Collectors.toList()); + }else{ + //数据中有与数据字典不匹配的值 + List finalValueList = valueList; + List diffList = list.stream().filter(e -> !finalValueList.contains(e)).collect(Collectors.toList()); + if (CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())) { + errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配"; + } else { + errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary"; + } + msgList.add(errorMsg); + } + } + return StringUtils.join(valueList,","); + } + + private boolean must(DummyInventoryInfoEO dummyInventoryInfoEO, String errorMsg, + List msgList, String serialNumber,String nameCn,String nameEn) { + int errorCount = 0; + if(StringUtils.isBlank(serialNumber)){ + errorCount ++; + if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){ + errorMsg += "编号为必填项,不能为空"; + }else{ + errorMsg += "serial number this parameter is mandatory and cannot be empty"; + } + msgList.add(errorMsg); + } + if(errorCount == 0){ + return true; + }else{ + return false; + } + } + + private String fieldConvert(String field){ + if (field == null) return null; + switch (field) { + case "编号": return "serialNumber"; + case "标题": return "title"; + case "子标题": return "subtitle"; + case "适用范围": return "shi4Yong4Fan4Wei2"; + case "状态": return "state"; + case "对应标准": return "correspondingStandard"; + case "实施类别": return "implementType"; + case "新车实施日期": return "xin1Che1Xing2Shi2Shi1Ri4Qi1"; + case "在产车实施日期": return "implementTime"; + case "WVTA ID": return "wvtaId"; + case "认证类型": return "attestationType"; + case "认证级别": return "attestationRank"; + case "技术领域": return "technologyTerritory"; + case "责任领域": return "dutyTerritory"; + case "适用地区": return "region"; + case "备注": return "remark"; + case "设计交付物类型": return "designDeliverableType"; + case "设计交付物模板": return "designDeliverableTemplate"; + case "设计发起人": return "designInitiator"; + case "设计责任人": return "designDuty"; + case "pre交付物类型": return "prehomoDeliverableType"; + case "pre交付物模板": return "prehomoDeliverableTemplate"; + case "pre发起人": return "prehomoInitiator"; + case "pre责任人": return "prehomoDuty"; + case "验证交付物类型": return "verifyDeliverableType"; + case "验证交付物模板": return "verifyDeliverableTemplate"; + case "验证发起人": return "verifyInitiator"; + case "验证责任人": return "verifyDuty"; + default: return null; + } + } + //判断row是否为空 空返回true + public boolean isRowEmpty(Row row) { + if (null == row) { + return true; + } + int firstCellNum = row.getFirstCellNum(); //第一个列位置 + int lastCellNum = row.getLastCellNum(); //最后一列位置 + int nullCellNum = 0; //空列数量 + for (int c = firstCellNum; c < lastCellNum; c++) { + Cell cell = row.getCell(c); + if (null == cell) { + nullCellNum++; + continue; + } + String value = ""; + switch (cell.getCellType()) { + case HSSFCell.CELL_TYPE_NUMERIC: // 数字 + //如果为时间格式的内容 + value = String.valueOf(cell.getNumericCellValue()); + break; + case HSSFCell.CELL_TYPE_STRING: // 字符串 + value = cell.getStringCellValue(); + break; + case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean + value = cell.getBooleanCellValue() + ""; + break; + case HSSFCell.CELL_TYPE_FORMULA: // 公式 + value = cell.getCellFormula() + ""; + break; + default: + break; + } + if (org.apache.commons.lang.StringUtils.isEmpty(value)) { + nullCellNum++; + } + } + //所有列都为空 + if (nullCellNum == (lastCellNum - firstCellNum)) { + return true; + } + return false; + } } From 76f8044d3d3e0de495d0a36737f3ffddfc89a14c Mon Sep 17 00:00:00 2001 From: xiejunyu Date: Wed, 20 Apr 2022 22:12:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=BA=93=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E8=A1=A8,=E7=9B=B8=E5=85=B3=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProjectLibraryBaseServiceImpl.java | 12 +++++------- .../impl/ProjectRelatedPersonnelServiceImpl.java | 14 +++++++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index ca28d3a3d..501162bc0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -145,10 +145,8 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl records){ - - - for (ProjectLibraryBase projectLibraryBase:records) { + public void disposeData(List records) { + for (ProjectLibraryBase projectLibraryBase : records) { List sysUsers = new ArrayList<>(); //认证工程师多个id查询 if (StringUtils.isNotEmpty(projectLibraryBase.getCertificationEngineer())) { @@ -163,20 +161,20 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl data.equals(e.getId())) .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); - } + certificationName.append(certificationEngineerName).append(" "); } - projectLibraryBase.setCertificationEngineerName(certificationEngineerName); + projectLibraryBase.setCertificationEngineerName(certificationName.toString()); } } } } - } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java index b56e030ae..006bf4b48 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java @@ -157,14 +157,15 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl data.equals(e.getId())) .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); } + lawName.append(lawEngineerName).append(" "); } - projectRelatedPersonnel.setLawEngineerName(lawEngineerName); + projectRelatedPersonnel.setLawEngineerName(lawName.toString()); } } @@ -181,14 +182,16 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl data.equals(e.getId())) .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); } + engineeringName.append(engineeringInterfacePersonName).append(" "); } - projectRelatedPersonnel.setEngineeringInterfacePersonName(engineeringInterfacePersonName); + projectRelatedPersonnel.setEngineeringInterfacePersonName(engineeringName.toString()); } } @@ -205,14 +208,15 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl data.equals(e.getId())) .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); } + certificationName.append(certificationEngineerName).append(" "); } - projectRelatedPersonnel.setCertificationEngineerName(certificationEngineerName); + projectRelatedPersonnel.setCertificationEngineerName(certificationName.toString()); } }