Commit faed1b21 authored by 吴春's avatar 吴春

提交代码

parent 129a259c
......@@ -26,8 +26,7 @@ namespace Mall.Model.Entity.Reserve
/// </summary>
public int MallBaseId { get; set; }
/// <summary>
/// 名称
/// </summary>
......
......@@ -342,6 +342,15 @@ namespace Mall.Model.Extend.Product
/// 用户名称
/// </summary>
public string UserPhoto { get; set; }
/// <summary>
/// 买家留言
/// </summary>
public string BuyerMessage { get; set; }
/// <summary>
/// 买家手机号码
/// </summary>
public string Mobile { get; set; }
#endregion
......
......@@ -33,12 +33,25 @@ namespace Mall.Model.Extend.Reserve
/// </summary>
public int CommentNum { get; set; }
/// <summary>
/// 评价数
/// </summary>
public decimal CommentScore { get; set; }
/// <summary>
/// 订单人数
/// </summary>
public int OrderGuestNum { get; set; }
public int ServiceTargetDateNum { get; set; }
/// <summary>
/// 总金额
/// </summary>
public decimal Final_Price { get; set; }
/// <summary>
/// 排名(并列)
/// </summary>
......@@ -79,6 +92,11 @@ namespace Mall.Model.Extend.Reserve
/// 查询时间条件
/// </summary>
public string WorkDate { get; set; }
/// <summary>
/// 查询时间条件
/// </summary>
public string EndWorkDate { get; set; }
}
......@@ -103,6 +121,13 @@ namespace Mall.Model.Extend.Reserve
public List<OrderKanBan> OrderList { get; set; }
/// <summary>
/// 店铺名称
/// </summary>
public string StoreName { get; set; }
public string StoreAddress { get; set; }
}
......@@ -122,17 +147,27 @@ namespace Mall.Model.Extend.Reserve
/// 服务时间
/// </summary>
public string ServiceTime { get; set; }
/// <summary>
/// 服务时间
/// </summary>
public string SystemServiceTime { get; set; }
/// <summary>
/// 服务时长
/// </summary>
public string ServiceDuration { get; set; }
public decimal GoodServiceTime { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string UserName { get; set; }
public string BuyerMessage { get; set; }
public string Mobile { get; set; }
/// <summary>
/// 用户头像
/// </summary>
......@@ -142,6 +177,12 @@ namespace Mall.Model.Extend.Reserve
/// 服务内容
/// </summary>
public string GoodsName { get; set; }
public int Number { get; set; }
public int OrderId { get; set; }
public int OrderDetailId { get; set; }
}
}
......@@ -294,12 +294,27 @@ namespace Mall.Module.Reserve
}
/// <summary>
/// 新增/修改服务人员
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool AddOrUpdateServicePersonal(RB_Reserve_ServicePersonal_Extend model)
/// <summary>
///服务人员绩效统计
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Reserve_ServicePersonal_Extend> GetAchievementsList(int pageIndex, int pageSize, out long rowCount, RB_Reserve_ServicePersonal_Extend query)
{
return servicePersonalRepository.GetAchievementsList(pageIndex,pageSize,out rowCount, query);
}
/// <summary>
/// 新增/修改服务人员
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool AddOrUpdateServicePersonal(RB_Reserve_ServicePersonal_Extend model)
{
bool flag = false;
var trans = servicePersonalRepository.DbTransaction;
......
......@@ -760,7 +760,7 @@ where {where} order by a.Id asc";
}
if (!string.IsNullOrWhiteSpace(dmodel.StartTime))
{
where += $@" and DATE_FORMAT(od.{nameof(RB_Goods_OrderDetail.ServiceTime)},'%Y-%m-%d' )=DATE_FORMAT('{dmodel.StartTime}','%Y-%m-%d')";
where += $@" and DATE_FORMAT(od.{nameof(RB_Goods_OrderDetail.ServiceDate)},'%Y-%m-%d' )=DATE_FORMAT('{dmodel.StartTime}','%Y-%m-%d')";
}
if (!string.IsNullOrEmpty(dmodel.OrderNo))
......@@ -777,7 +777,7 @@ where {where} order by a.Id asc";
where += $@" and od.{nameof(RB_Goods_OrderDetail.ProductCode)} like '%{dmodel.ProductCode}%'";
}
string sql = $@"SELECT od.*,o.OrderNo,mu.`Name` as UserName,mu.Photo as UserPhoto FROM rb_goods_orderdetail od
string sql = $@"SELECT od.*,o.OrderNo,o.BuyerMessage,o.Mobile,mu.`Name` as UserName,mu.Photo as UserPhoto FROM rb_goods_orderdetail od
INNER JOIN rb_goods_order o on o.OrderId=od.OrderId
LEFT JOIN rb_member_user as mu on o.UserId=mu.Id
where {where} order by o.CreateDate desc";
......
using Mall.Model.Entity.Reserve;
using Mall.Model.Entity.Product;
using Mall.Model.Entity.Reserve;
using Mall.Model.Extend.Reserve;
using System;
using System.Collections.Generic;
......@@ -252,7 +253,7 @@ ORDER BY t.orderNum desc ";
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT a.*,b.Date FROM rb_reserve_servicepersonal as A LEFT JOIN rb_reserve_servicetargetdate as b on a.ID=b.ServiceId WHERE a.{nameof(RB_Reserve_ServicePersonal_Extend.Status)}=0");
builder.Append($" SELECT a.*,b.Date,c.`Name` as StoreName,c.`Address` as StoreAddress FROM rb_reserve_servicepersonal as A LEFT JOIN rb_reserve_servicetargetdate as b on a.ID=b.ServiceId LEFT JOIN rb_stores as c on a.StoreId=c.Id WHERE a.{nameof(RB_Reserve_ServicePersonal_Extend.Status)}=0");
if (query != null)
{
if (query.TenantId > 0)
......@@ -279,7 +280,7 @@ ORDER BY t.orderNum desc ";
if (!string.IsNullOrWhiteSpace(query.WorkDate))
{
builder.Append($" and DATE_FORMAT(b.Date,'%Y-%m-%d' )=DATE_FORMAT('{query.WorkDate}','%Y-%m-%d'");
builder.Append($" and DATE_FORMAT(b.Date,'%Y-%m-%d' )=DATE_FORMAT('{query.WorkDate}','%Y-%m-%d')");
}
if (!string.IsNullOrEmpty(query.QIds))
{
......@@ -326,5 +327,67 @@ WHERE A.Status=0 AND A.StoreId={2}
", productId, categoryIds, storeId);
return Get<RB_Reserve_ServicePersonal_Extend>(builder.ToString()).ToList();
}
/// <summary>
///服务人员绩效统计
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Reserve_ServicePersonal_Extend> GetAchievementsList(int pageIndex, int pageSize, out long rowCount, RB_Reserve_ServicePersonal_Extend query)
{
StringBuilder builder = new StringBuilder();
string orderWhere = "";
string dateWhere = "";
if (query != null)
{
if (query.TenantId > 0)
{
builder.Append($" AND a.{nameof(RB_Reserve_ServicePersonal_Extend.TenantId)}={query.TenantId}");
orderWhere += $" AND o.{nameof(RB_Reserve_ServicePersonal_Extend.TenantId)}={query.TenantId}";
}
if (query.TenantId > 0)
{
builder.Append($" AND a.{nameof(RB_Reserve_ServicePersonal_Extend.MallBaseId)}={query.MallBaseId}");
orderWhere += $" AND o.{nameof(RB_Reserve_ServicePersonal_Extend.MallBaseId)}={query.MallBaseId}";
}
if (query.ServiceStatus > 0)
{
builder.Append($" AND a.{nameof(RB_Reserve_ServicePersonal_Extend.ServiceStatus)}={query.ServiceStatus}");
}
if (query.StoreId > 0)
{
builder.Append($" AND a.{nameof(RB_Reserve_ServicePersonal_Extend.StoreId)}={query.StoreId}");
orderWhere += $" AND o.{nameof(RB_Goods_Order.StoresId)}={query.StoreId}";
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.Append($" AND a.{nameof(RB_Reserve_ServicePersonal_Extend.Name)} like '%{query.Name}%'");
}
if (!string.IsNullOrWhiteSpace(query.WorkDate))
{
orderWhere += $" and DATE_FORMAT(o.PaymentTime,'%Y-%m-%d' )>=DATE_FORMAT('{query.WorkDate}','%Y-%m-%d' ) ";
dateWhere += $" and DATE_FORMAT(Date,'%Y-%m-%d' )>=DATE_FORMAT('{query.WorkDate}','%Y-%m-%d' ) ";
}
if (!string.IsNullOrWhiteSpace(query.EndWorkDate))
{
orderWhere += $" and DATE_FORMAT(o.PaymentTime,'%Y-%m-%d' )<= DATE_FORMAT('{query.EndWorkDate}','%Y-%m-%d' ) ";
dateWhere += $" and DATE_FORMAT(Date,'%Y-%m-%d' )>=DATE_FORMAT('{query.EndWorkDate}','%Y-%m-%d' ) ";
}
}
builder.Append($" order by a.{nameof(RB_Reserve_ServicePersonal_Extend.ID)} desc");
string sql = @$"SELECT b.ServiceTargetDateNum,c.OrderNum,c.OrderGuestNum,c.Final_Price,d.CommentNum,a.* from rb_reserve_servicepersonal as a
LEFT JOIN (SELECT ServiceId,COUNT(*) as ServiceTargetDateNum from rb_reserve_servicetargetdate where 1=1 {dateWhere} GROUP BY ServiceId ) as b on a.ID=b.ServiceId
LEFT JOIN (SELECT od.ServicepersonalId,COUNT(*) OrderNum,SUM(od.Number) OrderGuestNum,SUM(od.Final_Price) as Final_Price FROM rb_goods_orderdetail od
INNER JOIN rb_goods_order o on o.OrderId=od.OrderId
where o.OrderClassify=3 and o.OrderStatus in(2,3,4,5,6) {orderWhere} GROUP BY od.ServicepersonalId) as c on a.ID=c.ServicepersonalId
LEFT JOIN (SELECT go.ServicepersonalId,COUNT(*) CommentNum,SUM(dc.CommentScore) CommentScore from rb_goods_comment as dc INNER JOIN rb_goods_orderdetail as go on dc.OrderDetailId=go.Id
INNER JOIN rb_goods_order as o on go.OrderId=o.OrderId where dc.`Status`=0 {orderWhere} GROUP BY go.ServicepersonalId) as d on d.ServicepersonalId=a.ID WHERE a.{nameof(RB_Reserve_ServicePersonal_Extend.Status)}=0 {builder.ToString()}";
return GetPage<RB_Reserve_ServicePersonal_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
}
}
}
......@@ -925,13 +925,17 @@ namespace Mall.WebApi.Controllers.Reserve
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
var oldLogisticsModel = contentModule.GetStoresListModule(new Model.Entity.User.RB_Stores_Extend { TenantId = UserInfo.TenantId, MallBaseId = parms.MallBaseId, Id = query.StoreId }).FirstOrDefault();
if (string.IsNullOrWhiteSpace(query.WorkDate))
{
query.WorkDate = System.DateTime.Now.ToString("yyyy-MM-dd");
}
List<RB_Reserve_ServicePersonal_Extend> servicePersonalList = new List<RB_Reserve_ServicePersonal_Extend>();
List<Model.Extend.Product.RB_Goods_OrderDetail_Extend> orderList = new List<Model.Extend.Product.RB_Goods_OrderDetail_Extend>();
List<ServicePersonalKanBan> KanBanList = new List<ServicePersonalKanBan>();
List<string> allTime = new List<string>();
if (oldLogisticsModel == null)
{
oldLogisticsModel = new Model.Entity.User.RB_Stores_Extend();
return ApiResult.Failed("店铺信息不存在");
}
else
{
......@@ -947,11 +951,12 @@ namespace Mall.WebApi.Controllers.Reserve
Name = item.Name,
Id = item.ID,
OrderList = new List<OrderKanBan>()
OrderList = new List<OrderKanBan>(),
StoreName = item.StoreName,
StoreAddress = item.StoreAddress
};
KanBanList.Add(kanBanModel);
}
//看门店营业时间半小时一个节点
try
{
......@@ -966,7 +971,7 @@ namespace Mall.WebApi.Controllers.Reserve
DateTime nowStartTime = tempStartTime;
DateTime nowEndTime = tempEndTime;
int startMin = Convert.ToInt32(oldLogisticsModel.StartTime.Split(':')[1]);
if (startMin > 0 && startMin < 30)
if (startMin >= 0 && startMin < 30)
{
nowStartTime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd") + " " + startTime + ":00");
}
......@@ -975,7 +980,7 @@ namespace Mall.WebApi.Controllers.Reserve
nowStartTime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd") + " " + startTime + ":30");
}
int endMin = Convert.ToInt32(oldLogisticsModel.EndTime.Split(':')[1]);
if (endMin > 0 && endMin < 30)
if (endMin >= 0 && endMin < 30)
{
nowEndTime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd") + " " + endTime + ":00");
}
......@@ -983,47 +988,43 @@ namespace Mall.WebApi.Controllers.Reserve
{
nowEndTime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd") + " " + endTime + ":30");
}
List<string> allTime = new List<string>();
bool isAddTime = true;
foreach (var item in KanBanList)
{
for (var day = nowStartTime; day <= nowEndTime; day = day.AddMinutes(30))
{
var tempOrderList = orderList.Where(x => x.ServicepersonalId == item.Id && day < Convert.ToDateTime(x.ServiceDate + " " + x.ServiceTime) && Convert.ToDateTime(x.ServiceDate + " " + x.ServiceTime) < day.AddMinutes(30));
foreach (var itemOrder in tempOrderList)
{
OrderKanBan orderModel = new OrderKanBan();
orderModel.Id = item.Id;
orderModel.Name = item.Name;
orderModel.GoodsName = itemOrder.GoodsName;
//orderModel.ServiceDuration = itemOrder.GoodServiceTime;
}
string nowTimeInfo = day.ToString("HH:mm");
if (day == nowStartTime)
{
if (isAddTime)
{
allTime.Add(oldLogisticsModel.StartTime);
}
//查询订单信息
nowTimeInfo = oldLogisticsModel.StartTime;
}
else if (day == nowEndTime)
{
if (isAddTime)
{
allTime.Add(oldLogisticsModel.EndTime);
}
nowTimeInfo = oldLogisticsModel.EndTime;
}
else
if (isAddTime)
{
if (isAddTime)
{
allTime.Add(day.ToString("HH:mm"));
}
allTime.Add(nowTimeInfo);
}
var tempOrderList = orderList.Where(x => x.ServicepersonalId == item.Id && day <= Convert.ToDateTime(x.ServiceDate + " " + x.ServiceTime) && Convert.ToDateTime(x.ServiceDate + " " + x.ServiceTime) < day.AddMinutes(30));
foreach (var itemOrder in tempOrderList)
{
OrderKanBan orderModel = new OrderKanBan();
orderModel.Id = item.Id;
orderModel.Name = item.Name;
orderModel.GoodsName = itemOrder.GoodsName;
orderModel.ServiceTime = itemOrder.ServiceTime;
orderModel.SystemServiceTime = nowTimeInfo;
orderModel.GoodServiceTime = itemOrder.GoodServiceTime;
orderModel.UserName = itemOrder.UserName;
orderModel.UserPhoto = itemOrder.UserPhoto;
orderModel.OrderId = itemOrder.OrderId ?? 0;
orderModel.OrderDetailId = itemOrder.Id;
orderModel.Number = itemOrder.Number ?? 0;
orderModel.BuyerMessage = itemOrder.BuyerMessage;
orderModel.Mobile = itemOrder.Mobile;
item.OrderList.Add(orderModel);
}
}
isAddTime = false;
......@@ -1034,9 +1035,41 @@ namespace Mall.WebApi.Controllers.Reserve
LogHelper.WriteInfo("门店时间转换错误" + ex.ToString());
}
return ApiResult.Success("", new { KanBanList, allTime });
}
return ApiResult.Success("", oldLogisticsModel);
}
#endregion
#region 服务人员绩效统计
/// <summary>
/// 获取服务人员列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAchievementsList()
{
var parms = RequestParm;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(RequestParm.msg.ToString());
RB_Reserve_ServicePersonal_Extend demodel = JsonConvert.DeserializeObject<RB_Reserve_ServicePersonal_Extend>(RequestParm.msg.ToString());
demodel.TenantId = UserInfo.TenantId;
demodel.MallBaseId = parms.MallBaseId;
var list = reserveModule.GetAchievementsList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.ID,
x.ServiceLogo,
x.Name,
x.ServiceTargetDateNum,
x.OrderNum,
x.Final_Price,
x.OrderGuestNum,
ScoreStr = (x.CommentScore > 0 && x.CommentNum > 0) ? (Convert.ToDecimal(x.CommentScore / x.CommentNum)) : 5
});
return ApiResult.Success("", pagelist);
}
#endregion
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment