Merge remote-tracking branch 'origin/master'
This commit is contained in:
+11
-4
@@ -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<DummyInventor
|
||||
/**
|
||||
* 导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @param file
|
||||
* @param dummyInventoryInfoEO
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/importData", method = RequestMethod.POST)
|
||||
public Result<?> 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 = "模板下载")
|
||||
|
||||
+8
@@ -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<DummyInventoryInf
|
||||
* @param request
|
||||
*/
|
||||
void exportTemplate(DummyInventoryInfoEO dummyInventoryInfoEO, HttpServletResponse response, HttpServletRequest request);
|
||||
|
||||
/**
|
||||
* 数据导入
|
||||
* @param file
|
||||
* @param dummyInventoryInfoEO
|
||||
*/
|
||||
void importData(MultipartFile file, DummyInventoryInfoEO dummyInventoryInfoEO);
|
||||
}
|
||||
|
||||
+773
-4
@@ -1,5 +1,6 @@
|
||||
package com.jero.modules.dummy.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.aliyuncs.utils.IOUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.constant.enums.CutEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.common.util.DateUtils;
|
||||
import com.jero.modules.document.entity.BussDocumentLibraryEO;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
|
||||
@@ -16,31 +18,50 @@ import com.jero.modules.dummy.mapper.DummyInventoryInfoEOMapper;
|
||||
import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.common.FileUnZip;
|
||||
import com.jero.modules.system.entity.SysCategory;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
|
||||
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.hssf.usermodel.HSSFCell;
|
||||
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
|
||||
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
|
||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -61,6 +82,8 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
private SysCategoryServiceImpl sysCategoryService;
|
||||
@Autowired
|
||||
private IOSSFileService iOSSFileService;
|
||||
@Autowired
|
||||
private SysDictItemServiceImpl sysDictItemServiceImpl;
|
||||
@Value(value = "${jero.path.upload}")
|
||||
private String uploadpath;
|
||||
|
||||
@@ -274,14 +297,17 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
String titleOne = "";
|
||||
String titleTwo = "";
|
||||
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
|
||||
titleOne = "编号,标题,子标题,适用范围,状态,对应标准,实施类别,新车实施日期,在产车实施日期,WVTA ID,认证类型,认证级别,技术领域," +
|
||||
"责任领域,适用地区,备注,设计符合性确认,Pre-homo确认,验证符合性确认";
|
||||
titleOne = "编号,标题,子标题,适用范围,状态,对应标准,实施类别,新车实施日期,在产车实施日期,WVTA ID,认证类型," +
|
||||
"认证级别,技术领域," +
|
||||
"责任领域,适用地区,备注," +
|
||||
"设计符合性确认,Pre-homo确认,验证符合性确认";
|
||||
titleTwo = "交付物类型,交付物模板,发起人,责任人,交付物类型,交付物模板,发起人,责任人,交付物类型,交付物模板,发起人,责任人";
|
||||
}else{
|
||||
titleOne = "serial number,title,subtitle,scope of application,state,corresponding standard,implementation category," +
|
||||
"new car implementation date,on the production vehicle implementation date,WVTA ID,certification type," +
|
||||
"certification level,technical field," +
|
||||
"area of responsibility,zone of application,remarks,design compliance check,pre-homo check,validation compliance chech";
|
||||
"new car implementation date,on the production vehicle implementation date,WVTA ID,certification type," +
|
||||
"area of responsibility,zone of application,remarks," +
|
||||
"design compliance check,pre-homo check,validation compliance chech";
|
||||
titleTwo = "type of deliverables,deliverable template,initiator,person liable," +
|
||||
"type of deliverables,deliverable template,initiator,person liable," +
|
||||
"type of deliverables,deliverable template,initiator,person liable";
|
||||
@@ -375,6 +401,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 技术领域数据字典处理
|
||||
* @param dummyInventoryInfoEO
|
||||
@@ -509,4 +536,746 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
}
|
||||
return sbStr;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public void importData(MultipartFile file, DummyInventoryInfoEO dummyInventoryInfoEO) {
|
||||
String title = "";
|
||||
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
|
||||
title = "编号,标题,子标题,适用范围,状态,对应标准,实施类别,新车实施日期,在产车实施日期,WVTA ID,认证类型,认证级别,技术领域,责任领域,适用地区,备注," +
|
||||
"设计交付物类型,设计交付物模板,设计发起人,设计责任人,pre交付物类型,pre交付物模板,pre发起人,pre责任人,验证交付物类型,验证交付物模板,验证发起人,验证责任人";
|
||||
}else{
|
||||
|
||||
}
|
||||
|
||||
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")) {
|
||||
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
|
||||
throw new JeroBootException("请上传zip格式的文件或rar格式的文件");
|
||||
}else{
|
||||
throw new JeroBootException("Please upload a zip file or rar file");
|
||||
}
|
||||
|
||||
}
|
||||
String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
|
||||
File saveDirectory = new File(path);
|
||||
if (!saveDirectory.isDirectory()) {
|
||||
saveDirectory.mkdir();
|
||||
}
|
||||
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path + File.separator + file.getOriginalFilename()));
|
||||
//解压缩
|
||||
String zipEntryName = "";
|
||||
if (str.equals("zip")) {
|
||||
zipEntryName = FileUnZip.unZipFiles(path + File.separator + file.getOriginalFilename(), path);
|
||||
}
|
||||
|
||||
|
||||
//判断压缩包下是否只有一个文件夹
|
||||
File fileTemp = new File(path);
|
||||
int length = fileTemp.listFiles().length;
|
||||
if (length > 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<File> 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<File> 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<DummyInventoryInfoEO> datas = new ArrayList<>();
|
||||
File excelFile = excelfilelist.get(0);
|
||||
Workbook workbook = WorkbookFactory.create(excelFile);
|
||||
List<Map<String, String>> 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<String, String> 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<String> 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<String, String> 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<SysCategory> categoryList = sysCategoryService.list();
|
||||
//普通数据字典
|
||||
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
|
||||
importDatas(datas, categoryList, dictItemList, zipEntryName,saveDirectory,dummyInventoryInfoEO.getCut());
|
||||
//删除原上传文件
|
||||
FileUnZip.deleteDir(saveDirectory);
|
||||
|
||||
}
|
||||
|
||||
private void importDatas(List<DummyInventoryInfoEO> dataList,
|
||||
List<SysCategory> categoryList,
|
||||
List<SysDictItem> dictItemList,
|
||||
String zipEntryName,
|
||||
File saveDirectory,
|
||||
String cut) {
|
||||
int i = 2;
|
||||
List<String> msgList = new ArrayList<>();
|
||||
String value = "";
|
||||
boolean flag = true;
|
||||
//编号验重
|
||||
List<BussDocumentLibraryEO> 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<BussDocumentLibraryEO> 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 + "</br>";
|
||||
}
|
||||
FileUnZip.deleteDir(saveDirectory);
|
||||
throw new JeroBootException(html);
|
||||
} else {
|
||||
if (dataList.size() != 0) {
|
||||
this.saveBatch(dataList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<BussDocumentLibraryEO> verifySerialNumber(List<DummyInventoryInfoEO> dataList) {
|
||||
List<String> correspondingStandardIdList = dataList.stream().map(DummyInventoryInfoEO::getCorrespondingStandard).collect(Collectors.toList());
|
||||
List<String> serialNumberList = dataList.stream().map(DummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<BussDocumentLibraryEO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(BussDocumentLibraryEO::getId,correspondingStandardIdList);
|
||||
List<BussDocumentLibraryEO> bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(wrapper);
|
||||
|
||||
LambdaQueryWrapper<DummyInventoryInfoEO> wrapperTemp = new LambdaQueryWrapper<>();
|
||||
wrapperTemp.in(DummyInventoryInfoEO::getSerialNumber,serialNumberList);
|
||||
List<DummyInventoryInfoEO> 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<String> msgList,
|
||||
String nameCn,String nameEn) {
|
||||
String value = "";
|
||||
if (StringUtils.isNotBlank(designDeliverableTemplate)) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String fileName : designDeliverableTemplate.split(",")) {
|
||||
List<File> 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<String> 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<SysCategory> categoryList, List<String> 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<SysCategory> 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<SysDictItem> dictItemList, DummyInventoryInfoEO dummyInventoryInfoEO,
|
||||
String errorMsg, String value,List<String> 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<SysDictItem> 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<SysDictItem> dictItemList, DummyInventoryInfoEO dummyInventoryInfoEO,
|
||||
String errorMsg, String value,List<String> msgList,
|
||||
String nameCn,String nameEn) {
|
||||
List<String> valueList = new ArrayList<>();
|
||||
if (StringUtils.isNotBlank(value)) {
|
||||
List<String> list = Arrays.asList(value.split(","));
|
||||
List<SysDictItem> 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<String> finalValueList = valueList;
|
||||
List<String> 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<String> 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;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-7
@@ -145,10 +145,8 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
return result;
|
||||
}
|
||||
|
||||
public void disposeData(List<ProjectLibraryBase> records){
|
||||
|
||||
|
||||
for (ProjectLibraryBase projectLibraryBase:records) {
|
||||
public void disposeData(List<ProjectLibraryBase> records) {
|
||||
for (ProjectLibraryBase projectLibraryBase : records) {
|
||||
List<SysUser> sysUsers = new ArrayList<>();
|
||||
//认证工程师多个id查询
|
||||
if (StringUtils.isNotEmpty(projectLibraryBase.getCertificationEngineer())) {
|
||||
@@ -163,20 +161,20 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
if (CollectionUtils.isNotEmpty(sysUsers)) {
|
||||
String certificationEngineerId = projectLibraryBase.getCertificationEngineer();
|
||||
String certificationEngineerName = null;
|
||||
StringBuilder certificationName = new StringBuilder();
|
||||
|
||||
for (String data : certificationEngineerIdList) {
|
||||
if (StringUtils.isNotEmpty(certificationEngineerId)) {
|
||||
certificationEngineerName = sysUsers.stream().filter(e -> data.equals(e.getId()))
|
||||
.map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(","));
|
||||
|
||||
}
|
||||
certificationName.append(certificationEngineerName).append(" ");
|
||||
}
|
||||
projectLibraryBase.setCertificationEngineerName(certificationEngineerName);
|
||||
projectLibraryBase.setCertificationEngineerName(certificationName.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+9
-5
@@ -157,14 +157,15 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
|
||||
if(CollectionUtils.isNotEmpty(lawEngineerUsers)) {
|
||||
String lawEngineerId = projectRelatedPersonnel.getLawEngineer();
|
||||
String lawEngineerName = null;
|
||||
|
||||
StringBuilder lawName = new StringBuilder();
|
||||
for (String data : lawEngineerIdList) {
|
||||
if (StringUtils.isNotEmpty(lawEngineerId)) {
|
||||
lawEngineerName = lawEngineerUsers.stream().filter(e -> 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<ProjectRelat
|
||||
if (CollectionUtils.isNotEmpty(engineeringInterfacePersonUsers)) {
|
||||
String engineeringInterfacePersonId = projectRelatedPersonnel.getEngineeringInterfacePerson();
|
||||
String engineeringInterfacePersonName = null;
|
||||
StringBuilder engineeringName = new StringBuilder();
|
||||
|
||||
for (String data : engineeringInterfacePersonIdList) {
|
||||
if (StringUtils.isNotEmpty(engineeringInterfacePersonId)) {
|
||||
engineeringInterfacePersonName = engineeringInterfacePersonUsers.stream().filter(e -> 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<ProjectRelat
|
||||
if(CollectionUtils.isNotEmpty(certificationEngineerUsers)) {
|
||||
String certificationEngineerId = projectRelatedPersonnel.getCertificationEngineer();
|
||||
String certificationEngineerName = null;
|
||||
|
||||
StringBuilder certificationName = new StringBuilder();
|
||||
for (String data : certificationEngineerIdList) {
|
||||
if (StringUtils.isNotEmpty(certificationEngineerId)) {
|
||||
certificationEngineerName = certificationEngineerUsers.stream().filter(e -> data.equals(e.getId()))
|
||||
.map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(","));
|
||||
}
|
||||
certificationName.append(certificationEngineerName).append(" ");
|
||||
}
|
||||
projectRelatedPersonnel.setCertificationEngineerName(certificationEngineerName);
|
||||
projectRelatedPersonnel.setCertificationEngineerName(certificationName.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user