Beispiel #1
0
        public string State_ = ""; // 상태

        #endregion Fields

        #region Methods

        //public enum NeedDBProc
        //{
        //    None = 0,
        //    Insert,C
        //    Update,
        //}
        public void CopyFrom(COrderData srcData)
        {
            //NeedDBProc_ = srcData.NeedDBProc_;
            //bFindInExcel_ = srcData.bFindInExcel_;
            //bProcessed_ = srcData.bProcessed_;
            seq_ = srcData.seq_;
            goodsSeq_ = srcData.goodsSeq_;
            memberSeq_ = srcData.memberSeq_;
            channelSeq_ = srcData.channelSeq_;
            authoritySeq_ = srcData.authoritySeq_;
            goodsCode_ = srcData.goodsCode_;
            goodsPassType = srcData.goodsCode_;
            goodsSendType_ = srcData.goodsSendType_;
            channelOrderCode_ = srcData.channelOrderCode_;
            orderReserveCode_ = srcData.orderReserveCode_;
            orderID_ = srcData.orderID_;
            orderSettlePrice_ = srcData.orderSettlePrice_;
            orderName_ = srcData.orderName_;
            orderPhone_ = srcData.orderPhone_;
            orderMethod_ = srcData.orderMethod_;
            orderEtc1_ = srcData.orderEtc1_;
            orderEtc2_ = srcData.orderEtc2_;
            orderTotalPrice_ = srcData.orderTotalPrice_;
            orderCouponPrice_ = srcData.orderCouponPrice_;
            orderPointPrice_ = srcData.orderPointPrice_;
            addPoint_ = srcData.addPoint_;
            State_ = srcData.State_;
            BuyDate_ = srcData.BuyDate_;
            ExData_GoodsName_ = srcData.ExData_GoodsName_;
            ExData_OptionOriginal_ = srcData.ExData_OptionOriginal_;
            BuyCount_ = srcData.BuyCount_;
        }
Beispiel #2
0
        //public enum NeedDBProc
        //{
        //    None = 0,
        //    Insert,C
        //    Update,
        //}

        public void CopyFrom(COrderData srcData)
        {
            //NeedDBProc_ = srcData.NeedDBProc_;
            //bFindInExcel_ = srcData.bFindInExcel_;
            //bProcessed_ = srcData.bProcessed_;
            seq_                   = srcData.seq_;
            goodsSeq_              = srcData.goodsSeq_;
            memberSeq_             = srcData.memberSeq_;
            channelSeq_            = srcData.channelSeq_;
            authoritySeq_          = srcData.authoritySeq_;
            goodsCode_             = srcData.goodsCode_;
            goodsPassType          = srcData.goodsCode_;
            goodsSendType_         = srcData.goodsSendType_;
            channelOrderCode_      = srcData.channelOrderCode_;
            orderReserveCode_      = srcData.orderReserveCode_;
            orderID_               = srcData.orderID_;
            orderSettlePrice_      = srcData.orderSettlePrice_;
            orderName_             = srcData.orderName_;
            orderPhone_            = srcData.orderPhone_;
            orderMethod_           = srcData.orderMethod_;
            orderEtc1_             = srcData.orderEtc1_;
            orderEtc2_             = srcData.orderEtc2_;
            orderTotalPrice_       = srcData.orderTotalPrice_;
            orderCouponPrice_      = srcData.orderCouponPrice_;
            orderPointPrice_       = srcData.orderPointPrice_;
            addPoint_              = srcData.addPoint_;
            State_                 = srcData.State_;
            BuyDate_               = srcData.BuyDate_;
            ExData_GoodsName_      = srcData.ExData_GoodsName_;
            ExData_OptionOriginal_ = srcData.ExData_OptionOriginal_;
            BuyCount_              = srcData.BuyCount_;
        }
