Kaynağa Gözat

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

yuanrf 2 yıl önce
ebeveyn
işleme
830c49d56a
39 değiştirilmiş dosya ile 1562 ekleme ve 257 silme
  1. 1 0
      OASystem/EntitySync/Program.cs
  2. 25 18
      OASystem/OASystem.Api/Controllers/AuthController.cs
  3. 61 9
      OASystem/OASystem.Api/Controllers/GroupsController.cs
  4. 192 0
      OASystem/OASystem.Api/Controllers/ResourceController.cs
  5. 112 4
      OASystem/OASystem.Api/Controllers/SystemController.cs
  6. 4 0
      OASystem/OASystem.Api/GlobalUsings.cs
  7. 55 0
      OASystem/OASystem.Api/OAMethodLib/AutofacIocManager.cs
  8. 27 0
      OASystem/OASystem.Api/OAMethodLib/AutofacRegister.cs
  9. 0 93
      OASystem/OASystem.Api/OAMethodLib/BaseConfig.cs
  10. 76 0
      OASystem/OASystem.Api/OAMethodLib/GroupStepForDelegation.cs
  11. 24 0
      OASystem/OASystem.Api/OAMethodLib/JsonConvertOverride.cs
  12. 6 3
      OASystem/OASystem.Api/Program.cs
  13. 7 2
      OASystem/OASystem.Api/appsettings.json
  14. 10 0
      OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs
  15. 57 0
      OASystem/OASystem.Domain/Common/DepartmentCode.cs
  16. 1 1
      OASystem/OASystem.Domain/Dtos/DtoBase.cs
  17. 21 5
      OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs
  18. 36 0
      OASystem/OASystem.Domain/Dtos/Groups/GroupsConfig.cs
  19. 311 0
      OASystem/OASystem.Domain/Dtos/Resource/CarDataDto.cs
  20. 61 0
      OASystem/OASystem.Domain/Dtos/System/MsgDto.cs
  21. 19 0
      OASystem/OASystem.Domain/Dtos/System/SetDataDto.cs
  22. 1 1
      OASystem/OASystem.Domain/Dtos/UserDto/LoginDto.cs
  23. 48 37
      OASystem/OASystem.Domain/Entities/Customer/Crm_DeleClient.cs
  24. 2 2
      OASystem/OASystem.Domain/Entities/Groups/Grp_DelegationInfo.cs
  25. 6 0
      OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs
  26. 13 4
      OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs
  27. 1 1
      OASystem/OASystem.Domain/Result.cs
  28. 15 4
      OASystem/OASystem.Domain/ViewModels/Group/DelegationInfoView.cs
  29. 5 0
      OASystem/OASystem.Domain/ViewModels/LoginView.cs
  30. 13 0
      OASystem/OASystem.Domain/ViewModels/Resource/CarDataView.cs
  31. 54 0
      OASystem/OASystem.Domain/ViewModels/System/MessageView.cs
  32. 5 5
      OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs
  33. 11 0
      OASystem/OASystem.Infrastructure/Repositories/BaseRepository.cs
  34. 104 35
      OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs
  35. 19 9
      OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs
  36. 17 2
      OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs
  37. 12 0
      OASystem/OASystem.Infrastructure/Repositories/Resource/CarDataRepository.cs
  38. 129 21
      OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs
  39. 1 1
      OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

+ 1 - 0
OASystem/EntitySync/Program.cs

@@ -80,5 +80,6 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
 
     //typeof(Sys_Message),
     //typeof(Sys_MessageReadAuth)
+    typeof(Crm_DeleClient)
 });
 Console.WriteLine("数据库结构同步完成!");

+ 25 - 18
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -6,6 +6,7 @@ using OASystem.Domain.Dtos.UserDto;
 using OASystem.API.OAMethodLib;
 using Serilog.Parsing;
 using OASystem.Domain.Dtos.System;
+using System.Drawing.Drawing2D;
 
 namespace OASystem.API.Controllers
 {
@@ -19,6 +20,7 @@ namespace OASystem.API.Controllers
         private readonly IConfiguration _config;
         private readonly LoginRepository _loginRep;
         private readonly MessageRepository _message; 
+
         public AuthController(IConfiguration config, LoginRepository loginRep, IMapper mapper,MessageRepository message)
         {
             _config = config;
@@ -38,22 +40,27 @@ namespace OASystem.API.Controllers
         public async Task<IActionResult> LoginAsync(LoginDto dto)
         {
             #region 校验用户信息 
-            var userData = _loginRep.Login(dto);
-            if (userData.Result.Code != 0)
+            var userData = _loginRep.Login(dto).Result;
+            if (userData.Code != 0)
             {
-                if (userData.Result.Code != 0) { return Ok(JsonView(false, userData.Result.Msg)); }
+                if (userData.Code != 0) { return Ok(JsonView(false, userData.Msg)); }
 
                 return Ok(JsonView(false, "暂无该员工信息!"));
             }
 
             #endregion
+
+
+            dynamic authData = null;
+
             var view = new LoginView
             {
-                UserInfo = userData.Result.Data
+                UserInfo = userData.Data,
+                AuthData = authData,
             };
 
 
-            DateTime createZebraTime = DateTime.UtcNow;
+            DateTime createZebraTime = DateTime.Now;
             string authorId = dto.Number + "Token";
             string authorToken = await RedisRepository.RedisFactory.CreateRedisRepository().StringGetAsync<string>(authorId);//string 取
             if (authorToken !=  null)
@@ -84,19 +91,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));

+ 61 - 9
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -1,5 +1,6 @@
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json.Serialization;
+using OASystem.API.OAMethodLibs;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
@@ -16,6 +17,7 @@ namespace OASystem.API.Controllers
         private readonly GrpScheduleRepository _grpScheduleRep;
         private readonly IMapper _mapper;
         private readonly DelegationInfoRepository _groupRepository;
+
         public GroupsController(IMapper mapper, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository)
         {
             _mapper = mapper;
@@ -44,14 +46,15 @@ namespace OASystem.API.Controllers
             {
                 if (_ScheduleDto.SearchType == 2)//获取列表
                 {
-
+                    List<Grp_ScheduleView> _grpScheduleViewList = await _grpScheduleRep.GetViewList_GrpSchedule(_ScheduleDto);
+                    return Ok(JsonView(_grpScheduleViewList));
                 }
                 else//获取对象
                 {
                     Grp_ScheduleView _grpScheduleView = await _grpScheduleRep.GetView_GrpSchedule(_ScheduleDto);
                     if (_grpScheduleView != null)
                     {
-                        return Ok(JsonView(0, "获取成功", _grpScheduleView));
+                        return Ok(JsonView(_grpScheduleView));
                     }
                 }
             }
@@ -63,6 +66,13 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(false, "暂无数据!"));
         }
 
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public void testGrpSchedule()
+        {
+            GroupStepForDelegation.CreateWorkStep(1228);
+        }
+
         #endregion
 
         #region 团组基本信息
@@ -110,30 +120,68 @@ namespace OASystem.API.Controllers
         [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)
+            try
             {
-                return Ok(JsonView(false, groupData.Msg));
+                var groupData = await _groupRepository.GroupOperation(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+
+                Logs("[response]" +  JsonConvert.SerializeObject( dto));
+                Logs(ex.Message);
+                return Ok(JsonView(false, ex.Message));
             }
+        }
 
-            return Ok(JsonView(true));
+        /// <summary>
+        /// 接团信息 操作(删除)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GroupDel(GroupDelDto dto)
+        {
+            try
+            {
+                var groupData = await _groupRepository.GroupDel(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+
+                Logs("[response]" + JsonConvert.SerializeObject(dto));
+                Logs(ex.Message);
+                return Ok(JsonView(false, ex.Message));
+            }
         }
 
         /// <summary>
@@ -149,8 +197,12 @@ namespace OASystem.API.Controllers
             {
                 return Ok(JsonView(false, groupData.Msg));
             }
+            object salesQuoteNo = new
+            {
+                SalesQuoteNo = groupData.Data
+            };
 
-            return Ok(JsonView(true, groupData.Data));
+            return Ok(JsonView(salesQuoteNo));
         }
         #endregion
     }

