示例#1
0
 //开始
 private void Begin()
 {
     System.Console.WriteLine("准备从SAP取数据");
     importLogger.Write("准备从SAP取数据");
 }
示例#2
0
        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);
        }