Beispiel #3
0
        protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo)
        {
            try
            {
                if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false)
                {
                    NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_));
                    return false;
                }

                string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_];
                Microsoft.Office.Interop.Excel.Application ap = null;
                Workbook wb = null;
                Worksheet ws = null;
                HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws);

                Range tRange = null;
                string tempString = "";
                string comparesitename = "";

                Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_;
                Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_;
                Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_;
                Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_;
                Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_;
                Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_;
                Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_;
                Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_;
                Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_;
                Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_;

                Int32 ExData_OpCount_1 = 5;
                Int32 ExData_OpCount_2 = 7;
                Int32 ExData_OpCount_3 = 9;

                Int32[] ArrBuyCnt = new Int32[3] { 0, 0, 0 };

                if (nCurrentRow > 0)
                    ProcessStateManager.Instance.NeedParsingCount_ += (ws.UsedRange.Rows.Count - (nCurrentRow - 1));

                while (true)
                {
                    try
                    {
                        tRange = ws.Cells[nCurrentRow, 1];
                        comparesitename = Convert.ToString(tRange.Value2);

                        tRange = ws.Cells[nCurrentRow, ExData_Option];
                        if (tRange == null)
                            break;

                        tempString = tRange.Value2;
                        if (tempString == null)
                        {
                            break;
                        }

                        COrderData pExcelData = new COrderData();
                        pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_;
                        pExcelData.goodsSeq_ = pChannelGoodInfo.Idx_;
                        pExcelData.ExData_Option_ = tempString;
                        pExcelData.ExData_OptionOriginal_ = tempString;
                        pExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsNick_ = pChannelGoodInfo.GoodsName_;
                        pExcelData.goodsCode_ = pChannelGoodInfo.Goods_Code_;

                        tRange = ws.Cells[nCurrentRow, ExData_Coupncode];
                        if (tRange == null)
                            break;

                        pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.channelOrderCode_ == null)
                            break;
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", "");
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim();   // 공백 제거

                        tRange = ws.Cells[nCurrentRow, ExData_Buyer];
                        pExcelData.orderName_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderName_ == null) pExcelData.orderName_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Cancel];
                        pExcelData.ExData_Cancel_ = tRange.Value2;
                        if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Use];
                        pExcelData.ExData_Use_ = tRange.Value2;
                        if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Buyphone];
                        pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderPhone_ == null) pExcelData.orderPhone_ = "";

                        pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", "");

                        if (ExData_Price != 0)
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_Price];

                            if (tRange.Value2 != null)
                            {// 돈에 , 가 있으면 제거하자.
                                tempString = Convert.ToString(tRange.Value2);
                                tempString = tempString.Replace(",", "");
                                pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString);
                            }
                        }

                        tRange = ws.Cells[nCurrentRow, ExData_BuyDate];

                        pExcelData.BuyDate_ = Convert.ToString(tRange.Value2);
                        pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('.', '-');

                        if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_BuyCount];
                            pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2);
                        }

                        tRange = ws.Cells[nCurrentRow, ExData_OpCount_1];
                        ArrBuyCnt[0] = Convert.ToInt32(tRange.Value2);
                        tRange = ws.Cells[nCurrentRow, ExData_OpCount_2];
                        ArrBuyCnt[1] = Convert.ToInt32(tRange.Value2);
                        tRange = ws.Cells[nCurrentRow, ExData_OpCount_3];
                        ArrBuyCnt[2] = Convert.ToInt32(tRange.Value2);

                        SplitDealAndInsertExcelData(pExcelData, ArrBuyCnt);
                        //SplitDealAndInsertExcelData(pExcelData, comparesitename);

                    }
                    catch (System.Exception ex)
                    {
                        NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message));
                        break;
                        //nCurrentRow++;
                        //continue;
                    }

                    ProcessStateManager.Instance.CurParsingCount_++;
                    nCurrentRow++;
                }

                wb.Close(false, Type.Missing, Type.Missing);
                ap.Quit();

                Marshal.FinalReleaseComObject(ws);
                Marshal.FinalReleaseComObject(wb);
                Marshal.FinalReleaseComObject(ap);
                ws = null;
                wb = null;
                ap = null;
                GC.Collect();
            }
            catch (System.Exception ex)
            {
                NewLogManager2.Instance.Log(string.Format("Error protected override bool Internal_Excel_Parsing - {0}", ex.Message));
                return false;
            }

            return true;
        }
Beispiel #4
0
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            if (string.IsNullOrEmpty(comparesitename) == true)
                return 0;

            if (comparesitename.IndexOf(str_sitecompare_) < 0)
                return 0;

            string optionstring = Regex.Replace(pExcelData.ExData_Option_, @" ", "");
            Int32 nBuycount = 0;
            Int32 nTotalcount = 0;
            string optionnickname = "";
            pExcelData.ExData_GoodsNick_ = Convert.ToString(Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", ""));
            string regstring = @"(?<OptionName>\S+)/\S+/\d+개|(?<OptionName>\S+)/\d+개";

            // 옵션명 개수 빼기
            Regex re = new Regex(regstring, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            MatchCollection oe = re.Matches(optionstring);

            optionnickname = Convert.ToString(Regex.Replace(oe[0].Groups["OptionName"].Value, @"[^a-zA-Z0-9가-힣]", ""));
            nBuycount = pExcelData.BuyCount_;
            for (Int32 i = 0; i < nBuycount; i++)
            {
                nTotalcount++;
                COrderData tempExcelData = new COrderData();
                tempExcelData.CopyFrom(pExcelData);
                tempExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsName_;
                tempExcelData.ExData_GoodsNick_ = pExcelData.ExData_GoodsNick_;
                tempExcelData.ExData_Option_ = optionnickname;
                tempExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, nTotalcount);
                if (Excel_List_.ContainsKey(tempExcelData.channelOrderCode_) == false)
                {
                    Excel_List_.Add(tempExcelData.channelOrderCode_, tempExcelData);
                }
            }

            return nTotalcount;
        }
