using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Uzai.Shop.Entity.OrderReport;
using System.Data;
using Uzai.DB.SQLHelper;
using System.Data.SqlClient;
using Uzai.DB.IDAL.OrderReport;
namespace Uzai.DB.SonDAL.OrderReport
{
public class OrderReportDAL : IOrderReport
{
#region tanyong 2013-6-17
/// <summary>
/// 获得组别
/// </summary>
/// <returns></returns>
public List<UzaiAdminBusinessGroup> GetAdminGroup(UzaiAdminBusinessGroup entity)
{
List<UzaiAdminBusinessGroup> list = new List<UzaiAdminBusinessGroup>();
StringBuilder sql = new StringBuilder();
sql.Append("select AdminBusinessGroupID,AdminBusinessGroupParentID,AdminBusinessGroupName,AdminBusinessGroupList from UzaiAdminBusinessGroup where isuse=1 ");
if (entity.AdminBusinessGroupID != 0)
sql.Append(" and AdminBusinessGroupID=@AdminBusinessGroupID");
if (entity.AdminBusinessGroupParentID != 0)
sql.Append(" and AdminBusinessGroupParentID=@AdminBusinessGroupParentID");
SqlParameter[] para = {
new SqlParameter("@AdminBusinessGroupID",entity.AdminBusinessGroupID)
,new SqlParameter("@AdminBusinessGroupParentID",entity.AdminBusinessGroupParentID)
};
DataTable dt = SqlHelper.ExecuteDataTable(SqlHelper.connstr, CommandType.Text, sql.ToString(),para);
foreach (DataRow row in dt.Rows)
{
UzaiAdminBusinessGroup model = new UzaiAdminBusinessGroup();
model.AdminBusinessGroupID = row["AdminBusinessGroupID"] is DBNull ? 0 : int.Parse(row["AdminBusinessGroupID"].ToString());
model.AdminBusinessGroupParentID = row["AdminBusinessGroupParentID"] is DBNull ? 0 : int.Parse(row["AdminBusinessGroupParentID"].ToString());
model.AdminBusinessGroupName = row["AdminBusinessGroupName"] is DBNull ? "" : row["AdminBusinessGroupName"].ToString();
model.AdminBusinessGroupList = row["AdminBusinessGroupList"] is DBNull ? "" : row["AdminBusinessGroupList"].ToString();
list.Add(model);
}
return list;
}
/// <summary>
/// 获得人的信息(部门,级别,姓名)
/// </summary>
/// <returns></returns>
public List<UzaiAdminBusinessGroup> GetPeopleInfo()
{
List<UzaiAdminBusinessGroup> list = new List<UzaiAdminBusinessGroup>();
string sql = @"select AdminBusinessGroupID,AdminBusinessGroupParentID,AdminBusinessGroupName,AdminBusinessGroupList from UzaiAdminBusinessGroup where AdminBusinessGroupParentID in (
select AdminBusinessGroupID from UzaiAdminBusinessGroup where
AdminBusinessGroupID in(2,9,15,63,77)
and AdminBusinessGroupParentId=-1)";
DataTable dt= SqlHelper.ExecuteDataTable(SqlHelper.connstr, CommandType.Text, sql);
foreach (DataRow row in dt.Rows)
{
UzaiAdminBusinessGroup model = new UzaiAdminBusinessGroup();
model.AdminBusinessGroupID = row["AdminBusinessGroupID"] is DBNull ? 0 : int.Parse(row["AdminBusinessGroupID"].ToString());
model.AdminBusinessGroupParentID = row["AdminBusinessGroupParentID"] is DBNull ? 0 : int.Parse(row["AdminBusinessGroupParentID"].ToString());
model.AdminBusinessGroupName = row["AdminBusinessGroupName"] is DBNull ? "" : row["AdminBusinessGroupName"].ToString();
model.AdminBusinessGroupList = row["AdminBusinessGroupList"] is DBNull ? "" : row["AdminBusinessGroupList"].ToString();
list.Add(model);
}
return list;
}
#region 订单操作时间报表
/// <summary>
/// 获得订单操作时间数据
/// </summary>
/// <returns></returns>
public DataTable GetOrderOperateStatusRecord(string userId, string startDay, string endDay, string Department, string Group, int startindex, int endindex)
{
StringBuilder sb = new StringBuilder();
string sqlwhere = GetOrderRecordWhere(userId, startDay,endDay);
sb.AppendFormat(@"BEGIN WITH tempTable AS(
select ROW_NUMBER() OVER(ORDER BY OperateTime DESC) AS ROW,UzaiOrderStatusTypeId,OperateTime,UzaiAdminId,UzaiUserName,UzaiRealName,CompleteTime
,LastOpAdminId,LastOpAdminRealName from UzaiOrderOperateStatusRecord where 1=1 {2} )
select * from tempTable where 1=1 and ROW between {0} and {1} END", startindex, endindex,sqlwhere);
SqlParameter[] para = GetOrderRecordPara(userId, startDay, endDay);
DataTable dt = SqlHelper.ExecuteDataTable(SqlHelper.connstr, CommandType.Text, sb.ToString(),para);
return dt;
}
/// <summary>
/// 获得订单操作时间数据(总数)
/// </summary>
/// <param name="userId"></param>
/// <param name="startDay"></param>
/// <param name="endDay"></param>
/// <returns></returns>
public int GetOrderRecordCount(string userId, string startDay, string endDay)
{
StringBuilder sb = new StringBuilder();
string sqlwhere = GetOrderRecordWhere(userId, startDay, endDay);
sb.AppendFormat(@"select count(*) as count from UzaiOrderOperateStatusRecord where 1=1 {0}", sqlwhere);
SqlParameter[] para = GetOrderRecordPara(userId, startDay, endDay);
DataTable dt = SqlHelper.ExecuteDataTable(SqlHelper.connstr, CommandType.Text, sb.ToString(), para);
int result = 0;
if (dt != null && dt.Rows.Count > 0)
result = int.Parse(dt.Rows[0]["count"].ToString());
return result;
}
private string GetOrderRecordWhere(string userId, string startDay, string endDay)
{
StringBuilder sb = new StringBuilder();
if (userId != "0")
sb.Append(" and UzaiAdminId=@UzaiAdminId");
if (startDay != "")
sb.Append(" and OperateTime>=@startDay");
if (endDay != "")
sb.Append(" and OperateTime<@endDay");
return sb.ToString();
}
private SqlParameter[] GetOrderRecordPara(string userId, string startDay, string endDay)
{
SqlParameter[] para = {
new SqlParameter("@UzaiAdminId",userId)
,new SqlParameter("@startDay",startDay)
,new SqlParameter("@endDay",endDay)
};
return para;
}
#endregion
/// <summary>
/// 获得操作记录
/// </summary>
/// <returns></returns>
public string GetorderstatustypeRemark(int typeid)
{
string remark = string.Empty;
string sqlorderstatus = "select statestr from uzaiorderstatustype where id=@UzaiOrderStatusTypeId";
DataTable dtOrderstatustype = SqlHelper.ExecuteDataTable(SqlHelper.connstr, CommandType.Text, sqlorderstatus, new SqlParameter("@UzaiOrderStatusTypeId", typeid));
if (dtOrderstatustype != null && dtOrderstatustype.Rows.Count > 0)
{
remark = dtOrderstatustype.Rows[0]["statestr"].ToString();
}
return remark;
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Uzai.Shop.Entity.OrderReport;
using Uzai.DB.IDAL.OrderReport;
using Uzai.DB.SonDAL.OrderReport;
using System.Data;
namespace Uzai.Shop.BLL.OrderReport
{
public class OrderReportBLL
{
#region tanyong 2013-6-17
IOrderReport dal = new OrderReportDAL();
/// <summary>
/// 获得组别
/// </summary>
/// <returns></returns>
public List<UzaiAdminBusinessGroup> GetAdminGroup(UzaiAdminBusinessGroup entity)
{
return dal.GetAdminGroup(entity);
}
/// <summary>
/// 获得人的信息(部门,级别,姓名)
/// </summary>
/// <returns></returns>
public List<UzaiAdminBusinessGroup> GetPeopleInfo()
{
return dal.GetPeopleInfo();
}
/// <summary>
/// 获得订单操作时间数据
/// </summary>
/// <returns></returns>
public DataTable GetOrderOperateStatusRecord(string userId, string startDay, string endDay, string Department, string Group, int startindex, int endindex)
{
DataTable dt = dal.GetOrderOperateStatusRecord(userId, startDay, endDay, Department,Group,startindex,endindex);
dt.Columns.Add("remark");
dt.Columns.Add("Department");
dt.Columns.Add("Group");
dt.Columns.Add("UserId");
dt.Columns.Add("UserName");
foreach (DataRow row in dt.Rows)
{
int typeid = row["UzaiOrderStatusTypeId"] is DBNull ? 0 : int.Parse(row["UzaiOrderStatusTypeId"].ToString());
row["remark"] = GetorderstatustypeRemark(typeid);
peopleModel model = GetPeopleInfoCache(userId, Department, Group);
row["Department"] = model.Department;
row["Group"] = model.Group;
row["UserId"] = model.UserId;
row["UserName"] = model.UserName;
}
return dt;
}
/// <summary>
/// 获得订单操作时间数据(总数)
/// </summary>
/// <param name="userId"></param>
/// <param name="startDay"></param>
/// <param name="endDay"></param>
/// <returns></returns>
public int GetOrderRecordCount(string userId, string startDay, string endDay)
{
return dal.GetOrderRecordCount(userId, startDay, endDay);
}
/// <summary>
/// 获得操作记录
/// </summary>
/// <returns></returns>
public string GetorderstatustypeRemark(int typeid)
{
return dal.GetorderstatustypeRemark(typeid);
}
/// <summary>
/// 获得人缓存里面信息
/// </summary>
/// <returns></returns>
private peopleModel GetPeopleInfoCache(string userId, string Department, string Group)
{
if (System.Web.HttpRuntime.Cache["PeopleInfo"] == null)//缓存为空,创建缓存
SetPeoTable();
DataTable dtPeople = (DataTable)System.Web.HttpRuntime.Cache["PeopleInfo"];
var query = (from a in dtPeople.AsEnumerable()
select new
{
Department = a.Field<string>("Department"),
Group = a.Field<string>("Group"),
UserId = a.Field<string>("UserId"),
UserName = a.Field<string>("UserName")
});
if (!string.IsNullOrEmpty(userId) && userId!="0")
{
query = query.Where(p => p.UserId == userId);
}
if (!string.IsNullOrEmpty(Department) && Department!="请选择")
{
query = query.Where(p => p.Department == Department);
}
if (!string.IsNullOrEmpty(Group) && Group != "请选择")
{
query = query.Where(p => p.Group == Group);
}
peopleModel model = new peopleModel();
foreach (var item in query)
{
model.Department = item.Department;
model.Group = item.Group;
model.UserId = item.UserId;
model.UserName = item.UserName;
}
return model;
}
/// <summary>
/// 拿到人的信息存入缓存
/// </summary>
private void SetPeoTable()
{
DataTable table = new DataTable();
table.Columns.Add("Department");
table.Columns.Add("Group");
table.Columns.Add("UserId");
table.Columns.Add("UserName");
List<UzaiAdminBusinessGroup> list = GetPeopleInfo();
foreach (UzaiAdminBusinessGroup entity in list)
{
string[] GropList = entity.AdminBusinessGroupList.Split(';');
for (int i = 0; i < GropList.Length - 1; i++)
{
string[] peopleList = GropList[i].Split(',');
if (peopleList[1] == "1")
{//在职员工
object[] o = { GetDepartmentName(entity.AdminBusinessGroupParentID), entity.AdminBusinessGroupName, peopleList[0], peopleList[3] };
table.Rows.Add(o);
}
}
}
System.Web.HttpRuntime.Cache.Insert("PeopleInfo", table, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);
}
/// <summary>
/// 根据部门编号查询部门名称
/// </summary>
/// <param name="DepartmentID">部门编号</param>
/// <returns></returns>
private string GetDepartmentName(int DepartmentID)
{
string strDepartment = string.Empty;
switch (DepartmentID)
{
case 2:
strDepartment = "国内订单组";
break;
case 9:
strDepartment = "国际订单组";
break;
case 15:
strDepartment = "大客户订单组";
break;
case 63:
strDepartment = "签证订单组";
break;
case 77:
strDepartment = "自由行订单组";
break;
}
return strDepartment;
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Uzai.Shop.Entity.OrderReport
{
public class OrderReportModel
{
}
public class UzaiAdminBusinessGroup
{
/// <summary>
/// 编号
/// </summary>
public int AdminBusinessGroupID { get; set; }
/// <summary>
/// 业务组别父级ID
/// </summary>
public int AdminBusinessGroupParentID { get; set; }
/// <summary>
/// 级别名称
/// </summary>
public string AdminBusinessGroupName { get; set; }
/// <summary>
/// 数据形式
/// </summary>
public string AdminBusinessGroupList { get; set; }
}
public class peopleModel
{
/// <summary>
/// 部门名称
/// </summary>
public string Department { get; set; }
/// <summary>
/// 组别
/// </summary>
public string Group { get; set; }
/// <summary>
/// 用户编号
/// </summary>
public string UserId { get; set; }
/// <summary>
/// 用户名
/// </summary>
public string UserName { get; set; }
}
}