|
@@ -2,6 +2,7 @@ package cn.ezhizao.project.business.order.controller;
|
|
|
|
|
|
import java.io.BufferedInputStream;
|
|
|
import java.io.OutputStream;
|
|
|
+import java.lang.reflect.Field;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -12,9 +13,11 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
import cn.ezhizao.common.exception.ServiceException;
|
|
|
import cn.ezhizao.common.utils.SecurityUtils;
|
|
|
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
|
|
|
import cn.ezhizao.project.business.channel.domain.BizChannel;
|
|
|
import cn.ezhizao.project.business.channel.service.IBizChannelService;
|
|
|
import cn.ezhizao.project.business.company.domain.BizCompany;
|
|
|
+import cn.ezhizao.project.business.company.domain.BizCompanyImport;
|
|
|
import cn.ezhizao.project.business.company.service.IBizCompanyService;
|
|
|
import cn.ezhizao.project.business.order.domain.*;
|
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailProcessService;
|
|
@@ -317,6 +320,14 @@ public class BizArchiveInputController extends BaseController {
|
|
|
public AjaxResult importLoop(MultipartFile file) throws Exception {
|
|
|
ExcelUtil<OrderExcelImportLoopModel> util = new ExcelUtil<>(OrderExcelImportLoopModel.class);
|
|
|
List<OrderExcelImportLoopModel> orderList = util.importExcel(file.getInputStream());
|
|
|
+ // 获取 入Excel 表头字段
|
|
|
+ List<String> excelHeaders = util.readExcelHeaders(file.getInputStream());
|
|
|
+ //获取实体类字段
|
|
|
+ List<String> names=getExcelAnnotatedFields(OrderExcelImportLoopModel.class);
|
|
|
+ //如果不存在模板中的字段,返回错误
|
|
|
+ if (!names.containsAll(excelHeaders)) {
|
|
|
+ return error("导入数据与模板不匹配!");
|
|
|
+ }
|
|
|
String message = bizArchiveInputService.importLoop(orderList, SecurityUtils.getUserId(), getTenantId() == null ? 0 : getTenantId());
|
|
|
return success(message);
|
|
|
}
|
|
@@ -324,12 +335,34 @@ public class BizArchiveInputController extends BaseController {
|
|
|
@PreAuthorize("@ss.hasPermi('business:archive:order:import')")
|
|
|
@PostMapping("/importOnce")
|
|
|
public AjaxResult importOnce(MultipartFile file) throws Exception {
|
|
|
+
|
|
|
ExcelUtil<OrderExcelImportOnceModel> util = new ExcelUtil<>(OrderExcelImportOnceModel.class);
|
|
|
List<OrderExcelImportOnceModel> orderList = util.importExcel(file.getInputStream());
|
|
|
+ // 获取 入Excel 表头字段
|
|
|
+ List<String> excelHeaders = util.readExcelHeaders(file.getInputStream());
|
|
|
+ //获取实体类字段
|
|
|
+ List<String> names=getExcelAnnotatedFields(OrderExcelImportOnceModel.class);
|
|
|
+ //如果不存在模板中的字段,返回错误
|
|
|
+ if (!names.containsAll(excelHeaders)) {
|
|
|
+ return error("导入数据与模板不匹配!");
|
|
|
+ }
|
|
|
String message = bizArchiveInputService.importOnce(orderList, SecurityUtils.getUserId(), getTenantId() == null ? 0 : getTenantId());
|
|
|
return success(message);
|
|
|
}
|
|
|
|
|
|
+ public List<String> getExcelAnnotatedFields(Class<?> clazz) {
|
|
|
+ Field[] fields = clazz.getDeclaredFields();
|
|
|
+ List<String> result = new ArrayList<>();
|
|
|
+ for (Field field : fields) {
|
|
|
+ if (field.isAnnotationPresent(Excel.class)) {
|
|
|
+ Excel excelAnnotation = field.getAnnotation(Excel.class);
|
|
|
+ String fieldName = excelAnnotation.name();
|
|
|
+ result.add(fieldName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
@Log(title = "合同模板导出", businessType = BusinessType.EXPORT)
|
|
|
@PreAuthorize("@ss.hasPermi('business:archive:order:export')")
|
|
|
@PostMapping("/exportLoopTemplate")
|