Beispiel #5
0
        // 하나의 딜을 여러개로 나눌 필요가 있는가? 있다면 나눠서 넣고 없다면 그냥 넣는다.
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            pExcelData.ExData_Option_ = Regex.Replace(pExcelData.ExData_Option_, @"[^a-zA-Z0-9가-힣]", "");
            pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", "");
            Int32 nTotalcount = 0;
            Int32 nBuycount = 0;
            nBuycount = pExcelData.BuyCount_;

            for (int i = 0; i < nBuycount; i++)
            {
                nTotalcount++;
                COrderData tempExcelData = new COrderData();
                tempExcelData.CopyFrom(pExcelData);
                tempExcelData.ExData_Option_ = pExcelData.ExData_Option_;
                tempExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsName_;
                tempExcelData.ExData_GoodsNick_ = pExcelData.ExData_GoodsNick_;

                tempExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, nTotalcount);
                if (Excel_List_.ContainsKey(tempExcelData.channelOrderCode_) == false)
                {
                    Excel_List_.Add(tempExcelData.channelOrderCode_, tempExcelData);
                }

            }

            return 1;
        }
Beispiel #6
0
    public static bool Select_tblOrder_With_UID(SqlHelper dbHelper, Int32 xchannelSeq, Int32 xGoodsSeq
       , /*string sDate, string eDate,*/ref Dictionary<string, COrderData> pList)
    {
        bool bResult = true;

        try
        {
            Dictionary<string, object> argdic = new Dictionary<string, object>();
            argdic.Add("xChannelSeq", xchannelSeq);
            //argdic.Add("xAuthorityLoginSeq", xGoodsSeq);
            argdic.Add("xGoodsSeq", xGoodsSeq);

            //argdic.Add("xSDate", sDate);
            //argdic.Add("xEDate", eDate);

            //\MySqlDataReader datareader = dbHelper.call_proc("spNewTestSelectOrderInfo", argdic);
            MySqlDataReader datareader = dbHelper.call_proc("spNewSelectOrderInfo", argdic);

            while (datareader.Read())
            {
                COrderData pOrderData = new COrderData();
                pOrderData.seq_ = Convert.ToInt64(datareader["seq"]);
                pOrderData.goodsSeq_ = Convert.ToInt32(datareader["goodsSeq"]);
                pOrderData.memberSeq_ = Convert.ToInt32(datareader["memberSeq"]);
                pOrderData.channelSeq_ = Convert.ToInt32(datareader["channelSeq"]);

                pOrderData.channelOrderCode_ = Convert.ToString(datareader["channelOrderCode"]);
                pOrderData.orderReserveCode_ = Convert.ToString(datareader["orderCode"]);
                pOrderData.orderID_          = Convert.ToString(datareader["orderId"]);
                pOrderData.goodsCode_        = Convert.ToString(datareader["ChGoodsCode"]);

                pOrderData.orderSettlePrice_ = Convert.ToInt32(datareader["orderSettlePrice"]);
                pOrderData.orderName_        = Convert.ToString(datareader["orderName"]);
                pOrderData.orderPhone_       = Convert.ToString(datareader["orderPhone"]);
                //pOrderData.orderMethod_ = Convert.ToString(datareader["orderMethod"]);
                pOrderData.State_            = Convert.ToString(datareader["State"]);

                if (pList.ContainsKey(pOrderData.channelOrderCode_) == false)
                {
                    pList.Add(pOrderData.channelOrderCode_, pOrderData);
                }
                else
                {
                    NewLogManager2.Instance.Log(string.Format("Error Select_tblOrder_With_UID Same OrderCode {0}", pOrderData.channelOrderCode_));
                }
            }

            datareader.Close();
            datareader.Dispose();
            datareader = null;
        }
        catch (System.Exception ex)
        {
            NewLogManager2.Instance.Log(string.Format("Error bool Select_tblOrder_With_UID - {0}", ex.Message));
            bResult = false;
        }

        return bResult;
    }
