From 17308f6494c81fb5a5ee035724a414ec7da11936 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期四, 22 八月 2024 08:38:45 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/cylsg --- cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs | 746 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 746 insertions(+), 0 deletions(-) diff --git a/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs b/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs new file mode 100644 index 0000000..3f658a3 --- /dev/null +++ b/cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs @@ -0,0 +1,746 @@ +锘縰sing cylsg.Application.Orders.Dtos; +using cylsg.Application.Users.Dtos; +using cylsg.Core; +using cylsg.Model.OrderModel; +using cylsg.Model.UserModel; +using Furion.LinqBuilder; +using MapsterMapper; +using Org.BouncyCastle.Asn1.X509; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Security.Claims; +using System.Text; +using System.Threading.Tasks; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.ChannelsECOrderDeliverySendRequest.Types.Delivery.Types; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.SemanticSemproxySearchResponse.Types; + +namespace cylsg.Application.Orders +{ + /// <summary> + /// 璁㈠崟宸ヤ汉鎺ュ彛 + /// </summary> + public class OrderWorkerAppService : IDynamicApiController + { + private readonly ISystemService _systemService; + private ISqlSugarClient _sqlSugarClient; + private IMapper _mapper; + public OrderWorkerAppService(ISystemService systemService, ISqlSugarClient sqlSugarClient, IMapper mapper) + { + _systemService = systemService; + _sqlSugarClient = sqlSugarClient; + _mapper = mapper; + } + + + /// <summary> + /// 鏌ヨ宸ヤ汉鍙互鎶曢�掔殑鎷涘伐璁㈠崟 + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [HttpPost] + public async Task<PageResult<OrderDto>> PostListPage(OrderPageSearch page) + { + PageResult<OrderDto> result = new PageResult<OrderDto>(); + + Expression<Func<Order, bool>> expression = t => true; + + expression = expression.And(t => t.IsDeleted == false && t.IsEn == true && t.OrderStatus == 0); + if (!string.IsNullOrEmpty(page.OrderName)) + { + expression = expression.And(t => t.OrderName.Contains(page.OrderName)); + } + if (page.WordStartTime.HasValue) + { + expression = expression.And(t => t.WordStartTime >= page.WordStartTime); + } + if (page.WordEndTime.HasValue) + { + expression = expression.And(t => t.WordStartTime <= page.WordEndTime); + } + + RefAsync<int> total = 0; + var orderRepository = new BaseRepository<Order>(); + + var orderBiddingRepository = new BaseRepository<OrderBidding>(); + + var data = await orderRepository.Context.Queryable<Order>() + .Where(expression) + .OrderByDescending(c => c.WordStartTime) + .ToPageListAsync(page.PageIndex, page.PageSize, total); + var datadto = _mapper.Map<List<OrderDto>>(data); + + if (datadto != null && datadto.Count > 0) + { + foreach (var orderDto in datadto) + { + var orderBiddings = await orderBiddingRepository.CountAsync(x => x.OrderId == orderDto.Id && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false); + orderDto.WorderCounted = orderBiddings; + } + + } + result.Items = datadto; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + /// <summary> + /// 鏌ヨ宸ヤ汉宸茬粡鎶曢�掔殑鎷涘伐璁㈠崟 + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDto>> PostMyListPage(OrderPageSearch page) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + PageResult<OrderDto> result = new PageResult<OrderDto>(); + var orderRepository = new BaseRepository<Order>(); + Expression<Func<Order, bool>> expression = t => true; + + expression = expression.And(t => t.IsDeleted == false && t.IsEn == true + && SqlFunc.Subqueryable<OrderBidding>().Where(oi => oi.OrderId == t.Id && oi.IsDeleted == false && oi.IsEn == true && oi.WorkerUserId == userid).Any()); + + if (!string.IsNullOrEmpty(page.OrderName)) + { + expression = expression.And(t => t.OrderName.Contains(page.OrderName)); + } + if (page.WordStartTime.HasValue) + { + expression = expression.And(t => t.WordStartTime >= page.WordStartTime); + } + if (page.WordEndTime.HasValue) + { + expression = expression.And(t => t.WordStartTime <= page.WordEndTime); + } + + RefAsync<int> total = 0; + + + var orderBiddingRepository = new BaseRepository<OrderBidding>(); + + var data = await orderRepository.Context.Queryable<Order>() + .Where(expression) + .OrderByDescending(c => c.WordStartTime) + .ToPageListAsync(page.PageIndex, page.PageSize, total); + var datadto = _mapper.Map<List<OrderDto>>(data); + + if (datadto != null && datadto.Count > 0) + { + foreach (var orderDto in datadto) + { + switch (orderDto.OrderStatus) + { + 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 orderBidding = await orderBiddingRepository.GetFirstAsync(x => x.OrderId == orderDto.Id && x.WorkerUserId == userid && x.IsEn == true && x.IsDeleted == false); + if (orderBidding != null) + { + orderDto.IsSelected = orderBidding.IsSelected; + if (orderDto.IsSelected.HasValue && orderDto.IsSelected.Value) + { + orderDto.IsSelectedName ="宸茬‘璁�"; + } + else + { + orderDto.IsSelectedName = "鏈‘璁�"; + } + } + } + + } + result.Items = datadto; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + + + + /// <summary> + /// 鏍规嵁Id鏌ヨ鎷涘伐鏄庣粏 + /// </summary> + /// <returns></returns> + [Authorize] + public async Task<OrderDto> getOrder(int orderid) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + OrderDto orderDto = new OrderDto(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var userRes = new BaseRepository<User>(); + var order = await orderRes.GetByIdAsync(orderid); + orderDto = _mapper.Map<OrderDto>(order); + switch (orderDto.OrderStatus) + { + 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 orderBiddingRes.GetListAsync(x => x.OrderId == orderDto.Id && x.IsEn == true && x.IsDeleted == false); + var IsSelected = orderBiddings.Count(x => x.IsSelected == true); + orderDto.WorderCounted = IsSelected; + + var orderBidding = orderBiddings.Where(x => x.WorkerUserId == userid).FirstOrDefault(); + if (orderBidding != null) + { + orderDto.IsSelected = orderBidding.IsSelected; + if (orderDto.IsSelected.HasValue && orderDto.IsSelected.Value) + { + orderDto.IsSelectedName = "宸茬‘璁�"; + } + else + { + orderDto.IsSelectedName = "鏈‘璁�"; + } + } + + + var orderBiddingDtos = _mapper.Map<List<OrderBiddingDto>>(orderBiddings); + if(orderBiddingDtos != null&& orderBiddingDtos.Count > 0) + { + foreach (var orderBiddingDto in orderBiddingDtos) + { + if (orderBiddingDto.IsSelected.HasValue && orderBiddingDto.IsSelected.Value) + { + orderBiddingDto.IsSelectedName = "宸茬‘璁�"; + } + else + { + orderBiddingDto.IsSelectedName = "鏈‘璁�"; + } + + var user = await userRes.GetByIdAsync(orderBiddingDto.WorkerUserId); + if (user != null) + { + orderBiddingDto.WorkerName = user.name; + orderBiddingDto.WorkerAvatar = user.Avatar; + } + + } + } + + + orderDto.orderBidding = orderBiddingDtos; + + return orderDto; + } + + + + + + /// <summary> + /// 宸ヤ汉鎶曢�� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveBaoMing(BaoMingDto baoMingDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var userWorkerRes = new BaseRepository<UserWorker>(); + var userWorker = await userWorkerRes.GetFirstAsync(p=>p.UserId == userid && p.IsEn == true && p.IsDeleted == false); + if (userWorker == null || string.IsNullOrEmpty(userWorker.IdCode)) + { + throw Oops.Oh("璇峰厛瀹屾垚宸ヤ汉瀹炲悕璁よ瘉鎵嶈兘鎶曢�掞紒"); + } + + var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); + if (order == null || order.OrderStatus>0) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟姇閫掞紒"); + } + + bool res; + + var orderBidding = await orderBiddingRes.GetFirstAsync(x => x.OrderId == baoMingDto.OrderId && x.WorkerUserId == userid && x.IsDeleted == false && x.IsEn == true); + if (orderBidding != null) + { + throw Oops.Oh("宸茬粡鎶曢�掕繃浜嗭紒"); + } + else + { + + + var orderBiddings = await orderBiddingRes.CountAsync(x => x.OrderId == baoMingDto.OrderId && x.IsSelected == true && x.IsDeleted == false && x.IsEn == true); + if(orderBiddings>= order.WorderCount) + { + throw Oops.Oh("鎷涘伐浜烘暟宸茬粡婊′簡锛屼笉鑳芥姤鍚嶏紒"); + } + + + OrderBidding orderBidding1 = new OrderBidding(); + orderBidding1.WorkerUserId = userid; + orderBidding1.OrderId = baoMingDto.OrderId; + orderBidding1.IsSelected = false; + orderBidding1.UpDataBy = ITCode; + orderBidding1.UpDataTime = DateTime.Now; + orderBidding1.CreateBy = ITCode; + orderBidding1.CreateTime = DateTime.Now; + + res = await orderBiddingRes.InsertAsync(orderBidding1); + + } + + return res; + } + + /// <summary> + /// 杩涘叆鎵撳崱椤甸潰 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<OrderBiddingDetailDto> getDaka(BaoMingDto baoMingDto) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + OrderBiddingDetailDto orderBiddingDetailDto = null; + + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); + if (order == null || order.OrderStatus > 1) + { + throw Oops.Oh("璇ユ嫑宸ョ姸鎬佸凡缁忔棤娉曟墦鍗★紒"); + } + var orderBidding = await orderBiddingRes.GetFirstAsync(x => x.OrderId == baoMingDto.OrderId && x.WorkerUserId == userid && x.IsDeleted == false && x.IsEn == true); + if (orderBidding == null || orderBidding.IsSelected != true) + { + throw Oops.Oh("娌℃湁纭鐨勬姇閫掞紒"); + } + var dateTime = DateTime.Now.Date; + var orderBiddingDetail = await orderBiddingDetailRes.GetFirstAsync(x => x.OrderBiddingId == orderBidding.Id && x.WorkDate == dateTime && x.IsDeleted == false && x.IsEn == true); + if (orderBiddingDetail != null ) + { + if(orderBiddingDetail.IsShenPi>0) + { + throw Oops.Oh("褰撳ぉ鐨勬墦鍗″凡缁忔彁浜わ紝涓嶈兘鎵撳崱锛�"); + } + orderBiddingDetailDto = _mapper.Map<OrderBiddingDetailDto>(orderBiddingDetail); + var orderBiddingDetailChecks = await OrderBiddingDetailCheckRes.GetListAsync(x => x.OrderBiddingDetailId == orderBiddingDetail.Id && x.IsDeleted == false && x.IsEn == true); + orderBiddingDetailDto.orderBiddingDetailCheck = _mapper.Map<List<OrderBiddingDetailCheckDto>>(orderBiddingDetailChecks); + } + + return orderBiddingDetailDto; + } + + /// <summary> + /// 宸ヤ汉鎵撳崱 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveDaka(DakaDto dakaDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + + var orderBidding = await orderBiddingRes.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; + 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(orderBiddingDetail == null) + { + orderBiddingDetail = new OrderBiddingDetail(); + orderBiddingDetail.OrderBiddingId = orderBidding.Id; + orderBiddingDetail.WorkDate = dateTime; + orderBiddingDetail.IsShenPi = 0; + orderBiddingDetail.IsTiXian = false; + orderBiddingDetail.UpDataBy = ITCode; + orderBiddingDetail.UpDataTime = DateTime.Now; + orderBiddingDetail.CreateBy = ITCode; + orderBiddingDetail.CreateTime = DateTime.Now; + orderBiddingDetail.Id = await orderBiddingDetailRes.InsertReturnIdentityAsync(orderBiddingDetail); + } + //鎻掑叆鎵撳崱璁板綍 + var orderBiddingDetailCheck = new OrderBiddingDetailCheck(); + orderBiddingDetailCheck.OrderBiddingDetailId = orderBiddingDetail.Id; + orderBiddingDetailCheck.CheckPhoto = dakaDto.CheckPhoto; + orderBiddingDetailCheck.Checktime = DateTime.Now; + orderBiddingDetailCheck.UpDataBy = ITCode; + orderBiddingDetailCheck.UpDataTime = DateTime.Now; + orderBiddingDetailCheck.CreateBy = ITCode; + orderBiddingDetailCheck.CreateTime = DateTime.Now; + res = await OrderBiddingDetailCheckRes.InsertAsync(orderBiddingDetailCheck); + + + + return res; + } + + + + + + + /// <summary> + /// 鏌ヨ宸ヤ汉鐨勬墦鍗¤褰� + /// </summary> + /// <param name="page"></param> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<PageResult<OrderDakaDto>> PostMyDakaListPage(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>(); + + RefAsync<int> total = 0; + + + var orderBiddingDetailCheckRepository = new BaseRepository<OrderBiddingDetailCheck>(); + + var data = await orderRepository.Context.Queryable<Order, OrderBidding, OrderBiddingDetail>((a, b ,c) => + new JoinQueryInfos(JoinType.Inner, a.Id == b.OrderId , + JoinType.Inner, b.Id == c.OrderBiddingId + )) + .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 + { + OrderBiddingDetailId = c.Id, + OrderName = a.OrderName, + WorkDate = c.WorkDate, + WorkTime = c.WorkTime, + WorkerType = a.WorkerType, + WorkPrice = a.WorkPrice, + TodaySalary = c.TodaySalary, + IsShenPi = c.IsShenPi, + WorkCount = c.WorkCount, + + }) + + .ToPageListAsync(page.PageIndex, page.PageSize, total); + + if (data != null && data.Count > 0) + { + foreach (var dakaDto in data) + { + var orderBiddingDetailChecks = await orderBiddingDetailCheckRepository.GetListAsync(x => x.OrderBiddingDetailId == dakaDto.OrderBiddingDetailId && x.IsEn == true && x.IsDeleted == false); + string DakaMingxi = ""; + int hours = 0; + int minutes = 0; + for (int i = 0; i < orderBiddingDetailChecks.Count; i++) + { + + if (i != orderBiddingDetailChecks.Count - 1) + { + DakaMingxi += orderBiddingDetailChecks[i].Checktime.Value.ToString("HH:mm") + "-"; + } + else + { + DakaMingxi += orderBiddingDetailChecks[i].Checktime.Value.ToString("HH:mm"); + } + + if (i == 1 || i == 3 || i == 5 || i == 7 || i == 9 || i == 11 || i == 13 || i == 15 || i == 17 || i == 19 ) + { + var timeDifference = orderBiddingDetailChecks[i].Checktime.Value - orderBiddingDetailChecks[i - 1].Checktime.Value; + hours += timeDifference.Hours; + minutes += timeDifference.Minutes; + + } + } + //濡傛灉褰撳ぉ杩樻病鏈夊~鍐欑敵璇凤紝鍒欒绠楀伐浣滄椂闂村拰宸ヨ祫 + if(dakaDto.IsShenPi == 0) + { + dakaDto.WorkTime = hours+(minutes/60); + if(dakaDto.WorkerType == 0) + { + dakaDto.TodaySalary = dakaDto.WorkTime * dakaDto.WorkPrice; + } + else + { + var WorkCount = dakaDto.WorkCount ?? 0; + dakaDto.TodaySalary = WorkCount * dakaDto.WorkPrice; + } + + } + + switch (dakaDto.IsShenPi) + { + 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; + default: break; + } + + + + + + dakaDto.DakaMingxi = DakaMingxi; + + } + + } + result.Items = data; + result.PageIndex = page.PageIndex; + result.PageSize = page.PageSize; + result.TotalCount = total; + + return result; + } + + + + + + + /// <summary> + /// 杩涘叆濉啓/瀹℃壒宸ヤ环椤甸潰 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<OrderDakaMingxiDto> getDakaDetail(DakaDetailDto dakaDetailDto) + { + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + OrderDakaMingxiDto orderDakaMingxiDto = new OrderDakaMingxiDto(); ; + + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + var userRes = new BaseRepository<User>(); + + + var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDetailDto.OrderBiddingDetailId); + var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); + var order = await orderRes.GetByIdAsync(orderBidding.OrderId); + + var orderBiddingDetailChecks = await OrderBiddingDetailCheckRes.GetListAsync(x => x.OrderBiddingDetailId == orderBiddingDetail.Id && x.IsEn == true && x.IsDeleted == false); + orderDakaMingxiDto.orderBiddingDetailCheck = _mapper.Map<List<OrderBiddingDetailCheckDto>>(orderBiddingDetailChecks); + + orderDakaMingxiDto.OrderBiddingDetailId = orderBiddingDetail.Id; + orderDakaMingxiDto.OrderName = order.OrderName; + orderDakaMingxiDto.WorkDate = orderBiddingDetail.WorkDate; + orderDakaMingxiDto.WorkTime = orderBiddingDetail.WorkTime; + orderDakaMingxiDto.WorkerType = order.WorkerType; + orderDakaMingxiDto.WorkPrice = order.WorkPrice; + orderDakaMingxiDto.TodaySalary = orderBiddingDetail.TodaySalary; + orderDakaMingxiDto.IsShenPi = orderBiddingDetail.IsShenPi; + orderDakaMingxiDto.WorkCount = orderBiddingDetail.WorkCount; + orderDakaMingxiDto.WorkerUserId = orderBidding.WorkerUserId; + var user = await userRes.GetByIdAsync(orderDakaMingxiDto.WorkerUserId); + if (user != null) + { + orderDakaMingxiDto.WorkerUserName = user.name; + orderDakaMingxiDto.WorkerUserAvatar = user.Avatar; + } + + + + switch (orderDakaMingxiDto.IsShenPi) + { + case (int)IsShenPis.baocun: orderDakaMingxiDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.tijiao: orderDakaMingxiDto.IsShenPiName = "鏈粨绠�"; break; + case (int)IsShenPis.yishenpi: orderDakaMingxiDto.IsShenPiName = "宸茬粨绠�"; break; + default: break; + } + + switch (orderDakaMingxiDto.WorkerType) + { + case (int)WorkerTypes.time: orderDakaMingxiDto.WorkerTypeName = "璁℃椂"; break; + case (int)WorkerTypes.count: orderDakaMingxiDto.WorkerTypeName = "璁′环"; break; + default: break; + } + + if (orderDakaMingxiDto.IsShenPi == 0) + { + int hours = 0; + int minutes = 0; + + for (int i = 0; i < orderBiddingDetailChecks.Count; i++) + { + + if (i == 1 || i == 3 || i == 5 || i == 7 || i == 9 || i == 11 || i == 13 || i == 15 || i == 17 || i == 19) + { + var timeDifference = orderBiddingDetailChecks[i].Checktime.Value - orderBiddingDetailChecks[i - 1].Checktime.Value; + hours += timeDifference.Hours; + minutes += timeDifference.Minutes; + + } + } + + orderDakaMingxiDto.WorkTime = hours + (minutes / 60); + if (orderDakaMingxiDto.WorkerType == 0) + { + orderDakaMingxiDto.TodaySalary = orderDakaMingxiDto.WorkTime * orderDakaMingxiDto.WorkPrice; + } + else + { + var WorkCount = orderDakaMingxiDto.WorkCount ?? 0; + orderDakaMingxiDto.TodaySalary = WorkCount * orderDakaMingxiDto.WorkPrice; + } + } + + + + + return orderDakaMingxiDto; + } + + + + /// <summary> + /// 宸ヤ汉纭褰撳ぉ鎵撳崱璇︽儏 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + public async Task<bool> saveDakaDetail(DakaQuerenDetailDto dakaDto) + { + + var UserID = App.User?.FindFirstValue("UserID"); + int userid = 0; + string ITCode = App.User?.FindFirstValue("ITCode"); + if (!string.IsNullOrEmpty(UserID)) + { + userid = int.Parse(UserID); + } + + var orderBiddingRes = new BaseRepository<OrderBidding>(); + var orderRes = new BaseRepository<Order>(); + var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); + //var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); + + var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDto.OrderBiddingDetailId); + 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) + { + 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; + orderBiddingDetail.UpDataBy = ITCode; + orderBiddingDetail.UpDataTime = DateTime.Now; + //orderBiddingDetail.CreateBy = ITCode; + //orderBiddingDetail.CreateTime = DateTime.Now; + var res = await orderBiddingDetailRes.UpdateAsync(orderBiddingDetail); + + + + + return res; + } + + + + } +} -- Gitblit v1.9.1