package com.jilongda.common.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import com.jilongda.common.basic.ApiResult; import com.jilongda.common.basic.Constant; import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.util.List; /** * 导出返回信息 */ @Slf4j public class ImportExcelUtil { /** * @param errorLines 错误行数 * @param successLines 成功行数 * @param errorMessage 错误信息 * @return * @throws IOException */ public static ApiResult importReturnMsg(int errorLines, int successLines, List errorMessage) throws IOException { if (errorLines == 0) { return ApiResult.success("共" + successLines + "行数据全部导入成功!"); } else { JSONObject result = new JSONObject(5); int totalCount = successLines + errorLines; result.put("totalCount", totalCount); result.put("errorCount", errorLines); result.put("errorMessage", errorMessage); result.put("successCount", successLines); result.put("msg", "总上传行数:" + totalCount + ",已导入行数:" + successLines + ",错误行数:" + errorLines); return ApiResult.success(JSON.toJSONString(result)); } } public static List importDateSave(List list, Class serviceClass, List errorMessage, String errorFlag) { IService bean = (IService) SpringContextUtils.getBean(serviceClass); for (int i = 0; i < list.size(); i++) { try { log.info("保存前=================================="); boolean save = bean.save(list.get(i)); log.info("保存后=================================="); if (!save) { throw new Exception(errorFlag); } } catch (Exception e) { String message = e.getMessage().toLowerCase(); int lineNumber = i + 1; // 通过索引名判断出错信息 if (message.contains(Constant.PRODUCT_NUMBER_UNI)) { errorMessage.add("第 " + lineNumber + " 行:商品编号已经存在,忽略导入。"); } else if (message.contains(Constant.PHONE_UNI)) { errorMessage.add("第 " + lineNumber + " 行:人员手机号已经存在,忽略导入。"); } else if (message.contains(Constant.SHOP_NUMBER_UNI)) { errorMessage.add("第 " + lineNumber + " 行:门店编号已经存在,忽略导入。"); } else if (message.contains(Constant.SHOP_OWN_NUMBER_UNI)) { errorMessage.add("第 " + lineNumber + " 行:门店系统生成编号已经存在,忽略导入。"); } else { errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入"); log.error(e.getMessage(), e); } } } return errorMessage; } public static List importUserSave(List list, Class serviceClass, List errorMessage, String errorFlag) { IService bean = (IService) SpringContextUtils.getBean(serviceClass); for (int i = 0; i < list.size(); i++) { try { log.info("保存前=================================="); boolean save = bean.save(list.get(i)); log.info("保存后=================================="); if (!save) { throw new Exception(errorFlag); } } catch (Exception e) { String message = e.getMessage().toLowerCase(); int lineNumber = i + 1; // 通过索引名判断出错信息 if (message.contains(Constant.PRODUCT_NUMBER_UNI)) { errorMessage.add("第 " + lineNumber + " 行:商品编号已经存在,忽略导入。"); } else if (message.contains(Constant.PHONE_UNI)) { errorMessage.add("第 " + lineNumber + " 行:人员手机号已经存在,忽略导入。"); } else if (message.contains(Constant.SHOP_NUMBER_UNI)) { errorMessage.add("第 " + lineNumber + " 行:门店编号已经存在,忽略导入。"); } else if (message.contains(Constant.SHOP_OWN_NUMBER_UNI)) { errorMessage.add("第 " + lineNumber + " 行:门店系统生成编号已经存在,忽略导入。"); } else { errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入"); log.error(e.getMessage(), e); } } } return errorMessage; } }