Beispiel #7
0
        bool Use_Deal(COrderData pCOrderData)
        {
            try
            {
                string couponcode = pCOrderData.channelOrderCode_;
                Int32 LIndex = couponcode.LastIndexOf('_');
                couponcode = couponcode.Substring(0, LIndex);
                string delivery_no = "";
                string ticket_code = "";

                DateTime eDateTime = Convert.ToDateTime(pCOrderData.BuyDate_);
                DateTime sDateTime = eDateTime.AddDays(-7);

                string eDate = string.Format("{0:D4}{1:D2}{2:D2}", eDateTime.Year, eDateTime.Month, eDateTime.Day);
                string sDate = string.Format("{0:D4}{1:D2}{2:D2}", sDateTime.Year, sDateTime.Month, sDateTime.Day);

                // 웹 호출을 통해서 사용처리한다.
                string useurl = LQCrawlerInfo_.UseUserUrl_;
                string useparam = LQCrawlerInfo_.UseUserParam_;
                string[] cpcodeArray = couponcode.Split('_');
                couponcode = cpcodeArray[0];
                GetUseTicketInfo(couponcode, sDate, eDate, ref ticket_code, ref delivery_no);

                useparam = useparam.Replace("{Delivery_no}", delivery_no);
                useparam = useparam.Replace("{GoodsCode}", couponcode);
                useparam = useparam.Replace("{TicketCode}", ticket_code);

                HttpWebResponse pResponse = HKHttpWebRequest.ReqHttpRequest("POST", useurl, useparam, Cookie_);

                if (pResponse == null)
                    return false;

                TextReader r = (TextReader)new StreamReader(pResponse.GetResponseStream());
                string htmlBuffer = r.ReadToEnd();

                if (htmlBuffer.IndexOf(LQCrawlerInfo_.UseUserCheck_) < 0)
                {
                    NewLogManager2.Instance.Log(htmlBuffer);
                    return false;
                }
            }
            catch (System.Exception ex)
            {
                NewLogManager2.Instance.Log(string.Format("Error bool Use_Deal(COrderData pCOrderData) - {0}", ex.Message));
                return false;
            }

            return true;
        }
Beispiel #8
0
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            string optionstring = pExcelData.ExData_Option_;
            Int32 nBuycount = 0;
            Int32 nTotalcount = 0;
            string optionname = "";
            string regstring = @"(?<OptionName>\S+)-\S+개";
            optionstring = optionstring.Replace(" ", "");
            pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", "");
            Regex re = new Regex(regstring, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            MatchCollection oe = re.Matches(optionstring);

            foreach (Match mat in oe)
            {
                GroupCollection group = mat.Groups;
                optionname = Convert.ToString(group["OptionName"].Value);
                optionname = Regex.Replace(optionname, @"[^a-zA-Z0-9가-힣]", "");
                nBuycount = pExcelData.BuyCount_;

                for (Int32 i = 0; i < nBuycount; i++)
                {
                    nTotalcount++;
                    COrderData tempExcelData = new COrderData();
                    tempExcelData.CopyFrom(pExcelData);
                    tempExcelData.ExData_Option_ = optionname;
                    tempExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsName_;
                    tempExcelData.ExData_GoodsNick_ = pExcelData.ExData_GoodsNick_;
                    tempExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, nTotalcount);

                    if (Excel_List_.ContainsKey(tempExcelData.channelOrderCode_) == false)
                    {
                        Excel_List_.Add(tempExcelData.channelOrderCode_, tempExcelData);
                    }
                }
            }

            return nTotalcount;
        }
Beispiel #9
0
 // 엑셀 데이터 리스트에 넣기
 protected abstract Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "");
