备注:红色为重点关注的内容,绿色表示修改的内容
1.原始代码

ToolHistoricalPriceControl.java
@RequestMapping("fileImport")
  public String fileImport(@RequestParam("file") MultipartFile file, Model model) {
    Map<String, Object> results = toolHistoricalPriceService.fileImport(file);
    model.addAllAttributes(results);
    return "tool/tool_add_fileImport";
  }

ToolHistoricalPriceServiceImpl.java
@Transactional
  @Override
  @SuppressWarnings("unchecked")
  public Map<String, Object> fileImport(MultipartFile file) {

List<String> msgs = new ArrayList<>();

Map<String, Object> results = new HashMap<>();

String name = null;
    try {
      name = FileUploadUtil.uploadFileReturnName(file, tempFilePath);
    } catch (IOException e) {
      e.printStackTrace();
    }
    if (name == null) {
      msgs.add("文件上传失败");
      results.put("msgs", msgs);
      return results;
    }
    ExcelReader excelReader = new ExcelReader();

Map<String, Object> fileContent = excelReader.readExcelContent(name);

// 获取标题(楼盘名称)
    Map<String, Integer> titleMap = (Map<String, Integer>) fileContent.get("title");

List<Map<Integer, String>> datas = (List<Map<Integer, String>>) fileContent.get("data");

// 用于计算导入数据的条数
    int counts = 0;
    // 用于判断获取标题栏
    int count = 0;
    // 创建线程池
    // ExecutorService exs = Executors.newFixedThreadPool(5);
    // List<SaveTask> tasks = new ArrayList<>();
    // List<Future<ErrorObject>> futures = new ArrayList<>();
    UserObject user = UserObjectHelper.currentUserObject();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
    long datastart = System.currentTimeMillis();
    List<ToolHistoricalPrice> prices = new ArrayList<>();

for (Map<Integer, String> data : datas) {
      List<HbDictionary> list = dictionaryService.queryByKeyword(data.get(titleMap.get("楼盘名")));

if (list.isEmpty()) {
        // throw new ErpErrorException(data.get(titleMap.get("楼盘名")).toString()
        // + "不存在,无法导入");
        msgs.add("楼盘[" + data.get(titleMap.get("楼盘名")) + "]不存在");
        continue;
      }
      HbArea hbarea = hbAreaService.findParentAreaName(list.get(0).getCityName());
      ToolHistoricalPrice toolHistoricalPrice = new ToolHistoricalPrice();

if (hbarea != null) {
        toolHistoricalPrice.setCity(hbarea.getAreaName());
      } else {
        toolHistoricalPrice.setCity("");
      }
      // 设置楼盘名称
      toolHistoricalPrice.setBuildingId(list.get(0).getBillNo());
      if (StringUtils.isBlank(data.get(titleMap.get("楼盘名")))) {
        // throw new ErpErrorException(data.get(titleMap.get("楼盘名")).toString()
        // + "不存在,无法导入");
        msgs.add("楼盘名为空!");
        continue;
      }

toolHistoricalPrice.setBuildingName(data.get(titleMap.get("楼盘名")));
      toolHistoricalPrice.setArea(list.get(0).getAreaName());
      toolHistoricalPrice.setHouseType(
          data.get(titleMap.get("室(个)")) + "房" + StringUtils.trimToEmpty(data.get(titleMap.get("厅数(个)"))));
      toolHistoricalPrice.setDeptId(user.getDeptId());
      toolHistoricalPrice.setDeptName(user.getDeptName());
      toolHistoricalPrice.setUserName(user.getName());

toolHistoricalPrice.setPrice(
          new BigDecimal(StringUtils.isBlank(data.get(titleMap.get("租金(元)"))) ? "0" : data.get(titleMap.get("租金(元)"))));

toolHistoricalPrice.setPriceSource("链家");
      toolHistoricalPrice.setProportion(new BigDecimal(0));
      if (StringUtils.isNotBlank(list.get(0).getCityName())) {
        toolHistoricalPrice.setRegion(list.get(0).getCityName());
      } else {
        toolHistoricalPrice.setRegion("");
      }
      try {
        toolHistoricalPrice.setCheckDate(StringUtils.trimToEmpty(data.get(titleMap.get("日期"))).toString() == null
            || StringUtils.trimToEmpty(data.get(titleMap.get("日期"))).toString() == "" ? sdf.parse("0000.00.00")
                : sdf.parse(data.get(titleMap.get("日期"))));
      } catch (ParseException e) {
        e.printStackTrace();
      }

// 统计无法导入的数据的原因
      prices.add(toolHistoricalPrice);
      counts++;
    }
    toolHistoricalPriceRepository.save(prices);
    // 保存数据

long dataend = System.currentTimeMillis();
    results.put("msgs", msgs);
    results.put("total", counts);
    // results.put("title", dictName);
    log.debug("数据存储耗时:" + (dataend - datastart));
    return results;

}

