Esempio n. 1
0
        public List <NotifyOrderModel> QueryOrdersList(ScanOrderCondition condition)
        {
            List <NotifyOrderEntity> list    = null;
            List <NotifyOrderModel>  modList = new List <NotifyOrderModel>();

            list.ForEach(x => modList.Add(MappingHelper.From <NotifyOrderModel, NotifyOrderEntity>(x)));
            return(modList);
        }
Esempio n. 2
0
        private List <string> GetOrdersConditionList(ScanOrderCondition condition)
        {
            List <string> list = new List <string>();

            list.Add(" 1=1 ");
            list.Add(" OrderStatus = @Status  ");
            list.Add(" OutTime BETWEEN @StartTime AND @EndTime  ");
            list.Add(" OrderId > @ScanOrderIdInit  ");
            return(list);
        }
Esempio n. 3
0
        internal List <NotifyOrderEntity> QueryOrdersList(ScanOrderCondition condition)
        {
            string sql = "";

            try
            {
                const string             table       = @" dbo.tblOrders   WITH(NOLOCK) ";
                const string             selectField = @"OrderId, OrderNo,  OrderStatus,{0} OutTime,SalesmanID,ProviderID,ProxyerID";
                string                   orderby     = "OutTime" + " " + condition.OrderDirection;
                string                   sqlWhere    = string.Join(" AND ", GetOrdersConditionList(condition).ToArray());
                List <NotifyOrderEntity> list        = CommonPage.GetData <NotifyOrderEntity, ScanOrderCondition>(table, string.Format(selectField, condition.OrderBy), orderby, sqlWhere, condition, out sql);
                DBLog.Process("", "", "", "JinRiDBQuery.QueryOrdersList", "", "获取订单信息", string.Format("sql:【{0}】,扫描查询条件ScanOrderCondition:【{1}】", sql, JsonConvert.SerializeObject(condition)), "Info");
                return(list);
            }
            catch (Exception ex)
            {
                DBLog.Process("", "", "", "JinRiDBQuery.QueryOrdersList", "", "获取订单信息", string.Format("sql:【{0}】,扫描查询条件ScanOrderCondition:【{1}】,获取订单信息异常,ex:{2}", sql, JsonConvert.SerializeObject(condition), ex.Message), "Fatal");
                List <NotifyOrderEntity> list = new List <NotifyOrderEntity>();
                return(list);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 获取扫描订单信息
        /// </summary>
        /// <param name="setting"></param>
        /// <param name="stime"></param>
        /// <param name="etime"></param>
        /// <returns></returns>
        public List <NotifyOrderEntity> GetOrdersList(ScanOrderCondition condition)
        {
            string sql = "";

            try
            {
                const string sqlStr =
                    @"SELECT OrderNo,  OrderStatus,{0} OutTime,SalesmanID,ProviderID,ProxyerID
FROM tblOrders WITH(NOLOCK) 
WHERE OrderStatus = @OrderStatus 
AND {0} BETWEEN @Stime AND @Etime 
AND OrderId > @OrderId  {1}
ORDER BY {0}";
                string includes = "";
                if (!string.IsNullOrWhiteSpace(condition.Includes))
                {
                    includes = string.Format(" AND SalesmanId IN ({0}) ", condition.Includes);
                }
                sql = string.Format(sqlStr, condition.OrderBy, includes);

                DynamicParameters parameter = new DynamicParameters();
                parameter.Add("OrderStatus", condition.Status);
                parameter.Add("Stime", condition.StartTime);
                parameter.Add("Etime", condition.EndTime);
                parameter.Add("OrderId", condition.ScanOrderIdInit);
                parameter.Add("OrderByField", condition.OrderBy);

                DBLog.Process("sql", "sql", "", "sql", "sql", "sql", string.Format("sql:【{0}】,扫描查询条件ScanOrderCondition:【{1}】", sql, JsonConvert.SerializeObject(condition)), "sql");
                using (var conn = new SqlConnection(ConnectionString.JinRiDB_SELECT))
                {
                    return(conn.Query <NotifyOrderEntity>(sql, parameter).ToList());
                }
            }
            catch (Exception ex)
            {
                DBLog.Process("", "", "", "JinRiDBQuery.GetOrdersList", "", "获取订单信息", string.Format("sql:【{0}】,扫描查询条件ScanOrderCondition:【{1}】,获取订单信息异常,ex:{2}", sql, JsonConvert.SerializeObject(condition), ex.Message), "Fatal");
                List <NotifyOrderEntity> list = new List <NotifyOrderEntity>();
                return(list);
            }
        }
Esempio n. 5
0
        public ActionResult OrderList(ScanOrderCondition model)
        {
#if DEBUG
            model.ScanOrderIdInit = 0;
#else
            model.ScanOrderIdInit = 86000000;
#endif
            if (model.Status == 1)
            {
                model.OrderBy = "PayTime";
            }
            else if (model.Status == 2)
            {
                model.OrderBy = "OutTime";
            }
            else if (model.Status == 7)
            {
                model.OrderBy = "Contingent7";
            }
            else if (model.Status == 3)
            {
                model.OrderBy = "Rtime";
            }
            else if (model.Status == 4)
            {
                model.OrderBy = "Rtime";
            }
            else if (model.Status == 5)
            {
                model.OrderBy = "OverTime";
            }
            List <NotifyOrderModel> list = m_diffBus.QueryOrdersList(model);
            var json = JsonConvert.SerializeObject(new
            {
                rows  = list,
                total = model.RecordCount
            }, JsonConvertHelper.IsoDateTimeConverter);
            return(Content(json));
        }
Esempio n. 6
0
        public void TestScanServerSettingCollection()
        {
            List <ScanServiceSetting.ScanSetting> current = ScanServiceSetting.ScanSettingList;

            foreach (ScanServiceSetting.ScanSetting setting in current)
            {
                DateTime           stime     = new DateTime(2015, 10, 1);
                DateTime           etime     = new DateTime(2015, 10, 30);
                ScanOrderCondition condition = new ScanOrderCondition();
                condition.OrderBy         = setting.OrderBy;
                condition.ScanOrderIdInit = setting.ScanOrderIdInit;
                condition.PageSize        = setting.ScanCount;
                condition.Status          = setting.OrderStatus;
                condition.StartTime       = stime;
                condition.EndTime         = etime;
                condition.Includes        = string.Join(",", setting.Include.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                List <NotifyOrderEntity> list = JinRiDBFacade.Instance.GetOrdersList(condition);
                foreach (NotifyOrderEntity ent in list)
                {
                }
            }
        }
Esempio n. 7
0
        private void GetScanMessageList(object setting)
        {
            string ikey = Guid.NewGuid().ToString();

            ScanServiceSetting.ScanSetting scanSetting = (ScanServiceSetting.ScanSetting)setting;
            Process.Debug("m_scanConditionDic", "m_scanConditionDic", string.Format("scanSetting:【{0}】", scanSetting.ScanCount), "");
            int scanIntervalTime   = scanSetting.IntervalTime * (-1);
            ScanOrderCondition con = new ScanOrderCondition();

            con.OrderBy         = scanSetting.OrderBy;
            con.ScanOrderIdInit = scanSetting.ScanOrderIdInit;
            con.PageSize        = scanSetting.ScanCount;
            con.Status          = scanSetting.OrderStatus;
            con.Includes        = string.Join(",", scanSetting.Include.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
            DateTime endTime = GetDateTimeNow(ikey);

            con.StartTime = endTime.AddSeconds(scanIntervalTime);
            con.EndTime   = endTime;
            Handle.Debug(ikey, "订单扫描开始", "GetScanMessageList", scanSetting.MessType, string.Format("条件参数【{0}】,订单扫描初开始,间隔:{1}", JsonConvert.SerializeObject(con), scanIntervalTime.ToString()), "");
            try
            {
                System.Diagnostics.Stopwatch execTime = new System.Diagnostics.Stopwatch();
                while (true)
                {
                    execTime.Restart();
                    ikey = Guid.NewGuid().ToString();
                    List <NotifyOrderEntity> orderList = GetOrdersList(con);
                    if (orderList != null && orderList.Count > 0)
                    {
                        foreach (NotifyOrderEntity orderEnt in orderList)
                        {
                            if (!IsSendingDataCache(orderEnt, scanSetting.MessType))
                            {
                                string        errMsg  = "";
                                NotifyMessage message = new NotifyMessage();
                                message.MessageKey = SetMessageKey(orderEnt, scanSetting.MessType);
                                message.SourceFrom = "OrderScan手动扫描";
                                message.AppId      = ConfigurationAppSetting.AppId;
                                string data = string.Format("orderno={0}&OutTime={1}&SalesmanID={2}&ProviderID={3}&ProxyerID={4}",
                                                            orderEnt.OrderNo, orderEnt.OutTime, orderEnt.SalesmanID, orderEnt.ProviderID, orderEnt.ProxyerID);
                                message.NotifyData      = data;
                                message.MessagePriority = JinRi.Notify.Model.MessagePriorityEnum.None;
                                message.MessageType     = scanSetting.MessType;
                                DateTime dt        = DateTime.Now;
                                bool     ret       = SendOrder(message, out errMsg);
                                Double   spendTime = (DateTime.Now - dt).TotalMilliseconds;
                                Process.Debug(ikey, "订单扫描记录", "GetScanMessageList", orderEnt.OrderNo, string.Format("订单扫描记录:发送时间【{0}】,调用耗时【{1}】ms,返回结果:【{2}】", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), spendTime, errMsg), "发送");
                                if (!ret)
                                {
                                    lock (m_repeatNotifyTimesLockObj)
                                    {
                                        //进入补偿推送队列
                                        m_repeatNotifyTimes[orderEnt.OrderNo] = 1;
                                    }
                                    _repeatNotifyPool.Write(message);
                                }
                            }
                            Process.Debug(ikey, "订单扫描记录", "GetScanMessageList", orderEnt.OrderNo, "订单扫描记录", "订单");
                        }
                    }
                    execTime.Stop();
                    Process.Debug(ikey, "订单扫描记录", "GetScanMessageList", scanSetting.MessType, string.Format("扫描开始时间:【{0}】,扫描截止时间:【{1}】,扫描条数【{2}】,执行时间【{3}】ms", con.StartTime, con.EndTime, orderList.Count, execTime.ElapsedMilliseconds), "");
                    int sleep = (int)execTime.ElapsedMilliseconds;
                    if (scanSetting.IdleSleepTime > sleep)
                    {
                        Thread.Sleep(scanSetting.IdleSleepTime - sleep);
                    }
                    con.StartTime = endTime.AddSeconds(scanIntervalTime);
                    con.EndTime   = GetDateTimeNow(ikey);
                    endTime       = con.EndTime;
                    TimeSpan timeSpan  = con.EndTime - DateTime.Now;
                    double   sleepTime = timeSpan.TotalMilliseconds;
                    if (sleepTime > 0)
                    {
                        Process.Debug(ikey, "订单扫描记录", "GetScanMessageList", scanSetting.MessType, string.Format("休眠时间【{0}】", sleepTime.ToString(), ""));
                        Thread.Sleep((int)sleepTime);
                    }
                }
            }
            catch (Exception ex)
            {
                Process.Fatal(ikey, "订单扫描记录", "GetScanMessageList", scanSetting.MessType, string.Format("重扫线程异常结束ex【{2}】,扫描开始时间:【{0}】,扫描截止时间:【{1}】", con.StartTime.ToString("yyyy-MM-dd HH:mm:ss"), con.EndTime.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString()), "");
                ThreadPool.QueueUserWorkItem(x =>
                {
                    try { Scan(); }
                    catch { }
                }
                                             );
            }
        }
Esempio n. 8
0
 private List <NotifyOrderEntity> GetOrdersListBuSao(ScanOrderCondition condition)
 {
     // TODO
     return(null);
 }
Esempio n. 9
0
        /// <summary>
        /// 补扫
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public List <NotifyOrderEntity> GetOrdersListBuSao(ScanOrderCondition condition)
        {
            string sql = "";

            try
            {
                List <NotifyOrderEntity> notifyList = new List <NotifyOrderEntity>();
                List <NotifyOrderEntity> list1      = null;
                List <NotifyOrderEntity> list2      = null;
                List <NotifyOrderEntity> list3      = null;
                string includes = "";
                if (!string.IsNullOrWhiteSpace(condition.Includes))
                {
                    includes = string.Format(" AND SalesmanId IN ({0}) ", condition.Includes);
                }

                #region 出票
                string sqlStr =
                    @"SELECT OrderNo,  OrderStatus
FROM tblOrders WITH(NOLOCK) 
WHERE OrderStatus =2 
AND OutTime BETWEEN @Stime AND @Etime 
AND OrderId > @OrderId  {0}
ORDER BY OutTime";
                sql = string.Format(sqlStr, includes);
                DynamicParameters parameter = new DynamicParameters();
                parameter.Add("Stime", condition.StartTime);
                parameter.Add("Etime", condition.EndTime);
                parameter.Add("OrderId", condition.ScanOrderIdInit);
                using (var conn = new SqlConnection(ConnectionString.JinRiDB_SELECT))
                {
                    list1 = conn.Query <NotifyOrderEntity>(sql, parameter).ToList();
                }
                #endregion

                #region 暂不能出票
                sqlStr =
                    @"SELECT OrderNo,  OrderStatus
FROM tblOrders WITH(NOLOCK) 
WHERE OrderStatus =7 
AND Contingent7 BETWEEN @Stime AND @Etime 
AND OrderId > @OrderId  {0}
ORDER BY Contingent7";
                sql = string.Format(sqlStr, includes);
                using (var conn = new SqlConnection(ConnectionString.JinRiDB_SELECT))
                {
                    list2 = conn.Query <NotifyOrderEntity>(sql, parameter).ToList();
                }
                #endregion

                #region 退款成功
                sqlStr =
                    @"SELECT OrderNo,  OrderStatus
FROM tblOrders WITH(NOLOCK) 
WHERE OrderStatus =5 
AND OverTime BETWEEN @Stime AND @Etime 
AND OrderId > @OrderId  {0}
ORDER BY OverTime";
                sql = string.Format(sqlStr, includes);
                using (var conn = new SqlConnection(ConnectionString.JinRiDB_SELECT))
                {
                    list3 = conn.Query <NotifyOrderEntity>(sql, parameter).ToList();
                }
                #endregion

                if (list1.Any())
                {
                    notifyList.AddRange(list1);
                }
                if (list2.Any())
                {
                    notifyList.AddRange(list2);
                }
                if (list3.Any())
                {
                    notifyList.AddRange(list3);
                }
                return(notifyList);
            }
            catch (Exception ex)
            {
                DBLog.Process("", "", "", "JinRiDBQuery.GetOrdersList", "", "获取订单信息", string.Format("sql:【{0}】,扫描查询条件ScanOrderCondition:【{1}】,获取订单信息异常,ex:{2}", sql, JsonConvert.SerializeObject(condition), ex.Message), "Fatal");
                List <NotifyOrderEntity> list = new List <NotifyOrderEntity>();
                return(list);
            }
        }
Esempio n. 10
0
 public List <NotifyOrderEntity> GetOrdersListBuSao(ScanOrderCondition condition)
 {
     return(JinRiDBQuery.Instance.GetOrdersListBuSao(condition));
 }
Esempio n. 11
0
 public List <NotifyOrderEntity> QueryOrdersList(ScanOrderCondition condition)
 {
     return(JinRiDBQuery.Instance.QueryOrdersList(condition));
 }