Beispiel #10
0
        protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo)
        {
            try
            {

                if (actionType != "insert")
                {
                    return true;
                }

                if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false)
                {
                    NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_));
                    return false;
                }

                DateTime dtNow = BaseChannel.dtnow;
                DateTime beforeData = dtNow.AddDays(-2);
                string sData = string.Format("{0}-{1}-{2} {3}:{4}:{5}", beforeData.Year, beforeData.Month, beforeData.Day, "00","00","00");

                string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_];
                Microsoft.Office.Interop.Excel.Application ap = null;
                Workbook wb = null;
                Worksheet ws = null;
                HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws);

                Range tRange = null;
                string tempString = "";
                string comparesitename = "";

                Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_;
                Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_;
                Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_;
                Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_;
                Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_;
                Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_;
                Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_;
                Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_;
                Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_;
                Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_;

                if (nCurrentRow > 0)
                    ProcessStateManager.Instance.NeedParsingCount_ += (ws.UsedRange.Rows.Count - (nCurrentRow - 1));

                while (true)
                {
                    try
                    {
                        tRange = ws.Cells[nCurrentRow, 1];
                        comparesitename = Convert.ToString(tRange.Value2);

                        tRange = ws.Cells[nCurrentRow, ExData_Option];
                        if (tRange == null)
                            break;

                        tempString = tRange.Value2;
                        if (tempString == null)
                        {
                            break;
                        }

                        COrderData pExcelData = new COrderData();
                        pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_;
                        pExcelData.goodsSeq_ = pChannelGoodInfo.Idx_;
                        pExcelData.ExData_Option_ = tempString;
                        pExcelData.ExData_OptionOriginal_ = tempString;
                        pExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsNick_ = pChannelGoodInfo.GoodsName_;
                        pExcelData.goodsCode_ = pChannelGoodInfo.Goods_Code_;

                        tRange = ws.Cells[nCurrentRow, ExData_BuyDate];

                        pExcelData.BuyDate_ = Convert.ToString(tRange.Value2);
                        pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('.', '-');
                        pExcelData.BuyDate_ = Regex.Replace(pExcelData.BuyDate_, @"^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$", @"$1-$2-$3 $4:$5:$6");
                        DateTime excelDate = DateTime.Parse(pExcelData.BuyDate_);

                        int checkTime = DateTime.Compare(beforeData, excelDate);

                        //비교날짜보다 더 크면 리스트에 추가하지 말고 넘어간다
                        if(checkTime > 0)
                        {
                            ProcessStateManager.Instance.PassParsingCount_++;
                            nCurrentRow++;
                            continue;
                        }

                        tRange = ws.Cells[nCurrentRow, ExData_Coupncode];
                        if (tRange == null)
                            break;

                        pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.channelOrderCode_ == null)
                            break;
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", "");
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim();   // 공백 제거

                        tRange = ws.Cells[nCurrentRow, ExData_Buyer];
                        pExcelData.orderName_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderName_ == null) pExcelData.orderName_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Cancel];
                        pExcelData.ExData_Cancel_ = tRange.Value2;
                        if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Use];
                        pExcelData.ExData_Use_ = tRange.Value2;
                        if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Buyphone];
                        pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderPhone_ == null) pExcelData.orderPhone_ = "";

                        pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", "");

                        if (ExData_Price != 0)
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_Price];

                            if (tRange.Value2 != null && tRange.Value2 != "")
                            {// 돈에 , 가 있으면 제거하자.
                                tempString = Convert.ToString(tRange.Value2);
                                tempString = tempString.Replace(",", "");
                                pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString);
                            }
                        }

                        if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_BuyCount];
                            pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2);
                        }

                        SplitDealAndInsertExcelData(pExcelData, comparesitename);

                    }
                    catch (System.Exception ex)
                    {
                        NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message));
                        break;
                        //nCurrentRow++;
                        //continue;
                    }

                    ProcessStateManager.Instance.CurParsingCount_++;
                    nCurrentRow++;
                }

                wb.Close(false, filepath, Type.Missing);
                ap.Quit();

                Marshal.FinalReleaseComObject(tRange);
                Marshal.FinalReleaseComObject(ws);
                Marshal.FinalReleaseComObject(wb);
                Marshal.FinalReleaseComObject(ap);
                tRange = null;
                ws = null;
                wb = null;
                ap = null;

                GC.Collect();

            }
            catch (System.Exception ex)
            {
                NewLogManager2.Instance.Log(string.Format("Error protected override bool Internal_Excel_Parsing - {0}", ex.Message));
                return false;
            }

            return true;
        }
Beispiel #11
0
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            string optionstring = pExcelData.ExData_Option_;
            Int32 nBuycount = 0;
            Int32 nTotalcount = 0;
            string optionname = "";
            pExcelData.ExData_GoodsNick_ = Convert.ToString(Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", ""));
            string regstring = "";

            if (pExcelData.authoritySeq_ != 26)
            {
                regstring = @"(?<OptionName>\S+),\S+수량(?<Count>\d+)개";
            }
            else
            {
                regstring = @"(?<OptionName>\S+)";
            }

            string[] optionarray = System.Text.RegularExpressions.Regex.Split(optionstring, "(],)");

            foreach (string curoption in optionarray)
            {
                optionstring = curoption.Replace("],", "]");
                optionstring = optionstring.Replace(" ", "");
                Regex re = new Regex(regstring, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                MatchCollection oe = re.Matches(optionstring);

                foreach (Match mat in oe)
                {
                    GroupCollection group = mat.Groups;
                    optionname = Convert.ToString(group["OptionName"].Value);
                    optionname = Regex.Replace(optionname, @"[^a-zA-Z0-9가-힣]", "");

                    if (pExcelData.BuyCount_ != 0)
                    {
                        nBuycount = pExcelData.BuyCount_;
                    }
                    else
                    {
                        nBuycount = Convert.ToInt32(group["Count"].Value);
                    }

                    for (Int32 i = 0; i < nBuycount; i++)
                    {
                        nTotalcount++;
                        COrderData tempExcelData = new COrderData();
                        tempExcelData.CopyFrom(pExcelData);
                        tempExcelData.ExData_Option_ = optionname;
                        tempExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsName_;
                        tempExcelData.ExData_GoodsNick_ = pExcelData.ExData_GoodsNick_;

                        tempExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, nTotalcount);
                        if (Excel_List_.ContainsKey(tempExcelData.channelOrderCode_) == false)
                        {
                            Excel_List_.Add(tempExcelData.channelOrderCode_, tempExcelData);
                        }
                    }
                }
            }

            return nTotalcount;
        }