+ 192 - 0
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -0,0 +1,192 @@
+
+
+namespace OASystem.API.Controllers
+{
+    /// <summary>
+    /// 资料相关
+    /// </summary>
+    //[Authorize]
+    [Route("api/[controller]/[action]")]
+    public class ResourceController : ControllerBase
+    {
+        private readonly IMapper _mapper;
+        private readonly IConfiguration _config;
+        private readonly CarDataRepository _carDataRep;
+       
+        public ResourceController(IMapper mapper, IConfiguration config,CarDataRepository carDataRep)
+        {
+            _mapper = mapper;
+            _config = config;
+            _carDataRep = carDataRep;
+        }
+        #region 车公司资料板块
+
+        /// <summary>
+        /// 车公司信息查询
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QuerCarData(DtoBase dto)
+        {
+            try
+            {
+                if (dto.PortType==1)
+                {
+                    var carDada = _carDataRep.QueryDto<Res_CarData, CarDataView>().ToList();
+                    if (carDada.Count == 0)
+                    {
+                        return Ok(JsonView(false, "暂无数据!"));
+                    }
+                    carDada = carDada.OrderByDescending(s => s.CreateTime).ToList();
+                    return Ok(JsonView(true, "查询成功", carDada));
+                }
+                else if(dto.PortType==2)
+                {
+                    var carDada = _carDataRep.QueryDto<Res_CarData, CarDataView>().ToList();
+                    if (carDada.Count == 0)
+                    {
+                        return Ok(JsonView(false, "暂无数据!"));
+                    }
+                    carDada=carDada.OrderByDescending(s=>s.CreateTime).ToList();
+                    return Ok(JsonView(true, "查询成功", carDada));
+                }
+                else
+                {
+                    return Ok(JsonView(false, "请传入PortType参数!1:Web,2:Android,3:IOS"));
+                }
+               
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+           
+            
+        }
+
+        /// <summary>
+        /// 车公司信息添加
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> AddCarData(AddCarDataDto dto)
+        {
+            try
+            {
+                if (dto.UnitArea == "")
+                {
+                    return Ok(JsonView(false, "请检查单位区域是否填写!"));
+                }
+                if (dto.UnitName == "")
+                {
+                    return Ok(JsonView(false, "请检查单位名称是否填写!"));
+                }
+                if (dto.Contact == "")
+                {
+                    return Ok(JsonView(false, "请检查单位联系人是否填写!"));
+                }
+                if (dto.ContactTel == "")
+                {
+                    return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
+                }
+                Res_CarData _CarData = _mapper.Map<Res_CarData>(dto);
+                int id = await _carDataRep.AddAsyncReturnId(_CarData);
+                if (id == 0) 
+                {
+                    return Ok(JsonView(false, "添加失败!"));
+                }
+                return Ok(JsonView(true, "添加成功", new { Id = id }));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 车公司信息修改
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> UpCarData(UpCarDataDto dto)
+        {
+            try
+            {
+                if (dto.UnitArea == "")
+                {
+                    return Ok(JsonView(false, "请检查单位区域是否填写!"));
+                }
+                if (dto.UnitName == "")
+                {
+                    return Ok(JsonView(false, "请检查单位名称是否填写!"));
+                }
+                if (dto.Contact == "")
+                {
+                    return Ok(JsonView(false, "请检查单位联系人是否填写!"));
+                }
+                if (dto.ContactTel == "")
+                {
+                    return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
+                }
+                bool res = await _carDataRep.UpdateAsync(a => a.Id == dto.Id, a => new Res_CarData
+                {
+                    UnitArea = dto.UnitArea,
+                    UnitName = dto.UnitName,
+                    Address = dto.Address,
+                    Contact = dto.Contact,
+                    ContactTel = dto.ContactTel,
+                    ContactEmail = dto.ContactEmail,
+                    ContactFax = dto.ContactFax,
+                    CarDes = dto.CarDes,
+                    CarPicPaths = dto.CarPicPaths,
+                    OtherInfo = dto.OtherInfo,
+                    Score = dto.Score,
+                    QualificationScore = dto.QualificationScore,
+                    CarAgeScore = dto.CarAgeScore,
+                    CleanImgScore = dto.CleanImgScore,
+                    SmellScore = dto.SmellScore,
+                    WaterPaperScore = dto.WaterPaperScore,
+                    HardwareScore = dto.HardwareScore,
+                    TimeScore = dto.TimeScore,
+                    SafetyScore = dto.SafetyScore,
+                    DrivingAgeScore = dto.DrivingAgeScore,
+                    Remark = dto.Remark,
+                });
+                if (!res) { return Ok(JsonView(false, "修改失败!")); }
+                return Ok(JsonView(true, "修改成功"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        /// <summary>
+        /// 车公司信息修改
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelCarData(DelCarDataDto dto)
+        {
+            try
+            {
+                bool res = await _carDataRep.SoftDeleteByIdAsync<Res_CarData>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!res) { return Ok(JsonView(false, "删除失败!")); }
+                return Ok(JsonView(true, "删除成功"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        #endregion
+
+    }
+}

+ 112 - 4
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -1,4 +1,7 @@
-using System.Collections;
+
+using OASystem.Domain.Dtos.System;
+using Org.BouncyCastle.Asn1.Cms;
+using System.Collections;
 using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 namespace OASystem.API.Controllers
@@ -15,7 +18,7 @@ namespace OASystem.API.Controllers
         private readonly DepartmentRepository _sysDepRep;
         private readonly UsersRepository _userRep;
         private readonly IMapper _mapper;
-
+        private readonly MessageRepository _messageRep;
         private readonly SetDataRepository _setDataRepository;
         private readonly SystemMenuPermissionRepository _SystemMenuPermissionRepository;
         private readonly CompanyRepository _CompanyRepository;
@@ -29,12 +32,13 @@ namespace OASystem.API.Controllers
         public SystemController( CompanyRepository syscom, DepartmentRepository sysDepRep, UsersRepository userRep,
             IMapper mapper, SetDataRepository setDataRepository, CompanyRepository companyRepository,
             SystemMenuPermissionRepository systemMenuPermissionRepository, PageFunctionPermissionRepository pageFunctionPermissionRepository,
-            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, JobPostRepository jobRep
-            , UserAuthorityRepository userAuthorityRepository)
+            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, 
+            JobPostRepository jobRep,UserAuthorityRepository userAuthorityRepository, MessageRepository messageRep)
             
         {
             _syscomRep = syscom;
             _sysDepRep = sysDepRep;
+            _messageRep = messageRep;
             _userRep = userRep;
             _mapper = mapper;
             _setDataRepository = setDataRepository;
@@ -48,8 +52,112 @@ namespace OASystem.API.Controllers
         }
         #region 消息
 
+        /// <summary>
+        /// 获取消息列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetMsgList(MsgDto dto)
+        {
+            var msgData = await _messageRep.GetMsgList(dto);
+
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
+
+        /// <summary>
+        /// 获取消息详细信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetMsgInfo(MsgInfoDto dto)
+        {
+            var msgData = await _messageRep.GetMsgInfo(dto);
+
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
+
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> SetMessageRead(MsgSetReadDto dto)
+        {
+            var msgData = await _messageRep.SetMsgRead(dto);
+
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
 
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DeleMsg(MsgDeleteDto dto)
+        {
+            var msgData = await _messageRep.DelMsg(dto);
 
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
+        #endregion
+
+        #region 类型表
+        /// <summary>
+        /// 查询类型数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QuerSetData(SetDataDto dto)
+        {
+            try
+            {
+                if (dto.DataType==0)
+                {
+                    return Ok(JsonView(false, "请传类型Id!"));
+                }
+                var setData = _setDataRepository.QueryDto<Sys_SetData, SetDataView>(s=>s.STid==dto.DataType).ToList();
+                if (setData.Count == 0)
+                {
+                    return Ok(JsonView(false, "暂无数据!"));
+                }
+                return Ok(JsonView(true, "查询成功!",setData));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
         #endregion
 
         #region 企业操作

+ 4 - 0
OASystem/OASystem.Api/GlobalUsings.cs

@@ -51,5 +51,9 @@ global using OASystem.Domain.Dtos.System;
 global using OASystem.Domain.Entities.System;
 global using OASystem.Domain.ViewModels.System;
 global using OASystem.Infrastructure.Repositories.System;
+global using OASystem.Domain.Dtos.Resource;
+global using OASystem.Domain.Entities.Resource;
+global using OASystem.Domain.ViewModels.Resource;
+global using OASystem.Infrastructure.Repositories.Resource;
 
 

+ 55 - 0
OASystem/OASystem.Api/OAMethodLib/AutofacIocManager.cs

@@ -0,0 +1,55 @@
+using Autofac.Core;
+
+namespace OASystem.API.OAMethodLib
+{
+    public class AutofacIocManager
+    {
+        public static AutofacIocManager Instance = new AutofacIocManager();
+        public ILifetimeScope Container { get; set; }
+
+        public T GetService<T>()
+        {
+            return ResolutionExtensions.Resolve<T>((IComponentContext)(object)this.Container);
+        }
+
+        public T GetService<T>(string serviceKey)
+        {
+            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey);
+        }
+
+        public T GetService<T>(string serviceKey, params Parameter[] parameters)
+        {
+            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey, parameters);
+        }
+
+        public object GetService(Type serviceType)
+        {
+            return ResolutionExtensions.Resolve((IComponentContext)(object)this.Container, serviceType);
+        }
+
+        public object GetService(string serviceKey, Type serviceType)
+        {
+            return ResolutionExtensions.ResolveKeyed((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
+        }
+
+        public bool IsRegistered<T>()
+        {
+            return ResolutionExtensions.IsRegistered<T>((IComponentContext)(object)this.Container);
+        }
+
+        public bool IsRegistered<T>(string serviceKey)
+        {
+            return ResolutionExtensions.IsRegisteredWithKey<T>((IComponentContext)(object)this.Container, (object)serviceKey);
+        }
+
+        public bool IsRegistered(Type serviceType)
+        {
+            return ResolutionExtensions.IsRegistered((IComponentContext)(object)this.Container, serviceType);
+        }
+
+        public bool IsRegisteredWithKey(string serviceKey, Type serviceType)
+        {
+            return ResolutionExtensions.IsRegisteredWithKey((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
+        }
+    }
+}

+ 27 - 0
OASystem/OASystem.Api/OAMethodLib/AutofacRegister.cs

@@ -0,0 +1,27 @@
+using Microsoft.Extensions.Configuration.Json;
+using OASystem.Domain.Dtos.Groups;
+
+namespace OASystem.API.OAMethodLib
+{
+    public class AutofacRegister : Autofac.Module
+    {
+        protected override void Load(ContainerBuilder builder)
+        {
+            //OASystem.Infrastructure中所有以Repository结尾的文件都会被注入到项目
+            var assemblyServices = Assembly.Load("OASystem.Infrastructure");
+            builder.RegisterAssemblyTypes(assemblyServices).Where(a => a.Name.EndsWith("Repository")).AsSelf();
+
+            #region 团组流程管控配置
+
+            GroupsConfig _groupsConfig = new GroupsConfig();
+            _groupsConfig.AutoCreate = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "AutoCreate"));
+            _groupsConfig.Leader = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "Leader"));
+            _groupsConfig.ExBeginDays = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "ExBeginDays"));
+            _groupsConfig.ExEndDays = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "ExEndDays"));
+
+            builder.RegisterInstance<GroupsConfig>(_groupsConfig);
+            #endregion
+
+        }
+    }
+}

+ 0 - 93
OASystem/OASystem.Api/OAMethodLib/BaseConfig.cs

@@ -1,93 +0,0 @@
-namespace OASystem.API.OAMethodLib
-{
-    public static class BaseConfig
-    {
-        /// <summary>
-        /// 版本号
-        /// </summary>
-        public const string Version = "0.0.1";
-
-        /// <summary>
-        /// 编码方式
-        /// </summary>
-        public const string Encoding = "UTF-8";
-
-        /// <summary>
-        /// 签名方法 SM2
-        /// </summary>
-        public const string SignMethod = "02";
-
-        /// <summary>
-        /// 招商银行商户号
-        /// </summary>
-        public const string MER_ID = "3089991727300CV";
-
-        /// <summary>
-        /// 招商银行收银员
-        /// </summary>
-        public const string USER_ID = "V000072134"; // 
-
-        /// <summary>
-        /// header中的APPID
-        /// </summary>
-        public const string APPID = "8ab74856-8772-45c9-96db-54cb30ab9f74"; // 
-
-        /// <summary>
-        /// 用于生成header中的APISign
-        /// </summary>
-        public const string APP_SECRET = "5b96f20a-011f-4254-8be8-9a5ceb2f317f"; // 
-
-        private static X9ECParameters x9ECParameters = GMNamedCurves.GetByName("sm2p256v1");
-        private static ECDomainParameters ecDomainParameters = new ECDomainParameters(x9ECParameters.Curve, x9ECParameters.G, x9ECParameters.N);
-        /// <summary>
-        /// 国密标准公钥头(固定值)
-        /// </summary>
-        public const string SM2_KEY_TITLE = "3059301306072a8648ce3d020106082a811ccf5501822d03420004";
-        /// <summary>
-        /// 国密局推荐 ID(固定值)
-        /// </summary>
-        public const string SM_USER_ID = "1234567812345678";
-        /// <summary>
-        /// 国密私钥
-        /// </summary>
-        public const string SM_PRIVATE_KEY = "D5F2AFA24E6BA9071B54A8C9AD735F9A1DE9C4657FA386C09B592694BC118B38";
-        /// <summary>
-        /// 国密公钥 base64
-        /// </summary>
-        public const string SM_PUBLIC_KEY = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE6Q+fktsnY9OFP+LpSR5Udbxf5zHCFO0PmOKlFNTxDIGl8jsPbbB/9ET23NV+acSz4FEkzD74sW2iiNVHRLiKHg==";
-
-    }
-
-    public static class UrlConfig
-    {
-        /// <summary>
-        /// 通知地址
-        /// </summary>
-        public const string NotifyUrl = "https://payment.wh-trip.com:8082/Notify";
-
-        /// <summary>
-        /// 收款码申请
-        /// </summary>
-        public const string CollectionQRCode = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/qrcodeapply";
-
-        /// <summary>
-        /// 支付结果查询
-        /// </summary>
-        public const string OrderqueryUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/orderquery";
-
-        /// <summary>
-        /// 发起退款申请
-        /// </summary>
-        public const string RefundUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/refund";
-
-        /// <summary>
-        /// 退款申请查询
-        /// </summary>
-        public const string RefundqueryUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/refundquery";
-
-        /// <summary>
-        /// 支付宝native支付
-        /// </summary>
-        public const string ZFBQRCodeUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/zfbqrcode";
-    }
-}

+ 76 - 0
OASystem/OASystem.Api/OAMethodLib/GroupStepForDelegation.cs

@@ -0,0 +1,76 @@
+using OASystem.API.OAMethodLib;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Infrastructure.Repositories.Groups;
+using System.Configuration;
+
+namespace OASystem.API.OAMethodLibs
+{
+
+    /// <summary>
+    /// 团组流程管控
+    /// </summary>
+    public static class GroupStepForDelegation
+    {
+
+        /// <summary>
+        /// 创建流程管控
+        /// </summary>
+        /// <param name="Diid">团组Id</param>
+        public static async void CreateWorkStep(int DiId)
+        {
+            var _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
+
+            //判断是否已存在团组的流程管控
+            Grp_ScheduleInfo check = _grpScheduleRep.Query(s => s.DiId == DiId).First();
+
+            if (check == null)
+            {
+                _grpScheduleRep.BeginTran();
+
+                GroupsConfig _groupConfig = AutofacIocManager.Instance.GetService<GroupsConfig>();
+
+                #region 主流程
+                Grp_ScheduleInfo _primary = new Grp_ScheduleInfo();
+                _primary.CreateUserId = _groupConfig.AutoCreate;
+                _primary.DiId = DiId;
+                _primary.Exception = 0;
+                _primary.ExpectBeginDt = DateTime.Now.AddDays(_groupConfig.ExBeginDays);
+                _primary.ExpectEndDt = DateTime.Now.AddDays(_groupConfig.ExEndDays);
+                _primary.Leader = _groupConfig.Leader;
+                _primary.PrimaryStep = GrpSchedulePrimaryStepEnum.Wait;
+                _primary.Remark = "请设置各流程预计开始/结束时间";
+                int _primaryId = await _grpScheduleRep.AddAsync(_primary);
+                if (_primaryId > 0)
+                {
+                    #region 子流程
+
+                    #region 经费预算
+
+                    Grp_ScheduleDetailInfo grp_budget = new Grp_ScheduleDetailInfo();
+                    grp_budget.CreateTime = DateTime.Now;
+                    grp_budget.CreateUserId = _groupConfig.AutoCreate;
+                    //grp_budget.Duty=
+
+                    #endregion
+
+
+                    #endregion
+                }
+                else
+                {
+                    _grpScheduleRep.RollbackTran();
+                }
+                #endregion
+
+                _grpScheduleRep.CommitTran();
+            }
+
+        }
+
+
+
+    }
+
+
+}

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

@@ -48,4 +48,28 @@ namespace OASystem.API.OAMethodLib
 
     #endregion
 
+
+    #region String null值转换(读/写)
+
+
+    //public class Int32JsonConverter : System.Text.Json.Serialization.JsonConverter<int?>
+    //{
+    //    private readonly string Format;
+    //    public Int32JsonConverter(string format)
+    //    {
+    //        Format = format;
+    //    }
+    //    public override void Write(Utf8JsonWriter writer, int? value, JsonSerializerOptions options)
+    //    {
+    //        writer.WriteStringValue((value ?? 0).ToString());
+    //    }
+    //    public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+    //    {
+    //        return Convert.ToInt32(reader.GetString()) ?? 0; 
+    //    }
+
+    //}
+
+    #endregion
+
 }

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

@@ -6,6 +6,8 @@ using OASystem.RedisRepository.RedisAsyncHelper;
 using OASystem.RedisRepository.Config;
 using OASystem.API.OAMethodLib;
 using System.Text.Json.Serialization;
+using OASystem.API.OAMethodLibs;
+using OASystem.Domain.Dtos.Groups;
 
 var builder = WebApplication.CreateBuilder(args);
 var basePath = AppContext.BaseDirectory;
@@ -175,14 +177,13 @@ Log.Logger = new LoggerConfiguration()
        .CreateLogger();
 #endregion
 
-#region 引入注册Autofac OASystem.Infrastructure中所有以Repository结尾的文件都会被注入到项目
+#region 引入注册Autofac Module
 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
 var hostBuilder = builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
 {
     try
     {
-        var assemblyServices = Assembly.Load("OASystem.Infrastructure");
-        builder.RegisterAssemblyTypes(assemblyServices).Where(a => a.Name.EndsWith("Repository")).AsSelf();
+        builder.RegisterModule(new AutofacRegister());
     }
     catch (Exception ex)
     {
@@ -203,6 +204,7 @@ builder.Services.AddScoped<IMapper, Mapper>();
 #endregion
 
 var app = builder.Build();
+AutofacIocManager.Instance.Container = app.UseHostFiltering().ApplicationServices.GetAutofacRoot();//AutofacIocManager
 
 // Configure the HTTP request pipeline.
 if (!app.Environment.IsDevelopment())
@@ -234,6 +236,7 @@ if (AppSettingsHelper.Get("UseSwagger").ToBool())
 }
 #endregion
 
+
 app.MapControllerRoute(
     name: "default",
     pattern: "{controller=Home}/{action=Index}/{id?}");

+ 7 - 2
OASystem/OASystem.Api/appsettings.json

@@ -3,6 +3,11 @@
     "OA2023DB": "server=132.232.92.186;uid=sa;pwd=Yjx@158291;database=OA2023DB;"
   },
   "JwtSecurityKey": "48d3f4fe770940a1068052f581536b81", //jwt密钥
-  "UseSwagger": "true" //启用Swagger
-
+  "UseSwagger": "true", //启用Swagger
+  "GroupsConfig": {
+    "AutoCreate": "4",
+    "Leader": "149",
+    "ExBeginDays": "3",
+    "ExEndDays": "30"
+  }
 }

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

@@ -1,10 +1,13 @@
 using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Dtos.Resource;
 using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.UserDto;
 using OASystem.Domain.Entities;
 using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.Entities.System;
 using OASystem.Domain.ViewModels;
+using OASystem.Domain.ViewModels.Resource;
 using OASystem.Domain.ViewModels.System;
 
 namespace OASystem.Domain.AutoMappers
@@ -56,6 +59,13 @@ namespace OASystem.Domain.AutoMappers
 
             CreateMap<GroupListDto, Grp_DelegationInfo>();
             #endregion
+
+            #region Resource
+            #region 车公司资料
+            CreateMap<Res_CarData, CarDataView>();
+            CreateMap<AddCarDataDto, Res_CarData>();
+            #endregion
+            #endregion
         }
     }
 }

+ 57 - 0
OASystem/OASystem.Domain/Common/DepartmentCode.cs

@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Common
+{
+    public class DepartmentCode
+    {
+        /// <summary>
+        /// 总经办
+        /// </summary>
+        public static int GMO = 1;
+
+        /// <summary>
+        /// 信息部
+        /// </summary>
+        public static int INFO = 2;
+
+        /// <summary>
+        /// 财务部
+        /// </summary>
+        public static int FIN = 3;
+
+        /// <summary>
+        /// 人事部
+        /// </summary>
+        public static int HR = 4;
+
+        /// <summary>
+        /// 策划部
+        /// </summary>
+        public static int PLAN = 5;
+
+        /// <summary>
+        /// 市场部
+        /// </summary>
+        public static int MARKET = 6;
+
+        /// <summary>
+        /// 国交部
+        /// </summary>
+        public static int IC = 7;
+
+        /// <summary>
+        /// 项目部
+        /// </summary>
+        public static int PROJECT = 8;
+
+        /// <summary>
+        /// OA管理部
+        /// </summary>
+        public static int OA = 9;
+
+    }
+}

+ 1 - 1
OASystem/OASystem.Domain/Dtos/DtoBase.cs

@@ -15,7 +15,7 @@ namespace OASystem.Domain.Dtos
         /// 请求端口分类
         /// 1 Web 2 Android 3 IOS
         /// </summary>
-        public int PortType { get; set; }
+        public int PortType { get; set; } = 1;
 
         public int PageIndex { get; set; }
         public int PageSize { get; set; }

+ 21 - 5
OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs

@@ -1,5 +1,7 @@
-using System;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -94,7 +96,7 @@ namespace OASystem.Domain.Dtos.Groups
         /// <summary>
         /// 出访时间
         /// </summary>
-        public DateTime VisitDate { get; set; }
+        public string VisitDate { get; set; }
 
         /// <summary>
         /// 出访天数
@@ -109,12 +111,12 @@ namespace OASystem.Domain.Dtos.Groups
         /// <summary>
         /// 合同时间
         /// </summary>
-        public DateTime TontractTime { get; set; }
+        public string TontractTime { get; set; }
 
         /// <summary>
         /// 预付期限
         /// </summary>
-        public DateTime PayDay { get; set; }
+        public int PayDay { get; set; }
 
         /// <summary>
         /// 支付款项(预付)
@@ -167,5 +169,19 @@ namespace OASystem.Domain.Dtos.Groups
         public string Remark { get; set; }
     }
 
-    
+    /// <summary>
+    /// 团组信息删除
+    /// </summary>
+    public class GroupDelDto:DtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+    }
 }

+ 36 - 0
OASystem/OASystem.Domain/Dtos/Groups/GroupsConfig.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    /// <summary>
+    /// appsettings.json配置对应实体类(团组管控流程配置)
+    /// </summary>
+    public class GroupsConfig
+    {
+        public const string KEY = "GroupsConfig";
+
+        /// <summary>
+        /// 创建团组管控流程的默认用户Id ,当前为管理员4
+        /// </summary>
+        public int AutoCreate { get; set; }
+
+        /// <summary>
+        /// 团组管控流程默认总负责人,当前为王鸽149
+        /// </summary>
+        public int Leader { get; set; }
+
+        /// <summary>
+        /// 团组默认初始日期(增加3天)
+        /// </summary>
+        public int ExBeginDays { get; set; }
+
+        /// <summary>
+        /// 团组默认结束日期(增加30天)
+        /// </summary>
+        public int ExEndDays { get; set; }  
+    }
+}

