/// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="fBillNo"></param>
        /// <param name="fEmpName">业务员</param>
        /// <param name="page"></param>
        /// <returns></returns>
        public ActionResult QueryOrderList(QueryOrderViewModel viewModel)
        {
            var model = new ReturnModel();

            if (!apiService.IsExistsUserGroupFieldDisplayed(viewModel.userGroupNumber))
            {
                model.Code    = -5;
                model.Message = "用户所在分组,未设置显示字段";
                return(Json(model));
            }

            var list = apiService.QueryOrderList(viewModel);

            if (list == null || list.Count == 0)
            {
                model.Code = 0;
            }

            model.Data = list;
            return(Json(model));
        }
        public ActionResult GetOrderList(QueryOrderViewModel queryModel, JqGridParam jqgridparam)
        {
            try
            {
                Stopwatch watch = CommonHelper.TimerStart();
                List <SaleOrderViewModel> listData = null;
                if (queryModel.QueryType == "PrintBatch")
                {
                    if (string.IsNullOrWhiteSpace(queryModel.PrintBatchId))
                    {
                        throw new Exception("打印批次号为空");
                    }
                    listData = _orderBll.GetOrderListByPrintBatch(queryModel.PrintBatchId, jqgridparam);
                }
                else if (!string.IsNullOrWhiteSpace(queryModel.QueryType))
                {
                    queryModel.Status = (int)OrderStatus.WaitPick;
                    listData          = _orderBll.GetOrderList(queryModel, jqgridparam);
                }
                else
                {
                    listData = new List <SaleOrderViewModel>();
                }

                var jsonData = new
                {
                    total    = jqgridparam.total,
                    page     = jqgridparam.page,
                    records  = jqgridparam.records,
                    costtime = CommonHelper.TimerEnd(watch),
                    rows     = listData,
                };
                return(Content(jsonData.ToJson()));
            }
            catch (Exception ex)
            {
                BaseSysLogBll.Instance.WriteLog("", OperationType.Query, "-1", "异常错误:" + ex.Message);
                return(null);
            }
        }