Beispiel #12
0
        protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo)
        {
            try
            {
                if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false)
                {
                    NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_));
                    return false;
                }
                string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_];
                Microsoft.Office.Interop.Excel.Application ap = null;
                Workbook wb = null;
                Worksheet ws = null;
                HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws);

                Range tRange = null;
                string tempString = "";

                Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_;
                Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_;
                Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_;
                Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_;
                Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_;
                Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_;
                Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_;
                Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_;
                Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_;
                Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_;
                Int32 ExData_GoodsName = LQCrawlerInfo_.ExData_GoodName_;

                if (nCurrentRow > 0)
                    ProcessStateManager.Instance.NeedParsingCount_ += (ws.UsedRange.Rows.Count - (nCurrentRow - 1));

                string beforeOrderName = "";    // 이전 주문자명
                string beforeOrderPhone = "";   // 이전 주문 전화번호
                string beforeOrderDate = "";    // 이전 주문 날짜
                while (true)
                {
                    try
                    {
                        tRange = ws.Cells[nCurrentRow, ExData_Option];
                        if (tRange == null)
                            break;

                        tempString = tRange.Value2;
                        if (tempString == null)
                        {
                            break;
                        }

                        COrderData pExcelData = new COrderData();
                        pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_;       // 채널 시퀀스
                        pExcelData.goodsSeq_ = -1;                                  // 상품 시퀀스
                        pExcelData.ExData_Option_ = tempString;                     // 옵션명
                        pExcelData.ExData_OptionOriginal_ = tempString;             // 원래 옵션명

                        tRange = ws.Cells[nCurrentRow, ExData_GoodsName];
                        pExcelData.ExData_GoodsName_ = tRange.Value2;
                        pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", "");

                        tRange = ws.Cells[nCurrentRow, ExData_Coupncode];
                        if (tRange == null)
                            break;

                        pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.channelOrderCode_ == null)
                            break;
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", "");
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim();

                        tRange = ws.Cells[nCurrentRow, ExData_Buyer];
                        pExcelData.orderName_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderName_ == null)
                        {
                            pExcelData.orderName_ = beforeOrderName;
                        }
                        else
                        {
                            beforeOrderName = pExcelData.orderName_;
                        }

                        tRange = ws.Cells[nCurrentRow, ExData_Cancel];
                        pExcelData.ExData_Cancel_ = tRange.Value2;
                        if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Use];
                        pExcelData.ExData_Use_ = tRange.Value2;
                        if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Buyphone];
                        pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderPhone_ == null)
                        {
                            pExcelData.orderPhone_ = beforeOrderPhone;
                        }
                        else
                        {
                            beforeOrderPhone = pExcelData.orderPhone_;
                        }

                        pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", "");

                        if (ExData_Price != 0)
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_Price];

                            if (tRange.Value2 != null)
                            {
                                tempString = Convert.ToString(tRange.Value2);
                                tempString = tempString.Replace(",", "");
                                pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString);
                            }
                        }

                        tRange = ws.Cells[nCurrentRow, ExData_BuyDate];

                        if (tRange.Value2 == null)
                        {
                            pExcelData.BuyDate_ = beforeOrderDate;
                        }
                        else
                        {
                            double temp = Convert.ToDouble(tRange.Value2);
                            DateTime dta = DateTime.FromOADate(temp);
                            pExcelData.BuyDate_ = dta.ToString("u");
                            pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace("Z", "");
                            beforeOrderDate = pExcelData.BuyDate_;
                        }

                        if (ExData_BuyCount != 0)
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_BuyCount];
                            pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2);
                        }

                        SplitDealAndInsertExcelData(pExcelData);
                    }
                    catch (System.Exception ex)
                    {
                        NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message));
                        break;
                        //nCurrentRow++;
                        //continue;
                    }

                    ProcessStateManager.Instance.CurParsingCount_++;
                    nCurrentRow++;
                }

                wb.Close(false, Type.Missing, Type.Missing);
                ap.Quit();

                Marshal.FinalReleaseComObject(ws);
                Marshal.FinalReleaseComObject(wb);
                Marshal.FinalReleaseComObject(ap);
                ws = null;
                wb = null;
                ap = null;
                GC.Collect();
            }
            catch (System.Exception ex)
            {
                NewLogManager2.Instance.Log(string.Format("Error public override bool Internal_Excel_Parsing - {0}", ex.Message));
                return false;
            }

            return true;
        }
Beispiel #13
0
        // 하나의 딜을 여러개로 나눌 필요가 있는가? 있다면 나눠서 넣고 없다면 그냥 넣는다.
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            pExcelData.ExData_Option_ = Regex.Replace(pExcelData.ExData_Option_, @"[^a-zA-Z0-9가-힣]", "");
            pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", "");
            string regstring = @"(?<CouponCode>\S+)\(\S+\)";

            Int32 nTotalcount = 0;
            Int32 nBuycount = 0;
            string[] splitArray = pExcelData.channelOrderCode_.Split(',');
            nBuycount = splitArray.Length;

            for (int i = 0; i < nBuycount; i++)
            {
                string couponString = splitArray[i].Replace(" ", "");
                Regex re = new Regex(regstring, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                MatchCollection oe = re.Matches(couponString);

                foreach (Match mat in oe)
                {
                    GroupCollection group = mat.Groups;
                    couponString = Convert.ToString(group["CouponCode"].Value);

                    nTotalcount++;
                    COrderData tempExcelData = new COrderData();
                    tempExcelData.CopyFrom(pExcelData);
                    tempExcelData.ExData_Option_ = pExcelData.ExData_Option_;
                    tempExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsName_;
                    tempExcelData.ExData_GoodsNick_ = pExcelData.ExData_GoodsNick_;

                    tempExcelData.channelOrderCode_ = couponString;
                    if (Excel_List_.ContainsKey(tempExcelData.channelOrderCode_) == false)
                    {
                        Excel_List_.Add(tempExcelData.channelOrderCode_, tempExcelData);
                    }
                }

            }

            return 1;
        }