+ 311 - 0
OASystem/OASystem.Domain/Dtos/Resource/CarDataDto.cs

@@ -0,0 +1,311 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Resource
+{
+    /// <summary>
+    /// 添加车公司数据参数
+    /// </summary>
+    public class AddCarDataDto
+    {
+        /// <summary>
+        /// 区域
+        /// </summary>
+        public string UnitArea { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 地址
+        /// </summary>
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 联系人
+        /// </summary>
+        public string Contact { get; set; }
+
+        /// <summary>
+        /// 联系人手机号
+        /// </summary>
+        private string contactTel;
+        public string ContactTel
+        {
+            get
+            {
+                return contactTel;
+            }
+            set
+            {
+                if (Regex.IsMatch(value, @"^[1]+[2,3,4,5,6,7,8,9]+\d{9}"))
+                {
+                    contactTel = value;
+                }
+                else
+                {
+                    contactTel = "";
+                }
+
+            }
+        }
+
+        /// <summary>
+        /// 联系人邮箱
+        /// </summary>
+        public string ContactEmail { get; set; }
+
+        /// <summary>
+        /// 联系人传真
+        /// </summary>
+        public string ContactFax { get; set; }
+
+        /// <summary>
+        /// 车描述
+        /// </summary>
+        public string CarDes { get; set; }
+
+        /// <summary>
+        /// 车图片路径
+        /// 存储多个 使用/r/n
+        /// </summary>
+        public string CarPicPaths { get; set; }
+
+
+        /// <summary>
+        /// 其他信息
+        /// </summary>
+        public string OtherInfo { get; set; }
+
+        /// <summary>
+        /// 服务评分
+        /// </summary>
+        public int Score { get; set; }
+
+        /// <summary>
+        /// 相关的车辆资质
+        /// A B C  选择
+        /// </summary>
+        public string QualificationScore { get; set; }
+
+        /// <summary>
+        /// 车辆2-4年新,VIP及以上需要2年新
+        /// A B C  选择
+        /// </summary>
+        public string CarAgeScore { get; set; }
+
+        /// <summary>
+        /// 车身干净,无文字图片等
+        /// A B C  选择
+        /// </summary>
+        public string CleanImgScore { get; set; }
+
+        /// <summary>
+        /// 车内整洁、无异味
+        /// A B C  选择
+        /// </summary>
+        public string SmellScore { get; set; }
+
+        /// <summary>
+        /// 提前备水,纸巾等
+        /// A B C  选择
+        /// </summary>
+        public string WaterPaperScore { get; set; }
+
+        /// <summary>
+        /// 车辆配置高(皮座椅等)
+        /// A B C  选择
+        /// </summary>
+        public string HardwareScore { get; set; }
+
+        /// <summary>
+        /// 时间概念强
+        /// A B C  选择
+        /// </summary>
+        public string TimeScore { get; set; }
+
+        /// <summary>
+        /// 安全意识高
+        /// A B C  选择
+        /// </summary>
+        public string SafetyScore { get; set; }
+
+        /// <summary>
+        /// 司机驾龄时间长,提前熟悉路线
+        /// A B C  选择
+        /// </summary>
+        public string DrivingAgeScore { get; set; }
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string Remark { get; set; }
+    }
+    /// <summary>
+    /// 修改车公司数据参数
+    /// </summary>
+    public class UpCarDataDto
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 区域
+        /// </summary>
+        public string UnitArea { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 地址
+        /// </summary>
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 联系人
+        /// </summary>
+        public string Contact { get; set; }
+
+        /// <summary>
+        /// 联系人手机号
+        /// </summary>
+        private string contactTel;
+        public string ContactTel
+        {
+            get
+            {
+                return contactTel;
+            }
+            set
+            {
+                if (Regex.IsMatch(value, @"^[1]+[2,3,4,5,6,7,8,9]+\d{9}"))
+                {
+                    contactTel = value;
+                }
+                else
+                {
+                    contactTel = "";
+                }
+
+            }
+        }
+
+        /// <summary>
+        /// 联系人邮箱
+        /// </summary>
+        public string ContactEmail { get; set; }
+
+        /// <summary>
+        /// 联系人传真
+        /// </summary>
+        public string ContactFax { get; set; }
+
+        /// <summary>
+        /// 车描述
+        /// </summary>
+        public string CarDes { get; set; }
+
+        /// <summary>
+        /// 车图片路径
+        /// 存储多个 使用/r/n
+        /// </summary>
+        public string CarPicPaths { get; set; }
+
+
+        /// <summary>
+        /// 其他信息
+        /// </summary>
+        public string OtherInfo { get; set; }
+
+        /// <summary>
+        /// 服务评分
+        /// </summary>
+        public int Score { get; set; }
+
+        /// <summary>
+        /// 相关的车辆资质
+        /// A B C  选择
+        /// </summary>
+        public string QualificationScore { get; set; }
+
+        /// <summary>
+        /// 车辆2-4年新,VIP及以上需要2年新
+        /// A B C  选择
+        /// </summary>
+        public string CarAgeScore { get; set; }
+
+        /// <summary>
+        /// 车身干净,无文字图片等
+        /// A B C  选择
+        /// </summary>
+        public string CleanImgScore { get; set; }
+
+        /// <summary>
+        /// 车内整洁、无异味
+        /// A B C  选择
+        /// </summary>
+        public string SmellScore { get; set; }
+
+        /// <summary>
+        /// 提前备水,纸巾等
+        /// A B C  选择
+        /// </summary>
+        public string WaterPaperScore { get; set; }
+
+        /// <summary>
+        /// 车辆配置高(皮座椅等)
+        /// A B C  选择
+        /// </summary>
+        public string HardwareScore { get; set; }
+
+        /// <summary>
+        /// 时间概念强
+        /// A B C  选择
+        /// </summary>
+        public string TimeScore { get; set; }
+
+        /// <summary>
+        /// 安全意识高
+        /// A B C  选择
+        /// </summary>
+        public string SafetyScore { get; set; }
+
+        /// <summary>
+        /// 司机驾龄时间长,提前熟悉路线
+        /// A B C  选择
+        /// </summary>
+        public string DrivingAgeScore { get; set; }
+       
+        /// <summary>
+        /// 备注
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string Remark { get; set; }
+    }
+
+    public class DelCarDataDto
+    {
+        /// <summary>
+        /// 删除Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 删除人Id
+        /// </summary>
+        public int DeleteUserId { get; set; }
+    }
+}

+ 61 - 0
OASystem/OASystem.Domain/Dtos/System/MsgDto.cs

@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.System
+{
+    /// <summary>
+    /// 消息列表
+    /// 请求dto
+    /// </summary>
+    public class MsgDto:DtoBase
+    {
+        /// <summary>
+        /// 用户ID
+        /// </summary>
+        public int UserId { get; set; }
+    }
+
+    /// <summary>
+    /// 消息详细信息
+    /// 请求dto
+    /// </summary>
+    public class MsgInfoDto : DtoBase
+    {
+        /// <summary>
+        /// 消息Id
+        /// </summary>
+        public int MsgId { get; set; }
+    }
+
+    /// <summary>
+    /// 消息设置已读
+    /// 请求dto
+    /// </summary>
+    public class MsgSetReadDto : DtoBase
+    {
+        /// <summary>
+        /// MsgAnthId
+        /// </summary>
+        public int MsgAnthId { get; set; }
+    }
+
+    /// <summary>
+    /// 消息删除
+    /// 请求dto
+    /// </summary>
+    public class MsgDeleteDto : DtoBase
+    {
+        /// <summary>
+        /// MsgId
+        /// </summary>
+        public int MsgId { get; set; }
+
+        /// <summary>
+        /// userId
+        /// </summary>
+        public int UserId { get; set; }
+    }
+}

+ 19 - 0
OASystem/OASystem.Domain/Dtos/System/SetDataDto.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.System
+{
+    /// <summary>
+    /// 类型表参数
+    /// </summary>
+    public class SetDataDto
+    {
+        /// <summary>
+        /// 数据类型
+        /// </summary>
+        public int DataType { get; set; }
+    }
+}

+ 1 - 1
OASystem/OASystem.Domain/Dtos/UserDto/LoginDto.cs

@@ -6,7 +6,7 @@ namespace OASystem.Domain.Dtos.UserDto;
 /// 用户登录
 /// 提交DTO
 /// </summary>
-public class LoginDto
+public class LoginDto:DtoBase
 {
     /// <summary>
     /// 登录账号

+ 48 - 37
OASystem/OASystem.Domain/Entities/Customer/Crm_DeleClient.cs

@@ -13,36 +13,6 @@ namespace OASystem.Domain.Entities.Customer
     [SugarTable("Crm_DeleClient")]
     public class Crm_DeleClient:EntityBase
     {
-        /// <summary>
-        /// 客户公司表Id
-        /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
-        public int CompanyId { get; set; }
-        /// <summary>
-        /// 机票喜好舱位
-        /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType = "varchar(300)")]
-        public string AirType { get; set; }
-        /// <summary>
-        /// 是否靠窗
-        /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
-        public int SeatPref { get; set; }
-        /// <summary>
-        /// 机票备注
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
-        public string AirRemark { get; set; }
-        /// <summary>
-        /// 酒店喜好房型
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
-        public string RoomType { get; set; }
-        /// <summary>
-        /// 酒店需求
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
-        public string RoomPref { get; set; }
         /// <summary>
         /// 中文姓名
         /// </summary>
@@ -69,11 +39,11 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Sex { get; set; }
         /// <summary>
-        /// 婚姻状况 0、1、2 (已婚、未婚、离异等)
+        /// 婚姻状况 0、1、2、3、4 (未设置、未婚、已婚、离异、丧偶)
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Marriage { get; set; }
-        /// <summary>
+
         /// 客户手机号
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
@@ -93,6 +63,33 @@ namespace OASystem.Domain.Entities.Customer
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
         public string BirthDay { get; set; }
+
+        /// <summary>
+        /// 机票喜好舱位
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType = "varchar(300)")]
+        public string AirType { get; set; }
+        /// <summary>
+        /// 是否靠窗
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int SeatPref { get; set; }
+        /// <summary>
+        /// 机票备注
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string AirRemark { get; set; }
+        /// <summary>
+        /// 酒店喜好房型
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string RoomType { get; set; }
+        /// <summary>
+        /// 酒店需求
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string RoomPref { get; set; }
+       
         /// <summary>
         /// 客户联系方式
         /// </summary>
@@ -118,6 +115,13 @@ namespace OASystem.Domain.Entities.Customer
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string PostCodes { get; set; }
+
+        /// <summary>
+        /// 客户公司Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public string CrmCompanyId { get; set; }
+
         /// <summary>
         /// 职位
         /// </summary>
@@ -164,7 +168,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         public string ClientLeaderJob { get; set; }
         /// <summary>
-        /// 是否有获批的申根签证 0否1是
+        /// 是否有获批的申根签证 
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsGetSchengen { get; set; }
@@ -179,7 +184,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "Datetime")]
         public DateTime EndTime { get; set; }
         /// <summary>
-        /// 申根是否在使馆有指纹记录 0否1是
+        /// 申根是否在使馆有指纹记录 
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable =true,ColumnDataType ="int")]
         public int IsFinger { get; set; }
@@ -190,6 +196,7 @@ namespace OASystem.Domain.Entities.Customer
         public DateTime FingerDate { get; set; }
         /// <summary>
         /// 是否因公去过美国/加拿大
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsVisitUC { get; set; }
@@ -220,6 +227,7 @@ namespace OASystem.Domain.Entities.Customer
         public int IsUSAVia { get; set; }
         /// <summary>
         /// 因公美国签证最近获得时间
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable =true,ColumnDataType ="DateTime")]
         public DateTime GetUSAVisaDate { get; set; }
@@ -289,7 +297,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsUSAVisa { get; set; }
         /// <summary>
-        /// 夫/妻是否已在美国 0否1是
+        /// 夫/妻是否已在美国 
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int MateUSA { get; set; }
@@ -309,7 +318,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable =true,ColumnDataType ="varchar(50)")]
         public string WHIden { get; set; }
         /// <summary>
-        /// 父/母是否已在美国 0否1是
+        /// 父/母是否已在美国
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int ParentUSA { get; set; }
@@ -344,7 +354,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string Social { get; set; }
         /// <summary> 
-        /// 是否参军  0否1是
+        /// 是否参军  
+        /// 0否1是
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public string IsArmy { get; set; }

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

@@ -192,8 +192,8 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// 预付期限
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
-        public DateTime PayDay { get; set; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int PayDay { get; set; }
         /// <summary>
         /// 出国任务审批部门名称
         /// </summary>

+ 6 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs

@@ -104,6 +104,12 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Duty { get; set; }
 
+        /// <summary>
+        /// 工作内容
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string JobContent { get; set; }
+
         /// <summary>
         /// 预计开始时间
         /// </summary>

+ 13 - 4
OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs

@@ -13,15 +13,15 @@ namespace OASystem.Domain.Enums
     public enum GrpSchedulePrimaryStepEnum
     {
         /// <summary>
-        /// 未开始
+        /// 未开始/等待任务分配
         /// </summary>
-        [Description("未开始")]
+        [Description("未开始/等待任务分配")]
         Wait = 0,
 
         /// <summary>
-        /// 确认出团
+        /// 确认出团/任务分配
         /// </summary>
-        [Description("确认出团")]
+        [Description("确认出团/任务分配完成")]
         Confirm = 1,
 
         /// <summary>
@@ -29,6 +29,15 @@ namespace OASystem.Domain.Enums
         /// </summary>
         [Description("经费预算")]
         Budget = 2,
+        /// <summary>
+        /// 经费预算子流程01:完成经费预算
+        /// </summary>
+        [Description("完成经费预算")]
+        BudgetChild01 = 201,
+        /// <summary>
+        /// 经费预算自定义子流程:
+        /// </summary>
+        BudgetChildCustom = 2011,
 
         /// <summary>
         /// 市场部人员对接反馈

+ 1 - 1
OASystem/OASystem.Domain/Result.cs

@@ -10,6 +10,6 @@ namespace OASystem.Domain
     {
         public int Code { get; set; } = -1;
         public string Msg { get; set; } = "未知错误";
-        public dynamic Data { get; set; } = null;
+        public dynamic? Data { get; set; } = null;
     }
 }

+ 15 - 4
OASystem/OASystem.Domain/ViewModels/Group/DelegationInfoView.cs

@@ -1,7 +1,9 @@
-using OASystem.Domain.Dtos;
+using Newtonsoft.Json;
+using OASystem.Domain.Dtos;
 using OASystem.Domain.Entities.Groups;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -31,6 +33,11 @@ namespace OASystem.Domain.ViewModels.Group
         public string SalesQuoteNo { get; set; }
 
 
+        /// <summary>
+        /// 接团人ID
+        /// </summary>
+        public int JietuanOperator { get; set; }
+
         /// <summary>
         /// 团组等级
         /// </summary>
@@ -80,11 +87,10 @@ namespace OASystem.Domain.ViewModels.Group
         /// 合同时间
         /// </summary>
         public DateTime TontractTime { get; set; }
-
         /// <summary>
-        /// 预付
+        /// 预付期
         /// </summary>
-        public DateTime PayDay { get; set; }
+        public int PayDay { get; set; }
 
         /// <summary>
         /// 预付金额
@@ -150,6 +156,11 @@ namespace OASystem.Domain.ViewModels.Group
         /// </summary>
         public string SalesQuoteNo { get; set; }
 
+        /// <summary>
+        /// 团号
+        /// </summary>
+        public string TourCode { get; set; }
+
         /// <summary>
         /// 接团操作人
         /// </summary>

+ 5 - 0
OASystem/OASystem.Domain/ViewModels/LoginView.cs

@@ -19,4 +19,9 @@ public class LoginView
     /// 返回用户信息
     /// </summary>
     public object? UserInfo { get; set; }
+
+    /// <summary>
+    /// 返回用户权限信息
+    /// </summary>
+    public object? AuthData { get; set; }
 }

