コード例 #1
0
  /**
   * @param csv 匯入核心
   * @throws Exception
   */
  public void doImport(List<String[]> csv) throws Exception {
    try {

      initResource();

      String eorderno = "";
      String strProject = "";
      String imei = "";
      String itemno = "";
      String bcode = "";
      String cost = "";
      // String strStatus = "";
      // String issuestatus = "";
      int status = 0; // 0-未啟用 1-已啟用 2-作業處理中
      // FetOrderImeiCollection orderList = null;
      FetorderVo order = null;
      FetorderitemVo item = null;
      int imeiCount = 0;
      boolean isProject = false;
      List<FetimeiVo> imeiList = new ArrayList<FetimeiVo>();
      FetimeiVo fetimei = null;
      FetimeiitemVo fetimeiitem = null;
      int errOrderNotExistCount = 0;
      // int itemnoChangeCnt = 0;
      // FetimeihistoryVo imeiHistVo = null;

      // 產生IMEI 清單與匯入 IMEI進貨明細表
      List<FetorderimeiVo> imeilist = buildImeiCollection(csv);
      String key = "";
      String msg = "";
      // String oldItemno = "";
      // String newItemno = "";
      // 轉檔IMEI主檔 產生訂單彙總
      for (FetorderimeiVo imeivo : imeilist) {
        isProject = false;
        eorderno = imeivo.getEorderno();
        logger.info("EOrder No: " + eorderno);
        order = isOrderExist(eorderno);

        // 對應訂單是否存在
        if (NullTK.isNull(order)) {
          msg = "/查無訂單主檔 電子訂單編號:" + imeivo.getEorderno() + "/料號:" + imeivo.getItemno();
          logger.warn(msg);
          importmemo.append(msg + "\n");
          errOrderNotExistCount++;
          continue;
          // throw new Exception(msg);
        }

        // 查詢ITEM項目是否為專案機,以 電子訂單編號與料號抓取。
        key = imeivo.getEorderno() + imeivo.getItemno();
        item = isOrderItemExist(key);
        if (NullTK.isNull(order)) {
          msg = "/查無訂單明細主檔 電子訂單編號:" + imeivo.getEorderno() + "/料號:" + imeivo.getItemno();
          logger.warn(msg);
          importmemo.append(msg + "\n");
          errOrderNotExistCount++;
          // throw new Exception(msg);
          continue;
        }

        strProject = item.getSp();
        isProject = StringTK.equals("專", strProject) ? true : false;
        bcode = imeivo.getBcode();
        imei = imeivo.getImei();
        itemno = imeivo.getItemno();
        cost = Integer.toString(item.getPrice());
        status = imeivo.getStatus();

        // 回寫 訂單明細 店碼
        if (StringTK.isEmpty(order.getBcode())) {
          order.setBcode(bcode);
          orderDao.updateBCode(order);
          orderCache.put(eorderno, order);
        }

        // 專案機拋到 IMEI 主檔清單
        if (isProject) {
          fetimei = new FetimeiVo();
          fetimei.setImei(imei);
          fetimei.setItemno(itemno);
          fetimei.setEorderno(eorderno);
          fetimei.setBcode(bcode);
          fetimei.setCost(Integer.parseInt(cost));
          fetimei.setStatus(status);
          imeiList.add(fetimei);
        }
      }

      // IMEI主檔拋轉匯入
      logger.info("Import IMEI  ");
      for (FetimeiVo iv : imeiList) {
        // 檢查是否存在
        imei = iv.getImei();
        fetimei = fetimeiCache.get(imei);
        if (NullTK.isNull(fetimei)) {
          fetimei = iv;
          logger.info(">>>fetimei null");
          fetimeiDao.insert(fetimei);
          fetimeiCache.put(imei, fetimei);
        } else {
          fetimei.setCost(iv.getCost());
          if (fetimei.getStatus() != 1) { // 已啟用保留狀態
            fetimei.setStatus(status);
          }

          // 促代異動變更 料號紀錄
          /*oldItemno = fetimei.getItemno();
          newItemno = iv.getItemno();
          if(!StringTK.equals(oldItemno, newItemno)) {
          	logger.info(">>>IMEI拋轉促代異動 " + oldItemno + " => " + newItemno);
          	importmemo.append(">>>IMEI拋轉促代異動 " + oldItemno + " => " + newItemno);
          	imeiHistVo = new FetimeihistoryVo();
          	imeiHistVo.setImei(imei);
          	imeiHistVo.setItemno(oldItemno);
          	imeiHistDao.insert(imeiHistVo);

          	fetimei.setItemno(newItemno);
          	fetimeiDao.update(fetimei);
          	fetimeiCache.put(imei, fetimei);
          	itemnoChangeCnt++;
          }*/
        }

        // IMEI細項主檔匯入
        logger.debug("IMEI細項主檔匯入");
        fetimeiitem = fetimeiItemCache.get(imei);
        if (NullTK.isNull(fetimeiitem)) {
          fetimeiitem = new FetimeiitemVo();
          fetimeiitem.setImei(imei);
          fetimeiitem.setItemno(fetimei.getItemno());
          fetimeiItemDao.insert(fetimeiitem);
          fetimeiItemCache.put(imei, fetimeiitem);
        }

        imeiCount++;
      }

      logger.info("IMEI主檔拋轉共 " + imeiCount + " 筆");
      // logger.info("IMEI主檔拋轉促代異動共 " + itemnoChangeCnt + " 筆");
      importmemo.append("IMEI主檔拋轉共 " + imeiCount + " 筆\n");
      // importmemo.append("IMEI主檔拋轉促代異動共 " + itemnoChangeCnt + " 筆\n");

    } catch (Exception e) {
      logger.error("FetImeiImporter: doImport err:" + e);
      throw e;
    }
  }