//开始 private void Begin() { System.Console.WriteLine("准备从SAP取数据"); importLogger.Write("准备从SAP取数据"); }
public bool Import(ArrayList importDatas) { #region 参数判断 if (importDatas == null) { return(false); } if (!(importDatas.Count > 0)) { return(false); } //类型判断 #endregion string messagePage = string.Format("第{0}页 ", pageCountNum.ToString(), DateTime.Now.ToString()); int addCount = 0; int updateCount = 0; this.DataProvider.BeginTransaction(); //导入标准bom之前删除标准bom DeleteSBomByItemCode(importDatas); try { foreach (DomainObject obj in importDatas) { bool isMO = (obj.GetType() == typeof(MO)); //判断当前对象是否MO //检查产品是否存在,如果不存在则不导入 if (!CheckIfExistItem(obj)) { continue; } if (isMO) { AllSAPMOCodesHT.Add(((MO)obj).MOCode, (MO)obj); DealMOObject(obj); //对象关联处理 } //检查是否存在 if (isMO && this.CheckIfExist(obj)) //如果是工单,则只更新初始状态的工单 { //如果是工单,则只更新初始状态的工单 if (obj.GetType() == typeof(MO)) { if (!CheckIfInitailMO((MO)obj)) { continue; } } //如果记录已经存在,则更新 this._helper.UpdateDomainObject(obj); updateCount++; if (isMO) { //记录下发生数据库操作的工单 ToDBMOCodesHT.Add(((MO)obj).MOCode, (MO)obj); } } else //处理不是MO的数据 { System.Type entityType = obj.GetType(); //否则新增 if (entityType == typeof(MOBOM)) { //工单bom //if(ToDBMOCodesHT.Contains(((MOBOM)obj).MOCode)) //只更新发生过数据操作的工单对应的工单bom ,此逻辑已注销. //只要是sap更新的工单,其mobom一定要更新,AllSAPMOCodesHT为所有sap更新的工单 if (AllSAPMOCodesHT.Contains(((MOBOM)obj).MOCode)) { try { addCount++; this._helper.AddDomainObject(obj, false); } catch { //工单BOM可能有重复数据.累加单机用量 this.UpdateMOBom(((MOBOM)obj)); } } } else if (entityType == typeof(SBOM)) { try { this._helper.AddDomainObject(obj, false); addCount++; } catch { //标准BOM可能有重复数据.在log中记录重复的数据. string msg = string.Format("标准bom数据重复 产品代码{0} 子阶料号{1} 单机用量{2} 产品生效日期{3}", ((SBOM)obj).ItemCode, ((SBOM)obj).SBOMItemCode, ((SBOM)obj).SBOMItemQty, ((SBOM)obj).SBOMItemEffectiveDate); if (importLogger != null) { importLogger.Write(msg); } } } else { try { this._helper.AddDomainObject(obj); addCount++; } catch { //工单可能有重复数据.在log中记录重复的数据. string msg = string.Format("工单数据重复 工单{0} 产品代码{1} ", ((MO)obj).MOCode, ((MO)obj).ItemCode); if (importLogger != null) { importLogger.Write(msg); } } if (isMO) { //记录下发生数据库操作的工单 ToDBMOCodesHT.Add(((MO)obj).MOCode, (MO)obj); } } //if(importLogger !=null){importLogger.Write(this.GetLog(obj,JobActionResult.ADD));} //因为数据量较大,新增的数据暂时不写log } } //messagePage += " " + DateTime.Now.ToString(); this.DataProvider.CommitTransaction(); } catch (Exception ex) { this.DataProvider.RollbackTransaction(); this.RobackDeleteItemHT(importDatas); if (importLogger != null) { importLogger.Write("导入出现异常 " + ex.Message); } return(false); } SucceedImportNum = addCount + updateCount; if (importLogger != null) { importLogger.Write(string.Format("{0}新增数据{1}条 , 修改数据{2}条 共导入数据{3}条", messagePage, addCount, updateCount, SucceedImportNum)); } return(true); }