2.优化代码
ToolHistoricalPriceServiceImpl.java
@Transactional
  @Override
  @SuppressWarnings("unchecked")
  public Map<String, Object> fileImport(MultipartFile file) {

List<String> msgs = new ArrayList<>();

Map<String, Object> results = new HashMap<>();

String name = null;
    try {
      name = FileUploadUtil.uploadFileReturnName(file, tempFilePath);
    } catch (IOException e) {
      e.printStackTrace();
    }
    if (name == null) {
      msgs.add("文件上传失败");
      results.put("msgs", msgs);
      return results;
    }
    ExcelReader excelReader = new ExcelReader();

Map<String, Object> fileContent = excelReader.readExcelContent(name);

// 获取标题(楼盘名称)
    Map<String, Integer> titleMap = (Map<String, Integer>) fileContent.get("title");

List<Map<Integer, String>> datas = (List<Map<Integer, String>>) fileContent.get("data");

// 用于计算导入数据的条数
    int counts = 0;
    // 用于判断获取标题栏
    int count = 0;
    // 创建线程池
    // ExecutorService exs = Executors.newFixedThreadPool(5);
    // List<SaveTask> tasks = new ArrayList<>();
    // List<Future<ErrorObject>> futures = new ArrayList<>();
    UserObject user = UserObjectHelper.currentUserObject();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
    long datastart = System.currentTimeMillis();
    List<ToolHistoricalPrice> prices = new ArrayList<>();
    Map<String, HbDictionary> map = DataUtil.findHbDictionaryMap();
    Map<String, HbArea> pMap = DataUtil.findPathMap();
    Map<String, HbArea> bMap = DataUtil.findBillNoMap();
    for (Map<Integer, String> data : datas) {
      HbDictionary hbDictionary = map.get(data.get(titleMap.get("楼盘名")));
      // List<HbDictionary> list =
      // dictionaryService.queryByKeyword(data.get(titleMap.get("楼盘名")));

if (hbDictionary == null) {
        // throw new ErpErrorException(data.get(titleMap.get("楼盘名")).toString()
        // + "不存在,无法导入");
        msgs.add("楼盘[" + data.get(titleMap.get("楼盘名")) + "]不存在");
        continue;
      }
      // HbArea hbarea =
      // hbAreaService.findParentAreaName(hbDictionary.getCityName());
      ToolHistoricalPrice toolHistoricalPrice = new ToolHistoricalPrice();
      String code = hbDictionary.getPath().substring(0, 2);
      if (code.equalsIgnoreCase("SZ")) {
        toolHistoricalPrice.setCity("深圳市");
      }
      if (code.equalsIgnoreCase("GZ")) {
        toolHistoricalPrice.setCity("广州市");
      }
      // 设置楼盘名称
      toolHistoricalPrice.setBuildingId(hbDictionary.getBillNo());
      if (StringUtils.isBlank(data.get(titleMap.get("楼盘名")))) {
        // throw new ErpErrorException(data.get(titleMap.get("楼盘名")).toString()
        // + "不存在,无法导入");
        msgs.add("楼盘名为空!");
        continue;
      }

toolHistoricalPrice.setBuildingName(data.get(titleMap.get("楼盘名")));
      toolHistoricalPrice.setArea(hbDictionary.getAreaName());
      toolHistoricalPrice.setHouseType(
          data.get(titleMap.get("室(个)")) + "房" + StringUtils.trimToEmpty(data.get(titleMap.get("厅数(个)"))));
      toolHistoricalPrice.setDeptId(user.getDeptId());
      toolHistoricalPrice.setDeptName(user.getDeptName());
      toolHistoricalPrice.setUserName(user.getName());

toolHistoricalPrice.setPrice(
          new BigDecimal(StringUtils.isBlank(data.get(titleMap.get("租金(元)"))) ? "0" : data.get(titleMap.get("租金(元)"))));

toolHistoricalPrice.setPriceSource("链家");
      toolHistoricalPrice.setProportion(new BigDecimal(0));
      HbArea hbArea = pMap.get(hbDictionary.getPath());
      if (hbArea != null) {
        String billNo = pMap.get(hbDictionary.getPath()).getParentBillNo();
        if (billNo.equals("0")) {// 顶级
          toolHistoricalPrice.setRegion(toolHistoricalPrice.getCity());
        } else {
          String regionName = bMap.get(billNo).getAreaName();
          if (StringUtils.isNotBlank(regionName)) {
            toolHistoricalPrice.setRegion(regionName);
          } else {
            toolHistoricalPrice.setRegion("");
          }
        }
      } else {
        toolHistoricalPrice.setRegion("");
      }

try {
        toolHistoricalPrice.setCheckDate(StringUtils.trimToEmpty(data.get(titleMap.get("日期"))).toString() == null
            || StringUtils.trimToEmpty(data.get(titleMap.get("日期"))).toString() == "" ? sdf.parse("0000.00.00")
                : sdf.parse(data.get(titleMap.get("日期"))));
      } catch (ParseException e) {
        e.printStackTrace();
      }

// 统计无法导入的数据的原因
      prices.add(toolHistoricalPrice);
      counts++;
    }
    toolHistoricalPriceRepository.save(prices);
    // 保存数据

long dataend = System.currentTimeMillis();
    results.put("msgs", msgs);
    results.put("total", counts);
    // results.put("title", dictName);
    log.debug("数据存储耗时:" + (dataend - datastart));
    return results;

}

