/** * @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; } }