From 5a72c00dca19dd6dd9be9db9e14f00f512f93f02 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期二, 29 十月 2024 13:10:22 +0800 Subject: [PATCH] 小修改 --- cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs | 621 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 575 insertions(+), 46 deletions(-) diff --git a/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs b/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs index 1a2bb2c..ec6c8b1 100644 --- a/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs +++ b/cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs @@ -12,6 +12,7 @@ using System.Security.Claims; using System.Text; using System.Threading.Tasks; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinAccountGetAccountBasicInfoResponse.Types; namespace cylsg.Application.Orders { @@ -49,10 +50,21 @@ PageResult<OrderDto> result = new PageResult<OrderDto>(); 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(); + Expression<Func<Order, bool>> expression = t => true; - expression = expression.And(t => t.IsDeleted == false && t.IsEn == true - && t.OrderUserId == userid); + expression = expression.And(t => t.IsDeleted == false /*&& t.IsEn == true*/ + && userids.Contains(t.OrderUserId)); //t.OrderUserId == userid if (!string.IsNullOrEmpty(page.OrderName)) { @@ -66,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; @@ -84,14 +101,20 @@ { switch (orderDto.OrderStatus) { - case (int)OrderStatuses.fabu: orderDto.OrderStatusName = "鍙戝竷"; break; + case (int)OrderStatuses.fabu: orderDto.OrderStatusName = "鍙戝竷涓�"; break; case (int)OrderStatuses.zhaogongwanbi: orderDto.OrderStatusName = "鎷涘伐瀹屾瘯"; break; case (int)OrderStatuses.jiesuanwanbi: orderDto.OrderStatusName = "缁撶畻瀹屾瘯"; break; default: break; } - var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); - orderDto.WorderCounted = orderBiddings; + var orderBidds = await orderBiddingRepository.GetListAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false); + + //var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); + orderDto.WorderCounted = orderBidds.Count(x=> x.IsSelected == true); + //var orderBiddingbaomings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false); + orderDto.BaoMingCount = orderBidds.Count; + // var orderBiddingbaomings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false); + orderDto.WorkerDaiCount = orderBidds.Count(x => x.IsSelected == null); } @@ -149,13 +172,34 @@ 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 && 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; order.WordStartTime = orderDto.WordStartTime; order.WordEndTime = orderDto.WordEndTime; @@ -167,16 +211,29 @@ order.ContactPhone = orderDto.ContactPhone; order.WorkerType = orderDto.WorkerType; order.WorkPrice = orderDto.WorkPrice; - - + order.WorkPriceMax = orderDto.WorkPriceMax; + order.Zixinganpai = orderDto.Zixinganpai; + order.OrderStatus = 0; + order.IsEn = true; order.UpDataBy = NickName; order.UpDataTime = DateTime.Now; res = await orderRes.UpdateAsync(order); + + + } else { + if (orderDto.OldId > 0) + { + //鍒犻櫎鏃х殑涓嬫灦璁㈠崟 + var order1 = await orderRes.GetByIdAsync(orderDto.OldId); + order1.IsDeleted = true; + res = await orderRes.UpdateAsync(order1); + } + var order = _mapper.Map<Order>(orderDto); order.UpDataBy = NickName; order.UpDataTime = DateTime.Now; @@ -184,6 +241,7 @@ order.CreateTime = DateTime.Now; order.OrderStatus = 0; order.OrderUserId = userid; + order.IsEn = true; res = await orderRes.InsertAsync(order); } @@ -217,6 +275,7 @@ var orderBiddingRes = new BaseRepository<OrderBidding>(); var orderRes = new BaseRepository<Order>(); + var orderBiddingWorkPriceRes = new BaseRepository<OrderBiddingWorkPrice>(); var orderBidding = await orderBiddingRes.GetByIdAsync(queRenDto.OrderBiddingId); if (orderBidding == null || orderBidding.IsEn != true || orderBidding.IsDeleted == true ) @@ -258,6 +317,198 @@ res = await orderRes.UpdateAsync(order); } + + //add 瀛樺偍宸ヤ汉鐨勫伐浠� + var orderBiddingWorkPrice = new OrderBiddingWorkPrice(); + orderBiddingWorkPrice.OrderBiddingId = queRenDto.OrderBiddingId; + orderBiddingWorkPrice.WorkPrice = order.WorkPrice; + orderBiddingWorkPrice.EffectTime = DateTime.Now.Date; + + + orderBiddingWorkPrice.UpDataBy = NickName; + orderBiddingWorkPrice.UpDataTime = DateTime.Now; + orderBiddingWorkPrice.CreateBy = NickName; + orderBiddingWorkPrice.CreateTime = DateTime.Now; + res = await orderBiddingWorkPriceRes.InsertAsync(orderBiddingWorkPrice); + + return res; + } + + + + + + /// <summary> + /// 鍏徃淇敼宸ヤ汉宸ヤ环 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveWorkPrice(WorkPriceDto workPriceDto) + { + + 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 orderBiddingWorkPriceRes = new BaseRepository<OrderBiddingWorkPrice>(); + + var orderBidding = await orderBiddingRes.GetByIdAsync(workPriceDto.OrderBiddingId); + if (orderBidding == null || orderBidding.IsEn != true || orderBidding.IsDeleted == true) + { + throw Oops.Oh("璇ユ姇閫掑凡缁忔棤鏁堬紒"); + } + if (orderBidding.IsSelected != true) + { + throw Oops.Oh("璇ユ姇閫掓病鏈夌‘璁わ紝涓嶈兘淇敼宸ヤ环锛�"); + } + + + + + + + bool res; + + + + //add 瀛樺偍宸ヤ汉鐨勫伐浠� + var orderBiddingWorkPrice = new OrderBiddingWorkPrice(); + orderBiddingWorkPrice.OrderBiddingId = workPriceDto.OrderBiddingId; + orderBiddingWorkPrice.WorkPrice = workPriceDto.WorkPrice; + orderBiddingWorkPrice.EffectTime = DateTime.Now.Date.AddDays(1); + + + orderBiddingWorkPrice.UpDataBy = NickName; + orderBiddingWorkPrice.UpDataTime = DateTime.Now; + orderBiddingWorkPrice.CreateBy = NickName; + orderBiddingWorkPrice.CreateTime = DateTime.Now; + res = await orderBiddingWorkPriceRes.InsertAsync(orderBiddingWorkPrice); + + return res; + } + + + /// <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> + [Authorize] + [HttpPost] + public async Task<bool> saveQuXiao(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 orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + + 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 count = await orderBiddingDetailRes.CountAsync(x => x.OrderBiddingId == orderBidding.Id && x.IsEn == true && x.IsDeleted == false); + if (count>0) + { + throw Oops.Oh("璇ュ伐浜哄凡鏈夋墦鍗′俊鎭紝涓嶈兘鍙栨秷鎷涘伐锛�"); + } + + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + + + + bool res; + + orderBidding.IsSelected = null; + orderBidding.Selectedtime = null; + orderBidding.UpDataBy = NickName; + orderBidding.UpDataTime = DateTime.Now; + + + res = await orderBiddingRes.UpdateAsync(orderBidding); + if (!res) + { + throw Oops.Oh("鍙栨秷宸ヤ汉鎷涘伐澶辫触锛�"); + } + order.OrderStatus = 0; + res = await orderRes.UpdateAsync(order); + return res; } @@ -282,23 +533,37 @@ 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 orderBiddingWorkPriceRepository = new BaseRepository<OrderBiddingWorkPrice>(); var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); - - var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail>((a, b, c) => + 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.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 - && b.IsSelected == true && 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)) + .Where((a, b, c, d) => 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 a.IsEn == true && + .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, @@ -308,10 +573,32 @@ WorkPrice = a.WorkPrice, TodaySalary = c.TodaySalary, IsShenPi = c.IsShenPi, + ShenPitime = c.ShenPitime, WorkCount = c.WorkCount, + WorkerUserId = b.WorkerUserId, + WorkerUserName = d.name, + OrderBiddingId = c.OrderBiddingId, }) .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) { @@ -344,6 +631,14 @@ //濡傛灉褰撳ぉ杩樻病鏈夊~鍐欑敵璇凤紝鍒欒绠楀伐浣滄椂闂村拰宸ヨ祫 if (dakaDto.IsShenPi == 0) { + //褰撳墠鏈夋晥鐨勫伐浠� + var orderBiddingWorkPrices = await orderBiddingWorkPriceRepository.GetListAsync(x=>x.OrderBiddingId == dakaDto.OrderBiddingId && x.IsEn == true && x.IsDeleted == false && x.EffectTime <= dakaDto.WorkDate ); + var orderBiddingWorkPrice = orderBiddingWorkPrices.OrderByDescending(x => x.Id).FirstOrDefault(); + if (orderBiddingWorkPrice != null) + { + dakaDto.WorkPrice = orderBiddingWorkPrice.WorkPrice; + } + dakaDto.WorkTime = hours + (minutes / 60); if (dakaDto.WorkerType == 0) { @@ -359,16 +654,16 @@ 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; } switch (dakaDto.WorkerType) { case (int)WorkerTypes.time: dakaDto.WorkerTypeName = "璁℃椂"; break; - case (int)WorkerTypes.count: dakaDto.WorkerTypeName = "璁′环"; break; + case (int)WorkerTypes.count: dakaDto.WorkerTypeName = "璁′欢"; break; default: break; } @@ -378,6 +673,13 @@ 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; + //} + } } @@ -385,7 +687,7 @@ result.PageIndex = page.PageIndex; result.PageSize = page.PageSize; result.TotalCount = total; - + result.Heji = heji ?? 0; return result; } @@ -430,6 +732,14 @@ //{ // throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡鏃犳硶鎵撳崱纭锛�"); //} + if (orderBiddingDetail.IsShenPi.HasValue && orderBiddingDetail.IsShenPi == (int)IsShenPis.yishenpi && orderBiddingDetail.ShenPitime.HasValue && orderBiddingDetail.ShenPitime <= DateTime.Now.AddMinutes(-5)) + { + throw Oops.Oh("瀹℃壒鏃堕棿宸茬粡瓒呰繃5鍒嗛挓锛屾棤娉曢噸鏂板鎵癸紒"); + } + + + + var res = false; try { @@ -463,36 +773,41 @@ } var userCompany = await userCompanyRes.GetFirstAsync(x => x.UserId == order.OrderUserId); - if(userCompany!=null && userCompany.IsTiXian == true) + + if (userCompany!=null ) { - //鎻掑叆鐢ㄦ埛鐨勭粨绠楅噾棰� - UserTiXianDetail userTiXianDetail = new UserTiXianDetail(); - userTiXianDetail.UserId = orderBidding.WorkerUserId; - userTiXianDetail.YiTiXianJine = TodaySalary; - userTiXianDetail.ZhiChuShouRu = (int)ZhiChuShouRus.shouru; - userTiXianDetail.Remark = "鎷涘伐璁㈠崟" + order.OrderName + orderBiddingDetail.WorkDate.Value.ToString("yyyy-MM-dd") + "宸ヨ祫缁撶畻"; - userTiXianDetail.UpDataBy = NickName; - userTiXianDetail.UpDataTime = DateTime.Now; - userTiXianDetail.CreateBy = NickName; - userTiXianDetail.CreateTime = DateTime.Now; - - res = await userTiXianDetailRes.InsertAsync(userTiXianDetail); - if (!res) + var userCompanies = await userCompanyRes.CountAsync(x => x.Suppliercode == userCompany.Suppliercode && x.IsEn == true && x.IsDeleted == false && x.IsTiXian == true); + if (userCompanies > 0) { - orderRes.Context.Ado.RollbackTran(); - throw Oops.Oh("缁撶畻澶辫触锛�"); - } - var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderBidding.WorkerUserId); - if (userWorker != null) - { - var TiXianZonge = userWorker.TiXianZonge ?? 0; + //鎻掑叆鐢ㄦ埛鐨勭粨绠楅噾棰� + UserTiXianDetail userTiXianDetail = new UserTiXianDetail(); + userTiXianDetail.UserId = orderBidding.WorkerUserId; + userTiXianDetail.YiTiXianJine = TodaySalary; + userTiXianDetail.ZhiChuShouRu = (int)ZhiChuShouRus.shouru; + userTiXianDetail.Remark = userCompany.Suppliername + " " + orderBiddingDetail.WorkDate.Value.ToString("yyyy-MM-dd"); + userTiXianDetail.UpDataBy = NickName; + userTiXianDetail.UpDataTime = DateTime.Now; + userTiXianDetail.CreateBy = NickName; + userTiXianDetail.CreateTime = DateTime.Now; - userWorker.TiXianZonge = TiXianZonge + TodaySalary; - res = await userWorkerRes.UpdateAsync(userWorker); + res = await userTiXianDetailRes.InsertAsync(userTiXianDetail); if (!res) { orderRes.Context.Ado.RollbackTran(); throw Oops.Oh("缁撶畻澶辫触锛�"); + } + var userWorker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderBidding.WorkerUserId); + if (userWorker != null) + { + var TiXianZonge = userWorker.TiXianZonge ?? 0; + + userWorker.TiXianZonge = TiXianZonge + TodaySalary; + res = await userWorkerRes.UpdateAsync(userWorker); + if (!res) + { + orderRes.Context.Ado.RollbackTran(); + throw Oops.Oh("缁撶畻澶辫触锛�"); + } } } } @@ -547,5 +862,219 @@ return res; } + + + + + /// <summary> + /// 鏌ヨ鍏徃涓嬫墍鏈夊憳宸� + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<List<UserCompanyDto>> PostMystaffList() + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + + var userCompanyRes = new BaseRepository<UserCompany>(); + var userRes = new BaseRepository<User>(); + + + 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 datadtos = _mapper.Map<List<UserCompanyDto>>(userCompanies); + + foreach (var datadto in datadtos) + { + var user = await userRes.GetByIdAsync(datadto.UserId); + datadto.Nickname = user.Nickname; + } + + + return datadtos; + } + + + /// <summary> + /// 淇濆瓨鍏徃涓嬫墍鏈夊憳宸ユ槸鍚︾鐞嗗憳 + /// </summary> + /// <param name="staffAdminDto"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> SaveStaffAdmin(StaffAdminDto staffAdminDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string NickName = App.User?.FindFirstValue("NickName"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + var userCompanyRes = new BaseRepository<UserCompany>(); + + + var res = false; + + var userCompany = await userCompanyRes.GetByIdAsync(staffAdminDto.ComId); + if(staffAdminDto.IsAdmin == false) + { + var userCompanies = await userCompanyRes.CountAsync(x => x.Suppliercode == userCompany.Suppliercode && x.Id != userCompany.Id && x.IsAdmin == true && x.IsEn == true && x.IsDeleted == false); + if (userCompanies <= 0) + { + throw Oops.Oh("涓�涓叕鍙稿繀椤昏嚦灏戜竴涓鐞嗗憳锛�"); + } + } + + if (userCompany != null) + { + userCompany.IsAdmin = staffAdminDto.IsAdmin; + userCompany.UpDataBy = NickName; + userCompany.UpDataTime = DateTime.Now; + res = await userCompanyRes.UpdateAsync(userCompany); + } + + + + return res; + } + + + + + + /// <summary> + /// 鑱屼綅鍒犻櫎鍔熻兘 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> deleteOrder(BaoMingDto baoMingDto) + { + + 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 userWorkerRes = new BaseRepository<UserWorker>(); + + + var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); + if (order.OrderStatus > 0) + { + throw Oops.Oh("宸茬粡鎷涘伐瀹屾瘯鎴栬�呯粨绠楋紝鏃犳硶涓嬫灦"); + } + + bool res; + order.IsEn = false; + order.UpDataBy = NickName; + order.UpDataTime = DateTime.Now; + + 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