Ejemplo n.º 1
0
        public FPStatus AddFileList(string folderName, string[] fileList)
        {
            if (!mFolderMap.ContainsKey(folderName))
            {
                return(FPStatus.Error);
            }
            FPFolder folder = mFolderMap[folderName];

            if (folder == null)
            {
                return(FPStatus.Error);
            }

            FPStatus ret = FPStatus.OK;

            foreach (string fileName in fileList)
            {
                FileInfo info = new FileInfo(fileName);
                if (!info.Exists)
                {
                    ret = FPStatus.Not_Exists;
                    continue;
                }

                FPFile file = new FPFile(info.Name, info.DirectoryName);
                if (folder.AddFile(file))
                {
                    ret = FPStatus.Error;
                }
            }

            return(ret);
        }
Ejemplo n.º 2
0
        public FPStatus UpdateStatus()
        {
            if (mSrcPath.Length == 0 || mSrcName.Length == 0)
            {
                mStatus = FPStatus.None;
                return(mStatus);
            }
            string srcPathName = Path.Combine(mSrcPath, mSrcName);

            if (!File.Exists(srcPathName))
            {
                mStatus = FPStatus.Not_Exists;
                return(mStatus);
            }

            if (mDstPath.Length == 0 || mDstName.Length == 0)
            {
                mStatus = FPStatus.No_Dst;
                return(mStatus);
            }

            string dstPathName = Path.Combine(mDstPath, mDstName);

            if (File.Exists(dstPathName))
            {
                mStatus = FPStatus.Already_Exists;
                return(mStatus);
            }
            mStatus = FPStatus.OK;
            return(mStatus);
        }
Ejemplo n.º 3
0
        public FPStatus DrawBack()
        {
            FPStatus ret = FPStatus.OK;

            foreach (KeyValuePair <string, FPFolder> item in mFolderMap)
            {
                if (item.Value != null && item.Value.DrawBack() != FPStatus.OK)
                {
                    ret = FPStatus.Error;
                }
            }
            return(ret);
        }
Ejemplo n.º 4
0
        public FPStatus CopyFile(string fileName)
        {
            FPStatus ret = FPStatus.OK;

            foreach (FPFile file in mFileList)
            {
                if (file.mSrcName == fileName)
                {
                    ret = file.Copy();
                    mFileList.Remove(file);
                    break;
                }
            }
            return(FPStatus.OK);
        }
Ejemplo n.º 5
0
        public FPStatus CopyFolder(string folderName)
        {
            if (folderName == "")
            {
                return(FPStatus.Error);
            }

            if (!mFolderMap.ContainsKey(folderName))
            {
                return(FPStatus.Error);
            }
            FPFolder folder = mFolderMap[folderName];
            FPStatus ret    = folder.Copy();

            return(ret);
        }
Ejemplo n.º 6
0
        public FPStatus MoveFile(string folderName, string fileName)
        {
            if (folderName == "" || fileName == "")
            {
                return(FPStatus.Error);
            }

            if (!mFolderMap.ContainsKey(folderName))
            {
                return(FPStatus.Error);
            }
            FPFolder folder = mFolderMap[folderName];
            FPStatus ret    = folder.MoveFile(fileName);

            return(ret);
        }
Ejemplo n.º 7
0
        public FPStatus ApplyPrefer(int index)
        {
            if (index < 0 || index >= mFolderPrefer.Count)
            {
                return(FPStatus.Error);
            }
            FPStatus   ret  = FPStatus.OK;
            PreferData list = mFolderPrefer[index];

            foreach (PreferFolderData data in list.mFolderList)
            {
                if (AddFolder(data.Path) != FPStatus.OK)
                {
                    ret = FPStatus.Error;
                }
            }
            return(ret);
        }
Ejemplo n.º 8
0
        public FPFolder(string pathname)
        {
            if (pathname.Length == 0)
            {
                mStatus = FPStatus.None;
                return;
            }
            if (!Directory.Exists(pathname))
            {
                mStatus = FPStatus.Not_Exists;
                return;
            }
            DirectoryInfo info = new DirectoryInfo(pathname);

            mName     = info.Name;
            mPath     = pathname;
            mFileList = new List <FPFile>();
            mStatus   = FPStatus.OK;
        }
Ejemplo n.º 9
0
        public FPStatus Move()
        {
            UpdateStatus();
            if (mStatus != FPStatus.OK)
            {
                return(mStatus);
            }
            string   srcPathName  = Path.Combine(mSrcPath, mSrcName);
            string   destPathName = Path.Combine(mDstPath, mDstName);
            FPStatus ret          = FPStatus.OK;

            try
            {
                File.Move(srcPathName, destPathName);
                DBUtil.AddRecord(this, "move");
            }
            catch (System.IO.IOException ex)
            {
                ret = FPStatus.Error;
            }
            return(ret);
        }
