|
|
|
@@ -188,22 +188,21 @@ public class AsyncTask { |
|
|
|
} |
|
|
|
|
|
|
|
@Async |
|
|
|
public void importExcelPoiData(File file, MallUserInfo user, String importKey,HttpServletRequest request, HttpServletResponse response) { |
|
|
|
public void importCardPriceData(File file, MallUserInfo user, String importKey) { |
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
// 需要验证 |
|
|
|
params.setImportFields(new String[]{"服务商POI_ID", "POI名称", "省份", "城市", "地址", "经度", "纬度", "高德ID(非必填)", |
|
|
|
"已匹配POI_ID", "已匹配POI名称", "已匹配POI省份", "已匹配POI城市", "已匹配POI地址", "未匹配原因", "其他信息","POI导入结果"}); |
|
|
|
IExcelDataHandler<MerchantPoiT> handler = new AsyncTask.PoiExcelHandler(); |
|
|
|
handler.setNeedHandlerFields(new String[]{"服务商POI_ID","已匹配POI_ID"}); |
|
|
|
params.setImportFields(new String[]{"*卡ID", "*面额(元)"}); |
|
|
|
IExcelDataHandler<WxCardPriceTemplate> handler = new AsyncTask.CardPriceExcelHandler(); |
|
|
|
handler.setNeedHandlerFields(new String[]{"*卡ID","*面额(元)"}); |
|
|
|
params.setNeedVerify(true); |
|
|
|
|
|
|
|
ExcelImportResult<MerchantPoiT> datalist = null; |
|
|
|
ExcelImportResult<WxCardPriceTemplate> datalist = null; |
|
|
|
|
|
|
|
try { |
|
|
|
datalist = ExcelImportUtil.importExcelMore(file, MerchantPoiT.class, params); |
|
|
|
datalist = ExcelImportUtil.importExcelMore(file, WxCardPriceTemplate.class, params); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage(),e); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
set_redis_value(importKey, "1", "0", "0", "1", true); |
|
|
|
logger.error(e.getMessage()); |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
return; |
|
|
|
@@ -212,58 +211,110 @@ public class AsyncTask { |
|
|
|
file.delete(); |
|
|
|
|
|
|
|
if(datalist == null) { |
|
|
|
logger.error("导入模板失败: 模板数据解析失败"); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
logger.error("导入模板失败: 模板数据解析失败"); |
|
|
|
set_redis_value(importKey, "1", "0", "0", "1", true); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
List<MerchantPoiT> successList = datalist.getList(); |
|
|
|
|
|
|
|
List<WxCardPriceTemplate> successList = datalist.getList(); |
|
|
|
List<WxCardPriceTemplate> failList = datalist.getFailList(); |
|
|
|
|
|
|
|
logger.info("验证通过的数量: " + successList.size()); |
|
|
|
logger.info("验证未通过的数量: " + failList.size()); |
|
|
|
|
|
|
|
int total = successList.size() + failList.size(); |
|
|
|
int all_success = successList.size(); |
|
|
|
int all_fail = failList.size(); |
|
|
|
|
|
|
|
//添加到redis里 |
|
|
|
set_redis_value(importKey, "" + total, "" + all_success, "0", "" + all_fail, total == all_fail); |
|
|
|
|
|
|
|
if(successList.size() > 0) { |
|
|
|
try { |
|
|
|
successList.parallelStream().forEach(poiBase -> { |
|
|
|
try { |
|
|
|
ttMerchantPoiService.importOneMem(user, poiBase); |
|
|
|
wxCouponPasswordService.importPrice(user,importKey, poiBase); |
|
|
|
} catch (UnknownSessionException ue) { |
|
|
|
logger.error("session :"+ue.getMessage()); |
|
|
|
} |
|
|
|
}); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
ExportParams exportParams = new ExportParams(); |
|
|
|
exportParams.setType(ExcelType.XSSF); |
|
|
|
Workbook workBook = ExcelExportUtil.exportExcel(exportParams, MerchantPoiT.class, successList); |
|
|
|
exportExcel(request, response, workBook, "POI导入-结果.xlsx"); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("导入模板失败:"+e.getMessage(),e); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
set_redis_value(importKey, "1", "0", "0", "1", true); |
|
|
|
e.printStackTrace(); |
|
|
|
logger.error("导入模板失败:"+e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void exportExcelPoiDataAddLocationForNew(TenantEntity tenantEntity,String gaodeKey,File file,HttpServletRequest request, HttpServletResponse response) throws Exception { |
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
private ExcelImportResult handleImportFile(String importKey,File file,Class dataClazz,String[] importFields,String[] needFields,IExcelDataHandler handler) { |
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
// 需要验证 |
|
|
|
String[] headers = new String[]{"门店名称", "门店ID", "城市", "详细地址","管理员手机号","富茂系统商户ID", "富茂系统商户名称","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度","高德匹配备注","POI导入日志"}; |
|
|
|
params.setImportFields(headers); |
|
|
|
IExcelDataHandler<MerchantPoiTNew> handler = new AsyncTask.PoiNewExcelHandler(); |
|
|
|
handler.setNeedHandlerFields(new String[]{"门店名称", "门店ID", "城市", "详细地址"}); |
|
|
|
params.setImportFields(importFields); |
|
|
|
handler.setNeedHandlerFields(needFields); |
|
|
|
params.setNeedVerify(true); |
|
|
|
|
|
|
|
ExcelImportResult<MerchantPoiTNew> datalist = null; |
|
|
|
|
|
|
|
ExcelImportResult<MerchantPoiT> datalist = null; |
|
|
|
try { |
|
|
|
datalist = ExcelImportUtil.importExcelMore(file, MerchantPoiTNew.class, params); |
|
|
|
datalist = ExcelImportUtil.importExcelMore(file, dataClazz, params); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("exportExcelPoiDataAddLocationForNew import error.",e); |
|
|
|
logger.error(e.getMessage(),e); |
|
|
|
if (StringUtils.isNotBlank(importKey)) { |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
} |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); |
|
|
|
return null; |
|
|
|
} |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
|
|
|
|
if(datalist == null) { |
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"解析模版失败,请检查模版格式"); |
|
|
|
logger.error("导入模板失败: 模板数据解析失败"); |
|
|
|
if (StringUtils.isNotBlank(importKey)) { |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
return datalist; |
|
|
|
} |
|
|
|
|
|
|
|
@Async |
|
|
|
public void importExcelPoiData(File file, MallUserInfo user, String importKey,HttpServletRequest request, HttpServletResponse response) { |
|
|
|
String[] importFields = new String[]{"服务商POI_ID", "POI名称", "省份", "城市", "地址", "经度", "纬度", "高德ID(非必填)", |
|
|
|
"已匹配POI_ID", "已匹配POI名称", "已匹配POI省份", "已匹配POI城市", "已匹配POI地址", "未匹配原因", "其他信息","POI导入结果"}; |
|
|
|
String[] needFields = new String[]{"服务商POI_ID","已匹配POI_ID"}; |
|
|
|
ExcelImportResult<MerchantPoiT> datalist = handleImportFile(importKey,file,MerchantPoiT.class,importFields,needFields,new AsyncTask.PoiExcelHandler()); |
|
|
|
if (null == datalist) { |
|
|
|
return; |
|
|
|
} |
|
|
|
List<MerchantPoiT> successList = datalist.getList(); |
|
|
|
|
|
|
|
if(successList.size() > 0) { |
|
|
|
try { |
|
|
|
successList.parallelStream().forEach(poiBase -> { |
|
|
|
try { |
|
|
|
ttMerchantPoiService.importOneMem(user, poiBase); |
|
|
|
} catch (UnknownSessionException ue) { |
|
|
|
logger.error("session :"+ue.getMessage()); |
|
|
|
} |
|
|
|
}); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
exportExcel(request, response, successList,MerchantPoiT.class, "POI导入-结果.xlsx"); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("导入模板失败:"+e.getMessage(),e); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static final String[] poiImportFields = new String[]{"门店名称", "门店ID", "城市", "详细地址","管理员手机号","富茂系统商户ID", "富茂系统商户名称","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度","高德匹配备注","POI导入日志"}; |
|
|
|
|
|
|
|
public void exportExcelPoiDataAddLocationForNew(TenantEntity tenantEntity,String gaodeKey,File file,HttpServletRequest request, HttpServletResponse response) throws Exception { |
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
// 需要验证 |
|
|
|
String[] needFields = new String[]{"门店名称", "门店ID", "城市", "详细地址"}; |
|
|
|
ExcelImportResult<MerchantPoiTNew> datalist = handleImportFile(null,file,MerchantPoiTNew.class,poiImportFields,needFields,new AsyncTask.PoiNewExcelHandler()); |
|
|
|
if (null == datalist) { |
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"解析模版失败,请检查模版格式"); |
|
|
|
} |
|
|
|
|
|
|
|
List<MerchantPoiTNew> successList = datalist.getList(); |
|
|
|
@@ -327,24 +378,22 @@ public class AsyncTask { |
|
|
|
poiBase.setGaodeRemark("未匹配到信息"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} catch (UnknownSessionException ue) { |
|
|
|
logger.error("session :"+ue.getMessage()); |
|
|
|
poiBase.setGaodeRemark("查询高德API失败"); |
|
|
|
} |
|
|
|
}); |
|
|
|
ExportParams exportParams = new ExportParams(); |
|
|
|
exportParams.setType(ExcelType.XSSF); |
|
|
|
Workbook workBook = ExcelExportUtil.exportExcel(exportParams, MerchantPoiTNew.class, successList); |
|
|
|
exportExcel(request, response, workBook, "POI匹配模版-高德.xlsx"); |
|
|
|
exportExcel(request, response, successList,MerchantPoiTNew.class, "POI匹配模版-高德.xlsx"); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("更新地理信息失败:"+e.getMessage(),e); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private static void exportExcel(HttpServletRequest request, HttpServletResponse response, Workbook wb, String fileName) throws Exception { |
|
|
|
private static void exportExcel(HttpServletRequest request, HttpServletResponse response,List successList, Class dataClass, String fileName) throws Exception { |
|
|
|
ExportParams exportParams = new ExportParams(); |
|
|
|
exportParams.setType(ExcelType.XSSF); |
|
|
|
Workbook workBook = ExcelExportUtil.exportExcel(exportParams, dataClass, successList); |
|
|
|
response.setContentType("application/octet-stream;charset=UTF-8"); |
|
|
|
//response.setHeader("Content-Type", "application/vnd.ms-excel");//xls |
|
|
|
response.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//xlsx |
|
|
|
@@ -352,39 +401,18 @@ public class AsyncTask { |
|
|
|
response.addHeader("Pargam", "no-cache"); |
|
|
|
response.addHeader("Cache-Control", "no-cache"); |
|
|
|
OutputStream out = response.getOutputStream(); |
|
|
|
wb.write(out); |
|
|
|
workBook.write(out); |
|
|
|
out.flush(); |
|
|
|
out.close(); |
|
|
|
} |
|
|
|
|
|
|
|
@Async |
|
|
|
public void importExcelPoiDataForNew(File file, MallUserInfo user, String importKey,HttpServletRequest request, HttpServletResponse response) { |
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
// 需要验证 |
|
|
|
String[] headers = new String[]{"门店名称", "门店ID", "城市", "详细地址","管理员手机号","富茂系统商户ID", "富茂系统商户名称","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度","高德匹配备注","POI导入日志"}; |
|
|
|
params.setImportFields(headers); |
|
|
|
IExcelDataHandler<MerchantPoiTNew> handler = new AsyncTask.PoiNewExcelHandler(); |
|
|
|
handler.setNeedHandlerFields(new String[]{"门店ID","富茂系统商户ID","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度"}); |
|
|
|
params.setNeedVerify(true); |
|
|
|
|
|
|
|
ExcelImportResult<MerchantPoiTNew> datalist = null; |
|
|
|
|
|
|
|
try { |
|
|
|
datalist = ExcelImportUtil.importExcelMore(file, MerchantPoiTNew.class, params); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("importExcelPoiDataForNew error.",e); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
return; |
|
|
|
} |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
|
|
|
|
if(datalist == null) { |
|
|
|
logger.error("导入模板失败: 模板数据解析失败"); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
return; |
|
|
|
String[] needFields = new String[]{"门店ID","富茂系统商户ID","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度"}; |
|
|
|
ExcelImportResult<MerchantPoiTNew> datalist = handleImportFile(null,file,MerchantPoiTNew.class,poiImportFields,needFields,new AsyncTask.PoiNewExcelHandler()); |
|
|
|
if (null == datalist) { |
|
|
|
return ; |
|
|
|
} |
|
|
|
|
|
|
|
List<MerchantPoiTNew> successList = datalist.getList(); |
|
|
|
@@ -398,11 +426,7 @@ public class AsyncTask { |
|
|
|
} |
|
|
|
}); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
ExportParams exportParams = new ExportParams(); |
|
|
|
exportParams.setType(ExcelType.XSSF); |
|
|
|
Workbook workBook = ExcelExportUtil.exportExcel(exportParams, MerchantPoiTNew.class, successList); |
|
|
|
exportExcel(request, response, workBook, "POI导入-结果.xlsx"); |
|
|
|
|
|
|
|
exportExcel(request, response, successList,MerchantPoiTNew.class, "POI导入-结果.xlsx"); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("导入模板失败:"+e.getMessage(),e); |
|
|
|
stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); |
|
|
|
@@ -410,62 +434,5 @@ public class AsyncTask { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Async |
|
|
|
public void importCardPriceData(File file, MallUserInfo user, String importKey) { |
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
// 需要验证 |
|
|
|
params.setImportFields(new String[]{"*卡ID", "*面额(元)"}); |
|
|
|
IExcelDataHandler<WxCardPriceTemplate> handler = new AsyncTask.CardPriceExcelHandler(); |
|
|
|
handler.setNeedHandlerFields(new String[]{"*卡ID","*面额(元)"}); |
|
|
|
params.setNeedVerify(true); |
|
|
|
|
|
|
|
ExcelImportResult<WxCardPriceTemplate> datalist = null; |
|
|
|
|
|
|
|
try { |
|
|
|
datalist = ExcelImportUtil.importExcelMore(file, WxCardPriceTemplate.class, params); |
|
|
|
} catch (Exception e) { |
|
|
|
set_redis_value(importKey, "1", "0", "0", "1", true); |
|
|
|
logger.error(e.getMessage()); |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
return; |
|
|
|
} |
|
|
|
// 删除缓存文件 |
|
|
|
file.delete(); |
|
|
|
|
|
|
|
if(datalist == null) { |
|
|
|
logger.error("导入模板失败: 模板数据解析失败"); |
|
|
|
set_redis_value(importKey, "1", "0", "0", "1", true); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
List<WxCardPriceTemplate> successList = datalist.getList(); |
|
|
|
List<WxCardPriceTemplate> failList = datalist.getFailList(); |
|
|
|
|
|
|
|
logger.info("验证通过的数量: " + successList.size()); |
|
|
|
logger.info("验证未通过的数量: " + failList.size()); |
|
|
|
|
|
|
|
int total = successList.size() + failList.size(); |
|
|
|
int all_success = successList.size(); |
|
|
|
int all_fail = failList.size(); |
|
|
|
|
|
|
|
//添加到redis里 |
|
|
|
set_redis_value(importKey, "" + total, "" + all_success, "0", "" + all_fail, total == all_fail); |
|
|
|
|
|
|
|
if(successList.size() > 0) { |
|
|
|
try { |
|
|
|
successList.parallelStream().forEach(poiBase -> { |
|
|
|
try { |
|
|
|
wxCouponPasswordService.importPrice(user,importKey, poiBase); |
|
|
|
} catch (UnknownSessionException ue) { |
|
|
|
logger.error("session :"+ue.getMessage()); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
set_redis_value(importKey, "1", "0", "0", "1", true); |
|
|
|
e.printStackTrace(); |
|
|
|
logger.error("导入模板失败:"+e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |