From 18590e3512d2d348e5149ee2bb3018c28c9a5b22 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 30 九月 2024 14:26:35 +0800 Subject: [PATCH] 修改上下架,自己安排工作时间,员工工资统计查询 --- cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs | 242 +++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 216 insertions(+), 26 deletions(-) diff --git a/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs b/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs index 8aaa90d..41ba18e 100644 --- a/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs +++ b/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs @@ -63,7 +63,7 @@ Expression<Func<Order, bool>> expression = t => true; - expression = expression.And(t => t.IsDeleted == false && t.IsEn == true + expression = expression.And(t => t.IsDeleted == false /*&& t.IsEn == true*/ && userids.Contains(t.OrderUserId)); //t.OrderUserId == userid if (!string.IsNullOrEmpty(page.OrderName)) @@ -78,6 +78,11 @@ { expression = expression.And(t => t.WordStartTime <= page.WordEndTime); } + if (page.IsEn.HasValue) + { + expression = expression.And(t => t.IsEn == page.IsEn); + } + RefAsync<int> total = 0; @@ -161,18 +166,32 @@ var orderRes = new BaseRepository<Order>(); bool res; + if (!orderDto.Zixinganpai.HasValue) + { + orderDto.Zixinganpai = false; + } if (orderDto.Id > 0) { var order = await orderRes.GetByIdAsync(orderDto.Id); - if (order.OrderStatus > 0) + if (order.OrderStatus > 0 && order.IsEn == true) { throw Oops.Oh("鎷涘伐宸茬粡缁撴潫涓嶈兘淇敼锛�"); } var orderBiddingRes = new BaseRepository<OrderBidding>(); var count = await orderBiddingRes.CountAsync(x=>x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == true && x.IsSelected == true); - if (count > 0) + if (count > 0 && order.IsEn == true) { throw Oops.Oh("宸茬粡纭鎷涘伐浜哄憳锛屼笉鑳戒慨鏀癸紒"); + } + + + if (order.IsEn == false) + { + var orderBiddings = await orderBiddingRes.GetListAsync(x => x.OrderId == orderDto.Id); + foreach (var orderBidding in orderBiddings) + { + res = await orderBiddingRes.DeleteByIdAsync(orderBidding.Id); + } } order.OrderName = orderDto.OrderName; @@ -186,12 +205,15 @@ order.ContactPhone = orderDto.ContactPhone; order.WorkerType = orderDto.WorkerType; order.WorkPrice = orderDto.WorkPrice; - - + order.OrderStatus = 0; + order.IsEn = true; order.UpDataBy = NickName; order.UpDataTime = DateTime.Now; res = await orderRes.UpdateAsync(order); + + + } else @@ -203,6 +225,7 @@ order.CreateTime = DateTime.Now; order.OrderStatus = 0; order.OrderUserId = userid; + order.IsEn = true; res = await orderRes.InsertAsync(order); } @@ -283,6 +306,63 @@ /// <summary> + /// 鍏徃涓嶅綍鐢ㄤ竴涓伐浜� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveBuLuYong(QueRenDto queRenDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string NickName = App.User?.FindFirstValue("NickName"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + + var orderBidding = await orderBiddingRes.GetByIdAsync(queRenDto.OrderBiddingId); + if (orderBidding == null || orderBidding.IsEn != true || orderBidding.IsDeleted == true) + { + throw Oops.Oh("璇ユ姇閫掑凡缁忔棤鏁堬紒"); + } + if (orderBidding.IsSelected == true) + { + throw Oops.Oh("璇ユ姇閫掑凡缁忓鏍革紝涓嶈兘涓嶅綍鐢紒"); + } + + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + if (order == null || order.OrderStatus > 0) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟姇閫掞紒"); + } + + + + + + bool res; + + orderBidding.IsSelected = false; + //orderBidding.Selectedtime = DateTime.Now; + orderBidding.UpDataBy = NickName; + orderBidding.UpDataTime = DateTime.Now; + + + res = await orderBiddingRes.UpdateAsync(orderBidding); + + + + return res; + } + + + + /// <summary> /// 鍏徃鍙栨秷閫夋嫨宸ヤ汉 /// </summary> /// <returns></returns> @@ -325,7 +405,7 @@ bool res; - orderBidding.IsSelected = false; + orderBidding.IsSelected = null; orderBidding.Selectedtime = null; orderBidding.UpDataBy = NickName; orderBidding.UpDataTime = DateTime.Now; @@ -378,17 +458,22 @@ var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); var userWorkerRes = new BaseRepository<UserWorker>(); - var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail>((a, b, c) => + var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail, UserWorker>((a, b, c, d) => new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId, - JoinType.Inner, b.Id == c.OrderBiddingId + JoinType.Inner, b.Id == c.OrderBiddingId, + JoinType.Inner, b.WorkerUserId == d.UserId )) - .Where((a, b, c) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false + .Where((a, b, c, d) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false && b.IsSelected == true && userids.Contains(a.OrderUserId)) //a.OrderUserId == userid - .WhereIF(page.WordDate.HasValue, (a, b, c) => (c.WorkDate == page.WordDate)) - .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == true, (a, b, c) => (c.IsShenPi == 2)) - .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == false, (a, b, c) => (c.IsShenPi < 2)) + .WhereIF(page.WordDate.HasValue, (a, b, c, d) => (c.WorkDate == page.WordDate)) + .WhereIF(page.WordDateStart.HasValue, (a, b, c, d) => (c.WorkDate >= page.WordDateStart)) + .WhereIF(page.WordDateEnd.HasValue, (a, b, c, d) => (c.WorkDate <= page.WordDateEnd)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == true, (a, b, c, d) => (c.IsShenPi == 2)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == false, (a, b, c, d) => (c.IsShenPi < 2)) + .WhereIF(!string.IsNullOrEmpty(page.WorkerUserName), (a, b, c, d) => (d.name.Contains(page.WorkerUserName))) + .WhereIF(page.WorkerUserId >0 , (a, b, c, d) => (b.WorkerUserId == page.WorkerUserId)) .OrderByDescending((a,b,c) => c.WorkDate) - .Select((a, b, c) => new OrderDakaDto + .Select((a, b, c, d) => new OrderDakaDto { OrderBiddingDetailId = c.Id, OrderName = a.OrderName, @@ -400,9 +485,28 @@ IsShenPi = c.IsShenPi, WorkCount = c.WorkCount, WorkerUserId = b.WorkerUserId, + WorkerUserName = d.name, }) .ToPageListAsync(page.PageIndex, page.PageSize, total); + + + + var heji = orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail, UserWorker>((a, b, c, d) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId, + JoinType.Inner, b.Id == c.OrderBiddingId, + JoinType.Inner, b.WorkerUserId == d.UserId + )) + .Where((a, b, c, d) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false + && b.IsSelected == true && userids.Contains(a.OrderUserId)) //a.OrderUserId == userid + .WhereIF(page.WordDate.HasValue, (a, b, c, d) => (c.WorkDate == page.WordDate)) + .WhereIF(page.WordDateStart.HasValue, (a, b, c, d) => (c.WorkDate >= page.WordDateStart)) + .WhereIF(page.WordDateEnd.HasValue, (a, b, c, d) => (c.WorkDate <= page.WordDateEnd)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == true, (a, b, c, d) => (c.IsShenPi == 2)) + .WhereIF(page.IsJieSuan.HasValue && page.IsJieSuan == false, (a, b, c, d) => (c.IsShenPi < 2)) + .WhereIF(!string.IsNullOrEmpty(page.WorkerUserName), (a, b, c, d) => (d.name.Contains(page.WorkerUserName))) + .WhereIF(page.WorkerUserId > 0, (a, b, c, d) => (b.WorkerUserId == page.WorkerUserId)) + .Sum((a, b, c, d) => c.TodaySalary); if (data != null && data.Count > 0) { @@ -450,9 +554,9 @@ switch (dakaDto.IsShenPi) { - case (int)IsShenPis.baocun: dakaDto.IsShenPiName = "鏈粨绠�"; break; - case (int)IsShenPis.tijiao: dakaDto.IsShenPiName = "鏈粨绠�"; break; - case (int)IsShenPis.yishenpi: dakaDto.IsShenPiName = "宸茬粨绠�"; break; + case (int)IsShenPis.baocun: dakaDto.IsShenPiName = "鏈鏍�"; break; + case (int)IsShenPis.tijiao: dakaDto.IsShenPiName = "鏈鏍�"; break; + case (int)IsShenPis.yishenpi: dakaDto.IsShenPiName = "宸插鏍�"; break; default: break; } @@ -470,11 +574,11 @@ dakaDto.DakaMingxi = DakaMingxi; - var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == dakaDto.WorkerUserId && x.IsEn == true && x.IsDeleted == false ); - if (userWorker != null) - { - dakaDto.WorkerUserName = userWorker.name; - } + //var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == dakaDto.WorkerUserId && x.IsEn == true && x.IsDeleted == false ); + //if (userWorker != null) + //{ + // dakaDto.WorkerUserName = userWorker.name; + //} } @@ -483,7 +587,7 @@ result.PageIndex = page.PageIndex; result.PageSize = page.PageSize; result.TotalCount = total; - + result.Heji = heji ?? 0; return result; } @@ -761,22 +865,108 @@ userid = int.Parse(UserID); } - var orderBiddingRes = new BaseRepository<OrderBidding>(); + //var orderBiddingRes = new BaseRepository<OrderBidding>(); var orderRes = new BaseRepository<Order>(); - var userWorkerRes = new BaseRepository<UserWorker>(); + //var userWorkerRes = new BaseRepository<UserWorker>(); var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); if (order.OrderStatus > 0) { - throw Oops.Oh("宸茬粡鎷涘伐瀹屾瘯鎴栬�呯粨绠楋紝鏃犳硶鍒犻櫎"); + throw Oops.Oh("宸茬粡鎷涘伐瀹屾瘯鎴栬�呯粨绠楋紝鏃犳硶涓嬫灦"); } bool res; + order.IsEn = false; + order.UpDataBy = NickName; + order.UpDataTime = DateTime.Now; - res = await orderRes.DeleteAsync(order); + res = await orderRes.UpdateAsync(order); return res; } + + + + + /// <summary> + /// 鏌ヨ鍏徃涓嬪伐浜虹殑宸ヨ祫棰濆害 + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDakaDto>> PostMyComGongZiListPage(OrderDakaPageSearch page) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + PageResult<OrderDakaDto> result = new PageResult<OrderDakaDto>(); + var orderRepository = new BaseRepository<Order>(); + var userCompanyRes = new BaseRepository<UserCompany>(); + //鏌ヨ鍏徃鐨勬墍鏈夊憳宸ョ殑鎵�鏈夋嫑宸ヨ鍗� + var userCompany = await userCompanyRes.GetFirstAsync(x => x.UserId == userid && x.IsEn == true && x.IsDeleted == false); + if (userCompany == null) + { + throw Oops.Oh("浣犳病鏈夊叕鍙革紒"); + } + var userCompanies = await userCompanyRes.GetListAsync(x => x.Suppliercode == userCompany.Suppliercode && x.IsEn == true && x.IsDeleted == false); + var userids = userCompanies.Select(x => x.UserId).ToList(); + + RefAsync<int> total = 0; + + + var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); + var userWorkerRes = new BaseRepository<UserWorker>(); + var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail, UserWorker>((a, b, c, d) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId, + JoinType.Inner, b.Id == c.OrderBiddingId, + JoinType.Inner, b.WorkerUserId == d.UserId + )) + .Where((a, b, c, d) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false + && b.IsSelected == true && c.IsShenPi == 2 && userids.Contains(a.OrderUserId)) //a.OrderUserId == userid + .WhereIF(page.WordDate.HasValue, (a, b, c, d) => (c.WorkDate == page.WordDate)) + .WhereIF(page.WordDateStart.HasValue, (a, b, c, d) => (c.WorkDate >= page.WordDateStart)) + .WhereIF(page.WordDateEnd.HasValue, (a, b, c, d) => (c.WorkDate <= page.WordDateEnd)) + .WhereIF(!string.IsNullOrEmpty(page.WorkerUserName), (a, b, c, d) => (d.name.Contains(page.WorkerUserName))) + .GroupBy((a, b, c, d) => new { b.WorkerUserId, d.name }) + + .Select((a, b, c, d) => new OrderDakaDto + { + + TodaySalary = SqlFunc.AggregateSumNoNull(c.TodaySalary), + WorkerUserId = b.WorkerUserId, + WorkerUserName = d.name, + }) + + .ToPageListAsync(page.PageIndex, page.PageSize, total); + + + + + var heji = orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail, UserWorker>((a, b, c, d) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId, + JoinType.Inner, b.Id == c.OrderBiddingId, + JoinType.Inner, b.WorkerUserId == d.UserId + )) + .Where((a, b, c, d) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false + && b.IsSelected == true && c.IsShenPi == 2 && userids.Contains(a.OrderUserId)) //a.OrderUserId == userid + .WhereIF(page.WordDate.HasValue, (a, b, c, d) => (c.WorkDate == page.WordDate)) + .WhereIF(page.WordDateStart.HasValue, (a, b, c, d) => (c.WorkDate >= page.WordDateStart)) + .WhereIF(page.WordDateEnd.HasValue, (a, b, c, d) => (c.WorkDate <= page.WordDateEnd)) + .WhereIF(!string.IsNullOrEmpty(page.WorkerUserName), (a, b, c, d) => (d.name.Contains(page.WorkerUserName))) + .Sum((a, b, c, d) => c.TodaySalary); + + result.Items = data; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + result.Heji = heji ?? 0; + return result; + } } } -- Gitblit v1.9.1