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/OrderWorkerAppService.cs | 191 +++++++++++++++++++++++++++++++++++++---------- 1 files changed, 150 insertions(+), 41 deletions(-) diff --git a/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs b/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs index 74c4038..be6de51 100644 --- a/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs +++ b/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs @@ -3,9 +3,12 @@ using cylsg.Core; using cylsg.Model.OrderModel; using cylsg.Model.UserModel; +using EzTencentCloud; using Furion.LinqBuilder; using MapsterMapper; +using Microsoft.IdentityModel.Tokens; using Org.BouncyCastle.Asn1.X509; +using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; @@ -26,11 +29,13 @@ private readonly ISystemService _systemService; private ISqlSugarClient _sqlSugarClient; private IMapper _mapper; - public OrderWorkerAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper) + private readonly ITencentCloudService _tencentCloudService; + public OrderWorkerAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper,ITencentCloudService tencentCloudService) { _systemService = systemService; _sqlSugarClient = sqlSugarClient; _mapper = mapper; + _tencentCloudService = tencentCloudService; } @@ -47,6 +52,7 @@ Expression<Func<Order, bool>> expression = t => true; expression = expression.And(t => t.IsDeleted == false && t.IsEn == true && t.OrderStatus == 0); + expression = expression.And(t => t.WordStartTime >= DateTime.Now.Date.AddDays(-30)); if (!string.IsNullOrEmpty(page.OrderName)) { expression = expression.And(t => t.OrderName.Contains(page.OrderName)); @@ -64,6 +70,7 @@ var orderRepository = new BaseRepository<Order>(); var orderBiddingRepository = new BaseRepository<OrderBidding>(); + var userCompanyRepository = new BaseRepository<UserCompany>(); var data = await orderRepository.Context.Queryable<Order>() .Where(expression) @@ -77,6 +84,11 @@ { var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); orderDto.WorderCounted = orderBiddings; + var userCompany = await userCompanyRepository.GetFirstAsync(x => x.UserId == orderDto.OrderUserId && x.IsDeleted == false && x.IsEn == true); + if (userCompany != null) + { + orderDto.OrderComName = userCompany.Suppliername; + } } } @@ -130,6 +142,7 @@ var orderBiddingRepository = new BaseRepository<OrderBidding>(); + var userCompanyRepository = new BaseRepository<UserCompany>(); var data = await orderRepository.Context.Queryable<Order>() .Where(expression) @@ -157,14 +170,23 @@ if (orderBidding != null) { orderDto.IsSelected = orderBidding.IsSelected; - if (orderDto.IsSelected.HasValue && orderDto.IsSelected.Value) + if (!orderDto.IsSelected.HasValue ) { - orderDto.IsSelectedName ="宸茬‘璁�"; + orderDto.IsSelectedName = "瀹℃牳涓�"; + } + else if(orderDto.IsSelected.Value) + { + orderDto.IsSelectedName = "宸茬‘璁�"; } else { - orderDto.IsSelectedName = "鏈‘璁�"; + orderDto.IsSelectedName = "涓嶅綍鐢�"; } + } + var userCompany = await userCompanyRepository.GetFirstAsync(x => x.UserId == orderDto.OrderUserId && x.IsDeleted == false && x.IsEn == true); + if (userCompany != null) + { + orderDto.OrderComName = userCompany.Suppliername; } } @@ -176,6 +198,7 @@ return result; } + @@ -199,6 +222,7 @@ OrderDto orderDto = new OrderDto(); var orderRes = new BaseRepository<Order>(); var orderBiddingRes = new BaseRepository<OrderBidding>(); + var userWorkerRes = new BaseRepository<UserWorker>(); var userRes = new BaseRepository<User>(); var order = await orderRes.GetByIdAsync(orderid); orderDto = _mapper.Map<OrderDto>(order); @@ -209,7 +233,7 @@ case (int)OrderStatuses.jiesuanwanbi: orderDto.OrderStatusName = "缁撶畻瀹屾瘯"; break; default: break; } - var orderBiddings = await orderBiddingRes.GetListAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false); + var orderBiddings = await orderBiddingRes.GetListAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false && (x.IsSelected ==null || x.IsSelected !=false) ); var IsSelected = orderBiddings.Count(x => x.IsSelected == true); orderDto.WorderCounted = IsSelected; @@ -217,13 +241,17 @@ if (orderBidding != null) { orderDto.IsSelected = orderBidding.IsSelected; - if (orderDto.IsSelected.HasValue && orderDto.IsSelected.Value) + if (!orderDto.IsSelected.HasValue) + { + orderDto.IsSelectedName = "瀹℃牳涓�"; + } + else if (orderDto.IsSelected.Value) { orderDto.IsSelectedName = "宸茬‘璁�"; } else { - orderDto.IsSelectedName = "鏈‘璁�"; + orderDto.IsSelectedName = "涓嶅綍鐢�"; } } @@ -233,20 +261,30 @@ { foreach (var orderBiddingDto in orderBiddingDtos) { - if (orderBiddingDto.IsSelected.HasValue && orderBiddingDto.IsSelected.Value) + if (!orderBiddingDto.IsSelected.HasValue) + { + orderBiddingDto.IsSelectedName = "瀹℃牳涓�"; + } + else if (orderBiddingDto.IsSelected.Value) { orderBiddingDto.IsSelectedName = "宸茬‘璁�"; } else { - orderBiddingDto.IsSelectedName = "鏈‘璁�"; + orderBiddingDto.IsSelectedName = "涓嶅綍鐢�"; } + var user = await userRes.GetByIdAsync(orderBiddingDto.WorkerUserId); + if (user != null) { - orderBiddingDto.WorkerName = user.name; orderBiddingDto.WorkerAvatar = user.Avatar; + } + var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderBiddingDto.WorkerUserId && x.IsEn == true && x.IsDeleted == false); + if (userWorker != null) + { + orderBiddingDto.WorkerName = userWorker.name; } } @@ -289,7 +327,7 @@ } var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); - if (order == null || order.OrderStatus>0) + if (order == null || order.OrderStatus>0 || order.IsEn !=true ) { throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟姇閫掞紒"); } @@ -319,7 +357,7 @@ OrderBidding orderBidding1 = new OrderBidding(); orderBidding1.WorkerUserId = userid; orderBidding1.OrderId = baoMingDto.OrderId; - orderBidding1.IsSelected = false; + orderBidding1.IsSelected = null; orderBidding1.UpDataBy = NickName; orderBidding1.UpDataTime = DateTime.Now; orderBidding1.CreateBy = NickName; @@ -354,6 +392,7 @@ var orderRes = new BaseRepository<Order>(); var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + var userWorkerRes = new BaseRepository<UserWorker>(); var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); if (order == null || order.OrderStatus > 1) { @@ -373,6 +412,11 @@ throw Oops.Oh("褰撳ぉ鐨勬墦鍗″凡缁忔彁浜わ紝涓嶈兘鎵撳崱锛�"); } orderBiddingDetailDto = _mapper.Map<OrderBiddingDetailDto>(orderBiddingDetail); + orderBiddingDetailDto.WorkerUserId = orderBidding.WorkerUserId; + var worker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderBidding.WorkerUserId); + if(worker != null) + orderBiddingDetailDto.WorkerName = worker.name; + var orderBiddingDetailChecks = await OrderBiddingDetailCheckRes.GetListAsync(x => x.OrderBiddingDetailId == orderBiddingDetail.Id && x.IsDeleted == false && x.IsEn == true); orderBiddingDetailDto.orderBiddingDetailCheck = _mapper.Map<List<OrderBiddingDetailCheckDto>>(orderBiddingDetailChecks); } @@ -402,24 +446,54 @@ var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); - var orderBidding = await orderBiddingRes.GetByIdAsync(dakaDto.OrderBiddingId); + var order = await orderRes.GetByIdAsync(dakaDto.OrderId); + if (order == null || order.OrderStatus > 1) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱锛�"); + } + + var orderBidding = await orderBiddingRes.GetFirstAsync(x => x.OrderId == dakaDto.OrderId && x.WorkerUserId == userid && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false );//GetByIdAsync(dakaDto.OrderBiddingId); if (orderBidding == null || orderBidding.IsDeleted ==true || orderBidding.IsEn == false || orderBidding.IsSelected !=true ) { throw Oops.Oh("璇ユ姇閫掔姸鎬佹棤娉曟墦鍗★紒"); } - var order = await orderRes.GetByIdAsync(orderBidding.OrderId); - if (order == null || order.OrderStatus > 1) - { - throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱锛�"); - } + bool res; var dateTime = DateTime.Now.Date; + if ( dateTime < order.WordStartTime.Value && dateTime > order.WordEndTime.Value ) + { + throw Oops.Oh("涓嶅湪鍏佽鎵撳崱鐨勬椂闂磋寖鍥达紒"); + } var orderBiddingDetail = await orderBiddingDetailRes.GetFirstAsync(x => x.OrderBiddingId == orderBidding.Id && x.WorkDate == dateTime && x.IsDeleted == false && x.IsEn == true); if (orderBiddingDetail!=null && orderBiddingDetail.IsShenPi>0) { throw Oops.Oh("璇ユ墦鍗¤褰曞凡缁忓鎵癸紝涓嶈兘鎵撳崱锛�"); } + //浜鸿劯璇嗗埆 + if (App.Configuration["VerifyFace:Enable"].ObjToBool()) + { + if (string.IsNullOrWhiteSpace(dakaDto.FaceImg)) + { + throw Oops.Oh("鏈瘑鍒汉鑴�"); + } + + var UserWorkRes = await new BaseRepository<UserWorker>().GetFirstAsync(x => x.UserId == userid); + if (UserWorkRes == null) + { + throw Oops.Oh("鍛樺伐鏈敞鍐屾垚宸ヤ汉"); + } + var faseres = _tencentCloudService.VerifyFace(dakaDto.FaceImg, UserWorkRes.IdCode); + + if (faseres.IsMatch != true) + { + throw Oops.Oh("涓嶆槸鏈汉"); + } + } + + + + if(orderBiddingDetail == null) { orderBiddingDetail = new OrderBiddingDetail(); @@ -478,17 +552,21 @@ var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); - var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail>((a, b ,c) => + var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail ,UserCompany>((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, a.OrderUserId == d.UserId )) - .Where((a, b, c) => a.IsEn == true && a.IsDeleted == false && b.IsEn == true && b.IsDeleted == false && c.IsEn == true && c.IsDeleted == false - && b.IsSelected == true && b.WorkerUserId == 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)) - .OrderByDescending((a, b, c) => c.WorkDate) - .Select((a, b, c) => new OrderDakaDto + .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 && b.WorkerUserId == userid && d.IsEn == true && d.IsDeleted == false ) + .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.Suppliername), (a, b, c, d) =>d.Suppliername.Contains(page.Suppliername)) + .OrderByDescending((a, b, c, d) => c.WorkDate) + .Select((a, b, c, d) => new OrderDakaDto { OrderBiddingDetailId = c.Id, OrderName = a.OrderName, @@ -499,10 +577,28 @@ TodaySalary = c.TodaySalary, IsShenPi = c.IsShenPi, WorkCount = c.WorkCount, - + Suppliername = d.Suppliername, }) .ToPageListAsync(page.PageIndex, page.PageSize, total); + + + + + var heji = orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail, UserCompany>((a, b, c, d) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId, + JoinType.Inner, b.Id == c.OrderBiddingId, + JoinType.Inner, a.OrderUserId == 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 && b.WorkerUserId == userid && d.IsEn == true && d.IsDeleted == false) + .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.Suppliername), (a, b, c, d) => d.Suppliername.Contains(page.Suppliername)) + .Sum((a, b, c, d) => c.TodaySalary); if (data != null && data.Count > 0) { @@ -576,7 +672,7 @@ result.PageIndex = page.PageIndex; result.PageSize = page.PageSize; result.TotalCount = total; - + result.Heji = heji ?? 0; return result; } @@ -608,7 +704,7 @@ var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); var userRes = new BaseRepository<User>(); - + var userWorkerRes = new BaseRepository<UserWorker>(); var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDetailDto.OrderBiddingDetailId); var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); @@ -630,10 +726,13 @@ var user = await userRes.GetByIdAsync(orderDakaMingxiDto.WorkerUserId); if (user != null) { - orderDakaMingxiDto.WorkerUserName = user.name; orderDakaMingxiDto.WorkerUserAvatar = user.Avatar; } - + var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderDakaMingxiDto.WorkerUserId && x.IsEn == true && x.IsDeleted == false); + if (userWorker != null) + { + orderDakaMingxiDto.WorkerUserName = userWorker.name; + } switch (orderDakaMingxiDto.IsShenPi) @@ -711,27 +810,37 @@ //var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDto.OrderBiddingDetailId); + if (orderBiddingDetail == null || orderBiddingDetail.IsShenPi > 1 || orderBiddingDetail.IsDeleted == true || orderBiddingDetail.IsEn == false) + { + throw Oops.Oh("璇ユ墦鍗$姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); + } var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); - var order = await orderRes.GetByIdAsync(orderBidding.OrderId); - if (orderBidding == null || orderBidding.IsDeleted == true || orderBidding.IsEn == false || orderBidding.IsSelected != true) { throw Oops.Oh("璇ユ姇閫掔姸鎬佹棤娉曟墦鍗$‘璁わ紒"); } - if (order == null || order.OrderStatus > 1) + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + + + if (order == null || order.OrderStatus > 1 || order.IsDeleted == true || order.IsEn == false ) { throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); } - if (orderBiddingDetail == null || orderBiddingDetail.IsShenPi > 1) - { - throw Oops.Oh("璇ユ墦鍗$姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); - } + orderBiddingDetail.WorkTime = dakaDto.WorkTime; orderBiddingDetail.WorkCount = dakaDto.WorkCount; - orderBiddingDetail.TodaySalary = dakaDto.TodaySalary; - orderBiddingDetail.IsShenPi = 1; + if(order.WorkerType == (int)WorkerTypes.count) + { + orderBiddingDetail.TodaySalary = dakaDto.WorkCount * order.WorkPrice; + } + else + { + orderBiddingDetail.TodaySalary = dakaDto.TodaySalary; + } + + orderBiddingDetail.IsShenPi = (int)IsShenPis.tijiao; orderBiddingDetail.UpDataBy = NickName; orderBiddingDetail.UpDataTime = DateTime.Now; //orderBiddingDetail.CreateBy = NickName; -- Gitblit v1.9.1