优化企标导入

This commit is contained in:
SUNJIABIN
2023-03-30 20:43:09 +08:00
parent fc3704555a
commit 5ad13178ff
6 changed files with 173 additions and 24 deletions
@@ -467,7 +467,8 @@ public class SarBussionessStandController extends BaseController<SarBussionessSt
HSSFCellStyle cellStyle =workbook.createCellStyle();
cellStyle.setWrapText(true);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
Row rowHeader = sheetItems.createRow(0);//开始创建标题行
Row rowHeader = sheetItems.createRow(1);//开始创建标题行
Row row2 = sheetItems.createRow(0);//开始创建填写说明
String exportFieldName = FieldConvertUtil.exportFieldName;
if (org.apache.commons.lang3.StringUtils.isNotBlank(exportFieldName)) {
@@ -476,6 +477,9 @@ public class SarBussionessStandController extends BaseController<SarBussionessSt
rowHeader.createCell(i).setCellValue(headerArr[i]);
}
}
Cell cellA2 = row2.createCell(0);
cellA2.setCellValue(FieldConvertUtil.exportName);
String repFileName = fileName2.replaceAll("/","_");
excelOS = new FileOutputStream(fileNowPath + "/" + repFileName);
response.setHeader("Content-Disposition",
@@ -2045,7 +2045,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
return Result.error("请选择需要导入的目录");
}
//给出头部信息
String[] headerExcel = {"企标类别,标准年份,企标编号,中文名称,英文名称,文本状态,发布日期,企标实施日期,企标制修订状态,起草部门,代替企标编号,复审日期,起草人,被代替企标编号,采用标准,文件上传人员,采标程度,引用标准,适用车型,能源类型,适用产品线,体系类别,备案日期,关联模块-乘用车VPPS编码,关联模块--卡车VPPS编码,发布稿附件,编制说明附件,历史版本附件,其他文件附件,修改单附件,关联文件附件,"};
String[] headerExcel = {"*企标类别,*标准年份,企标编号,*中文名称,英文名称,*文本状态,发布日期,企标实施日期,企标制修订状态,起草部门,代替企标编号,复审日期,起草人,采用标准,采标程度,引用标准,适用车型,能源类型,适用产品线,体系类别,备案日期,关联模块-乘用车VPPS编码,关联模块--卡车VPPS编码,发布稿附件,编制说明附件,历史版本附件,其他文件附件,修改单附件,关联文件附件,"};
//获取文件全称
String fileNameStr = file.getOriginalFilename();
@@ -2095,24 +2095,35 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Sheet sheet = workbook.getSheetAt(0);
if (sheet != null) {
StringBuilder sb = new StringBuilder();
Row row = sheet.getRow(1);
for (int i = 0; i < 29; i++) {
sb.append(row.getCell(i).getStringCellValue()).append(",");
}
//获取总条数
int rowNum = sheet.getLastRowNum();
int rowNum = sheet.getPhysicalNumberOfRows();
//循环遍历
for (int i = 0; i <= rowNum; i++) {
Row row = sheet.getRow(i);
Row headerRow = sheet.getRow(0);
for (int i = 1; i <= rowNum; i++) {
row = sheet.getRow(i);
Row headerRow = sheet.getRow(1);
boolean isBlank = sarLawsInfoEOService.isRowEmpty(row);
if (row != null && !isBlank) {
int columNos = headerRow.getLastCellNum();// 表头总共的列数
int columNos = row.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(CellType.STRING);
sb.append(cell.getStringCellValue() + ",");
if (i == 1) {
// cell.setCellType(CellType.STRING);
// sb.append(cell.getStringCellValue() + ",");
} else {
if (CellType.NUMERIC == cell.getCellType() && HSSFDateUtil.isCellDateFormatted(cell)) {
Date d = cell.getDateCellValue();
@@ -2123,7 +2134,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
}
}
} else {
if (i != 0) {
if (i != 0 && i != 1) {
rowList.put(headerCell.getStringCellValue(), "");
}
}
@@ -2137,19 +2148,136 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
return Result.error("fail", "读取失败,请严格按照模板文件导入数据");
}
SarBussStandAttrInfoExecl sarBussStandAttrInfo = new SarBussStandAttrInfoExecl();
if (i != 0) {
if (i != 0 && i != 1) {
String standSort = rowList.get("企标类别");
String standSort = rowList.get("*企标类别");
if (StringUtils.isNotBlank(standSort)) {
if (standSort.length() > 100) {
return Result.error("企标类别输入过长");
}
sarBussStandAttrInfo.setStandSort(standSort);
switch (standSort){
case "BZJ":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "FT":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q-HD":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q-IOUM":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/ASB":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/BFC":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/BQB":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/CBFC":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FD":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FL":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT A":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT B":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT E":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT F":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT G":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT M":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT P":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT Q":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT R":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT S":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT T":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT V":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT X":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT Y":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/FT Z":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/MGB":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/QCBFC":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/QCFLC":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/SGZGS":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/SH":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q/SY":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "QB/NE":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "QC/T":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "QJ/SH":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "Q房/AYJ":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "TFT":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "津Q/NK":
sarBussStandAttrInfo.setStandSort(standSort);
break;
case "鲁Q/LX":
sarBussStandAttrInfo.setStandSort(standSort);
break;
default:
return Result.error("请输入正确的企标类别");
}
} else {
return Result.error("企标类别不能为空");
}
String standYear = rowList.get("标准年份");
String standYear = rowList.get("*标准年份");
if (StringUtils.isNotBlank(standYear)) {
if (standYear.length() > 100) {
return Result.error("标准年份输入过长");
@@ -2162,7 +2290,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
String standNumber = rowList.get("企标编号");
sarBussStandAttrInfo.setStandNumber(standNumber);
String standName = rowList.get("中文名称");
String standName = rowList.get("*中文名称");
if (StringUtils.isNotBlank(standName)) {
if (standName.length() > 100) {
return Result.error("输入的标准名称过长");
@@ -2175,7 +2303,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
String standEnName = rowList.get("英文名称");
sarBussStandAttrInfo.setStandEnName(standEnName);
String textStatusBuss = rowList.get("文本状态");
String textStatusBuss = rowList.get("*文本状态");
if (StringUtils.isNotBlank(textStatusBuss)) {
if (textStatusBuss.length() > 200) {
return Result.error("输入的文本状态过长");
@@ -2207,7 +2335,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
sarBussStandAttrInfo.setTextStatusBuss("1w7cegukbs");
break;
default:
return Result.error("请提供确的文本状态");
return Result.error("请提供确的文本状态");
}
} else {
return Result.error("文本状态不能为空");
@@ -2259,15 +2387,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
sarBussStandAttrInfo.setQcrbuss(qcrbuss);
}
String bdtqbbhbuss = rowList.get("被代替企标编号");
sarBussStandAttrInfo.setBdtqbbhbuss(bdtqbbhbuss);
//// //采用标准 13
String cybz = rowList.get("采用标准");
sarBussStandAttrInfo.setCybz(cybz);
String wjscrybuss = rowList.get("文件上传人员");
sarBussStandAttrInfo.setWjscrybuss(wjscrybuss);
String userId = com.adc.da.util.LoginUserUtil.getUserId();
String userName = tsUserService.userIdByName(userId);
sarBussStandAttrInfo.setWjscrybuss(userName);
//// //采标程度 15
String cycd = rowList.get("采标程度");
@@ -72,4 +72,7 @@ public interface TsUserDao extends BaseMapper<TsUser> {
Integer selectUserByRole(@Param("role") RoleUserDTO roleSelectDTO);
List<TsUser> selectUserByRoleByPage(@Param("role") RoleUserDTO roleSelectDTO);
@Select("select UNAME from ts_user where USID = #{userId}")
String selectByName(String userId);
}
@@ -90,4 +90,6 @@ public interface ITsUserService extends IService<TsUser> {
List<UpDTO> selectNameById(List<String> strings,String type);
IPage<TsUser> getAllUsers(TsUser tsUser);
String userIdByName(String userId);
}
@@ -522,5 +522,11 @@ public class TsUserServiceImpl extends ServiceImpl<TsUserDao, TsUser> implements
return tsUserPage;
}
@Override
public String userIdByName(String userId) {
String userName = tsUserDao.selectByName(userId);
return userName;
}
}
@@ -68,7 +68,15 @@ public class FieldConvertUtil {
"在产车实施日期(项目),EOP实施日期(项目),实施说明,认证交付物,认证对象,监管类型,适用车辆类型,责任部门,相关部门,FO,项目评估角色," +
"文本说明,标签,要求类型,清单类型,入库模块";
public static String exportFieldName = "企标类别,标准年份,企标编号,中文名称,英文名称,文本状态,发布日期,企标实施日期,企标制修订状态,起草部门,代替企标编号,复审日期,起草人,被代替企标编号,采用标准,文件上传人员,采标程度,引用标准,适用车型,能源类型,适用产品线,体系类别,备案日期,关联模块-乘用车VPPS编码,关联模块--卡车VPPS编码,发布稿附件,编制说明附件,历史版本附件,其他文件附件,修改单附件,关联文件附件";
public static String exportName = "填写说明\n" +
"1.导入数据从第三行开始,第一行为填写说明,第二行为表头,第三行是正式数据\n" +
"2.所有带*号的字段必须填写\n" +
"3.状态,类别字段是单选属性,必须和系统中的对应字段选项相匹配\n" +
"4.适用车型,能源类型,适用产品线字段是多选属性,必须和系统中的对应字段选项相匹配,填写多个时采用英文或中文逗号分割\n" +
"5.发布日期,企标实施日期,复审日期字段为日期,必须精确到日\n" +
"6.编号,企标名称,企标英文名称字段为文本,填写文本内容";
public static String exportFieldName = "*企标类别,*标准年份,企标编号,*中文名称,英文名称,*文本状态,发布日期,企标实施日期,企标制修订状态,起草部门,代替企标编号,复审日期,起草人,采用标准,采标程度,引用标准,适用车型,能源类型,适用产品线,体系类别,备案日期,关联模块-乘用车VPPS编码,关联模块--卡车VPPS编码,发布稿附件,编制说明附件,历史版本附件,其他文件附件,修改单附件,关联文件附件";
/***
* @Description: Clob类型 转String