|  |  | 
 |  |  |  | 
 |  |  | import cn.afterturn.easypoi.excel.annotation.Excel; | 
 |  |  | import cn.afterturn.easypoi.excel.entity.ImportParams; | 
 |  |  | import com.alibaba.excel.EasyExcel; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
 |  |  | import com.vincent.rsf.framework.common.Cools; | 
 |  |  | import com.vincent.rsf.framework.common.SpringUtils; | 
 |  |  | import com.vincent.rsf.framework.exception.CoolException; | 
 |  |  | import com.vincent.rsf.server.manager.entity.Matnr; | 
 |  |  | import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate; | 
 |  |  | import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment; | 
 |  |  | import com.vincent.rsf.server.system.entity.Fields; | 
 |  |  | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.poi.hssf.usermodel.HSSFWorkbook; | 
 |  |  | import org.apache.poi.ss.formula.functions.T; | 
 |  |  | import org.apache.poi.ss.usermodel.*; | 
 |  |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | 
 |  |  |     public static ImportParams getDefaultImportParams() { | 
 |  |  |         ImportParams importParams = new ImportParams(); | 
 |  |  |         importParams.setTitleRows(0); | 
 |  |  | //        importParams.setNeedVerify(true); | 
 |  |  |         importParams.setHeadRows(1); | 
 |  |  |         importParams.setSheetNum(1); | 
 |  |  |         return importParams; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * @author Ryan | 
 |  |  |      * @description Excel导出Map格式表格 | 
 |  |  |      * @param | 
 |  |  |      * @return | 
 |  |  |      * @time 2025/3/18 09:30 | 
 |  |  |      */ | 
 |  |  |     public static void exportForMap(HttpServletResponse response, Class cls, String fileName, List<List<Object>> data) { | 
 |  |  |         try { | 
 |  |  |             response.setContentType("application/octet-stream; charset=utf-8"); | 
 |  |  |             response.setCharacterEncoding("utf-8"); | 
 |  |  |             String name = URLEncoder.encode(fileName, "UTF-8"); | 
 |  |  |             response.setHeader("Content-disposition", "attachment;filename=" + name + ".xlsx"); | 
 |  |  |             EasyExcel.write(response.getOutputStream()).head(getHeader(cls)).sheet().doWrite(null); | 
 |  |  |         } catch (IOException exception) { | 
 |  |  |             exception.printStackTrace(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * @author Ryan | 
 |  |  |      * @description excel导出map模式 | 
 |  |  |      * @param  Class<T> 模板类型 | 
 |  |  |      * @return  List<List<String>> 表头信息 | 
 |  |  |      * @time 2025/3/18 09:26 | 
 |  |  |      */ | 
 |  |  |     public static List<List<String>> getHeader(Class<T> t) { | 
 |  |  |         List<List<String>> headList = new ArrayList<List<String>>(); | 
 |  |  |         if (t.getSuperclass().isInstance(MatnrsTemplate.class)) { | 
 |  |  |             Field[] allFields = Cools.getAllFields(t); | 
 |  |  |             if (Objects.isNull(allFields) ||  allFields.length < 1) { | 
 |  |  |                 throw new CoolException("模板列不能为空!!"); | 
 |  |  |             } | 
 |  |  |             for (Field field : allFields) { | 
 |  |  |                 List<String> list = new ArrayList<String>(); | 
 |  |  |                 String fieldName = ""; | 
 |  |  |                 if (field.isAnnotationPresent(Excel.class)){ | 
 |  |  |                     fieldName = field.getAnnotation(Excel.class).name(); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 list.add(field.getName()); | 
 |  |  |                 headList.add(list); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             FieldsService itemService = SpringUtils.getBean(FieldsService.class); | 
 |  |  |             List<Fields> sysFields = itemService.list(new LambdaQueryWrapper<Fields>() | 
 |  |  |                     .eq(Fields::getStatus, 1) | 
 |  |  |                     .eq(Fields::getFlagEnable, 1)); | 
 |  |  |             //添加扩展字段别名 | 
 |  |  |             if (!sysFields.isEmpty()) { | 
 |  |  |                 sysFields.forEach(fields1 -> { | 
 |  |  |                     List<String> list = new ArrayList<String>(); | 
 |  |  |                     list.add(fields1.getFieldsAlise()); | 
 |  |  |                     headList.add(list); | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return headList; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** |