Browse Source

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

wangh 1 year ago
parent
commit
71101cafbb
27 changed files with 1518 additions and 77 deletions
  1. 13 13
      OASystem/OASystem.Api/Controllers/AuthController.cs
  2. 157 0
      OASystem/OASystem.Api/Controllers/GroupsController.cs
  3. 7 2
      OASystem/OASystem.Api/Controllers/SystemController.cs
  4. 5 2
      OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs
  5. 51 0
      OASystem/OASystem.Api/OAMethodLib/JsonConvertOverride.cs
  6. 15 3
      OASystem/OASystem.Api/Program.cs
  7. 10 1
      OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs
  8. 3 0
      OASystem/OASystem.Domain/Dtos/DtoBase.cs
  9. 171 0
      OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs
  10. 35 0
      OASystem/OASystem.Domain/Dtos/Groups/Grp_ScheduleDto.cs
  11. 3 2
      OASystem/OASystem.Domain/Entities/Groups/Grp_DelegationInfo.cs
  12. 10 4
      OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs
  13. 39 0
      OASystem/OASystem.Domain/Enums/EnumHelper.cs
  14. 6 0
      OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs
  15. 222 0
      OASystem/OASystem.Domain/ViewModels/Group/DelegationInfoView.cs
  16. 69 0
      OASystem/OASystem.Domain/ViewModels/Groups/Grp_ScheduleView.cs
  17. 56 0
      OASystem/OASystem.Domain/ViewModels/System/MessageView.cs
  18. 11 0
      OASystem/OASystem.Domain/ViewModels/System/SetDataView.cs
  19. 63 45
      OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs
  20. 18 1
      OASystem/OASystem.Infrastructure/Repositories/BaseRepository.cs
  21. 347 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs
  22. 64 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs
  23. 0 2
      OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs
  24. 38 2
      OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs
  25. 27 0
      OASystem/OASystem.Infrastructure/Repositories/System/SetDataRepository.cs
  26. 40 0
      OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs
  27. 38 0
      OASystem/OASystem.Infrastructure/Tools/CommonFun.cs

+ 13 - 13
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -84,19 +84,19 @@ namespace OASystem.API.Controllers
 
             #region 测试添加系统消息
 
-            //await _message.AddMsg(new MessageDto()
-            //{
-            //    Type = 1,
-            //    IssuerId = 208,
-            //    Title = "测试添加消息标题",
-            //    Content = "消息体测试",
-            //    ReleaseTime = DateTime.Now,
-            //    UIdList = new List<int> {
-            //        5,
-            //        208,
-            //        219
-            //    }
-            //});
+            await _message.AddMsg(new MessageDto()
+            {
+                Type = 1,
+                IssuerId = 208,
+                Title = "测试添加消息标题",
+                Content = "消息体测试",
+                ReleaseTime = DateTime.Now,
+                UIdList = new List<int> {
+                    5,
+                    208,
+                    219
+                }
+            });
             #endregion
 
             return Ok(JsonView(view));

+ 157 - 0
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -0,0 +1,157 @@
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Serialization;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Repositories.Groups;
+
+namespace OASystem.API.Controllers
+{
+    /// <summary>
+    /// 团组相关
+    /// </summary>
+    //[Authorize]
+    [Route("api/[controller]/[action]")]
+    public class GroupsController : ControllerBase
+    {
+        private readonly GrpScheduleRepository _grpScheduleRep;
+        private readonly IMapper _mapper;
+        private readonly DelegationInfoRepository _groupRepository;
+        public GroupsController(IMapper mapper, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository)
+        {
+            _mapper = mapper;
+            _grpScheduleRep = grpScheduleRep;
+            _groupRepository = groupRepository;
+        }
+
+        #region 流程管控
+
+        /// <summary>
+        /// 获取团组流程管控信息
+        /// </summary>
+        /// <param name="paras">参数Json字符串</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostGrpSchedule(string paras)
+        {
+            if (string.IsNullOrEmpty(paras))
+            {
+                return Ok(JsonView(false, "参数为空"));
+            }
+
+            Grp_ScheduleDto _ScheduleDto = JsonConvert.DeserializeObject<Grp_ScheduleDto>(paras);
+            if (_ScheduleDto != null)
+            {
+                if (_ScheduleDto.SearchType == 2)//获取列表
+                {
+
+                }
+                else//获取对象
+                {
+                    Grp_ScheduleView _grpScheduleView = await _grpScheduleRep.GetView_GrpSchedule(_ScheduleDto);
+                    if (_grpScheduleView != null)
+                    {
+                        return Ok(JsonView(0, "获取成功", _grpScheduleView));
+                    }
+                }
+            }
+            else
+            {
+                return Ok(JsonView(false, "参数反序列化失败"));
+            }
+
+            return Ok(JsonView(false, "暂无数据!"));
+        }
+
+        #endregion
+
+        #region 团组基本信息
+
+        /// <summary>
+        ///  接团信息列表
+        /// </summary>
+        /// <param name="dto">团组列表请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GetGroupList(GroupListDto dto)
+        {
+            var groupData = await _groupRepository.GetGroupList(dto);
+            if (groupData.Code != 0)
+            {
+                return Ok(JsonView(false, groupData.Msg));
+            }
+
+            return Ok(JsonView(groupData.Data));
+        }
+
+        /// <summary>
+        ///  接团信息详情
+        /// </summary>
+        /// <param name="dto">团组info请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GetGroupInfo(GroupInfoDto dto)
+        {
+            var groupData = await _groupRepository.GetGroupInfo(dto);
+            if (groupData.Code != 0)
+            {
+                return Ok(JsonView(false, groupData.Msg));
+            }
+
+            return Ok(JsonView(groupData.Data));
+        }
+
+        /// <summary>
+        /// 接团信息 编辑添加
+        /// 基础信息数据源
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GroupEditBasicSource(GroupListDto dto)
+        {
+            var groupData = await _groupRepository.GroupEditBasicSource(dto);
+            if (groupData.Code != 0)
+            {
+                return Ok(JsonView(false, groupData.Msg));
+            }
+
+            return Ok(JsonView(groupData.Data));
+        }
+
+        /// <summary>
+        /// 接团信息 操作(增删改)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GroupOperation(GroupOperationDto dto)
+        {
+            var groupData = await _groupRepository.GroupOperation(dto);
+            if (groupData.Code != 0)
+            {
+                return Ok(JsonView(false, groupData.Msg));
+            }
+
+            return Ok(JsonView(true));
+        }
+
+        /// <summary>
+        /// 获取团组销售报价号
+        /// 团组添加时 使用
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GetGroupSalesQuoteNo()
+        {
+            var groupData = await _groupRepository.GetGroupSalesQuoteNo();
+            if (groupData.Code != 0)
+            {
+                return Ok(JsonView(false, groupData.Msg));
+            }
+
+            return Ok(JsonView(true, groupData.Data));
+        }
+        #endregion
+    }
+}

+ 7 - 2
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -46,6 +46,11 @@ namespace OASystem.API.Controllers
             _UserAuthorityRepository = userAuthorityRepository;
             _jobRep = jobRep;
         }
+        #region 消息
+
+
+
+        #endregion
 
         #region 企业操作
         /// <summary>
@@ -908,13 +913,13 @@ namespace OASystem.API.Controllers
 
                 //获取所有职位员工
                 var jobUserAll = await QueryUserList(new UserDto { PortType = 2, JobPostId = dto.Jpid });
-                List<UserInfo> users = null;
+                List<UserInfoWebView> users = null;
                 var QueryUserListApiResult = (((jobUserAll as OkObjectResult).Value) as OASystem.Domain.ViewModels.JsonView);
                 if (QueryUserListApiResult != null)
                 {
                     if (QueryUserListApiResult.Code == 200)
                     {
-                        users = QueryUserListApiResult.Data as List<UserInfo>;
+                        users = QueryUserListApiResult.Data as List<UserInfoWebView>;
                     }
                 }
 

+ 5 - 2
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -6,11 +6,13 @@ namespace OASystem.API.OAMethodLib
 {
     public static class GeneralMethod
     {
-       
-        #region 消息
 
         
 
+        #region 消息
+
+
+
         #endregion
 
         #region md5 加密
@@ -109,6 +111,7 @@ namespace OASystem.API.OAMethodLib
         private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
         private static long longTime = 621355968000000000;
         private static int samllTime = 10000000;
+        
         /// <summary>
         /// 时间戳 转 datetime
         /// </summary>

+ 51 - 0
OASystem/OASystem.Api/OAMethodLib/JsonConvertOverride.cs

@@ -0,0 +1,51 @@
+using Newtonsoft.Json.Serialization;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace OASystem.API.OAMethodLib
+{
+
+    #region 日期格式转换
+
+    public class DateTimeJsonConverter : System.Text.Json.Serialization.JsonConverter<DateTime>
+    {
+        private readonly string Format;
+        public DateTimeJsonConverter(string format)
+        {
+            Format = format;
+        }
+        public override void Write(Utf8JsonWriter writer, DateTime date, JsonSerializerOptions options)
+        {
+            writer.WriteStringValue(date.ToString(Format));
+        }
+        public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            return DateTime.ParseExact(reader.GetString(), Format, null);
+        }
+    }
+    #endregion
+
+    #region String null值转换(读/写)
+
+
+    public class NullJsonConverter : System.Text.Json.Serialization.JsonConverter<string>
+    {
+        public override bool HandleNull => true;
+
+        public override string Read(
+            ref Utf8JsonReader reader,
+            Type typeToConvert,
+            JsonSerializerOptions options) =>
+            reader.GetString() ?? "";
+
+        public override void Write(
+            Utf8JsonWriter writer,
+            string value,
+            JsonSerializerOptions options) =>
+            writer.WriteStringValue(value ?? "");
+
+    }
+
+    #endregion
+
+}

+ 15 - 3
OASystem/OASystem.Api/Program.cs

@@ -4,6 +4,8 @@ using Autofac.Core;
 using OASystem.API;
 using OASystem.RedisRepository.RedisAsyncHelper;
 using OASystem.RedisRepository.Config;
+using OASystem.API.OAMethodLib;
+using System.Text.Json.Serialization;
 
 var builder = WebApplication.CreateBuilder(args);
 var basePath = AppContext.BaseDirectory;
@@ -17,6 +19,16 @@ builder.Services.AddSingleton(new AppSettingsHelper(_config));
 
 // Add services to the container.
 builder.Services.AddControllersWithViews();
+builder.Services.AddControllers()
+    .AddJsonOptions(options =>
+    {
+        //空字段不响应Response
+        //options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
+
+        options.JsonSerializerOptions.Converters.Add(new NullJsonConverter());
+        //时间格式化响应
+        options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
+    });
 
 #region Cors
 
@@ -44,9 +56,9 @@ builder.Services.AddScoped(options =>
 {
     return new SqlSugarClient(new List<ConnectionConfig>()
     {
-        new ConnectionConfig() { 
-            ConfigId = DBEnum.OA2023DB, 
-            ConnectionString = _config.GetConnectionString("OA2023DB"), 
+        new ConnectionConfig() {
+            ConfigId = DBEnum.OA2023DB,
+            ConnectionString = _config.GetConnectionString("OA2023DB"),
             DbType = DbType.SqlServer, IsAutoCloseConnection = true }
     });
 });

+ 10 - 1
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -1,6 +1,8 @@
-using OASystem.Domain.Dtos.System;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.UserDto;
 using OASystem.Domain.Entities;
+using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.System;
 using OASystem.Domain.ViewModels;
 using OASystem.Domain.ViewModels.System;
@@ -15,6 +17,7 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<LoginDto, Sys_Users>();
             #endregion
 
+            #region Systen
 
             #region 消息
 
@@ -47,6 +50,12 @@ namespace OASystem.Domain.AutoMappers
 
             #endregion
 
+            #endregion
+
+            #region Group
+
+            CreateMap<GroupListDto, Grp_DelegationInfo>();
+            #endregion
         }
     }
 }

+ 3 - 0
OASystem/OASystem.Domain/Dtos/DtoBase.cs

@@ -16,5 +16,8 @@ namespace OASystem.Domain.Dtos
         /// 1 Web 2 Android 3 IOS
         /// </summary>
         public int PortType { get; set; }
+
+        public int PageIndex { get; set; }
+        public int PageSize { get; set; }
     }
 }

+ 171 - 0
OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs

@@ -0,0 +1,171 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    /// <summary>
+    /// 获取团组列表 请求实体类
+    /// </summary>
+    public class GroupListDto:DtoBase
+    {
+    }
+
+    /// <summary>
+    /// 获取团组singe 请求实体类
+    /// </summary>
+    public class GroupInfoDto : DtoBase
+    {
+        /// <summary>
+        /// 团组Id 
+        /// </summary>
+        public int Id { get; set; }
+    }
+
+    /// <summary>
+    /// 团组信息 操作
+    /// 请求dto
+    /// </summary>
+    public class GroupOperationDto : DtoBase
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改 
+        /// 3 删除
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 销售报价号
+        /// </summary>
+        public string SalesQuoteNo { get; set; }
+
+        /// <summary>
+        /// 团组操作人
+        /// </summary>
+        public int JietuanOperator { get; set; }
+
+        /// <summary>
+        /// 客户级别
+        /// setData Id
+        /// </summary>
+        public int TeamLevSId { get; set; }
+
+        /// <summary>
+        /// 团组类型 
+        /// setData Id
+        /// </summary>
+        public int TeamDid { get; set; }
+
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string TeamName { get; set; }
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string ClientName { get; set; }
+
+        /// <summary>
+        /// 客户单位
+        /// </summary>
+        public string ClientUnit { get; set; }
+
+        /// <summary>
+        /// 出访国家
+        /// 多个国家 | 隔开 eg:韩国|日本
+        /// </summary>
+        public string VisitCountry { get; set; }
+
+        /// <summary>
+        /// 出访时间
+        /// </summary>
+        public DateTime VisitDate { get; set; }
+
+        /// <summary>
+        /// 出访天数
+        /// </summary>
+        public int VisitDays { get; set; }
+
+        /// <summary>
+        /// 出访人数
+        /// </summary>
+        public int VisitPNumber { get; set; }
+
+        /// <summary>
+        /// 合同时间
+        /// </summary>
+        public DateTime TontractTime { get; set; }
+
+        /// <summary>
+        /// 预付期限
+        /// </summary>
+        public DateTime PayDay { get; set; }
+
+        /// <summary>
+        /// 支付款项(预付)
+        /// </summary>
+        public decimal PaymentMoney { get; set; }
+
+        /// <summary>
+        /// 出访目的
+        /// </summary>
+        public string VisitPurpose { get; set; }
+
+        /// <summary>
+        /// 特殊需求
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 其他需求
+        /// </summary>
+        public string OtherNeeds { get; set; }
+
+        /// <summary>
+        /// 出国任务审批部门名称
+        /// </summary>
+        public string CGRWSPBMMC { get; set; }
+
+        /// <summary>
+        /// 出国任务审批文号
+        /// </summary>
+        public string CGRWSPWH { get; set; }
+
+        /// <summary>
+        /// 政治审查部门名称
+        /// </summary>
+        public string ZZSCBMMC { get; set; }
+
+        /// <summary>
+        /// 政治审查部门审批文号
+        /// </summary>
+        public string ZZSCSPWH { get; set; }
+
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string TellPhone { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    
+}

+ 35 - 0
OASystem/OASystem.Domain/Dtos/Groups/Grp_ScheduleDto.cs

@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class Grp_ScheduleDto : DtoBase
+    {
+        /// <summary>
+        /// 查询类型(int)
+        /// <list type="table">
+        /// <item>1:对象</item>
+        /// <item>2:列表</item>
+        /// </list>
+        /// </summary>
+        public int SearchType { get; set; }
+
+        #region 对象
+
+        /// <summary>
+        /// 团组流程Id
+        /// </summary>
+        public int ScheduleId { get; set; }
+
+        #endregion
+
+        /// <summary>
+        /// 系统用户Id
+        /// </summary>
+        public int SysUserId { get; set; }
+
+    }
+}

+ 3 - 2
OASystem/OASystem.Domain/Entities/Groups/Grp_DelegationInfo.cs

@@ -145,9 +145,10 @@ namespace OASystem.Domain.Entities.Groups
         public string TellPhone { get; set; }
         /// <summary>
         /// 团组客户级别
+        /// 数据类型外键
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
-        public string TeamLev { get; set; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int TeamLevSId { get; set; }
         /// <summary>
         /// 酒店投诉标识 0-未投诉1-已投诉
         /// </summary>

+ 10 - 4
OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs

@@ -20,16 +20,16 @@ namespace OASystem.Domain.Entities.Groups
         public int DiId { get; set; }
 
         /// <summary>
-        /// 主流程
+        /// 当前主流程
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public GrpSchedulePrimaryStepEnum PrimaryStep { get; set; }
 
         /// <summary>
-        /// 子流程
+        /// 当前子流程
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int DetailStep { get; set; }
+        //[SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        //public int DetailStep { get; set; }
 
         /// <summary>
         /// 预计开始时间
@@ -92,6 +92,12 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int ParentStep { get; set; }
 
+        /// <summary>
+        /// 流程状态(0/1/2 未完成/进行中/已完成)
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int StepStatus { get; set; }
+
         /// <summary>
         /// 负责人员(SysUser.Id)
         /// </summary>

+ 39 - 0
OASystem/OASystem.Domain/Enums/EnumHelper.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Enums
+{
+    public static class EnumHelper
+    {
+        //--extension
+        /// <summary>
+        /// 获取当前枚举描述
+        /// </summary>
+        /// <param name="enumValue"></param>
+        /// <returns></returns>
+        public static string GetEnumDescription(this Enum enumValue)
+        {
+            try
+            {
+                Type type = enumValue.GetType();
+                MemberInfo[] memInfo = type.GetMember(enumValue.ToString());
+                if (null != memInfo && memInfo.Length > 0)
+                {
+                    object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
+                    if (null != attrs && attrs.Length > 0)
+                        return ((DescriptionAttribute)attrs[0]).Description;
+                }
+                return enumValue.ToString();
+            }
+            catch (Exception)
+            {
+                return "";
+            }
+        }
+    }
+}

+ 6 - 0
OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs

@@ -12,6 +12,12 @@ namespace OASystem.Domain.Enums
     /// </summary>
     public enum GrpSchedulePrimaryStepEnum
     {
+        /// <summary>
+        /// 未开始
+        /// </summary>
+        [Description("未开始")]
+        Wait = 0,
+
         /// <summary>
         /// 确认出团
         /// </summary>

+ 222 - 0
OASystem/OASystem.Domain/ViewModels/Group/DelegationInfoView.cs

@@ -0,0 +1,222 @@
+using OASystem.Domain.Dtos;
+using OASystem.Domain.Entities.Groups;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Group
+{
+    /// <summary>
+    /// 接团信息
+    /// 返回视图
+    /// </summary>
+    public class DelegationInfoView : Grp_DelegationInfo { }
+    
+    /// <summary>
+    /// 接团信息详情
+    /// 返回视图
+    /// </summary>
+    public class DelegationInfoWebView
+    {
+        /// <summary>
+        /// 主键Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 销售报价号
+        /// </summary>
+        public string SalesQuoteNo { get; set; }
+
+
+        /// <summary>
+        /// 团组等级
+        /// </summary>
+        public int TeamLevSId { get; set; }
+
+        /// <summary>
+        /// 团组类型
+        /// </summary>
+        public int TeamDid { get; set; }
+
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string TeamName { get; set; }
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string ClientName { get; set; }
+
+        /// <summary>
+        /// 客户所属公司
+        /// </summary>
+        public string ClientUnit { get; set; }
+
+        /// <summary>
+        /// 出访国家
+        /// </summary>
+        public string VisitCountry { get; set; }
+
+        /// <summary>
+        /// 出团日期
+        /// </summary>
+        public DateTime VisitDate { get; set; }
+
+        /// <summary>
+        /// 出行天数
+        /// </summary>
+        public int VisitDays { get; set; }
+
+        /// <summary>
+        /// 出行人数
+        /// </summary>
+        public int VisitPNumber { get; set; }
+
+        /// <summary>
+        /// 合同时间
+        /// </summary>
+        public DateTime TontractTime { get; set; }
+
+        /// <summary>
+        /// 预付日期
+        /// </summary>
+        public DateTime PayDay { get; set; }
+
+        /// <summary>
+        /// 预付金额
+        /// </summary>
+        public decimal PaymentMoney { get; set; }
+
+        /// <summary>
+        /// 出访目的
+        /// </summary>
+        public string VisitPurpose { get; set; }
+
+        /// <summary>
+        /// 特俗需求
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 其他需求
+        /// </summary>
+        public string OtherNeeds { get; set; }
+
+        /// <summary>
+        /// 出国任务审批部门名称
+        /// </summary>
+        public string CGRWSPBMMC { get; set; }
+        /// <summary>
+        /// 出国任务审批文号
+        /// </summary>
+        public string CGRWSPWH { get; set; }
+        /// <summary>
+        /// 政治审查部门名称
+        /// </summary>
+        public string ZZSCBMMC { get; set; }
+        /// <summary>
+        /// 政治审查部门审批文号
+        /// </summary>
+        public string ZZSCSPWH { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string TellPhone { get; set; }
+    }
+
+    // <summary>
+    /// 接团信息列表
+    /// 返回视图
+    /// </summary>
+    public class DelegationListView 
+    {
+        /// <summary>
+        /// 主键Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 销售报价号
+        /// </summary>
+        public string SalesQuoteNo { get; set; }
+
+        /// <summary>
+        /// 接团操作人
+        /// </summary>
+        public string JietuanOperator { get; set; }
+
+        /// <summary>
+        /// 团组等级 
+        /// </summary>
+        public string TeamLev { get; set; }
+
+        /// <summary>
+        /// 团组类型
+        /// </summary>
+        public string TeamType { get; set; }
+
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string TeamName { get; set; }
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string ClientName { get; set; }
+
+        /// <summary>
+        /// 客户所属公司
+        /// </summary>
+        public string ClientUnit { get; set; }
+
+        /// <summary>
+        /// 出团日期
+        /// </summary>
+        public DateTime VisitDate { get; set; }
+
+        /// <summary>
+        /// 出行天数
+        /// </summary>
+        public int VisitDays { get; set; }
+
+        /// <summary>
+        /// 出行人数
+        /// </summary>
+        public int VisitPNumber { get; set; }
+
+
+        /// <summary>
+        /// 是否操作完成 
+        /// 0否1是
+        /// </summary>
+        public int IsSure { get; set; }
+    }
+
+
+    /// <summary>
+    /// 团组编号
+    /// </summary>
+    public class TeamCodeView 
+    {
+        public string TourCode { get; set; }
+    }
+
+    /// <summary>
+    /// 销售编号
+    /// </summary>
+    public class SalesQuoteNoView
+    {
+        public string SalesQuoteNo { get; set; }
+    }
+}

+ 69 - 0
OASystem/OASystem.Domain/ViewModels/Groups/Grp_ScheduleView.cs

@@ -0,0 +1,69 @@
+using Newtonsoft.Json;
+using OASystem.Domain.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    public class Grp_ScheduleView
+    {
+        /// <summary>
+        /// 流程管控Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string DeleName { get; set; }
+
+        /// <summary>
+        /// 主流程(枚举)
+        /// </summary>
+        public GrpSchedulePrimaryStepEnum PrimaryStep { get; set; }
+
+        /// <summary>
+        /// 主流程中文描述
+        /// </summary>
+        public string PrimaryStep_Text
+        {
+            get
+            {
+                return EnumHelper.GetEnumDescription(PrimaryStep);
+            }
+        }
+
+        /// <summary>
+        /// 预计开始时间
+        /// </summary>
+        public DateTime ExpectBeginDt { get; set; }
+
+        /// <summary>
+        /// 预计结束时间
+        /// </summary>
+        public DateTime ExpectEndDt { get; set; }
+
+        /// <summary>
+        /// 总负责人Id
+        /// </summary>
+        public int Leader { get; set; }
+
+        /// <summary>
+        /// 总负责人
+        /// </summary>
+        public string LeaderName { get; set; }
+
+        /// <summary>
+        /// 异常状态0:正常 1:异常
+        /// </summary>
+        public int Exception { get; set; }
+    }
+}

+ 56 - 0
OASystem/OASystem.Domain/ViewModels/System/MessageView.cs

@@ -11,4 +11,60 @@ namespace OASystem.Domain.ViewModels.System
     {
     }
 
+    /// <summary>
+    /// 可于都消息返回视图
+    /// </summary>
+    public class ReadbleMessageView
+    {
+        /// <summary>
+        /// 消息类型
+        /// 1 系统消息
+        /// 2 团组消息
+        /// 3 个人消息
+        /// </summary>
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 消息标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 消息内容
+        /// </summary>
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 发布部门
+        /// </summary>
+        public string IssuerDep { get; set; }
+
+        /// <summary>
+        /// 发布者
+        /// </summary>
+        public string IssuerUser { get; set; }
+
+        /// <summary>
+        /// 发布时间
+        /// </summary>
+        public DateTime ReleaseTime { get; set; }
+
+        /// <summary>
+        /// 可阅读员工Id
+        /// </summary>
+        public int ReadableUId { get; set; }
+
+        /// <summary>
+        /// 是否阅读
+        /// 0 未阅读
+        /// 1 已阅读
+        /// </summary>
+        public int IsRead { get; set; }
+
+        /// <summary>
+        /// 阅读时间
+        /// </summary>
+        public DateTime? ReadTime { get; set; }
+    }
+
 }

+ 11 - 0
OASystem/OASystem.Domain/ViewModels/System/SetDataView.cs

@@ -17,6 +17,17 @@ namespace OASystem.Domain.ViewModels.System
         /// setdatatype id
         /// </summary>
         public int STid { get; set; }
+    }
 
+    /// <summary>
+    /// 数据data
+    /// </summary>
+    public class SetDataInfoView
+    {
+        public int Id { get; set; }
+        /// <summary>
+        /// 分类名称
+        /// </summary>
+        public string Name { get; set; }
     }
 }

+ 63 - 45
OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs

@@ -129,51 +129,69 @@ namespace OASystem.Domain.ViewModels.System
         /// </summary>
         public int DepId { get; set; }
 
+    }
+    /// <summary>
+    /// 用户信息 - 个人基本信息
+    /// </summary>
+    public class UserBasicInfoView
+    {
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 岗位Id
+        /// </summary>
+        public int JobPostId { get; set; }
+        /// <summary>
+        /// 性别
+        /// 0 男1 女  2 未设置
+        /// </summary>
+
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 工号
+        /// </summary>
+        public string Number { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string CompanyName { get; set; }
+
+        /// <summary>
+        /// 部门名称
+        /// </summary>
+        public string DepName { get; set; }
+
+        /// <summary>
+        /// 岗位名称
+        /// </summary>
+        public string JobName { get; set; }
+
         /// <summary>
-        /// 用户信息 - 个人基本信息
-        /// </summary>
-        public class UserBasicInfoView
-        {
-            /// <summary>
-            /// 用户Id
-            /// </summary>
-            public string Id { get; set; }
-
-            /// <summary>
-            /// 岗位Id
-            /// </summary>
-            public int JobPostId { get; set; }
-            /// <summary>
-            /// 性别
-            /// 0 男1 女  2 未设置
-            /// </summary>
-
-            public int Sex { get; set; }
-
-            /// <summary>
-            /// 工号
-            /// </summary>
-            public string Number { get; set; }
-
-            /// <summary>
-            /// 公司名称
-            /// </summary>
-            public string CompanyName { get; set; }
-
-            /// <summary>
-            /// 部门名称
-            /// </summary>
-            public string DepName { get; set; }
-
-            /// <summary>
-            /// 岗位名称
-            /// </summary>
-            public string JobName { get; set; }
-
-            /// <summary>
-            /// 邮箱
-            /// </summary>
-            public string Email { get; set; }
-        }
+        /// 邮箱
+        /// </summary>
+        public string Email { get; set; }
+    }
+
+
+
+    /// <summary>
+    /// 查询用户名称
+    /// </summary>
+    public class UserNameView
+    {
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 用户中文名称
+        /// </summary>
+        public string CnName { get; set; }
     }
 }

+ 18 - 1
OASystem/OASystem.Infrastructure/Repositories/BaseRepository.cs

@@ -82,7 +82,7 @@ namespace OASystem.Infrastructure.Repositories
         #region Extension
 
         /// <summary>
-        /// Sql语句 无锁
+        ///  获取单个对象  异步
         /// </summary>
         /// <param name="sql"></param>
         /// <returns></returns>
@@ -90,15 +90,32 @@ namespace OASystem.Infrastructure.Repositories
         {
             return await _sqlSugar.SqlQueryable<TEntity>(sql).FirstAsync();
         }
+
+        /// <summary>
+        /// 获取单个对象 
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <returns></returns>
         public virtual TEntity GetSingleInfoBySqlWithNolock(string sql)
         {
             return _sqlSugar.SqlQueryable<TEntity>(sql).First();
         }
 
+        /// <summary>
+        /// 获取集合 异步
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <returns></returns>
         public virtual async Task<List<TEntity>> GetListBySqlWithNolockAsync(string sql)
         {
             return await _sqlSugar.SqlQueryable<TEntity>(sql).ToListAsync();
         }
+
+        /// <summary>
+        /// 获取集合 
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <returns></returns>
         public virtual List<TEntity> GetListBySqlWithNolock(string sql)
         {
             return _sqlSugar.SqlQueryable<TEntity>(sql).ToList();

+ 347 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -0,0 +1,347 @@
+using OASystem.Domain;
+using OASystem.Domain.Dtos;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Dtos.UserDto;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Group;
+using OASystem.Infrastructure.Repositories.System;
+using Org.BouncyCastle.Utilities.Collections;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    /// <summary>
+    /// 接团信息
+    /// </summary>
+    public class DelegationInfoRepository : BaseRepository<Grp_DelegationInfo, DelegationInfoView>
+    {
+        private readonly SetDataRepository _setDataRepository;
+        private readonly UsersRepository _usersRepository;
+
+        public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository)
+            : base(sqlSugar)
+        {
+            this._setDataRepository = setDataRepository;
+            this._usersRepository = usersRepository;
+        }
+
+        /// <summary>
+        /// 获取接团信息List
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> GetGroupList(GroupListDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (dto.PortType == 1) //web
+            {
+                string sql = string.Format(@"Select gdi.Id,SalesQuoteNo,TourCode,ssd.Name TeamType,ssd1.Name TeamLev,TeamName,ClientName,
+                                                    ClientUnit,VisitDate,VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure
+                                             From  Grp_DelegationInfo gdi
+                                             Inner Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
+                                             Inner Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
+                                             Left Join Sys_Users su On gdi.JietuanOperator = su.Id
+                                             Where gdi.IsDel = 0 
+                                             Order By VisitDate Desc");
+
+                var _DelegationList = await _sqlSugar.SqlQueryable<DelegationListView>(sql).ToListAsync();
+                if (_DelegationList.Count > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _DelegationList;
+                }
+                else
+                {
+                    result.Msg = "暂无该团组信息";
+                }
+            }
+
+
+            return result;
+
+        }
+
+        /// <summary>
+        /// 获取接团信息Info
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> GetGroupInfo(GroupInfoDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (dto.PortType == 1) //web
+            {
+                string sql = string.Format(@"Select Id,SalesQuoteNo,JietuanOperator,TeamLevSId,TeamDid,TeamName,ClientName,
+	                                                ClientUnit,VisitCountry,VisitDate,VisitDays,VisitPNumber,TontractTime,
+	                                                PayDay,PaymentMoney,VisitPurpose,SpecialNeeds,OtherNeeds,CGRWSPBMMC,CGRWSPWH,
+	                                                ZZSCBMMC,ZZSCSPWH,Remark,TellPhone
+                                             From Grp_DelegationInfo Where Id = {0} And IsDel = 0", dto.Id);
+
+                var _DelegationInfo = await _sqlSugar.SqlQueryable<DelegationInfoWebView>(sql).FirstAsync();
+                if (_DelegationInfo != null)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _DelegationInfo;
+                }
+                else
+                {
+                    result.Msg = "暂无该团组信息";
+                }
+            }
+
+            return result;
+
+        }
+
+        /// <summary>
+        /// 获取接团信息 编辑 
+        /// 基础 数据源
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> GroupEditBasicSource(GroupListDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (dto.PortType == 1) //web
+            {
+                dynamic? teamTypeData1 = null;
+                string teamTypeSql = string.Format(@"Select Id,Name From  Sys_SetData Where STid = {0} And IsDel = {1}", 10, 0);
+                var teamTypeData = await _sqlSugar.SqlQueryable<SetDataInfoView>(teamTypeSql).ToListAsync(); ;  //团组分类 10
+                if (teamTypeData.Count > 0)
+                {
+                    teamTypeData1 = teamTypeData;
+                }
+
+                dynamic? teamLevData1 = null;
+                string teamLevSql = string.Format(@"Select Id,Name From  Sys_SetData Where STid = {0} And IsDel = {1}", 56, 0);
+                var teamLevData = await _sqlSugar.SqlQueryable<SetDataInfoView>(teamLevSql).ToListAsync(); ;  //团组等级 56
+                if (teamLevData.Count > 0)
+                {
+                    teamLevData1 = teamLevData;
+                }
+
+                dynamic? userData1 = null;
+                string userSql = string.Format(@"Select Id,CnName From  Sys_Users Where IsDel = {0}", 0);
+                var userData = await _sqlSugar.SqlQueryable<UserNameView>(userSql).ToListAsync(); ;
+                if (userData.Count > 0)
+                {
+                    userData1 = userData;
+                }
+
+                result.Code = 0;
+                result.Msg = "成功!";
+                result.Data = new
+                {
+                    teamTypeData = teamTypeData1,
+                    teamLevData = teamLevData1,
+                    userData = userData1
+                };
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 团组信息操作
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> GroupOperation(GroupOperationDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (dto.PortType == 1) //web
+            {
+                Grp_DelegationInfo groupInfo = new Grp_DelegationInfo()
+                {
+                    SalesQuoteNo = dto.SalesQuoteNo,
+                    TeamLevSId = dto.TeamLevSId,
+                    ClientName = dto.ClientName,
+                    ClientUnit = dto.ClientUnit,
+                    TeamName = dto.TeamName,
+                    TeamDid = dto.TeamDid,
+                    VisitDate = dto.VisitDate,
+                    VisitCountry = dto.VisitCountry,
+                    VisitPurpose = dto.VisitPurpose,
+                    VisitDays = dto.VisitDays,
+                    VisitPNumber = dto.VisitPNumber,
+                    SpecialNeeds = dto.SpecialNeeds,
+                    OtherNeeds = dto.OtherNeeds,
+                    Remark = dto.Remark,
+                    JietuanOperator = dto.UserId,
+                    TellPhone = dto.TellPhone,
+                    CGRWSPBMMC = dto.CGRWSPBMMC,
+                    CGRWSPWH = dto.CGRWSPWH,
+                    ZZSCBMMC = dto.ZZSCBMMC,
+                    ZZSCSPWH = dto.ZZSCSPWH,
+                    TontractTime = dto.TontractTime,
+                    PaymentMoney = dto.PaymentMoney,
+                    PayDay = dto.PayDay
+                };
+
+
+                if (dto.Status == 1) //添加
+                {
+                    string selectSql = string.Format(@"Select * From Grp_DelegationInfo 
+                                                   Where IsDel = 0 
+                                                   And SalesQuoteNo = '{0}'
+                                                   And TeamName = '{1}'
+                                                   And ClientName = '{2}'
+                                                   And ClientUnit ='{3}'
+                                                   And VisitDate ='{4}'", dto.SalesQuoteNo, dto.TeamName, dto.ClientName, dto.ClientUnit, dto.VisitDate);
+                    var selectGroupInfo = await _sqlSugar.SqlQueryable<Grp_DelegationInfo>(selectSql).FirstAsync();
+                    if (selectGroupInfo != null)
+                    {
+                        result.Msg = "数据已存在,请勿重复添加!";
+                        return result;
+                    }
+
+                    string teamCodeSql = string.Format("Select TourCode From Grp_DelegationInfo");
+                    var teamCodeItem = await _sqlSugar.SqlQueryable<TeamCodeView>(teamCodeSql).ToListAsync();
+
+                    string teamCode = "";
+                    while (true)
+                    {
+                        teamCode = Tools.CommonFun.GetRandomAllStr(6);
+
+                        if (!teamCodeItem.Equals(teamCode))
+                        {
+                            break;
+                        }
+                    }
+
+                    groupInfo.TourCode = teamCode;
+                    groupInfo.SalesDate = DateTime.Now;
+                    groupInfo.IsState = 0; //默认团组未完成 0
+                    groupInfo.JietuanTime = DateTime.Now;
+                    groupInfo.IsDel = 0;
+                    groupInfo.BudgetCost = 0.00M;
+                    groupInfo.HotelComplain = 0;
+                    groupInfo.OPComplain = 0;
+                    groupInfo.OAComplain = 0;
+                    groupInfo.AirComplain = 0;
+                    groupInfo.VisaComplain = 0;
+                    groupInfo.CreateUserId = dto.UserId;
+                    groupInfo.CreateTime = DateTime.Now;
+                    groupInfo.DeleteUserId = null;
+                    groupInfo.DeleteTime = new DateTime(1990, 1, 1).ToString("yyyy-MM-dd HH:mm:ss");
+
+                    var addId = await _sqlSugar.Insertable(groupInfo).ExecuteReturnIdentityAsync();
+                    if (addId > 0)
+                    {
+                        result.Code = 0;
+                        result.Msg = "添加成功!";
+                    }
+                    else
+                    {
+                        result.Msg = "添加失败!";
+                    }
+
+
+                }  //增加
+                else if (dto.Status == 2)     //修改
+                {
+                    var updateStatus = await UpdateAsync(a => a.Id == dto.Id, a => groupInfo);
+
+                    if (updateStatus)
+                    {
+                        result.Code = 0;
+                        result.Msg = "修改成功!";
+                    }
+                    else
+                    {
+                        result.Msg = "修改失败!";
+                    }
+                }
+                else if (dto.Status == 3)  //删除
+                {
+                    var deleteStatus = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_DelegationInfo { 
+                        DeleteUserId = dto.UserId,
+                        DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                        IsDel = 1
+                    });
+
+                    if (deleteStatus)
+                    {
+                        result.Code = 0;
+                        result.Msg = "删除成功!";
+                    }
+                    else
+                    {
+                        result.Msg = "删除失败!";
+                    }
+                }
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 获取销售报价号
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> GetGroupSalesQuoteNo()
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            string teamCodeSql = string.Format("Select TourCode From Grp_DelegationInfo");
+            var teamCodeItem = await _sqlSugar.SqlQueryable<TeamCodeView>(teamCodeSql).ToListAsync();
+
+            string teamCode = "";
+            while (true)
+            {
+                teamCode = Tools.CommonFun.GetRandomAllStr(6);
+
+                if (!teamCodeItem.Equals(teamCode))
+                {
+                    break;
+                }
+            }
+
+            result.Code = 0;
+            result.Msg = "成功!";
+            result.Data = teamCode;
+            return result;
+        }
+
+        /// <summary>
+        /// 团组删除
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> GroupDeleteById()
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            string teamCodeSql = string.Format("Select TourCode From Grp_DelegationInfo");
+            var teamCodeItem = await _sqlSugar.SqlQueryable<TeamCodeView>(teamCodeSql).ToListAsync();
+
+            string teamCode = "";
+            while (true)
+            {
+                teamCode = Tools.CommonFun.GetRandomAllStr(6);
+
+                if (!teamCodeItem.Equals(teamCode))
+                {
+                    break;
+                }
+            }
+
+            result.Code = 0;
+            result.Msg = "成功!";
+            result.Data = teamCode;
+            return result;
+        }
+
+
+    }
+}

+ 64 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs

@@ -0,0 +1,64 @@
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Groups;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    public class GrpScheduleRepository : BaseRepository<Grp_ScheduleInfo, Grp_ScheduleInfo>
+    {
+        public GrpScheduleRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
+        {
+        }
+
+        public string SetSqlWhere_GrpScheduleDto(Grp_ScheduleDto _dto)
+        {
+            string sqlWhere = string.Empty;
+
+            if (_dto.SysUserId > 0)
+            {
+                sqlWhere += string.Format(@" And s.Id in ( Select Id From Grp_SchedulePerson With(Nolock) Where SysUserId = '{0}' ) ", _dto.SysUserId);
+            }
+
+            if (_dto.ScheduleId > 0)
+            {
+                sqlWhere += string.Format(@" And s.Id = '{0}' ", _dto.ScheduleId);
+            }
+
+            if (!string.IsNullOrEmpty(sqlWhere.Trim()))
+            {
+                Regex r = new Regex("And");
+                sqlWhere = r.Replace(sqlWhere, "Where", 1);
+            }
+
+            return sqlWhere;
+        }
+
+        /// <summary>
+        /// 获取团组流程数据单个对象
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="_dto"></param>
+        /// <returns></returns>
+        public async Task<Grp_ScheduleView> GetView_GrpSchedule(Grp_ScheduleDto _dto)
+        {
+            Grp_ScheduleView _view = null;
+
+            string sqlWhere = this.SetSqlWhere_GrpScheduleDto(_dto);
+            string sql = string.Format(@" Select s.Id,s.DiId,di.TeamName as DeleName,s.PrimaryStep,s.ExpectBeginDt,s.ExpectEndDt,s.Leader,s.Exception,u.CnName as LeaderName
+            From Grp_Schedule as s With(Nolock) Inner Join Grp_DelegationInfo as di With(Nolock) On s.DiId=di.Id
+            Inner Join Sys_Users as u With(Nolock) On s.Leader=u.Id
+            {0} ", sqlWhere);
+
+            _view = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).FirstAsync();
+
+            return _view;
+        }
+
+
+    }
+}

+ 0 - 2
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -67,8 +67,6 @@ namespace OASystem.Infrastructure.Repositories.Login
                                                   Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
             var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
 
-
-
             result.Code = 0;
             result.Msg = "登录成功!";
             result.Data = _userBasicInfo;

+ 38 - 2
OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs

@@ -1,4 +1,5 @@
-using OASystem.Domain.Dtos.System;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.System;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -11,7 +12,6 @@ namespace OASystem.Infrastructure.Repositories.System
     {
         public MessageRepository(SqlSugarClient sqlSugar) : base(sqlSugar) { }
 
-
         /// <summary>
         /// 发布消息
         /// </summary>
@@ -84,5 +84,41 @@ namespace OASystem.Infrastructure.Repositories.System
             return true;
         }
 
+        /// <summary>
+        /// 获取消息 List
+        /// </summary>
+        /// <param name="uId">可读用户Id</param>
+        /// <returns></returns>
+        public async Task<Result> GetMsgList(int uId)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            string msgSqlWhere = string.Format(@"Select sm.Type,sm.Title,sm.Content,sd.DepName issuerDep,su.CnName issuerUser, 
+                                                        sm.ReleaseTime,smra.Id AuthId,smra.ReadableUId,smra.IsRead,smra.ReadTime 
+                                                 From Sys_Message sm 
+                                                 Inner Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
+                                                 Inner Join Sys_Users su On sm.IssuerId = su.Id
+                                                 Inner Join Sys_Department sd On su.DepId = sd.Id
+                                                 Inner Join Sys_Users suAuth On smra.ReadableUId = suAuth.Id
+                                                 Where sm.IsDel = 0
+                                                 And smra.IsDel = 0 
+                                                 And smra.ReadableUId = {0}
+                                                 Order By ReleaseTime Desc ", uId);
+            var _readableMsgList = await _sqlSugar.SqlQueryable<ReadbleMessageView>(msgSqlWhere).ToListAsync();
+            if (_readableMsgList.Count > 0)
+            {
+                result.Code = 0;
+                result.Msg = "成功!";
+                result.Data = _readableMsgList;
+            }
+            else
+            {
+                result.Msg = "暂无该用户的消息!";
+            }
+
+            return result;
+        }
+        
+
     }
 }

+ 27 - 0
OASystem/OASystem.Infrastructure/Repositories/System/SetDataRepository.cs

@@ -42,6 +42,33 @@ namespace OASystem.Infrastructure.Repositories.System
             return result;
         }
 
+        /// <summary>
+        /// 获取类型Data By STId
+        /// </summary>
+        /// <param name="_SetData"></param>
+        /// <returns></returns>
+        public async Task<Result> GetSetDataBySTId(SetDataRepository _SetData,int stId)
+        {
+            Result result = new Result();
+            string sql = string.Format(@"select * from Sys_SetData where STid = {0} and isdel = 0",stId);
+            var DBdata = await _SetData.GetListBySqlWithNolockAsync(sql);
+
+            if (DBdata == null || DBdata.Count == 0)
+            {
+                return result;
+            }
+
+            result.Data = DBdata.Select(x => new SetDataInfoView
+            {
+                Name = x.Name,
+                Id = x.Id,
+            });
+
+            result.Code = 0;
+            result.Msg = "成功!";
+
+            return result;
+        }
 
     }
 }

+ 40 - 0
OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

@@ -102,5 +102,45 @@ namespace OASystem.Infrastructure.Repositories.System
             
             return result;
         }
+
+        /// <summary>
+        /// 用户查询列表
+        /// </summary>
+        /// <param name="_userRep"></param>
+        /// <returns></returns>
+        public async Task<Result> GetUserNameList(int portType)
+        {
+            Result result = new Result() { Code = -2 };
+
+            if (portType == 1) //web
+            {
+                string sql = string.Format(@"Select Id,CnName From  Sys_Users");
+                var _userList = await _sqlSugar.SqlQueryable<UserNameView>(sql).ToListAsync();
+
+                if (_userList.Count != 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _userList;
+                }
+                else
+                {
+                    result.Msg = "暂无数据!";
+                }
+            }
+            else if (portType == 2) //Android
+            {
+              
+            }
+            else if (portType == 3) //IOS
+            {
+            }
+            else
+            {
+                result.Msg = "暂无数据!";
+            }
+
+            return result;
+        }
     }
 }

+ 38 - 0
OASystem/OASystem.Infrastructure/Tools/CommonFun.cs

@@ -158,4 +158,42 @@ public static class CommonFun
         return ip;
     }
     #endregion
+
+    #region 随机数
+
+    /// <summary>
+    /// 根据自定义随机包含的字符获取指定长度的随机字符
+    /// </summary>
+    /// <param name="length">随机字符长度</param>
+    /// <returns>随机字符</returns>
+    public static string GetRandomStr(int length)
+    {
+        string a = "ABCDEFGHJKLMNPQRSTUVWXYZ012356789";
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < length; i++)
+        {
+            sb.Append(a[new Random(Guid.NewGuid().GetHashCode()).Next(0, a.Length - 1)]);
+        }
+
+        return sb.ToString();
+    }
+
+    /// <summary>
+    /// 根据自定义随机包含的字符获取指定长度的随机字符
+    /// </summary>
+    /// <param name="length">随机字符长度</param>
+    /// <returns>随机字符</returns>
+    public static string GetRandomAllStr(int length)
+    {
+        string a = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjklmnpqrstuvwxyz012356789";
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < length; i++)
+        {
+            sb.Append(a[new Random(Guid.NewGuid().GetHashCode()).Next(0, a.Length - 1)]);
+        }
+
+        return sb.ToString();
+    }
+
+    #endregion
 }