| | |
| | | using FlexJobApi.Core; |
| | | using Aop.Api.Domain; |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DataValidation; |
| | | using Furion.FriendlyException; |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System; |
| | |
| | | IRepository<TaskInfoUser> rep) : |
| | | IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>, |
| | | IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>, |
| | | IRequestHandler<GetTaskUserHireStatusQuery, GetTaskUserHireStatusQueryResult> |
| | | IRequestHandler<GetTaskUserHireStatusQuery, GetTaskUserHireStatusQueryResult>, |
| | | IRequestHandler<GetSettlementTaskUsersQuery, GetSettlementTaskUsersQueryResult> |
| | | { |
| | | private readonly IRepository<TaskInfoUser> rep = rep; |
| | | |
| | |
| | | { |
| | | q = q.Where(it => it.EnterpriseEmployee.UserId == request.UserId); |
| | | } |
| | | var model = await q |
| | | .Select(it => new GetTaskUserHireStatusQueryResult |
| | | { |
| | | HireStatus = it.HireStatus |
| | | }) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "该报名信息"); |
| | | var model = await q |
| | | .Select(it => new GetTaskUserHireStatusQueryResult |
| | | { |
| | | HireStatus = it.HireStatus |
| | | }) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "报名信息"); |
| | | return model; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询结算名单分页列表数据 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<GetSettlementTaskUsersQueryResult> Handle(GetSettlementTaskUsersQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var list = new GetSettlementTaskUsersQueryResult(); |
| | | var q = rep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.TaskInfoId == request.TaskInfoId); |
| | | list.Data = q |
| | | .Select(it => new GetSettlementTaskUsersQueryResultItem |
| | | { |
| | | Id = it.Id, |
| | | Name = it.EnterpriseEmployee.Name, |
| | | Identity = it.EnterpriseEmployee.Identity, |
| | | ContactPhoneNumber = it.EnterpriseEmployee.ContactPhoneNumber, |
| | | CheckReceiveStatus = it.CheckReceiveStatus, |
| | | Bank = it.Bank, |
| | | BankBranch = it.BankBranch, |
| | | ReceiveAccount = it.ReceiveAccount, |
| | | SettlementAmount = it.SettlementAmount, |
| | | ActualSettlementAmount = it.ActualSettlementAmount, |
| | | SettlementTime = it.SettlementTime |
| | | }) |
| | | .ToList(); |
| | | |
| | | var successList = new List<GetSettlementTaskUsersQueryResultExcelRow>(); |
| | | if (request.SettlementOrderUrl.IsNotNull()) |
| | | { |
| | | var models = await ExcelUtils.ImportExcelFromOSS<GetSettlementTaskUsersQueryResultExcelRow>(request.SettlementOrderUrl); |
| | | foreach (var model in models) |
| | | { |
| | | var errors = new List<string>(); |
| | | if (model.Name.IsNull()) |
| | | { |
| | | errors.Add("请填写姓名"); |
| | | } |
| | | if (model.Identity.IsNull()) |
| | | { |
| | | errors.Add("请填写身份证号"); |
| | | } |
| | | else if (!model.Identity.TryValidate(EnumValidationTypes.ValiIdentity).IsValid) |
| | | { |
| | | errors.Add("身份证号格式不正确"); |
| | | } |
| | | else if (successList.Any(it => it.Identity == model.Identity)) |
| | | { |
| | | errors.Add("身份证号重复"); |
| | | } |
| | | if (model.Bank.IsNull()) |
| | | { |
| | | errors.Add("请填写所属银行"); |
| | | } |
| | | if (model.ReceiveAccount.IsNull()) |
| | | { |
| | | errors.Add("请填写收款账号"); |
| | | } |
| | | if (model.SettlementAmount == null) |
| | | { |
| | | errors.Add("请填写结算金额"); |
| | | } |
| | | else if (model.SettlementAmount < 0) |
| | | { |
| | | errors.Add("结算金额不可为负数"); |
| | | } |
| | | if (model.ActualSettlementAmount == null) |
| | | { |
| | | errors.Add("请填写实发金额"); |
| | | } |
| | | else if (model.ActualSettlementAmount < 0) |
| | | { |
| | | errors.Add("实发金额不可为负数"); |
| | | } |
| | | else if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < 1) |
| | | { |
| | | errors.Add("实发金额不可小于1元"); |
| | | } |
| | | |
| | | var item = list.Data.FirstOrDefault(it => it.Identity == model.Identity); |
| | | if (item == null) |
| | | { |
| | | errors.Add("灵工不存在"); |
| | | } |
| | | else if (item.CheckReceiveStatus != EnumTaskCheckReceiveStatus.Completed) |
| | | { |
| | | errors.Add("未完成验收"); |
| | | } |
| | | else if (item.Name != model.Name) |
| | | { |
| | | errors.Add("灵工姓名与实名信息不一致"); |
| | | } |
| | | else |
| | | { |
| | | item.SettlementAmount = model.SettlementAmount; |
| | | item.ActualSettlementAmount = model.ActualSettlementAmount; |
| | | item.ReceiveAccount = model.ReceiveAccount; |
| | | item.Bank = model.Bank; |
| | | item.BankBranch = model.BankBranch; |
| | | } |
| | | |
| | | if (errors.IsNotNull()) |
| | | { |
| | | var error = model.Adapt<GetSettlementTaskUsersQueryResultError>(); |
| | | error.ErrorMessage = errors.SplitJoin(","); |
| | | list.Errors.Add(error); |
| | | } |
| | | else |
| | | { |
| | | successList.Add(model); |
| | | } |
| | | } |
| | | |
| | | if (list.Errors.IsNotNull()) |
| | | { |
| | | list.Data = new List<GetSettlementTaskUsersQueryResultItem>(); |
| | | } |
| | | else |
| | | { |
| | | list.Data = list.Data |
| | | .Where(it => successList.Any(s => s.Identity == it.Identity)) |
| | | .ToList(); |
| | | } |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | } |
| | | } |