+ 13 - 0
OASystem/OASystem.Domain/ViewModels/Resource/CarDataView.cs

@@ -0,0 +1,13 @@
+using OASystem.Domain.Entities.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Resource
+{
+    public class CarDataView:Res_CarData
+    {
+    }
+}

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

@@ -67,4 +67,58 @@ namespace OASystem.Domain.ViewModels.System
         public DateTime? ReadTime { get; set; }
     }
 
+    public class MessageInfoView 
+    {
+        /// <summary>
+        /// 消息类型
+        /// </summary>
+        public int Type { 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 CnName { get; set; }
+
+        /// <summary>
+        /// 发布时间
+        /// </summary>
+        public DateTime ReleaseTime { get; set; }
+
+        /// <summary>
+        /// 消息标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 消息内容
+        /// </summary>
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 是否已读
+        /// 0 未读 1 已读
+        /// </summary>
+        public int IsRead { get; set; }
+
+        /// <summary>
+        /// 已读时间
+        /// 1990-01-01 00:00:000 未读
+        /// </summary>
+        public DateTime ReadTime { get; set; }
+    }
 }

+ 5 - 5
OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs

@@ -94,10 +94,10 @@ namespace OASystem.Domain.ViewModels.System
     /// </summary>
     public class UserLoginInfoView
     {
-        ///// <summary>
-        ///// 工号
-        ///// </summary>
-        ////public string Number { get; set; }
+        /// <summary>
+        /// 工号
+        /// </summary>
+        //public string Number { get; set; }
 
         /// <summary>
         /// 用户Id
@@ -127,7 +127,7 @@ namespace OASystem.Domain.ViewModels.System
         /// <summary>
         /// 邮箱
         /// </summary>
-        public int DepId { get; set; }
+        public string Email { get; set; }
 
     }
     /// <summary>