Beispiel #14
0
        // 하나의 딜을 여러개로 나눌 필요가 있는가? 있다면 나눠서 넣고 없다면 그냥 넣는다.
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            pExcelData.ExData_Option_ = Regex.Replace(pExcelData.ExData_Option_, @"[^a-zA-Z0-9가-힣]", "");
            Excel_List_.Add(pExcelData.channelOrderCode_, pExcelData);

            return 1;
        }
Beispiel #15
0
        protected override bool Internal_Excel_Parsing(ChannelGoodInfo pChannelGoodInfo)
        {
            try
            {
                if (GoodsDownInfo_.ContainsKey(pChannelGoodInfo.Goods_Code_) == false)
                {
                    NewLogManager2.Instance.Log(string.Format("!! 상품 코드 엑셀이 없습니다. - {0}", pChannelGoodInfo.Goods_Code_));
                    return false;
                }

                string filepath = GoodsDownInfo_[pChannelGoodInfo.Goods_Code_];
                Microsoft.Office.Interop.Excel.Application ap = null;
                Workbook wb = null;
                Worksheet ws = null;
                HKExcelHelper.GetWorkSheet(filepath, ref ap, ref wb, ref ws);

                Range tRange = null;
                string tempString = "";
                string comparesitename = "";

                Int32 nCurrentRow = LQCrawlerInfo_.ExData_Start_;
                Int32 ExData_Option = LQCrawlerInfo_.ExData_Option_;
                Int32 ExData_Coupncode = LQCrawlerInfo_.ExData_Coupncode_;
                Int32 ExData_Buyer = LQCrawlerInfo_.ExData_Buyer_;
                Int32 ExData_Cancel = LQCrawlerInfo_.ExData_Cancel_;
                Int32 ExData_Use = LQCrawlerInfo_.ExData_Use_;
                Int32 ExData_Buyphone = LQCrawlerInfo_.ExData_Buyphone_;
                Int32 ExData_Price = LQCrawlerInfo_.ExData_Price_;
                Int32 ExData_BuyDate = LQCrawlerInfo_.ExData_Buydate_;
                Int32 ExData_BuyCount = LQCrawlerInfo_.ExData_Count_;
                Int32 ExData_GoodsName = LQCrawlerInfo_.ExData_GoodName_;
                Int32 ExData_Coupncode2 = 4;    // 11번가만 가지고 있는 주문 순번 쿠폰 코드가 고유하지 않아서 이것과 합쳐야만 고유해진다.

                ProcessStateManager.Instance.NeedParsingCount_ += ws.UsedRange.Rows.Count;

                while (true)
                {
                    try
                    {
                        tRange = ws.Cells[nCurrentRow, 1];
                        comparesitename = Convert.ToString(tRange.Value2);

                        tRange = ws.Cells[nCurrentRow, ExData_Option];
                        if (tRange == null)
                            break;

                        tempString = tRange.Value2;
                        if (tempString == null)
                        {
                            break;
                        }

                        COrderData pExcelData = new COrderData();
                        pExcelData.channelSeq_ = LQCrawlerInfo_.Channel_Idx_;
                        pExcelData.goodsSeq_ = pChannelGoodInfo.Idx_;
                        pExcelData.ExData_Option_ = tempString;
                        pExcelData.ExData_OptionOriginal_ = tempString;
                        tRange = ws.Cells[nCurrentRow, ExData_GoodsName];
                        pExcelData.ExData_GoodsName_ = tRange.Value2;
                        pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsName_, @"[^a-zA-Z0-9가-힣]", "");
                        tRange = ws.Cells[nCurrentRow, ExData_Coupncode];
                        if (tRange == null)
                            break;

                        pExcelData.channelOrderCode_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.channelOrderCode_ == null)
                            break;
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Replace("'", "");
                        pExcelData.channelOrderCode_ = pExcelData.channelOrderCode_.Trim();   // 공백 제거

                        tRange = ws.Cells[nCurrentRow, ExData_Coupncode2];
                        if (tRange == null)
                            break;

                        pExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, Convert.ToString(tRange.Value2));

                        tRange = ws.Cells[nCurrentRow, ExData_Buyer];
                        pExcelData.orderName_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderName_ == null) pExcelData.orderName_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Cancel];
                        pExcelData.ExData_Cancel_ = tRange.Value2;
                        if (pExcelData.ExData_Cancel_ == null) pExcelData.ExData_Cancel_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Use];
                        pExcelData.ExData_Use_ = tRange.Value2;
                        if (pExcelData.ExData_Use_ == null) pExcelData.ExData_Use_ = "";

                        tRange = ws.Cells[nCurrentRow, ExData_Buyphone];
                        pExcelData.orderPhone_ = Convert.ToString(tRange.Value2);
                        if (pExcelData.orderPhone_ == null) pExcelData.orderPhone_ = "";

                        pExcelData.orderPhone_ = pExcelData.orderPhone_.Replace("'", "");

                        if (ExData_Price != 0)
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_Price];

                            if (tRange.Value2 != null)
                            {// 돈에 , 가 있으면 제거하자.
                                tempString = Convert.ToString(tRange.Value2);
                                tempString = tempString.Replace(",", "");
                                pExcelData.orderSettlePrice_ = Convert.ToInt32(tempString);
                            }
                        }

                        tRange = ws.Cells[nCurrentRow, ExData_BuyDate];
                        if (LQCrawlerInfo_.Channel_Idx_ == 9 || LQCrawlerInfo_.Channel_Idx_ == 14 || LQCrawlerInfo_.Channel_Idx_ == 15 || LQCrawlerInfo_.Channel_Idx_ == 18)
                        {
                            double temp = Convert.ToDouble(tRange.Value2);
                            DateTime dta = DateTime.FromOADate(temp);
                            pExcelData.BuyDate_ = dta.ToString("u");
                            pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace("Z", "");
                        }
                        else
                        {
                            pExcelData.BuyDate_ = Convert.ToString(tRange.Value2);
                        }

                        pExcelData.BuyDate_ = pExcelData.BuyDate_.Replace('/', '-');

                        if (ExData_BuyCount != 0)// 구매갯수를 따로 뽑아야 하는 채널에서만
                        {
                            tRange = ws.Cells[nCurrentRow, ExData_BuyCount];
                            pExcelData.BuyCount_ = Convert.ToInt32(tRange.Value2);
                        }

                        SplitDealAndInsertExcelData(pExcelData, comparesitename);

                    }
                    catch (System.Exception ex)
                    {
                        NewLogManager2.Instance.Log(string.Format("엑셀 파싱 에러 : {0}", ex.Message));
                        break;
                        //nCurrentRow++;
                        //continue;
                    }

                    ProcessStateManager.Instance.CurParsingCount_++;
                    nCurrentRow++;
                }

                wb.Close(false, Type.Missing, Type.Missing);
                ap.Quit();

                Marshal.FinalReleaseComObject(ws);
                Marshal.FinalReleaseComObject(wb);
                Marshal.FinalReleaseComObject(ap);
                ws = null;
                wb = null;
                ap = null;
                GC.Collect();
            }
            catch (System.Exception ex)
            {
                NewLogManager2.Instance.Log(string.Format("Error override bool Internal_Excel_Parsing - {0}", ex.Message));
                return false;
            }

            return true;
        }