Ejemplo n.º 10
0
        public static string GetStatusString(FPStatus status)
        {
            string ret = "None";

            switch (status)
            {
            case FPStatus.OK:
            {
                ret = "OK";
                break;
            }

            case FPStatus.Error:
            {
                ret = "Error";
                break;
            }

            default: break;
            }
            return(ret);
        }
Ejemplo n.º 11
0
        public FPStatus Move()
        {
            FPStatus             ret        = FPStatus.OK;
            IEnumerator <FPFile> it         = mFileList.GetEnumerator();
            List <FPFile>        removelist = new List <FPFile>();

            while (it.MoveNext())
            {
                if (it.Current != null && it.Current.Move() != FPStatus.OK)
                {
                    ret = FPStatus.Error;
                }
                else
                {
                    removelist.Add(it.Current);
                }
            }
            foreach (FPFile file in removelist)
            {
                mFileList.Remove(file);
            }
            return(ret);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 检查具体的一单
        /// </summary>
        /// <param name="soEntity4FPCheck"></param>
        void CheckSingle(SOInfo soEntity4FPCheck)
        {
            var custom = ExternalDomainBroker.GetCustomerBasicInfo(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value);

            //用户没有查询到不验证(可以以前的数据没有了)
            if (custom == null)
            {
                return;
            }
            //某些特定用户不用验证
            if (custom.FromLinkSource == m_interOrder ||
                m_ignoreCustomIDList.Exists(p => custom.CustomerID.StartsWith(p)))
            {
                return;
            }

            List <string> tmpResons = new List <string>();

            FPStatus tmpFPstatus = FPStatus.Normal;
            bool     IsMarkRed   = false; //是否飘红可疑标记

            if (m_isCheckKeYi)
            {
                #region 检查疑单

                if (m_soDA.IsSpiteCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value, m_companyCode))
                {
                    tmpFPstatus = FPStatus.Suspect;
                    tmpResons.Add("此用户是恶意用户,之前有过不良的购物记录");
                    InsertKFC(soEntity4FPCheck);
                }
                else
                {
                    // 如果是货到付款
                    bool isRej = false;
                    if (m_payTypeList.Exists(item => item.SysNo == soEntity4FPCheck.BaseInfo.PayTypeSysNo && item.IsPayWhenRecv.HasValue && item.IsPayWhenRecv.Value))
                    {
                        bool isNewCustom = m_soDA.IsNewCustom(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value);
                        if (isNewCustom)
                        {
                            if (m_soDA.IsRejectionCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, soEntity4FPCheck.ReceiverInfo.Address, soEntity4FPCheck.ReceiverInfo.MobilePhone, soEntity4FPCheck.ReceiverInfo.Phone, m_companyCode))
                            {
                                isRej       = true;
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过拒收记录,请谨慎处理");
                            }
                            else if (soEntity4FPCheck.ReceiverInfo.Phone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceiverInfo.Phone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (m_soDA.IsRejectionCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, "", "", sp, m_companyCode))
                                    {
                                        isRej       = true;
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过拒收记录,请谨慎处理");
                                        break;
                                    }
                                }
                            }
                            else if (soEntity4FPCheck.ReceiverInfo.Phone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceiverInfo.Phone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (m_soDA.IsRejectionCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, "", "", sp, m_companyCode))
                                    {
                                        isRej       = true;
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过拒收记录,请谨慎处理");
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (m_soDA.IsRejectionCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, "", "", "", m_companyCode))
                            {
                                isRej       = true;
                                tmpFPstatus = FPStatus.Suspect;
                                if (m_soDA.IsNewRejectionCustomerB(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value))
                                {
                                    tmpResons.Add("新用户,该用户之前有过拒收货物的订单记录,请谨慎处理");
                                }
                                else
                                {
                                    tmpResons.Add("该用户拒收订单的比例超过限度,请谨慎处理");
                                }
                            }
                        }

                        if (isRej != true)
                        {
                            // 是新客户并且没有通过手机验证
                            if (isNewCustom && (!custom.CellPhoneConfirmed.HasValue || !custom.CellPhoneConfirmed.Value))
                            {
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("新客户");
                                tmpResons.Add("没有通过手机验证的货到付款订单");

                                if (soEntity4FPCheck.BaseInfo.SOAmount > 500)
                                {
                                    tmpFPstatus = FPStatus.Suspect; //标为可疑单
                                    tmpResons.Add("订单金额在500元以上");
                                    IsMarkRed = true;               //设置可疑信息飘红
                                }
                                else
                                {
                                    tmpFPstatus = FPStatus.Suspect;//标为可疑单
                                    tmpResons.Add("订单金额在0-500元");
                                }

                                if (m_soDA.GetSOCount4OneDay(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value) > 1)
                                {
                                    tmpFPstatus = FPStatus.Suspect;
                                    tmpResons.Add("一天之中存在多个不同的收货地址的订单信息");
                                    IsMarkRed = true;
                                }
                            }
                            else if (m_autoRMACustomers.FirstOrDefault(z => { return(z.BaseInfo.CustomerSysNo == soEntity4FPCheck.BaseInfo.CustomerSysNo); }) != null)
                            {
                                //一个月内物流拒收过此用户的订单标为可疑单
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("一个月内物流拒收过此用户的订单");
                                IsMarkRed = true;
                            }
                        }
                        else
                        {
                            InsertKFC(soEntity4FPCheck);
                        }
                    }
                    else  //款到发货
                    {
                        if (m_soDA.IsNewOccupyStockCustomerA(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value))
                        {
                            if (m_soDA.IsOccupyStockCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, soEntity4FPCheck.ReceiverInfo.Address, soEntity4FPCheck.ReceiverInfo.MobilePhone, soEntity4FPCheck.ReceiverInfo.Phone, m_companyCode))
                            {
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过恶意占库存记录,请谨慎处理");
                                InsertKFC(soEntity4FPCheck);
                            }
                            else if (soEntity4FPCheck.ReceiverInfo.Phone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceiverInfo.Phone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (m_soDA.IsOccupyStockCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, "", "", sp, m_companyCode))
                                    {
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过恶意占库存记录,请谨慎处理");
                                        InsertKFC(soEntity4FPCheck);
                                        break;
                                    }
                                }
                            }
                            else if (soEntity4FPCheck.ReceiverInfo.Phone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceiverInfo.Phone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (m_soDA.IsOccupyStockCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, "", "", sp, m_companyCode))
                                    {
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过恶意占库存记录,请谨慎处理");
                                        InsertKFC(soEntity4FPCheck);
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (m_soDA.IsOccupyStockCustomer(soEntity4FPCheck.BaseInfo.CustomerSysNo, null, null, null, m_companyCode))
                            {
                                InsertKFC(soEntity4FPCheck);
                                tmpFPstatus = FPStatus.Suspect;
                                if (m_soDA.IsNewOccupyStockCustomerB(soEntity4FPCheck.BaseInfo.CustomerSysNo.Value))
                                {
                                    tmpResons.Add("新用户,该用户之前有过连续作废订单记录,请谨慎处理");
                                }
                                else
                                {
                                    tmpResons.Add("该用户之前有过连续作废订单记录,请谨慎处理");
                                }
                            }
                        }
                    }
                }

                #endregion
            }

            #region 获取订单的Item列表信息
            List <SOItemInfo> tmpSingleSO = new List <SOItemInfo>();
            //订单状态必须为这几种:Origin WaitingOutStock  WaitingManagerAudit
            if (soEntity4FPCheck.BaseInfo.Status == SOStatus.Origin ||
                soEntity4FPCheck.BaseInfo.Status == SOStatus.WaitingOutStock ||
                soEntity4FPCheck.BaseInfo.Status == SOStatus.WaitingManagerAudit)
            {
                var itemList = m_soDA.GetSOItemsBySOSysNo(soEntity4FPCheck.SysNo.Value);
                tmpSingleSO.AddRange(itemList.Where(p => p.ProductType == SOProductType.Product));
            }

            if (tmpSingleSO.Count == 0)
            {
                tmpResons.Add("空单");
            }
            #endregion

            if (m_isCheckChuanHuo &&
                tmpFPstatus != FPStatus.Suspect)   //可疑优先于炒货,如果已经确认是可疑单,就不用再验证串货了
            {
                if (tmpSingleSO.Count > 0)
                {
                    string   currentSOIPAddress  = soEntity4FPCheck.ClientInfo.CustomerIPAddress;
                    DateTime currentSOCreateTime = soEntity4FPCheck.BaseInfo.CreateTime.Value;

                    #region 检查串货订单
                    //检查PRD
                    foreach (var item in tmpSingleSO)
                    {
                        //仅在遇到要求串货检查的Item时才去检测,减少数据库的访问次数
                        if (m_chuanHuoProductNoList.Find(t => { return(t == item.ProductID); }) != null)
                        {
                            var list = m_soDA.GetChuanHuoSOListByProduct(item.ProductSysNo.Value, currentSOIPAddress, currentSOCreateTime, m_companyCode);
                            if (list.Count > 1)
                            {
                                tmpFPstatus = FPStatus.ChuanHuo;
                                break;
                            }
                        }
                    }

                    //检查C3小类
                    List <int> chuanHuoSOSysNosByC3 = (from a in m_chuanHuoC3SysNoList
                                                       from b in tmpSingleSO
                                                       where a == b.C3SysNo
                                                       select a).ToList();

                    foreach (int c3No in chuanHuoSOSysNosByC3)
                    {
                        var list = m_soDA.GetChuanHuoSOListByC3(c3No, currentSOIPAddress, currentSOCreateTime, m_companyCode);
                        if (list.Count > 1)
                        {
                            tmpFPstatus = FPStatus.ChuanHuo;
                            break;
                        }
                    }

                    if (tmpFPstatus == FPStatus.ChuanHuo)
                    {
                        tmpResons.Add("串货订单");
                    }
                }
                #endregion
            }

            if (m_isCheckChongFu)
            {
                #region 检查重复订单
                if (tmpSingleSO.Count > 0)
                {
                    foreach (var item in tmpSingleSO)
                    {
                        var tmpDuplicateSOs = m_soDA.GetDuplicatSOList(item.ProductSysNo.Value, soEntity4FPCheck.BaseInfo.CustomerSysNo.Value, soEntity4FPCheck.BaseInfo.CreateTime.Value, m_companyCode);
                        if (tmpDuplicateSOs.Count > 1)
                        {
                            string duplicateMarket = "重复订单";
                            if (!tmpResons.Contains(duplicateMarket))
                            {
                                tmpResons.Add(duplicateMarket);
                            }

                            //StringBuilder tmpDuplicateSOSysNosb = new StringBuilder();
                            //foreach (var y in tmpDuplicateSOs)
                            //{
                            //    tmpDuplicateSOSysNosb.Append(string.Format("{0},", y.SysNo));
                            //    if (tmpDuplicateSOSysNosb.Length > 400)
                            //        break;
                            //}
                            //tmpDuplicateSOSysNoString = tmpDuplicateSOSysNosb.ToString().TrimEnd(",".ToCharArray());

                            //只获取30个订单即可,替换原来的长度切断(为什么有更新的限制,暂时去掉)
                            string tmpDuplicateSOSysNoString = string.Join(",", tmpDuplicateSOs.Select(p => p.SysNo.Value));

                            m_soDA.UpdateMarkException(tmpDuplicateSOSysNoString, item.ProductSysNo.Value, tmpDuplicateSOSysNoString);
                        }
                    }
                }
                #endregion
            }

            if (m_isCheckChaoHuo &&
                (!string.IsNullOrEmpty(soEntity4FPCheck.ReceiverInfo.MobilePhone) || !string.IsNullOrEmpty(soEntity4FPCheck.ReceiverInfo.Phone))
                )
            {
                #region 检查炒货订单

                #region PreData
                int SysNoCount = 3;  //订单数量 (默认需要大于的最小订单数量为1)
                int hoursLimit = 24; //需从配置表中读取

                var fPCheckItemEntityTemp = m_fPCheckItemList.Find(t => { return(t.FPCheckItemDataType == "小时之内订单数量大于" && t.FPCheckItemStatus == FPCheckItemStatus.Invalid); });
                if (fPCheckItemEntityTemp != null)
                {
                    if (fPCheckItemEntityTemp.FPCheckItemDataValue != string.Empty)
                    {
                        hoursLimit = Convert.ToInt32(fPCheckItemEntityTemp.FPCheckItemDataValue.Split('|')[0].ToString());
                        SysNoCount = Convert.ToInt32(fPCheckItemEntityTemp.FPCheckItemDataValue.Split('|')[1].ToString());
                    }
                }

                int?PointPromotionFlag = null; //判断是否进行订单优惠券积分的,检测标识符,赋任何值表示此条件有效;
                int?ShipPriceFlag      = null; //判断是否进行订单中运费金额为0的,检测标识符,赋任何值表示此条件有效;
                int?IsVATFlag          = null; //判断是否进行订单中勾选开具增值税发票的,检测标识符,赋任何值表示此条件有效;

                if (m_fPCheckItemList.Count > 0 && m_fPCheckItemList.Find(t => { return(t.FPCheckItemDataType == "订单中使用优惠券/积分等优惠" && t.FPCheckItemStatus == FPCheckItemStatus.Invalid); }) != null)
                {
                    PointPromotionFlag = 1;
                }
                if (m_fPCheckItemList.Count > 0 && m_fPCheckItemList.Find(t => { return(t.FPCheckItemDataType == "订单中运费金额为0" && t.FPCheckItemStatus == FPCheckItemStatus.Invalid); }) != null)
                {
                    ShipPriceFlag = 1;
                }
                if (m_fPCheckItemList.Count > 0 && m_fPCheckItemList.Find(t => { return(t.FPCheckItemDataType == "订单中勾选开具增值税发票" && t.FPCheckItemStatus == FPCheckItemStatus.Invalid); }) != null)
                {
                    IsVATFlag = 1;
                }
                #endregion

                var chaoHuoList = m_soDA.GetChaoHuoSOList(
                    soEntity4FPCheck.ReceiverInfo.MobilePhone
                    , soEntity4FPCheck.ReceiverInfo.Phone
                    , hoursLimit
                    , soEntity4FPCheck.BaseInfo.CreateTime.Value
                    , PointPromotionFlag
                    , ShipPriceFlag
                    , IsVATFlag
                    , m_companyCode
                    );

                if (chaoHuoList.Count > SysNoCount)
                {
                    if (tmpResons.Contains("重复订单"))
                    {
                        tmpResons.Clear();
                    }

                    tmpFPstatus = FPStatus.ChaoHuo;

                    #region //收集炒货的订单号
                    int lenReasons = 0;

                    tmpResons.ForEach(x =>
                    {
                        lenReasons += x.Length;
                    }
                                      );

                    lenReasons += tmpResons.Count;

                    StringBuilder tmpChaoHuoSOSysNosb   = new StringBuilder();
                    string        tmpChaoHuoSysNoString = string.Empty;
                    string        ChaoHuoSysNo;

                    foreach (var x in chaoHuoList)
                    {
                        ChaoHuoSysNo = string.Format("{0},", x.SysNo);
                        if ((lenReasons + tmpChaoHuoSOSysNosb.Length + ChaoHuoSysNo.Length - 1) > 200)
                        {
                            break;
                        }
                        tmpChaoHuoSOSysNosb.Append(ChaoHuoSysNo);
                    }

                    tmpChaoHuoSysNoString = tmpChaoHuoSOSysNosb.ToString().TrimEnd(",".ToCharArray());

                    tmpResons.Add(tmpChaoHuoSysNoString);
                    #endregion

                    string soSysNos = string.Join(",", chaoHuoList.Select(p => p.SysNo.Value));
                    m_soDA.UpdateMarkFPStatus(soSysNos, (int)tmpFPstatus, tmpChaoHuoSysNoString, false);
                }
                #endregion
            }

            #region 检查本地仓断货订单
            if (m_outStockList.Count > 0)
            {
                string localWH = ExternalDomainBroker.GetLocalWarehouseNumber(soEntity4FPCheck.ReceiverInfo.AreaSysNo.Value, m_companyCode);
                if (!string.IsNullOrEmpty(localWH) &&
                    m_outStockList.Exists(os => os.ToString() == localWH) &&
                    m_soDA.CountNotLocalWHSOItem(soEntity4FPCheck.SysNo.Value, localWH) > 0)
                {
                    m_soDA.UpdateLocalWHMark(soEntity4FPCheck.SysNo.Value, localWH, 1);
                }
            }

            #endregion

            if (tmpFPstatus == FPStatus.Normal &&
                tmpResons.Count == 0)
            {
                tmpResons.Add("正常单");
            }

            string temReson = string.Empty;
            foreach (string reson in tmpResons)
            {
                temReson += reson + ";";
            }
            temReson = temReson.TrimEnd(';');

            m_soDA.UpdateMarkFPStatus(soEntity4FPCheck.SysNo.ToString(), (int)tmpFPstatus, temReson, IsMarkRed);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 检查具体的一单
        /// </summary>
        /// <param name="soEntity4FPCheck"></param>
        private static void CheckSingle(SOEntity4FPEntity soEntity4FPCheck)
        {
            List <string> tmpResons = new List <string>();

            FPStatus tmpFPstatus = FPStatus.Normal;
            bool     IsMarkRed   = false; //是否飘红可疑标记

            if (IsCheckKeYi)
            {
                #region 检查疑单

                if (SOFPCheckDA.IsSpiteCustomer(soEntity4FPCheck.CustomerSysNo, CompanyCode))
                {
                    tmpFPstatus = FPStatus.Suspect;
                    tmpResons.Add("此用户是恶意用户,之前有过不良的购物记录");
                    InsertKFC(soEntity4FPCheck);
                }
                else
                {
                    // 如果是货到付款
                    bool isRej = false;
                    if (payTypeList.Exists(item => item.SysNo == soEntity4FPCheck.PayTypeSysNo && item.IsPayWhenRecv == 1))
                    {
                        if (CommonDA.IsNewCustomer(soEntity4FPCheck.CustomerSysNo))
                        {
                            if (SOFPCheckDA.IsRejectionCustomer(soEntity4FPCheck.ShippingAddress, soEntity4FPCheck.ReceiveCellPhone, soEntity4FPCheck.ReceivePhone, CompanyCode))
                            {
                                isRej       = true;
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过拒收记录,请谨慎处理");
                            }
                            else if (soEntity4FPCheck.ReceivePhone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceivePhone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (SOFPCheckDA.IsRejectionCustomer("", "", sp, CompanyCode))
                                    {
                                        isRej       = true;
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过拒收记录,请谨慎处理");
                                        break;
                                    }
                                }
                            }
                            else if (soEntity4FPCheck.ReceivePhone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceivePhone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (SOFPCheckDA.IsRejectionCustomer("", "", sp, CompanyCode))
                                    {
                                        isRej       = true;
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过拒收记录,请谨慎处理");
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (SOFPCheckDA.IsRejectionCustomer(soEntity4FPCheck.CustomerSysNo))
                            {
                                isRej       = true;
                                tmpFPstatus = FPStatus.Suspect;
                                if (SOFPCheckDA.IsNewRejectionCustomerB(soEntity4FPCheck.CustomerSysNo, CompanyCode))
                                {
                                    tmpResons.Add("新用户,该用户之前有过拒收货物的订单记录,请谨慎处理");
                                }
                                else
                                {
                                    tmpResons.Add("该用户拒收订单的比例超过限度,请谨慎处理");
                                }
                            }
                        }

                        if (isRej != true)
                        {
                            // 是新客户并且没有通过手机验证
                            if (CommonDA.IsNewCustomer(soEntity4FPCheck.CustomerSysNo) && !CommonDA.IsTelPhoneCheck(soEntity4FPCheck.CustomerSysNo))
                            {
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("新客户");
                                tmpResons.Add("没有通过手机验证的货到付款订单");

                                if (soEntity4FPCheck.SOAmt > 500)
                                {
                                    tmpFPstatus = FPStatus.Suspect; //标为可疑单
                                    tmpResons.Add("订单金额在500元以上");
                                    IsMarkRed = true;               //设置可疑信息飘红
                                }
                                else
                                {
                                    tmpFPstatus = FPStatus.Suspect;//标为可疑单
                                    tmpResons.Add("订单金额在0-500元");
                                }

                                if (SOQueryDA.GetSOCount4OneDay(soEntity4FPCheck.CustomerSysNo, CompanyCode) > 1)
                                {
                                    tmpFPstatus = FPStatus.Suspect;
                                    tmpResons.Add("一天之中存在多个不同的收货地址的订单信息");
                                    IsMarkRed = true;
                                }

                                // 将当前订单信息写入可疑表
                                // InsertKFC(x);
                            }
                            else if (AutoRMACustomerSysNos.Find(z => { return(z == soEntity4FPCheck.CustomerSysNo); }) > 0)
                            {
                                //一个月内物流拒收过此用户的订单标为可疑单
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("一个月内物流拒收过此用户的订单");
                                IsMarkRed = true;
                            }
                        }
                        else
                        {
                            InsertKFC(soEntity4FPCheck);
                        }
                    }
                    else  //款到发货
                    {
                        if (SOFPCheckDA.IsNewOccupyStockCustomerA(soEntity4FPCheck.CustomerSysNo))
                        {
                            if (SOFPCheckDA.IsOccupyStockCustomer(soEntity4FPCheck.ShippingAddress, soEntity4FPCheck.ReceiveCellPhone, soEntity4FPCheck.ReceivePhone, CompanyCode))
                            {
                                tmpFPstatus = FPStatus.Suspect;
                                tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过恶意占库存记录,请谨慎处理");
                                InsertKFC(soEntity4FPCheck);
                            }
                            else if (soEntity4FPCheck.ReceivePhone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceivePhone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (SOFPCheckDA.IsOccupyStockCustomer("", "", sp, CompanyCode))
                                    {
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过恶意占库存记录,请谨慎处理");
                                        InsertKFC(soEntity4FPCheck);
                                        break;
                                    }
                                }
                            }
                            else if (soEntity4FPCheck.ReceivePhone.IndexOf(",") >= 0)
                            {
                                string[] singlePhone = soEntity4FPCheck.ReceivePhone.Split(',');
                                foreach (string sp in singlePhone)
                                {
                                    if (SOFPCheckDA.IsOccupyStockCustomer("", "", sp, CompanyCode))
                                    {
                                        tmpFPstatus = FPStatus.Suspect;
                                        tmpResons.Add("新用户,该用户的地址(或手机号码或固定电话)有过恶意占库存记录,请谨慎处理");
                                        InsertKFC(soEntity4FPCheck);
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (SOFPCheckDA.IsOccupyStockCustomer(soEntity4FPCheck.CustomerSysNo))
                            {
                                InsertKFC(soEntity4FPCheck);
                                tmpFPstatus = FPStatus.Suspect;
                                if (SOFPCheckDA.IsNewOccupyStockCustomerB(soEntity4FPCheck.CustomerSysNo))
                                {
                                    tmpResons.Add("新用户,该用户之前有过连续作废订单记录,请谨慎处理");
                                }
                                else
                                {
                                    tmpResons.Add("该用户之前有过连续作废订单记录,请谨慎处理");
                                }
                            }
                        }
                    }
                }

                #endregion
            }

            #region 获取订单的Item列表信息
            List <SOEntity4CheckEntity> tmpSingleSO = SOFPCheckDA.GetSingleSO4FPCheck(soEntity4FPCheck.SysNo);
            if (tmpSingleSO.Count == 0)
            {
                tmpResons.Add("空单");
            }
            #endregion

            if (IsCheckChuanHuo &&
                tmpFPstatus != FPStatus.Suspect)   //可疑优先于炒货,如果已经确认是可疑单,就不用再验证串货了
            {
                if (tmpSingleSO.Count > 0)
                {
                    string   currentSOIPAddress  = tmpSingleSO[0].IPAddress;
                    DateTime currentSOCreateTime = tmpSingleSO[0].CreateTime;


                    #region 检查串货订单
                    //检查PRD
                    foreach (SOEntity4CheckEntity item in tmpSingleSO)
                    {
                        //仅在遇到要求串货检查的Item时才去检测,减少数据库的访问次数
                        if (ChuanHuoProductNoList.Find(t => { return(t == item.ProductID); }) != null)
                        {
                            List <int> queryResultChuanHuoSOSysNosByProduct = SOFPCheckDA.GetChuanHuoSOSysNoListByProduct(item.ProductSysNo, currentSOIPAddress, currentSOCreateTime, CompanyCode);
                            if (queryResultChuanHuoSOSysNosByProduct.Count > 1)
                            {
                                tmpFPstatus = FPStatus.ChuanHuo;
                                break;
                            }
                        }
                    }

                    //检查C3小类
                    List <int> chuanHuoSOSysNosByC3 = (from a in ChuanHuoC3SysNoList
                                                       from b in tmpSingleSO
                                                       where a == b.C3SysNo
                                                       select a).ToList();

                    foreach (int c3No in chuanHuoSOSysNosByC3)
                    {
                        List <int> queryResultChuanHuoSOSysNosByC3 = SOFPCheckDA.GetChuanHuoSOSysNoListByC3(c3No, currentSOIPAddress, currentSOCreateTime, CompanyCode);
                        if (queryResultChuanHuoSOSysNosByC3.Count > 1)
                        {
                            tmpFPstatus = FPStatus.ChuanHuo;
                            break;
                        }
                    }

                    if (tmpFPstatus == FPStatus.ChuanHuo)
                    {
                        tmpResons.Add("串货订单");
                    }
                }

                #endregion
            }

            if (IsCheckChongFu)
            {
                #region 检查重复订单
                if (tmpSingleSO.Count > 0)
                {
                    foreach (SOEntity4CheckEntity item in tmpSingleSO)
                    {
                        List <int> tmpDuplicateSOSysNos = SOFPCheckDA.GetDuplicatSOSysNoList(item.SOSysNo, item.ProductSysNo, item.CustomerSysNo, item.CreateTime, CompanyCode);
                        if (tmpDuplicateSOSysNos.Count > 1)
                        {
                            if (!tmpResons.Contains("重复订单"))
                            {
                                tmpResons.Add("重复订单");
                            }

                            StringBuilder tmpDuplicateSOSysNosb     = new StringBuilder();
                            string        tmpDuplicateSOSysNoString = string.Empty;

                            foreach (int y in tmpDuplicateSOSysNos)
                            {
                                tmpDuplicateSOSysNosb.Append(string.Format("{0},", y));
                                if (tmpDuplicateSOSysNosb.Length > 400)
                                {
                                    break;
                                }
                            }

                            tmpDuplicateSOSysNoString = tmpDuplicateSOSysNosb.ToString().TrimEnd(",".ToCharArray());

                            SOFPCheckDA.UpdateMarkException(tmpDuplicateSOSysNoString, item.ProductSysNo, tmpDuplicateSOSysNoString);
                        }
                    }
                }
                #endregion
            }

            if (IsCheckChaoHuo &&
                (!string.IsNullOrEmpty(soEntity4FPCheck.ReceiveCellPhone) || !string.IsNullOrEmpty(soEntity4FPCheck.ReceivePhone))
                )
            {
                #region 检查炒货订单

                #region PreData
                int SysNoCount = 3;  //订单数量 (默认需要大于的最小订单数量为1)
                int hoursLimit = 24; //需从配置表中读取

                FPCheckItemEntity FPCheckItemEntityTemp = FPCheckItemList.Find(t => { return(t.Description == "小时之内订单数量大于" && t.Status == 0); });
                if (FPCheckItemEntityTemp != null)
                {
                    if (FPCheckItemEntityTemp.ReferenceContent != string.Empty)
                    {
                        hoursLimit = Convert.ToInt32(FPCheckItemEntityTemp.ReferenceContent.Split('|')[0].ToString());
                        SysNoCount = Convert.ToInt32(FPCheckItemEntityTemp.ReferenceContent.Split('|')[1].ToString());
                    }
                }

                int?PointPromotionFlag = null; //判断是否进行订单优惠券积分的,检测标识符,赋任何值表示此条件有效;
                int?ShipPriceFlag      = null; //判断是否进行订单中运费金额为0的,检测标识符,赋任何值表示此条件有效;
                int?IsVATFlag          = null; //判断是否进行订单中勾选开具增值税发票的,检测标识符,赋任何值表示此条件有效;

                if (FPCheckItemList.Count > 0 && FPCheckItemList.Find(t => { return(t.Description == "订单中使用蛋券/积分等优惠" && t.Status == 0); }) != null)
                {
                    PointPromotionFlag = 1;
                }
                if (FPCheckItemList.Count > 0 && FPCheckItemList.Find(t => { return(t.Description == "订单中运费金额为0" && t.Status == 0); }) != null)
                {
                    ShipPriceFlag = 1;
                }
                if (FPCheckItemList.Count > 0 && FPCheckItemList.Find(t => { return(t.Description == "订单中勾选开具增值税发票" && t.Status == 0); }) != null)
                {
                    IsVATFlag = 1;
                }
                #endregion

                List <int> queryResultForChaoHuoList = SOFPCheckDA.GetChaoHuoSOSysNoList(
                    soEntity4FPCheck.ReceiveCellPhone
                    , soEntity4FPCheck.ReceivePhone
                    , hoursLimit
                    , soEntity4FPCheck.SOCreateTime
                    , PointPromotionFlag
                    , ShipPriceFlag
                    , IsVATFlag
                    , CompanyCode
                    );

                if (queryResultForChaoHuoList.Count > SysNoCount)
                {
                    if (tmpResons.Contains("重复订单"))
                    {
                        //    tmpResons.Clear();
                        //    tmpResons.Add("重复订单");
                        //}
                        //else
                        //{
                        tmpResons.Clear();
                    }

                    //tmpResons.Add("炒货订单");
                    tmpFPstatus = FPStatus.ChaoHuo;

                    #region //收集炒货的订单号
                    int lenReasons = 0;

                    tmpResons.ForEach(x =>
                    {
                        lenReasons += x.Length;
                    }
                                      );

                    lenReasons += tmpResons.Count;

                    StringBuilder tmpChaoHuoSOSysNosb   = new StringBuilder();
                    string        tmpChaoHuoSysNoString = string.Empty;
                    string        ChaoHuoSysNo;

                    foreach (int x in queryResultForChaoHuoList)
                    {
                        ChaoHuoSysNo = string.Format("{0},", x);
                        if ((lenReasons + tmpChaoHuoSOSysNosb.Length + ChaoHuoSysNo.Length - 1) > 200)
                        {
                            break;
                        }
                        tmpChaoHuoSOSysNosb.Append(ChaoHuoSysNo);
                    }

                    tmpChaoHuoSysNoString = tmpChaoHuoSOSysNosb.ToString().TrimEnd(",".ToCharArray());

                    tmpResons.Add(tmpChaoHuoSysNoString);
                    #endregion

                    foreach (int sysNo in queryResultForChaoHuoList)
                    {
                        SOFPCheckDA.UpdateMarkFPStatus(sysNo, (int)tmpFPstatus, tmpChaoHuoSysNoString, false);
                    }
                }
                #endregion
            }

            #region 检查本地仓断货订单
            string localWH = CommonDA.GetlocalWHByAreaSysNo(soEntity4FPCheck.ReceiveAreaSysNo, CompanyCode);
            if (!string.IsNullOrEmpty(localWH) &&
                OutStockList.Exists(os => os == localWH) &&
                CommonDA.ExistsNotLocalWH(soEntity4FPCheck.SysNo, localWH, CompanyCode))
            {
                CommonDA.UpdateLocalWHMark(soEntity4FPCheck.SysNo, localWH, 1);
            }
            #endregion

            if (tmpFPstatus == FPStatus.Normal &&
                tmpResons.Count == 0)
            {
                tmpResons.Add("正常单");
            }

            string temReson = string.Empty;
            foreach (string reson in tmpResons)
            {
                temReson += reson + ";";
            }
            temReson = temReson.TrimEnd(';');

            SOFPCheckDA.UpdateMarkFPStatus(soEntity4FPCheck.SysNo, (int)tmpFPstatus, temReson, IsMarkRed);

            WriteLog(string.Format("{0} {1}", soEntity4FPCheck.SysNo, temReson));
            GC.Collect();
        }