+ 11 - 0
OASystem/OASystem.Infrastructure/Repositories/BaseRepository.cs

@@ -177,6 +177,7 @@ namespace OASystem.Infrastructure.Repositories
             }).ExecuteCommandAsync();
             return result > 0;
         }
+       
         public virtual async Task<bool> SoftDeleteAsync(Expression<Func<TEntity, bool>> wherexp)
         {
             var result = await _sqlSugar.Updateable<TEntity>().Where(wherexp).SetColumns(a => new TEntity()
@@ -244,6 +245,16 @@ namespace OASystem.Infrastructure.Repositories
             }).ExecuteCommandAsync();
             return result > 0;
         }
+        public virtual async Task<bool> SoftDeleteByIdAsync<T>(string id,int DeleteUserId) where T : EntityBase, new()
+        {
+            var result = await _sqlSugar.Updateable<TEntity>().Where(a => a.Id.Equals(id)).SetColumns(a => new TEntity()
+            {
+                IsDel = 1,
+                DeleteUserId = DeleteUserId,
+                DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+            }).ExecuteCommandAsync();
+            return result > 0;
+        }
         public virtual async Task<bool> SoftDeleteAsync<T>(Expression<Func<TEntity, bool>> wherexp) where T : EntityBase, new()
         {
             var result = await _sqlSugar.Updateable<TEntity>().Where(wherexp).SetColumns(a => new TEntity()

+ 104 - 35
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -6,6 +6,7 @@ using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Group;
 using OASystem.Infrastructure.Repositories.System;
 using Org.BouncyCastle.Utilities.Collections;
+using Serilog;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -22,6 +23,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
     {
         private readonly SetDataRepository _setDataRepository;
         private readonly UsersRepository _usersRepository;
+        //public readonly Logs _logs;
 
         public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository)
             : base(sqlSugar)
@@ -39,7 +41,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
-            if (dto.PortType == 1) //web
+            if (dto.PortType == 1 || dto.PortType == 2) //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
@@ -77,7 +79,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
-            if (dto.PortType == 1) //web
+            if (dto.PortType == 1 || dto.PortType == 2) //web
             {
                 string sql = string.Format(@"Select Id,SalesQuoteNo,JietuanOperator,TeamLevSId,TeamDid,TeamName,ClientName,
 	                                                ClientUnit,VisitCountry,VisitDate,VisitDays,VisitPNumber,TontractTime,
@@ -112,41 +114,50 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
-            if (dto.PortType == 1) //web
+            try
             {
-                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)
+                if (dto.PortType == 1 || dto.PortType == 2) //web
                 {
-                    teamTypeData1 = teamTypeData;
-                }
+                    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? 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;
+                    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
+                    };
                 }
+            }
+            catch (Exception)
+            {
 
-                result.Code = 0;
-                result.Msg = "成功!";
-                result.Data = new
-                {
-                    teamTypeData = teamTypeData1,
-                    teamLevData = teamLevData1,
-                    userData = userData1
-                };
+                throw;
             }
+            
 
             return result;
         }
