sunpengfei
2025-08-14 6001ccc7e7052b64931235b65a8b5d02f35ad1bd
feat:开发
6个文件已修改
115 ■■■■ 已修改文件
FlexJobApi.Core/FlexJobApi.Core.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/ExcelUtils/ExcelUtils.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -3828,6 +3828,11 @@
            任务Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.ExportTaskCheckReceiveTaskUsersCommandModel.UserId">
            <summary>
            Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.ExportTaskCheckReceiveTaskUsersCommandModel.Name">
            <summary>
            姓名
@@ -7778,6 +7783,11 @@
            用户Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetUserResumeQuery.EnterpriseEmployeeId">
            <summary>
            灵工Id
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetUserResumeQueryResult">
            <summary>
            查询用户简历-结果
FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs
@@ -1,4 +1,6 @@
using MediatR;
using Newtonsoft.Json;
using Swashbuckle.AspNetCore.Annotations;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -23,6 +25,12 @@
    public class ExportTaskCheckReceiveTaskUsersCommandModel
    {
        /// <summary>
        /// Id
        /// </summary>
        [JsonIgnore, SwaggerIgnore]
        public Guid UserId { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
@@ -21,6 +21,11 @@
        /// 用户Id
        /// </summary>
        public Guid? UserId { get; set; }
        /// <summary>
        /// 灵工Id
        /// </summary>
        public Guid? EnterpriseEmployeeId { get; set; }
    }
    /// <summary>
@@ -39,7 +44,7 @@
        /// <summary>
        /// 用户Id
        /// </summary>
        public Guid Id { get; set; }
        public Guid? Id { get; set; }
        /// <summary>
        /// 完善度
FlexJobApi.Core/Utils/ExcelUtils/ExcelUtils.cs
@@ -47,6 +47,14 @@
            var config = new OpenXmlConfiguration();
            config.TableStyles = TableStyles.None;
            config.AutoFilter = false;
            config.FastMode = true;
            config.EnableAutoWidth = true;
            config.StyleOptions = new OpenXmlStyleOptions
            {
                WrapCellContents = false
            };
            config.FreezeRowCount = 0;
            config.DynamicColumns = typeof(T).GetProperties().Select(it =>
            {
                var propertyType = it.PropertyType;
@@ -68,8 +76,12 @@
                            return model?.Description;
                        }
                        return v;
                    }
                    },
                };
                if (propertyType == typeof(DateTime))
                {
                    column.Format = "yyyy-MM-dd HH:mm:ss";
                }
                return column;
            }).ToArray();
            var stream = new MemoryStream();
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
@@ -168,6 +168,7 @@
                .Where(it => it.TaskInfoUser.TaskInfoId == request.Id)
                .Select(it => new ExportTaskCheckReceiveTaskUsersCommandModel
                {
                    UserId = it.TaskInfoUser.EnterpriseEmployee.UserId!.Value,
                    Name = it.TaskInfoUser.EnterpriseEmployee.User.Name,
                    Identity = it.TaskInfoUser.EnterpriseEmployee.User.Identity,
                    ContactPhoneNumber = it.TaskInfoUser.EnterpriseEmployee.User.ContactPhoneNumber,
@@ -177,6 +178,26 @@
                    Code = "456"
                })
                .ToListAsync(cancellationToken);
            if (models.IsNotNull())
            {
                var userIds = models.DistinctSelect(it => it.UserId);
                var bankCards = await repTaskInfoUserSubmit.Change<UserBankCard>().AsQueryable().AsNoTracking()
                    .Where(it => userIds.Contains(it.UserId))
                    .Select(it => new
                    {
                        it.UserId,
                        it.Bank,
                        it.Code
                    })
                    .ToListAsync(cancellationToken);
                foreach (var model in models)
                {
                    var bankCard = bankCards.FirstOrDefault(it => it.UserId == model.UserId);
                    model.Bank = bankCard?.Bank;
                    model.Code = bankCard?.Code;
                }
            }
            var url = await models.ExportExcelToOSS("TaskCheckReceive/Export", "验收记录.xlsx");
            url = AliyunOSSUtils.GetUrl(url);
            return url;
FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
@@ -115,20 +115,49 @@
            {
                request.UserId = logier.Id;
            }
            if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "请选择用户");
            var model = await rep.AsQueryable().AsNoTracking()
                 .Where(it => it.Id == request.UserId)
                 .GetDetail<User, GetUserResumeQueryResult>(cancellationToken);
            model.TaskInfoUsers = model.TaskInfoUsers.Where(it => it.SignContractTime.HasValue).ToList();
            model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking()
                .Where(it => it.EnterpriseEmployee.UserId == model.Id && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass)
                .CountAsync();
            if (logier.Type == EnumUserType.Enterprise)
            EnterpriseEmployee? enterpriseEmployee = null;
            if (logier.Type == EnumUserType.Enterprise && request.UserId == null && request.EnterpriseEmployeeId.HasValue)
            {
                model.IsCollected = await rep.Change<EnterpriseUserCollect>().AsQueryable().AsNoTracking()
                    .Where(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == model.Id)
                    .Select(it => it.IsCollected)
                    .FirstOrDefaultAsync();
                enterpriseEmployee = await rep.Change<EnterpriseEmployee>().AsQueryable().AsNoTracking()
                   .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.EnterpriseEmployeeId)
                   .FirstOrDefaultAsync(cancellationToken);
                if (enterpriseEmployee == null) throw Oops.Oh(EnumErrorCodeType.s404, "该灵工");
                request.UserId = enterpriseEmployee.UserId;
            }
            else if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "请选择用户");
            GetUserResumeQueryResult? model = null;
            if (request.UserId.HasValue)
            {
                model = await rep.AsQueryable().AsNoTracking()
                    .Where(it => it.Id == request.UserId)
                    .GetDetail<User, GetUserResumeQueryResult>(cancellationToken);
            }
            else if (enterpriseEmployee != null)
            {
                model = new GetUserResumeQueryResult
                {
                    Name = enterpriseEmployee.Name,
                    ContactPhoneNumber = enterpriseEmployee.ContactPhoneNumber,
                    Identity = enterpriseEmployee.Identity,
                    Gender = enterpriseEmployee.Gender,
                    Age = enterpriseEmployee.Age,
                };
            }
            if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "该信息");
            model.TaskInfoUsers = model.TaskInfoUsers.Where(it => it.SignContractTime.HasValue).ToList();
            if (model.Id.HasValue)
            {
                model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking()
                    .Where(it => it.EnterpriseEmployee.UserId == model.Id && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass)
                    .CountAsync();
                if (logier.Type == EnumUserType.Enterprise)
                {
                    model.IsCollected = await rep.Change<EnterpriseUserCollect>().AsQueryable().AsNoTracking()
                        .Where(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == model.Id)
                        .Select(it => it.IsCollected)
                        .FirstOrDefaultAsync();
                }
            }
            if (model.CityCode.IsNotNull())
            {