Beispiel #16
0
        void SplitDealAndInsertExcelData(COrderData pExcelData, Int32[] arr)
        {
            pExcelData.ExData_Option_ = Regex.Replace(pExcelData.ExData_Option_, @"[^a-zA-Z0-9가-힣]", "");
            Int32 nTotalcount = 0;
            for (Int32 i = 0; i < arr.Length; i++)
            {
                for (Int32 j = 0; j < arr[i]; j++)
                {
                    nTotalcount++;
                    COrderData tempExcelData = new COrderData();
                    tempExcelData.CopyFrom(pExcelData);
                    tempExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, nTotalcount);
                    tempExcelData.ExData_Option_ = pExcelData.ExData_Option_;
                    tempExcelData.ExData_GoodsName_ = pExcelData.ExData_GoodsName_;
                    tempExcelData.ExData_GoodsNick_ = pExcelData.ExData_GoodsNick_;
                    tempExcelData.channelOrderCode_ = string.Format("{0}_{1}", pExcelData.channelOrderCode_, nTotalcount);

                    if (Excel_List_.ContainsKey(tempExcelData.channelOrderCode_) == false)
                    {
                        Excel_List_.Add(tempExcelData.channelOrderCode_, tempExcelData);
                    }
                }
            }
        }
Beispiel #17
0
        protected override Int32 SplitDealAndInsertExcelData(COrderData pExcelData, string comparesitename = "")
        {
            pExcelData.ExData_Option_ = Regex.Replace(pExcelData.ExData_Option_, @"[^a-zA-Z0-9가-힣]", "");
            pExcelData.ExData_GoodsNick_ = Regex.Replace(pExcelData.ExData_GoodsNick_, @"[^a-zA-Z0-9가-힣]", "");

            if (Excel_List_.ContainsKey(pExcelData.channelOrderCode_) == false)
            {
                Excel_List_.Add(pExcelData.channelOrderCode_, pExcelData);
            }
            return 1;
        }