@@ -160,7 +171,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
-            if (dto.PortType == 1) //web
+            if (dto.PortType == 1 || dto.PortType == 2) //web
             {
                 Grp_DelegationInfo groupInfo = new Grp_DelegationInfo()
                 {
@@ -170,7 +181,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     ClientUnit = dto.ClientUnit,
                     TeamName = dto.TeamName,
                     TeamDid = dto.TeamDid,
-                    VisitDate = dto.VisitDate,
+                    VisitDate = Convert.ToDateTime(dto.VisitDate),
                     VisitCountry = dto.VisitCountry,
                     VisitPurpose = dto.VisitPurpose,
                     VisitDays = dto.VisitDays,
@@ -184,7 +195,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     CGRWSPWH = dto.CGRWSPWH,
                     ZZSCBMMC = dto.ZZSCBMMC,
                     ZZSCSPWH = dto.ZZSCSPWH,
-                    TontractTime = dto.TontractTime,
+                    TontractTime = Convert.ToDateTime(dto.TontractTime),
                     PaymentMoney = dto.PaymentMoney,
                     PayDay = dto.PayDay
                 };
@@ -212,7 +223,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     string teamCode = "";
                     while (true)
                     {
-                        teamCode = Tools.CommonFun.GetRandomAllStr(6);
+                        teamCode = Tools.CommonFun.GetRandomStr(6);
 
                         if (!teamCodeItem.Equals(teamCode))
                         {
@@ -251,7 +262,31 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 }  //增加
                 else if (dto.Status == 2)     //修改
                 {
-                    var updateStatus = await UpdateAsync(a => a.Id == dto.Id, a => groupInfo);
+                    var updateStatus = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_DelegationInfo {
+                        SalesQuoteNo = dto.SalesQuoteNo,
+                        TeamLevSId = dto.TeamLevSId,
+                        ClientName = dto.ClientName,
+                        ClientUnit = dto.ClientUnit,
+                        TeamName = dto.TeamName,
+                        TeamDid = dto.TeamDid,
+                        VisitDate = Convert.ToDateTime(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 = Convert.ToDateTime(dto.TontractTime),
+                        PaymentMoney = dto.PaymentMoney,
+                        PayDay = dto.PayDay
+                    });
 
                     if (updateStatus)
                     {
@@ -286,6 +321,40 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return result;
         }
 
+
+        /// <summary>
+        /// 团组信息操作
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> GroupDel(GroupDelDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (dto.PortType == 1 || dto.PortType == 2) //web
+            {
+                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>

+ 19 - 9
OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs

@@ -15,7 +15,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
         }
 
-        public string SetSqlWhere_GrpScheduleDto(Grp_ScheduleDto _dto)
+        public string SetSql_GrpScheduleDto(Grp_ScheduleDto _dto)
         {
             string sqlWhere = string.Empty;
 
@@ -35,7 +35,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 sqlWhere = r.Replace(sqlWhere, "Where", 1);
             }
 
-            return sqlWhere;
+            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);
+
+            return sql;
         }
 
         /// <summary>
@@ -47,18 +52,23 @@ namespace OASystem.Infrastructure.Repositories.Groups
         public async Task<Grp_ScheduleView> GetView_GrpSchedule(Grp_ScheduleDto _dto)
         {
             Grp_ScheduleView _view = null;
+            string sql = this.SetSql_GrpScheduleDto(_dto);
+            _view = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).FirstAsync();
+            return _view;
+        }
 
-            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);
+        public async Task<List<Grp_ScheduleView>> GetViewList_GrpSchedule(Grp_ScheduleDto _dto)
+        {
+            List<Grp_ScheduleView> _viewList = new List<Grp_ScheduleView>();
+            string sqlInner = this.SetSql_GrpScheduleDto(_dto);
+            string sql = string.Format(@" Select * From ( Select ROW_NUMBER() Over(order By Id desc) as RowNumber,* From ( {2} ) ) as tb Where tb.RowNumber Between {0} And {1} ", (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) * _dto.PageSize) + 1, (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) + 1) * _dto.PageSize, sqlInner);
 
-            _view = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).FirstAsync();
+            _viewList = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).ToListAsync();
 
-            return _view;
+            return _viewList;
         }
 
 
+
     }
 }

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

@@ -57,6 +57,8 @@ namespace OASystem.Infrastructure.Repositories.Login
                 return result;
             }
 
+            //portType 处理端口 
+            dynamic longinData = null;
 
             //员工数据
             string sqlWhere = string.Format(" Where su.Id={0}", _entity.Id);
@@ -65,11 +67,24 @@ namespace OASystem.Infrastructure.Repositories.Login
                                                   Inner Join Sys_Company sc On su.CompanyId = sc.Id
                                                   Inner Join Sys_Department sd On su.DepId = sd.Id
                                                   Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
-            var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
+           
+
+            if (loginDto.PortType == 1) //web
+            {
+                var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
+
+                longinData = _userBasicInfo;
+
+            }
+            else if (loginDto.PortType == 2) // Android
+            {
+                var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
+                longinData = _userBasicInfo;
+            }
 
             result.Code = 0;
             result.Msg = "登录成功!";
-            result.Data = _userBasicInfo;
+            result.Data = longinData;
             return result;
 
         }

+ 12 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/CarDataRepository.cs

@@ -0,0 +1,12 @@
+using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.ViewModels.Resource;
+namespace OASystem.Infrastructure.Repositories.Resource
+{
+    public class CarDataRepository: BaseRepository<Res_CarData, CarDataView>
+    {
+        public CarDataRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
+        {
+
+        }
+    }
+}

+ 129 - 21
OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs

@@ -3,6 +3,7 @@ using OASystem.Domain.Dtos.System;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Cryptography;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -85,40 +86,147 @@ namespace OASystem.Infrastructure.Repositories.System
         }
 
         /// <summary>
-        /// 获取消息 List
+        /// 获取消息列表
         /// </summary>
         /// <param name="uId">可读用户Id</param>
         /// <returns></returns>
-        public async Task<Result> GetMsgList(int uId)
+        public async Task<Result> GetMsgList(MsgDto dto)
         {
             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)
+            if (dto.PortType == 1 || dto.PortType == 2)  // web/android
             {
-                result.Code = 0;
-                result.Msg = "成功!";
-                result.Data = _readableMsgList;
+                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 ", dto.UserId);
+                var _readableMsgList = await _sqlSugar.SqlQueryable<ReadbleMessageView>(msgSqlWhere).ToListAsync();
+                if (_readableMsgList.Count > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _readableMsgList;
+                }
+                else
+                {
+                    result.Msg = "暂无该用户的消息!";
+                }
             }
-            else
+
+            return result;
+        }
+
+        /// <summary>
+        /// 获取消息详细
+        /// </summary>
+        /// <param name="dto">msgInfo请求dto</param>
+        /// <returns></returns>
+        public async Task<Result> GetMsgInfo(MsgInfoDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            if (dto.PortType == 1 || dto.PortType == 2)
             {
-                result.Msg = "暂无该用户的消息!";
+                string msgSqlWhere = string.Format(@"Select sm.Type,sc.CompanyName,sd.DepName,sjp.JobName,su.CnName,sm.ReleaseTime,
+	                                                        sm.Title,sm.Content,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_JobPost sjp On su.JobPostId = sjp.Id
+                                                     Inner Join Sys_Department sd On su.DepId = sd.Id
+                                                     Inner Join Sys_Company sc On su.CompanyId = sc.Id
+                                                     Where sm.IsDel = 0 
+                                                     And sm.Id = {0}
+                                                     And smra.IsDel = 0", dto.MsgId);
+                var _readableMsgInfo = await _sqlSugar.SqlQueryable<MessageInfoView>(msgSqlWhere).FirstAsync();
+                if (_readableMsgInfo != null)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _readableMsgInfo;
+                }
+                else
+                {
+                    result.Msg = "暂无该用户的消息!";
+                }
             }
 
             return result;
         }
-        
 
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> SetMsgRead(MsgSetReadDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            if (dto.PortType == 1 || dto.PortType == 2)
+            {
+
+                  var msgReadStatus = await _sqlSugar.Updateable<Sys_MessageReadAuth>()
+                                      .Where(a => a.Id == dto.MsgAnthId)
+                                      .SetColumns(a => new Sys_MessageReadAuth
+                                      {
+                                          IsRead = 1
+                                      }).ExecuteCommandAsync();
+
+                if (msgReadStatus > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                }
+                else
+                {
+                    result.Msg = "失败!";
+                }
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> DelMsg(MsgDeleteDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            if (dto.PortType == 1 || dto.PortType == 2)
+            {
+
+                var msgReadStatus = await _sqlSugar.Updateable<Sys_Message>()
+                                    .Where(a => a.Id == dto.MsgId)
+                                    .SetColumns(a => new Sys_Message
+                                    {
+                                        IsDel = 1,
+                                        DeleteUserId = dto.UserId,
+                                        DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                                    }).ExecuteCommandAsync();
+
+                if (msgReadStatus > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                }
+                else
+                {
+                    result.Msg = "操作失败!";
+                }
+            }
+
+            return result;
+        }
     }
 }

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

@@ -113,7 +113,7 @@ namespace OASystem.Infrastructure.Repositories.System
         {
             Result result = new Result() { Code = -2 };
 
-            if (portType == 1) //web
+            if (portType == 1 || portType == 2) //web
             {
                 string sql = string.Format(@"Select Id,CnName From  Sys_Users");
                 var _userList = await _sqlSugar.SqlQueryable<UserNameView>(sql).ToListAsync();