Exemple #3
0
        /// <summary>
        /// 查询订单
        /// </summary>
        /// <param name="fBillNo"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public List <SalesOrder> QueryOrderList(QueryOrderViewModel model)
        {
            try
            {
                int    pageSize     = 10;
                string queryValue   = "";// 是否
                var    sqlParameter = new List <SqlParameter>()
                {
                    new SqlParameter("@PageIndex", (model.page - 1) * pageSize),
                    new SqlParameter("@PageSize", model.page * pageSize)
                };

                string sql = "select ROW_NUMBER() over(order by FDate desc) rownumber, FBillNo,FCustName,FName,FDeptName from tm_v_SEOrderQuery where 1=1";

                if (!string.IsNullOrEmpty(model.fBillNo))
                {
                    sql += " and (FBillNo like @FBillNo or FEmpName like @FBillNo or FCustName like @FBillNo)";
                    sqlParameter.Add(new SqlParameter {
                        ParameterName = "@FBillNo", Value = "%" + model.fBillNo + "%", SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (!string.IsNullOrEmpty(model.fEmpName)) //根据业务人员名称查询
                {
                    sql += " and FEmpName like @FEmpName";
                    sqlParameter.Add(new SqlParameter {
                        ParameterName = "@FEmpName", Value = "%" + model.fEmpName + "%", SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (!model.isConfirm.Equals("-1")) // 是否确认
                {
                    sql += "and FConfirmStatus=@FConfirmStatus";

                    //总经理未审核通过的为特批未通过
                    if (model.isConfirm.Equals("2"))
                    {
                        queryValue = "特批未通过";
                    }
                    else if (model.isConfirm.Equals("0"))
                    {
                        queryValue = "否";
                    }
                    else if (model.isConfirm.Equals("1"))
                    {
                        queryValue = "是";
                    }
                    sqlParameter.Add(new SqlParameter {
                        ParameterName = "@FConfirmStatus", Value = queryValue, SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (!model.isStock.Equals("-1")) //是否发货
                {
                    sql       += " and FStockStatus=@FStockStatus";
                    queryValue = model.isStock == "1" ? "是" : "否";
                    sqlParameter.Add(new SqlParameter {
                        ParameterName = "@FStockStatus", Value = queryValue, SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (!model.isInvoice.Equals("-1")) //是否开票
                {
                    sql       += " and FInvoiceStatus=@FInvoiceStatus";
                    queryValue = model.isInvoice == "1" ? "是" : "否";
                    sqlParameter.Add(new SqlParameter {
                        ParameterName = "@FInvoiceStatus", Value = queryValue, SqlDbType = SqlDbType.NVarChar
                    });
                }

                if (!model.isReceive.Equals("-1")) //是否收款
                {
                    sql       += " and FReceiveStatus=@FReceiveStatus";
                    queryValue = model.isReceive == "1" ? "是" : "否";
                    sqlParameter.Add(new SqlParameter {
                        ParameterName = "@FReceiveStatus", Value = queryValue, SqlDbType = SqlDbType.NVarChar
                    });
                }

                string cmdText = "select* from(" + sql + ") as t"
                                 + " where rownumber>@PageIndex and rownumber<=@PageSize";

                var res = SqlHelper.ExecuteDataTable(CommandType.Text, cmdText, sqlParameter.ToArray());

                var list = res.AsEnumerable().Select(row => new SalesOrder
                {
                    Id        = Convert.ToInt32(row["rownumber"]),
                    FBillNo   = row["FBillNo"].ToString(),
                    FCustName = row["FCustName"].ToString(),
                    FName     = row["FName"].ToString(),
                    FDeptName = row["FDeptName"].ToString()
                }).ToList();

                return(list);
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// 订单列表
        /// </summary>
        /// <param name="queryModel"></param>
        /// <param name="jqgridparam">分页参数</param>
        /// <returns></returns>
        public List <SaleOrderViewModel> GetOrderList(QueryOrderViewModel queryModel, JqGridParam jqgridparam)
        {
            string userId   = ManageProvider.Provider.Current().UserId;
            string userName = ManageProvider.Provider.Current().UserName;

            StringBuilder      strSql    = new StringBuilder();
            List <DbParameter> parameter = new List <DbParameter>();

            strSql.Append(@"SELECT  SO.* ,
                                    W.WarehouseName ,
                                    M.FullName AS MerchantName ,
                                    MM.MallName ,
                                    S.ShipTypeName ,
                                    S.Code AS ShipTypeCode,
                                    ProductDetail = STUFF(( SELECT  ',' + product.ProductName + '('
                                                            + CONVERT(VARCHAR(20), item.Qty) + ')'
                                                            + product.BaseUnit
                                                    FROM    dbo.SaleOrder_Item item
                                                            INNER JOIN dbo.Product product ON item.ProductId = product.ProductId
                                                    WHERE   item.OrderNo = SO.OrderNo
                                                  FOR
                                                    XML PATH('')
                                                  ), 1, 1, '')
                            FROM    SaleOrder SO
                                    LEFT JOIN dbo.Warehouse W ON SO.WarehouseId = W.WarehouseId
                                    LEFT JOIN dbo.Merchant M ON SO.MerchantId = M.MerchantId
                                    LEFT JOIN dbo.Merchant_Mall MM ON SO.MerchantMallId = MM.MallId
                                    LEFT JOIN dbo.ShipType S ON SO.ShipTypeId = S.ShipTypeId
                            WHERE   1 = 1");

            //查询非挂单锁单
            if (queryModel.QueryType != "Suspend" && queryModel.QueryType != "Lock1" && queryModel.QueryType != "Lock2")
            {
                if (!string.IsNullOrEmpty(queryModel.WarehouseId))
                {
                    strSql.Append(" AND SO.WarehouseId = @WarehouseId ");
                    parameter.Add(DbFactory.CreateDbParameter("@WarehouseId", queryModel.WarehouseId));
                }
                if (!string.IsNullOrEmpty(queryModel.MerchantId))
                {
                    strSql.Append(" AND SO.MerchantId = @MerchantId ");
                    parameter.Add(DbFactory.CreateDbParameter("@MerchantId", queryModel.MerchantId));
                }
                if (!string.IsNullOrEmpty(queryModel.OrderNo))
                {
                    //strSql.Append(" AND SO.OrderNo = @OrderNo ");
                    //parameter.Add(DbFactory.CreateDbParameter("@OrderNo", queryModel.OrderNo));
                    strSql.AppendFormat(@" AND SO.OrderNo LIKE '{0}'", '%' + queryModel.OrderNo + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.SourceOrderNo))
                {
                    //strSql.Append(" AND SO.SourceOrderNo = @SourceOrderNo ");
                    //parameter.Add(DbFactory.CreateDbParameter("@SourceOrderNo", queryModel.SourceOrderNo));

                    strSql.AppendFormat(@" AND SO.SourceOrderNo LIKE '{0}'", '%' + queryModel.SourceOrderNo + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.ReceiveContact))
                {
                    queryModel.ReceiveContact = HttpUtility.UrlDecode(queryModel.ReceiveContact);
                    strSql.AppendFormat(@" AND SO.ReceiveContact LIKE '{0}'", '%' + queryModel.ReceiveContact + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.ReceivePhone))
                {
                    strSql.AppendFormat(@" AND (SO.ReceivePhone LIKE '{0}' OR SO.ReceiveCellPhone LIKE '{0}')", '%' + queryModel.ReceivePhone + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.ShipTypeId))
                {
                    strSql.Append(" AND SO.ShipTypeId = @ShipTypeId ");
                    parameter.Add(DbFactory.CreateDbParameter("@ShipTypeId", queryModel.ShipTypeId));
                }
                if (!string.IsNullOrEmpty(queryModel.ExpressNum))
                {
                    //strSql.Append(" AND SO.ExpressNum = @ExpressNum ");
                    //parameter.Add(DbFactory.CreateDbParameter("@ExpressNum", queryModel.ExpressNum));
                    strSql.AppendFormat(@" AND SO.ExpressNum LIKE '{0}'", '%' + queryModel.ExpressNum + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.StartTime))
                {
                    strSql.Append(" AND SO.OrderDate >= @StartTime ");
                    parameter.Add(DbFactory.CreateDbParameter("@StartTime",
                                                              CommonHelper.GetDateTime(queryModel.StartTime + " 00:00")));
                }
                if (!string.IsNullOrEmpty(queryModel.EndTime))
                {
                    strSql.Append(" AND SO.OrderDate <= @EndTime ");
                    parameter.Add(DbFactory.CreateDbParameter("@EndTime",
                                                              CommonHelper.GetDateTime(queryModel.EndTime + " 23:59:59")));
                }
                if (queryModel.Status.HasValue)
                {
                    strSql.Append(" AND SO.Status = @Status ");
                    parameter.Add(DbFactory.CreateDbParameter("@Status", queryModel.Status.Value));
                }
                if (queryModel.StatusWithPrint)
                {
                    strSql.AppendFormat(" AND SO.Status IN({0},{1}) ", (int)OrderStatus.WaitPick, (int)OrderStatus.WaitOutStock);
                    parameter.Add(DbFactory.CreateDbParameter("@StatusWithPrint", queryModel.StatusWithPrint));
                }
                if (queryModel.PrintStatus.HasValue)
                {
                    strSql.Append(" AND SO.PrintStatus = @PrintStatus ");
                    parameter.Add(DbFactory.CreateDbParameter("@PrintStatus", queryModel.PrintStatus.Value));
                }
                if (!string.IsNullOrEmpty(queryModel.ProductCode))
                {
                    strSql.AppendFormat(@" AND EXISTS ( SELECT *
                                                 FROM   dbo.SaleOrder_Item si
                                                        INNER JOIN dbo.Product product ON si.ProductId = product.ProductId
                                                 WHERE  si.OrderId = SO.OrderId
                                                        AND product.Code LIKE '{0}')", '%' + queryModel.ProductCode + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.ProductName))
                {
                    strSql.AppendFormat(@" AND EXISTS ( SELECT *
                                                 FROM   dbo.SaleOrder_Item si
                                                        INNER JOIN dbo.Product product ON si.ProductId = product.ProductId
                                                 WHERE  si.OrderId = SO.OrderId
                                                        AND product.ProductName LIKE '{0}')", '%' + queryModel.ProductName + '%');
                }

                if (!string.IsNullOrEmpty(queryModel.Province))
                {
                    strSql.AppendFormat(@" AND SO.Province LIKE '{0}'", '%' + queryModel.Province + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.City))
                {
                    strSql.AppendFormat(@" AND SO.City LIKE '{0}'", '%' + queryModel.City + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.ReceiveAddress))
                {
                    strSql.AppendFormat(@" AND SO.ReceiveAddress LIKE '{0}'", '%' + queryModel.ReceiveAddress + '%');
                }
                if (!string.IsNullOrEmpty(queryModel.County))
                {
                    strSql.AppendFormat(@" AND SO.County LIKE '{0}'", '%' + queryModel.County + '%');
                }
                if (queryModel.LockMinute == null)
                {
                    queryModel.LockMinute = 0;
                }
                strSql.Append(" AND (SO.LockUserId='' OR SO.LockUserId IS NULL OR  SO.UnLockTime < GETDATE()) ");
                parameter.Add(DbFactory.CreateDbParameter("@LockUserId", userId));
                parameter.Add(DbFactory.CreateDbParameter("@LockUserName", userName));
                parameter.Add(DbFactory.CreateDbParameter("@LockMinute", queryModel.LockMinute));

                StringBuilder strSelectSql = new StringBuilder();
                if (jqgridparam.page == 0)
                {
                    jqgridparam.page = 1;
                }
                int    num     = (jqgridparam.page - 1) * jqgridparam.rows;
                int    num1    = (jqgridparam.page) * jqgridparam.rows;
                string orderBy = "";
                if (!string.IsNullOrEmpty(jqgridparam.sidx))
                {
                    orderBy = "Order By " + jqgridparam.sidx + " " + jqgridparam.sord + "";
                }
                else
                {
                    orderBy = "Order By (select 0)";
                }
                strSelectSql.AppendFormat(@"
                        BEGIN TRAN;
                        UPDATE  SaleOrder WITH ( TABLOCKX )
                        SET     LockUserId = '' ,
                                LockUserName = '' ,
                                UnLockTime = DATEADD(MINUTE, -1, GETDATE())
                        WHERE   LockUserId = @LockUserId;
                        SELECT  COUNT(1) AS TotalRows
                        FROM    ( {0} ) AS t;
                        SELECT  *
                        INTO    ##SaleOrder
                        FROM    ( SELECT    ROW_NUMBER() OVER ( {1} ) AS rowNum ,
                                            *
                                  FROM      ( {0} ) AS T
                                ) AS N
                        WHERE   rowNum > {2}
                                AND rowNum <= {3};", strSql, orderBy, num, num1);
                if (queryModel.LockMinute > 0)
                {
                    strSelectSql.Append(@"
                        UPDATE  SaleOrder
                        SET     LockUserId = @LockUserId,
                                LockUserName = @LockUserName,
                                UnLockTime = DATEADD(MINUTE, @LockMinute, GETDATE())
                        WHERE   OrderId IN(SELECT OrderId
                                                FROM   ##SaleOrder
                                                WHERE  Status IN(-1, 0, 1, 2)); ");
                }
                strSelectSql.Append(@"
                        SELECT  *
                        FROM    ##SaleOrder;

                        DROP TABLE ##SaleOrder;

                        COMMIT;");
                DataSet ds = DbHelper.GetDataSet(CommandType.Text, strSelectSql.ToString(), parameter.ToArray());
                jqgridparam.records = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
                return(DatabaseReader.DataTableToList <SaleOrderViewModel>(ds.Tables[1]));
            }
            else
            {
                if (queryModel.QueryType == "Suspend")
                {
                    strSql.Append(" AND SO.IsSuspended = 1");
                }
                if (queryModel.QueryType == "Lock1")
                {
                    strSql.Append(" AND SO.LockUserId = @LockUserId ");
                    parameter.Add(DbFactory.CreateDbParameter("@LockUserId", userId));
                }
                if (queryModel.QueryType == "Lock2")
                {
                    strSql.Append(" AND SO.LockUserId != @LockUserId AND SO.LockUserId > '' ");
                    parameter.Add(DbFactory.CreateDbParameter("@LockUserId", userId));
                }
                return(new Repository <SaleOrderViewModel>().FindListPageBySql(strSql.ToString(), parameter.ToArray(), ref jqgridparam));
            }
        }