DataUtil.java
public static Map<String, HbDictionary> findHbDictionaryMap() {
    HbDictionaryService dictionaryService = SpringContextHolder.getBean(HbDictionaryService.class);
    return dictionaryService.findMap();
  }

public static Map<String, HbArea> findPathMap() {
    HbAreaService hbAreaService = SpringContextHolder.getBean(HbAreaService.class);
    return hbAreaService.findPathMap();
  }

public static Map<String, HbArea> findBillNoMap() {
    HbAreaService hbAreaService = SpringContextHolder.getBean(HbAreaService.class);
    return hbAreaService.findBillNoMap();
  }

楼盘历史价格管理导入功能优化相关推荐

  1. 淘宝商品历史价格API接口 调用说明及功能介绍

    淘宝商品历史价格API是一款可以帮助用户获取淘宝商品历史价格数据的接口.通过该接口,用户可以轻松地获取某个商品在过去一段时间中的价格趋势和波动情况,以便更好地了解该商品的市场走势和价值变化情况. 该A ...

  2. Swing+Mysql实现的火车票管理系统3(功能分为普通用户和管理员,包含登录、车票查询、改签、购票、我的订单、用户注册、用户首页、车站管理、价格管理、用户管理等)

    博客目录 Swing+Mysql实现的火车票管理系统3 实现功能截图 系统功能 使用技术 代码 完整源码 Swing+Mysql实现的火车票管理系统3 本系统是一个火车票购票管理系统,分为普通用户和管 ...

  3. 精细化容量管理的设备成本优化之路

    精细化容量管理的设备成本优化之路 作者:梁定安,腾讯社交网络运营部,负责社交平台.增值业务的运维负责人,开放运维联盟专家委员,腾讯云布道师. SNG社交网络运营部管理着近10万台的Linux服务器,以 ...

  4. Eatting外卖基于瑞吉外卖代码全功能优化含源码

    Eatting外卖基于瑞吉外卖代码全功能优化含源码 文章目录 项目的最终部署 源码地址 github:[源码地址](https://github.com/yangxingyue0623/Eating_ ...

  5. 神马笔记 版本2.2.0——功能优化

    神马笔记 版本2.2.0--功能优化 一.目标 二.体验地址 三.功能优化 四.功能介绍 1. 关于神马笔记 2. 搜索笔记忽略大小写 3. 文件夹内容界面 4. 图片列表显示图片尺寸 五.新版本规划 ...

  6. 使用DQN进行价格管理

    文章目录 前言 一.不同的价格响应 二.利用DQN优化定价策略 1.定义环境 2.DQN算法概述 3.Algorithm: Deep Q Network (DQN) 总结 强化学习-定价.决策 参考论 ...

  7. 智慧城市综合管理平台功能清单

    智慧城市综合管理平台功能清单 一.九大标准子系统 序号 子系统名称 功能模块备名称 备注 1 无线数据采集子系统 用户管理 用户的权限.角色进行分配和设置.能进行方便而实用的登录和退出操作 考勤管理 ...

  8. 如何实现采购管理流程的优化?

    采购管理流程优化指的是一种整体方法,而不是个人主义的方法.它指的是利用人员.流程和技术来实现最佳价值创造的过程.采购优化的方法可以是:最初的范围界定,数据收集和分析,改进和实施以及跟进和监控. 理解采 ...

  9. TOP100summit:【分享实录-途牛】价格中心系统的优化之路

    本篇文章内容来自2016年TOP100summit途牛旅游网高级架构师,技术委员会开发组长赵国光的案例分享. 编辑:Cynthia 导读:价格中心系统是途牛网众多系统中很重要的一个,几乎所有的售卖价格 ...

最新文章

  1. as [Frame]元标签
  2. 被京东和腾讯赶走的中年白领,不会有人同情
  3. 如何从值获取C#枚举描述? [重复]
  4. 内外网切换软件_不需要软件,用命令简单实现内外网切换指定网段走哪条线路...
  5. 人口各省预测模型matlab_流体力学/医学学科交叉:感染人口预测模型
  6. JS 实现打印二维码图片
  7. word插入漂亮的代码块
  8. html+css+js百度首页制作+附源代码+实现简单【百度一下】功能
  9. STM32F103ZET6+TJA1050 HAL CAN通讯笔记
  10. 小码哥CRM项目(二)p20~p35
  11. 《C语言程序设计》江宝钏主编-习题6-2-排列数
  12. java webshell_都0202年了老嗨还在用的 - 各种姿势jsp webshell
  13. 大型API网关(六)—— 监控和预警
  14. 四位“计算机之父”之争
  15. p0级重大事故:超卖了100瓶飞天茅台,整个项目组慌得一逼~
  16. 一个北大学子毕业后的感悟[转]
  17. onload和ready的不同
  18. 【bzoj2844】albus就是要第一个出场 高斯消元
  19. 小游戏 (最少线段连线问题)
  20. 没装oracle plsql,64位WIN7系统,未装ORACLE,我用PLSQLDEV 远程连接数据库时报错ORA-12560:TNS:protocol adapter error...

热门文章

  1. 正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!...
  2. c程序设计语言_习题8-4_重新实现c语言的库函数fseek(FILE*fp,longoffset,intorigin)
  3. 《需求设计:构建用户想要和需要的产品》——3.7 品质
  4. saas的计费数据库设计_如何构建和扩展SaaS计费解决方案
  5. redis主从复制、高可用和集群
  6. 用计算机的英语造句process,process的用法总结大全
  7. (C++)对用户输入的整形数组进行冒泡排序
  8. css代码应该放html哪里,css代码放到哪里?
  9. ansys大变形开关要不要打开_ANSYS不收敛问题的解决办法
  10. 热修复测试过程注意事项